Coder Social home page Coder Social logo

itwanger / paicoding Goto Github PK

View Code? Open in Web Editor NEW
1.9K 27.0 361.0 15.55 MB

⭐️一款好用又强大的开源社区,基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等主流技术栈,附详细教程,包括Java、Spring、MySQL、Redis、微服务&分布式、消息队列等核心知识点。学编程,就上技术派😁。

Home Page: https://paicoding.com

License: Apache License 2.0

Java 79.04% Shell 0.10% PHP 0.30% SCSS 1.31% Groovy 0.04% PLpgSQL 5.22% JavaScript 13.98%
java mybatis springboot mysql redis spring

paicoding's Introduction

技术派

一个基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等技术栈实现的社区系统,采用主流的互联网技术架构、全新的UI设计、支持一键源码部署,拥有完整的文章&教程发布/搜索/评论/统计流程等,代码完全开源,没有任何二次封装,是一个非常适合二次开发/实战的现代化社区项目👍 。

一、配套服务

  1. 技术派网址https://paicoding.com
  2. 技术派教程https://paicoding.com/column 目前已更新高并发手册、JVM 手册、Java 并发编程手册、二哥的 Java 进阶之路,以及技术派部分免费教程。我们的宗旨是:学编程,就上技术派😁
  3. 技术派管理端源码paicoding-admin
  4. 技术派专属学习圈子不走弯路,少采坑,附 120 篇技术派全套教程
  5. 派聪明AI助手:AI 时代,怎能掉队,欢迎体验 技术派的派聪明 AI 助手
  6. 码云仓库https://gitee.com/itwanger/paicoding (国内访问速度更快)

二、项目介绍

项目演示

前台社区系统

后台社区系统

代码展示

架构图

系统架构图

业务架构图

组织结构

paicoding
├── paicoding-api -- 定义一些通用的枚举、实体类,定义 DO\DTO\VO 等
├── paicoding-core -- 核心工具/组件相关模块,如工具包 util, 通用的组件都放在这个模块(以包路径对模块功能进行拆分,如搜索、缓存、推荐等)
├── paicoding-service -- 服务模块,业务相关的主要逻辑,DB 的操作都在这里
├── paicoding-ui -- HTML 前端资源(包括 JavaScript、CSS、Thymeleaf 等)
├── paicoding-web -- Web模块、HTTP入口、项目启动入口,包括权限身份校验、全局异常处理等

环境配置说明

资源配置都放在 paicoding-web 模块的资源路径下,通过maven的env进行环境选择切换

当前提供了四种开发环境

  • resources-env/dev: 本地开发环境,也是默认环境
  • resources-env/test: 测试环境
  • resources-env/pre: 预发环境
  • resources-env/prod: 生产环境

环境切换命令

# 如切换生产环境
mvn clean install -DskipTests=true -Pprod

配置文件说明

  • resources
    • application.yml: 主配置文件入口
    • application-config.yml: 全局的站点信息配置文件
    • logback-spring.xml: 日志打印相关配置文件
    • liquibase: 由liquibase进行数据库表结构管理
  • resources-env
    • xxx/application-dal.yml: 定义数据库相关的配置信息
    • xxx/application-image.yml: 定义上传图片的相关配置信息
    • xxx/application-web.yml: 定义web相关的配置信息

技术选型

后端技术栈

技术 说明 官网
Spring & SpringMVC Java全栈应用程序框架和WEB容器实现 https://spring.io/
SpringBoot Spring应用简化集成开发框架 https://spring.io/projects/spring-boot
mybatis 数据库orm框架 https://mybatis.org
mybatis-plus 数据库orm框架 https://baomidou.com/
mybatis PageHelper 数据库翻页插件 https://github.com/pagehelper/Mybatis-PageHelper
elasticsearch 近实时文本搜索 https://www.elastic.co/cn/elasticsearch/service
redis 内存数据存储 https://redis.io
rabbitmq 消息队列 https://www.rabbitmq.com
mongodb NoSql数据库 https://www.mongodb.com/
nginx 服务器 https://nginx.org
docker 应用容器引擎 https://www.docker.com
hikariCP 数据库连接 https://github.com/brettwooldridge/HikariCP
oss 对象存储 https://help.aliyun.com/document_detail/31883.html
https 证书 https://letsencrypt.org/
jwt jwt登录 https://jwt.io
lombok Java语言增强库 https://projectlombok.org
guava google开源的java工具集 https://github.com/google/guava
thymeleaf html5模板引擎 https://www.thymeleaf.org
swagger API文档生成工具 https://swagger.io
hibernate-validator 验证框架 hibernate.org/validator/
quick-media 多媒体处理 https://github.com/liuyueyi/quick-media
liquibase 数据库版本管理 https://www.liquibase.com
jackson json/xml处理 https://www.jackson.com
ip2region ip地址 https://github.com/zoujingli/ip2region
websocket 长连接 https://docs.spring.io/spring/reference/web/websocket.html
sensitive-word 敏感词 https://github.com/houbb/sensitive-word
chatgpt chatgpt https://openai.com/blog/chatgpt
讯飞星火 讯飞星火大模型 https://www.xfyun.cn/doc/spark/Web.html

