Java
文章平均质量分 77
Java笔记
.番茄炒蛋
这个作者很懒,什么都没留下…
展开
-
JVM内存模型深度剖析
指定元空间出发Full GC的初始阈值(元空间无固定初始大小),以字节为单位,默认是21M左右,达到该值就会触发Full GC进行类型卸载,同时收集器会对该值进行调整:如果释放了大量的空间,就适当降低该值,如果释放了很少的空间,那么在不超过 -XX:MaxMetaspaceSize(如果有设置的话)的情况下,适当提高该值.这个跟早期jdk版本的。:-Xss设置越小,count值越小,说明一个线程栈里能分配的栈帧就越少,但是对于JVM整体来说能开启的线程数就会更多.使用字节码手册来分析字节码文件;原创 2024-04-09 21:54:02 · 1165 阅读 · 0 评论 -
TRUNCATE TABLE t 和DELETE FROM t的区别
TRUNCATE TABLE user是一种DDL(数据定义语言)语句,而DELETE FROM user是一种DML(数据操作语言)语句.DDL语句用于定义数据库结构,而DML语句用于对数据进行操作TRUNCATE TABLE user通常比DELETE FROM user更快,TRUNCATE 语句通过删除表中的所有数据并释放存储空间来执行操作.相比之下,DELETE 语句是逐行删除,需要遍历每一行并记录事务日志.因此它可能需要更长的时间来完成。原创 2023-05-30 20:03:29 · 743 阅读 · 0 评论 -
布隆过滤器详解
本文全部代码地址布隆过滤器是一种高效的数据结构,用于判断一个元素是否存在于一个集合中.它的主要优点是速度快,空间占用少,因此在需要快速判断某个元素是否在集合中的场合得到广泛引用.布隆过滤器就是一个大型的位数组和几个不一样的无偏hash函数.所谓无偏就是能够把元素的hash值算的比较均匀.当布隆过滤器说某个值存在时,这个值可能不存在;当它说某个值不存在时,那就肯定不存在.原创 2023-04-21 22:47:19 · 905 阅读 · 0 评论 -
HashMap源码分析
HashMap是Java集合框架中常用的一种数据结构,它是一种基于哈希表实现的映射表.在JDK1.8版本中,HashMap的get方法和put方法的实现与之前版本有些不同,下面我们来逐步分析其源码实现.原创 2023-04-06 20:54:57 · 325 阅读 · 0 评论 -
JSONObject.parseObject将_id赋值给id问题
上面两个方法相似度是比较高的,唯一不同的是fnv1a_64_extract再对key循环的过程中过滤掉了_和-字符,这样的话相当于将_id变成了id所以返回的FieldDeserializer是id对应的FieldDeserializer,所以到最后会将json中_id的值赋值给对象中的id。原创 2022-11-01 21:58:41 · 910 阅读 · 0 评论 -
SimpleDateFormat的线程安全问题
再方法里面先后调用了cal.clear()和cal.set(index, field[MAX_FIELD + index]),也就是先清除cal对象中设置的值,再重新设置新的值.由于Calendar内部没有线程安全机制,并且两个操作也不是原子性的,所以再多个线程同时操作一个SimpleDateFormat时就会引起cal值混乱,为了重现SimpleDateFormat线程安全问题,使用线程池和CountDownLatch和Semaphore重现线程安全问题;parse里面又调用了同类的parse方法。原创 2022-10-11 19:45:00 · 545 阅读 · 0 评论 -
线程的执行顺序
调用线程的wait()方法时,会使主线程处于等待状态,等待子线程执行完成后再次向下执行.也就是说,再ThreadSort类的main()方法中,调用thread1的join()方法,会阻塞main()方法的执行,当thread1执行完成后,main()方法继续向下执行.启动thread2,调用thread2.join()方法…以此类推,确保线程按照线程的启动顺序来执行。原创 2022-09-01 22:58:49 · 1710 阅读 · 2 评论 -
java根据xml模板生成对应的xml
xml模板代码测试原创 2022-06-19 19:55:30 · 1764 阅读 · 0 评论 -
解析IntegerCache
IntegerCache简介介绍 /** * Returns an {@code Integer} instance representing the specified * {@code int} value. If a new {@code Integer} instance is not * required, this method should generally be used in preference to * the constructo原创 2022-05-06 21:05:58 · 88 阅读 · 0 评论 -
深入理解线程池的构造方法以及底层工作原理
/** * * @param corePoolSize 线程池的核心线程数,当提交一个任务时,线程池创建一个新线程执行任务,直到当前线程数等于corePollSize; * 如果当前线程数为corePoolSize,继续提交的任务会被保存到阻塞队列中,等待被执行; * 如果执行了线程池的prestartAllCoreThread()方法时,线程池会提前创建并启动所有的核心线程 ...原创 2021-09-12 16:56:42 · 251 阅读 · 2 评论 -
ReentrantLock加锁解锁的过程
文章目录简介与synchronized相比 相同点 不同点构造方法加锁简介 ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种保证线程并发安全的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程安全.与synchronized相比 相同点都是独占锁的实现都是可重入锁原创 2021-08-31 23:07:56 · 382 阅读 · 3 评论 -
深入理解synchronized关键字
synchronized这个关键字相信大家都知道,并且都用过,基本上写过java的人应该都用过synchronized这个关键字;java本身是支持多线程的,再多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这种资源统称为临界资源,这个资源可能是:对象、变量等;共享:资源可以由多个线程同时访问可变:资源可以再其生命周期内被修改引出的问题:由于线程再执行的过程中是不可控的,所以会出现线程并发安全问题;10个线程同时执行,每个线程对临界资源TOTAL进行1000次++操作,原创 2021-08-18 23:06:51 · 422 阅读 · 5 评论 -
从HelloWorld聊一聊类加载器和双亲委派机制
众所周知,类加载主要是通过类加载器实现的,但是大多数人都是知其然,而不知其所以然,HelloWorld这个类大家都不陌生,从这个类开始聊一聊类加载器和双亲委派机制;package com.fanqiechaodan.classloader;/** * @date 2021/6/24 21:44 * @declare */public class HelloWorld { public static void main(String[] args) { System.o原创 2021-06-24 23:42:45 · 154 阅读 · 3 评论 -
浅谈类的加载过程
相信所有的程序员再初学的时候都敲过HelloWorld这个类,当HelloWorld输出再你的控制台的时候,仿佛打开了新世界的大门一样,今天就从HelloWolrd这个类来谈一下类加载的机制;package com.fanqiechaodan.classloader;/** @date 2021/6/23 22:07 @declare */public class HelloWorld { public static void main(String[] args) {原创 2021-06-23 23:19:36 · 258 阅读 · 3 评论