03 2020 档案
摘要:1. 概述 策略模式(Strategy Pattern)是比较典型的对象行为型模式,它是将对处理对象的一系列不同算法都单独抽离出来,单独封装成一个个类。策略的出现,主要是为了解决不同算法替换时的逻辑判断, 将逻辑判断移到 Client 中去(即由客户端自己决定在什么情况下使用什么具体策略) 。 2.
阅读全文
摘要:1. 概述 接上一篇 "学习 ConcurrentHashMap1.8 并发写机制" , 本文主要学习 的实现原理。 虽然 在生产环境已逐渐被 替代,然而一些好的思想还是需要进行学习的。比方说位图中寻找 位的思路是不是和 有点相似? 接下来,本文基于 来做源码解析。 2. ConcurrentHas
阅读全文
摘要:1. 前言 上篇文章讲了 Unsafe 类中 CAS 的实现,其实是在为这篇文章打基础。不太熟悉的小伙伴请移步 "Unsafe 中 CAS 的实现" 。本篇文章主要基于 来做源码解析。 2. 源码 ConcurrentHashMap 基于 HashMap 实现。 JDK1.7 和 JDK1.8 作为
阅读全文
摘要:前言 Unsafe 是位于 sun.misc 包下的一个类。Unsafe 提供的 API 大致可分为内存操作、CAS、Class 相关、对象操作、线程调度、系统信息获取、内存屏障、数组操作等几类。由于并发相关的源码很多用到了 CAS,比如 java.util.concurrent.atomic 相关
阅读全文
摘要:1. 前言 还是从面试中来,到面试中去。面试官在面试 Redis 的时候经常会问到,Redis 的 LRU 是如何实现的?如果让你实现 LRU 算法,你会怎么实现呢?除了用现有的结构 LinkedHashMap 实现,你可以自己实现一个吗?跳跃表、小顶堆行不行... 阅读这篇文章前建议大家先熟悉下
阅读全文
摘要:1. 概述 Hashset 实现 set 接口,底层基于 Hashmap 实现, 但与 Hashmap 不同的实 Hashmap 存储键值对,Hashset 仅存储对象。 HashSet 使用成员对象来计算 hashcode 值。 2. 原理 在《Head fist java》一书中有描述: 当你把
阅读全文
摘要:一、前言 MySQL分页查询作为Java面试的一道高频面试题,这里有必要实践一下,毕竟实践出真知。 很多同学在做测试时苦于没有海量数据,官方其实是有一套测试库的。 二、模拟数据 这里模拟数据分2种情况导入,如果只是需要数据测试下,那么推荐官方数据。如果官方数据满足不了需求的话,那么我们自己模拟数据。
阅读全文
摘要:1. 前言 上一篇从源码方面了解了JDK1.7中Hashmap的实现原理,可以看到其源码相对还是比较简单的。本篇笔者和大家一起学习下JDK1.8下Hashmap的实现。JDK1.8中对Hashmap做了以下改动。 默认初始化容量=0 引入红黑树,优化数据结构 将链表头插法改为尾插法,解决1.7中多线
阅读全文
摘要:1. 前言 Hashmap可以说是Java面试必问的,一般的面试题会问: Hashmap有哪些特性? Hashmap底层实现原理(get\put\resize) Hashmap怎么解决hash冲突? Hashmap是线程安全的吗? ... 今天就从源码角度一探究竟。笔者的源码是OpenJDK1.7
阅读全文
摘要:1. 概述 Apache Kafka 是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。其具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。 笔者之前在物联网公司工作,其中 Kafka 作为物联网 MQ 选型的事实标准,这里优先给大家搭建 Kafka 集群
阅读全文
摘要:1. 概述 这里是 Docker 实战系列第四篇。主要介绍分布式系统中的元老级组件 Zookeeper。 ZooKeeper 是一个开源的分布式协调服务,是 Hadoop,HBase 和其他分布式框架使用的有组织服务的标准。 分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均
阅读全文
摘要:前言 最近参加了几场 Java 面试,发现大多数的微服务实践还是 Eureka 偏多,鉴于笔者的单位选型 Consul,这里对 Consul 做简单总结。 该篇是 Docker 实战系列的第三篇。传送门: "Docker 实战之 MySQL 主从复制" "Docker 实战之 Redis Clust
阅读全文
摘要:概述 接上一篇 "Docker实战之MySQL主从复制" , 这里是Docker实战系列的第二篇,主要进行Redis Cluster集群环境的快速搭建。Redis作为基于键值对的NoSQL数据库,具有高性能、丰富的数据结构、持久化、高可用、分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛
阅读全文