
java
文章平均质量分 69
奔跑的蜗牛...
这个作者很懒,什么都没留下…
展开
-
org.apache.commons.io.FileUtils.writeStringToFile写入文件失败
org.apache.commons.io.FileUtils.writeStringToFile写入文件失败原创 2022-12-01 15:28:03 · 1209 阅读 · 0 评论 -
spring源码aop解析xml生成bean定义信息
spring面向切面编程是咱们工作中使用比较频繁的一项技术,比如:日志、事务、表单重复提交等了解aop之前需要先了解几个概念什么是aspect :切面什么是连接点:切面方法切入点表达式:用于过滤目标方法的过滤器什么是织入:所有切面方法的总称什么是目标方法:被代理的对象方法看下AOP处理器public class AopNamespaceHandler extends NamespaceHandlerSupport { @Override public void init() {原创 2022-05-10 17:51:10 · 258 阅读 · 0 评论 -
spring源码如何解决循环依赖
到这里咱们IOC简单流程基本上算结束了,但是有一个非常火热的解决方案值得咱们深入了解下,那就是循环依赖下面咱们从这三个维度去分析:什么是循环依赖?造成循环依赖的原因是什么?spring是怎么解决的循环依赖?最后演示下流程什么是循环依赖?咱们都知道,spring创建bean分为实例化、填充属性、初始化等,当对象完成实例化后开始给属性赋值,这时咱们再去想一个场景,如果一个对象A有属性B b,对象B有一个属性是A a,咱们设想下,spring开始创建A对象对,然后给A对象的属性b进行赋值,那么这原创 2022-05-06 00:03:23 · 591 阅读 · 0 评论 -
spring源码注册需要销毁的bean registerDisposableBeanIfNecessary
前篇文章传送门咱们上篇了解bean的初始化,大家可以想下,bean为什么要销毁?用完不再使用的bean指定了destroy方法的bean执行destroy方法容器关闭spring把需要销毁的bean注册到哪里呢?disposableBeans = new LinkedHashMap<>();在何时进行销毁的?registerDisposableBeanIfNecessary 注册需要被销毁的beanprotected void registerDisposableBeanI原创 2022-05-05 11:21:41 · 238 阅读 · 0 评论 -
spring源码执行bean的init方法 initializeBean
前篇文章传送门前两篇了解了bean的属性性赋值,这个过程如果字段是引用类型的对象,那么spring会去工厂中查找,如果查找不到,再去执行工厂创建bean的那套流程,现在属性赋值完成了后,接下来开始执行init方法了。那么执行init方法前后会做哪些事情呢?invokeAwareMethods Aware接口是做什么的?postProcessBeforeInitialization 作用是什么?什么时候执行init方法?applyBeanPostProcessorsAfterInitializa原创 2022-05-04 14:22:13 · 1767 阅读 · 0 评论 -
spring源码合并bean定义信息 applyMergedBeanDefinitionPostProcessors
上篇咱们聊到了bean实例的创建,按照流程图上面接下来应该进行属性填充了。这在里咱们思考一个问题,咱们@Autowired,@Value,@Resource,@PostConstruct,@PreDestroy是什么时候处理的呢,假如xml中配置了,注解也配置了,应该怎么处理呢?AutowiredAnnotationBeanPostProcessor 处理@Autowired和@Value注解bean定义信息CommonAnnotationBeanPostProcessor 处理@Resource、@原创 2022-04-25 23:52:07 · 792 阅读 · 0 评论 -
记录短信模块系统设计,采用redis队列(SMS)
本章内容是完整流程,只对粉丝开放背景随着系统用户越来越多,业务流程越来越完善,但同时也暴露出了一些问题,比如,关键的流程节点用户比较关注,可能会涉及到时效性,用户只有登录到系统才能看到流程阶段信息。为了解决流程关键节信息差,时效性差等问题,项目决定对接短信。业务模块:目前项目业务模块分为三个部分,以后有可能会增加其他模块。AA 模块BB 模块CC 模块表设计sms_config:短信配置表,用于存储短信提供方模板标识和占位符参数获取方法sms:短信表,用于存储短信内容相关信息原创 2022-04-22 22:02:55 · 1813 阅读 · 0 评论 -
spring源码实例化bean createBeanInstance
前篇文章传送门上篇咱们聊到了doCreateBean方法,在里面了解到先进行获取bean的实例,然后给属性赋值,再调用bean的初始化方法,如果需要的话会把bean注册到销毁容器中。接下来咱们了解下实例化的流程spring实例化有哪些方式可以试想下,如果让咱们自己实现实例化bean,会如何做?通过supplier通过FactoryBean通过构造方法(反射)…源码protected BeanWrapper createBeanInstance(String beanName, Root原创 2022-03-24 22:46:05 · 607 阅读 · 0 评论 -
spring源码实例化剩余的bean finishBeanFactoryInitialization
前篇文章传送门咱们前面了解了spring容器创建,然后加载了bean的定义信息,执行了BDRPP,执行了BFPP,注册了BPP,前面的这么多步骤,就是为了创建Bean实例并初始化,接下来咱们了解剩下的流程概括咱们都知道,前面的步骤创建了很多内部使用的bean,但是真正咱们使用bean大部分没有创建,为什么说大部分呢,因为BDRPP、BFPP、BPP这个时间已经创建完了,并且BFPP已经执行完了。说了这么多没用的,咱们看下剩下的流程吧getBeandoGetBeangetSingletoncr原创 2022-03-22 00:00:42 · 444 阅读 · 0 评论 -
Postgresql适配国产化人大金仓(kingbase)
背景为推进国产技术的发展,公司部分项目实行软件国产化目标由原来的centos改为UOS,服务器及软件全部替换适配计划1、国产化环境搭建2、原数据库字段长度扩容3、数据库数据迁移4、文件迁移适配步骤1、国产化环境搭建(略)2、原数据库字段长度扩容(略)长度扩容原因:原数据库中文占一个字符,kingbase占三个字符提前扩容避免了哪些问题?1、数据无法导入到目标库2、索引文件有效 3、避免其他问题出现3、数据库数据备份首先需要了解库和模式的关系一个数据库下有多个模式在目原创 2021-11-23 12:44:30 · 8972 阅读 · 2 评论 -
JVM简介
JVM内存模型通俗的讲JVM就是一个虚拟机。编译和运行文件的一种软件。栈:线程私有的,创建线程虚拟机会分配默认的空间。堆:对象存放的空间。本地方法栈:native method。程序计数器:线程嵌套调用方法会存放数据,这时栈帧数据是以队栈的方式存储(FILO)。元空间:1.8后静态成员存放位置,1.8之前是永久代。JVM分哪些部分(个人认为分五部分)类加载器类加载器就是把类文件加载到虚拟机中,也就是说通过一个类的全限定名来获取描述该类的二进制字节流。内存管理规定了线程和内存之间的一原创 2021-10-14 23:36:09 · 188 阅读 · 0 评论