@PanLiu Netty官网和社区都引用了闪电侠一系列的文章,说明他对Netty理解还是比较正确的,没你嘲笑的那么不堪。
《跟闪电侠学Netty》开篇:Netty是什么?在开始了解Netty是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现? IO编程 我们简化下场景:客户端每隔两秒...
@PanLiu Netty官网和社区都引用了闪电侠一系列的文章,说明他对Netty理解还是比较正确的,没你嘲笑的那么不堪。
《跟闪电侠学Netty》开篇:Netty是什么?在开始了解Netty是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现? IO编程 我们简化下场景:客户端每隔两秒...
这个ABA的测试代码应该不是对的吧,你这个不存在ABA的问题,而是就是正常的一个线程使用完资源,另外一个线程接着使用,没有存在任何逻辑上的问题。正确的ABA问题是:
线程 1 从内存位置V中取出A。
线程 2 从位置V中取出A。
线程 2 进行了一些操作,将B写入位置V。
线程 2 将A再次写入位置V。
线程 1 进行CAS操作,发现位置V中仍然是A,操作成功。
正确的ABA问题是:线程1从内存取到了V但是还没有开始比较,CPU的时间片用完了,然后,CPU时间片分给了线程2使用,线程2捣鼓了一下V,从A变成B,之后又从B变成了A。接着线程1拿到了CPU的时间片,开始比较V,一看正好是A,所以就开始拿到锁了。
并不是很实用啊,复杂项目用这个不靠谱,小项目直接用mybatisplus,使用idea的 mybatisCodeHelper插件也可以直接类似jpa一样在dao接口使用规范的命名通过快捷键在xml自动生成sql,然后根据需要优化,这样更灵活。
SpringData--简介(一)一、SpringData简介 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ Spr...