摘要: 网络IO 我们自己的程序去进行网络io都是通过内核的系统调用实现的。这里介绍几个必须的linex c指令: socket 创建一个socket对象,并返回其文件描述符 bind 绑定一个socket和对应的端口号 listen socket开始监听 recv socket开始接受数据 同步IO 同步 阅读全文
posted @ 2020-12-04 15:23 刃牙 阅读(105) 评论(0) 推荐(0) 编辑
摘要: LRU LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。 实现方式 1.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间 阅读全文
posted @ 2020-12-01 14:15 刃牙 阅读(247) 评论(0) 推荐(0) 编辑
摘要: Array.sort() 核心思路 根据不同的情况,选择不同的排序算法。 1、当需要排列的元素较少的时候,采用普通的插入排序 当被排序的数组长度小于47但排序不是从数组起始位置开始的时候,那么就会选择哨兵插入排序的方式进行排序。 这种情况主要是当sort被双基准快排递归调用的时候才会使用 2、如果元 阅读全文
posted @ 2020-11-26 18:57 刃牙 阅读(1254) 评论(0) 推荐(0) 编辑
摘要: wait和notify实现 注意点 1、wait方式是让当前持有锁的线程进入等待队列(不是阻塞队列),调用了wait方法后,当前线程就不会执行wait之后的代码逻辑了,所以notify方法必须在wait方法之前。 等待队列和阻塞队列的区别 对于每个对象来说,都有自己的等待队列和阻塞队列。 2、需要在 阅读全文
posted @ 2020-11-24 14:25 刃牙 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 常见的情况 当我们向方法中传递参数的时候,有时会向方法里传递基本类型的数据,可能会传递引用类型的数据。 在方法里可能会对这个传递参数进行修改,但是不知道会不会对方法外的值造成影响。 通过以下例子则可以完全不再困惑。 /** * 值传递和引用传递 */ public class Test { pub 阅读全文
posted @ 2020-11-24 14:21 刃牙 阅读(100) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal 引用类型 强引用 我们普通的一个对象关系就是强引用。 只有当引用的对象被标记为垃圾的时候才回收。 Object o = new Object(); GC调优经历 在一次上线的项目中,发现应用频繁出现fullGC和运行一段一段时间后,出现out of memory,后面通过排查 阅读全文
posted @ 2020-11-23 19:57 刃牙 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 可见性 可见性产生的原因 硬件层面 CPU的执行速度远远大于从主存读取的速度,所以为了尽可能弥补主存的读取这一瓶颈,在CPU和主存之际还有一层高速cache。现在大多都是多核cpu,每个核独有一个cache。 所以当运行在一个核上的一个线程对一个变量进行修改后,其实最先修改的是当前cache里的值, 阅读全文
posted @ 2020-11-22 18:15 刃牙 阅读(183) 评论(0) 推荐(0) 编辑
摘要: TTC和XA/JTA对比 XA是资源层面的分布式事务,强一致性,在两阶段提交过程中,会一直持有锁资源。 TCC是业务层面的分布式事务,最终一致性,不会一直持有资源的锁。 阅读全文
posted @ 2020-11-18 19:34 刃牙 阅读(107) 评论(0) 推荐(0) 编辑
摘要: @Transaction注解失效 1、加@Transaction的方法必须是public,否则失效 2、在同一个类里,两个@Transaction方法直接嵌套调用会失效 A方法调用B方法,B方法加上@Transaction注解,如果A,B方法在同一个类里,则方法B的@Transaction注解失效。 阅读全文
posted @ 2020-11-16 19:50 刃牙 阅读(3223) 评论(0) 推荐(0) 编辑
摘要: 编程式事务 @Service public class UserService2 { @Autowired private PlatformTransactionManager manager; public void test() { TransactionDefinition definitio 阅读全文
posted @ 2020-11-16 19:08 刃牙 阅读(622) 评论(0) 推荐(0) 编辑