自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JavaScript常用事件详见

onkeypress:某个键盘按键被按下并松开。onmouseover:鼠标移到元素之上。onmousedown:鼠标按钮被按下。onmouseout:鼠标从某元素移开。onkeydown:某个键盘按键被按下。onmouseup:鼠标按键被松开。onmousemove:鼠标被移动。onkeyup:某个键盘按键被松开。ondblclick: 双击事件。onsubmit:确认按钮被点击。onchange:域的内容被改变。onreset:重置按钮被点击。onselect:文本被选中。onclick: 单击事件。

2022-11-17 17:36:56 229 1

原创 Java类加载机制

类加载:就是将类的class文件读入内存,并创建一个Java.lang.class对象。类在运行期第一次使用时,首先会被类加载器动态加载至JVM。类的加载过程又分为了五个阶段:加载、验证、准备、解析、初始化。为了方便记忆可以编为一个口诀:家(加载)宴(验证)准备(准备)了西(解析)式(初始化)菜。

2022-10-09 21:52:16 1526 1

原创 TCP协议的拥塞控制

再TCP协议中,为了防止当传输数据量过多从而造成网络拥堵的情况,因从,采用拥塞控制、流量控制等方法来避免出现这种情况。:流量控制是TCP协议特有的功能,TCP协议规定接收方与发送方都有一块固定的缓冲空间,而发送的数据量大小由接收方所控制,当接收方来不及处理发送方的数据时,就会通知发送方降低发送效率,以此来达到流量控制的目的。:拥塞控制也是TCP协议特有的功能,拥塞控制重要是通过慢开始、拥塞避免、快重传、快恢复这四个算法来避免产生拥塞。

2022-10-08 13:39:42 3164 1

原创 如何判断对象可被GC回收?

判断对象可被GC回收有两种办法分别是:引用计数算法和根可达性算法。

2022-10-07 21:21:01 2282

原创 Java内存模型(JMM)

全称Java Memory Model(JMM)。我们都知道创建一个对象需要分配内存空间并且在不需要该对象时及时回收内存。仔细回想,我们似乎并没有为我们new创建的每一个对象来编写过分配内存空间及回收内存相应的代码。但对象仍然很好的被回收了,原因是Java程序将内存的控制权交给了JVM虚拟机,所以在不了解虚拟机的内存机制的情况下,如果出现了内存泄漏与溢出,那么排查错误将是一个非常艰巨的任务。要想知道JVM如何规划内存,首先要知道数据在内存中如何储存,当然不同类型的数据在内存中所存储的区域也不同。

2022-10-06 12:38:18 6010 8

原创 数据结构--树&二叉树

使用树节点储存的每一个数据元素都被称为节点。

2022-10-05 16:56:51 1205

原创 数据结构--栈&队列

要实现浏览器的回退与前进这个功能只需要两个栈,其中一个栈为前进栈而另一个栈为后退栈,假设依次访问了1、2、3、4个页面,我们就需要将1、2、3、4个页面依次压入前进栈,如果要回头看2这个页面,当点击回退按钮时,首先会从前进栈中弹出4、3页面然后压入后退栈中,假设又需要访问3页面,则在点击前进按钮,这时后退栈中首先会弹出3页面然后压入前进栈,以此规律来实现浏览器的回退与前进功能。队列的数据结构可以由数组或者链表实现,用数组实现的队列叫顺序队列,用链表实现的队列叫链式队列。播放歌曲时,从队头取出。

2022-10-04 19:35:12 869 2

原创 数据结构--线性表

线性表,是指将具有“一对一”关系的数据依次储存到物理空间中,这种储存结构又称为“线性储存结构”,在物理空间中有两种线性储存结构分别为:顺序储存结构和。是将数据集中存放,在物理内存空间中分配一块连续的空间,将数据依次储存在这块连续空间中,简称“顺序表”是将数据分散存放,数据分散存放在物理内存空间中,通过维护“一根线”来保存数据之间的逻辑关系,简称“链表”在Java中,我们通常使用数组来定义顺序表,使用下标来访问数组中的元素,首元素的下标为0,尾元素的下标为长度-1长度固定,必须提前预估长度。

2022-09-29 19:58:34 646 1

原创 带你了解“JSON解析”

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。Fastjson的优点速度快、使用广泛、测试完备、使用简单、功能完备。

2022-09-28 20:50:05 994 1

原创 TCP与UDP的区别

TCP协议:TCP协议是传输控制协议,它是面向连接的可靠传输层协议,在传输数据之前必须建立连接UDP协议:UDP协议是用户数据报协议,它是无连接的不可靠传输层协议,在传输数据之前不需要建立连接。

2022-09-25 17:12:57 1163

原创 浅谈浏览网站的整个过程

大家经常会在网上冲浪,那么当我们打开浏览器,在地址栏中输入网址,然后敲击回车的过程中究竟经历了哪些操作呢?

2022-09-23 13:37:00 634 3

原创 CopyOnWriteArrayList源码分析

