![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
理论概念
礞石
这个作者很懒,什么都没留下…
展开
-
java中锁的优化 -- JVM对synchronized的优化
1)锁消除概念:JVM在JIT编译(即时编译)时,通过对运行上下文的扫描,去除掉那些不可能发生共享资源竞争的锁,从而节省了线程请求这些锁的时间。举例: StringBuffer的append方法是一个同步方法,如果StringBuffer类型的变量是一个局部变量,则该变量就不会被其它线程所使用,即对局部变量的操作是不会发生线程不安全的问题。 在这种情景下,JVM会在JIT编译时自动将append方法上的锁去掉。2)锁粗化概念:将多个连续的加锁、解锁操作连接在一起,扩展成一个范围更大的锁,即将加原创 2021-04-12 10:48:36 · 74 阅读 · 0 评论 -
@RefreshScope 刷新机制实现流程
1、需要动态刷新的类标注@RefreshScope 注解2、@RefreshScope 注解标注了@Scope 注解,并默认了ScopedProxyMode.TARGET_CLASS; 属性,此属性的功能就是在创建一个代理,在每次调用的时候都用它来调用GenericScope get 方法来获取对象3、如属性发生变更会调用 ContextRefresher refresh() -》RefreshScope refreshAll() 进行缓存清理方法调用,并发送刷新事件通知 -》 GenericScope原创 2021-04-09 11:08:29 · 1039 阅读 · 0 评论 -
MySQL间隙锁讲得比较好的一篇
事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性,简称 ACID,缺一不可。今天要说的就是隔离性。脏读脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读。可重复读可重复读指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据都是一致的。通常针对数据更新(UPDATE)操作。不可重转载 2021-03-30 20:03:16 · 135 阅读 · 0 评论 -
代码/数据库/接口规范
1、循环体中的sql或RPC操作尽可能改为批量,减少IO创建关闭次数;2、方法中优先判断可以退出的分支,尽量减少代码缩进;3、使用枚举和常量,尽量避免魔法值;4、尽量避免代码重复,提取公共方法,提高可读性与维护便利性;5、命名避开关键字(is)...原创 2020-05-20 14:51:05 · 325 阅读 · 0 评论 -
重写equals、hashCode,及Lombok中关于@Data的使用
1、为什么要重写equals()方法?先看Object类中的一段源码:public boolean equals(Object obj) { return (this == obj); }我们需要的效果是值比较,而Object类的equals比较规则就是比较两个对象的内存地址,达不到我们预期的效果,所以我们要重写equals()方法。Integer的equals(...原创 2020-04-02 15:55:58 · 6405 阅读 · 2 评论 -
异步消息MQ
消息中间件一、rocketmq生产者集群name server:Name Server 为 producer 和 consumer 提供路由信息broker:Broker 接收来自生产者的消息,储存以及为消费者拉取消息的请求做好准备消费者集群RocketMQ执行流程1、启动 Namesrv,Namesrv起 来后监听端口,等待 Broker、Producer、Consumer 连上来...原创 2020-03-09 15:54:48 · 71 阅读 · 0 评论 -
搜索引擎ElasticSearch基础及性能优化
搜索1、ElasticSearch爬取分词创建倒排索引(反向索引)索引矩阵封装lucene,提供restful api索引:类似mysql的数据库类型:表文档:行创建:创建索引Poems创建类型Poem通过 Mapping定义类型Keyword 类型是不会分词的,直接根据字符串内容建立反向索引,Text 类型在存入 Elasticsearch 的时候,会先分词,然后根据分...原创 2020-03-09 15:54:16 · 165 阅读 · 0 评论 -
HashMap你要知道的几件事
HashMap1.7及以前:数组+链表 头插法1.8及以后:数组+链表+红黑树 尾插法初始容量是2的指数次幂负载因子0.75位运算>取模运算线程不安全?数据丢失、死锁1.7:指针next:扩容形成环,造成死锁1.8:低位指针 & 扩容前的数组size = 0,高位指针 & 扩容前的数组size = 1,区分组别链表转红黑树,当数组size<6...原创 2020-03-09 15:51:24 · 70 阅读 · 0 评论 -
事务的一些理论概念
一、本地事务:1、事务特性原子性一致性持久性隔离性2、传播机制1、REQUIRED如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)2、SUPPORTS假设当前在事务中。即以事务的形式执行。假设当前不在一个事务中,那么就以非事务的形式执行3、MANDATORY必须在一个已有的事务中执行,否则抛出异常4、REQUIRES_NEW不管是否存在事务,都创建一个新的事...原创 2020-03-09 15:49:37 · 175 阅读 · 0 评论 -
线程的几件事
一、线程顺序执行1、thread.join2、通过倒数计时器CountDownLatch实现3、创建单一线程池Executors.newSingleThreadExecutor()4、通过信号量机制控制Semaphore二、线程池常用参数1、核心线程数:corePoolSize2、最大线程数:maxPoolSize3、空闲线程存活时间:keepAliveTime4、空闲线程存活时...原创 2020-03-09 15:48:34 · 79 阅读 · 0 评论 -
锁的几件琐事
一、synchronized:对象头monitorentermonitorexit支持重入自旋锁偏向锁轻量级锁(Mark Word)重量级锁ReentrantLock:Lock接口:通过volatile修饰int型变量,并保证每个线程都能拥有int的可见性和原子修改,本质是AQS双向链表存放线程ID二、差异:1、关键字和接口2、中断、超时、公平、读写、绑定条件3、Lock...原创 2020-03-09 15:47:27 · 135 阅读 · 0 评论 -
JVM内发生的十件事
0、最常用的JVM参数设置:-Xms: 初始堆大小,JVM 启动的时候,给定堆空间大小。-Xmx: 最大堆大小,JVM 运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。-Xmn:设置年轻代大小。整个堆大小=年轻代大小+年老代大小+持久代大小。持久代一般固定大小为 64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大, Sun 官方推荐配置为整个堆的 3/8。-Xs...原创 2020-03-09 15:45:31 · 74 阅读 · 0 评论 -
volatile 与 synchronized 区别
用一句话概括volatile,它能够使变量在值发生改变时能尽快地让其他线程知道.volatile详解:首先我们要先意识到有这样的现象,编译器为了加快程序运行的速度,对一些变量的写操作会先在寄存器或者是CPU缓存上进行,最后才写入内存.而在这个过程,变量的新值对其他线程是不可见的.而volatile的作用就是使它修饰的变量的读写操作都必须在内存中进行!volatile与synchronize...原创 2019-04-03 14:49:46 · 64 阅读 · 0 评论 -
概念
CQRS架构:命令查询的责任分离Command Query Responsibility Segregation (简称CQRS)模式是一种架构体系模式,能够使改变模型的状态的命令和模型状态的查询实现分离。这属于DDD应用领域的一个模式,主要解决DDD在数据库报表输出上处理方式。...原创 2019-05-14 16:15:15 · 106 阅读 · 0 评论 -
Java面试题
Java程序是如何运行的呢?:简书链接添加链接描述原创 2019-08-20 17:00:38 · 77 阅读 · 0 评论 -
有关注过开源社区吗,都看过哪些源码?
GitHub、Apache、开源中国、CodeProject、GoogleCode、Linux中文社区、51开源社区CSDN、博客园、简书原创 2019-09-16 11:00:39 · 567 阅读 · 0 评论 -
链路追踪、全链路监控、服务器大盘监控
OpenTracing:开放式分布式追踪规范大众点评catZipKinPinPoint服务器性能监控:zabbixELK:Elastic Eearch+Logstash+Kibana原创 2019-09-17 11:07:28 · 677 阅读 · 0 评论 -
线程池
Java中的ThreadPoolExecutor类:1、corePoolSize:核心池的大小2、maximumPoolSize:线程池最大线程数3、keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止4、unit:参数keepAliveTime的时间单位5、workQueue:一个阻塞队列,用来存储等待执行的任务6、threadFactory:线程工厂,主要用来创...原创 2019-09-18 17:26:20 · 116 阅读 · 0 评论 -
打造分布式数据库,常见数据库中间件
中间件:Cobar、Mycat分布式数据库:HBase原创 2019-09-20 14:38:41 · 113 阅读 · 0 评论 -
BIO、NIO和AIO的区别
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6543960.html 一:事件分离器 在IO读写时,把 IO请求 与 读写操作 分离调配进行,需要用到事件分离器。根据处理机制的不同,事件分离器又分为:同步的Reactor和异步的Proactor。 Reactor模型:- 应用程序在事件分离器注册 读就绪事件 和 读就绪事件处理器...转载 2019-01-23 16:55:31 · 143 阅读 · 0 评论