自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JavaScript常用事件详解

当点击网页上的一个按钮进行退出操作时,需要给按钮添加一个点击事件,当鼠标移动到某个元素时给该元素添加背景颜色时,也需要给该元素绑定一个相应事件。在网页的编写时,时常需要用到各种事件,使页面更灵活,增加用户体验感,那么JS中具体有什么常用事件呢?当鼠标点击第二个输入框,再点击第二个输入框外(使其失去焦点),会输出“触发了onblur事件 光标离开”当鼠标点击第三个输入框(使其获得焦点),会输出“触发了onfocus事件 光标聚焦”当鼠标移动到第一个盒子上,会输出“恭喜你打开了,但没中奖”

2022-11-19 12:57:58 242 1

原创 @AutoWired的实现原理

的一个注解,与它同属容器配置的注解还有:@Required,@Primary, @Qualifier等。在spring的世界当中,自动装配指的就是使用将Spring容器中的bean自动和我们需要这个bean的类组装在一起。使用@Autowired注入的bean对于目标类来说,从代码结构上来讲也就是一个普通的成员变量,@Autowired和spring一起工作,通过反射为这个成员变量赋值,也就是将其赋为期望的类实例。@Override注解使用java官方提供的注解,它的定义里面并没有任何的实现逻辑(

2022-10-24 21:26:20 187

原创 TCP协议的拥塞控制

当发送方收到三个重复的确认时,把ssthresh设置为cwnd的一半,并让cwnd的值等于新的慢开始门限ssthresh值,从新的门限值开始执行拥塞避免算法,每次传输数据,门限值会加1,直到发送方再次收到三个重复确认,一般快重传和快恢复算法配套使用。接收方每次接收都会对最后一个已收到的有序报文段进行确认,当发送方收到来自接收方发送的3个连续的确认信号时,说明接收方没有收到发送方的某一次发送,即网络中发送数据丢失,此时发送方立即重新发送,并执行快恢复算法。当网络拥塞时,TCP程序将减小 cwnd ,

2022-10-08 22:53:45 680

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

浏览器首先会搜索当前PC机中是否有缓存的DNS记录,如果没有则向域名解析服务器发送解析请求,如果域名解析服务器也没有该域名的记录,则开始递归、迭代解析。第二次挥手:客户端发送连接释放确认,同意客户端释放连接,客户端到服务器方向的连接关闭,此时连接属于半关闭状态,服务器还有数据要发送给客户端(ACK)第三次挥手:服务器发送完数据,会再次发送连接释放确认(FIN,ACK)第二次握手:服务器响应请求,并且发送建立请求确认(SYN,ACK)第四次挥手:客户端发送确认报文,同意服务器释放连接(ACK)

2022-09-22 20:43:46 174

原创 TCP与UDP的区别

TCP在建立连接时会经历三次握手,在释放连接时会经历四次挥手,TCP还通过检验和、序列号、确认应答、超时重传、快速重传、连接管理、流量控制、窗口控制、拥塞控制、ARQ协议这些都保证了TCP的可靠传输;而UDP协议在发送数据前不需要建立连接,接收方收到UDP报文后不需要给出确认,UDP不提供对数据包的分组、组装和排序,当报文发送后,无法知道报文是否安全完整到达接收端。UDP是无连接的不可靠传输,发送端尽最大努力交付数据,协议简单、适用于对传输效率要求高,但准确率要求低的应用场景,比如:语音、视频等。

2022-09-22 19:45:31 540

原创 CopyOnWriteArrayList源码分析

CopyOnWriteArrayList源码分析。

2022-09-19 00:13:27 95

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

对象在堆中的位置不是一成不变的,每个对象都有age,JVM默认新生代到老年代的age阈值为15,即当对象的age为15时会放入老年代,当一个对象在Survivor交换14次之后,会晋升至老年代。假设此时对象在Survivor区的s0区,则会将s0区存活的对象复制到s1区(同时这些对象的age会加1),并且s0区会清空,即交换两块空间的存储状态。3.当老年代区放不下时,会执行FGC(又称:Major GC),之后再判断老年代区是否放得下,内存足够时会分配对象内存。分为:线程共享(Heap堆区、

2022-09-18 23:37:15 125

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

使用Session时,由于服务器把所有用户的Session都存储在内存中,如果遇到内存不足的情况,就需要把部分不活动的Session序列化到磁盘上,这会大大降低服务器的运行效率,因此,放入Session的数据不能太大,否则会影响服务器的运行。⾄于什么时候送,送什么样的甜点,有效期是多常时间,完全由服务器来决定。:HttpSession的invalidate()方法也可以删除value值,但是会摧毁session,同时删除value的内容,再次发起请求时会得到新的session。

2022-08-25 15:59:01 301 1

原创 Servlet生命周期

当我们访问网站或者使用App时,大部分场景下都是基于。

2022-08-21 23:08:31 156

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

当新添加一个KV键值对元素时,通过该元素的key的hash值(添加时,通过key的hash值,使用&按位与位运算,计算该元素在数组中的下标。例如:加载因子(LoadFactor)的默认值为0.75f,数组容量默认为16,当HashMap中元素个数超过16 × 0.75=12的时候,数组就会扩容(HashMap扩容时,会按照当前数组的容量扩容2倍)。因为数组长度为2的n次幂时,可以使用&与位运算,结合hash值,快速计算该元素在数组中的下标位置,提高HashMap的使用效率。,会将当前链表转换为红黑树。...

2022-08-14 21:35:01 147

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

5.用changeWorkingDirectory()方法切换到文件所在的目录,若目录不存在则创建,之后再进行切换目录。8.用retrieveFile()方法下载文件,这里需要指定文件名和输出流作为此方法的参数。7.用storeFile()方法下载文件,这里需要指定上传的文件名和输入流作为此方法的参数。6.用changeWorkingDirectory()方法切换到文件所在的目录。6.使用setFileType()方法设置二进制文件类型。1.创建字符串保存要获取的文件名。2.创建FTPclient实例。..

2022-08-06 16:58:05 315

原创 基于HTTP的简单网络爬虫

HTTP是目前使用最广泛的Web应用程序使用的基础协议,例如,浏览器访问网站,手机App访问后台服务器,都是通过HTTP协议实现的。HTTP是HyperText Transfer Protocol的缩写,翻译为超文本传输协议,它是基于TCP协议之上的一种请求-响应协议。HTTP请求的格式是固定的,它由HTTP Header和HTTP Body两部分构成。第一行总是请求方法 路径 HTTP版本...

2022-08-06 15:06:38 227

原创 对称式加密和非对称加密的对比

对称加密需要协商密钥,而非对称加密可以安全地公开各自的公钥,在N个人之间通信的时候使用非对称加密只需要N个密钥对,每个人只管理自己的密钥对。而使用对称加密需要则需要N*(N-1)/2个密钥,因此每个人需要管理N-1个密钥,密钥管理难度大,而且非常容易泄漏。再通过算法名称和固定的密钥获取SecretKey实例,之后通过SecretKey实例和设置的加/解密模式初始化秘钥,最后就可以根据传入的明文/密文,进行加密/解密。例如,我们常用的WinZIP和WinRAR对压缩包的加密和解密,就是使用对称加密算法。...

2022-07-21 20:00:56 633

原创 常见哈希算法、Hmac算法和BouncyCastle

哈希算法最重要的特点就是1.相同的输入一定得到相同的输出2.不同的输入大概率得到不同的输出(可能会出现哈希碰撞,即不同输出得到相同输出)哈希算法可以验证原始数据是否被篡改,所以可以用来校验下载文件,另外还可以用来存储用户密码。但因为相同的输入通过哈希算法会得到相同的结果,所以简单的密码和口令在数据泄露容易遭到彩虹表攻击(彩虹表即常用口令和他们MD5的对照表),数据泄露时常用口令很容易通过MD5被反查到。......

2022-07-20 21:32:58 656

原创 用java实现基于TCP的图片上传

用java实现基于TCP的图片上传我们需要使用socket来建立连接,socket内部通过TCP/IP协议把数据传输到网络使用Socket进行网络编程,本质上就是两个进程之间的网络通信。其中一个进程必须充当,它会主动监听某个指定的端口,另一个进程必须充当,它必须主动连接服务器的IP地址和指定端口,如果连接成功,服务器端和客户端就成功地建立了一个TCP连接,双方后续就可以随时发送和接收数据。因此,当Socket连接成功地在服务器端和客户端之间建立后。...

2022-07-18 23:51:05 428

原创 Java实现基于UDP的一对一聊天

的过程中,通过创建的DatagramSocket的对象(socket)的receive方法接收(需要将receivePacket作为receive方法的参数),通过DatagramPacket返回的receivepacket.getOffset()和packet.getLength()确定数据在缓冲区的起止位置,再与receivePacket.getData()一起作为参数传入创建的String对象的方法中。的情况下,可以将接收和发送的代码块放入while(true){}中。...

2022-07-18 00:34:38 391 1

原创 Java Email-用Java实现发送电子邮件

IMAP和POP3的区别POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。...

2022-07-17 23:21:20 1022

原创 Java中关于JSON格式数据的操作

对于java格式数据的处理: 1: 先创建java类,例如: public class Brand { private String id; private String brandName;; public void setId(String id) { this.id = id; } public String getId() { return id; ......

2022-07-14 20:16:53 3290 1

原创 Excel的类、方法和Excel操作

excel主要有四个类:Workbook.class(整个Excel文件)、Sheet.class(Excel文件中的每个页)、Row.class(页的行)、Cell.class(行的每个单元格)它们的层次:由Workbook类对象(如名为workBook)获得/创建Sheet类对象(如名为sheet),再由Sheet类对象获得/创建Row类对象(如名为row),由Row类对象获得/创建Cell类对象(如名为cell)常用的方法如下:1. Workbook.cla......

2022-07-13 20:47:26 953

原创 BufferedInputStream与FileInputStream的区别

InputStream是java标准库提供的最基本的输入流,而FileInputStream是InputStream的一个子类,FileInputStream就是从文件流中读取数据例如:public class Text { public static void main(String[] args) throws IOException { try (InputStream in = new FileInputStream("D:\\javadata\\BASE03\\T......

2022-05-25 19:34:39 235 1

空空如也

空空如也

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

TA关注的人

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