- 博客(62)
- 收藏
- 关注
原创 解决消费RocketMQ的消息时部分字段为null的问题
苦思冥想后发现,由一个单词组成的字段,例如“id”,“name”,“price”可以正常传递,而两个单词以上组成的字段例如“category id”和“brand id”传递有问题,因为在MySQL中字段是以蛇底风格命名的,而在Java程序中都是驼峰的格式,因此映射不上导致为null。在MySQL更新数据时,Canal收到binlog并把更新内容发往RocketMQ,然后在服务端进行消费,但是消费的时候发现有部分字段为null,进而导致一些远程调用失败。
2022-12-20 21:30:19
1102
原创 【源码分析】Spring中的设计模式——Context与Factory的关系
两个类都实现了同一个接口,但是其中一个类对接口的实现是通过调用另一个类的接口实现来实现的,这就是静态代理模式(也可以说是装饰器模式,这俩区别不大)这个例子中就是AbstractBeanFactory和AnnotationConfigApplicationContext都实现了BeanFactory,但是AnnotationConfigApplicationContext对BeanFactory的getBean方法是通过调用AbstractBeanFactory对BeanFactory的getBea
2022-10-31 19:56:49
757
原创 【源码分析】Spring的循环依赖(setter注入、构造器注入、多例、AOP)
- Spring是所有对象都是通过getBean去获取的,即从三级缓存里面找,如果有就直接从缓存池中获取并返回,没有就执行创建- 对象创建的顺序决定了Spring能解决setter注入的循环依赖,而不能解决构造器注入的循环依赖。- 当发生了Spring无法解决的循环依赖时,会通过一些标记检测出来,并抛异常结束程序。- 三级缓存中存放的是ObjectFactory而不是Object- 无论有没有发生循环依赖,都会将实例化完的对象放入三级缓存池中,因为放入三级缓存池时并不知道会不会发生循环依赖。
2022-10-30 23:19:11
2187
1
原创 SpringCache整合EhCache2和EhCache3(JCache)
在项目中想使用EhCache作为本地内存,而EhCache又存在这两个大版本,一个是2一个是3。两者的区别很大,很容易在整合时踩到网上大多数(几乎全部)整合都是基于EhCache2版本的,并且是通过xml的方式进行配置,如果在项目中用maven导入的EhCache3的话,整合方式会相差很多!本文主要介绍如何去整合EhCache3和SpringCache。
2022-10-16 21:26:57
2468
2
原创 Mysql主从不一致导致Unknown column ‘xxx‘ in ‘field list‘
项目使用的Mysql主从,并且做了读写分离,而在设置同步binlog文件的时候输入错了文件名,导致主库的更新内容没有同步到从库上,又因为期间修改了表结构,所以当接口去向从库发起请求的时候会因为从库的表结构与实例无法对应起来而导致请求失败(Unknown column ‘xxx’ in ‘field list’)。可以分析到,实例与数据库表字段映射是没有问题的,而其中请求的sql语句都是一样的,那么可能出问题的就是在两个方法他们的数据库环境不同而导致的错误。设置好主从关系并且再手动同步一下主从库即可。
2022-10-16 19:30:30
1670
原创 Java时间API
jdk8新出的时间api自带解析api和比较api,推荐使用。有LocalTime、LocalDateTime、ZonedDateTime主要使用的是ZonedDateTime,这个类还有几个比较重要的方法- now() 获取现在的时间- withFixedOffsetZone() 使用固定的偏移量和时区- isAfter() 是否晚于某个时间这个对象是有偏移量和时区两个参数的,随着时区的改变,偏移量和时间都会发生变化,但偏移量与时间的总和固定。
2022-10-13 19:42:40
521
原创 【Nexus(docker)】login attempt to http://xxx/v2/ failed with status: 401 Unauthorized
进入到设置里,点击Realms,在Available里搜索docker bearer token,然后添加到Active里。
2022-09-15 20:12:19
2665
1
原创 【Feign请求头丢失问题】no suitable HttpMessageConverter found for response type
HttpMessageConverter 失败的原因是:在项目中使用了一个拦截器拦截请求,部分接口需要登陆才能访问,否则返回一个text/html格式的响应,导致远程服务解析响应失败。登陆失败的原因是:Feign发起远程调用的时候会重新生成一个新的请求,带来的问题就是不会携带原来请求的cookie,导致调用需要登陆的远程接口时会失败。解决方法是配置一个Feign的拦截器,在发送请求的时候带上原请求的cookie。
2022-09-09 17:17:02
11860
原创 request.getRequestURI()总是为“/error“
主要原因是可能如下1. 请求的方法有误:例如接口使用的是POST方法,但是请求的是GET方法,这样就会匹配不到路径,返回“/error”路径2. 参数解析失败:常见于POST方法,无法将前端的参数转换为RequestBody就会出现错误,比较容易出错的地方就是一些对象,例如我出错的就是因为时间无法转化为Data
2022-09-07 13:39:04
4315
1
原创 IDEA的Service面板没有端口,日志报错:Can‘t load AMD 64-bit .dll on a IA 32-bit platform
并且Service面板的springboot服务没有端口。直接在IDEA里下载一个JDK。原因是jdk的版本是32位的。
2022-09-06 17:29:46
323
原创 Gateway整合微服务文档:Knife4j文档请求异常、Swagger报错Failed to load API definition.
很显然,此时我的网关配置不正确导致网关的swagger获取不到正确的api-docs。因此,只要路径映射正确就好了。解决方案:修改路由规则(StripPrefix去除前缀再转发)、修改获取SwaggerResource的规则
2022-08-25 03:21:11
7405
1
原创 Nginx、LVS、Keepalived的关系
LVS不也有负载均衡问题吗?无论设计多少层负载均衡,多少层网关,所有流量总还是会通过一个地方的,怎么扛得住呢?确实是这样的,但是服务器和服务器之间并不是完全相同点,从LVS到Nginx到Tomcat,他们的功能以此增加,吞吐量也依次减少。几台Tomcat扛不住的流量可能一台Nginx就能扛住,几台Nginx扛不住的流量可一台LVS就能扛住。那LVS扛不住呢?总不能让所有流量都往一个地方走吧,所以可以考虑类似CDN的手段,每个地区就近解决就好了。
2022-08-23 19:06:59
2580
原创 HikariCP连接池:Possibly consider using a shorter maxLifetime value.
1. 在交互模式下,session级别的 interactive_timeout 继承了global级别 interactive_timeout 。2. 在交互模式下,连接时长受interactive_timeout 影响。3. 在非交互模式下,session级别的wait_timeout ,继承了global级别wait_timeout 。4. 在非交互模式下,连接时长受wait_timeout 影响。5. 在交互模式下,session级别的wait_timeout ,继承了global级别int
2022-08-19 23:03:17
10233
原创 mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘ (Errcode: 2 - No such file or directory)
找不到配置文件的路径。在网上没有查找到有用的相关资料。删除不能用的镜像,并将5.7.34改tag为5.7。拉取一个比较稳定的版本(而不是最新版)尝试使用稳定的版本看看能不能正常运行。拉取镜像默认拉取到最新的镜像。尝试启动一个容器实例。...
2022-08-16 23:23:36
3509
3
原创 【倒推题解】三数之和及其变式的优化思路
考完出来看到有人的解法是:枚举i,k,同时用一个哈希表记录i到k中每个数的出现次数,如果nums[i] + nums[k]是3的倍数,答案就加上(nums[i] + nums[k]) / 3的出现次数。今天美团笔试有道题是给出一个数组,找出所有 i...
2022-08-14 00:55:01
289
原创 【STL容器使用案例】机器人运动范围(pair/boost::hash/vector)
矩阵的visited数组我们不需要使用哈希+pair的方法来存,直接使用一个同大小的矩阵来标记。
2022-06-01 23:47:18
187
原创 php无法连接mysql8(加密插件问题)
php7始终连不上mysql8很多教程都说在/etc/my.cnf配置文件中添加配置:然后重启mysql再创建用户但是其实我试了之后还是不行,查看数据库查看用户使用的加密插件之前创建的用户还是使用的是caching_sha2_password插件。这时候我们创建用户的时候指定使用什么插件即可。这样稳一些,创建完最好看一下使用的是什么插件。
2022-06-01 14:28:09
760
1
原创 解决renren-fast整合spring cloud alibaba nacos时出现版本不一致问题
在使用renren-fast时需要将其注册到nacos上一遍gateway路由到他。但是在整合时出现了springboot版本不兼容问题。其中renren-fast使用的是springboot2.6.6版本。而我开发时使用的是2.3.7.RELEASE版本。在导入我自己的common模块到renren-fast项目下是出现版本冲突。解决方法:1.使用新版nacos,不导入common依赖。2.将renren-fast的springboot降低版本。升降级版本都需要更改依赖,然而我遇到了无法清楚Mav
2022-04-25 22:11:01
3188
16
原创 解决IDEA无法删除Maven依赖
运行一个模块的时候报错了。这个模块是renren-fast模块,和我开发的其他模块依赖的springboot版本不一样。尝试降版本(将version改为了2.3.7),结果好久出现了上面的报错。出错的原因大概是Springboot的版本冲突了。查看maven依赖,发现存在两个springboot版本。刷新maven貌似都无发清除依赖,尝试清除IDEA缓存。无果。尝试在project Structure里删除。也不行。在父项目中移除模块,再导入可。...
2022-04-25 21:38:44
6473
5
原创 docker启动mysql失败(闪退)原因
创建好mysql之后容器之后可以连接后来修改了配置发现mysql启动不了docker ps -a 查看发现mysql的状态一直是EXISTdocker start mysql 能成功启动(docker返回mysql)但是再查看docker ps发现还是没有启动起来大概可以知道就是docker启动之后又迅速关闭想起Docker容器后台运行,就必须有一个前台进程。否则就会自动关闭,大概推测是docker里的mysql没又起起来。想起刚刚修改了配置,可能是配置错了导致的。一看发现粘贴配置的时候格
2022-04-22 21:17:04
3898
原创 微信小程序mqtt真机失败原因分析
前言文章写于2021年11月…或许微信已经修复了这个bug?这个bug只出现于安卓端,ios没有问题。正文配置部署好证书之后,在面板可以成功连接但是真机不能连通。微信平台里设置了相关服务器域名,在本地校验合法域名也能成功连接。说明部署的证书有效。说明问题出在了调试和真机有人说调试和真机的请求头里的type不一样到时调试失败,但是真机可以。直接上传就可以成功。还有的说是mqtt.js库的版本问题。但是我的问题不是出在这里。经过查阅相关资料:https://developers.weix
2022-04-06 22:20:27
3870
6
原创 SpringSecurity+JWT实现登陆验证的思路(有一点点源码分析)
看了几个SpringSecurity+JWT的登陆demo,两个demo在一些细节实现上有一些不同,然后对于各个类和接口的关系比较模糊,就决定整理一下思路。先简单的借用一下一位UP 三更草堂的图了解一下登陆大概的流程和用到的类,这个他讲的还比较清晰。前后端分离项目登陆流程。SpringSecurity工作流程(过滤器链)登陆的后端实现:要实现登录验证主要需要实现上图过滤链的橙色方块部分的过滤器(UsernamePasswordAuthenticationFilter),这个过滤器的工作原理如下图
2022-04-04 18:17:53
1812
1
原创 [基础不牢地动山摇]MyBatis Generator错误使用之(doesn‘t have a default value / generatedKey / )
今天测试接口的时候报错 Field ‘p_id’ doesn’t have a default value打印了一下Passager,没什么问题Passager: Passager [Hash = 13932247, pId=0, passaerName=string, age=0, serialVersionUID=1]发现问题出在了SQL语句。SQL: insert into passager (passaer_name, age) values (?, ?)因为用的是MyBati
2022-03-29 20:22:10
1111
原创 【STL容器使用案例】水仙花数(打表、面向结果编程、vector删除)
经典水仙花树常规暴力解法:#include<bits/stdc++.h>using namespace std;int main(){ int m,n; while(cin>>m>>n){ vector<int> res; for(int i=1;i<=9;i++){ for(int j=0;j<=9;j++){ for(int k=0
2022-03-26 15:36:32
342
原创 【STL容器使用案例】雀魂启动 (map容器\[]重载)
牛客上的一题: 雀魂启动看了大佬的dfs用的是两个vector容器(一个计数,一个计牌,还要排序)#include <bits/stdc++.h>using namespace std;bool isHu(vector<int> nums){//其实是一个dfs的过程 if (nums.empty()) return true;//递归出口 int cnt = count(nums.begin(), nums.begin()+4, nums[0]);/
2022-03-26 15:29:30
5491
原创 解决zeal启动闪退(启动时关闭代理)
下载这个版本的0.6.1版本的zeal之后发现老是闪退.根据官方的提示也去更新了。但是还是闪退。在github上看到有遭遇相同问题的人。...
2022-03-02 14:57:26
1572
6
原创 在Centos7上配置Hadoop集群
硬件创建虚拟机自定义先不要安装操作系统,后面再装选择对应系统,以及硬件配置虚拟机存放位置磁盘存放位置总核心数不要超过电脑的配置(2核n线程 硬盘50G)软件打开虚拟化关闭hyper-Vdelete进入bios (SVM选项)配置操作系统(centos)在官网下载一个镜像在设备的CD/DVD插入系统GNOME桌面 或者 最小安装分配磁盘/boot 启动 1g 文件系统 ext4/swap 共享内存 4g/ 根目录 剩下的内容KDUMP 系统崩溃备份一部分数据网络和主机
2022-02-22 17:41:55
2171
原创 MongoDB安装以及配置远程连接(Centos7 腾讯云VPS)(宝塔)
前言昨天弄了一天远程连接,痛不欲生。。。明明都步骤都做齐了,就是tm的连不通。结果是因为。。。言归正传,这次的配置是:腾讯云服务器(作为mongoDB服务器)本地window主机需要做的是在window主机连接在云端的数据库安装windowwindow的安装很容易,官网下载安装包傻瓜式安装再配一下环境变量就好了测试:在网页端输入 127.0.0.1:27017显示下面这一串文字就算是成功连接了,配好环境变量之后就可以在命令行直接运行mongo是客户端连接数据库的,不填url默认连
2021-04-30 12:15:59
1504
1
原创 关于anaconda和pip的一些细节
anaconda是一个包管理工具,当初学习机器学习的时候就开始接触了anaconda,但是对环境和包管理的概念还是云里雾里。pip也是一个包管理工具,当初学编程的时候第一个学的是python,对于包管理之类的概念更是匮乏,以至于我很长一段时间内都一维pip是一个系统命令(汉)今天为新电脑配置环境,这是学习编程最痛苦的时刻。在使用新电脑的时候时候为了能不重蹈覆辙,我进行了严格的文件管理,而包管理又怎么能含糊?于是经过一番了解得出了pip和conda一些需要注意的细节。我同时安装了原生的python3.9
2021-03-12 20:20:35
2221
原创 解决pr调用麦克风的问题
刚刚安装了pr 2020版 打开程序发现他自动调用了麦克风,无论是隐私上还是使用体验上(戴耳机会有一些环境杂音)都让人感觉非常不好。网上的方法也无非就是在设置里面禁用麦克风权限。(通过开关“允许桌面应用访问你的麦克风”来达到控制效果)禁用之后虽然是没有了以上的问题,但是有些功能会无法使用(我遇到的就是导入的视频没有声音),于是研究了一下pr的首选项,发现pr默认设置了默认音频输入。只要将默认输入改为无输入一切就迎刃而解了。...
2020-12-23 11:25:26
6663
2
原创 运行记事本上的java (全错指南)
首先要明确的一点是运行java主要分为两个步骤用 javac 命令编译源代码(xxx.java)用 java 命令运行类 (xxx.class)需要注意的是, 运行类的时候不用加 .class后缀或者.java后缀直接写类名即可下面是全错指南(你大概会遇到的错误我都遇到了)java Practice3.java错误: 找不到或无法加载主类 Practice3.java解析: 要先编译,编译用javac java运行类的时候不用加.java后缀javac Practice3.java错
2020-10-20 22:12:34
231
原创 labelImg安装遇到的问题及解决方案
1. 在使用命令 pyrcc5 -o resources.py resources.qrc 返回错误D:\Anaconda3\lib\site-packages\PyQt5\pyrcc_main.py: File does not exist 'resources.qrc'这个命令是用来将resources.qrc转化为resources.py 但是程序pyrcc_main.py发现找不到这个文件,原因是我现在所在的位置(C盘)和labelImg文件的位置(D盘)不一样,这一点大家都懂,因为安装教程
2020-07-29 01:22:25
10590
12
原创 【OpenCV:从零到一】19:轮廓发现
前言这是我《OpenCV:从零到一》专栏的第十九篇博客,想看跟多请戳这。本文概要findContours发现轮廓drawContours绘制轮廓案例代码大概内容: 轮廓发现 。#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace cv;Mat src, dst;const char* output
2020-06-27 23:08:37
151
原创 【OpenCV:从零到一】18:模板匹配
前言这是我《OpenCV:从零到一》专栏的第十八篇博客,想看跟多请戳这。本文概要matchTemplateminMaxLoc案例代码大概内容:模版匹配 。#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace cv;Mat src, temp, dst;int match_method = TM_
2020-06-27 22:33:09
233
原创 【OpenCV:从零到一】17:直方图均衡化、计算、比较、反向投影
前言这是我《OpenCV:从零到一》专栏的第十七篇博客,想看跟多请戳这。本文概要equalizeHistsplitcalcHistcalcBackProjectcompareHistmixChannels案例代码大概内容:直方图均衡化和计算 。#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace
2020-06-27 01:00:50
173
原创 【OpenCV:从零到一】16:像素重映射
前言这是我《OpenCV:从零到一》专栏的第十六篇博客,想看跟多请戳这。本文概要remapat案例代码大概内容:像素重映射 。#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace cv;Mat src, dst, map_x, map_y;const char* OUTPUT_TITLE = "remap demo";int index
2020-06-26 14:10:31
187
原创 【OpenCV:从零到一】15:霍夫变换-直线、圆
前言这是我《OpenCV:从零到一》专栏的第 篇博客,想看跟多请戳这。本文概要HoughLinesHoughLinesPHoughCircles案例代码大概内容: 。运行效果:解析及注意事项全注释代码翻译笔记
2020-06-26 13:21:13
200
原创 【OpenCV:从零到一】14:边缘检测|Scharr滤波器|Sobel算子|Laplacian算子|Canny算子
前言这是我《OpenCV:从零到一》专栏的第十三篇博客,想看跟多请戳这。本文概要ScharrSobelLaplacianCannythresholdconvertScaleAbsScharr滤波器、Sobel算子、Laplacian算子、Canny算子的区别算子、滤波器、卷积核三者的区别案例代码大概内容: 。运行效果:解析及注意事项全注释代码翻译笔记...
2020-06-25 14:38:15
287
原创 【OpenCV:从零到一】13:卷积边缘处理(borderType)
前言这是我《OpenCV:从零到一》专栏的第十三篇博客,想看跟多请戳这。本文概要copyMakeBorder为图片添加边框复习RNG案例代码大概内容:循环体实现切换边界类型(也可以用createTrackbar)。#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace cv;int main(int argc, char** argv) {
2020-06-24 13:29:27
1145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人