codingtu的博客

本博客只原创Java相关文章,不做转载。用心写,让你有所收获!

常用的设计模式Java实现及解析

以下说明(部分)解释摘录/参考自《Head First设计模式》 design-patterns observer pattern 观察者模式 my implementation 观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。 my i...

2019-05-02 11:57:30

阅读数 63

评论数 0

CacheLoader returned null for key分析和解决

背景 今天在使用的时候使用GuavaCache的refreshAfterWrite的功能时,发现在少数场景下会报错CacheLoader returned null for key。但是如果把refreshAfterWrite去掉时,又不会报错。具体错误内容是这样的。 com.google.com...

2019-04-26 21:44:46

阅读数 922

评论数 0

设计模式-观察者模式

前言 关于观察者模式比较简单,网上解释的很多很多,解释的都挺好理解的,因此这里并不打算说明太多,有关实现和案例源码已上传至https://github.com/zhuzhenke/design-patterns,提供了两种实现方案,一种是jdk实现,一种是我自己实现了可多观察者观察多主题。 本文重...

2019-04-19 09:03:18

阅读数 1061

评论数 0

强烈推荐:许式伟的架构课(4月25日前有优惠)

购买后加我微信有会将24元返现全部返回给你 对工作多年的程序员而言,日后的职业发展无非是专精技术,转型管理,晋升架构师三种选择。 成为一名优秀的架构师,是大多数技术人的追求。 想要做架构,空有一身技术是远远不够的,知识的深度和广度,会决定一个架构师的架构能力。而这些知识,从你踏入 IT 行业那一刻...

2019-04-11 09:23:39

阅读数 1658

评论数 0

比AtomicLong更高效的并发计数类LongAdder

比AtomicLong更高效的并发计数类LongAdder (本文为原创文章,未经博主同意,禁止任何形式转载!) 最近在看https://github.com/alibaba/Sentinel(轻量级的流量控制、熔断降级 Java 库)源码的时候,看到在统计数量的时候使用了LongAdder。这个...

2019-04-05 20:34:25

阅读数 1708

评论数 0

ForkJoin框架使用和原理剖析

ForkJoin使用和原理剖析 相信大家此前或多或少有了解到ForkJoin,ForkJoin框架其实就是一个线程池ExecutorService的实现,通过工作窃取(work-stealing)算法,获取其他线程中未完成的任务来执行。可以充分利用机器的多处理器优势,利用空闲的线程去并行快速完成一...

2019-03-21 23:49:59

阅读数 6282

评论数 0

Java8新特性学习(三)- Stream类

Java8新特性学习(三)- Stream类

2019-03-12 23:16:50

阅读数 2450

评论数 0

Java8新特性学习(二)- Optional类

背景 Optional是一个容器,用来管理一个对象。主要是用来解决null和NullPointerException问题。 Java7 -> Java8 Optional是如何简化你的代码 假设有一个Student类 @Data public class Studen...

2019-02-20 22:03:33

阅读数 2428

评论数 0

Java8新特性学习(一)- 开篇介绍

背景 随着工作的深入,用到的知识是越来越多,代码中用到Java8的特性也越来越多,如果只是知道几个简单的用法而不从本质上去知道其背景、实现原理,理解代码是一件相对困难的事情。基于此,接下来将相对系统的去学习Java8的一些新特性,也算是用自燃的方式来点燃各位想要掌握新知识的同学,一起进步! 新特性...

2019-02-18 23:38:09

阅读数 2423

评论数 0

Guava Cache expireAfterWrite 与 refreshAfterWrite区别

前面的文章缓存篇(一)- Guava有讲到Guava Cache有区别于ConcurrentHashMap的使用,就是因为其自带有自动刷新和自动失效的功能,避免我们去自己编写刷新和失效的后台线程程序。Guava Cache提供了简单便捷的api给我们使用,但是研究源码发现这里的自动刷新缓存和自动失...

2019-02-17 12:42:43

阅读数 3015

评论数 0

