
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
OS 甚至不知道 Javatid的存在,它只认自己的 Native ID。Java 设置 tid 是为了“自成一统”:为了在 Java 虚拟机内部,给线程对象一个跨平台的、生命周期独立的、逻辑上的身份证。

我们知道 OS 的调度机制存在很多的判定属性,其中一项最为关键的判定属性就是“优先级”在 Java 编程中,存在着 设置优先级(setPriority) 这个方法,那么让我们手动设置优先级,看底层的 OS 是否会会根据我们设置的优先级进行线程的调度。

内存里追求 CPU 缓存命中(用数组)。复杂计算追求时间复杂度(用红黑树)。磁盘存储追求减少 I/O(用 B+ 树)。

在我看来,各种数据结构建成的高楼大厦,都需要数组和链表作地基,接下来我们从时间复杂度入手,明明 B+树、 跳表、红黑树的平均时间复杂度都是O(log n),MySQL 为什么选了 B+ 树,而 Redis 选了跳表?,而 JDK 1.8 使用红黑树?“MySQL 选择 B+ 树的核心原因是对磁盘 I/O降低树高(减少 I/O):磁盘读写速度远低于 CPU,所以必须减少磁盘访问次数。B+ 树的非叶子

在我看来,同步和互斥的代码书写还是很简单的,复杂的应该是每个角色之间的联系(同步),以及与临界资源的访问(互斥)的逻辑。java里的锁总结(synchronized隐式锁、Lock显式锁、volatile、CAS) - Life_Goes_On - 博客园深入浅出Java锁--Lock实现原理(底层实现)_java lock实现-CSDN博客使用Condition - Java教程 - 廖雪峰的官

在进程的眼里自己是拥有所有的内存空间的,这就是虚拟内存技术的强大之处,那么在它们眼里,这一块空间是怎么进行划分的呢?下面这一段复杂的图,只需要了解一下,图中最重要的就是【栈】和【堆】栈和堆使用了不同的数据结构,方法,空间等等,他们之间存在着许多的区别,但是两者就像是形状不同的拼图,只有两个拼图都在才能组成完整的画面,只有堆和栈在一起,才能更好地管理进程内存空间。注:无论是栈还是堆,他们都是在进程内

在初识“锁”时,我第一次上锁,锁的是基本数据类型,代码频频报错,所以基本数据类型为什么不能上锁?对象在堆中的形态是怎么样的?Java 上锁究竟干了什么?

垃圾收集就意味着需要进行可达性算法,但是在执行可达性算法时,当前的 JVM 内部需要保持一个禁止的状态,也就是其他的用户线程不允许进行操作,所有的用户线程需要等到垃圾收集结束后才能开始继续执行,这意味着用户的体验感可能会非常地差:用户可能正在访问某个页面时,JVM 突然开始垃圾回收,如果当前 Java 堆内对象较少,那用户可能会怀疑是自己的网络原因,但是如果已经达到了十分庞大的对象量,用户就会看着

本文演示了使用Git处理分支冲突的合并操作。首先在master分支创建demo.txt并提交,随后创建branchTest分支。在两个分支上分别修改同名文件demo.txt产生冲突,通过git status查看状态,在命令行中打开冲突文件进行手动修改解决冲突,最后提交合并结果。文章还对比了使用git bash命令行和IDEA工具两种方式处理分支冲突的流程,重点展示了冲突文件的标识方式和解决方案。整

定义项目结构管理项目依赖使用统一的方式进行自动化构建是 Java 项目不可缺少的工具。








