- 博客(23)
- 收藏
- 关注
原创 TCP协议拥塞控制
首先,说到拥塞控制,很多人就会和流量控制的概念混淆,所以我简单讲下两个机制的概念;:流量控制是为了控制发送方发送速率,保证接收方来得及接收。(接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。):拥塞控制是作用于网络的,防止过多的数据注入到网络中,避免网络负载过大(拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。)。
2022-10-08 19:55:11 1567 1
原创 浏览一个网站时的整个过程
在浏览器输入一个URL网址,按下回车时会发生什么?一、首先会将域名(URL网址)解析成IP地址;二、与目的主机建立TCP连接;三、发送与收取数据(浏览器与目的主机开始HTTP或HTTPS访问过程);四、与目的主机断开TCP连接;
2022-09-22 20:41:58 1093
原创 TCP协议与UDP协议的区别
(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于的传输层通信协议,由IETF的RFC 793定义;(User Datagram Protocol,用户数据报协议)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是的正式规范。UDP在IP报文的协议号是17;
2022-09-22 20:05:18 821
原创 创建对象在堆区分配内存的过程
编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。从 JDK 1.7 开始已经默认开启逃逸分析,如果某些方法中的对象引用没有被返回或者未被外面使用(也就是未逃逸出去),那么对象可以直接在栈上分配内存。),然后将当前正在使用的空间完全清除,交换两块空间的使用状态。Java 世界中“几乎”所有的对象都在堆中分配,但是,随着。所管理的内存中最大的一块区域,被所有线程共享的一块内存区域。的时候,它们将存活的对象复制到未使用的。
2022-09-19 00:22:40 220 1
原创 CopyOnWriteArrayList
COW。这样做的好处:实现对集合容器写入操作时的线程安全,但同时并不影响进行并发的读取操作。所以容器也是一种读写分离的思想。从JDK1.5开始Java并发包里提供了两个使用机制实现的并发集合容器,它们是和。相当于线程安全的ArrayList,内部存储结构采用Object[]数组,线程安全使用实现,允许多个线程并发读取,但只能有一个线程写入。
2022-09-18 23:32:09 219
原创 Session会话追踪的实现机制
在Web应用程序中,我们经常要跟踪用户身份。例如:当一个用户登录成功后,如果他继续访问其他页面,Web程序如何才能识别出该用户身份?当一个用户在操作自己的购物车时,Web程序如何才能识别出该用户身份?因为HTTP协议是一个无状态协议,即Web应用程序无法区分收到的两个HTTP请求是否是同一个浏览器发出的。为了跟踪用户状态,服务器可以向浏览器分配一个唯一ID,并以Cookie的形式发送到浏览器,浏览器在后续访问时总是附带此Cookie,这样,服务器就可以识别用户身份。...
2022-08-26 17:39:03 72
原创 Servlet的生命周期
实例创建和使用的过程,被称为Servlet的生命周期。整个生命周期包括:实例化、初始化、服务、销毁。:服务器关闭或重启时,会销毁所有的Servlet实例,会调用Servlet实例的。方法,如果子类没有重写该方法,则调用HttpServlet父类的。如果实例不存在,则通过调用构造方法,完成。方法,在父类的该方法中进行请求方式的判断,如果是。405状态码:代表请求的方式服务器不提供支持。方法,在父类的方法实现中,返回一个。请求的过程中,其本质是在调用执行。方法,执行初始化的逻辑。方法,则调用子类重写后的。
2022-08-21 18:20:05 121
原创 在学习Mybatis中遇见的问题
原因分析:错误中说找不到应该找到的mpper所以肯定是主配置文件中应该使用到的mapper名称写错,首先检查mybatis的全局配置文件中是否配置好该mapper,配置时检查全路径。原因分析:当一个配置好的映射文件中出现两个相同的id的方法,就出出现already contains..错误,所以我们在配置映射文件时,每个方法的id设置成不一样的,也就是方法名让保证不一样。中最复杂的元素,主要用于解决实体类属性名与数据库表中字段名不一致的情况,可以将查询结果映射成实体对象。...
2022-08-17 20:59:52 363
原创 HashMap添加元素
map.put(key1,value1),首先会调用key1所在类的hashCode()方法计算key1的哈希值,然后通过某种算法计算出key1在Entry数组中的存放位置。当数组的某一个索引位置上的元素以链表形式存在的数据个数>8且当前数组的长度>64时,此时此索引位置上的所有数据由数组+链表改为使用数组+红黑树存储,当数组的某一个索引位置上的元素以红黑树形式存在的数据个数...
2022-08-14 19:08:20 1733
原创 常见的加密算法
哈希算法(Hash)又称摘要算法(Digest),它的作用是对任意一组输入数据进行计算,得到一个固定长度的输出摘要。哈希算法的目的为了验证原始数据是否被篡改。Java字符串的hashCode()就是一个哈希算法,它的输入是任意字符串,输出是固定的4字节int整数两个相同的字符串永远会计算出相同的hashCode,否则基于hashCode定位的HashMap就无法正常工作。这也是为什么当我们自定义一个class时,覆写equals()方法时我们必须正确覆写hashCode()方法。...
2022-07-21 23:08:14 1097 1
原创 HTTP编程
HTTP是HyperTextTransferProtocol的缩写,翻译为超文本传输协议,它是基于TCP协议之上的一种请求-响应协议当浏览器希望访问某个网站时,浏览器和网站服务器之间首先建立TCP连接,且服务器总是使用80端口和加密端口443,然后,浏览器向服务器发送一个HTTP请求,服务器收到后,返回一个HTTP响应,并且在响应中包含了HTML的网页内容,这样,浏览器解析HTML后就可以给用户显示网页了。HTTP请求的格式是固定的,它由HTTPHeader和HTTPBody两部分构成。...
2022-07-18 20:18:52 292
原创 StringBuilder()常见方法
1.追加字符串 StringBuilder sb = new StringBuilder("x"); sb.append("a"); // 在当前字符串的尾部追加字符串a // xa sb.append("b"); // 在当前字符串的尾部追加字符串a // xab2.替换字符串StringBuilder sb = new StringBuilder("天王盖地虎"); sb.replace(1, 3, "博爱他"); // 替换下标1-3的位置不包含3 sb.replac
2022-07-14 20:33:29 15640
原创 Excel文件写入和解析
Excel文件写入和解析四、超大文件写入一、使用POI写入 小节:如上代码块创建10000000个耗时8589ms二、读取小节:如上代码所示:创建1000000数据耗时13683ms;读取1000000代码耗时3367ms。
2022-07-13 20:33:42 675 2
原创 String,StringBuilder,StringBuffer的区别
首先,String是不可变字符串,StringBuilder和StringBuffer是可变字符串,String每次改变后会指向一个新字符串,而StringBuilder和StringBuffer改变的是自身的值,每次调用都会改变。StringBuilder和StringBuffer都是AbstractStringBuilder类的子类,从源代码来看,StringBuilder和StringBuffer又有区别,StringBuilder类中的方法没有使用synchronized关键字,所以它的方法都是线程
2022-06-15 17:02:30 119
原创 Zip压缩文件的读取和写入
ZipInputStream的基本用法:首先要创建一个ZipInputStream,通常是传入一个FileInputStream作为数据源,然后循环调用getNextEntry(),直到返回null,表示zip流结束。一个ZipEntry表示一个压缩文件或目录,如果是压缩文件,我们就用read()方法不断读取,知道返回-1;(使用BufferedOutputStream流的方法建立缓冲区读取字节内容,循环直至读完)
2022-05-31 21:25:58 417
原创 Java中(Queue、Deque、Stack)的特点及遍历方式
一、QueueQueue是单端队列,遵循(FIFO)先进先出原则,最早进去的最先出来。有限队列:有界限,大小长度受限制,常见实现类ArrayBlockingQueue;无限队列:无界限大小限制,常见实现类LinkedList;遍历方式(3种)1.增强for循环 for (Object o : queue) { System.out.println(o); }2.Iterator迭代器 Iterator it = queue.iterator();
2022-05-12 19:07:23 1877
原创 Java中三种集合(List、Set、Map)的特点及遍历方式
一、List1.可以允许重复的对象。2.可以插入多个null元素。3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。4.常用的实现类有ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适遍历方式(4种):1.增强for for (Object o : list) { System.out.
2022-05-12 19:03:51 233
原创 java中字符串常见的方法总结
字符串的比较1.equals()方法:常用于比较两个字符串是否相等,返回值类型是boolean,参数是Object类public class test { public static void main(String[] args) { String n1 = "saf"; String n2 = "saf"; System.out.println(n1.equals(n2)); // true }}字符串的搜索1.indexOf()方法:使用indexOf方法可..
2022-02-20 20:19:23 7854
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人