摘要: 我们以 SSH 协议举例,通常在 SSH 连接中,单次击键就会引发数据流的传输。如果使用 IPv4,一次按键会生成约 88 字节大小的 TCP/IPv4 包(使用安全加密和认证):20 字节的 IP 头部,20 字节的 TCP 头部(假设没有选项),数据部分为 48 字节。这些小包(称为微型报(tinygram))会造成相当高的网络传输代价。也就是说,与包的其他部分相比,有效的应用数据所占比例甚微。 阅读全文
posted @ 2021-02-05 10:41 周二鸭 阅读(2969) 评论(0) 推荐(0) 编辑
摘要: 一、Zookeeper集群 Zookeeper可以配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据都是相同的,每一个服务器均可以对外提供读和写的服务,这点和Redis是相同的,即对客户端来说每个服务器都是平等的。 在集群中,需要一个Leader来完成处理事务,协调Zo 阅读全文
posted @ 2021-01-23 23:01 周二鸭 阅读(1060) 评论(0) 推荐(2) 编辑
摘要: 早期的计算机中由于CPU和内存的速度是差不多的,所以CPU是直接访问内存地址的。而在现代计算机中,CPU指令的运行速度远远超过了内存数据的读写速度,为了降低这两者间这高达几个数量级的差距,所以在CPU与主内存之间加入了CPU高速缓存。 阅读全文
posted @ 2020-12-18 08:39 周二鸭 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 首先Java里的线程利用的线程模型是KLT,这带来了许多好处,比如线程的阻塞不会带来进程的阻塞,能更加高效地利用CPU的资源等。但这也意味着在Java里的线程的创建和销毁是一个相对偏且消耗资源的操作... 阅读全文
posted @ 2020-12-11 08:16 周二鸭 阅读(412) 评论(0) 推荐(1) 编辑
摘要: 一、静态代理&动态代理 1. 静态代理 我们先假设现在有怎么一个需求,要求你在不改动原有代码的情况下在所有类的方法前后打印日志。我们很容易想到静态代理,具体做法如下: 为现有的所有类都编写一个对应的代理类,并且还需要让代理类与原有类实现相同的接口; 在创建代理对象时,通过构造器传入一个目标对象,然后 阅读全文
posted @ 2020-12-10 22:55 周二鸭 阅读(383) 评论(0) 推荐(0) 编辑
摘要: HTTP全称`Hyper Text Transfer Protocol`,即超文本传输协议。HTTP是一个应用层协议,可视为一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。 阅读全文
posted @ 2020-12-10 08:33 周二鸭 阅读(2109) 评论(0) 推荐(0) 编辑
摘要: 一、饿汉单例 1. 静态变量实现 public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInsta 阅读全文
posted @ 2020-12-09 23:02 周二鸭 阅读(244) 评论(0) 推荐(0) 编辑
摘要: TCP是面向连接的协议,这是因为在一个应用进程可以开始向另一个应用进程发送数据之前,这两个进程必须先相互“握手”,即它们必须相互发送某些预备报文段,以建立确保数据传输的参数。 阅读全文
posted @ 2020-12-09 21:47 周二鸭 阅读(9744) 评论(1) 推荐(2) 编辑
摘要: Redis经常用于系统中的缓存,这样可以解决目前IO设备无法满足互联网应用海量的读写请求的问题。 一、缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起id为-1的数据或者特别大的不存在的数据。有可能是黑客利用漏洞攻击从而去压垮应用的数据库。 1. 常见解决方案 对于缓存穿 阅读全文
posted @ 2020-12-09 08:25 周二鸭 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 从不同角度分析垃圾收集器,可以将其划分为不同的模型。按线程数分,可以分为串行垃圾回收器和并行垃圾回收器;按照工作模式分,可以分为并发式垃圾回收器和独占式垃圾回收器; 阅读全文
posted @ 2020-12-09 00:14 周二鸭 阅读(655) 评论(0) 推荐(0) 编辑