自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中String作为参数传递的坑

String作为参数传递的坑

2022-08-18 17:20:56 1054 1

原创 JVM对String拼接的优化

JVM对String拼接的优化以及StringBuilder分析

2022-06-09 17:30:45 588

原创 ScheduledThreadPoolExecutor --- DelayedWorkQueue源码解析

DelayWorkQueue与ScheduledFutureTask分析

2022-06-07 18:07:02 488

原创 Java PriorityQueue 核心源码分析

PriorityQueue分析

2022-06-01 20:53:16 139

原创 ArrayList扩容流程源码解析

首先,介绍一下ArrayList里几个比较重要的参数名称作用DEFAULT_CAPACITY第一次插入元素以后,List会扩容到这个值(10)elementData实际存放元素的数组(懒惰初始化)sizeList中实际存在的元素(并非数组的大小)DEFAULTCAPACITY_EMPTY_ELEMENTDATA当创建链表时,不传入任何参数,就会把这个空数组赋值给elementDataEMPTY_ELEMENTDATA当创建链表时,传入的initialC

2022-04-14 21:26:03 265 1

原创 Synchronized为什么是重量级锁?

Synchronized 是Java中的一种锁实现,很多资料中都有说这是一个重量级锁(对其有许多优化,轻量级锁、偏向锁等),但是剔除这些优化的情况下,为什么 Synchronized 是一个重量级锁呢?以下的思考基于 RentrantLock 和 Synchroinzed 展开思考1 会不会是因为Synchronized关联了一个Monitor对象呢?某面试官对我的回答: 这仅仅只是关联了一个对象,不足以让 Synchronized 称为重量级锁思考2 会不会是因为维护了阻塞队列和等待队列呢?

2022-04-14 21:22:52 1477

原创 Spring解决循环依赖

在Spring中,一个对象的初始化一共分为了三步对象实例化(仅仅只是创建了这个对象,属性未注入)属性注入初始化在解决循环依赖的时候主要使用的是三级缓存(也就是三个map),分别是singletonObjects 用于存储平时拿到的完整beanearlysingletonObjects 用于存储属性还没注入的beansingletonFactories 对象工厂,key是beanName,value是一个工厂(用于判断返回代理对象还是普通对象)假设有对象A和对象B相互依赖在对象A完成

2022-04-10 16:33:22 357

原创 Java的Socket类与网络编程(附带实现在线聊天功能)

网络编程1. 软件结构现在互联网主流的软件结构分为两大类:B/S结构: 全称是Browser/Server结构,是指浏览器/服务器结构。常见的的浏览器有谷歌、搜狐等。C/S结构: 全称是Client/Server结构,是指客户端/服务器结构。常见的有QQ、迅雷等软件。2. 网络通信协议网络通信协议: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中这些连接和通信的规则被称

2021-07-30 21:39:35 397

原创 Java——IO流(三) 转换流、序列化流与打印流

1. 转换流1.1 字符编码和字符集字符编码计算机中存储的信息都是二进制数表示的,屏幕上看到的文本、图片等都是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。反之将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。编码: 字符(看得懂的) --> 字节(看不懂的)解码: 字节(看不懂的) --> 字符(看得懂的)字符编码Character Encoding:就是一套自然语言的字符与二进制数之间的对应规则编码表:生活中文字和计算机中二进制的

2021-07-28 19:00:39 100

原创 Java——IO流(二) 缓冲流

缓冲流1. 概述缓冲流也被称作高效流。它是普通IO流的增强。缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小(8192KB)的缓冲区数组,一次性读取指定大小的内容到缓冲区数组中,以此减少IO的次数,提高效率。2. 缓冲流的类型字节缓冲流BufferedIntputStreamBufferedOutputStream字符缓冲流BufferedReaderBufferedWriter3. 字节缓冲流3.1 字节缓冲输出流java.io.Buffere

2021-07-28 17:13:44 107

