- 博客(383)
- 资源 (105)
- 问答 (1)
- 收藏
- 关注
原创 springmvc从请求到响应的流程分析
执行完前置拦截器后,就到了ha.handle这行代码(这个对应我们流程图中的第5步),它是执行controller方法的意思,比如我们例子中的sayHello方法,执行sayHello方法后,返回的是ModelAndView(mv变量就是ModelAndView,这一步对应的是流程图中的第7步),返回ModelAndView对应我们流程中的第6步。有了自定义拦截器类,那么怎么让自定义拦截器被springmvc管理,我们通过下面的方式来处理,如下所示,将自定义拦截器添加到springmvc的拦截器链中。
2025-04-29 23:55:47
1228
原创 spring常用的设计模式
doCreateBean方法源码如下,下面实例化、属性填充、初始化的地方我都用中文加了注释,也就是执行完这个方法后,我们写在项目里的实体类就被spring自动给创建好了,这省去了我们非常多的麻烦,让我们可以专心关注具体业务,而不用操心繁杂的bean创建过程。它适用于需要灵活管理对象创建的场景,例如根据条件动态创建不同类型对象,隐藏对象创建的复杂性等。在spring中,使用模板模式的例子,像下面这个类,commit方法定义了事务的提交流程,提供了一个抽象方法doCommit(),交由实现具体的事务提交逻辑。
2025-04-09 01:09:17
1039
原创 深入源码级别看spring bean创建过程
我们通常聊到spring bean的生命周期,大多是从网上找帖子背些基本概念,这样我们学到的东西是不够直观清晰的,这篇文章我就试着从源码级别来讲清楚bean的创建过程。
2025-04-07 04:29:11
838
原创 spring boot自动装配原理
springboot自动装配几乎是现在面试必问的面试题,要是逐行分析自动装配流程肯定是很复杂的,因此我们从大体上来梳理即可。
2025-03-31 22:43:43
1053
1
原创 spring如何用三级缓存解决循环依赖问题
我们都知道使用@Component注解将类交给spring容器管理,这种是单例模式的,也就是spring默认情况下,相同名称的类只给这个类生成单个实例。那我们如何来实现我们获取的是同一个实例对象呢?这时候就用到了我们的第一级缓存(),也叫做单例池缓存,它是ConcurrentHashMap,之所以用它是因为ConcurrentHashMap是线程安全的,从而确保大家拿到的都是同一个对象。
2025-03-28 00:59:13
527
原创 spring bean的生命周期
触发条件:容器启动时加载配置(XML/注解/Java Config)核心动作:解析@Component、@Bean等注解或XML配置,生成BeanDefinition。BeanDefinition是spring框架中定义Bean的元数据对象,它描述了spring容器如何创建、配置和管理一个Bean。它是Spring IoC容器的核心概念之一,所有Bean的创建都基于BeanDefinition中的信息。BeanDefinition存储Bean配置信息包括:类名、作用域、初始化方法、属性值、依赖关系等。
2025-03-25 01:15:57
1188
原创 什么是反射以及反射机制优缺点
Component注解上面@Target(ElementType.TYPE)的意思是它作用于接口、类、枚举、注解。反射是许多框架,比如Spring、Hibernate、Junit等的核心机制,实现依赖注入、动态代理、注解解析等。反射可以在运行时动态加载类、创建对象、调用方法、访问字段,无需在编译时确定具体类型。3)递归解析依赖:检查对象的字段或构造方法,自动注入依赖的其他对象。依赖注入的核心目标:将对象的创建和依赖关系的管理从代码中解耦。1)扫描类路径:找到需要被管理的类(如标记了特定注解的类)
2025-03-20 00:25:09
274
原创 雪花算法生成唯一ID并解决时钟回拨问题实战
我们都知道雪花算法默认的64位分布情况是1位符号位+41位时间戳+10位工作机器ID+12位序列号,我们为了解决时钟回拨问题,需要调整下工作机器和序列号的位数,增加时钟序列位,调整后的64位分布是1位符号位+41位时间戳+8位工作机器ID+4位时钟序列号+10位序列号。我们知道我们生成唯一ID的时候最常见的是使用雪花算法,但这个算法有个非常致命的问题就是时钟回拨的问题,一旦发生时钟回拨,就可能产生重复的ID,那我们应该如何解决这个问题呢?具体实现代码如下所示。
2025-02-14 17:53:33
389
原创 使用花生壳穿透内网
一、安装花生壳官方下载地址:花生壳客户端官方下载 - 贝锐花生壳官网二、注册说明:花生壳注册可能会遇到收不到验证码的情况,多尝试几次直到注册成功为止三、登录四、添加映射(点击上图的添加映射) 说明:1、他人要调用我们的controller接口,因此这里我们需要勾选映射类型为HTTP,这里需要提醒的是,这个是需要花钱的,目前官网是花6元购买这个HTTP服务,等购买之后就可以选中这个HTTP了。 2、外网域名是花生壳自动给我们生成的,这个域名也是后面他...
2022-05-07 01:52:00
5336
4
原创 win本地安装xxl-job服务
一、创建数据库xxl-job服务端搭建在数据库中导入数据表(mysql):CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci;use `xxl_job`;SET NAMES utf8mb4;CREATE TABLE `xxl_job_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `job_gr..
2022-05-07 00:16:00
3416
4
原创 如何保证数据库与redis缓存数据一致性
既然要解决这个问题,那么首先要大概了解为啥会出现数据不一致呢?根本原因是我们无法将数据库更新操作与缓存更新操作放在同一个事务内同步成功,同步失败!下面列举几个常见的操作以及各自的问题1、先更新数据库,后更新缓存 问题:假如有两个请求,请求1先更新数据库,将库存更新为1,这时CPU切换给了请求2,请求2将库存更新为2并且将库存更新为了2,这时CPU又切换到了请求1,这时将库存更新为1,这样最终数据库中库存数量是2,而缓存中库存数量却为1,导致了两者不一致,因此这种操作是无法保证两者...
2022-05-02 23:03:22
2556
原创 git免密登录
第一步:进到工程所在的目录第二步:使用git bash命令打开命令窗口第三步:ssh-keygen -t rsa -C ‘xxx@xx.xxx’//配置的邮箱连续敲三次回车,这样就会在某目录下生成对应的私钥和公钥文件,具体$ ssh-keygen -t rsa -C 'xxxxxxxxxx@163.com'Generating public/private rsa key pair.Enter file in which to save the key (/c/Users/17710/.
2021-11-28 15:00:29
1251
原创 mysql查询某个值在分组中出现多次的数据
场景:一个商品可以按照不同的规格进行售卖,比如玉米,可以一粒装或三粒装等规格进行售卖,现在我想查看有哪些商品是按照多个规格进行售卖的,sql如下所示:select GROUP_CONCAT(d.specification_id),d.goods_id from(select b.specification_id specification_id,b.specification...
2019-06-26 10:04:12
2892
原创 Mysql按照某个条件进行分组求和并且要知道参与求和的各项明细
select GROUP_CONCAT(a.send_order_id) as send_order_id,b.partner_user_id as partner_user_id, sum(a.need_pay_amount) as num from send_order a join send_order_extend b on a.send_order_id = b.send_order_i...
2019-05-24 16:27:21
8456
原创 巧用Excel按照某一列进行整体排序
假如遇到下面两列数据 那么假如我现在想按照第二列数据倒序的方式来显示,同时第一列与第二列的对应关系不能错乱,这时就可以用Excel来搞了,我们首先全选住要排序的内容 点击"筛选"之后,表头会出现下拉图标,我们点击第二列的下拉图标,会出现如下图所示的菜单,我们选择"降序",从而就可以实现按照第二列来进行整体倒序排序了。 排完...
2019-05-07 19:08:31
65022
原创 为何两个完全一样的字符串相比较却不一样
曾遇到过这么一个问题,就是我想比较两个文件中有哪些是不一致的,但是发现用java代码跑出来的结果却令人大跌眼镜,出现了本来一样的字符串结果硬生生的给我打印出来不一样!比如1000-11-20190225-ZP-1551024000-1632240000这个字符串,放在两个文件,用java读取文件中的值并做比较,发现竟然不一样!!这让我当时百思不得其解,还以为是Eclipse或IDE...
2019-05-06 09:57:40
5404
原创 springboot远程debug服务器代码
首先要保证本地的代码与服务器上的代码完全一样。 接着我们配置一下服务器的启动配置 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 接着就是配置IDEA 这样就配置好了,我们启动IDEA...
2019-04-25 19:40:25
946
原创 在ELK或linux服务器上搜索日志
在ELK如果想搜索某个日志可以使用"com\.yhdx\.wms\.base\.domain\.GoodsBatch\.handle" AND "goodsId:211237790443114496"这样的请求方式来搜索满足两个条件的日志。 在Linux服务器上,如果也想搜索满足多个条件的日志则使用类似grep 'com.yhdx.wms.base.domain.Goo...
2019-03-18 10:32:38
703
1
原创 如果线上数据库有重复数据,怎么处理?
最近在公司遇到由于历史数据造成了有重复数据,导致有些操作无法进行,因此需要手动清理掉线上的重复数据,那么首先就是要查出来有哪些是重复的,下面这条sql就是查询重复数据的,而且根据sku把重复数据都显示在一起,这样一目了然。select t.delivery_scope_id,t.goods_code,t.delivery_scope_group_id,t.priority_le...
2019-03-16 11:06:04
1016
1
转载 Beyond Compare 4 试用期过期处理
打开Beyond Compare 4,提示已经超出30天试用期限制,解决方法:修改C:\Program Files\Beyond Compare 4\BCUnrar.dll,这个文件重命名或者直接删除,则会新增30天试用期,再次打开提示还有28天试用期 一劳永逸,修改注册表 1)在搜索栏中输入 regedit,打开注册表 2) 删除项目:计算机\HKEY_CURRENT_USER\...
2019-03-13 00:54:39
1350
1
转载 解决Eclipse调试JDK源码无法查看变量值
问题研究JDK源码的同学应该知道,在debug的时候是无法看源码中变量的值的,为什么呢?因为在JDK中,sun对rt.jar中的类编译时,去除了调试信息。那么是否有解决办法呢?答案是肯定的。解决方案1.在你的D:盘新建jdk文件夹,然后在文件夹里面分别创建两个文件夹jdk_src(存放源码)和jdk_debug(存放编译结果文件)。2.从%JAVA_HOME%路径下找到src.zip源...
2019-02-25 23:16:00
1002
1
原创 查询出学生表中年龄和分数相同的所有同学的名字
首先看一下表中的数据select t.* from student t where (select count(*) from student where age=t.age and score=t.score)>1;执行结果如下:
2019-02-19 13:59:13
8239
1
原创 查询时间字段时分秒不等于0的记录
下面是查询100条时分秒不为0的记录select warehouse_id,goods_id,batch_id,production_date from goods_batch where production_date>'2016-01-01 00:00:00' and HOUR(production_date)>0 limit 100下面是查询时分秒不为0的所有记录se...
2019-01-24 12:21:22
1456
原创 关于$.messager.alert被全屏覆盖的问题
昨天在处理一个问题,就是$.messager.alert在全屏模式下被覆盖了,需要退出全屏模式才能看到,从网上找了老半天一直没有找到答案,后来请教了前端大神才知道,我用js所实现的全屏是针对某个div进行全屏的,并不是针对整个body的,如下所示,这种情况下,$.messager.alert并不在该全屏范围之内,所以看不到弹出框。如果要想看到弹出框,需针对整个body来全屏,如下被注...
2019-01-04 12:53:51
1512
6
原创 表关联进行更新操作
UPDATE table1 join table2 on table1.字段1=table2.字段2 and table1.字段2!=table2.字段2 and table1.字段3 in (xxx,yyy,zzz) set table1.字段2=table2.字段2;
2018-11-28 01:11:10
1410
原创 使用码云来管理我们的代码
一、为何使用码云 就个人学习而言,如果在自己的电脑上跑一个gitlab服务器,那么势必很消耗内存,而码云不是在我们本地运行,因此对内存来说要求很低。二、码云的使用 首先就是注册,注册完之后新建自己的项目三、生成公钥 在我们本地的代码目录下,右键点击"Git Bash Here" 会弹出一个命令窗口 我们首先初始化...
2018-08-14 15:20:42
2636
原创 查看服务器对应的所有IP
在公司开发项目时,配置文件中配置的IP地址都是公司内网地址,但是项目上线后发布的是外网地址,在一个公司,有可能有很多外网IP,那么如何能准确知道外网IP与内网IP的对应关系呢? 其实特别简单,就一个命令:ip address,如下所示,可以看到,eth0所对应的是内网IP(10.90.100.88),而eth1所对应的IP为外网IP(192.168.58.66)...
2018-08-08 13:02:05
36070
2
restclient-ui-3.5-jar-with-dependencies.jar
2017-06-08
QRCode.zip
2017-05-10
RabbitMQ实战:高效部署分布式消息队列
2019-01-29
SpringBoot+Security 发送短信验证码的实现
2018-08-14
Modbus协议中文版
2018-06-01
算法(第四版)
2018-05-18
微服务那些事儿
2017-09-13
微服务设计(中文完整版)
2017-09-13
MongoDB权威指南第2版.pdf
2017-09-07
Mycat-server-1.4-release-20151019230038-linux.tar.gz
2017-06-21
mongodb执行计划和实际查询执行结果不一致
2018-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人