自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在Java中用栈模拟队列

队列的特点:先入先出栈的特点:后入先出那么如何用栈来模拟队列呢?根据队列先入先出的特点,首先需要实例化两个栈对象,分别为in和out,in为入队栈,out为出队栈。在队列中有offer()和poll()两个方法。offer():添加元素入队入队时先用while循环判断出队栈中是否为空,如果不为空,将out(出队栈)中的元素出栈,再调用in(入队栈)的push()方法添加至入队栈中;如果为空,则直接调用in(入队栈)的push()方法添加传入的新元素入队。poll():出队出队时先用whil.

2022-05-11 23:31:12 979 2

原创 JavaScript常用事件详解

JS中的事件:概念:某些组件被执行了某些操作后,触发某些代码的执行。事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了事件源:组件。如: 按钮 文本输入框…监听器:代码。注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。

2022-11-16 19:10:32 597 1

原创 @Autowired注解的实现原理

Spring对autowire注解的实现逻辑位于类:AutowiredAnnotationBeanPostProcessor#postProcessProperties之中,——>findAutowiringMetadata——>buildAutowiringMetadata,核心代码就在buildAutowiringMetadata方法里面

2022-10-24 21:08:13 616 1

原创 TCP协议的拥塞控制

当发送方刚开始发送数据,执行慢开始算法,令拥塞窗口(cwnd)=1,发送方只能发送一个报文,当接收到接收方的确认后,然后cwnd进行2倍增长;当cwnd >=ssthresh时,就会执行拥塞避免,cwnd会进行线性增长,每次只会加1; 当发送方收到接收方连续三次相同的确认时,则立即执行快重传;当执行完快重传后,门限值变为cwnd的一半,并且cwnd减半,此时cwnd=ssthresh,直接执行拥塞避免算法,每次cwnd加1;

2022-10-08 19:59:01 492

原创 TCP与UDP有什么区别?

TCP是面向连接的,通过三次握手建立连接,四次挥手释放连接;而UDP是无连接的发送数据之前不需要建立连接TCP是可靠传输,使用确认应答、超时重传、流量控制和拥塞控制;UDP是不可靠传输

2022-09-22 18:23:47 231

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

当用户在浏览器输入URL(统一资源定位符)时,浏览器通过DNS域名解析器将URL解析成IP地址,得到IP地址后,浏览器与服务器建立HTTP连接;建立好连接,浏览器将会与服务器进行三次握手建立TCP连接,连接成功后,浏览器发起一个GET请求,浏览器会通过请求的URL生成HTTP格式的数据包(请求报文)发送给服务器

2022-09-22 18:10:30 224

原创 CopyOnWriteArrayList源码分析

CopyOnWriteArrayList是java.util.concurrent包下的一个并发集合,实现自List接口。底层使用Object[]数组实现,使用ReentrantLock加锁实现线程安全,相当于一个线程安全的ArrayList集合,它允许多个线程并发读取,但只允许一个线程写入,因此它一般用于少写多读的场景。

2022-09-18 20:19:07 815

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

堆区(Heap)被划分为新生代和老生代两部分,新生代又划分成Eden区和两个幸存者区(Survivor)分别是from区和to区; 当创建新对象,如果Eden区空间充足,对象就在Eden区分配内存;如果Eden区已经满了,就会触发YGC(Minor GC)即只对新生代进行垃圾收集的GC,对Eden区进行垃圾回收(清理没有引用指向的对象),当执行YGC后,没有被回收的对象就会被移动到Survivor区中。

2022-09-18 13:14:32 230

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

会话就是客户端与服务器之间的一次交互,在一次交互中可能会包含多次请求和响应。在JavaWeb中,从客户端向服务器发出第一个请求开始,会话就开始了,直到客户端关闭浏览器会话结束。在一个会话的多个请求中共享数据,这就是会话跟踪技术。Cookie是把用户的数据写给用户的浏览器。Session技术把用户的数据写到用户独占的Session中。

2022-08-24 15:37:27 721

原创 Servlet的生命周期

当用调用一个Servlet时,就会创建一个Servlet实例,通过实例调用init()方法初始化,可以将Servlet中一直用到的资源放在init()方法中。当客户端(浏览器)请求Servlet路径发起请求,通过请求方式的不同,执行doGet()或doPost()方法,子类中重写doGet()或doPost()方法请求和响应给客户端浏览器。当服务器关闭或重启时,通过实例调用distroy()方法销毁所有Servlet实例,Servlet的生命周期到此就结束了。

