logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

JAVA:如何查看代码在JVM底层的指令集?

Java 源代码编译成.class文件后,JVM 可执行的底层指令集。

#java#jvm#开发语言
JAVA:多线程和锁+锁升级机制

特性wait()park()所属类Object是否需要锁必须(块内)不需要唤醒方式notify()中断响应抛不抛异常,需手动检测锁竞争唤醒后需重新竞争锁唤醒后直接执行,无锁竞争典型应用传统同步机制协作并发工具类底层实现。

#java
JAVA:volatile关键字的妙用

用AtomicInteger类来代替int定义i。相应的还有各个基本数据类型对应的Atomic类,这些类本身就是线程安全的。AtomicInteger 能保证原子性,核心在于其内部使用了 CAS(Compare And Swap,比较并交换)机制,配合 volatile 关键字保证可见性,从而实现了无需加锁(无锁机制)的线程安全操作。

#java#python#开发语言
JAVA:ThreadLocal原理:线程私有变量的实现与实践(附源码分析)

通过“线程持有变量副本,自身作为访问入口”的设计,实现了线程隔离的变量存储,是多线程编程中“空间换时间”思想的典型应用。其核心源码围绕Thread的变量和线程隔离性:变量存在线程自身的中。以为 key(弱引用)存储副本。易用性:通过set()get()remove()简化操作。用完必须调用remove(),尤其在线程池环境中,否则可能导致内存泄漏或数据污染。合理使用,能在数据库连接、上下文传递等场

#java#python#microsoft
JAVA:ReentrantLock实现原理(附部分源码解析)

比如线程 A 已经获取了锁,在没释放的情况下再次调用。

#java#开发语言
JAVA:HashMap设计原理(附部分源码分析)

HashMap是基于「数组 + 链表 + 红黑树」的哈希表实现,通过哈希值快速定位元素,平衡了查询与插入效率。其核心特性包括键值对存储、支持null键值、无序性、线程不安全、动态扩容等,这些特性都能在源码中找到明确实现。在实际使用中,HashMap适合单线程环境下的快速键值查询、临时数据存储等场景,但需注意线程安全、初始容量设置、键的方法重写等问题。理解HashMap的设计原理,不仅能帮助我们写出

#java#开发语言
JAVA:ConcurrentHashMap设计原理(附部分源码解析)

细粒度锁机制:采用"CAS"组合,对单个哈希桶(Bucket)加锁而非全表锁,使不同桶的操作可并行执行,大幅提升并发效率。无锁化读操作:借助volatile关键字和Unsafe工具类,读操作全程无锁,通过内存可见性保证读取最新值,实现高效的读写并发。多线程协同扩容:支持多个线程共同参与扩容(resize),通过分配任务范围,用标记已迁移桶,避免单线程扩容瓶颈。自适应数据结构。

#java#哈希算法#散列表
JAVA:大佬眼中的线程池

前面的文章中说了线程,开发者可以开启多个线程去完成多个任务,但是其实很多公司并不推荐单独开启线程,而是推荐使用线程池。究其原因,一般是考虑线程的管理问题。线程虽然增加了处理任务的速度,但是如果使用不当,可能会造成内存泄露、程序崩溃等严重问题。所以了解线程池显得颇为重要。

#java#python#算法
SpringBoot:自动装配机制

自定义Bean覆盖:若你在配置类中定义了和自动配置类同名的Bean(如),Spring会优先使用你的Bean,自动配置的Bean会失效(因配置文件覆盖:通过修改自动配置类的属性(如,覆盖默认的localhost);排除不需要的自动配置类:通过,排除不需要的自动配置(如项目不用数据库,排除数据源配置)。在配置类中自定义了Bean后,发现无法注入,报。SpringBoot自动装配的本质,是“约定优于配

#spring boot#java#spring
Java IO与NIO详解:从基础到实战,一文搞懂两种IO模型

Java IO与NIO核心差异及选型指南 摘要:本文深入解析Java中BIO与NIO的核心差异与应用场景。BIO采用阻塞式IO模型,面向流操作,简单直观但高并发性能差;NIO通过Buffer、Channel和Selector三大组件实现非阻塞IO,单线程可处理多连接,特别适合高并发场景。文章通过代码示例对比两种模型,指出BIO适合连接数少且固定的场景,而NIO在聊天服务器、API网关等高并发系统中

#java#nio#php
    共 14 条
  • 1
  • 2
  • 请选择