自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

albon arith

一些总结,欢迎交流

原创 一个简洁安全的配置解析框架

背景 设计与实现 注解标记关键信息 自定义配置解析规则 支持 Bean Validation ConfigParser 解析器 类型自动匹配 安全保障 扩展功能 总结 背景 为了解决配置解析中的一些痛点,开发了一个配置解析框架。我们先说一下,老的的配置解析方式有哪些问题?老的配置...

2018-07-08 22:25:37

阅读数 747

评论数 0

原创 基于系统负载的动态限流组件 dynamic-limiter

基于系统负载的动态限流组件 dynamic-limiter 背景 动态限流原理 测试效果 总结 基于系统负载的动态限流组件 dynamic-limiter 最早发在了:Qunar 技术沙龙 背景 一个系统的处理能力是有限的,当请求量超过处理能力时,通常会引起排队,造成响应时...

2018-01-05 22:59:50

阅读数 1668

评论数 4

原创 系统设计:关于高可用系统的一些技术方案

系统设计关于高可用系统的一些技术方案 高可用方法论 扩展 隔离 解耦 限流 分类 漏桶算法 令牌桶算法 滑动窗口计数法 动态限流 降级 熔断 发布相关 模块级自动化测试 灰度发布 回滚 其他 总结 参考资料 系统设计:关于高可用系统的一些技术方案 可靠的系统是业务稳定...

2017-09-17 09:22:32

阅读数 16051

评论数 2

原创 PKI 公钥基础设施原理与应用

文章目录PKI 是什么PKI 详细介绍PKI 的组成核心算法CA 机构数字证书证书撤销机制应用:访问控制参考资料 PKI 是什么 Public Key Infrastructure(PKI),中文叫做公钥基础设施,可以理解为利用公钥技术为网络应用提供加密和数字签名等密码服务以及必需的密钥和证书管理...

2019-12-21 19:56:08

阅读数 722

评论数 0

原创 Nginx 原理和架构

Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master ...

2019-11-09 17:13:28

阅读数 48694

评论数 31

原创 Kafka 原理和架构解析

Kafka 是由 LinkedIn 开发的一个分布式的消息系统,使用 Scala 编写,它以可水平扩展和高吞吐率而被广泛使用。Kafka 是一种分布式的,基于发布 / 订阅的消息系统。主要设计目标如下: 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间...

2019-11-03 11:45:50

阅读数 2466

评论数 1

翻译 Netty 与线程绑核

如果你在开发低延迟的 Netty 应用程序,那么你可能了解过线程亲和性(thread affinity)这一概念。线程亲和性是指一个线程可以被强制在某一特定的 CPU 核和 CPU 核组上运行。这样你就可以在操作系统调度过程中消除线程迁移,提升性能。幸运的是,目前就有一个名为 Java-Threa...

2019-10-26 10:18:21

阅读数 903

评论数 0

原创 Netty 的组件和设计

Netty 基于 Java NIO 的异步的和事件驱动的实现,保证了高负载下应用程序性能的最大化和可伸缩性。Netty 也包含了一组设计模式,将应用程序逻辑从网络层解耦, 简化了开发过程,同时也最大限度地提高了可测试性、模块化以及代码的可重用性。 事件驱动模型 通常,我们设计一个事件处理模型的程序...

2019-10-26 09:56:34

阅读数 987

评论数 0

原创 Apache HTTPClient 源码解析:主流程