三、技术派教程

技术派教程共 120+ 篇,从中整理出 20 篇,供大家免费学习。

四、环境搭建

开发工具

工具 说明 官网
IDEA java开发工具 https://www.jetbrains.com
Webstorm web开发工具 https://www.jetbrains.com/webstorm
Chrome 浏览器 https://www.google.com/intl/zh-CN/chrome
ScreenToGif gif录屏 https://www.screentogif.com
SniPaste 截图 https://www.snipaste.com
PicPick 图片处理工具 https://picpick.app
MarkText markdown编辑器 https://github.com/marktext/marktext
curl http终端请求 https://curl.se
Postman API接口调试 https://www.postman.com
draw.io 流程图、架构图绘制 https://www.diagrams.net/
Axure 原型图设计工具 https://www.axure.com
navicat 数据库连接工具 https://www.navicat.com
DBeaver 免费开源的数据库连接工具 https://dbeaver.io
iTerm2 mac终端 https://iterm2.com
windows terminal win终端 https://learn.microsoft.com/en-us/windows/terminal/install
SwitchHosts host管理 https://github.com/oldj/SwitchHosts/releases

开发环境

工具 版本 下载
jdk 1.8+ https://www.oracle.com/java/technologies/downloads/#java8
maven 3.4+ https://maven.apache.org/
mysql 5.7+/8.0+ https://www.mysql.com/downloads/
redis 5.0+ https://redis.io/download/
elasticsearch 8.0.0+ https://www.elastic.co/cn/downloads/elasticsearch
nginx 1.10+ https://nginx.org/en/download.html
rabbitmq 3.10.14+ https://www.rabbitmq.com/news.html
ali-oss 3.15.1 https://help.aliyun.com/document_detail/31946.html
git 2.34.1 http://github.com/
docker 4.10.0+ https://docs.docker.com/desktop/
let's encrypt https证书 https://letsencrypt.org/

搭建步骤

本地部署教程

本地开发环境手把手教程

云服务器部署教程

环境搭建 & 基于源码的部署教程 服务器启动教程

五、友情链接

  • toBeBetterjavaer :一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java,就认准二哥的Java进阶之路😄
  • paicoding-admin :🚀🚀🚀 paicoding-admin,技术派管理端,基于 React18、React-Router v6、React-Hooks、Redux、TypeScript、Vite3、Ant-Design 5.x、Hook Admin、ECharts 的一套社区管理系统,够惊艳哦。

六、鸣谢

技术派收到了 Jetbrains 多份 Licenses(详情戳 这里 ),并已分配给项目 活跃开发者 ,非常感谢 Jetbrains 对开源社区的支持。

JetBrains Logo (Main) logo

七、star 趋势图

Star History Chart

八、公众号

GitHub 上标星 10000+ 的开源知识库《 二哥的 Java 进阶之路 》第一版 PDF 终于来了!包括Java基础语法、数组&字符串、OOP、集合框架、Java IO、异常处理、Java 新特性、网络编程、NIO、并发编程、JVM等等,共计 32 万余字,可以说是通俗易懂、风趣幽默……详情戳:太赞了,GitHub 上标星 8700+ 的 Java 教程

微信搜 沉默王二 或扫描下方二维码关注二哥的原创公众号,回复 222 即可免费领取。

九、许可证

Apache License 2.0

Copyright (c) 2022-2023 技术派(楼仔、沉默王二、一灰、小超)

paicoding's People

Contributors

githubhxd1995 avatar itwanger avatar liuyueyi avatar lml200701158 avatar panstart avatar qing-wq avatar riverify avatar wangdengwu avatar wyqbird avatar ygl01 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

paicoding's Issues

变更文章状态报错

bug描述

非管理员用户新增文章后,后台管理员审核文章,改变文章的状态提交时报错,报错的原因:
后台封装dao的时候,request中获取文章类型为null,导致空指针异常

请问是我操作的问题,还是本身就有这个问题。

推荐

完全开源!教程完整!

仿掘金之【南生论坛】基于SpringBoot+Vue框架实现前后端分离(大厂微服务架构设计;代码简洁、高效无冗余;注释详细易阅读),自适应手机端和电脑端,界面简洁美观,功能完善,性能高效。
源码地址:https://github.com/maliangnansheng/bbs-springboot
官方地址:http://bbs.nanshengbbs.top/