原创 Java——IO流(一) IO流基础

IO流基础篇1. 概述1.1 什么是IO流? I 代表的就是Input 也就是输入O 代表的就是Output 也就是输出流 代表的是数据(字符或者字节) 一个字符等于两个字节 一个字节等于八位二进制数。1.2 Java中IO的分类根据数据的流向分为:输入流和输出流输入流:把数据从其他设备上读取到内存中的流输出流:把数据从内存中写出到其他设备的流根据数据类型分为:字节流和字符流1.3 Java中IO的顶级父类输入流输出流字节流字节输入流InputSt

2021-07-28 16:36:09 149

原创 Java中的File类

File类1. 概述File类是一个与操作系统无关的类,任何操作系统都可以使用。Java把电脑中的文件和文件夹封装成一个File类,我们可以使用File类对文件和文件夹进行操作。java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。2. 构造方法public File(String pathname) 通过将给定的路径名转换为抽象路径名来创建一个File实例路径可以是以文件结尾,也可以是以文件夹结尾路径可以是相对路径,也可以是绝对路

2021-07-27 21:35:02 74

原创 Java垃圾回收器详解

垃圾回收器类型本文涉及的垃圾回收器主要有以下的四种:串行垃圾回收器吞吐量优先的垃圾回收器响应时间优先的垃圾回收器G1垃圾回收器JDK8默认使用的是吞吐量优先的垃圾回收器,JDK9默认使用的是G1垃圾回收器串行垃圾回收器特点单线程(仅仅指垃圾回收线程,用户线程可以是多个的)堆内存较少,适合个人电脑相关的VM参数-XX:+UseSerialGC 开启串行垃圾回收器工作流程串行垃圾回收器的工作分为了两个部分,分别称为Serial和SerialOld。Seria

2021-06-30 10:49:19 2426

原创 Java垃圾回收机制详解

垃圾回收什么对象可以回收?判断一个对象是否可以被垃圾回收有两个常见方法:引用计数法可达性分析法引用计数法缺点比较明显,容易引起内存泄漏,所以jvm采取的是可达性分析法。可达性分析法扫描堆内存的所有对象是否被根对象引用(是否能够沿着GC Root对象为起点的引用链找到该对象),如果没有被引用,则可以被垃圾回收。GC Root对象(引用对象并非引用变量)有以下五类:虚拟机栈中局部变量表引用的对象(活动线程中局部变量引用的对象)方法区中类静态属性引用和常量引用对象本地方法栈中

2021-06-28 23:24:17 142

原创 Java中StringTable的理解

StringTable定义俗称串池,用于存储字符串类型的引用。存储位置JDK1.6的时候存储在永久代的常量池中,JDK1.8为了提高回收效率,把StringTable存放在堆中。结构存储结构为HashTable,也就是数组+链表的形式,不允许扩容。使用Hash值来确定元素应该放在数组的哪一个位置,当Hash值相同时称为哈希冲突,这时首先判断hash值相同的元素是否相同,如果是的话拒绝插入,如果不是的话则会在链表中插入元素。特性字符串会延迟加载,执行到该代码的时候才会加载到Str

2021-06-27 17:59:32 568

原创 Java8内存结构组成与分析

Java8内存结构图内存组成程序计数器虚拟机栈本地方法栈堆方法区程序计数器

2021-06-27 15:15:20 289

原创 JVM类加载器命名空间的详细总结

类加载器的命名空间本文的父子加载器不代表有继承关系,仅仅只是一种上下级的表达。命名空间的概念每个类加载器都有各自的命名空间,命名空间由该加载器及所有父加载器所加载的类组成在同一个命名空间中,不会出现全限定类名相同的两个Class对象在不同的命名空间中,可以出现全限定类名相同的两个Class对象父加载器加载的类对其子加载器可见,子加载器加载的类对其父加载器不可见如果两个加载器之间没有直接或间接父子的关系,那么它们各自加载的类相互不可见案例验证1.定义一个Student类,里面有一个Stu

