自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 TCP协议的拥塞控制

TCP,网络拥塞,拥塞控制算法,发送速率控制,滑动窗口

2022-10-08 19:13:15 980 1

原创 浅析TCP协议

这个和序号是收发双方的关系,当发送方发送一个序号为100,长度为100的报文段时候,接收方就要给发送方发送报文,报文段中就写着确认号:200。基本意思就是:本次收到你发送的从100开始100个字节的数据,我已经确定收到,我发送个确认号,200,希望你下次发送序号为200的数据。第二次挥手:(客户端申请释放,服务器发最后的文件发送给客户端)服务器收到连接释放的报文后,给客户端发送确认报文,从客户端到服务器这个方向的连接就释放了。在传输数据的时候,如果数据比较大,通常会拆分成一段一段的进行发送。

2022-09-28 17:20:12 550

原创 线程池基本了解及其参数配置

存放线程的一个空间?区域?池子。可以说线程池的内部维护了若干的线程。这些线程等待着任务来进行执行。就如同一个共享单车基地一样。维护了很多的单车,等你有人来使用。对于线程池,如果有任务就分配一个线程池中的线程来执行,如果线程池中的线程用完了就把这些任务反放在工作队列中,放对列满执行了再,或者没有(不是真的没有只是为空)队列来方,直接创建一个新线程来执行。同样是创建线程,线程池创建有什么优势呢?

2022-09-27 19:45:39 2315

原创 TCP与UDP的区别

