刘小水的个人博客 青墨书晚风

ConcurrentHashMap源码分析

jdk1.8,ConcurrentHashMap源码分析 初始化及使用 private static Map<Integer,Integer> map1 = new ConcurrentHashMap<>(); map1.put(1,1); new里做了啥? 啥都没干 public Concurre

liuxiaoshui liuxiaoshui 发布于 2023-11-30

AQS之BlockingQueue源码跟踪记录

以ArrayBlockingQueue为例,使用如下 int BOUND = 10;//阻塞队列容量 BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(BOUND); queue.put();//超过队列容量时则put()

liuxiaoshui liuxiaoshui 发布于 2023-11-26

ReentraintLock中park()和unpark()

关于park()阻塞线程的唤醒方式 Park阻塞线程唤醒有两种方式: 1、中断 2、unlock->release()->unpark() 中断唤醒: interrupt()存在的意义 早期停止线程的方式是Thread里有个native的方法stop0(),相当于linux里的kill -9,会产生

liuxiaoshui liuxiaoshui 发布于 2023-11-25

Thread之sleep、join、yield、wait、notify

一、sleep方法 线程释放CPU进入休眠,但不会释放锁(synchronized),释放CPU,不释放锁 这里面有个比较经典的用法,代码中循环太快,导致年轻代的GC频繁或者GC时间久,可以通过Thread.sleep(0)释放CPU,让GC线程去执行回收 经典用法:线程批任务导致cpu占比很高,通

liuxiaoshui liuxiaoshui 发布于 2023-11-23

java对象头锁状态分析及锁的升级记录

对象头组成 32位虚拟机对象头markword 64位虚拟机对象头markword 现在我们虚拟机基本是64位的,而64位的对象头有点浪费空间,JVM默认会开启指针压缩,所以基本上也是按32

liuxiaoshui liuxiaoshui 发布于 2023-11-23

操作系统底层初识

名词解释 时钟周期 时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作,例如从存储器中读取一个字节,或者进行一次加法运算。时钟周期是由CPU的主频决定的,主频越高,时钟周期越短,CPU的运算速度越快。1</

liuxiaoshui liuxiaoshui 发布于 2023-11-20

JS里if(undefined)判断问题

关于js里if(变量)的判断 不是专业前端的,隔一阵总会迷糊这些个undefined,null,‘’等的判断, 干脆直接发篇文章吧 上代码,一目了然 let a = undefined; let b = null; let c = ''; let d = 0;

liuxiaoshui liuxiaoshui 发布于 2023-11-18

内网穿透折腾记录

背景 因为退役一台笔记本,就想扔老家了,也给家里人当个备用机用。但里面积攒了好多年的项目,真的是好多年的珍藏啊,还不定期的想从这台机器拷项目,查资料,甚至因为随着年龄增长,记忆力越来越差,有些之前的项目还想跑起来看看,所以要用到内网穿透了。 然后开始折腾,下面是折腾的过程,中间各种问题,各种查,各种

admin admin 发布于 2023-11-06

halo发布页面测试

测试halo文章发布功能 测试代码块 package com.example.satokendemospringboot.controller; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaResult;

admin admin 发布于 2023-11-04

Hello Halo

如果你看到了这一篇文章,那么证明你已经安装成功了,感谢使用 Halo 进行创作,希望能够使用愉快。

admin admin 发布于 2023-11-04