
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
可以理解为:数据传输的管道文件 → JVM程序属于输入流JVM程序 → 文件属于输出流BIO = Blocking I/O 同步阻塞 IO同步:读写操作顺序执行,做完一件才做下一件阻塞:线程调用时,没有数据就一直卡死等待,不释放线程JDK1.4 之前唯一 IO 模型,传统文件 IO、老式 Socket 通信都是 BIO传统网络 BIO 服务端,一个客户端连接对应一个独立线程BIO是最基础的 IO
目录一、什么是 JMM二、为什么需要 JMM1. CPU缓存导致可见性问题2. 指令重排序导致有序性问题3. 线程切换导致原子性问题4、小结5、JMM的本质三、JMM 的核心抽象模型主内存(Main Memory)工作内存(Working Memory)四、JMM 引发的三大并发问题1. 可见性问题2. 原子性问题3. 有序性问题五、JMM 如何解决这些问题六、Happens-Before 规则七
AQS(AbstractQueuedSynchronizer)是 JDK 并发包的核心同步框架。整体结构:AQS的设计思想:state负责资源状态获取失败的线程进入队列前驱节点释放资源后唤醒后继节点FIFO保证公平性(公平锁)
在 Java 并发编程中,最常见的加锁方式莫过于 synchronizedsynchronized 使用简单,并且由 JVM 保证锁的获取与释放,是 Java 中最基础的线程同步机制不过随着并发场景越来越复杂,synchronized 的局限性也逐渐显现出来:无法尝试获取锁无法设置获取锁超时时间无法中断等待锁的线程不支持公平锁只能使用单一条件队列。
Semaphore(信号量)是 JDK 提供的一个并发工具类,用来控制同时访问某个资源的线程数量位于:java.util.concurrent.Semaphore例如:Semaphore semaphore = new Semaphore(3);表示:当前资源有3个许可证(Permit)线程1 获取许可证线程2 获取许可证线程3 获取许可证此时许可证耗尽线程4必须等待线程4才能继续执行。
集合框架是Java开发中很常用的框架,单线程下没什么问题,但是多线程下有很大的并发问题数据覆盖数据丢失扩容死循环(JDK7)因为 HashMap 本身没有任何同步机制,多线程下会有很大的并发安全问题全局元素数量 + 1检查元素总数是否超过扩容阈值,达到阈值触发多线程 resize新增元素返回 nullbaseCount + CounterCell = 分段计数避免热点 CAS。
可以理解为:数据传输的管道文件 → JVM程序属于输入流JVM程序 → 文件属于输出流BIO = Blocking I/O 同步阻塞 IO同步:读写操作顺序执行,做完一件才做下一件阻塞:线程调用时,没有数据就一直卡死等待,不释放线程JDK1.4 之前唯一 IO 模型,传统文件 IO、老式 Socket 通信都是 BIO传统网络 BIO 服务端,一个客户端连接对应一个独立线程BIO是最基础的 IO
在使用docker安装完mysql8,使用sqlyog或者nacicat连接,需要修改密码加密规则,因为低版本客户端工具不支持mysql8最新的加密规则。在使用nacicat连接docker中的mysql容器时出现了10061的错误。

是 Java 并发模型中的一个关键工具类,用于实现线程隔离(Thread Confinement)为每个线程提供独立的变量副本,避免多线程之间的共享与竞争。简单理解:ThreadLocal可以实现线程之间的变量互相隔离,也就可以理解为线程的私有数据。例如:我们常用的将用户ID存储到ThreadLocal中就可以实现当前线程中可以一直使用。多数据源时将当前线程使用的数据源存在ThreadLocal中
SpringBoot项目打war包报错:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project CommunityApplet: Error assembling WAR: webxml attribute is required (or pre-existi







