自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记忆碎片

All those moments will be lost in time,like tears in rain.

原创 Netty源码阅读之解码器简析

通过网络传输过来的数据,需要通过netty中的解码器进行处理,其中抽象类ByteToMessageDecoder中定义了相应的处理方法。 不妨先来围观下该类的继承关系: 由上图可以明白,该类实现了ChannelHandler这个接口,所以,说到底,解码器就是一个特殊的handler而已。 ...

2020-05-26 00:07:08 94 0

原创 Netty源码阅读之ByteBuf简析(二)
原力计划

前面对于Netty中的ByteBuf缓存做了一下简单的介绍,下面将围绕源码,对于其中的几个特性进行分析。 1.扩容机制 首先来聊下Bytebuf的扩容机制,这个机制也是Netty比较强悍的地方,而我们知道JDK自带的ByteBuffer是无法扩容的,在Bytebuf创建的时候,我们通常会设置一...

2020-05-10 22:09:35 220 0

原创 Netty源码阅读之ByteBuf简析(一)

在Netty中ByteBuf主要是用于数据的中转,底层IO将数据读取到ByteBuf,之后传输给应用程序;而应用程序在处理完之后将数据封装成ByteBuf发送给底层IO。 在介绍ByteBuf具体的实现之前,让我们先来查看一下相关类的关系图: ...

2020-05-05 22:07:55 95 0

原创 Netty源码阅读之事件传输机制的简要分析
原力计划

前面提到,ChannelHandler可以用来处理inBound以及outBound事件;而inBound以及outBound事件的流转也是Netty中比较重要的一环;下面,将对Netty源码中对事件的传输机制进行简要的分析: 在Netty的事件传播过程中,总共有两种的传播方式,第一种方式是调用...

2020-04-19 19:32:31 106 0

原创 Netty源码阅读之Pipeline中添加以及删除ChannelHandler流程总结
原力计划

1.简要介绍 首先,ChannelHandler主要的作用是用来处理inbound或者outbound事件,调用者可以通过ch.pipeline().addLast()来进行添加,我们可以通过一张经典图例来认识一下ChannelHandler、pipeline、以及ChannelHandl...

2020-04-04 22:04:41 123 0

原创 Netty源码阅读之Pipeline初始化流程

