java
文章平均质量分 56
sunny_daily
java、数据结构、leetcode、企业数字化转型!在线免费接需求!!!
展开
-
设计模式之装饰者模式
装饰者模式代码和UML分析图原创 2024-01-12 17:19:28 · 628 阅读 · 0 评论 -
java代理模式
java静态、动态代理实现代码和性能分析原创 2024-01-12 10:07:41 · 1035 阅读 · 0 评论 -
JVM分析工具
JVM分析工具原创 2022-11-18 17:47:30 · 2119 阅读 · 0 评论 -
JVM基础
JVM基础知识原创 2022-11-17 14:58:54 · 453 阅读 · 0 评论 -
数据结构之递归算法解决汉诺塔问题
递归算法解决汉诺塔问题原创 2022-10-17 10:59:29 · 1041 阅读 · 0 评论 -
自定义实现读写分离锁
在程序运行过程中,如果有多个线程同时需要对共享资源进行访问,就需要在共享资源身上做同步操作以防止多线程读写导致的数据不一致。java可以通过synchronized关键字或者显式锁Lock对资源进行加锁来实现共享资源的同步。线程对资源的访问有两种分别是读和写,读是不会导致资源本身的更改的,所以读锁不是一种排它锁。如果有线程同时在读和写、或者多个线程同时写,这多个写操作会导致数据的不一致性,所以只要有写操作存在就需要加排他锁,以防止数据的不一致。读写锁分离设计会涉及几个接口...原创 2022-03-24 11:51:41 · 760 阅读 · 0 评论 -
高并发编程(Thread API的详细介绍)
Thread对象的线程API有sleep、TimeUnit、yield、interrupt等方法,具体方法和使用逻辑可以参考知乎:高并发编程(Thread API的详细介绍) - 知乎。原创 2022-02-23 12:41:09 · 270 阅读 · 0 评论 -
java实现LRU缓存
LRU指的是最近不经常使用的。LRU缓存指的是当加入新元素时,如果缓存空间不够,需要清理掉原LRU中的一个元素,腾出位置放新元素。LRU缓存算法要求的是清除缓存中最近不使用的元素。这种实现机制可以使用LinkedHashMap来实现比较合适。但有一点需要注意,LinkedHash不是线程安全的,如果有多个线程需要写数据需要进行同步控制。如果需要增加线程同步功能,可以使用Collections工具。通过阅读LinkedHashMap源码可以发现,LinkedHashMap有...原创 2022-01-26 09:00:27 · 1130 阅读 · 0 评论 -
运行时常量池、字符串常量池、静态常量池、静态变量
静态常量池指的是java代码中定义的常量,经过jvm编译后形成在class文件中的常量区域。所以静态常量池指的是class文件内部。在堆中 运行常量池指的是jvm运行中,将编译后的类放在metaspace区,具体包括class文件辕信息描述、编译后的代码数据、引用类型数据、类文件常量池等。在metaspace区 字符串常量池指的是类加载完成后,经过验证、准备阶段之后放在字符串常量池中。字符串常量池的数据只会存储一份,被所有的类共享。基本流程是:创建字符串之...原创 2021-12-17 14:11:13 · 1327 阅读 · 0 评论 -
GC Roots引用
当前主流的内存管理子系统都是通过可达性分析算法来判定对象是否存活。这个算法的基本思路是通过一系列称为”GC Roots"的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”,如果某个对象到GC Roots之间没有任何引用链相连,则证明此对象是不可能再被使用的。 在Java技术体系里,固定可作为GC Roots的对象包括以下几种: 在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方...原创 2021-12-17 09:04:19 · 482 阅读 · 0 评论 -
jmc-jdk1.8
jdk1.8之后,jmc就已经不随着jdk一起发出去了,如果想要使用jmc对jvm进行监控,这时候需要手工下载jmc,然后在本地运行。oracle官网比较坑,现在只有jmc8.1版本下载,它需要jdk11。所以要想使用jmc,则要下载jmc8.1之前的版本,如jmc8、jmc7等。jmc8.0的包已经上传,可以点击下载。博客好像上传不了附件,如果有需要可以留下邮箱。 下载之后,有时候会报如下错误如检测不到jvm等。这时候可以修改JMC目录下的jmc...原创 2021-12-09 17:45:57 · 3767 阅读 · 5 评论 -
java、javac、javap指令应用
在日常工作中,我们新建java工程,写好代码后,现在编译和运行几乎都是通过ide(如eclipse)工具完成。但作为java开发者还是要了解下java虚拟机指令。通过javac和java执行编译java文件和运行class以及jar文件。以windows系统为例解析javac和java指令的使用过程。步骤一:通过eclipse新建java工程步骤二:新建Java工程后,在src目录下新建jvm包步骤三:在jvm包先新建HelloWord.java类,打印“hello world!...原创 2021-12-05 10:00:09 · 708 阅读 · 0 评论 -
class文件加密和解密
在代码开发过程中,有时候可能需要对一些涉密的代码做加密处理,这里针对class文件的加密和解密写了一个样例作为参考。首先是通过java虚拟机自带的base64加密算法对class文件进行加密,加密成一个字符串。然后再通过一个自定义的类加载器,对字符串进行解密解析成class文件,再加载做初始化。HelloClassLoader类中的长字符串就是Hello.class文件根据base64加密算法生成的一长串字符串。package jvm;import java.io.ByteArra...原创 2021-12-04 22:33:26 · 2678 阅读 · 0 评论 -
1603-设计停车系统
请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。请你实现ParkingSystem类:ParkingSystem(int big, int medium, int small)初始化ParkingSystem类,三个参数分别对应每种停车位的数目。bool addCar(int carType)检查是否有carType对应的停车位。...原创 2021-09-23 20:55:49 · 71 阅读 · 0 评论