- 博客(21)
- 收藏
- 关注
原创 Spring和Mybatis中的拦截器区别
结论:Spring拦截器在请求进入Controller进行拦截添加自己的处理逻辑,Mybatis拦截器在Mapper层的方法上进行拦截添加自己的处理逻辑。
2024-04-10 20:30:55
3846
原创 Java项目中代码各层级划分
数据持久层,也有叫mapper层,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一 一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。控制器层,负责具体的业务模块流程的控制,接受前端页面过来的参数,请求转发传给Service处理,再接到Service层的返回结果,传给前端页面显示。业务逻辑层,接收Controller层数据,进行业务处理,并与Dao层交互,调用Dao层进行数据存储。7、config层,存放配置文件类。
2024-03-12 14:39:45
2676
原创 自定义幂等注解
*** 幂等拦截器*/@Component@Autowired/*** 预处理* @return*/@Overrideif (!//被ApiIdempotment标记的扫描= null) {try {// 幂等性校验, 校验通过则放行, 校验失败则抛出异常, 并通过统一异常处理返回友好提示throw ex;//必须返回true,否则会被拦截一切请求@Override@Override/*** 返回的json值*/
2024-03-12 11:10:49
3516
原创 SpringBoot项目加载配置文件的6种方式
5.2、实例化完PropertySourcesPlaceholderConfigurer类之后,就可以配合@value注解实现属性注入或者@ConfigurationProperties注解实现批量注入。5.1、自定义配置类,实例化PropertySourcesPlaceholderConfigurer类,使用该类进行属性值的注入。4.2、配合@value注解实现属性注入或者@ConfigurationProperties注解实现批量注入。
2024-03-06 20:44:14
4092
原创 Mysql索引优化
2、特点:非叶子节点不存储数据,相对B树增加每层存放的节点数,降低了B+树的高度,高度越低查询效率越高,MySQL高版本所有非叶子节点全部缓存在内存大大提高查询效率;覆盖索引是联合索引的特殊情况,索引字段包含了查询语句中需要的所有列,不需要回表操作就能够获取到所需的数据。(a、b、c)三个字段,查询条件中abc字段无论顺序如何都会走索引,ab,ac,a会部分走索引,其他情况不走索引(参考图2)。2、查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询(select_type)
2023-11-03 15:30:14
2460
原创 微服务无法注册到Nacos
一、Nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。分别是9848、9849端口,在启动Nacos时需要加上。2、版本:Nacos2.0.3、SpringCloud 2.2.7.RELEASE、SpringBoot2.3.12.RELEASE。-p 8848:8848 -p 9848:9848 -p 9849:9849 开放虚拟机端口和宿主机间的端口。3、虚拟机关闭防火墙(推荐)或者开放8849、9848、9849端口。
2023-09-04 15:53:23
6405
原创 Nacos2.0.3搭建及数据持久化
我们将nacos的配置数据持久化到docker搭建的MySQL数据库,本人的虚拟机网络和电脑网络在同一网段,自己可以修改。1、参考Nacos2.0.3搭建。2、安装mysql数据库,参考:
2023-08-30 17:33:55
7535
原创 JVM内存调优
描述:进行Minor GC的时候,发现Survivor空间不够,需要移动一些新生带的对象到老年代,尽管老年代有足够的空间,但是CMS采用标记除算法,默认并不使用标记整理算法,可能会产生很多碎片,因此,这些碎片导致大对象不能向老年带转移,因此需要进行CMS在老年带的Full GC来合并碎片。(1)增大年轻代内存空间,让大对象或数组在年轻代回收,避免进入老年代。4、老年代出现过多浮动垃圾,导致大对象不能存放到老年代,CMS GC才会出现。1、老年代空间不足,触发老年代空间分配担保机制。措施:增大老年代空间。
2023-08-13 16:13:22
5206
原创 Java中基本数据类型
由一个字符数组 char[] 来存储的,由于数组的长度及索引是整数,且 String 类中返回字符串长度的方法 length() 的返回值也是 int ,所以通过查看 java 源码中的类 Integer 我们可以看到 Integer 的最大长度不能超过。之后把引用交给栈中的s。3、内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时生成一个指针指向对象(堆);所以在最坏的情况下,一个最大的字符串要占用4GB的内存。
2023-08-07 16:46:51
3134
原创 Docker常用命令(个人)
docker logs 容器id/容器名称。# remove删除所有容器。#查找关于redis的镜像。# stop停止所有容器。#安装最新的redis。#删除指定id的镜像。
2023-07-27 15:56:20
2896
原创 Docker Compose 快速构建 TiDB 集群
IP填写错误(我这里写了127.0.0.1报错,改成虚拟机IP,因为我是利用容器搭建的mysql服务;需要具备mysql客户端,不然报错:“-bash: mysql: 未找到命令。STATUS为Up代表启动成功。默认mysql没有密码。
2023-07-27 15:55:49
3523
原创 Docker安装mysql
注意:启动完容器后(第五步)直接使用mysql -h localhost -u root -p连接会报错:“这里直接设置密码123456,可以不设置,默认会生成密码,查询初始密码并修改。先输入exit退出mysql,再输入exit退出容器。42d6d493d778为上图mysql容器id。“-bash: mysql: 未找到命令”
2023-07-27 12:22:54
4559
原创 Linux常用命令
两者在编程方面,对编辑源文件会产生重要影响。因为文件没有修改,":wq"强制更新文件的修改时间,使用make编译整个项目时文件被修改了,重新编译链接生成可执行文件。容易让人误解,产生了不必要的系统资源花销。:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
2023-07-18 08:58:31
4986
原创 springboot集成sharding-jdbc
3、水平分片:(1)数据库分片;yml文件会爆红,不影响项目启动。3、更新数据库内容自己测试。yml文件中采用的是。
2023-07-13 15:07:19
12421
原创 SpringBoot集成Netty
NettyClient类中ch.pipeline().addLast(new NettyClientHandler());NettyServer类中的channel.pipeline().addLast(new。粘包和拆包问题,可以自己手写通过固定长度发送数据,或者使用。客户端和服务端都是固定的框架,我们只需写处理器。
2023-07-04 17:50:26
14462
原创 电话号码的字母组合-思路
第四个参数index,从0开始获取对应的字符串参与遍历过程,而且是递归停止的标识(index == num.length()),多说一句,递归方法停止的判断条件一般都是放在方法开始位置。第三个参数num,输入的数字,利用charAt方法获取到每一个数字,根据数字在map中获取对应的字符串,每次递归都要传入。输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]第二个参数list,用户存放结果集,依次添加结果,每次递归都要传入。输入:digits = ""
2023-06-21 15:47:33
1140
原创 解决RocketMQ消息重复消费场景
在broker端对Queue加锁(synchronized),Consumer监听的Queue存在已投递但未收到ack且未超时的消息,不允许获取锁,直到该Queue投递的消息全部ack或者消费超时,才允许新的Consumer获取锁,拉取消息。在broker端对Queue加锁(synchronized),Consumer监听的Queue存在已投递但未收到ack且未超时的消息,不允许获取锁,直到该Queue投递的消息全部ack或者消费超时,才允许新的Consumer获取锁,拉取消息。2、为什么在消费者做去重?
2023-06-11 07:35:38
15639
原创 SpringBoot集成RocketMQ实现三种消息发送方式
以上输出:发送者向MQ 执行发送消息API 时,指定消息发送成功后的回调函数,然后调用消息发送API 后,立即返回,消息发送者线程不阻塞,直到运行结束,消息发送成功或失败的回调任务在一个新的线程中返回。以上输出:消息发送者向MQ 执行发送消息API 时,直接返回,不等待消息服务器的结果,也不注册回调函数,只管发,不管是否成功存储在消息服务器上。以上输出可以看到:同步消息发送后,消息发送到broker后就返回结果了,消费端还未处理完,两者互互不影响。运行项目需要具备RocketMQ环境,参考。
2023-06-08 16:24:51
19061
转载 Docker搭建RocketMQ集群
服务器环境:centos7安装用户:root,关闭防火墙使用一键式搭建docker环境下的RocketMQ集群及其管理工具,实现rocketmq在docker环境容器外部访问。
2023-06-04 19:04:12
18804
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人