2021-06-02 19:47:19 296 2

原创 Java注解和反射

前言本文学习的内容来源于遇见狂神说的注解与反射系列视频,笔记皆为自己总结手敲,并不是原文cp。注解内置注解注解名称参数注解作用@Override无修饰方法,表示一个方法打算重写父类中的方法@Deprecated无修饰方法、类、属性。表示不鼓励程序员使用这个元素,因为存在风险或者有更好的选择@SuppressWarningsall(全部)用于抑制编译时的警告信息元注解作用: 负责注解其他注解注解名称参数注解作用@Target

2021-05-10 20:47:50 91

原创 LeetCode打卡 78-子集-中等 回溯算法

题目解决过程一开始自己想不到解决方法,看了题解以后找到了一种比较容易理解而且应用广泛的解题方法——回溯算法。代码实现 List<Integer> temp = new ArrayList<Integer>(); //建立一个暂存当前元素的List List<List<Integer>> result = new ArrayList<List<Integer>>(); //建

2021-05-08 09:42:58 73

原创 Java的七种排序算法

Java排序算法本文涉及的排序算法类型直接插入排序希尔排序简单选择排序冒泡排序快速排序归并排序基数排序直接插入排序基本思路将新的数据插入已经排好的数据中。代码实现public class Insert { public static void main(String[] args) { int[] nums = {2,57,146,22,34,0,195,47,92,31}; for(int i = 1;i < nums.length;i++) { //对第

2021-05-05 21:10:52 81

原创 Java集合的学习笔记与总结

集合种类集合的父接口有两个,一个是Collection接口,另一个是Map接口。List的特点有序有下标元素可重复Set的特点无序无下标元素不能重复List的实现类ArrayListLinkedListVectorSet的实现类HashSetSortSet中的TreeSetCollection父接口方法boolean add(Object obj) 添加一个对象boolean addAll(Collection c) 将一个集合中的所有对象添加

2021-04-27 22:19:59 75

原创 每日LeetCode打卡 461-汉明距离-简单

题目解决过程自己思考以后,我列出了我的基本思路:先把两个整数转换为二进制字符串获取两个整数二进制字符串的长度(因为转换为二进制字符串的时候在最后一个1的左边不会自动补充0,也就是说二进制字符串的长度很可能不一致,这样会导致后续遍历的时候出问题)比较两个字符串的长度(在前方补0直至两个长度一致)遍历里面的每一个字节,找出不一样的数字并且记录数量。public int hammingDistance(int x, int y) { //如果x和y相等,则没有不一样的数量 if(

2021-04-22 02:26:31 61

原创 每日LeetCode打卡 283-移动零-简单

题目解决过程一开始自己做的时候,只想到使用暴力递进的方式,通过层层循环从而使0一个个挪到数组的最右侧。public void moveZeroes(int[] nums) { for(int i = 0;i < nums.length-1;i++){ //进行数组大小次数的循环,每一次循环把其中一个0挪到最后 for(int j = 0;j < nums.length-1;j++){ //如果第j个元素等于0 就和j

2021-04-22 02:04:20 94

原创 自己学习Myabtis框架的一些小总结

前言:Mybatis是目前Web项目中比较好用的持久层框架,也是后期SSM整合当中的一员,它能为我们省去以前连接数据库,处理逻辑等比较麻烦的代码。回顾:相信大家都还忘不掉当初使用原生jdbc写Dao的痛苦。通过反射获取JDBC驱动、创建Connection、获取Connection、使用PreparedStatement预处理sql语句等等一系列的操作。上面的代码是不是看到也头痛了呢?而Mybatis框架为我们解决了不少的烦恼。Mybatis的准备工作1.建议大家先去学习一下有关于Maven的

2021-03-14 17:03:27 133 1

空空如也

空空如也

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

TA关注的人

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