自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

https://github.com/Wang-Jun-Chao

分享知识,创造快乐!

原创 博文总目录

【博文目录】 【>>>架构<&amp...

2017-06-19 07:50:59 7885 4

原创 Go源码阅读——mstats.go
原力计划

【博文目录>>>】 【项目地址>>>】 Go内存统计 Go提供了运行进内存统计的方法,其实现在runtime/mstats.go文件中。go内存统计的作用有: Go内存实时监控 内存dump时,统计内存相关信息 Go GC时,统计GC相关的信息 应用调试时分...

2020-04-27 08:36:21 150 0

原创 Go源码阅读——map.go
原力计划

【博文目录>>>】 【项目地址>>>】 Go Map实现 map.go文件包含Go的映射类型的实现。 映射只是一个哈希表。数据被安排在一系列存储桶中。每个存储桶最多包含8个键/元素对。哈希的低位用于选择存储桶。每个存储桶包含每个哈希的一些高阶位,以区分单个存储...

2020-04-23 08:26:49 88 0

原创 go源码阅读——malloc.go
原力计划

【博文目录>>>】 【项目地址>>>】 内存分配器 golang内存分配最初是基于tcmalloc的,但是有很大的不同。tcmalloc文章: 参见:http://goog-perftools.sourceforge.net/doc/tcmalloc.html...

2020-04-13 08:07:32 172 0

翻译 TCMalloc:线程缓存Malloc

TCMalloc:线程缓存Malloc 本文翻译了TCMalloc : Thread-Caching Malloc最重要的部分,TCMalloc是go语言内存分配的基石,go内存分配置就是从TCMalloc演化而来。其余部分内容可参见原文。 动机 内存分配速度快。TCMalloc比我测试过的gli...

2020-04-06 13:57:51 42 0

原创 go源码阅读——chan.go
原力计划

【博文目录>>>】 【项目地址>>>】 chan.go是go语言通道实现,通道结构的定义,接收和发送的操作都此文件中实现。 通道的结构 hchan是通道表示的基本结构,其内容表示如下: 一些特殊情况 当dataqsiz=0时:说明这是一个无缓冲对列 当data...

2020-04-05 17:32:16 101 0

原创 go源码阅读——value.go