使用示例 最近使用 HTTPClient 踩了不少坑,故在此总结下。本文基于 HTTPClient 4.5.6 进行分析,分析源码之前,先贴下用法示例: public class HttpUtil { private static final Logger LOGGER = LoggerF...

2019-09-19 22:23:54

阅读数 1056

评论数 0

原创 关于 HTTP 长连接

使用长连接能够减少建立销毁连接的消耗,三次握手、四次挥手对性能影响是很大的。一般 RPC 如 Dubbo 默认都是长连接的,HTTP 1.1 之上也可以支持长连接了,HTTP 2.0 也支持了单一长连接的多路复用。 一般 HTTP 服务前面都会挂 nginx 做负载均衡,那么长连接的设置也分为从客...

2019-09-15 23:58:31

阅读数 1501

评论数 0

原创 安全传输与身份认证

什么是 TLS 安全传输呢? 传输层安全性协议(英语:Transport Layer Security,缩写作TLS),及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。 TLS 在传输数据之前有一个握手阶段,利...

2019-09-08 20:50:34

阅读数 785

评论数 0

原创 领域驱动设计概述

领域驱动设计(Domain Driven Design,DDD)是由 Eric Evans 最早提出的综合软件系统分析和设计的面向对象建模方法,如今已经发展成为了一种针对大型复杂系统的领域建模与分析方法。它完全改变了传统软件开发工程师针对数据库进行的建模方法,从而将要解决的业务概念和业务规则转换为...

2019-08-03 11:10:36

阅读数 523

评论数 0

原创 CQRS 架构

CQRS 是一个读写分离的架构思想,全称是:Command Query Responsibility Segregation,即命令查询职责分离,表示在架构层面,将一个系统分为写入(命令)和查询两部分。一个命令表示一种意图,表示命令系统做什么修改,命令的执行结果通常不需要返回;一个查询表示向系统查...

2019-07-27 16:37:25

阅读数 688

评论数 0

原创 MVC 模型

MVC 是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输...

2019-07-27 11:32:40

阅读数 546

评论数 0

原创 Java 性能调优总结

这里总结一下,Java 性能调优的方法: 代码层面 String 使用优化 循环拼接字符串显式使用 StringBuilder JDK 从 6 到 7、8 到 9 对 String 是一直在优化的 正则表达式 少用捕获组 贪婪模式会带来回溯,多用独占模式和懒惰模式 ArrayLis...

2019-07-21 17:27:09

阅读数 466

评论数 0

原创 分布式链路跟踪技术(五):跨线程传输和上下文传播

在分布式链路跟踪系统中,同一条请求处理链路要用一个全局唯一的 traceId 来标识,那就需要把 traceId 传输到该请求涉及的各个系统中。Trace 信息要在系统之间传输时,是通过各种 RPC 中间件里埋点,把 Trace 信息放在 HTTP Header、RPC Context 里进行传输...

2019-07-21 16:59:55

阅读数 667

评论数 0

原创 分布式链路跟踪技术(四):链路拓扑

在“分布式链路跟踪系统(一):Dapper 介绍”里提到过链路跟踪系统要解决的难题之一是“链路梳理难:需求迭代很快,系统之间调用关系变化频繁,靠人工很难梳理清楚系统链路拓扑”。 讲拓扑计算之前,先看一下分布式链路跟踪的数据模型,可以参考文章 OpenTracing 数据模型。一条 Trace(调用...

2019-07-13 13:01:54

阅读数 518

评论数 0

原创 【笔记】从 Paxos 到 Zookeeper:第七章 Zookeeper 技术内幕之服务端

title: 从 Paxos 到 Zookeeper:第七章 Zookeeper 技术内幕之服务端 notebook: Java tags: 服务端启动 单机版启动大致可以分为如下步骤: 配置文件解析 初始化数据管理器 初始化网络IO管理器 数据恢复 对外服务 核心类介绍: QuorumP...

2019-07-07 11:06:08

阅读数 443

评论数 0

原创 分布式链路跟踪技术(三):自定义 Annotation

在文章“分布式链路跟踪系统(一):Dapper 介绍”里提到过 Annotation,Annotation 里除了可以记录链路的基本信息(耗时、应用名、方法名),还可以用来记录一些业务自定义的扩展信息。扩展信息有两类: 纯文本,记录在链路数据里,方便查看。 key-value 数据,实现多维度查...

2019-06-29 16:55:01

阅读数 455

评论数 0

原创 分布式链路跟踪系统(二):基本的系统架构

在上一篇文章“分布式链路跟踪系统(一):Dapper 介绍”里讲了分布式链路跟踪系统的主要功能、实现原理,这一节讲一下基本的系统架构设计。分布式链路跟踪系统架构主要有三个部分:数据收集、分析处理、查询展示,如下图所示: 之前讲过 Trace 数据的埋点主要依赖通用的中间件,埋点记录的数据如何收集...

2019-06-29 14:08:28

阅读数 456

评论数 0

原创 分布式链路跟踪系统(一):Dapper 介绍

文章目录概述基本原理Annotation植入采样率资料 概述 随着分布式系统和微服务的出现,一次用户请求可能会经过多个系统,不同服务之间的交互非常复杂,任何一个系统出错都可能影响整个请求的处理结果。以往的监控系统往往只能知道单个系统的健康状况、一次请求的成功失败,无法快速定位失败的根本原因。除此之...

2019-06-23 16:16:57

阅读数 978

评论数 0

原创 Java 随机数生成器 Random & SecureRandom 原理分析

文章目录java.util.Randomjava.Security.SecureRandom/dev/random 与 /dev/urandom资料 Java 里提供了一些用于生成随机数的工具类,这里分析一下其实现原理,以及他们之间的区别、使用场景。 java.util.Random Random...

2019-06-22 21:04:27

阅读数 1136

评论数 0

原创 Java 中的 SafePoint

SafePoint 介绍 什么是 SafePoint? SafePoint 是 Java 代码中的一个线程可能暂停执行的位置。SafePoint 保存了在其他位置没有的一些运行时信息。SafePoint 保存了线程上下文中的任何东西,包括对象,指向对象或非对象的内部指针。 在 JVM 处于 Saf...

2019-06-15 22:26:04

阅读数 614

评论数 0

原创 HTTP 协议对比

HTTP 协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。 比较常用的 HTTP 协议版本有 1.0、1.1、2.0,HTT...

2019-06-02 23:36:29

阅读数 475

评论数 0

原创 【笔记】从 Paxos 到 Zookeeper:第七章 Zookeeper 技术内幕之客户端

文章目录系统模型数据模型节点特性版本-保证分布式数据原子性操作Watcher-数据变更通知ACL-保障数据安全序列化与协议序列化通信协议客户端一次会话的创建过程初始化阶段会话创建阶段响应处理阶段服务器地址列表ClientCnxn:网络 I/O会话 系统模型 这一节首先从数据模型、节点特性、版本、W...

2019-06-02 09:26:02

阅读数 434

评论数 0

原创 面向对象设计的 SOLID 原则

文章目录依赖倒置原则接口隔离单一职责开闭原则里氏替换原则迪米特法则资料 依赖倒置原则 高级模块不应当依赖于低级模块。它们都应当依赖于抽象。 抽象不应当依赖于实现,实现应当依赖于抽象。 依赖倒置原则存在的真正意义是指,我们需要将一些对象解耦,它们的耦合关系需要达到当一个对象依赖的对象作出改变时,...

2019-05-26 12:01:30

阅读数 447

评论数 0

原创 【笔记】从 Paxos 到 Zookeeper:第 5 章 使用 Zookeeper

文章目录部署和运行客户端脚本原生 Java API开源客户端ZkClientCurator基础 API监听功能leader 选举分布式 Barrier资料 部署和运行 zk 有三种模式:单机模式、集群模式、伪集群模式,单机模式就是只部署一台服务器,集群模式是在多台服务器上部署多个 zk 进程,伪集...

2019-05-25 11:15:03

阅读数 467

评论数 0

原创 【笔记】自动内存管理的艺术:堆内存的划分

文章目录为何要进行分区如何分区何时进行分区参考资料 为何要进行分区 之前几章讲解垃圾回收时,都假定:所有对象由相同的垃圾回收算法管理,并且所有垃圾都将在同一时间得到回收。然而如果我们对不同的对象加以区别对待的话,在回收处理的性能上将得到相当大的好处。最广为人知的例子就是所谓“分代回收算法”,该算法...

2019-04-16 19:28:00

阅读数 453

评论数 0

原创 【笔记】自动内存管理的艺术:引用计数

文章目录概述引用计数算法的优缺点提升效率延迟引用计数合并引用计数环状引用计数受限域引用计数总结 概述 之前介绍的几种垃圾回收算法都是间接式的,他们都需要从已知的根集合出发对存活对象图进行遍历,才能确定所有的存活对象。本章将介绍最后一种基本回收算法:引用计数。在引用计数算法中,对象的存活性可以通过引...

2019-04-13 14:58:38

阅读数 520

评论数 0

原创 【笔记】自动内存管理的艺术 引言&标记清扫回收器

文章目录引言概述自动动态内存管理垃圾回收算法标记-清扫回收算法概述标记-清扫算法三色抽象位图标记懒惰清扫标记过程中的高速缓存不命中问题需要考虑的问题 引言 概述 托管语言以及托管运行时系统不仅能够提升程序的安全性,而且可以通过对操作系统和硬件架构的抽象来提升灵活性,因而受到越来越多开发者的青睐。 ...

2019-03-31 22:07:06

阅读数 645

评论数 0

原创 【笔记】深入理解 Java 虚拟机:晚期(运行期)优化

文章目录概述Hotspot 虚拟机内的即时编译器解释器与编译器编译对象与触发条件方法调用计数器回边计数器编译过程Client CompilerServer Compiler编译优化技术优化技术概览公共子表达式消除数组边界检查消除方法内联逃逸分析 概述 在部分商用虚拟机(Sun Hotspot、IB...

2019-03-14 12:02:47

阅读数 6033

评论数 1

原创 【笔记】深入理解 Java 虚拟机:早期(编译期)优化

2019-02-19 12:03:50

阅读数 513

评论数 0

原创 【笔记】深入理解 Java 虚拟机:虚拟机字节码执行引擎

2019-02-01 00:02:31

阅读数 1064

评论数 0

原创 【笔记】深入理解 Java 虚拟机:类文件结构

概述 代码编译的结果从本地机器码编程字节码,是存储格式发展的一小步,却是编程语言发展的一大步。Java 在诞生之初,曾经有一个著名的口号“一次编译,到处运行”,这句话充分表达了软件开发人员对冲破平台界限的渴求。 各种不同平台的虚拟机都统一使用的存储格式 —— 字节码,是构成平台无关性的基石。虚拟机...

2019-01-19 10:46:47

阅读数 513

评论数 0

原创 【笔记】Spring 事务原理分析和源码剖析

文章目录概述源码解析xml 配置解析事务代理类的创建事务拦截器的实现切面实现事务处理实现总结:资料 概述 事务处理是一个重要并且涉及范围很广的领域,涉及到并发和数据一致性方面的问题。作为应用平台的 Spring 具有在多种环境中配置和使用事务处理的能力,也就是说通过使用 Spring 的事务处理,...

2018-11-05 23:14:54

阅读数 2135

评论数 2

原创 【笔记】Spring 技术解密:Spring MVC 与 Web 环境

概述 过去比较流行的 SSH 技术架构,也就是 Struts + Spring + Hibernate 技术组合,它们是 Web 应用开发中最常用的技术架构之一。这个技术架构是以 Struts 作为 Web 框架来帮助应用构建 UI,Spring 作为应用层平台,Hibernate 作为 O...

2018-08-21 23:13:58

阅读数 514

评论数 0

原创 Jackson 处理 Map key 为对象的情况

当使用 jackson 序列化 Map< ObjectA, ObjectB> 对象时,ObjectA 默认会以 toString 的方式来序列化,而在反序列化时,则会直接失败。这个问题,该如何解决呢? jackson 提供额外的接口供我们扩展,网上以 2.x 版本为例...

2018-08-14 15:45:35

阅读数 1812

评论数 1

原创 【笔记】Java 并发编程的艺术 第4章 Java 并发编程基础

《java 并发编程的艺术》第4章 Java 并发编程基础 线程简介 线程间通信 volatile 和 synchronized 等待通知机制 管道输入输出流 Thread.join() ThreadLocal 《java 并发编程的艺术》第4章 Java 并发编程基础 ...

2018-07-06 14:08:38

阅读数 535

评论数 0

原创 模块级别自动化测试的经验与教训

模块级别自动化测试的经验与教训 概述 原理 经历的坑 本地缓存的 dump 问题 性能问题 静态方法、随机数问题 带异步任务的请求结束时间判断问题 代码规范问题 总结 参考资料 模块级别自动化测试的经验与教训 概述 搞了几个月的自动化测试,结果不甚理想,这里做一个简单...

2018-06-18 16:57:28

阅读数 2600

评论数 6

原创 自动内存管理的艺术【笔记】

自动内存管理的艺术 引言 标记-清扫回收 概述 三色抽象 位图标记 懒惰清扫 标记-整理回收 概述 局限性 复制式回收 引用计数法 分代垃圾回收 概述 时间测量 弱分代假说 分代与堆布局 多分代 年龄记录 分代间指针 自动内存管理的艺术 引言 存活性是一个...

2018-06-02 12:09:53

阅读数 579

评论数 0

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