- 博客(31)
- 资源 (6)
- 收藏
- 关注
原创 springcloud 封装 rocketmq 保证消息被发送、幂等、事务消息处理
目的:主要为了保证一些重要的消息不丢失,就算发送失败也能够溯源,于是在生产者端对mq的消息状态进行判断,如果发送失败或者发送后出现了异常,将错误消息存入redis,然后建立定时任务从reids中拿到错误消息,进行重试。为了保证消息一定会被发送,就算不能发送也有源可以追踪,项目对RocketMQ的方法就行了简单统一封装。实现思路:对mq的消息状态进行判断,如果发送失败或者发送后出现了异常,将消息存入。一般不重要的消息,如日志消息,直接使用单向发送就可以了。封装后使用示例:生产...
2020-11-17 15:56:35
2134
4
原创 历经外包和小公司工作3年总结,希望给看到的人一点方向指引
前言 眨眼一过,从2017年毕业,到现在,已经毕业工作3年了,在这3年中,踩过一些坑,把这些分享出来,希望能够帮助到看到这篇博客的你。工作经历大学期间 由于大学期间确实玩游戏去了,就是那款目前还非常火的游戏::英雄联盟....., 并且在大学期间有点沉迷,导致专业课也学得一塌糊涂,基本上关于计算机的专业课考试时都是临时报佛脚,加上室友助攻,考个及格分数,好在大学期间没怎么挂过科...... 然后在大四的时候,面临着找工作,就有点着急了,然后请教了我老...
2020-09-15 14:57:02
1738
原创 spring boot 结合netty搭建服务端实现自定义协议全过程
前言 公司准备做一个关于物联网的试点项目,其中硬件部门需要与我们软件部进行数据对接,将设备获取的数据传给我们软件部门处理。于是安排我来负责与硬件部门数据的对接,搭建netty服务器数据平台.(我们公司是一个小公司,人员有限!!!) 于是现学netty服务端,现在框架也搭得差不多,把整个过程分享出来,希望能帮助到大家,有不足之处请指导。1.协议的制定 数据头: 两个字节,固定值 设备id号:代表每个通讯的设备MAC地址;SN号对...
2020-05-11 17:48:23
2267
7
原创 在windows 7 64位 环境下使用nginx的nginx-http-flv-module搭建flv视频流播放(全过程)
1 . 搭建环境前的准备工作 下载并安装以下工具下载并安装 VS2010+VS2010 SP1 下载并安装msys2-x86_64-20190524 下载并安装ActicePerl-5.24.2.2403-MSWin32-x64-403863.exe 下载并安装Mercurial-5.1.2-x64 下载并安装sed-4.2.1-setup 下...
2019-10-21 10:24:08
6842
1
原创 registerListeners(); 方法详解
先收编手动注册的监听器,再登记容器中所有监听器 Bean 的“花名册”(只记名字,不叫醒它们),最后清空并发布此前积压的早期事件。其核心设计原则是延迟实例化:通过只注册 Bean 名称而非实例,确保了监听器 Bean 仍能在阶段接受完整的后置处理器处理,与 Spring 容器“先定义、后实例化”的整体节奏保持一致。与的“装配广播器”相比,完成的是“填充广播器内容”的工作,两者共同构成了事件广播在容器刷新阶段的基础设施。
2026-10-20 17:02:56
137
原创 initMessageSource(); 详解
在refresh()的组件初始化阶段,确保持有一个可用的,优先使用用户配置的实现,并在缺失时用兜底,同时建立父子消息源委托链。它本身并不负责从文件读取消息,那是等具体实现类的工作;它只负责装配和挂接,为后续的国际化消息解析奠定组件基础。
2026-10-20 16:08:02
236
原创 spring auth 核心流程详解
核心流程:从客户端请求开始 → 客户端认证 → 用户认证(若需要)→ 生成原始 Token → Token 增强 → 存储 → 返回。最常用的扩展点TokenStore:切换 JWT / Redis 存储。:自定义 Token 内容。:让客户端配置可动态管理。:美化异常响应。
2026-10-20 14:42:46
162
原创 记录一次线上服务器发生的内存溢出排查过程
前言 在测试服务器发布服务后,测试在测试过程中发现服务异常宕机了两次,叫我去看看原因。排查过程 首先,我就先去服务器上看了看服务最后挂掉的结束日志并没有发现有什么异常的地方,就像服务突然就挂掉一样。接下来就只有去看看服务的状况了,使用cat /proc/meminfo 查看下服务器的内存分布情况可以看到,服务器被占用了比较多的内存空间,缓冲区大小也比较小。接着我们看看到底是那个进程占用了服务器最多的资源,使用top指令可以看到,占用cpu资源最多的...
2026-10-20 14:40:14
227
原创 spring registerBeanPostProcessors(beanFactory) 源码详解
是 Spring 容器启动过程中的一个重要步骤,它负责从容器中找出所有类,实例化它们并按优先级排序后注册到的内部列表中。这些处理器后续会参与到每个 Bean 的创建过程中,为 Spring 提供 AOP、依赖注入、上下文感知等核心功能。理解这个过程对于开发自定义以及排查容器启动问题具有重要意义。
2026-04-03 15:41:29
497
原创 ConfigurationClassPostProcessor 详解
继承自,允许在标准执行之前向容器注册额外的 Bean 定义。正是利用这个接口在容器刷新的早期阶段处理配置类。:拥有最高优先级,确保它比其他后置处理器更早执行。:注入所需的基础设施对象。识别配置类:通过@Bean等注解识别所有配置类。递归解析:处理配置类上的@Import@Bean等注解,生成完整的配置类模型。注册 Bean 定义:将解析出的所有@Bean方法、导入的配置类、动态注册的 Bean 定义,注册到容器中。支持条件化配置:通过注解,在解析和注册阶段进行条件判断。实现 Full 模式代理:为。
2026-03-13 15:01:19
430
原创 invokeBeanFactoryPostProcessors(beanFactory); 方法详解
实现了。在中向注册自定义的Scope实现。是 Spring 容器生命周期中的一个关键扩展点。通过深入源码,我们可以看到 Spring 如何精心组织不同优先级、不同类型的处理器,确保它们在合适的时机被调用,并允许在 Bean 定义加载完成后、Bean 实例化之前进行灵活的定制。理解这一过程有助于我们更好地掌握 Spring 容器的启动原理,以及编写高效可靠的。
2026-03-13 11:09:33
453
原创 postProcessBeanFactory(beanFactory); 方法详解;
所在类方法签名调用时机:在之后,之前。// 1. 准备 BeanFactory,设置类加载器、添加 Aware 处理器等try {// 2. 允许子类对 BeanFactory 进行后处理(模板方法)// 3. 执行 BeanFactoryPostProcessor// ...重要在中的默认实现是空方法,没有任何代码。它的作用完全由子类通过覆盖来实现特定逻辑。是 Spring 留给子类的一个扩展点,允许在容器刷新的中期对 BeanFactory 进行定制。默认实现为空。
2026-03-12 17:11:47
385
原创 prepareBeanFactory(beanFactory) 方法源码详解
类加载机制:确保类加载一致表达式支持:启用 SpEL类型转换:注册属性编辑器Aware 接口处理:自动注入上下文资源依赖解析:处理特殊类型的注入事件监听:自动注册监听器环境集成:注册环境相关的单例通过这些设置,BeanFactory 从一个“原始”的工厂变成了一个与环境深度整合的容器,为后续的 Bean 实例化、属性填充、初始化等阶段打下了坚实的基础。理解这一方法有助于深入把握 Spring 容器的生命周期和扩展点。
2026-03-06 15:39:05
354
原创 doRegisterBean() --- 注册 BeanDefinition 对象
text→ this() // 初始化 reader 和 scanner→ doRegisterBean(class) // 私有方法,真正干活的地方现在你应该可以顺利跳转到了。
2026-03-05 16:38:22
365
原创 AnnotatedBeanDefinitionReader 、ClassPathBeanDefinitionScanner 初始化详解
reader初始化:不仅是创建对象,更重要的是向容器中注册了注解驱动所必需的几个核心后置处理器(如等)。这些后置处理器是 Spring 注解配置的基石。scanner初始化:配置了默认的组件过滤器,使得它能正确识别@Component及其派生注解的类。同时设置了资源加载器和环境。:利用已经初始化的reader,将传入的配置类转换为并注册到容器中。此时容器中既有后置处理器的定义,也有用户配置类的定义。后续refresh()会触发这些后置处理器的执行,进一步解析类内部的@Bean方法、处理等。
2026-03-04 17:15:47
415
原创 obtainFreshBeanFactory() 方法细节详解
所在类方法签名调用时机:在之后立即执行// 刷新 BeanFactory:如果是可刷新的上下文,则销毁原有 BeanFactory,创建新的并加载 Bean 定义// 获取刚刚刷新好的 BeanFactory这个方法虽短,但承担了销毁旧工厂 → 创建新工厂 → 加载 Bean 定义的完整过程,而具体实现则交给子类完成。是获取(或创建)BeanFactory 并加载所有 Bean 定义的关键步骤。它通过 refreshBeanFactory()抽象方法,将具体实现下放给子类,体现了模板方法模式。
2026-03-04 16:58:28
412
原创 spring 的 核心 refresh() 方法阅读技巧
不要试图一次性读懂所有细节:先抓住主线(Bean 的创建),再分支探索(如 AOP、事务、Web 启动)。结合 Spring 官方文档:文档中对 IoC 容器的解释可以帮助你理解设计意图。多画图:画出流程时序图或状态图,有助于形成整体认知。按照这个拆解方法,相信你能够逐步攻破refresh()方法,从而掌握 Spring 容器的核心精髓。
2026-03-03 20:26:55
468
原创 Spring Environment 的作用及属性详解
Spring的Environment接口是框架核心环境抽象,提供属性解析和Profile管理两大功能。它统一管理属性源(如系统属性、环境变量、配置文件)并按优先级查找,同时支持通过Profile实现不同环境下的Bean条件注册。开发者可通过Environment获取配置属性,判断当前环境,实现灵活的多环境配置管理。该接口还支持与@Value和@ConfigurationProperties注解集成,是Spring应用配置体系的核心组件。
2026-03-03 19:40:41
462
原创 spring 源码编译全流程详解
国外的地址下载非常慢,访问都访问不进去,直接使用csdn加速的地址,秒下。我这里是选择的如果不使用以上版本,注意spring版本与jdk板块对应关系1. 访问 Gradle 官网发行版页面,找到并下载与上一步的文件。2. 将 ZIP 解压到本地目录(如3. 配置系统环境变量指向该目录,并在Path中添加。完成后在命令行运行gradle -v验证是否成功在导入 IDEA 之前,需要进行两项重要调整,以避免后续编译问题。
2026-03-03 09:13:35
1751
原创 spring clound alibaba 之 nacos 服务端注册流程源码解析
服务注册 在上一章,我们说完了nacos客户端的自动注册流程,知道最后是客户端向服务端发送注册请求,完成了客户端的注册流程。 之前发送的URL: curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080',根据这个url,我们在服务端代码中找到对应方法 看上图,首先获取到服务的命名...
2021-04-09 16:16:18
526
原创 spring clound alibaba之spring clound 如何集成的nacos 、完成向服务端注册流程源码解析
说到spring clound 是如何集成 spring clound alibaba 的,就绕不开spring 的事件发布机制,没错,spring 是通过它的事件发布机制来集成 spring cloung alibaba nacos, 从而实现服务向nacos 注册的。JDK对事件监听机制的支持 spring 的事件发布机制的根本原理是基于 观察者模式实现的,在jdk的基础jar包中,提供的观察者模式的最基本实现。它提供了两个基础类。 EventObje...
2021-04-06 16:56:10
470
原创 设计模式之单例模式
在平常的编程中,有一些对象我们只需要一个,比如:线程池、缓存、日志对象,对于这类对象,我们只需要它在全局中存在一份,如果存在多份,就会发生不可预知的问题。这个时候,单例模式就可以非常好的解决这类问题。 单例模式主要分为两种,懒汉式和饿汉式。 正如其名一样,懒汉式就是程序比较懒,一开始不初始化好对象,等我需要的时候,我才去初始化它。而饿汉式呢,则是这个对象急需使用,一开始就初始化好了,等我要用的时候直接用就行了。转存...
2020-12-02 14:40:55
206
原创 spring clound 项目 @FeignClient 上加 @RequestMapping 注解远程调用报错解决
问题描述: 公司同事发现在 @FeignClient上配置 @RequestMapping 注解后导致远程调用不通,同时本模块在 swagger上会出现远程调用的接口,但是这个接口其实不应该展示在本模块 swagger接口目录上的。 写法如下: 然后改成下面这种写法就可以调用成功了 然后说@FeignClient 应该是不支持 @RequestMapping 注解,但是我觉得不太应该,我记得在之前项目也用过类似写法,刚刚我比较空闲一点...
2020-10-15 14:11:23
7364
原创 在spring boot项目中集成 Swagger2 文档
前言官方描述文档地址 :http://springfox.github.io/springfox/docs/current/官方api地址 :http://springfox.github.io/springfox/javadoc/current/1. 引入maven依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</.
2020-05-28 17:19:13
355
原创 linux环境下mongodb启动报错 :Job for mongodb.service failed because the control process exited with error
使用在启动mongodb 时报如下错误:Job for mongodb.service failed because the control process exited with error code. See "systemctl status mongodb.service" and "journalctl -xe" for details.[root@jt-server1 mon...
2020-02-25 11:58:47
13813
原创 linux环境下mongoDB的安装与配置
第一步 下载mongoDB官网下载地址:https://www.mongodb.org/dl/linux/x86_64下载合适的版本可以在linux命令行通过命令下载:
2020-02-25 11:44:02
264
转载 BAT会看上哪样的中小公司程序员?
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入是大大说欢...
2019-03-08 17:53:55
287
转载 BAT会看上哪样的中小公司程序员?
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入是大大说欢...
2019-03-08 17:53:55
808
原创 项目中遇到的数字和字符类型数字比较的坑
今天在项目中,遇到一个非常奇怪的问题,如图: 两张表关联查询,用了on条件,为什么会查出来多余的数据呢,且id和business_key 查出来的值不一样。找了很久原因,才发现,businesskey类型建成了varchar类型,就一个是数字类型,一个是字符串类型,导致了关联出来不一样的数据,把businesskey的类型改为数字类型,sql正常了。...
2019-03-05 17:09:05
609
spring-framework-v5.3.37 编译成功源码
2026-03-03
mercurial-4.3.1.win-amd64-py2.7.msi
2019-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