自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @Autowired自动装配及原理

使用Autowired装配属性时,当容器在扫描中扫描到@Autowired时,就会在IOC容器中自动的查找到需要的Bean对象(先按照类型进行装配)。当查询结果是一个的时候,就会直接进行装配。当查询的结果有多个的时候,@Autowired会根据名称进行查找(自动切换按照名称(bean对象的Id)进行装配)。

2022-10-25 00:45:11 1709 1

原创 TCP协议的拥塞控制

拥塞是指对网络中某一资源的需求超过了该资源所能提供的可用的部分,从而会使网络的负载增大,性能降低。TCP协议主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、块重传、快恢复。实现。

2022-10-08 20:59:03 1073

原创 TCP与UDP的区别

UDP协议全称User Datagram Protocol,它不提供复杂的控制机制,在出现网络拥堵的情况下,UDP协议也不进行流量监控等避免网络拥堵的行为。即使出现了数据丢包,也不进行重传,当数据包的顺序出现了混乱,也没有纠正功能,但它的优点是效率高。性能开销小。

2022-09-22 21:12:39 864

原创 CopyOnWriteArrayList源码分析

1、ArrayList但访问速度快,线程不安全。绝对不能在有多线程并发条件下使用。CopyOnWriteArrayList用了ReentrantLock锁机制,线程安全。但正是锁机制每次操作会加锁、释放锁、所以速度慢;2、ArrayList有自己的扩容机制,而CopyOnWriteArrayList每次操作都是基于数组的复制(相当于数组容量已算好),所以它没有不需要扩容机制,但它会浪费大量的内存空间。所以它适用于读多写少的场景;

2022-09-19 01:04:32 319

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

