摘要:
一、netstat 系列 netstat -tn | awk '{print $6}' | sort | uniq -c 这个命令由几个部分组成,每一部分都完成特定的任务,最终的目的是统计网络连接的状态。我们可以将其分解成以下几部分: netstat -tn: netstat 是一个用于显示网络连接 阅读全文
摘要:
简介 mybatis的启动入口一般有两个,在结合spring框架后由spring整合包下的SqlSessionFactoryBean启动 如果没有整合spring,则有XMLConfigBuilder启动 这两个启动入口都会初始化Configuration对象,该对象是mybatis配置文件的对象形 阅读全文
摘要:
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。 为了确保分布式锁可用,至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能 阅读全文
摘要:
连接成功建立后,客户端是如何向服务端发送请求的? 由于内部源码的调用过于复杂,我们只分析有代表性的代码。在 AbstractChannel 类中我们可以看到: wirte() 方法最后会把发送的数据 msg 放入 addMessage() 方法中,这个方法是做什么的呢? 原来把要发送数据放入一个缓冲 阅读全文
摘要:
为了接收连接请求, Netty 服务端应该做些什么事情? 根据Java NIO 的知识,服务端在准备接收客户端连接之前做了下面几个工作,我们可以带着问题往下看。 服务端对连接请求是如何初始化的? 如何把用户定义的处理逻辑 childHandler 加入到 Netty 的处理流程里? 如何在 Sock 阅读全文
摘要:
Java NIO VS Netty 有了 Java NIO,而且 Netty 也是基于 Java NIO 实现,那么为什么不能直接用 Java NIO 来实现网络通信模块呢? 接下来我解释一下原因。 如果我们用 Java NIO 来开发网络通信组件,势必会直接面对很多网络通信的问题。比如,网络连接异 阅读全文