【博文目录>>>】 【项目地址>>>】 基本内容 value文件主要提供值的一些调用方法,value所需要的值在在type.go文件中定义 package reflect import ( "math" "runtime&qu...

2020-04-01 08:41:03 103 0

原创 go源码阅读——type.go
原力计划

基本结构图 reflect包基础类型是Type,其主要实现是rtype,在rtype下会有基于种类型的实现,主要结构图。 基本常量 数据类型常量 type Kind uint const ( Invalid Kind = iota Bool Int Int8 Int16 Int32...

2020-03-26 08:17:30 112 0

翻译 事件源模式

【博文目录>>>】 事件源模式 使用仅追加存储来记录描述在域中对数据执行的操作的完整事件序列,而不是仅存储当前状态,以便可以使用该存储来实现域对象。这种模式可以通过避免同步数据模型和业务域的要求,简化复杂领域中的任务;提高性能、可伸缩性和响应性;为事务性数据提供一致性;并维护完...

2020-03-21 10:48:24 143 0

翻译 命令和查询责任隔离(CQRS)模式

【博文目录>>>】 命令和查询责任隔离(CQRS)模式 使用单独的接口将读取数据的操作与更新数据的操作隔离开来。这种模式可以最大限度地提高性能、可伸缩性和安全性;通过更高的灵活性支持系统随时间的发展;并防止更新命令在域级别造成合并冲突。 背景与问题 在传统的数据管理系统中,命令...

2020-03-14 08:33:00 82 0

翻译 计算资源整合模式

【博文目录>>>】 计算资源整合模式 将多个任务或操作整合到一个计算单元中。这种模式可以提高计算资源利用率,并减少与在云托管应用程序中执行计算处理相关的成本和管理开销。 背景与问题 云应用程序经常实现各种操作。在某些解决方案中,最初可能会遵循关注点分离的设计原则,并将这些操作划...

2020-03-08 09:21:18 72 0

翻译 竞争消费者模式

【博文目录>>>】 竞争消费者模式 使多个并发使用者能够处理在同一消息通道上接收的消息。这种模式使系统能够同时处理多条消息,以优化吞吐量,提高可伸缩性和可用性,并平衡工作负载。 背景与问题 运行在云中的应用程序可能会处理大量请求。与其同步处理每个请求,不如让应用程序通过消息系统...

2020-03-07 07:39:32 50 0

翻译 补偿交易模式

【博文目录>>>】 补偿交易模式 如果一个或多个步骤失败,则撤消由一系列执行的工作的步骤组成,这些步骤一起定义最终一致的操作。遵循最终一致性模型的操作通常可在实现复杂业务流程和工作流的云托管应用程序中找到。 背景与问题 运行在云中的应用程序经常修改数据。这些数据可以分布在各种地...

2020-02-29 09:02:09 195 0

翻译 缓存旁路模式

【博文目录>>>】 缓存旁路模式 根据需要从数据存储区将数据加载到缓存中。这种模式可以提高性能,并有助于保持缓存中的数据与基础数据存储中的数据之间的一致性。 语境与问题 应用程序使用缓存优化对数据存储中保存的信息的重复访问。然而,期望缓存的数据始终与数据存储中的数据完全一致是不...

2020-02-09 09:59:27 219 0

翻译 云设计模式:云应用程序的规范体系结构指南

本指南包含24种设计模式和10个相关的指导主题,通过展示如何将每一项应用于云应用程序体系结构的全局图来阐明应用模式的好处。它还讨论了每种模式的好处和注意事项。大多数模式代码样例或者显示如何使用MicrosoftAzure的特性实现模式的片段。然而,本指南中描述的大多数主题与各种分布式系统同样相关,...

2020-02-08 10:29:12 224 0

原创 Java——Retry重试机制详解

Java——Retry重试机制详解@[TOC](Java——Retry重试机制详解)[【博文目录>>>】](http://blog.csdn.net/derrantcm/article/details/73456550)[【项目源码>>>】](https://g...

2019-05-20 16:40:52 727 3

转载 深入浅出Event Sourcing和CQRS

深入浅出Event Sourcing和CQRS Event Sourcing也叫事件溯源,是这些年另一个越来越流行的概念,是大神Martin Fowler提出的一种架构模式。简单来说,它有几个特点: 整个系统以事件为驱动,所有业务都由事件驱动来完成。 事件是一等公民,系统的数据以事件为基...

2019-01-18 10:49:14 778 0

原创 Java新一代垃圾回收器——ZGC

Java新一代垃圾回收器——ZGC 在JDK 11当中,加入了实验性质的ZGC。它的回收耗时平均不到2毫秒。它是一款低停顿高并发的收集器。 ZGC几乎在所有地方并发执行的,除了初始标记的是STW的。所以停顿时间几乎就耗费在初始标记上,这部分的实际是非常少的。那么其他阶段是怎么做到可以并发执...

2018-11-20 08:35:10 924 0

原创 【31-Redis分布式锁进化史】

【博文总目录>>>】 Redis分布式锁进化史 近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式...

2018-11-19 09:33:09 310 2

原创 MAC Pro 装Ubuntu 18 虚拟机字太小的调节方法

macpro 装Ubuntu18 虚拟机 字太小的调节方法 用的macpro安装了ubuntu15虚拟机。结果因为分辨率太高,ubuntu里字体图标都很小。最后发现了一个可调节的方法: 1.点击ubuntu的setting 2.点击弹出窗口的dispalys 3.弹出的Displays窗口...

2018-07-21 06:40:34 1954 0

原创 消息对队的使用和常用消息对列对比

【博文总目录>>>】 一、消息队列使用的四种场景介绍 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ,RabbitMQ,Zer...

2018-03-11 10:29:07 997 0

原创 使用cglib在内存中动态生成类

【博文总目录>>>】|【项目源码>>>】 CGLIB是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。本示例展示了如何使用cglib动态生成类。 ...

2018-02-22 09:55:05 2557 1

原创 使用javaassist在内存中动态生成类

【博文总目录>>>】|【项目源码>>>】 Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开...

2018-02-22 09:08:23 1202 0

原创 最简RPC框架实现

【博文总目录>>>】|【项目源码>>>】 RPC概述 RPC(Remote Proceduce Call 远程过程调用) 一般用来实现部署在不同机器上的系统之间的方法调用,使程序能够像访问本地系统资源一样,通过网络传输过去访问远端系统资源。 RPC...

2018-02-04 10:56:01 1049 0

转载 第八章JAVA CAS原理深度分析

【博文总目录>>>】 【Java 7 并发编程实战手册目录>>>】 java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CAS CAS:Compare and Swap, 翻译成比较并交...

2018-01-21 19:52:53 626 0

转载 【第13章】【TCP粘包/拆包问题和Netty的解决方案】

【博文总目录>>>】 工程下载【1>>>】|【2>>>】 什么是TCP协议? TCP(Transmission Control Protocol传输控制协议)是Internet协议组的主要协议之一。起源于初始的网络实现,补充了IP...

2018-01-20 22:48:30 459 0

原创 跳跃表Skip List的原理和实现(Java)

【博文总目录>>>】|【代码下载>>>】 为什么要有跳跃表 我们在实际开发中经常会有在一堆数据中查找一个指定数据的需求,而常用的支持高效查找算法的实现方式有以下几种: 有序数组。这种方式的存储结构,优点是支持数据的随机访问,并且可以采用二分查找算法降低查...

2018-01-15 13:09:54 5078 4

原创 【30-Redis设计与实现-整数集合】

【博文总目录>>>】|【工程下载>>>】 整数集合( intset )是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。 整数集合的实现 整数集合( intset )是...

2018-01-09 08:05:53 465 0

原创 【29-Redis设计与实现-跳跃表】

【博文总目录>>>】|【工程下载>>>】 跳跃表( skiplist )是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN)、最坏O(N)(的复杂度的节点查找,还可以通过顺序性操作来批量...

2018-01-08 08:11:46 815 0

原创 【28-Redis设计与实现-字典】

【博文总目录>>>】|【工程下载>>>】 字典,又称为符号表( symbol table )、关联数组( associative array )或映射( map ),是一种用于保存键值对( key-value pair )的抽象数据结构。在字典中,一个键( ...

2018-01-07 09:14:30 531 0

原创 【27-Redis设计与实现-链表】

链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis 使用的C 语言并没有内置这种数据结构,所以Redis 构建了自己的链表实现。 链表在Redis 中的应用非常广泛,比如列表键...

2017-12-27 07:40:35 494 0

原创 【26-Redis设计与实现-简单动态字符串】

Redis 没有直接使用C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串( simple dynamic string, SDS )的抽象类型,并将SDS 用作Redis 的默认字符串表示。 在Redis 里面, C 字符串只会作为字符串...

2017-12-26 08:10:51 477 0

原创 【25-Reids内存优化】

edis2.2版本及以后,存储集合数据的时候会采用内存压缩技术,以使用更少的内存存储更多的数据。如Hashes,Lists,Sets和Sorted Sets,当这些集合中的所有数都小于一个给定的元素,并且集合中元素数量小于某个值时,存储的数据会被以一种非常节省内存的方式进行编码,使用这种编码理论上...

2017-12-23 08:10:38 694 0

原创 【24-Redis发布订阅】

订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者)。而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅。订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的。这种发布者和订阅者的解耦...

2017-12-22 08:10:33 619 0

原创 【23-将redis当做使用LRU算法的缓存来使用】

当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。LRU是Redis唯一支持的回收方法。本页面包括一些常规话题,Redis的maxmemory指令用于将可用内存限制成一个固定大小,还包括...

2017-12-21 07:15:14 611 0

原创 【22-Redis管道】

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。

2017-12-20 07:27:59 532 0

原创 【21-Redis:LRU算法使用】

当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。

2017-12-19 08:18:31 619 0

原创 【20-Redis协议说明】

Redis协议在以下几点之间做出了折衷: 简单的实现 快速地被计算机解析 简单得可以能被人工解析 网络层 Redis在TCP端口6379上监听到来的连接,客户端连接到来时,Redis服务器为此创建一个TCP连接。在客户端与服务器端之间传输的每个Redis命令或者数据都以\r\n结尾。 ...

2017-12-16 08:14:51 545 0

原创 【19-Redis集群规范】

Redis 集群是 Redis 的一个分布式实现,主要是为了实现以下这些目标(按在设计中的重要性排序): - 在1000个节点的时候仍能表现得很好并且可扩展性(scalability)是线性的。 - 没有合并操作,这样在 Redis 的数据模型中最典型的大数据值中也能有很好的表现。 - 写入...

2017-12-15 07:32:30 598 0

原创 【18-Redis集群教程】

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个...

2017-12-14 07:48:31 490 0

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