- 博客(394)
- 资源 (19)
- 问答 (20)
- 收藏
- 关注
原创 【无标题】
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2024-05-15 09:18:51
355
2
原创 深入浅出Spring源码(一)构建Spring源码阅读环境
3.修改build.gradle配置📚找到spring-framework-5.3.22目录下的build.gradle文件,将repositories变量的内容修改为如下```groovy repositories { maven { url "https://maven.aliyun.com/repository/public" } maven { url "https://maven.aliyun.com/repository/apache-snapshots" } mav...
2022-08-07 23:40:43
1042
1
原创 浅析一致性哈希算法的原理及实现
此时可以看到只有一小部分数据进行了重定位,所以它具有很好的容错性和扩展性,❓那么它就没一点问题吗?答案肯定不是的,在某种情况下,会出现节点倾斜的问题。二是数据可能已经被缓存,但请求却命中了不存在该数据的节点上。所以引入虚拟节点,并将虚拟机节点定位到某个物理节点上即可。一旦某个节点宕机或者加入新的节点时,导致n发生了变化,需要重新hash计算,❓当节点宕机或者添加新的节点时,它会出现什么样的结果呢?按照顺时针,第一台遇到的节点就是该数据定位到的服务器。当节点2宕机之后,数据1和数据2都重定位到了节点3上,..
2022-07-16 01:25:17
862
1
原创 浅析JVM是如何处理异常的?finally块必须执行的原理?
JVM是如何捕捉异常的?每个方法在经过Javac编译之后,都会附带一个异常表;看下面代码的字节码指令 public void method2() { try { int a = 1 / 0; } catch (Exception e) { e.printStackTrace(); } }在该异常表中有四个重要的概念,from指针、to指针、target指针、异常类型。from指针和.
2022-05-25 00:46:07
887
1
原创 浅析ThreadLocal的底层实现【线程隔离+内存泄漏】
❓首先ThreadLocal有什么作用?它最为突出的特点就是"线程隔离",可能你心中会疑问线程隔离是什么?此刻可以拿synchronized做对比,在并发环境下,synchronized将共享资源进行锁定,线程必须一个个的去挨个访问。而ThreadLocal它相当于每个线程都有一份该资源,然后线程之间对资源的操作是互不可见的;可以这样说:synchronized采用的是以时间换空间的方式,而ThreadLocal采用的是以空间换时间的方式。❓ ThreadLocal如何使用呢?第一个线程执行.
2022-05-18 00:00:27
416
原创 浅析CountDownLatch闭锁底层实现原理
🍀CountDownLatch是基于AQS同步器的一种同步工具,它可以让一个或多个线程等待,一直等到其他线程完成一组工作,它是AQS共享模式的实现。它的使用方式如下:查看它的内部实现,它的设计模型和ReentrantLock类似,都是内部定义了一个Sync继承了AQS同步器。而且CountDownLatch内部并没有太多的方法。首先查看它的构造方法,如果了解过ReentranLock的实现,那么你就会很熟悉了,老一套。✨与ReentrantLock中的Sync不同的是,它们虽然都是继承了AQ.
2022-05-17 14:32:51
392
原创 一文彻底搞懂ReentrantLock原理【基于AQS的公平锁+非公平锁】
🍀 JVM已经帮我们内置了synchronized关键字来实现同步,为什么还要引入Lock呢?首先需要明白synchronized是JVM层面的锁,Lock是API层面的锁,synchonized的灵活度是远不及Lock的;在JDK5时 Lock的效率是优于synchronized,在JDK6开始官方对synchronized进行了大量优化,包括锁升级、锁消除、锁粗化等,事实证明在锁竞争激烈的场景,ReentrantLock还是优于synchronized,但是synchronized还有增长空间,官方
2022-05-17 01:39:49
991
原创 从汇编角度理解CAS机制+浅析ABA问题
✨CAS全称"Compare And Swap",也就是"比较并替换";它涉及三个操作数:内存值、预期值、新值。只有当内存值和预期值一致时,才能将内存值修改为新值。📚CAS操作具有原子性,它的原子性由CPU硬件指令来保证;在HotSpot中...
2022-05-16 11:08:28
515
原创 一文彻底搞懂操作系统“内存管理“【地址空间+重定位+虚拟内存+分页】
虚拟内存的核心思想 : 每个进程都有自己独立的地址空间, 这个空间被分为多个块, 每一块称为页或者页面。这些页都有连续的地址范围,被映射到物理内存;并不是所有的页都在内存中才能运行程序;当程序运行时,如果发现缺少了某个页,操作系统会将其缺失的部分装入内存重新执行失败的指令。2.3.1.分页(下面默认计算机都使用了虚拟内存技术)大部分的虚拟内存都使用了一种称为分页的技术,看下面这条指令 MOV REG,1000 //将地址为1000的内存单元复制到REG中由程序产生的地址称为虚拟地址,它们
2022-05-15 21:28:08
2326
原创 深入HotSpot虚拟机源码探究synchronized底层实现原理【万字总结synchronized】
一、synchronized原理synchronized是Java中的关键字,无法通过JDK源码查看它的实现,它是由JVM提供支持的,所以如果想要了解具体的实现需要查看JVM源码(1)首先准备好HotSpot源码jdk8 hotspot源码下载地址:http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/选择zip或者gz格式下载即可(2)解压,使用vscode或者其他编辑器打开src是hotspot的源码目录cpu:和cpu相关的一些操作os
2022-05-11 02:14:28
694
原创 mybatis plus出现argument type mismatch错误
首先定位到错误代码处原来是插入数据出现了异常,排查后发现是实体类id字段忘记加入id标识类型了。(设计表时我将id主键设计为了string类型的自增)。IdType一共有以下几种标识类型按照自己的表设计加入即可。...
2022-04-27 12:49:40
1420
原创 Windows10蓝牙驱动丢失,100%解决方案
1.打开控制面板2.设备和打印机3.找到如下设备(应该会有个!警告)4.右键->疑难解答5.一步步修复,最后关机重启即可。
2022-04-27 09:55:42
18651
12
原创 IDEA的Service服务开启不显示端口号问题【web依赖问题】
今天碰到了一个很离谱的问题,启动某个服务之后,发现它并没有显示端口,无论是控制台还是Service服务都是如此。然后就是各种捣鼓,包括缓存清理,改变项目结构,配置修改等等毫无作用,一开始是真没想到是web依赖问题,想着@SpringBootApplication注解都用上了,web依赖肯定不会出现问题,最离谱的是我还以为是其他依赖影响到web。最后发现无论是WebMvcAutoConfiguration还是WebFluxAutoConfiguration都没有加载,还是web依赖出了问题。发现并没
2022-04-23 16:08:19
1589
原创 推荐使用mybatis-plus逆向生成crud代码,让你开发效率提升50%
文章目录1.在自己的某个服务的test目录下创建CodeGenerator类2.导入MP-Generator、模板依赖3.CodeGenerator代码4.注意点5.启动MP官网:https://baomidou.com/1.在自己的某个服务的test目录下创建CodeGenerator类需要判断自己在那个服务下,CodeGenerator类中需要使用该路径。2.导入MP-Generator、模板依赖3.CodeGenerator代码import com.baomidou.my
2022-04-23 10:18:12
2044
2
原创 Error creating bean with name ‘redisConnectionFactory‘ defined in class path resource...
[org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory]: Factory method ‘redisConnectionFactory’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig出现这个原因是因为lettu
2022-04-22 21:22:59
2201
原创 The following method did not exist, reactor.netty.resources.ConnectionProvider$Builder...
看控制台给出的提示是因为某个方法不存在导致的。解决方法:我的boot的版本是2.3.2.RELEASE,将gateway依赖中的reactor-netty版本升高即可 <!--网关核心依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sta.
2022-04-22 14:50:32
1739
1
原创 application.yaml或bootstrap.yaml配置文件没有被加载
启动服务发现tomcat启动的端口并不是我在配置文件中定义的端口,也就是说该配置文件根本没有被加载。以下解决File->Project Structure->Modules
2022-04-22 13:43:55
775
原创 Redisson框架出现NOAUTH Authentication required.. channel: [id: 0x19aa9aed, L:/192.168.0.112:50867 - R...
在使用Redisson作为分布式锁的解决方案时,启动服务出现了以下错误:从图中可以看到重点:没有权限访问数据库,原来是使用Redisson忘记将密码设置进Redisson的config配置文件里了,可能你会说我在yml或者properties配置文件中配置了redis的相关信息,但Redisson是不会去加载的。修改为如下即可:...
2022-04-16 16:44:10
6387
1
原创 Redis url should start with redis:// or rediss:// (for SSL connection)
Redis url should start with redis:// or rediss:// (for SSL connection)查看官方文档可以得出少加了redis://或者安全的SSL连接rediss://注意如果Redis开启了密码配置,需要设置其密码。否者会报NOAUTH
2022-04-16 16:36:01
4900
1
原创 2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索
1.为什么要自定义扩展ES词库呢?虽然IK-中文分词器已经很强悍了,能够识别大多数的词汇,但是对于网络中新兴的网络词汇是无法识别的(比如“爷青回” “打工人”)下图是我在Kibana对“爷青回”的分词情况分词结果如下:本身我们想让“爷青回”作为一个词,由于是网络词汇,IK-分词器是无法识别出的,所以需要我们自定义扩展词库2.如何自定义扩展词库呢?有两种思路,如下所示:Ⅰ.我们构建一个词库服务器,让IK分词器给我们的词库服务器发送请求即可Ⅱ.使用web服务器保存我们的词库;例如ngi
2022-04-11 23:54:10
2435
原创 ElasticSearch出现java.lang.IllegalStateException: duplicate plugin: - Plugin information:
为了使用IK-中文分词器,特地去下载了一个,结果重启动ES之后,进入Kibana可视化界面,出现了503服务不可用;一开始以为是Kibana还没注册进ES中,结果等待了一会还是如此。1.使用docker ps查看运行的容器,发现ES已经停掉了,只剩下了Kibana容器在运行2.查看日志分析原因docker logs elasticsearch根据提示可以得出是因为plugings目录下的插件IK分词器重复了。此时由于es容器无法启动,就无法直接去容器内部进行修改。不过幸运的是我对plugings、
2022-04-11 14:08:17
2952
原创 未知异常:class feign.codec.EncodeException,异常类型为{}Error converting request body
可以看到控制台的异常,被全局异常类捕捉到,但是由于它被Exception处理,也不好弄明白是什么地方的错误;我想着很快就能解决,也懒得查日志debug了,一开始我以为是Feign调用时格式出问题,就一直在那找Feign远程调用时的格式转换问题,最后一无所获。然后被迫Debug了一下,由于我将前端传来的数据封装成了一个VO里,发现里面有一个字段List< Menu >为空,然后我又去看了一下前端封装的数据,将该字段封装到了一个数组;我当时一直在想,这没问题呀,前端传来的数组,我使用集合接收没错.
2022-04-09 18:58:15
4491
1
原创 Docker安装FastDfs教程——只需三步
1.首先搜索FastDfs镜像docker search fastdfs2.拉取镜像docker pull morunchang/fastdfs3.运行trackerdocker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh–net=host:表示的是使用的网络模式为net模式-d:表示后台启动4.运行storage将下面命令中的ip地址:port换成自己的即可docker run
2022-04-07 19:17:31
8264
4
原创 A query was run and no Result Maps were found for the Mapped Statement....
主要原因就是mybatis涉及到查询必须手动定义返回值类型
2022-04-03 13:43:13
773
原创 xxxx无法转换为java.lang.Class<? extends javax.validation.Payload>
将校验器中的groups字段修改为以下内容即可。
2022-04-01 22:08:19
503
原创 java: 找不到符号 符号: 方法 setOperation(java.lang.String) 位置: 类型为.......
有两种可能(1) idea没有下载lombok插件,但一般来说编辑器会帮你默认集成的(2) lombok依赖版本与lombok插件版本相差太多,一般来说将lombok依赖版本提高即可。dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.14</version>
2022-04-01 18:53:23
12025
14
原创 you aren‘t using a compiler supported by lombok, so lombok will not work and
1. 首先查看IDEA是否安装了lombok插件,一般来说编译器会默认给你安装,那么就是下面这个原因了。2.lombok插件与lombok依赖版本相差太大;一般来说就是使用的是IDEA最新版本,然后lombok使用的依赖版本过低,找到自己xml中的lombok依赖,查看其版本,将版本升级即可。<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</ar
2022-04-01 18:48:27
749
原创 Invalid host: lb://xxx_xxx
从控制台日志可以看出是RouteToRequestFilter类中出现的问题。URL不支持下划线的命名方式!
2022-03-29 14:41:27
848
原创 No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
根据错误分析发现是IllegalStateException参数异常,往后分析可以得出是在注入loadbalancer组件时异常,所以我们缺少了spring-cloud-starter-loadbalancer依赖,导入即可。另外根据spring官方文档也可以窥探一二。org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberController' defi
2022-03-27 10:45:54
2161
原创 【编码实战】2022年还在用jjwt操作jwt?,推荐你使用nimbus-jose-jwt,爽到飞起~
什么是nimbus-jose-jwt? nimbus-jose-jwt是基于Apache2.0开源协议的JWT开源库,支持所有的签名(JWS)和加密(JWE)算法。对于JWT、JWS、JWE介绍JWT是一种规范,它强调了两个组织之间传递安全的信息JWS是JWT的一种实现,包含三部分header(头部)、payload(载荷)、signature(签名)JWE也是JWT的一种实现,包含五部分内容。接下来我们将使用对称加密(HMAC)和非对称加密(RSA)两种算法生成和解析JWT令牌。1
2022-03-11 12:06:47
11789
1
原创 【Jenkins持续集成】docker部署+配置+操作Jenkins
1.拉取Jenkins镜像docker pull jenkins/jenkins:lts2.新建文件方便后续进行挂载mkdir -p /mydata/jenkins_home给予文件夹权限,否者可能会无法启动容器chown -R 1000 /mydata/jenkins_home/3.启动容器docker run -di --name=jenkins -p 8080:8080 -v /mydata/jenkins_home/:/var/jenkins_home jenkins
2022-02-27 23:16:32
755
原创 【虚拟化】docker构建私有仓库,上传镜像至私有仓库
1.拉取仓库镜像docker pull registry2.启动仓库容器docker run -di --name=registry -p 5000:5000 registry3.编辑daemon.json文件vim /etc/docker/daemon.json在文件中加入以下内容“insecure-registries”: [“191.46.213.75:5000”]4.重启dockersystemctl restart docker5.为某个镜像打上标签(
2022-02-27 12:03:44
766
原创 【虚拟化】Dockerfile构建JDK镜像
1.准备压缩包2.编写Dockerfile文件vim DockerfileMAINTAINER:编写人ADD:解压路径ENV:环境变量配置3.构建镜像docker build docker build -t=“jdk1.8”4.查看构建之后的镜像docker images
2022-02-27 10:23:25
1108
原创 【虚拟化】docker安装ElasticSearch+Kibana,下载IK分词器
1.拉取镜像docker pull elasticsearch:7.5.02.运行容器docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” -e “cluster.name=elasticsearch” -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:
2022-02-26 23:55:34
1660
原创 【虚拟化】docker部署Rabbitmq
1.拉取镜像docker pull rabbitmq:3.7.122.启动容器docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:3.7.123.进入容器内部docker exec -it rabbitmq /bin/bash4.开启插件rabbitmq-plugins enable
2022-02-26 18:49:27
1208
原创 【虚拟化】docker部署nginx
1.拉取nginx镜像2.启动nginx容器由于我们需要将nginx.conf配置文件进行挂载,有两种方式操作(不挂载就进容器进行操作)nginx.conf在容器内部的/etc/nginx目录下(1)先启动时后挂载mkdir -p /usr/local/mydatadocker run -di --name=nginx -p 80:80 nginxdocker cp nginx:/etc/nginx /usr/local/mydata/nginx(2)启动时挂载mkdir -p /
2022-02-26 17:00:45
1762
原创 【虚拟化】docker创建mysql镜像,docker内部操作mysql
1.拉取mysql 8.0版本镜像docker pull mysql:8.0(下图应该是docker pull mysql:8.0)2.启动镜像docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0-d表示后台方式运行容器,-i表示运行容器-di与-it不同的是:-it创建运行容器之后会进入容器内部3.进入mysql容器内部docker exec -it mysql /bi
2022-02-26 15:01:16
732
原创 【虚拟化】Linux中安装配置Docker
1.更新yumyum-update2.安装所需软件包yum install -y yum-utils device-mapper-persistent-data lvm2yum-utils:管理库及其扩展包的工具device-mapper-persistent-data:储存设备映射3.设置yum源为阿里云源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-c
2022-02-26 11:17:15
508
原创 【Redis系列】深入浅出缓存击穿,缓存穿透,缓存雪崩
一、缓存击穿1.什么是缓存击穿在某个高并发场景下,某个或多个热点key过期,导致海量请求在缓存中查询不到结果,进而打到了DB上,给DB造成了很大的压力。2.解决方案(1)将key设置为永不过期,然后在存储的对象中加入一个属性-过期标识时间。每次获取数据时进行校验,如果发现过期,则异步发起一个线程更新缓存中的数据。(这种方法存在一个问题,在某一刻可能会导致大量请求拿到的是过期数据)(2)使用时Redis分布式锁当请求到来时,看是否能够命中缓存,如果能命中直接返回数据即可;如果不能命中,尝试
2022-02-25 00:19:41
623
spring+springmvc+mybatis个人博客项目
2021-03-17
SSM实现个人博客项目(包含前后端)
2020-11-13
commons-logging-1.0.4.zip
2020-10-07
展开更多怎么控制呢,超过两行则显示展开更多,低于两行则不显示
2024-01-24
为什么按下Ctrl+C之后,信号没有触发呢
2024-01-09
为什么说管道和消息队列要经过四次拷贝?
2022-05-29
为什么lambda中使用for循环的变量还需要转换为final呢
2022-05-17
Byte初始化对象数组中这个-(-128)+127+1代表什么意思
2022-05-01
为什么局部引用外部中的局部变量必须是final属性的呢
2022-04-10
想问一下Stream流中sorted中间操作,对于下面这种情况有什么区别?
2022-03-28
Comparator<T> & Serializable这行代码是什么意思呢
2022-03-28
为什么Java构造函数方法不能使用泛型呢
2022-03-22
相关的整型int溢出问题
2022-02-28
在IDEA编辑器中编写三元运算式为什么被提示替换为Math.max方法
2021-12-08
都说实现RandomAccess接口的集合通过for循环来遍历数据比使用iterator更高效,未实现RandomAccess接口的集合可以通过iterator遍历数据比使用for循环来遍历数据更高
2021-11-30
如何看待下图中的顺序访问和随机访问
2021-11-29
在NIO技术中,为什么非直接缓冲区的效率要低于直接缓冲区呢?
2021-11-22
static final和final修饰的变量在何时被初始化
2021-11-18
关于使用@Autowired注解出现循环依赖的问题
2021-10-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人