最新文章
-
ReentrantReadWriteLock的实现原理与锁获取详解
我们继续Java多线程与并发系列之旅,之前我们分享了Synchronized 和 ReentrantLock 都是独占锁,即在同一时刻只有一个线程获取到锁。 然而在有些业务场景中,我们大多在读取数据,很少写入数据,这种情况下,如果仍使用独占锁,效率将及其低下。 针对这种情况,Java提供了读写锁——ReentrantReadWriteLock。 有点类似MySQL数据库为代表的读写分离机制,既然我…... -
线程的五大状态,以及线程之间的通信与协作
在Java面试的时候,经常会问到Java并发编程相关的多线程、线程池、线程锁、线程通信等面试必考点,比如: Java线程池的使用方式,及核心运行原理 4种常用Java线程锁的特点,性能比较、使用场景 CountDownLatch、Semaphore等4大并发工具类详解 ConcurrentHashMap的实现原理(含JDK1.7和JDK1.8的区别) 史上最强多线程面试44题和答案:线程锁+线程池…... -
java程序员进阶必读书单
以下是我推荐给Java开发者们的一些值得一看的好书,从java基础开始到高级,以及从高级进阶到架构等的书单。 基本都是经典之作,可以利用工作闲暇的时间,系统阅读。 java程序员进阶之路 上图是完整java程序员进阶之路,可以进阶架构师也可以结合管理进阶,往技术经理、总监发展。 上周,写了程序员进阶到架构师三篇,基本涵盖了java程序员到架构师的必备技能。如果要想系统掌握,可以结合书单一起自学进阶…... -
如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
Java相关的面试都会问到缓存的问题:史上最全Redis面试49题(含答案),除此之外还会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等不常见的问题,但却是非常重要的问题,今天谈谈这个话题。 基本看完这两篇,可以对redis有一个比较全面的初步了解,后续我再补充redis相关的实战篇,总结为一个redis系列。 缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都…... -
MySQL有哪些存储引擎,各自的优缺点,应用场景
经常面试都会问到MYSQL有哪些存储引擎,以及各自的优缺点。今天主要分享常见的存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)等,以及最常用的MyISAM与InnoDB两个引擎 ,文章尾部有两者的详细比较。 MySQL常用存储引擎介绍 1.InnoDB 引擎(MySQL5.5以后默认使用) MySQL 5.5 及以后版本中的默认存储引擎,他…... -
分布式数据库数据一致性的原理、与技术实现方案
背景 可用性(Availability)和一致性(Consistency)是分布式系统的基本问题,先有著名的CAP理论定义过分布式环境下二者不可兼得的关系,又有神秘的Paxos协议号称是史上最简单的分布式系统一致性算法并获得图灵奖,再有开源产品ZooKeeper实现的ZAB协议号称超越Paxos。 在大数据场景下,分布式数据库的数据一致性管理是其最重要的内核技术之一,也是保证分布式数据库满足数据库…... -
如何从0到1设计一个MQ消息队列
消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一。 如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要。 不仅知其然还要知其所以然,这才是一个优秀的工程师需要具备的特征。 今天,我们就一起来探讨设计一个消息队列背后的技术。 消息队列整体设计思路 主要是设计一个整体的消息被消费的数据流。 这里会涉及到:消息生产Producer、Broker(消息服务端)、消息…... -
架构师的主要职责是什么?
进阶成为架构师是大多数java程序员们的梦想,架构师从广义上可分为软件架构师、系统架构师,软件架构师是程序员最容易突破、最可能进阶的一条职业发展路径,我这次主要分享软件架构师的相关知识点。 一:架构师的定义 架构师,是一个既需要掌控整体又要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的团队领导型人物,他需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试…...