摘要: 常见的垃圾收集器分为串行、吞吐量优先和响应时间优先三种。 串行:Serial 设置参数为 -XX:+UseSerialGC = Serial + SerialOld,Serial分为两种,Serial工作在新生代,使用复制算法;SerialOld工作在老年代,采用标记整理算法。 假设有4核CPU运行 阅读全文
posted @ 2020-07-25 19:06 今天你做题了吗 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 这篇随笔梳理一下Java并发编程的一些基础概念。包括同步异步、进程线程、并发并行。 同步和异步是指方法的调用,我们用一张图来形容: 同步方法一旦调用后,调用者必需等方法执行完毕后才能进行后续的行为; 异步方法一旦被调用则会立即返回,调用者可以继续后面的行为,异步方法一般会在另外一个线程中执行;如果异 阅读全文
posted @ 2020-07-23 17:07 今天你做题了吗 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 为了保证顺序性,每一个包都有一个 ID。在建立连接的时候,会商定起始的 ID 是什么,然后按照 ID 一个个发送。假设A发给B的数据流由一个500 000字节的文件组成,MSS为1000字节。数据流的首字节ID为0,那么TCP会将这个文件分为500个报文段,每一个报文段的首部序号字段中分别为0、10 阅读全文
posted @ 2020-07-21 10:20 今天你做题了吗 阅读(1981) 评论(0) 推荐(0) 编辑
摘要: TCP协议同样是运输层的协议,掌握TCP重点要关注这几个问题:顺序问题、丢包问题、连接维护、流量控制、拥塞控制。先解析下TCP报文段结构,相比于UDP要复杂很多。 首先还是两个端口号,对应着具体的应用进程。 序号指的是包的序号,为了解决包乱序问题。 发出去的包应该有确认,如果接收方没有收到就应该重新 阅读全文
posted @ 2020-07-19 19:39 今天你做题了吗 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 运输层位于网络层之上,网络层提供了主机之间的逻辑通信;而运输层为运行在不同主机上的应用进程之间提供了逻辑通信。从应用程序角度看,通过逻辑通信,运行不同进程的主机好像直接相连一样。应用进程使用运输层提供的逻辑通信功能来发送报文,无需考虑承载这些报文的物理基础设施的细节,就像我们知道的透明传输。 UDP 阅读全文
posted @ 2020-07-17 14:42 今天你做题了吗 阅读(1718) 评论(0) 推荐(0) 编辑
摘要: 数据链路层主要关注三个问题: 这个包是发给谁的?谁应该接收? 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则? 如果发送的时候出现了错误,怎么办? 数据链路层也称为MAC(Medium Access Control)层,即媒体访问控制。控制在往媒体上发数据的时候,谁先发、谁后发的问题,防止顺 阅读全文
posted @ 2020-07-16 16:15 今天你做题了吗 阅读(454) 评论(0) 推荐(0) 编辑
摘要: JDK1.8中StringTable的底层类似于HashTable,由数组和链表实现,数组又称为桶数组。比如有这样一段代码: public class Demo4 { public static void main(String[] args) { int i = 0; System.out.pri 阅读全文
posted @ 2020-07-15 20:18 今天你做题了吗 阅读(853) 评论(0) 推荐(0) 编辑
摘要: 学习JVM的时候经常会遇到各种常量池,不同版本的JDK它们的存储位置也不同,这篇随笔就整理下几种常见的常量池,以JDK1.8为主。先看一张存储示意图,里面涉及1.8和1.6。 常量池是存储在方法区中的,比如我们有这样一段代码: public class Demo { public static vo 阅读全文
posted @ 2020-07-14 23:05 今天你做题了吗 阅读(399) 评论(0) 推荐(0) 编辑
摘要: IP地址是一个网卡在网络世界里的通讯地址,相当于我们家里的门牌号码。这样类比的话,很显然ip地址是唯一的。在windows系统中,我们可以使用 ipconfig 命令查看本机的ip地址相关信息: 图中 10.17.191.222就是本机ip地址,地址的大小为32bit,这个地址被分为四个部分,也就是 阅读全文
posted @ 2020-07-12 14:37 今天你做题了吗 阅读(1891) 评论(0) 推荐(0) 编辑
摘要: 我们知道堆中存放的是对象,对象不被引用就会被垃圾收集回收掉。但是如果对象一直存在强引用,那么就会一直存活,当存活对象达到一定数量时,就会把堆内存占满,从而发生堆内存溢出错误。比如有这样一段代码:逻辑是每次都往集合中添加一个字符串对象,然后字符串进行一次拼接。 public class Demo1 { 阅读全文
posted @ 2020-07-10 21:16 今天你做题了吗 阅读(110) 评论(0) 推荐(0) 编辑