1.Pipe的创建时机 Pipe的创建是在AbstractChannel类的构造函数中完成的: protected AbstractChannel(Channel parent) { this.parent = parent; id = newId(); ...

2020-03-29 19:34:25 128 0

原创 使用Hutool 工具库导出Excel表格

Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。 Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初...

2020-03-14 20:00:10 510 0

转载 Google guava新集合类型汇总整理

Google guava新集合类型汇总整理1.使用说明1.1 Multiset1.2 SortedMultiset1.3 Multimap1.4 ListMultimap1.5 SetMultimap1.6 BiMap1.7 ClassToInstanceMap1.8 Table 原文地址: 1....

2019-11-16 12:18:28 169 0

转载 关于DDD领域驱动设计的理解

转载自:点击这里 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决。 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品。所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的。 再比如,...

2019-09-22 22:47:59 87 0

原创 javassist简单介绍以及如何使用它来实现lombok的功能

最近在学习MyBatis的源码,在阅读的过程中,发现有一个叫做javaassist的工具,查阅了一些资料,这个工具和ASM的功能类似,可以直接修改Java的字节码文件,而ASM要更偏向底层一些。 下面我们通过一个例子来学习其使用方法: public class Run { publi...

2019-07-10 23:59:16 180 0

转载 Java 11 新特性介绍

原文地址 Java 11 已于 2018 年 9 月 25 日正式发布,之前在 Java 10 新特性介绍中介绍过,为了加快的版本迭代、跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个大版本,每个季度发布一个中间特性版本,并且做出不会跳票的承诺。通过这样的方式,Jav...

2019-06-12 23:25:32 2436 1

原创 Angular6.x 实战开发总结

最近的一段时间,撸了一些前端的东西,对于前端开发有了一些新的认识,下面主要针对Angular(主要是2.0以后的版本)这个开发框架来对前端的知识点进行一些简单的总结: 1. 实现返回功能: private goBack() { this.router.navigate(["...

2019-05-14 19:38:54 331 0

转载 Elasticsearch-基础介绍及索引原理分析

本文转载自:http://blog.pengqiuyuan.com/ji-chu-jie-shao-ji-suo-yin-yuan-li-fen-xi/ 最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticse...

2019-03-31 23:45:13 181 0

原创 初识Spring Cloud--Spring Cloud Bus在服务配置中心的简单应用

前面对配置中心进行了讲解,我们可以很明显的感受到使用spring cloud在处理配置方面的便捷性,然而,当托管到git等工具上的配置一旦发生变化,若采用前面的架构我们的每一个客户端都需要发送一遍请求,这势必会照成一些问题,这时候,spring cloud bus横空出世了。 下面,我们直接进入...

2019-03-31 12:19:54 108 0

原创 spring boot 2.1.x整合jersey遇到的坑

由于最近的开发需要用到这个框架,所以打算重新学习下,但是spring boot的版本升级了,导致了依赖方面一些问题,应用老是起不来,没想到这个还是spring boot的bug...这里记录一下: 首先来看一下相关的依赖: <dependencies> &am...

2019-01-01 13:34:19 993 0

转载 全面了解Nginx到底能做什么

原文链接 前言 本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得。所以还请见谅,同时欢迎留言交流 Nginx能做什么 1.反向代理 2.负载均衡 3.HTTP服务器(包含动静分...

2018-12-23 12:26:13 179 1

原创 初识Spring Cloud--分布式配置中心实践

在一个分布式的微服务集群中,各个服务的数量可能有成百上千,管理成本将非常大,这时候就迫切需要一个统一的配置和管理中心,spring cloud就提供了一套集中式的配置中心方案,下面是配置中心的示意图: 依照上边的原理图,我们首先来实现config-server,也即配置中心的服务端: 创建...

2018-12-15 23:25:51 150 0

原创 初识Spring Cloud--微服务网关实现之zuul

在spring cloud中,zuul主要担任服务网关的角色(现已被Spring Cloud Gateway所取代),可以将外部的请求分发到不同的微服务上去,官网上有一张图片,可以直观的展示zuul的功能,其中的API Gateway便是今天的主角--zuul。 为了使用这个服务网关功能,首...

2018-12-14 23:01:53 141 0

原创 初识Spring Cloud--利用Hystrix实现服务的熔断及降级

在分布式的系统中,服务与服务之间有可能会存在依赖的情况,这时候就会出现一些问题,比方说服务A依赖于服务B,服务B又依赖于服务C,这个时候如果服务C出现了问题,那么久而久之服务B也会也会逐渐被服务C“拖垮”,进而,服务A也会逐渐出现问题(又称雪崩效应);所以我们迫切的需要一种“快速失败”的机制,告诉...

2018-12-13 23:43:41 399 0

原创 初识Spring Cloud--声明式REST客户端(Feign)

在前面的实践中,我们都是通过 RestTemplate来实现对远程服务的调用,但是在代码的编写上并不美观,Spring Cloud给出了另一套方案,也即是本篇中提到的Feign,Spring Cloud Feign 是基于Netflix Feign 实现的。 那么,怎么实现咧? 依然使用前面的...

2018-12-08 22:47:24 135 0

原创 初识Spring Cloud--Ribbon客户端负载均衡

首先来看一下Ribbon的作用: ribbon 是一个客户端负载均衡器,主要是实现类似于 nginx的负载均衡的功能。 SpringCloud提供了7种负载均衡的算法,如下表所示,ribbon 默认使用轮询算法(RoundRobinRule)来实现负载均衡, 策略名 策略声明 ...

2018-12-04 00:12:27 216 0

原创 初识Spring Cloud--Eureka服务注册中心搭建

首先,来认识一下SpringCloud: Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调导致了样板模式,使用Spring Cloud...

2018-11-29 22:49:46 172 0

原创 Rancher Kubernetes Engine(RKE)安装K8S

k8s又推出了一些新的版本,部署的难度又增加了不少,虽然前面做过一些工作:https://blog.csdn.net/yalishadaa/article/details/78765031,但对新版本的k8s安装,基本没有什么太大的帮助,下面我将通过RKE这款开源的安装程序来对k8s进行安装和部署...

2018-11-28 16:39:36 1120 0

转载 伪共享、缓存行填充以及CPU缓存机制

    关于伪共享的一篇好文,转载自: https://blog.csdn.net/karamos/article/details/80126704 1.认识CPU Cache CPU Cache概述 随着CPU的频率不断提升,而内存的访问速度却没有质的突破,为了弥补访问内存的速度慢,...

2018-09-14 13:33:59 253 0

转载 你真的了解java的lambda吗?- java lambda用法与源码分析

from:https://www.cmlanche.com/2018/07/22/lambda%E7%94%A8%E6%B3%95%E4%B8%8E%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/ 用法 示例:最普遍的一个例子,执行一个线程 new Thread(...

2018-08-20 20:50:59 580 1

原创 intellij idea使用git stash暂存一次提交

分享一个小技巧: 在日常开发中有时候需要切换到另外的一个分支,但在某些条件下当前的分支上存在一些文件尚未提交,这时候就需要使用到idea自带的git stash功能来"暂存"一些尚未提交的文件,待切换到另外的分支上再提交到新的分支上去。 任意打开一个项目进行演示: ste...

2018-07-31 21:46:21 6823 0

原创 Kubernetes文件挂载问题

当我们将应用打包成docker镜像并发布时,可能会有替换掉内部配置文件的需求,有别于docker中自带的文件挂载功能,Kubernetes挂载配置文件的时候会覆盖掉原有的文件。这里,我们可以通过创建一个符号链接来挂载宿主机上的配置文件。首先,执行以下的命令来创建一个configmap:kubect...

2018-07-05 22:04:46 6548 0

原创 redis lua脚本学习

在实际的项目开发中,使用lua脚本能够减少对于redis的访问次数,提高效率,下面通过一个入门级的例子来对redis中的lua脚本进行介绍:public class RedisTemplateLua { public static void main(String[] args) { ...

2018-05-13 21:33:37 857 0

转载 分布式一致性算法Paxos介绍

原文地址PAXOS可以用来解决分布式环境下,选举(或设置)某一个值的问题(比如更新数据库中某个user的age是多少)。分布式系统中有多个节点就会存在节点间通信的问题,存在着两种节点通讯模型:共享内存(Shared memory)、消息传递(Messages passing),Paxos是基于消息...

2018-05-13 17:09:38 287 0

转载 源码分析shiro认证授权流程

原文地址: https://www.cnblogs.com/davidwang456/p/4428421.html 1. shiro介绍 Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”;授权...

2018-05-01 16:33:13 234 0

原创 EnumSet源码解析

EnumSet表示一个枚举类的集合,而且这个集合中只包含同一种枚举类的对象,下面来看一下这个类型的使用方法: 首先定义一个枚举类: public enum Color { RED("红色",0),BLUE("蓝色",2),ORANGE("...

2018-04-22 23:25:19 197 0

原创 对于ConcurrentHashMap源码的浅要分析

JDK版本:1.8 1.重要的属性: private static final int MAXIMUM_CAPACITY = 1 << 30;//最大容量,默认为2^30,int型最大2^32,因为最高的两位有其他的用途,所以是2^30,这在源码的注释里边亦有所提及 private...

2018-04-15 23:32:16 214 0

转载 Spring Boot 2.0 新特性和发展方向

以Java 8 为基准Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持。内嵌容器包结构调整为了支持reactive使用场景,内嵌的容器包结构被重构了的幅度有点大。EmbeddedServletContainer被重命名为WebServer,并且org....

2018-02-28 15:17:57 38721 4

原创 享元模式

1.使用场景: 内存资源比较稀缺,不要随便浪费,如果有很多相同或者类似的对象,通过使用享元模式的方法,节省内存,例如线程池以及String类等。 2.UML表示 在享元模式中通常用以下的几类对象: 2.1FlyweightFactory(享元工厂,创建并且管理享元对象) 2.2FlyWeig...

2018-02-19 16:40:37 268 0

原创 组合模式

1.使用场景: 部分和整体之前通过树状结构进行显示,调用者需要达到可以使用统一的方式处理部分对象以及整体对象的目的。 2.UML表示 组合模式主要包括下面的几个角色: 2.1抽象构件:定义叶子和容器构件的共同点。 2.2叶子构件。 2.3容器构件:能够包含子节点。 具体的UML示意图如下: ...

2018-02-19 16:36:33 183 0

原创 桥接模式

1.使用场景: 分离两个变化的维度,通过组合的方式来减少系统中臃肿繁琐的代码,例如JDBC中的驱动程序。 2.UML表示: 2.1 实现(Implementor):定义具体行为,具体特征的应用接口。 2.2 具体实现(ConcreteImplementor):实现Implementor。 2...

2018-02-19 16:28:21 159 0

原创 外观模式

1.使用场景: 为子系统提供一个统一的入口。封装子系统的复杂性,便于客户调用,常用于一些工具类的封装。 2.UML表示 外观模式包含如下两个角色: (1) Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任;在正常情况下,它将所有...

2018-02-18 17:01:49 491 0

原创 代理模式

1.使用场景: 需要为其他的对象提供一种代理,来控制该对象的访问。Spring中的AOP技术就使用了代理模式。 2.UML表示 代理模式种有以下的几种对象: 2.1.抽象角色 包含有代理角色和真实角色的公共对外方法。 2.2.真实角色 真实抽象角色,定义真实角色需要实现的一些业务逻辑(真正干...

2018-02-18 16:54:47 178 0

原创 装饰模式

1.使用场景: 在已有的功能上边需要动态的添加新的功能。 2.UML表示 在装饰器模式中通常用以下的几类对象: 抽象构件角色(Project):给出一个接口,以规范准备接收附加责任的对象 具体构件角色(Employe):定义一个将要接收附加责任的类 装饰角色(Manager):持有一个构件对...

2018-02-18 16:47:46 134 0

原创 适配器模式

1.使用场景: 由于接口不兼容,需要通过“适配器”来进行协调工作。 2.UML表示 适配器模式中总共有3种角色: 2.1目标接口 客户期待的接口。目标可以是具体的或抽象的类,也可以是接口。 2.2需要适配的类 需要适配的类或者适配者类。 2.3适配器 通过包装一个需要适配的对象,将原有的接口...

2018-02-18 16:43:00 198 0

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