- 博客(39)
- 收藏
- 关注
原创 Java---CopyOnWriteArrayList详解
CopyOnWriteArrayList是ArrayList的线程安全版本,从他的名字可以推测。CopyOnWriteArrayList是在有写操作的时候会copy一份数据,然后写完再设置成新的数据。CopyOnWriteArrayList适用于读多写少的并发场景。
2022-08-25 00:02:59 1632
原创 java---HashMap源码解析
① JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的,当一个元素放入集合时,会计算key的Hash值,即hash(key),然后对数组的大小进行按位与运算计算一个桶下标(索引)。将key放入数组对应的桶下标索引处,将key尽可能的分散在不同的桶下标下面,可以让查找更加快速,时间复杂度为O(1), 但是不同的key也有可能计算出相同的桶下标(索引),此时需要通过equals()方法来查找key,虽然查找性能会有损失,但是可以解决桶
2022-08-24 20:02:03 190
原创 java---ArrayList源码解析
ArrayList 底层就是一个数组,依赖其扩容机制(后面会提到)它能够实现容量的动态增长,所以 ArrayList 就是数据结构中顺序表的一种具体实现。
2022-08-23 21:38:20 1517 1
原创 Java---synchronized锁的优化
引入偏向锁是为了在无多线程竞争的情况下尽量减少不必要的轻量级锁执行路径,因为轻量级锁的获取及释放依赖多次CAS原子指令,而偏向锁只需要在置换ThreadID的时候依赖一次CAS原子指令(由于一旦出现多线程竞争的情况就必须撤销偏向锁,所以偏向锁的撤销操作的性能损耗必须小于节省下来的CAS原子指令的性能消耗)
2022-08-23 15:46:04 1482
原创 java---JUC并发包详解
JUC是java.util.concurrent包的简称,在Java5.0添加,目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题!
2022-08-22 21:44:50 4890 1
原创 java多线程知识
sleep方法:是Thread类的静态方法,当前线程将睡眠n毫秒,线程进入阻塞状态。当睡眠时间到了,会解除阻塞,进入可运行状态,等待CPU的到来。睡眠不释放锁(如果有的话)。
2022-08-22 16:35:56 126
原创 java---CAS原理分析详解
CAS的全称为Compare-And-Swap,它是一条CPU同步原语,是一种硬件对并发的支持。它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的
2022-08-22 02:01:13 2322
原创 DNS域名解析过程详解
域名系统(Domain Name System),是因特网使用的命名系统,用来把人们方便记忆的主机名转换为机器方便处理的IP地址。
2022-08-21 00:24:05 10677
原创 java---Servlet运行原理及生命周期
Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app。
2022-08-20 15:59:33 399
原创 java---输入URL到展示页面
在网络中定位是依靠 IP 进行身份定位的,所以 URL 访问的第一步便是先要得到服务器端的 IP 地址。而得到服务器的 IP 地址需要使用 DNS(Domain Name System,域名系统)域名解析,DNS 域名解析就是通过 URL 找到与之相对应的 IP 地址。DNS协议是应用层协议。
2022-08-20 14:14:31 867
原创 java---垃圾回收算法(GC)
对垃圾回收算法,做了详细的原理介绍,特别是对于分代算法详细的介绍了他的基本的流程,以及需要注意的一些事项。
2022-08-19 20:45:50 6253 1
原创 Forward 与 Redirect 的区别
请求转发(Forward):发生在服务端程序内部,当服务器端收到一个客户端的请求之后,会先将请求,转发给目标地址,再将目标地址返回的结果转发给客户端。
2022-08-18 23:47:42 859
原创 java---TCP三次握手、四次挥手详解
.第一次握手:客户端请求建立连接,向服务端发送一个同步报文(SYN=1),同时选择一个随机数 SN(Sequence Numer)= x 作为初始序列号,并进入SYN_SENT状态,等待服务器确认。
2022-08-18 22:08:20 1953
原创 javaWeb---HTTP/HTTPS详解
HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议。HTTP 往往是基于传输层的 TCP 协议实现的.(HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP 实现)
2022-08-18 00:50:19 1014
原创 java---双亲委派模型
如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类) 时,子加载器才会尝试自己去完成加载。...
2022-08-17 13:25:14 486
原创 java---JVM类加载过程详解
程序主动使用某个类时,如果该类还未被加载到内存中,系统会通过加载、连接(验证、准备、解析)、初始化三个步骤对类进行加载也叫初始化。这里注意,解析这个过程不一定是顺序进行的,也可能在初始化阶段之后,这个是为了支持Java的运行时绑定。...............
2022-08-16 22:42:06 738
原创 java---关于MyBatis使用方法详解
首先,使用MyBatis框架是为了简化对于数据库的操作。MyBatis框架偏向于ORM模式;ORM模式核心思路就是尝试把表中的一条条记录完全映射成一个个对象。
2022-08-14 01:40:47 2160
原创 java---基于XML的 Spring Bean 注册与注入
基于XML的Spring对象的注册,一般分为两种形式;一是直接将类注册到Spring容器,通过构造方法、setter方法。二是将一个已经创建好的对象进行注册,通过静态方法、另外一个bean的实例化方法。
2022-08-13 23:56:18 795
原创 java---关于TCP可靠性详解
对于连接管理、超时重传机制,是为了更好的让确认应答机制更好的发挥作用。同时,通过上述的讲解,我们可以总结出TCP连接的三个特点:
2022-08-13 01:14:48 633
原创 java---线程创建的方法
在 Java 语言中,创建线程有 3 大类实现方式、7 种实现方法,如果是 JDK 1.8 以上版本,在不需要获得线程执行结果的情况下,推荐使用 Lambda 方式来创建线程,因为它的写法足够简洁。如果想要获取线程执行结果,可使用 FutureTask + Callable 的方式来实现。......
2022-08-10 23:29:53 962
原创 java---线程安全详解
线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。
2022-08-10 00:40:10 4405
原创 java---线程池详解
线程池是线程使用的一种模式,它将线程和任务的概念分离开,使用线程来执行任务,并提供统一的线程管理和任务管理的实现方法,避免了频繁创建和销毁线程所带来的性能开销。
2022-08-09 13:06:12 512
原创 java---单例模式
单例模式适用于经常被访问的对象,或是创建和销毁需要调用大量资源和时间的对象,使用单例模式可以避免频繁创建和销毁对象。单例模式的常用实现方法有 4 种:饿汉模式、懒汉模式、静态内部类和枚举。...
2022-08-08 00:38:25 175
原创 java关于对象比较---equals与hashCode详解
hashCode 和 equals 两个方法是用来协同判断两个对象是否相等的,采用这种方式的原因是可以提高程序插入和查询的速度,如果在重写 equals 时,不重写 hashCode,就会导致在某些场景下,例如将两个相等的自定义对象存储在 Set 集合时,就会出现程序执行的异常,为了保证程序的正常执行,所以我们就需要在重写 equals 时,也一并重写 hashCode 方法才行。...
2022-08-06 13:03:43 2255 1
原创 七大排序之---归并排序---小和问题、逆序对
对基于分治思想的归并排序做了详细的讲解,以及关于归并排序衍生出来的两个比较重要的题目做了详细的了解,相信你看了之后,对于归并排序的题目会柳暗花明的!!
2022-08-03 22:58:59 168
原创 操作系统作用详解---进程管理
首先,我们需要明白操作系统(OS)是一个管理资源(硬件、软件)的软件。同时OS是一个分配者,分配的主体就是任务。站在任务的角度,就是一切资源都需要找到OS申请后才可以使用。而这个任务就是...
2022-08-02 01:12:31 121
原创 MySQL三范式与事务、索引详解
首先了解什么是事务:一个事务就是为了执行一个业务的一个或者多个语句。例如我们耳熟能详的图书馆管理系统,其中的借书的这一个功能,简略的来说最起码设计两个sql语句;一个是对于书的数量减少(update),二是在借书记录的表里面加入(insert)一条谁借了什么数。所以这两个sql就要作为一个整体,并且具有不可分割的特性。...
2022-08-01 00:05:13 212
原创 反射-----基础应用
一、定义 Java的反射(reflflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任 意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信 息以及动态调用对象方法的功能称为java语言的反射机制。二、用途 1、在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方...
2022-04-13 21:26:06 92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人