别踩坑!使用MySQL唯一索引请注意

背景 在程序设计中了,我们往往需要确保数据的唯一性,比如在常见的注册模块,我们需要确保一个手机号只能注册为一个账号。这种情况下,我们的程序往往是第一道关卡,用户来注册之前,首先判断这个手机号是否已经注册,如果已经注册则返回错误信息。但是我们不能确保同时有两个人使用同一个手机号注册到我们的系统中,因...

2019-01-28 21:33:14

阅读数 7708

评论数 7

HashMap的算法解析及高并发下死循环分析

HashMap是一个以空间换时间,内部以数组+链表\红黑树实现的散列表。HashMap的具体原理我们不做深入仔细分析,这类文章网上较多,且HashMap在面试中命中率极高。本文以jdk1.8为例,只分析里面我认为值得拿出来分析的有关数据结构和算法的部分来讲解。 HashMap的长度 HashMap...

2018-12-06 08:59:34

阅读数 2470

评论数 0

排序算法总结(含动图演示和Java代码实现)

本文将围绕冒泡排序、桶排序、计数排序、堆排序、插入排序、并归排序、快速排序和选择排序,按照描述、时间复杂度(最坏情况)、动态图展示和代码实现来讲解。本文默认排序为从小到大。 本文相关代码已上传至github,欢迎关注https://github.com/zhuzhenke/common-algor...

2018-12-03 08:10:15

阅读数 2720

评论数 0

MySQL基本原理和使用技巧

本文是我在大半年前在前公司做团队分享时的一个文档,写得比较挫,当时分享讲了2个小时,自己感觉讲得还可以。最近前同事跑来问我还有没有文档保存,翻了旧电脑和硬盘才找出来,于是就想着分享一下。 一、MySQL整体结构 服务器层(负责客户端连接、授权认证、安全、线程管理等) 核心层(缓存查询、解...

2018-11-13 23:51:37

阅读数 2385

评论数 0

缓存篇(四)- Memcache(未完成)

 缓存篇(四)- Memcache

2018-10-28 23:52:44

阅读数 199

评论数 0

缓存篇(三)- Spring Cache框架

前两篇我们讲了Guava和JetCache,他们都是缓存的具体实现,今天给大家分析一下Spring框架本身对这些缓存具体实现的支持和融合,使用Spring Cache将大大的减少我们的Spring项目中缓存使用的复杂度,提高代码可读性。本文将从以下几个方面来认识Spring Cache框架 背景...

2018-10-15 08:11:03

阅读数 2774

评论数 0

缓存篇(二)- JetCache

本文将由浅入深,从基本特性介绍,从简单demo使用,到JetCache源码分析,到Spring Aop的源码分析,到如何利用这些知识去自己尝试写一个自己的cache小demo,去做一个全面的概括。 *背景和特性 *用法demo *JetCache源码分析 *Spring Aop的支持和源码...

2018-09-28 19:27:25

阅读数 2799

评论数 1

缓存篇(一)- Guava

接下来几篇给大家分享一下缓存相关的内容,包括但不限于Guava,JetCache和Spring Cache等。       Guava产生的背景       最常见最简单的方式就是我们使用HashMap或者ConcurrentHashMap,在内存中缓存数据,通过key存放value,通过ke...

2018-08-04 17:41:52

阅读数 2526

评论数 0

RPC框架(二) - Dubbo

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。dubbo目前已经有apache托管,官方文档查看请点击http://dubbo.apache.org/books/dubbo-user-bo...

2018-06-11 11:41:14

阅读数 801

评论数 0

RPC框架(一) - Java自带的RMI

    接下来的文章中,我将会去分析Java语言中常用的RPC框架,包括但不限于RMI、dubbo、Hessian、Spring Remoting框架。这篇文章将简要介绍Java语言自带的RMI协议。       RMI(Remote Method Invocation),远程方法调用,程序调...

2018-05-21 11:44:12

阅读数 623

评论数 0

提示
确定要删除当前文章?
取消 删除