Java
Wonder ZH
国家注册规划师!
不知为何,转投程序猿
展开
-
【java并发编程】底层原理——CPU缓存一致性协议(MESI)
一、CPU高速缓存(Cache Memory)1.1 CPU为何要有高速缓存CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。在CPU访问存储设备时,无论是...原创 2019-02-23 11:40:07 · 482 阅读 · 0 评论 -
【java并发编程】interrupt()陷阱和线程正确的终止方式
一、背景 在学习Java多线程知识时,掌握线程的启动和终止是应用基础。但由于多线程的复杂性,导致简单的线程终止程序出现意外的行为以及细微的、难以发现的错误。 首先还是大概的罗列下停止线程的方法:1、使用stop()方法:由于安全问题,已经不再被推荐使用,和suspend、resume一样。2、使用退出标志位终止线程:引入一个共享变量,volatile类型或者使用synchron...原创 2019-03-24 12:30:12 · 416 阅读 · 0 评论 -
【java并发编程】底层原理——用户态和内核态的区别
一、背景--线程状态切换的代价java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。synch...原创 2019-02-21 14:57:47 · 9430 阅读 · 2 评论 -
【java并发编程】底层原理——锁分类和java锁机制
一、什么是锁? 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、并发控制策略。 锁通常需要硬件支持才能有效实施。这种支持通常采取一个或多个原子指令的形式,如"test-and-set", "fetch-and-add" or "compare-and-swap"”。这些指令允许单个进程测试...原创 2019-02-22 16:14:19 · 5208 阅读 · 1 评论 -
Java I/O体系——从原理到应用到高性能优化,这一篇全说清楚了
本文介绍操作系统I/O工作原理,Java I/O设计,基本使用,开源项目中实现高性能I/O常见方法和实现,彻底搞懂高性能I/O之道基础概念在介绍I/O原理之前,先重温几个基础概念:1.操作系统与内核操作系统:管理计算机硬件与软件资源的系统软件内核:操作系统的核心软件,负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,为应用程序提供对计算机硬件的安全访问服务...转载 2019-12-27 11:41:33 · 1059 阅读 · 0 评论 -
【美团技术团队】Java动态追踪技术探究
转载美团技术团队好文!引子在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话:“Debug一下吧。”“线上机器,没开Debug端口。”“看日志,看看请求值和返回值分别是什么?”“那段代码没打印日志。”“改代码,加日志,重新发布一次。”“怀疑是线程池的问题,重启会破坏现场。”长达几十秒的沉默...转载 2019-03-04 17:26:33 · 317 阅读 · 0 评论 -
JTA深度剖析
在 J2EE 应用中,事务是一个不可或缺的组件模型,它保证了用户操作的 ACID(即原子、一致、隔离、持久)属性。对于只操作单一数据源的应用,可以通过本地资源接口实现事务管理;对于跨数据源(例如多个数据库,或者数据库与 JMS)的大型应用,则必须使用全局事务 JTA (Java Transaction API)。JTA 为 J2EE 平台提供了分布式事务服务,它隔离了事务与底层的资源,...转载 2019-07-16 15:03:17 · 378 阅读 · 0 评论