自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 记一次EasyExcel的错误使用导致的频繁FullGC

记一次EasyExcel的错误使用导致的频繁FullGC

2024-07-01 23:33:18 1240

原创 【仿写spring之ioc篇】四、实现bean的初始化阶段

仿写spring ioc

2023-09-02 15:33:03 518

原创 【仿写spring之ioc篇】三、检查是否实现了Aware接口并且执行对应的方法

仿写springioc

2023-09-02 11:03:45 453

原创 【仿写spring之ioc篇】二、bean生命周期中的创建以及属性赋值

仿写spring ioc

2023-09-01 15:44:58 550

原创 【仿写spring之ioc篇】一、预期目标以及项目结构介绍

仿写spring ioc

2023-09-01 15:31:30 282

原创 【java并发编程的艺术读书笔记】java中的并发工具类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)

其实现原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。由于countDown方法可以用在任何地方,所以这里说的N个点,可以是N个线程,也可以是1个线程里的N个执行步骤。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方。因为没有第三个线程执行await方法,即没有第三个线程到达屏障,所以之前到达屏障的两个。例如,如果计算发生错误,可以重置计数器,并让线程重新执行一次。

2023-08-28 14:48:16 108

原创 【java并发编程的艺术读书笔记】ConcurrentHashMap是如何保证线程安全的

ConcurrentHashMap 使用了分段锁的机制,将哈希表分成多个段(Segment),每个段都拥有自己的锁。:ConcurrentHashMap 提供了一种安全的迭代器,可以在迭代时进行并发的读操作,而不会导致 ConcurrentModificationException 异常。:由于使用了分段锁,不同段的操作可以并行执行,这使得 ConcurrentHashMap 在多线程环境下能够提供较高的并发性能,同时避免了传统 HashMap 的并发问题。并发环境下HashMap可能会导致程序死循环,

2023-08-28 14:44:45 145

原创 【java并发编程的艺术读书笔记】AQS队列同步器简介、实现自定义锁

AQS)是 Java 并发包(java.util.concurrent)中一个重要的基础类,用于实现同步器(Synchronizer)的框架。AQS 提供了一种基于 FIFO 等待队列的机制,使得开发者可以相对容易地实现各种自定义的同步组件,例如锁、信号量、倒计时门栓等。AQS 主要是一个抽象类,它定义了一些基本的同步操作,而具体的同步逻辑需要子类继承并实现。AQS 内部维护了一个等待队列,用于管理等待获取同步状态的线程。AQS 的核心思想是,通过维护一个 state 变量来表示同步状态。

2023-08-28 14:38:30 151

原创 【java并发编程的艺术读书笔记】Lock接口简介、Condition类的使用、可重入锁与读写锁

Lock 接口是用于实现线程同步的一种机制。它提供了比传统的synchronized关键字更灵活和可扩展的方式来管理多个线程对共享资源的访问。Lock 接口的主要目标是解决synchronized关键字的一些限制,例如无法中断正在等待锁的线程不能尝试获取锁而立即放弃等待不能在等待一段时间后获取锁等等。

2023-08-28 14:24:04 146

原创 【java并发编程的艺术读书笔记】volatile关键字介绍、与synchronized的区别

volatile与synchronized

2023-08-27 21:37:30 149

原创 【并发编程的艺术读书笔记】synchronized锁升级机制详解

synchronized在早期被称为重量级锁,而到现在已经得到不少优化。偏向锁、轻量级锁、重量级锁指的是synchronized三种形态。

2023-08-22 11:43:53 94

原创 【深入理解jvm读书笔记】运行时数据区域有哪些

介绍各个运行时数据区域(程序计数器、java虚拟机栈、本地方法栈、java堆、方法区、运行时常量池)分别储存哪些数据,线程间是否共享

2023-08-21 16:44:18 244

原创 【深入理解jvm读书笔记】什么是引用分级(强引用、软引用、弱引用、虚引用)

引用设计引用分级的目的。

2023-08-21 16:35:27 103

原创 【深入理解jvm读书笔记】如何判断一个java对象是否已经死亡

