- 博客(5)
- 收藏
- 关注
原创 多线程并发问题总结
多线程并发要保证安全需要满足可见性,有序性,原子性。在并发优化过程中会出现缓存一致,指令重排序等问题,在出现对应并发不安全问题时要如何处理? 首先看下并发优化演进过程: 多cpu之间有各自的缓存,在多线程环境,不同cpu之间的缓存会有缓存不一致的问题。这个问题不满足并发安全的可见性要求。操作系统可以通过总线锁和缓存一致性协议保证缓存一致性。 总线锁性能低。 缓存一致性协议有MESI、MOSI协议等,MESI表示缓存行的4中状态。 M:modify,修改状态。该缓存行数据有效,数据修改了,和内存中的
2021-09-12 19:45:50
214
原创 spring的bean的生命周期
spring的Bean的生命周期大体步骤 实例化容器 扫描类文件 解析某个类 实例化BeanDefinition,可以配置Lazy,Scope,dependOn,Class,beanName等 方式BeanDefinitionMap 调用实现了BeanFactoryPostProcesser方法。下面两个执行步骤都是在容器实例化之前。 先执行BeanDefinitionRegistryPostProcessor实现的postProcessBeanDefinitionRegistry方法,该方法可以获取到
2021-09-12 13:02:58
133
原创 Mybatis整合到spring原理
Mybatis整合到spring SqlSessionTemplate整合 spring提供SqlSessionTemplate类,用于在spring中注入该类实例进行sql操作。该类实现了SqlSession接口,直接调用sqlSession的方法用于执行sql,该类持有SqlSessionFactory类,每次执行方法都会创建新的sqlSession。 SqlSessionTemplate类结构如下图。其中SqlSessionInterceptor是内部动态代理类,sqlSessionProxy代理对
2021-09-12 11:54:51
123
原创 Mybatis执行过程
Mybatis提供了如下特性 使用连接池对连接进行管理。 SQL和代码分离,集中管理。 参数映射和动态SQL。 结果集映射。 缓存管理。 重复SQL提取<sql> 插件机制。 执行过程 执行过程图解,图片来自网络 执行过程文字描述 涉及的代码展示版本为Mybatis3.5.4 解析配置文件得到Configuration 解析配置文件,每个sql语句标签对应一个MappedStatement 每个namespace对应一个MappProxyFactory,存入MapperRestry中的
2021-09-11 21:45:38
258
原创 雪花算法-java实现
雪花算法用途 用来保证分布式环境生成ID唯一。 雪花算法实现 雪花算法用64位二进制表示,其中二进制位数作用划分为: 1bit:符号位,无使用 41bit:时间位,用于表示毫秒可以使用69年 10bit:机器位,用来区分不同的机器环境 12bit:序列位,用来表示同一毫秒的不同序列,同一毫秒的并发数。 上面位数划分不是固定的,可以自定义划分,如: 1bit:符号位,无使用 41bit:时间位,用于表示毫秒 5bit:机器位 7bit:业务位,用来区分不同业务 10bit:序列位 雪花算法实现注意事项
2021-06-22 17:32:02
898
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人