在我的理解中TCP的传输是稳定的,而UDP的传输是不稳定的。TCP的传说是需要建立连接的,而UDP是不需要建立连接的。这是因为TCP为了保证自己的传输可靠性,做了很多配置,消耗量效率和资源,比如TCP协议报文段的首部格式就有20-60个字节,而UDP只有8个字节。UDP的传输效率快,而且所需要的资源小,这是因为TCP要保证自己的传输可靠性而牺牲了效率,使用了很多的资源。TCP的传输是可靠的(他通过自己的很多配置来保证自己的传输可靠。TCP传输形式是字节流(TCP是以流的方式传输的)UDP的传输是不可靠的。

2022-09-22 19:09:24 369

原创 浏览一个网站时的整个过程

客户会发送一个HTTP格式的数据包(HTTP格式是现在网络通信的基本格式和常用格式(包括HTTPS后面会讲))作为请求数据包发送给服务器,服务器解析这个HTTP格式的数据包,根据数据包中的内容如请求头,请求体(GET请求没有请求体)的内容,执行服务器内部的逻辑,将得到的结果生成一个HTTP格式的数据包作为响应发送给浏览器,浏览器解析这个数据包,将解析过的结果呈现给用户。它的运行过程是这样的,客户通过浏览器请求网站服务器,服务器返回给浏览器自己的证书信息,和公钥等信息。我们浏览网页的时候都是用的浏览器。

2022-09-22 18:33:06 501

原创 创建对象在堆区如何分配内存

执行YGC结束,再次确定Eden区是否可以放下,如果可以放下就为他分配内存空间,如果放不下就说明这个对象本身很大,或者是之前的对象清理的少,这时候只能把它放在old区,还是一样的,先查询old区是否可以放下,如果可以放下就分配空间。每次交换时,对象的年龄会加+1。在大多数的情况下,对象会在 Eden 区生成,当 Eden 区装填满的时候,或者装不下新的对象的时候,会触发 Young Garbage Collection,就是YGC,对新生代区的对象进行垃圾回收,根据跟可达算法,没有被引用的对象则直接回收。

2022-09-18 20:24:25 200 1

原创 CopyOnWriteArrayList部分源码分析

从看他的名字就可以推测出,CopyOnWriteArrayList是在有写入操作的时候会copy一份原来的数组,然后写完再将他们替换。CopyOnWriteArrayList因为他每次的写入操作都进行了Copy所以他适合适用于读多写少的并发场景。下路解析CopyOnWriteArrayList的部分源码,就是简单的写入部分的浅析。CopyOnWriteArrayList相较于ArrayList他是线程安全的。先介绍几个基础的方法,后面的方法都会调用这些方法。解析的方式以注释的方式写在了代码内部方便查看。

2022-09-18 19:31:34 113

原创 Session会话追踪的实现机制

Session(会话)是Servlet中的一种特殊的机制,它可以用来存储K-V键值对,它的生命周期较长,在服务器关闭或Session失效和客户端浏览器关闭之前,Session中的数据都不会消失,而且每个客户端独有一个Session会话,相互之间互不干扰。但是我们使用的Http协议是一种无状态协议,Web应用程序无法区分收到的两个HTTP请求是否是同一个浏览器发出的。为了跟踪用户状态,服务器可以向浏览器分配一个唯一ID,并以Cookie的形式发送到浏览器,浏览器在后续访问时总是附带此Cookie。...

2022-08-26 00:11:28 96

原创 Servlet生命周期

要想赋值,就必须在重写的init(ServletConfig config)方法中调用父类的init(ServletConfig config)方法,也就是super.init(ServletConfig config),这样一来,就很不方便,怕所以在GenericServlet类中增加一个init()方法,以后需要在init方法中需要初始化别的数据,只需要重写init()这个方法,而不需要去重写init(ServletConfig config)这个方法。init()方法有两个两个,一个有参一个无参。

2022-08-21 22:11:12 110

原创 当添加一个键值对元素时,HashMap发生了什么?

如果真的相同则用新值替换旧值,如果不相同,判断当前节点类型是不是TreeNode树型节点,如果是,就创造树形节点插入红黑树中,如果不是就创建普通的Node加入到链表的尾部。对计算得到的hash进行16的求余,得到一个16的位数,比如说是1到15之间的一个数,hashmap会与hash值和15进行与运算。(3):键值对中,键值所对应的值,他并不是唯一不变的,当出现相同键,不同值的时候,后面存储的值,会覆盖前面存储的值。这是hashMap中的键值,是唯一,不变的值,所以用final修饰。...

2022-08-15 01:37:48 113

原创 基于FTP协议的文件上传与下载

****文件传输协议(FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的

2022-08-07 18:43:22 353

原创 常见哈希算法;加密算法,对称式加密与非对称式加密的对比

例如小明要加密一个文件发送给小红,他应该首先向小红索取她的公钥,然后,他用小红的公钥加密,把加密文件发送给小红,此文件只能由小红的私钥解开,因为小红的私钥在她自己手里,所以,除了小红,没有任何人能解开此文件。因为相同的输入会得到相同的输出,因此,如果输入被修改了,得到的输出就会不同。cbc模式是在原来的AES加密模式的基础加入了一个IV参数,作为它的随机数,这样的情况下,对于同一份明文,每次生成的密文都不同。理论上讲,哈希碰撞一定存在,因为输出的字节长度是固定的,但是输入的值是无穷的,是没有限制的。...

2022-07-24 18:02:25 1627

原创 JAVA Email——利用java完成发送电子邮件(包括附件)

考虑这个问题之前我们先来看一下传统的邮件是如何发送的。传统的邮件是通过邮局投递,然后从一个邮局到另一个邮局,最终到达用户的邮箱。电子邮件的发送过程也是类似的,只不过是电子邮件是从用户电脑的邮件软件,发送到邮件服务器上,可能经过若干个邮件服务器的中转,最终到达对方邮件服务器上,收件方就可以用软件接收邮件。感觉也就是将传统的邮件发送模型,转换到了电子网络上。我们把邮件软件称为MUA邮件服务器则称为MTA最终到达的邮件服务器称为MDA电子邮件一旦到达MDA,就不再动了。...

2022-07-17 21:10:42 3382 1

原创 JAVA中TCP编程基础

Socket是一个抽象概念,一个应用程序通过一个Socket来创建一个远程连接,而Socket内部通过TCP/IP协议吧数据传输到网络。JAVA提过的几个Socket相关的类就封装了操作习惯提供的接口ServerSocket类,Socket类。一个Socket就是由IP地址和端口号(0~65535)组成,可以把Socket简单理解为IP地址加端口号。使用Socket进行网络编程的时候,本质上是两个进程之间的网络通信。...

2022-07-17 18:12:11 928 2

原创 Excel文件解析(包含超大Excel文件读写)

java的Excel文件的解析,和大型Excel的解析和推荐解析的方式

2022-07-13 20:50:43 1840

原创 FileInputStream和BufferedInputStream的区别(主要是read()方法)

FileInputStream继承InpuStream,BufferedInputStream继承FilterInputStream而FileterInputStream继承InputStream。也就是说它们俩都是InputStream的实现类。InputStream是一个抽象类,里面定义了一个read()方法。在其继承或间接继承的两这两个类中这两个方法是不一样的。FileInputStream.read()在读取文件的时候可以实现一个字节一个字节的去读,也可以一堆一堆的字节读。具体使用方法如下:p

2022-05-24 00:19:49 468 1

原创 总结java集合中List,Set,Map,Queue,Deque,Stack的遍历方式

​欲要了解集合的遍历首先应该清楚这些集合的继承结构:Mao下图大致的汇总的这些接口(除Stack)的继承结构,和他们常用的实现类。 因为上述所有的类型,都可以用Iterator迭代器的方式来遍历,所以先介绍迭代器,以及迭代器的常用方法使用。(1):Iterator接口的介绍 Iterator表示迭代器,迭代器是一种通用的遍历Collection集合的方式。 Collection接口有一个来自父接口Iterable接口的Iterator()方法,该方法返回一个Iterat

2022-05-12 00:09:56 590 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除