当前主流的商用程序语言(Java、C#,上溯至前面提到的古老的Lisp)的内存管理子系统,都是通过可达性分析(Reachability Analysis)算法来判定对象是否存活的。缺点:占用了一些额外的内存空间,这个看似简单的算法有很多例外情况要考虑,必须要配合大量额外处理才能保证正确地工作,譬如单纯的引用计数就很难解决对象之间相互循环引用的问题。根据用户所选用的垃圾收集器以及当前回收的内存区域不同,还可以有其他对象“临时性”地加入,共同构成完整GC Roots集合。,搜索过程所走过的路径称为。

2023-08-21 16:33:57 127

原创 【深入理解jvm读书笔记】java中对象的内存布局

java对象的内存布局

2023-08-21 16:31:32 121

原创 【深入理解jvm读书笔记】jvm如何进行内存分配

一般来说(由字节码流中new指令后面是否跟随invokespecial指令所决定,Java编译器会在遇到new关键字的地方同时生成这两条字节码指令,但如果直接通过其他方式产生的则不一定如此),new指令之后会接着执行init()方法,按照程序员的意愿对对象进行初始化,这样一个真正可用的对象才算完全被构造出来。其实第一种方案就是给分配内存的操作加锁,指针碰撞的时候每个线程都不断尝试获取锁,而拿到锁的线程只有分配完对象内存空间并且修改指针后,才释放锁并通知其他线程,保证原子性。,这种情况的处理方案有两种。

2023-08-21 16:29:47 667

原创 【数据结构】回溯算法公式化解题 leetcode经典题目带刷:全排列、组合、子集

回溯算法(Backtracking Algorithm)是一种解决组合问题排列问题选择问题等一类问题的常用算法。它通过尝试所有可能的选择来找到问题的解,当发现当前选择不符合要求时,就回溯到之前的状态,然后尝试其他的选择。如果认真看完的朋友可以发现,对于这种基础的回溯题目,我们都可以通过循环+回溯来解决问题,只需要根据具体问题来更改我们的循环条件即可。当然这么做不一定是最好的,还有许多可以优化的地方,只是说大部分情况可以通过这种循环的方式来解决问题。

2023-08-21 16:22:57 856

原创 【仿写tomcat】七、项目结构优化以及代码开源

仿写Tomcat

2023-08-18 15:39:33 1241

原创 【仿写tomcat】六、解析xml文件配置端口、线程池核心参数

仿写tomcat

2023-08-18 09:51:27 744

原创 【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进

仿写tomcat

2023-08-17 14:33:00 861

原创 【仿写tomcat】四、解析http请求信息,响应给前端,HttpServletRequest、HttpServletResponse的简单实现

仿写tomcat

2023-08-17 13:03:11 1212

原创 【仿写tomcat】三、通过socket读取http请求信息

仿写tomcat

2023-08-17 11:41:06 1059

原创 【仿写tomcat】二、扫描java文件,获取带有@WebServlet注解的类

仿写tomcat

2023-08-17 11:03:58 547

原创 【仿写tomcat】一、tomcat工作流程

作者前不久刚仿写了一个简易的tomcat,在此分享给各位

2023-08-17 10:44:08 647

原创 【spring】spring bean的生命周期

本文测试并且介绍了spring中bean的生命周期,如果只想知道结果可以跳到最后一部分直接查看。

2023-07-27 16:02:38 977

原创 【深入理解jvm读书笔记】java虚拟机中对象创建的流程

java虚拟机中对象创建的流程

2023-07-26 21:08:36 281

原创 【java设计模式】创建型模式介绍(工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式)

本文介绍Java设计模式中创建型模式的五种

2023-07-25 16:29:18 1323

原创 【并发编程的艺术读书笔记】synchronized关键字与对象锁、类锁

本文介绍了synchronized关键字,并给出了对象锁,类锁的案例以及对书中死锁案例的分析。

2023-07-24 15:49:00 231

原创 【并发编程的艺术读书笔记】多线程的效率以及资源浪费问题

本文主要讨论多线程的效率以及资源浪费问题。

2023-07-24 14:14:56 116

原创 【java】java中注解的简介,如何自定义注解,有哪些类型,有什么作用

Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。首先要明确一点的是,注解并没有实际的作用,注解只是起到了标记的作用,仅此而已。

2023-07-22 21:27:46 225

原创 【仿写spring之mvc篇】一、通过反射读取带有@RequestMapping与@Controller注解的类并模拟请求路径调用方法

通过反射读取带有@RequestMapping与@Controller注解的类并模拟请求路径调用方法

2023-07-22 21:20:08 1146

原创 【vue2+element ui】添加修改共用表单的下拉框回显问题分析以及解决方案(附共用表单代码)

本人前端水平不佳,本文分享在编写个人项目前端代码的时候遇到的回显问题的解决办法,仅供参考。

2023-07-20 10:47:03 4033

原创 【java】对ArrayList中的元素进行排序的几种方式

对ArrayList中的元素进行排序

2023-07-19 17:47:52 8654 2

原创 【深入理解jvm读书笔记】java的优势以及jdk、jre、jvm三者之间的关系

java的优势,jdk、jre、jvm三者之间的关系

2023-07-19 00:22:47 226

原创 【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用

本文将介绍如何从零开始封装自己的starter并且引入到其他项目中使用

2023-07-18 15:49:55 3140

原创 【java】三大容器类(List、Set、Map)的常用实现类的特点

本文总结三大容器类(List、Set、Map)的常用实现类(ArrayList、Vector、LinkedList、HashSet、HashMap、HashTable)的特点。

2023-07-18 14:16:53 263

原创 【java】泛型与Object的区别,如何在实际场景中选择泛型以及Object

本文介绍泛型与Object的区别,如何在实际场景中选择泛型以及Object

2023-07-18 11:54:32 1236

原创 【java】源码配合实践一文弄清楚为什么重写equals一定要重写hashcode

本文会带各位从源码的角度以及实际应用案例探究为什么重写equals一定要重写hashcode。

2023-07-18 10:57:42 70

原创 【EasyExcel】在SpringBoot+VUE项目中引入EasyExcel实现对数据的导出(封装工具类)

封装easy excel工具类,实现后端导出以及下载功能

2023-07-17 17:50:00 2549 1

原创 【反向代理】反向代理及其作用

介绍反向代理及其作用

2023-07-15 13:33:42 672

空空如也

空空如也

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

TA关注的人

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