
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在分布式系统中,消息中间件是实现服务解耦、异步通信的核心组件,而 Kafka 凭借其高吞吐、高可靠、可扩展的特性,成为日志收集、流式处理、消息队列等场景的首选方案。
/ name:目标服务名(必须与 user-service 的 spring.application.name 一致)// fallback:熔断降级类(当 user-service 不可用时,调用 UserFeignFallback 的方法)// 接口路径、请求方式、参数需与 user-service 的接口完全一致// SentinelResource:标记该方法需要熔断限流(value 为资
特性wait()park()所属类Object是否需要锁必须(块内)不需要唤醒方式notify()中断响应抛不抛异常,需手动检测锁竞争唤醒后需重新竞争锁唤醒后直接执行,无锁竞争典型应用传统同步机制协作并发工具类底层实现。
用AtomicInteger类来代替int定义i。相应的还有各个基本数据类型对应的Atomic类,这些类本身就是线程安全的。AtomicInteger 能保证原子性,核心在于其内部使用了 CAS(Compare And Swap,比较并交换)机制,配合 volatile 关键字保证可见性,从而实现了无需加锁(无锁机制)的线程安全操作。
通过“线程持有变量副本,自身作为访问入口”的设计,实现了线程隔离的变量存储,是多线程编程中“空间换时间”思想的典型应用。其核心源码围绕Thread的变量和线程隔离性:变量存在线程自身的中。以为 key(弱引用)存储副本。易用性:通过set()get()remove()简化操作。用完必须调用remove(),尤其在线程池环境中,否则可能导致内存泄漏或数据污染。合理使用,能在数据库连接、上下文传递等场
比如线程 A 已经获取了锁,在没释放的情况下再次调用。
HashMap是基于「数组 + 链表 + 红黑树」的哈希表实现,通过哈希值快速定位元素,平衡了查询与插入效率。其核心特性包括键值对存储、支持null键值、无序性、线程不安全、动态扩容等,这些特性都能在源码中找到明确实现。在实际使用中,HashMap适合单线程环境下的快速键值查询、临时数据存储等场景,但需注意线程安全、初始容量设置、键的方法重写等问题。理解HashMap的设计原理,不仅能帮助我们写出
细粒度锁机制:采用"CAS"组合,对单个哈希桶(Bucket)加锁而非全表锁,使不同桶的操作可并行执行,大幅提升并发效率。无锁化读操作:借助volatile关键字和Unsafe工具类,读操作全程无锁,通过内存可见性保证读取最新值,实现高效的读写并发。多线程协同扩容:支持多个线程共同参与扩容(resize),通过分配任务范围,用标记已迁移桶,避免单线程扩容瓶颈。自适应数据结构。
前面的文章中说了线程,开发者可以开启多个线程去完成多个任务,但是其实很多公司并不推荐单独开启线程,而是推荐使用线程池。究其原因,一般是考虑线程的管理问题。线程虽然增加了处理任务的速度,但是如果使用不当,可能会造成内存泄露、程序崩溃等严重问题。所以了解线程池显得颇为重要。
自定义Bean覆盖:若你在配置类中定义了和自动配置类同名的Bean(如),Spring会优先使用你的Bean,自动配置的Bean会失效(因配置文件覆盖:通过修改自动配置类的属性(如,覆盖默认的localhost);排除不需要的自动配置类:通过,排除不需要的自动配置(如项目不用数据库,排除数据源配置)。在配置类中自定义了Bean后,发现无法注入,报。SpringBoot自动装配的本质,是“约定优于配