【后端】安装部署教程
【前端】安装部署教程

南生论坛使用指南
南生论坛代码讲解
如何获取南生论坛设计文档?
南生论坛日常迭代

com.github.paicoding.forum.service.statistics.listener.UserStatisticEventListener 疑问

@Async @EventListener(ArticleMsgEvent.class) public void publishArticleListener(ArticleMsgEvent<ArticleDO> event) { ArticleEventEnum type = event.getType(); if (type == ArticleEventEnum.ONLINE || type == ArticleEventEnum.OFFLINE || type == ArticleEventEnum.DELETE) { Long userId = event.getContent().getUserId(); int count = articleDao.countArticleByUser(userId); RedisClient.hSet(CountConstants.USER_STATISTIC_INFO + userId, CountConstants.READ_COUNT, count); } }
这边统计的应该是用户发表的文章数量吧。那 field 中的键应该是 CountConstants.ARTICLE_COUNT 吧?

列表添加排序按钮

请说明一下新增支持的新功能
在首页的页面上点击分类之后希望下面的列表还能跟随一个排序的按钮,比如最近更新、最热、最多浏览量等等

请描述下希望实现的功能特点

请描述下期望实现的方式

其他信息

README链接有问题

README开发工具中的MarkText的超链接错了,少了一个字母t,可以更正一下
image
image
Chrome的链接也失效了
image
Axure的链接也有问题
image

Public Key Retrieval is not allowed

初次运行报错,使用单Mysql:,网上说添加&allowPublicKeyRetrieval=true还是不行。

配置文件

spring:
  datasource: #单数据源
    url: jdbc:mysql://116.198.246.189:3306/${database.name}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
    username: root
    password: *******
#  dynamic: # 动态数据源
#    #    primary: master # 这个表示默认的数据源
#    datasource:
#      master:
#        # 数据库名,从配置 database.name 中获取
#        url: jdbc:mysql://localhost:3306/${database.name}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#        username: root
#        password:
#        #        type: com.alibaba.druid.pool.DruidDataSource
#        #DruidDataSource自有属性
#        filters: stat
#        initialSize: 0
#        minIdle: 1
#        maxActive: 200
#        maxWait: 10000
#        time-between-eviction-runs-millis: 60000
#        min-evictable-idle-time-millis: 200000
#        testWhileIdle: true
#        testOnBorrow: true
#        validationQuery: select 1
#      slave:
#        # 数据库名,从配置 database.name 中获取
#        url: jdbc:mysql://localhost:3306/${database.name}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#        username: root
#        password:
  redis:
    host: localhost
    port: 6379
    password:
18:05:16.295 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@4ae8a4b

  _____               _____      _____    ____    _____    _____   _   _    _____
 |  __ \      /\     |_   _|    / ____|  / __ \  |  __ \  |_   _| | \ | |  / ____|
 | |__) |    /  \      | |     | |      | |  | | | |  | |   | |   |  \| | | |  __
 |  ___/    / /\ \     | |     | |      | |  | | | |  | |   | |   | . ` | | | |_ |
 | |       / ____ \   _| |_    | |____  | |__| | | |__| |  _| |_  | |\  | | |__| |
 |_|      /_/    \_\ |_____|    \_____|  \____/  |_____/  |_____| |_| \_|  \_____|

:: 技术派 https://paicoding.com  :: 欢迎关注公众号: (楼仔 | 沉默王二) :: SpringBoot 2.7.1


2024-07-19 18:05:16,827 [restartedMain] INFO |||c.g.p.f.web.QuickForumApplication.logStarting(StartupInfoLogger.java:55) - Starting QuickForumApplication using Java 17.0.4.1 on LAPTOP-APHRLB1U with PID 81224 (F:\WorkSpace\JavaWeb\paicoding\paicoding-web\target\classes started by 86136 in F:\WorkSpace\JavaWeb\paicoding)
2024-07-19 18:05:16,828 [restartedMain] INFO |||c.g.p.f.web.QuickForumApplication.logStartupProfileInfo(SpringApplication.java:634) - No active profile set, falling back to 1 default profile: "default"
2024-07-19 18:05:16,879 [restartedMain] INFO |||o.s.b.d.restart.ChangeableUrls.logTo(DeferredLog.java:255) - The Class-Path manifest attribute in D:\maven\maven_repo_381\com\github\plexpt\chatgpt\4.4.0\chatgpt-4.4.0.jar referenced one or more files that do not exist: file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/lombok-1.18.30.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/slf4j-api-2.0.7.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/logback-core-1.3.7.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/logback-classic-1.3.7.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-webmvc-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-aop-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-beans-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-context-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-core-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-jcl-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-expression-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/spring-web-5.3.27.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/jackson-databind-2.15.2.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/jackson-annotations-2.15.2.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/jackson-core-2.15.2.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/hutool-all-5.8.26.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/fastjson-2.0.47.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/fastjson2-extension-2.0.47.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/fastjson2-2.0.47.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/okhttp-sse-3.14.9.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/okhttp-3.14.9.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/okio-1.17.2.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/logging-interceptor-3.14.9.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/retrofit-2.9.0.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/converter-jackson-2.9.0.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/adapter-rxjava2-2.9.0.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/rxjava-2.0.0.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/reactive-streams-1.0.3.jar,file:/D:/maven/maven_repo_381/com/github/plexpt/chatgpt/4.4.0/lib/jtokkit-0.4.0.jar
2024-07-19 18:05:16,879 [restartedMain] INFO |||o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor.logTo(DeferredLog.java:255) - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2024-07-19 18:05:16,880 [restartedMain] INFO |||o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor.logTo(DeferredLog.java:255) - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2024-07-19 18:05:18,198 [restartedMain] INFO |||o.s.d.r.c.RepositoryConfigurationDelegate.multipleStoresDetected(RepositoryConfigurationDelegate.java:262) - Multiple Spring Data modules found, entering strict repository configuration mode
2024-07-19 18:05:18,201 [restartedMain] INFO |||o.s.d.r.c.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:132) - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2024-07-19 18:05:18,245 [restartedMain] INFO |||o.s.d.r.c.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:201) - Finished Spring Data repository scanning in 32 ms. Found 0 Redis repository interfaces.
2024-07-19 18:05:18,416 [restartedMain] WARN |||o.m.s.mapper.ClassPathMapperScanner.warn(Logger.java:44) - No MyBatis mapper was found in '[com.github.paicoding.forum.web]' package. Please check your configuration.
2024-07-19 18:05:19,692 [restartedMain] INFO |||c.g.p.f.c.senstive.SensitiveService.refresh(SensitiveService.java:58) - 敏感词初始化完成!
 _ _   |_  _ _|_. ___ _ |    _ 
| | |\/|_)(_| | |_\  |_)||_|_\ 
     /               |         
                        3.4.3.4 
2024-07-19 18:05:20,931 [restartedMain] INFO |||o.s.b.w.e.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:108) - Tomcat initialized with port(s): 8080 (http)
2024-07-19 18:05:20,943 [restartedMain] INFO |||o.a.coyote.http11.Http11NioProtocol.log(DirectJDKLog.java:173) - Initializing ProtocolHandler ["http-nio-8080"]
2024-07-19 18:05:20,943 [restartedMain] INFO |||o.a.catalina.core.StandardService.log(DirectJDKLog.java:173) - Starting service [Tomcat]
2024-07-19 18:05:20,944 [restartedMain] INFO |||o.a.catalina.core.StandardEngine.log(DirectJDKLog.java:173) - Starting Servlet engine: [Apache Tomcat/9.0.64]
2024-07-19 18:05:21,110 [restartedMain] INFO |||o.a.c.c.C.[Tomcat].[localhost].[/].log(DirectJDKLog.java:173) - Initializing Spring embedded WebApplicationContext
2024-07-19 18:05:21,111 [restartedMain] INFO |||o.s.b.w.s.c.ServletWebServerApplicationContext.prepareWebApplicationContext(ServletWebServerApplicationContext.java:292) - Root WebApplicationContext: initialization completed in 4231 ms
2024-07-19 18:05:21,563 [restartedMain] INFO |||c.g.p.forum.web.config.PaiWebConfig.init(PaiWebConfig.java:39) - PaiWebConfig init...
2024-07-19 18:05:21,569 [restartedMain] INFO |||c.g.p.forum.web.config.PaiWebConfig.init(PaiWebConfig.java:70) - WebConfig init 设置jackson序列化long为字符串成功!!!
2024-07-19 18:05:21,761 [restartedMain] INFO |||c.g.p.f.s.c.s.i.c.ChatGptIntegration.init(ChatGptIntegration.java:82) - ChatGpt配置初始化完成: ChatGptIntegration.ChatGptConfig(main=CHAT_GPT_3_5, conf={CHAT_GPT_3_5=ChatGptIntegration.GptConf(keys=[], proxy=true, apiHost=https://api.openai.com/, timeOut=900, maxToken=3000), CHAT_GPT_4=ChatGptIntegration.GptConf(keys=[], proxy=true, apiHost=https://api.openai.com/, timeOut=900, maxToken=200000)})
2024-07-19 18:05:22,611 [restartedMain] WARN |||o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext.refresh(AbstractApplicationContext.java:591) - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceInitializer' defined in class path resource [com/github/paicoding/forum/web/config/init/ForumDataSourceInitializer.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.jdbc.datasource.init.DataSourceInitializer]: Factory method 'dataSourceInitializer' threw exception; nested exception is java.lang.RuntimeException: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
2024-07-19 18:05:22,619 [restartedMain] INFO |||o.a.catalina.core.StandardService.log(DirectJDKLog.java:173) - Stopping service [Tomcat]
2024-07-19 18:05:22,628 [restartedMain] INFO |||o.s.b.a.l.ConditionEvaluationReportLoggingListener.logMessage(ConditionEvaluationReportLoggingListener.java:136) - 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2024-07-19 18:05:22,655 [restartedMain] ERROR|||o.s.boot.SpringApplication.reportFailure(SpringApplication.java:824) - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceInitializer' defined in class path resource [com/github/paicoding/forum/web/config/init/ForumDataSourceInitializer.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.jdbc.datasource.init.DataSourceInitializer]: Factory method 'dataSourceInitializer' threw exception; nested exception is java.lang.RuntimeException: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
	at com.github.paicoding.forum.web.QuickForumApplication.main(QuickForumApplication.java:60)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.jdbc.datasource.init.DataSourceInitializer]: Factory method 'dataSourceInitializer' threw exception; nested exception is java.lang.RuntimeException: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
	... 24 common frames omitted
Caused by: java.lang.RuntimeException: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
	at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.autoInitDatabase(ForumDataSourceInitializer.java:136)
	at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.needInit(ForumDataSourceInitializer.java:75)
	at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.dataSourceInitializer(ForumDataSourceInitializer.java:49)
	at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$1ae6b812.CGLIB$dataSourceInitializer$0(<generated>)
	at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$1ae6b812$$FastClassBySpringCGLIB$$f91cea72.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
	at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$1ae6b812.dataSourceInitializer(<generated>)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 25 common frames omitted
Caused by: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
	at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.autoInitDatabase(ForumDataSourceInitializer.java:115)
	... 37 common frames omitted
Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)
	at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:130)
	at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:49)
	at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:447)
	at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:212)
	at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1433)
	at com.mysql.cj.NativeSession.connect(NativeSession.java:133)
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)
	... 43 common frames omitted

进程已结束,退出代码0

点赞线程安全问题

bug描述

连续多次的点击点赞按钮会出现点赞数跳动的bug

复现

bug复现步骤:
连续多次的点击点赞按钮

bug产生原因(若您已发现具体的bug产生原因,请直接贴上,也可以提merge进行修复)

可能是点赞代码块没有做线程安全的控制,可能使用 synconized(userId) { vote code }会解决此问题

导航栏的用户图表右侧希望追加一个向下的三角🔽,这样用户会知道该如何去点击,或者鼠标放上去就给他展示下拉菜单

请说明一下新增支持的新功能

目前只有头像的话,缺少引导用户去点击的方式

请描述下希望实现的功能特点

1、用户头像右侧追加下拉箭头(或其他)
2、菜单的宽度过长,有点偏左侧了,需要调整,另外就是有一个向上的箭头和用户头像链接在一起

请描述下期望实现的方式

可以参考掘金的

image

可以参考 GitHub 的

image

image

牛客

image

其他信息

点赞列表 article-heart 容器宽度溢出

bug描述

点赞列表 article-heart 容器宽度溢出,造成移动端页面出现横向滚动条

复现

移动端访问 https://paicoding.com/article/detail/197 页面即可复现

bug产生原因(若您已发现具体的bug产生原因,请直接贴上,也可以提merge进行修复)

限制 div class="article-heart bg-color-white" max-width 并水平居中,或改变呈现形式。

【java不兼容的类型】SitemapServiceImpl中的方法: RedisClient.hMSet报错:参数不匹配; R无法转换为java.util.Map<java.lang.String,java.lang.Long>

讨论主题
【java不兼容的类型】SitemapServiceImpl中的方法: RedisClient.hMSet报错。

方法:

    public static <T> void hMSet(String key, Map<String, T> fields) {
        Map<byte[], byte[]> val = Maps.newHashMapWithExpectedSize(fields.size());
        for (Map.Entry<String, T> entry : fields.entrySet()) {
            val.put(valBytes(entry.getKey()), valBytes(entry.getValue()));
        }
        template.execute((RedisCallback<Object>) connection -> {
            connection.hMSet(keyBytes(key), val);
            return null;
        });
    }

报错信息:

E:\Project\java_project\paicoding\paicoding-service\src\main\java\com\github\paicoding\forum\service\sitemap\service\SitemapServiceImpl.java:81:30
java: 不兼容的类型: 无法推断类型变量 T,R,A,capture#1, 共 ?,T,K,U
    (参数不匹配; R无法转换为java.util.Map<java.lang.String,java.lang.Long>)

用户登录完成后,建议在消息提示的小图标上加上一个公告消息,比如说跳转到网站的介绍,星球的推广等

请说明一下新增支持的新功能

image

如标题所示。

请描述下希望实现的功能特点

这样用户登录后,会非常好奇,社区给它推了哪些信息,非常迫不及待的点开,尤其是有小红点的情况下,这时候就顺带推一下我们的社区介绍(包括 GitHub star、星球购买等等推广信息,或者给他提供一套完整的 PDF 可供下载,引流到楼仔的公众号)

请描述下期望实现的方式

点击带红点点的消息提醒,跳转到对应的宣传页面。

其他信息

GitHub 的

image

image

「优化」关于首页搜索的修改建议

1、搜索框的颜色要暗一些,右侧有一个搜索的小图标

image

参照以下:

只是星球:

image

牛客:
image

掘金:
image

2、搜索框里的文字要能配置,方便后期调整(找文章/找标签/找技术大神)

3、点击搜索,最好有历史搜索记录,参照以下:

牛客:
image

掘金:
image

4、输入文字后,可以有相关的搜索推荐,参照以下:

牛客:

image

知乎:

image

5、输入文字后,右侧的搜索按钮可以点击

image

ReadMe中的一个文档错误

bug描述

技术栈中alioss的文档链接错误,链接成let's encrypt

复现

bug复现步骤:

bug产生原因(若您已发现具体的bug产生原因,请直接贴上,也可以提merge进行修复)

「优化」可以在 admin 端增加一个一键清空的功能,或者叫初始化的功能,就是没有我们这些测试数据!

请说明一下新增支持的新功能

schema.sql 默认的数据里面需要提供一些文章数据,让数据把基本的功能撑起来

请描述下希望实现的功能特点

这样用户在首次部署后,不会觉得页面太空,如果他想要一个空白的,可以进入 admin 管理后台有一个一键恢复到出厂设置类似的功能!

请描述下期望实现的方式

1、在 schema.sql 中追加基础数据
2、在 admin 中增加一键初始化的功能

其他信息

Groovy版本过旧和Java21不兼容

Groovyc: While compiling [tests of paicoding-web]: BUG! exception in phase 'semantic analysis' in source unit 'K:\javas\paicoding\paicoding-web\src\test\groovy\com\github\paicoding\forum\web\front\test\rest\TestControllerTest.groovy' Unsupported class file major version 65
at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:905)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:627)
at org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper.compile(GroovyCompilerWrapper.java:48)
at org.jetbrains.groovy.compiler.rt.DependentGroovycRunner.runGroovyc(DependentGroovycRunner.java:116)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.jetbrains.groovy.compiler.rt.GroovycRunner.intMain2(GroovycRunner.java:80)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovycInThisProcess(InProcessGroovyc.java:169)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.lambda$runGroovyc$0(InProcessGroovyc.java:77)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65
at groovyjarjarasm.asm.ClassReader.(ClassReader.java:199)
at groovyjarjarasm.asm.ClassReader.(ClassReader.java:180)
at groovyjarjarasm.asm.ClassReader.(ClassReader.java:166)
at groovyjarjarasm.asm.ClassReader.(ClassReader.java:287)
at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81)
at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251)
at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189)
at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169)
at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125)
at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:869)
at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:506)
at org.codehaus.groovy.control.ResolveVisitor.resolveFromDefaultImports(ResolveVisitor.java:661)
at org.codehaus.groovy.control.ResolveVisitor.resolveFromDefaultImports(ResolveVisitor.java:625)
at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:505)
at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:468)
at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:338)
at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:330)
at org.codehaus.groovy.control.ResolveVisitor.visitAnnotations(ResolveVisitor.java:1337)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:49)
at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1483)
at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:262)
at org.codehaus.groovy.control.CompilationUnit.lambda$new$16(CompilationUnit.java:738)
at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901)
... 14 more

【服务启动不起来】redis和MySQL都安装了,但是报错,启动不起来

讨论主题
redis和MySQL都安装了,但是报错,启动不起来:

E:\Project\java_project\paicoding\paicoding-service\src\main\java\com\github\paicoding\forum\service\article\conveter\ArticleConverter.java:33:17
java: The method setUserId(java.lang.Long) is undefined for the type com.github.paicoding.forum.service.article.repository.entity.ArticleDO
E:\Project\java_project\paicoding\paicoding-service\src\main\java\com\github\paicoding\forum\service\article\conveter\ArticleConverter.java:35:17
java: The method setTitle(java.lang.String) is undefined for the type com.github.paicoding.forum.service.article.repository.entity.ArticleDO

没有像教程说的,会自动建库和建表:
image
redis和mysql都有启动:
image

rabbitmq消费者初始化没有声明exchange

bug描述

在com.github.paicoding.forum.service.notify.service.impl.RabbitmqServiceImpl类的consumerMsg方法中没有声明exchange的代码

在初始化的时候如果本地的rabbitmq中没有自己创建"direct.exchange"会出现找不到exchange错误。

复现
image

image

报错描述
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'direct.exchange' in vhost '/', class-id=50, method-id=20)

bug复现步骤:

bug产生原因(若您已发现具体的bug产生原因,请直接贴上,也可以提merge进行修复)

启动报错

Connected to the target VM, address: '127.0.0.1:1210', transport: 'socket'
08:55:46.754 [main] DEBUG reactor.util.Loggers - Using Slf4j logging framework
08:55:46.759 [main] DEBUG reactor.core.publisher.Hooks - Enabling stacktrace debugging via onOperatorDebug
08:55:47.545 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@77ecfa48


| __ \ /\ |_ | / | / __ \ | __ \ | | | \ | | / |
| |__) | / \ | | | | | | | | | | | | | | | | | | | __
| / / /\ \ | | | | | | | | | | | | | | | . ` | | | | |
| | / ____ \ | | | |
| || | | || | | | | |\ | | |__| |
|
| /
/ _\ |_____| _
| _
/ |/ |__| || _| ____|

