Giter Site home page Giter Site logo

itwanger / paicoding Goto Github PK

View Code? Open in Web Editor NEW
2.0K 26.0 383.0 15.69 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.59% Shell 0.10% PHP 0.30% SCSS 1.27% Groovy 0.04% PLpgSQL 5.09% JavaScript 13.62%
java mybatis springboot mysql redis spring

paicoding's People

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

paicoding's Issues

ReadMe中的一个文档错误

bug描述

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

复现

bug复现步骤:

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

列表添加排序按钮

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

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

请描述下期望实现的方式

其他信息

变更文章状态报错

bug描述

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

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

README链接有问题

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

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

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 吧?

【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>)

推荐

完全开源!教程完整!

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

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

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

【服务启动不起来】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

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

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

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

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

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

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

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

或者出自某典故

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

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

4、星球名字:

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

多数据源支持

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

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

请描述下期望实现的方式

其他信息

启动报错

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

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

bug描述

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

复现

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

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

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

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

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

image

参照以下:

只是星球:

image

牛客:
image

掘金:
image

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

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

牛客:
image

掘金:
image

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

牛客:

image

知乎:

image

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

image

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

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

image

如标题所示。

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

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

请描述下期望实现的方式

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

其他信息

GitHub 的

image

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

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进行修复)

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

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

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

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

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

请描述下期望实现的方式

可以参考掘金的

image

可以参考 GitHub 的

image

image

牛客

image

其他信息

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

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

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

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

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

请描述下期望实现的方式

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

其他信息

启动失败

报错内容如下:
vlet.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 org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [select * from DATABASECHANGELOG where ID='00000000000020' limit 1;]; nested exception is java.sql.SQLSyntaxErrorException: Table 'pai_coding.databasechangelog' doesn't exist
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: org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [select * from DATABASECHANGELOG where ID='00000000000020' limit 1;]; nested exception is java.sql.SQLSyntaxErrorException: Table 'pai_coding.databasechangelog' doesn't exist
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1541)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:393)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:465)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:475)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:525)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.needInit(ForumDataSourceInitializer.java:87)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer.dataSourceInitializer(ForumDataSourceInitializer.java:49)
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$18a299e5.CGLIB$dataSourceInitializer$0()
at com.github.paicoding.forum.web.config.init.ForumDataSourceInitializer$$EnhancerBySpringCGLIB$$18a299e5$$FastClassBySpringCGLIB$$791f1362.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$$18a299e5.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.SQLSyntaxErrorException: Table 'pai_coding.databasechangelog' doesn't exist
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1201)
at com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:110)
at com.zaxxer.hikari.pool.HikariProxyStatement.executeQuery(HikariProxyStatement.java)
at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:452)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:381)
... 40 common frames omitted

Process finished with exit code 0

Table 'pai_coding.databasechangelog' doesn't exist该如何解决?
Uploading Snipaste_2024-08-12_15-25-16.png…

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

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

对四个 SQL 文件进行描述。

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

image

请描述下期望实现的方式

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

其他信息

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

bug描述

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

复现

bug复现步骤:

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

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

image

点赞线程安全问题

bug描述

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

复现

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

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

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

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.