2022-08-21 17:21:06 1135

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

HashMap采用数组+链表+红黑树作为存储结构,Map集合中使用put()方法添加键值对.总结:Map集合添加元素的过程如下:判断数组table是否为空,如果为空进行初始化; 如果不为空,使用hash方法计算key的hashCode,通过(n-1)&hash计算应当存放在数组中的下标index; 查看table[index]是否存在数据; 如果没有数据,就构造一个Node<K,V>节点,存放在table[index]中; 如果存在数据,就说明发生哈希冲突,继续判断K

2022-08-13 19:40:15 345

原创 浅谈MyBatis中遇到的问题~

在映射文件AccessLogMapper.xml,select标签的resultType属性值为实体类的完全限定名,当执行一个Mapped Statement操作时,MyBatis会根据你设置的resultType(返回值类型)通过反射创建该类型的对象,再将查询后的结果存入该对象...

2022-08-12 19:16:23 937

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

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。...

2022-08-06 16:49:43 972

原创 MySQL~数据库知识梳理

首先,要理解什么是数据?描述事物的符号称为数据。数据有多种表现形式,可以是数字,也可以是文字、图形、图像、声音、语言等。在数据库中数据表示为一条记录。例如,在学生管理数据库中,记录学生的信息包括学号、姓名、性别、年龄、籍贯和联系电话等,这些信息就是数据。数据库(Database)指长期存储在计算机内的、有组织的、可共享的数据集合。通俗的讲,数据库就是存储数据的地方,就像冰箱是存储食物的地方一样。在生活中,每个人都在使用数据库。当我们在电话簿里查找名字时,就是在使用数据库。......

2022-08-05 19:50:06 454

原创 Java中常见哈希算法总结、对称式加密与非对称式加密的对比

哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。哈希算法的目的:验证原始数据是否被篡改。哈希算法的特点:相同的输入一定得到相同的输出;不同的输入大概率得到不同的输出。...

2022-07-21 21:10:09 1643 2

原创 Java中基于HTTP协议的爬虫技术

HTTP(超文本传输协议)是用于从万维网服务器传输超文本到本地浏览器的传送协议。超文本传输协议(HTTP)是面向事务的(Transaction-oriented),应用层协议规定了在浏览器和服务器之间的请求和响应的格式和规则,它是万维网上能够可靠交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。...

2022-07-19 20:39:03 1437

原创 如何使用Java代码发送一个“Java Email”?

Email就是电子邮件,我,们经常用来收发邮件的软件有:Outlook,网易邮箱,Foxmail,QQ邮箱等。当然,使用Java程序也可以收发电子邮件。我们先来了解一下电子邮件的发送过程,例如Outlook,发送到邮件服务器,可能经过若干个邮件服务器的中转,最终到达对方邮件服务器上,收件方就可以用软件接收邮件。...

2022-07-17 23:44:04 1877 3

原创 Java网络编程——基于UDP协议的聊天室

UDP(User Datagram Protocol)协议是Internet 协议集支持的一个无连接的传输协议,中文名为用户数据报协议。它为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。   Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是TCP,该协议几乎做了所有的事情。“when in trouble , use TCP”。...

2022-07-16 18:22:47 2589 1

原创 Java解析JSON

在使用Java进行应用程序的开发中,我们会需要“将Java对象转换成JSON格式”或者“将JSON格式的数据转换为Java对象”,所以我们应该掌握使用第三方库对JSON格式的数据进行解析。FastjsonJacksonGson…今天使用fastjson为大家举例,fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化为JavaBean。...

2022-07-15 21:37:21 984 3

原创 Java中对Excle文件的解析

   在应用程序的开发过程中,经常需要使用Excel文件来进行数据的导入或导出。在Java中进行Excel文件处理的主流技术包括:Apache POI、JXL、Alibaba EasyExcel等。JXL只支持Excel 2003以下版本,不太长见。所以今天主要是对Apache POI和Alibaba EasyExcel的使用展开讲讲。  Apache POI是免费开源的跨平台的Java API,Apache POI提供给Java程序对Microsoft Office 格式档案进行读写功能的API开源类库。

2022-07-14 13:24:12 13849 5

原创 ArrayList的扩容机制是如何实现的?