CopyOnWriteArrayList是一个线程安全的ArrayList,他的内部存储架构采用Object[ ]数组,线程安全使用ReentrantLock实现他与ArrayList的最大区别就是,对我们在这个集合容器中对元素进行改动操作(删除,添加,修改)时会首先复制出一个新的集合容器,然后在新的集合容器中写入改动后的数组元素,最后将原容器的引用指向新容器因此,CopyOnWriteArrayList是一个写入操作时线程安全的集合,且允许进行并发读的操作,实现读写分离的思想。

2022-09-18 18:47:05 247

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

当创建一个对象时,对象首先会检查在Eden是否有足够存放空间,当Eden区存放空间足够时,就会给当前对象分配内存空间,当Eden区存放空间不足时,这时会触发,即YGC垃圾回收,在Eden区实现清除策略,没有被引用的对象则直接回收。而依然存活的对象会被移送到Survivor区。Survivor区分为from(S0)和to(S1)两块内存区域。每次YGC的时候,它们将存活的对象复制到未使用的Survivor空间(s0或s1),然后将当前正在使用的空间完全清除,交换两块空间的使用状态。

2022-09-18 17:29:28 1093 3

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

Session相当于程序在服务器上建立的一份客户档案,当程序需要为某个客户端的请求创建一个Session时,服务器首先检查这个客户端的请求里是否包含了一个Session标识(即SessionId),如果已经包含一个sessionId则说明以前已经为此客户创建过Session,服务器就按照SessionId把这个Session检索出来使用。如果客户请求不包含sessionId,会自动获得一个Session ID。并本次响应中返回给客户端保存。我们把这种基于唯一ID识别用户身份的机制称为Session。

2022-08-25 14:24:53 452

原创 简述Servlet的生命周期

在讲述Servlet的生命周期之前,我们一定要了解什么是Servlet?Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。以上代码是一个简单的在浏览器上显示一段UUID优惠码 ,可以看到在响应时,响应头输出内容十分繁琐。

2022-08-21 16:54:25 3790 2

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

前言 HashMap采用:数组+链表+红黑树作为储存结构;当添加一个键值对元素时,HashMap发生了什么呢?HashMap是Map集合的实现类:Map<K, V>是一种键-值映射表且key无序唯一,当我们向HashMap中添加一个键值对元素时,就调用了put(K key, V value)方法,此时就相当于把key和value做了映射并放入了Map中。就可以通过调用get(Object key)方法获取到对应的value。如果key不存在,则返回null。...

2022-08-14 10:13:28 348

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

FTP协议是文件传输协议,是一种基于TCP/IP协议的协议,他包括FTP服务器和FTP客户端;FTP服务器用来储存文件,FTP客户端需通过FTP协议对服务器进行访问,FTP服务器通常不需要我们手动编写,而是借助于已经成熟的FTP服务器程序,基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"和"上传"。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。...

2022-08-06 20:38:13 550

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

对称加密算法就是传统的用一个密码进行加密和解密;非对称加密是指加密和解密使用的不是相同的密钥,只有同一个公钥-私钥对才能正常加解密。典型的非对称式加密算法就是RSA算法;//RSA//明文//创建公钥/私钥对//用Alice的公钥加密//获取Alice的公钥,并输出System.out.println(String.format("publickey(公钥)//使用公钥加密//用Alice的私钥解密//获取Alice的私钥,并输出。...

2022-07-22 19:20:06 1581 2

原创 网络编程----基于Java Email的电子邮件发送

利用SMIP协议发送邮件前言电子邮件(electronicmail,简称E-mail,标志@)又称电子信箱、,它是—种用电子提供信息交换的。电子邮件指用电子手段传送、单据、资料等信息的通信方法。电子邮件综合了电话通信和信件的特点,它传送信息的速度和电话一样快,又能象信件一样使收信者在接收端收到文字记录。电子邮件系统又称基于的邮件系统。我们熟悉的邮件软件比如Outlook、网易闪电邮、Foxmail都是用来收发邮件的。当然,使用Java程序也可以收发电子邮件。邮件发送传统的邮件的发送过程。...

2022-07-17 18:13:38 5546 2

原创 网络编程中“TCP”编程——简单通信

计算机网络是指两台或多台计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因此所有计算机必须遵循同一种网络协议。

2022-07-17 17:15:46 796 1

原创 Excel文件解析

java程序开发过程中经常需要使用Excel文件来进行数据的导入与导出,因此,我们必须学会对Excel文件解析或生成。

2022-07-17 12:14:37 1202 2

原创 Properties文件的读取和写入:

在进行Properties文件的读取和写入操作之前,我们得先了解什么是Properties文件:properties是一种资源属性文件。 这种文件以键值对key=value的格式存储内容 ,每一行都是一个键值对Properties文件的读取:当然,我们仍然可以利用BufferedInputStream缓冲输入流传入FileInputStream作为数据源使用read()方法对Properties文件进行内容读取,但是这样操作我们无法通过键来获取值,失去了properties文件以键值对key=value

2022-06-05 13:28:44 505

原创 zip文件的读取与写入:

在Java中,zip文件的读取和写入需要引入ZipInputStream 和 ZipOutputStream。先说zip文件的读取:ZipInputStream继承自InflaterInputStream,而InflaterInputStream又继承自FilterInputStream,因此ZipInputStream属于包装器,他不可以直接对zip文件进行操作,在使用时需要传入一个InputStream的子类作为数据源,当创建好ZipInputStream的对象后,需要循环调用getNextEnt

2022-06-04 19:24:41 888 1

原创 论“FileInputStream”与“BufferedInputStream”的区别

在谈“FileInputStream”与“BufferedInputStream”的区别之前,我们先要明白“FileInputStream”与“BufferedInputStream”分别是什么;FileInputStream,它是InputStream的实现类,又被称为“字节输入流”,FileInputStream是到磁盘中读取文件,在读取文件时可以以一个字节一个字节读,也可以一批字节一批字节地读,具体实现代码如下:到磁盘中逐个读取:public static void main(Str..

2022-05-18 20:42:18 212

原创 栈模拟队列

要想使用栈模拟出一个队列,我们首先必须要了解的是:队列和栈的数据结构;队列:Queue是一种先进先出(FIFO:First In First Out)的数据结构。一般来说,它只允许在队首进行删除操作,队尾进行插入操作。栈:Stack是一种后进先出(LIFO:Last In First Out)的数据结构。Queue与Stack都为线性表结构Stack的后进先出与Queue的先进先出正好相反所以如果要用栈模拟队列,就必须要模拟队列先进先出的特点在这里我们可以采用定义两个栈(一个入队栈、一个出队栈)

2022-05-11 18:15:35 1174

原创 浅谈List、Set、Map、Queue、Deque、Stack的遍历方式

在集合中,实现过iterable接口的集合类都可以调用iterator对象进行对集合的遍历;集合分为collection和map在collection下又分为list和setList集合是有序集合可以通过索引查找元素位置ilist集合的遍历方式总共有三种第一种是for循环for(int i=0;i<lise.size();i++){ System.out.println(list.get(i));}第二种是foreach循环(这种循环相当于使用iterator遍历)for(Str...

2022-05-11 13:54:27 326 1

原创 基于Integer对缓存池的理解

Integer内部已经把-128~+127在缓存池中已经创建好了e.g. Integer x1=12;Integer y1=12;Integer x2=142;Integer y2=142;Integer x3=Integer.valueOf(12);Integer y3=Integer.valueOf("12");Integer x3=Integer.valueOf(142);Integer y3=Integer.valueOf("142");System.out.pr

2022-02-21 20:20:58 135

原创 StringBuilder和StringBuffer的区别

相同点:StringBuilder和StringBuffer都是可变字符串,String是不可变字符串都是AbstractStringBuilder类的子类不同点:stringBuilder类中的方法没有使用synchronized关键字,所以它的方法都是“线程”不安全(返回值不准确),但是性能好 StringBuffer类中的方法使用synchronized关键字,所以它的方法都是“线程”安全,但是性能较差synchronized关键字相当于“一把锁”,当其中一个“线程”在操...

2022-02-21 19:27:14 145

原创 字符串常见方法总结:

获取字符串的长度:int length():获取指定字符串的长度(字符个数);字符的搜索:char charAt(int index):获取指定index下标位置的字符;比较字符串:boolean equals(Object anObject) :比较字符串的内容是否相同;大小写转换:String toLowerCase():把字符串转换为小写字符串;String toUpperCase():把字符串转换为大写字符串;字符串的搜索:int indexOf(Str...

2022-02-21 18:31:04 175

原创 Abstract抽象与Interface接口的区别

Abstract抽象:先说抽象方法,抽象方法不像普通方法一样,它没有方法体{}、并且要使用abstart关键字修饰、而且抽象方法只能写在抽象类中;e.g. public void student(){...} //普通方法public abstart void student(); //抽象方法再说说抽象类,抽象类一般作为父类,在继承一个抽象父类时必须要重写父类的抽象方法(子类也是抽象类时不用重写)抽象方法中可以有构造方法、成员变量Interface接口:Interface接口更像是一个

2022-02-16 19:37:49 279 1

原创 Overload方法重载与Override方法重现的区别

方法重载:是多个方法的方法名相同,但各自参数(类型、顺序、个数)不同;一般方法重载的返回值类型相同(如返回值类型不相同也不影响方法重载);方法重载完成的是一个类中输入不同参数实现某种类似的功能。方法重写:继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为方法重写还称为(覆盖)(覆写);方法重写之前一般要写@Override,用于配合编译器检查当前方法是否"重写";方法签名不同(方法重载),方法签名相同且返回值类型相同(方法重写)方法重写是子类对父类的方法进行改写覆

2022-02-16 19:09:48 165 1

原创 “==“与“equals“的区别

"=="与"equals"两个都是以boolean形式返回。"=="一般用于比较整形(byte、short、int、long)与字符形变量(char)。"equals"常惯用与字符串与字符串之间的比较。当用"=="对引用类型变量进行比较,是对变量地址之间的比较:e.g. String str1="JQK",str2="JQK",str3="jqk".toUpperCase();System.out.println(str1==str2);System.out.println(str1

2022-02-11 21:18:06 593 1

空空如也

空空如也

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

TA关注的人

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