摘要: 一:通过静态工厂配置Bean 建立Student.java 建立静态工厂StaticStudentFactory.java 通过静态工厂方法配置Bean 注意的是:因为静态方法getStudent(String name);有个参数,则在配置的时候需要<constructor-arg>来指定valu 阅读全文
posted @ 2019-10-28 14:24 DC红茶 阅读(253) 评论(0) 推荐(0) 编辑
摘要: SpringIOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行特定的任务! Spring IOC容器对Bean的生命周期进行管理的过程: -通过构造器或者工厂方法创建Bean实例 -为Bean的属性设置值和对其他Bean的引用 -调用Bean的初始化方法 -Bean 阅读全文
posted @ 2019-10-26 19:53 DC红茶 阅读(240) 评论(0) 推荐(0) 编辑
摘要: Netty锁事的五个关键点: ① 在意锁的对象和范围 --> 减少粒度 ② 注意锁的对象本身大小 --> 减少空间占用 ③ 注意锁的速度 --> 提高速度 ④不同场景选择不同的并发类 -->因需而边 ⑤衡量好锁的价值 --> 能不用则不用 接下来按个看看: ①:在Netty的ServerBootst 阅读全文
posted @ 2019-10-23 19:50 DC红茶 阅读(514) 评论(0) 推荐(0) 编辑
摘要: Atomic long 和long: 前者是一个对象,包含对象头(object header)以用来保存hashcode、lock等信息,32位系统占用8个字节,64位系统占16个字节,所以在64位系统的情况下: * volatile long = 8 bytes *AtomicLong = 8 b 阅读全文
posted @ 2019-10-23 13:49 DC红茶 阅读(2340) 评论(0) 推荐(0) 编辑
摘要: 对竞争的态度:乐观锁(java.util.concurrent包中的原子类)与悲观锁(Synchronized) 等待锁的人是否公平而言:公平锁(new ReentrantLock(true))与非公平锁(new ReentrantLock()) 是否可以共享: 共享锁和独享锁;ReadWriteL 阅读全文
posted @ 2019-10-23 13:24 DC红茶 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 公司今天有个需求,大体意思就是把一个表的玩家游戏场数统计出来,然后赋值到另一张表的字段上,说白了就是两张表,但是查询出来的玩家账号和次数是多条,尝试很多种写法都没用,最后用了最笨的方式解决。 结果如下,这是查询的数据: 这是更新第二张表的数据: 至此,解决了问题! 我只想做的更好,仅此而已 阅读全文
posted @ 2019-10-21 14:24 DC红茶 阅读(5652) 评论(0) 推荐(0) 编辑
摘要: 既然TCP有了keepalive,应用层还需要Keepalive多此一举吗? 显然是不是的,首先协议分层思想,每层的关注点不同,TCP属于传输层,关注“通”,应用层关注是否能“用”,能“通”不一定能“用”,其次TCP层的Keepalive是默认关闭的,TCP层的keepalive时间太长,如果走默认 阅读全文
posted @ 2019-10-17 16:37 DC红茶 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 参考文献:极客时间傅健老师的《Netty源码剖析与实战》Talk is cheap.show me the code! Netty对编解码的支持 打开Netty的源码,它对很多的编码器都提供支持,如图 随便点开一个看看,比如bytes包下的ByteArrayDecoder.java 可以看出Byte 阅读全文
posted @ 2019-10-17 15:23 DC红茶 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 参考文献:极客时间傅健老师的《Netty源码剖析与实战》Talk is cheap.show me the code! 上一篇随笔说了解决TCP粘包、半包的一次解码器都是继承的ByteToMessageDecoder,而ByteToMessageDecoder主要是将原始数据流(可能存在粘包、半包问 阅读全文
posted @ 2019-10-17 14:32 DC红茶 阅读(648) 评论(0) 推荐(0) 编辑
摘要: 上一篇随笔中已经介绍了解码核心工作流程,里面有个数据积累器的存在(Cumulator),其实解码中有两种Cumulator,那他们的区别是什么呢? 还是先打开ByteToMessageDecoder的channelRead(); 点进去查看cumulate()实现 又是一个抽象方法,看实现不难发现它 阅读全文
posted @ 2019-10-16 17:24 DC红茶 阅读(1130) 评论(0) 推荐(0) 编辑