:: 技术派 https://paicoding.com :: 欢迎关注公众号: (楼仔 | 沉默王二) :: SpringBoot 2.7.1

2023-12-21 08:55:48,618 [restartedMain] INFO |||c.g.p.f.web.QuickForumApplication.logStarting(StartupInfoLogger.java:55) - Starting QuickForumApplication using Java 17.0.9 on Fan-ThinkBook with PID 29592
2023-12-21 08:55:48,620 [restartedMain] INFO |||c.g.p.f.web.QuickForumApplication.logStartupProfileInfo(SpringApplication.java:634) - No active profile set, falling back to 1 default profile: "default"

2023-12-21 08:55:48,700 [restartedMain] INFO |||o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor.logTo(DeferredLog.java:255) - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2023-12-21 08:55:48,700 [restartedMain] INFO |||o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor.logTo(DeferredLog.java:255) - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2023-12-21 08:55:50,862 [restartedMain] INFO |||o.s.d.r.c.RepositoryConfigurationDelegate.multipleStoresDetected(RepositoryConfigurationDelegate.java:262) - Multiple Spring Data modules found, entering strict repository configuration mode
2023-12-21 08:55:50,868 [restartedMain] INFO |||o.s.d.r.c.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:132) - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2023-12-21 08:55:50,953 [restartedMain] INFO |||o.s.d.r.c.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:201) - Finished Spring Data repository scanning in 64 ms. Found 0 Redis repository interfaces.
2023-12-21 08:55:51,286 [restartedMain] WARN |||o.m.s.mapper.ClassPathMapperScanner.warn(Logger.java:44) - No MyBatis mapper was found in '[com.github.paicoding.forum.web]' package. Please check your configuration.
2023-12-21 08:55:53,184 [restartedMain] INFO |||c.g.p.f.c.senstive.SensitiveService.refresh(SensitiveService.java:50) - 敏感词初始化完成!
_ _ |_ _ |. ___ _ | _
| | |/|)(| | |\ |)|||\
/ |
3.4.3.4
2023-12-21 08:55:55,765 [restartedMain] INFO |||o.s.b.w.e.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:108) - Tomcat initialized with port(s): 8080 (http)
2023-12-21 08:55:55,780 [restartedMain] INFO |||o.a.coyote.http11.Http11NioProtocol.log(DirectJDKLog.java:173) - Initializing ProtocolHandler ["http-nio-8080"]
2023-12-21 08:55:55,781 [restartedMain] INFO |||o.a.catalina.core.StandardService.log(DirectJDKLog.java:173) - Starting service [Tomcat]
2023-12-21 08:55:55,782 [restartedMain] INFO |||o.a.catalina.core.StandardEngine.log(DirectJDKLog.java:173) - Starting Servlet engine: [Apache Tomcat/9.0.64]
2023-12-21 08:55:56,049 [restartedMain] INFO |||o.a.c.c.C.[Tomcat].[localhost].[/].log(DirectJDKLog.java:173) - Initializing Spring embedded WebApplicationContext
2023-12-21 08:55:56,049 [restartedMain] INFO |||o.s.b.w.s.c.ServletWebServerApplicationContext.prepareWebApplicationContext(ServletWebServerApplicationContext.java:292) - Root WebApplicationContext: initialization completed in 7348 ms
2023-12-21 08:55:56,748 [restartedMain] INFO |||c.g.p.forum.web.config.PaiWebConfig.init(PaiWebConfig.java:39) - PaiWebConfig init...
2023-12-21 08:55:56,758 [restartedMain] INFO |||c.g.p.forum.web.config.PaiWebConfig.init(PaiWebConfig.java:70) - WebConfig init 设置jackson序列化long为字符串成功!!!
2023-12-21 08:55:57,191 [restartedMain] INFO |||c.g.p.f.s.c.s.i.c.ChatGptIntegration.init(ChatGptIntegration.java:82) - ChatGpt配置初始化完成: ChatGptIntegration.ChatGptConfig(main=CHAT_GPT_3_5, conf={CHAT_GPT_3_5=ChatGptIntegration.GptConf(keys=[], proxy=true, apiHost=https://api.openai.com/, timeOut=900, maxToken=3000), CHAT_GPT_4=ChatGptIntegration.GptConf(keys=[], proxy=true, apiHost=https://api.openai.com/, timeOut=900, maxToken=200000)})
2023-12-21 08:55:58,632 [restartedMain] WARN |||o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext.refresh(AbstractApplicationContext.java:591) - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceInitializer' defined in class path resource [com/github/paicoding/forum/web/config/init/ForumDataSourceInitializer.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.jdbc.datasource.init.DataSourceInitializer]: Factory method 'dataSourceInitializer' threw exception; nested exception is java.lang.RuntimeException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
2023-12-21 08:55:58,646 [restartedMain] INFO |||o.a.catalina.core.StandardService.log(DirectJDKLog.java:173) - Stopping service [Tomcat]
2023-12-21 08:55:58,664 [restartedMain] INFO |||o.s.b.a.l.ConditionEvaluationReportLoggingListener.logMessage(ConditionEvaluationReportLoggingListener.java:136) -

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-12-21 08:55:58,748 [restartedMain] ERROR|||o.s.boot.SpringApplication.reportFailure(SpringApplication.java:824) - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceInitializer' defined in class path resource [com/github/paicoding/forum/web/config/init/ForumDataSourceInitializer.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.jdbc.datasource.init.DataSourceInitializer]: Factory method 'dataSourceInitializer' threw exception; nested exception is java.lang.RuntimeException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
at com.github.paicoding.forum.web.QuickForumApplication.main(QuickForumApplication.java:60)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.jdbc.datasource.init.DataSourceInitializer]: Factory method 'dataSourceInitializer' threw exception; nested exception is java.lang.RuntimeException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
... 24 common frames omitted
Caused by: java.lang.RuntimeException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.autoInitDatabase(ForumDataSourceInitializer.java:115)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.needInit(ForumDataSourceInitializer.java:77)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.dataSourceInitializer(ForumDataSourceInitializer.java:51)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$3439a055.CGLIB$dataSourceInitializer$0()
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$3439a055$$FastClassBySpringCGLIB$$273e3f50.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$3439a055.dataSourceInitializer()
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 25 common frames omitted
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)
at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:448)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.autoInitDatabase(ForumDataSourceInitializer.java:95)
... 37 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:1210', transport: 'socket'