ArrayList是List接口的实现类,在java.util下,它的底层结构是使用Object类型的数组实现的,特点是:元素有序,可重复。那么ArrayList是如何实现扩容呢?

2022-07-11 21:06:02 2068 3

原创 Java中HashSet如何检查重复值?

众所周知,List集合元素是有序,可以重复的,而Set集合元素是无序且唯一的(LinkedHashSet是有序的),那么Set集合中是如何过滤重复值的呢?

2022-07-07 19:05:30 2649 2

原创 Java中properties文件的读取和写入

properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容格式是"键=值"的格式,在properties文件中,可以用"#"来作注释。那么在Java中如何对properties文件进行读取和写入呢?

2022-05-30 23:05:31 645 1

原创 zip压缩文件的读取和写入

在Java中,zip压缩文件是怎样读取和写入的?这里我们需要引入ZipInputStream 和 ZipOutputStream。一、ZipInputStreamZipInputStream是一种读取zip压缩文件的输入流,它的基本用法:创建一个ZipInputStream对象,因为它继承自FiterInputStream,因此它创建对象必须传入一个输入流(例如:FileInputStream)作为数据源

2022-05-30 22:22:09 2889

原创 FileInputStream与BufferedInputStream有哪些区别?

InputStream(字节输入流)是Java标准库提供的最基本的输入流。它在java.io这个包里,InputStream并不是一个接口而是一个抽象类,是所有抽象流的父类。其中最常用的两个子类为FileInputStream(文件输入流)和BufferedInputStream(缓冲输入流)

2022-05-22 22:45:04 1571 2

原创 ‘==‘和equals()的区别

'=='和equals()的区别用String类型举例来说:“==”是比较这两个字符串的地址,而equals是比较两个字符串的值代码如下(示例): String s1 = “hello”; String s2 = “hello”;定义了两个长度相等且内容一样的字符串,JAVA中存在一个字符串常量池,在定义s1时,字符串“hello”会缓存进这个字符串常量池,定义s2时它会指向字符串常量池中的“hello”,地址不变,所以用“==”可以比较两个字符串。代码如下(示例): String

2022-05-10 22:03:02 127 1

原创 List、Set、Map、Queue、Deque、Stack的遍历方法总结

一、List的遍历1.for循环2.for each循环3.迭代器二、Set的遍历1.for each循环2.迭代器三、Map的遍历四、Queue的遍历五、Deque的遍历六、Stack的遍历1.引入库2.读入数据总结一、List的遍历1.for循环代码如下(示例): List<String> list = new ArrayList<String>(); list.add("A"); l.

2022-05-10 21:44:26 355 1

原创 String缓存池与Integer缓存池

一、String缓存池String类中存在一个常量缓存池,例如 String str1 = “虎虎生威”;,用这种方式定义字符串时,该字符串会被缓存进字符串常量池。当再定义另一个内容相同的字符串时,例如String str2 = “虎虎生威”;,str2将会指向常量池中“张三”这个字符串的地址,不需要另外开辟新空间。因此,这样定义的字符串可以通过“==”比较内容是否相等。

2022-02-22 20:41:23 502

原创 String类、StringBuffer类与StringBuilder类之间的区别

一、String类String类是java中最常用引用类型。用String定义的字符串不可更改。二、StringBuilder类StringBuilder类是可变字符串,是AbstractStringBuilder类的子类.StringBuilder类中的方法没有使用synchronized关键字,所以它的方法都是线程不“安全”,但是性能好

2022-02-21 20:34:21 288 1

原创 abstract(抽象类)与interface(接口)的区别

abstract(抽象类)与interface(接口)在使用时有什么区别呢?一、abstract(抽象类)1.用abstract关键字修饰方法用abstract关键字修饰方法时,该方法没有方法体,并且抽象方法只能定义在抽象类中。二、interface(接口)使用interface关键字定义接口,interface中不能定义变量,只能定义常量。一个类可以implements(实现)多个接口,并且接口之间可以多重extends(继承)。

2022-02-16 19:41:40 1225 2

原创 overlord(重载)与override(重写)的区别

overlord(重载)与override(重写)有什么区别?一、overlord(重载)在一个类中,我们可以定义多个方法。如果有一系列方法,它们的方法名相同,功能类似只有参数不同(参数类型、参数顺序、参数个数),这就是方法的重载。

2022-02-16 18:41:53 1009 2

空空如也

空空如也

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

TA关注的人

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