对于Java来说,它有着虚拟机自动内存管理机制,不再像c/c++那样,需要开发者手动管理内存。在Java中数据类型分为基本数据类型和引用数据类型。基本类型数据保存在“栈中”,引用数据类型保存在“堆中”,我们先来了解一下Java程序运行时数据区域的划分。在JDK 1.8(Heap堆区、方法区)、(虚拟机栈、本地方法栈、程序计数器)JDK 1.8(Heap堆区、MetaSpace元空间)、(虚拟机栈、本地方法栈、程序计数器。

2022-09-18 22:59:38 438

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

Servlet容器提供了Session机制以跟踪用户;Session数据存储在服务器端,Cookie数据存储在客户端;默认的Session机制是以Cookie形式实现的,Cookie名称是JSESSIONID;它是服务器识别Session的关键;

2022-08-24 21:54:58 280

原创 Servlet生命周期

编写一个HTTP服务器,要先编写基于TCP协议的服务,然后在一个TCP连接中读取HTTP请求,发送HTTP响应即可。要编写一个完善的HTTP服务器,以HTTP/1.1HTTPHTTPTCPIO这些基础工作需要耗费大量的时间,并且经过长期测试才能稳定运行。如果我们只需要输出一个简单的HTML页面,就不得不编写上千行底层代码,那就根本无法做到高效而可靠地开发。

2022-08-20 23:05:31 313 1

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

HashMap实现了Map接口,它是双列集合中的一员,与单列集合不同的是,单列集合中只能存储某一类元素,它是一组值,而HashMap存储的是一个个key-value键值对,由一个键映射一个value。HashMap是无序,键唯一的。4.如果不为空,用传入putVal()方法中的hash(即上文中调用hash()方法算出),通过数组长度(n-1)&hash 计算元素应当存放在Node数组中的下标index。13.如果大于,调用resize()方法,按照原数组的长度,扩容一倍(扩容后容量小于或等于64)。...

2022-08-15 01:11:08 158

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

FTP全称File Transfer Protocol,即文件传输协议,是一种应用层的协议,主要面向文件。它是基于TCP协议之上的一种协议(网页默认端口号是8880,ftp的代理服务器的默认端口号是21)此外,ftp是基于C/S模式设计的。用户通过一个客户端主机程序连接至远程计算机上运行的服务器程序。依照FTP协议提供服务,用户可以将文件上传至FTP服务器,也可以从服务器中下载文件。在这里使用easyftp工具(开启ftp服务端)服务器是基于Easy FTP的,我们需要提前设置好用户和密码以及用户权限。..

2022-08-08 00:00:34 736 2

原创 Java中ArrayList集合的扩容机制

1.如果使用无参构造方法创建ArrayList对象,那么在第一次添加元素时就会扩容为10,当要添加第11个元素时,按照1.5倍进行扩容。往后但凡超过数组容量,都按照1.5倍进行扩容。然后按照新容量创建出数组,将原数组内容复制至新数组。同时elementData指向新数组。2.如果是有有参的构造方法创建ArrayList对象,那么当添加元素至超过elementData容量时,按照原数组1.5倍容量进行扩容。......

2022-07-31 02:04:39 1087 2

原创 对称式加密与非对称式加密区别

1.对称式加密算法使用同一密钥进行加密和解密,常用算法有DES,AES和IDEA。2.非对称式加密加密和解密使用的不是相同的密钥,只有同一公钥-私钥对才能正常加解密。用对方的公钥加密,用自己的私钥解密(RSA算法)3.使用对称加密算法需要指定算法名称,工作模式和填充模式。4.对称式加密需要协商密钥,需要需要n*(n-1)/2个密钥,因此每个人需要管理n-1个密钥,密钥管理难度大,易泄露。5.非对称式加密算法可以安全公开自己的公钥,在N个人之间通信的时候。.........

2022-07-22 23:14:06 1510 4

原创 常见哈希算法总结

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

2022-07-21 22:15:36 2899

原创 Java之HTTP编程

HTTP就是目前使用最广泛的Web应用程序使用的基础协议,例如,浏览器访问网站,手机App访问后台服务器,都是通过HTTP协议实现的,HTTP是HyperTextTransferProtocol的缩写,翻译为超文本传输协议,它是基于TCP协议之上的一种请求-响应协议。HostAcceptBrowser......

2022-07-20 21:40:35 889

原创 Java之TCP编程

使用Java进行TCP编程时,需要使用Socket模型;服务器用ServerSocket监听指定接口;客户端使用Socket(InetAddress,port)连接服务器;服务器端用accept()接受连接并返回Socket实例;双方通过Socket打开InputStream/OutputStream读写数据;https。...

2022-07-17 20:05:40 489

原创 Java Email文件传输

传统的邮件是通过邮局投递,然后从一个邮局到另一个邮局,最终到达用户的邮箱。

2022-07-17 19:06:18 549

原创 Java中对Excel文件的解析

借助第三方库POI对Excel文件进行解析,在解析前要了解到Excel的层层关系,例如Excel文件包含N张工作簿,工作簿中又包含N行数据,每行又包含N个单元格。数据的读、写都是对单元格进行操作。https。...

2022-07-14 23:57:51 2220

原创 Java实现单向链表——精简

文章目录引言实现思路添加元素插入元素删除元素查找元素更新元素显示链表实现代码(完整)总结引言 链表是一种重要的数据结构。它的存储空间是不连续的,单向链表是最简单的一种链表。本文主要介绍单向链表,及其“增删改查”等功能的实现。我们希望设计出来的链表不仅仅只能存储一种类型的数据。而是可以像ArrayList集合那样,存储任意类型的数据,因此设计的时候要结合泛型。实现思路 链表是由一个个的节点链接起来的,这里介绍.........

2022-05-31 13:14:05 1547

原创 Java中对properties文件的读写

目录前言读写文件总结前言本篇文章主要介绍Java中对properties文件的读取,那么什么是properties文件呢?Java中有一个Properties类,部分源代码如下:publicclass Properties extends Hashtable<Object,Object> {...}public class Hashtable<K,V> extends Dictionary<K,V> imple.

2022-05-30 20:48:03 449 1

原创 Java中对zip文件的读写

文章目录前言代码总结前言 Java中我们用ZipInputStream和ZipOutputStream来完成对zip文件的读写,这两个类都间接继承自FilterInputStream,它们本身并不具备读写文件的能力,(部分源代码如下:)public class ZipInputStream extends InflaterInputStream implements ZipConstants{...}public class InflaterInputStr...

2022-05-29 23:43:40 3616

原创 FileInputStream与BufferedInputStream有哪些区别?

前言Java中的FileInputStream(字节输入流)和BufferedInputStream(字节缓冲输入流),二者都是将数据从磁盘读入内存。但BufferedInputStream的效率要高的多。区别1.创建出一个FileInputStream的对象后,调用它的read()方法,就是每次由这个对象从磁盘文件中读入一个字节到内存: try (InputStream in = new FileInputStream(new File("C:\\Users\\admi..

2022-05-20 00:44:01 297

原创 java之“用栈Stack模拟队列Queue”

目录前言实现思路实现代码总结前言 队列(Queue)的特点是先进先出(FIFO : Fitst In First Out),而栈(Stack)的特点是后进先出(FILO : Fitst In Last Out)二者的操作特点完全不同。实现思路 首先,我们应该创建一个类MyQueue,这个类一定要有两个最重要的方法,offer()将元素入队,poll()将元素取出。由于栈的特点是先进后出,因此一个栈是无法实现队列先进先的特点的。 ...

2022-05-12 21:39:00 393

原创 常用的六种集合的遍历方式

一.List集合的存储特点是元素有序,可重复。遍历List集合有以下几种方式:1.普通for循环: List<String> list = new ArrayList<String>(); list.add("北京"); list.add("上海"); list.add("广州"); list.add("西安"); //通过普通for循环,相当于根据数组的小标遍历集合 for(int i = 0;i<list.size();i++) {...

2022-05-09 23:33:34 12262 1

原创 第十三届蓝桥杯javaB组第三题

解法一:暴力解法import java.util.Arrays;import java.util.Scanner;public class Work { static byte[] vis = new byte[26];// 此数组用做标记,即如果某个字符查找过了,当再次遇到,就跳过,不再查找。 public static void main(String[] args) { String str = "BABBACAC"; String ss = "";// 存放字母 i..

2022-04-17 23:31:07 301

原创 String、StringBuffer、StringBuilder三者的区别

1.String、StringBuffer、StringBuilder三者都是通过其类中定义的一个字符数组来村塾字符串的内容。String类中的那个字符数组时用final修饰,因此String类型具有不可变性。当通过方法来对其修改时,会返回一个新的字符串,对原来的字符串是没有任何影响的。String str = new String("abcdef");str.replace('c','A');System.out.println(str);如上,String类型的字符串是不会改变字符串本身

2022-02-21 21:00:35 395

原创 Integer缓存的理解

一、简介Integer类型有一个“常量池”,其中存储了-128-127之间的数。当我们定义一个Integer类型的数据时,通过以下方式1.Integer a = 123;Integer b = 123;Integer c = 128;Integer d = 128;那么a,b只在常量池中创建了一次,a,b 两个引用其实指向了一个共同的内存,因此,无论是值还是地址,a和b都完全相同。当通过“==”来判断是,其结果为true。由于c,d两个值的范围超过了常量池的存储范围,因此,c,d是

2022-02-21 20:04:16 508

原创 字符串中常见的方法总结

一、构造方法1.String str1 = "abc";//通过字符串常量池创建String str2 = "abc";//通过字符串常量池创建这是创建字符串的一种特殊方法,此方法是在字符串常量池中创建的。 通过此方式创建,如果两个字符串的内容相同的话,则虚拟机不会再常量池中创建新的空间来存储,也就是说,此时的str1和st2是指向同一个内存空间,引用同一个字符串。2.String str = new String();//创建一个字符串,它的内容为空str = "abc";

2022-02-21 19:38:48 748

原创 java中抽象类和接口的区别

一、简介 在java中抽象类是指用abstract修饰的特殊类,抽象类中可以定义变量,常量,普通方法,抽象方法,抽象类中至少要有一个抽象方法。抽象类不可以实例化对象。抽象类被子类继承后必须要实现其中的抽象方法,除非继承它的子类也是一个抽象类。它虽然不能实例化对象,但是却允许用它的引用其指向子类的实例对象。抽象类只能继承一个类。但是可以实现多个接口。接口可以说是特殊的抽象类,是对抽象类的进一步抽象。接口中只允许有抽象方法,静态方法,和默认方法,不能有普通方法。接口中只能定义常量。不能定义变量..

2022-02-16 19:59:57 691

原创 java中“重载”和“重写”的区别

一、二者简介1.在java的同一个类中的不同的两个或者多个方法可以有相同的方法名,并且这些方法的参数个数,类型,顺序不同,这样的方法就称为方法的重载。如下所示:这三个方法就构成了重载。public class Main{ public static void main(Stirng[] args){ }public static void dosh(){}public static void dosh(int a,String b){}public static void dos

2022-02-16 19:13:33 326

原创 java在字符串中“==”和“equals”的区别

一、二者简介如果是两个基本类型的数据,"=="是判断两个数值是否相等。在两个字符串中“==”是判断它们的内存地址是否相同,“equals()”方法是比较两个字符串是否一样,它们的结果都是布尔值。例1:boolean is = (123 == 123);System.out.print(is);其结果为true,因为这两个基本类型的数的值是相等的。例2:String str1 = "abc";String str2= "abc";System.out.print(str1.

2022-02-11 20:46:34 2572

空空如也

空空如也

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

TA关注的人

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