Process finished with exit code 0

非默认数据库时,初始化异常

bug描述

初始化的sql脚本中写了库名,导致库不一致时,执行sql异常

复现

bug复现步骤:

  1. 默认数据库从 pai_coding 修改为 pai_coding_2

bug产生原因(若您已发现具体的bug产生原因,请直接贴上,也可以提merge进行修复)

image

「讨论」关于社区名字,关于仓库名,关于仓库所有者

1、社区名字可以通过动物或者植物来命名

植物:蘑菇社区、向日葵社区、豌豆社区、坚果社区、土豆社区、

动物:毛毛虫社区、熊猫社区、斑马社区、企鹅社区、章鱼社区、蜗牛社区

或者和程序员相关、编程相关

程序员:四剑客、顶级程序员

编程:编程导航、编程屎山、

或者出自某典故

2、仓库名一定要好拼好写

3、仓库所有者的 GitHub 主页一定要绚丽

4、星球名字:

程序员进阶之路、楼仔的学习圈子、楼仔的编程星球、

「优化」需要对仓库提供的四个 SQL 文件进行说明,否则用户不知道干嘛

请说明一下新增支持的新功能

对四个 SQL 文件进行描述。

请描述下希望实现的功能特点

image

请描述下期望实现的方式

  • schema-all.sql定义所有的表结构
  • init-data.sql是初始化数据
  • 服务器首次启动时用这两和创建库表与初始数据
  • schema.sql是开发过程中的增量修改的数据库表定义
  • test-data.sql也是开发过程的测试数据

其他信息

多数据源支持

请说明一下新增支持的新功能

请描述下希望实现的功能特点

请描述下期望实现的方式

其他信息

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.