- 博客(154)
- 收藏
- 关注
原创 微服务限流容错降级Sentinel实战
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。一、什么是雪崩效应?业务场景,高并发调用正常情况下,微服务A B C D 都是正常的。随着时间推移,在某一个时间点 微服务A突然挂了,此时的微服务B 还在疯狂的调用微服务A,由于A已经挂了,所以B调用A必须等待服务调用超时。而我们知道每次B -> A 的适合B都会去创建线程(而线程由计算机的资源,比如cpu、内存等)。由于是高..
2021-03-14 11:38:24
1232
原创 一角钱技术—2021系列整理
嗨你好,我是一角钱技术~大家可以去【公众号】获取或者加我【微信】提意见(别忘记Star哟)。点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。 目录注 : 没链接的是还没写数据结构与算法时间复杂度和空间复杂度分析数组的基本实现和特性链表的基本实现和特性跳表的基本实现和特性栈、队列、优先队列、双端队列的实现与特性哈希表、映射、集合的实.
2021-03-13 22:54:00
546
2
原创 领域驱动模型VO、DTO、DO、PO 概念及其区别
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言最近加入到一个新的团队,整体的框架方向是构建业务中台,划分子域、上下文、需求结构化和能力可配置,是通过领域驱动,从整体上划分业务中台的领域,进而划分出业务中台的具体能力中心,。本篇文章开始,将会结合自己的实际经验,聊一聊DDD(领域驱动设计)的应用。这里我们主要聊以下我们经常会用的的领域模型:VO、DTO、DO、PO。领域模型中的实体..
2021-03-07 22:06:19
1741
原创 Java时间操作类库—Joda-Time
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言上一周在做一个产品的需求的时候有个动态计算时间段(如现在是13:00,则时间段为15:10-17:10、17:10-19:10、19:10-21:10;即最早的出发时间为当前时间+参数【2h10min】,最迟的时间段为开始时间在20点前结束时间在20点后的时间段),期间大量使用到了日期时间类库,本着熟悉日期时间类库才有了这篇文章,文章最..
2021-03-07 19:01:59
4952
原创 Redis6 新特性介绍
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言Redis 6 主要的变化有:SSL、ACLs、RESP3、客户端缓存、线程I/O、Redis benchmark 中的集群支持和改进的Redis cli 集群支持,以及Redis集群代理。1. 多线程IOredis 6.0 提供了多线程的支持,redis 6 以前的版本,严格来说也是多线程,只不过执行用户命令的请求时单线程模型,还..
2021-03-05 23:21:11
532
原创 并发编程之ForkJoin框架原理分析
Fork/Join 框架是 Java7 提供了的一个用于并行执行的任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。
2020-12-15 18:23:23
545
原创 深入掌握Java日志体系,再也不迷路了
对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul。但是在我们的系统里面到底该怎么使用日志框架?还在为弄不清commons-logging.jar、log4j.jar、sl4j-api.jar等日志框架之间复杂的关系而感到烦恼吗?还在为如何统一系统的日志输出而感到不知所措嘛?比如,要更改Spring的日志输出
2020-12-11 23:57:56
366
原创 并发编程之ThreadLocal深入理解
ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量,这样同时多个线程访问该变量并不会彼此相互影响,因此他们使用的都是自己从内存中拷贝过来的变量的副本,这样就不存在线程安全问题,也不会影响程序的执行性能。
2020-12-10 23:31:09
253
原创 并发编程之定时任务&定时线程池原理解析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言线程池的具体实现有两种,分别是ThreadPoolExecutor 默认线程池和ScheduledThreadPoolExecutor 定时线程池,上一篇已经分析过ThreadPoolExecutor原理与使用了,本篇我们来重点分析下ScheduledThreadPoolExecutor的原理与使用。《并发编程之Executor线..
2020-12-10 09:13:37
1744
原创 并发编程之Executor线程池原理与源码解读
“线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此 Java 中提供线程池对线程进行同一分配、调优和监控。
2020-12-07 23:34:22
328
原创 并发编程之Phaser原理与应用
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言JDK5中引入了CyclicBarrier和CountDownLatch这两个并发控制类,而JDK7中引入的Phaser按照官方的说法是提供了一个功能类似但是更加灵活的实现。接下来我们带着几个问题来研究一下Phaser与(CountDownLath、CyclicBarrier)到底有哪些类似,同时带来了哪些灵活性?Phaser 是..
2020-12-04 00:10:53
531
原创 Java 基础 | Object 源码解析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言Java 是一门面向对象的语言,在 Java 里面一切都可以看作是一个对象,而 Java 里面所有的对象都默认继承于 Object 类。本文基于JDK1.8可以看到一共12个方法,其中 registerNatives() 是 native 修饰的,一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用。ge..
2020-12-01 16:35:24
129
原创 并发编程之Exchanger原理与使用
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言在JUC包中,除了一些常用的或者说常见的并发工具类(ReentrantLock,CountDownLatch,CyclicBarrier,Semaphore)等,还有一个不常用的线程同步器类 —— Exchanger。Exchanger是适用在两个线程之间数据交换的并发工具类,它的作用是找到一个同步点,当两个线程都执行到了同步点(e..
2020-11-30 22:46:55
579
1
原创 Java基础 |强引用、弱引用、软引用、虚引用
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言在ThreadLocal源码中,其中嵌套类ThreadLocalMap中的Entry继承了WeakReferenc。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强..
2020-11-29 21:52:22
162
原创 并发编程之CountDownLatch原理与应用
CountDownLatch是一个同步计数器,他允许一个或者多个线程在另外一组线程执行完成之前一直等待,基于AQS共享模式实现的。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作来。
2020-11-29 10:48:32
553
2
原创 并发编程之Semaphore原理与应用
Semaphore 信号量,许可,用于控制在一段时间内,可并发访问执行的线程数量。它的作用是控制访问特定资源的线程数目,底层依赖AQS的状态State,是在生产当中比较常用的一个工具类。
2020-11-27 18:17:14
266
1
原创 阻塞队列 — DelayedWorkQueue源码分析
DelayedWorkQueue 也是一种设计为定时任务的延迟队列,它的实现和DelayQueue一样,不过是将优先级队列和DelayQueue的实现过程迁移到本身方法体中,从而可以在该过程当中灵活的加入定时任务特有的方法调用。
2020-11-25 00:06:48
951
1
原创 阻塞队列 — LinkedBlockingDeque源码分析
LinkedBlockingDeque 一个由于链表结构组成的双向阻塞队列,队列头部和尾部都可以添加和移除元素,多线程并发时,可以将锁的竞争对多降到一半。
2020-11-24 11:31:42
381
3
原创 阻塞队列 — LinkedTransferQueue源码分析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言LinkedTransferQueue 是一个由链表结构组成的无界阻塞传输队列,它是一个很多队列的结合体(ConcurrentLinkedQueue,LinkedBlockingQueue,SynchronousQueue),在除了有基本阻塞队列的功能(但是这个阻塞队列没有使用锁)之外;队列实现了TransferQueue接口重写了..
2020-11-23 09:57:57
341
原创 阻塞队列 — SynchronousQueue源码分析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言SynchronousQueue 一个不存储元素的阻塞队列,每一个 put 操作必须等待 take 操作,否则不能继续添加元素。支持公平锁和非公平锁2种策略来访问队列。默认是采用非公平性策略访问队列。公平性策略底层使用了类似队列的数据结构,而非公平策略底层使用了类似栈的数据结构。SynchronousQueue的吞吐量高于Linke..
2020-11-22 16:04:26
2132
2
原创 阻塞队列 — DelayQueue源码分析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言DelayQueue 由优先级支持的、基于时间的调度队列,内部使用非线程安全的优先队列(PriorityQueue)实现,而无界队列基于数组的扩容实现。在创建元素时,可以指定多久才能从队列中获取当前元素。只有延时期满后才能从队列中获取元素。队列创建BlockingQueue<String> blockingQueue..
2020-11-21 17:01:32
637
原创 阻塞队列 — PriorityBlockingQueue源码分析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言PriorityBlockingQueue 优先级队列,线程安全(添加、读取都进行了加锁)、无界、读阻塞的队列,底层采用的堆结构实现(二叉树),默认是小根堆,最小的或者最大的元素会一直置顶,每次获取都取最顶端的数据队列创建小根堆PriorityBlockingQueue<Integer> concurrentLin..
2020-11-20 17:46:22
272
原创 堆和二叉堆的实现和特性
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。堆 HeapHeap:可以迅速找到一堆数中的最大或者最小值的数据结构。将根节点最大的堆叫做大顶堆或大根堆,根节点最小的堆叫做小顶堆或小根堆。常见的堆有二叉堆、裴波那契堆等。堆本身是一个相对比较抽象的数据结构,那么它有具体的实现就分为二叉堆(二项堆、Binary)、裴波那契堆(基于树的)。那么要实现的话一般面试来说或者经常会用的话就..
2020-11-20 17:44:28
349
1
原创 阻塞队列 — LinkedBlockingQueue源码分析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言LinkedBlockingQueue 由链接节点支持的可选有界队列,是一个基于链表的无界队列(理论上有界),队列按照先进先出的顺序进行排序。LinkedBlockingQueue不同于ArrayBlockingQueue,它如果不指定容量,默认为 Integer.MAX_VALUE,也就是无界队列。所以为了避免队列过大造成机器负载..
2020-11-19 18:41:58
257
原创 阻塞队列 — ArrayBlockingQueue源码分析
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言ArrayBlockingQueue 由数组支持的有界阻塞队列,队列基于数组实现,容量大小在创建 ArrayBlockingQueue 对象时已经定义好。 此队列按照先进先出(FIFO)的原则对元素进行排序。支持公平锁和非公平锁,默认采用非公平锁。其数据结构如下图:注:每一个线程在获取锁的时候可能都会排队等待,如果在等待时间上..
2020-11-18 23:59:15
284
原创 并发编程之synchronized深入理解
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言并发编程从操作系统底层工作的整体认识开始深入理解Java内存模型(JMM)及volatile关键字深入理解CPU缓存一致性协议(MESI)在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时sy..
2020-11-12 22:06:34
297
原创 CPU有缓存一致性协议(MESI),为何还需要volatile
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言并发编程从操作系统底层工作的整体认识开始深入理解Java内存模型(JMM)及volatile关键字前面我们从操作系统底层了解了现代计算机结构模型中的CPU指令结构、CPU缓存结构、CPU运行调度以及操作系统内存管理,并且学习了Java内存模型(JMM)和 volatile 关键字的一些特性。本篇来深入理解CPU缓存一致性协议(..
2020-11-11 17:46:05
1908
1
原创 一文读懂Java内存模型(JMM)及volatile关键字
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言并发编程从操作系统底层工作的整体认识开始上一篇我们从操作系统底层工作的整体了解了并发编程在硬件以及操作系统层面的一些知识,本篇我们继续来学习JMM模型以及Volatile关键字的那些面试必问的一些知识点。什么是JMM模型?Java 内存模型(Java Memory Model 简称JMM)是一种抽象的概念,并不真实存在,它描..
2020-11-10 18:01:20
562
1
原创 深入理解Redis跳跃表的基本实现和特性
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言在这里我们先回忆一下普通链表的时间复杂度,可以看到除了 look up 操作是 O(n)O(n)O(n) 的,其他操作都是 O(1)O(1)O(1) 的时间复杂度。也就是说你需要随机访问里面的任何一个元素的话,它的时间复杂度平均值是 O(n)O(n)O(n) 的,这也就是链表它的问题所在。从这里可以看到并没有所谓完美的一种数据结构,如..
2020-11-09 18:53:41
456
原创 设计模式系列 — 访问者模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记工厂方法(factory method)模式抽象工厂(abstract factory)模式原型(prototype)模式单例(singleton)模式建造者/构建器(builder)模式 适配器(adapter)模式桥接(bridge)模式组合(composite)模式装饰(decorator)..
2020-11-07 23:19:10
156
原创 设计模式系列 — 解释器模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-11-06 15:41:48
201
原创 设计模型系列 — 迭代器模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-11-05 23:08:43
198
原创 设计模式系列 — 中介者模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-11-05 00:44:14
187
原创 设计模式系列 — 状态模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-11-03 23:28:09
174
原创 设计模式系列 — 命令模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-11-02 18:59:54
129
原创 设计模式系列 — 备忘录模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-11-01 21:33:37
133
原创 设计模式系列 — 代理模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-10-31 23:20:20
163
2
原创 并发编程从操作系统底层工作的整体认识开始
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言在多线程、多处理器、分布式环境的编程时代,并发是一个不可回避的问题。既然并发问题摆在面前一个到无法回避的坎,倒不如拥抱它,把它搞清楚,花一定的时间从操作系统底层原理到Java的基础编程再到分布式环境等几个方面深入探索并发问题。先就从原理开始吧。计算机系统层次结构早期计算机系统的层次最早的计算机用机器语言编程,机器语言称为第一代程..
2020-10-30 00:38:52
396
2
原创 设计模式系列 — 责任链模式
点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。前言23种设计模式速记单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式建造者/构建器(builder)模式 原型(prototype)模式享元(flyweight)模式外观(facade)模式适配器(adapter)模式装饰(decorator)..
2020-10-29 22:53:49
166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人