高性能、高可用缓存架构

架构 方案设计要点 一、时效性数据 1、库存数据时效性要求高,采用缓存+数据库双写方案,实时更新缓存 2、商品概览数据时效性要求低,采用商品服务+消息对列 异步更新缓存 二、 ...

2019-06-22 13:33:42

阅读数 25

评论数 0

Redis Replication运行流程及原理

1、复制的完整流程 (1)slave node启动,仅仅保存master node的信息,包括master node的host和ip,但是复制流程没开始 master host和ip是从哪儿来的,redis.conf里面的slaveof配置的 (2)slave node内部有个定时任务,每秒检查是...

2019-05-15 21:25:58

阅读数 17

评论数 0

Redis:解决异步复制丢失、脑裂数据丢失状况

异步复制导致的数据丢失 因为master -> slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机了,此时这些部分数据就丢失了 脑裂导致的数据丢失 脑裂,也就是说,某个master所在机器突然脱离了正常的网络,跟其他slave机器不能连接,但是实际上...

2019-05-15 21:22:21

阅读数 94

评论数 0

微服务架构

http://www.martinfowler.com/articles/microservices.html In short, the microservice architectural style is an approach to developing a single applica...

2018-10-23 21:49:38

阅读数 70

评论数 0

单体架构

一个归档包(例如war格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构。 缺点: 复杂性高 以笔者经手的一个百万行级别的单体应用为例,整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,混乱地堆砌在一起……整个项目...

2018-10-23 21:47:47

阅读数 732

评论数 0

hashmap、concurrenthashmap原理解析

hashmap原理解析 concurrenthashmap原理解析 concurrenthashmap原理解析二 hash方法

2018-04-12 15:03:24

阅读数 84

评论数 0

一、ExtensionLoader扩展点加载类解析(dubbo)

扩展点特性参考扩展点加载官方文档。 大白话 问:扩展点加载到底是什么东东? 首先得说一下dubbo的基本设计原则 1、采用 Microkernel + Plugin 模式,Microkernel 只负责组装 Plugin,Dubbo 自身的功能也是通过扩展点实现的,也就是 Dub...

2018-01-25 18:11:33

阅读数 286

评论数 0

01 困境

摘自《把时间当做朋友》一书。 本书主张一个人必须在开启心智、提高思考能力之之后才能用正确的方法做正确的事情。 前言 无论是谁,都最终在某一刻意识到时间的珍贵,并且几乎注定会因懂事太晚而有些后悔。病了要投医,病急了可能会乱投医。可是书店里各种各样关于“时间管理”的书籍多半无事于补—...

2018-01-21 10:40:35

阅读数 232

评论数 0

Java中classLoader浅析

java classloader

2018-01-03 16:51:57

阅读数 140

评论数 0

一些设计上的基本常识

基本常识

2017-12-30 09:10:23

阅读数 251

评论数 0

魔鬼在细节

细节

2017-12-29 09:54:46

阅读数 295

评论数 0

ReentrantLock源码解析

Lock特性lock接口提供synchronized关键字不具备的主要特性 特性 描述 尝试非阻塞的获取锁 当前线程尝试获取锁,如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁 能被中断的获取锁 与synchronized不同,获取到锁的线程能响应中断,当获取到锁的线程...

2017-05-26 11:09:35

阅读数 181

评论数 0

堆排序

public class HeapSort { public static void main(String[] args) { int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; he...

2017-05-21 14:28:17

阅读数 138

评论数 0

归并排序

public class RecursiveMergeSort { public static void main(String[] args) { int[] data = new int[] { 5, 3, 6, 2, 1, 9, 4, 8, 7 }; ...

2017-05-20 17:34:44

阅读数 101

评论数 0

二分查找

public class BinarySearch { public static void main(String[] args) { int array[] = new int[]{5,2,9,4,11,10}; System.out.println(b...

2017-05-20 17:24:28

阅读数 164

评论数 0

冒泡排序

/** * <p>在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。</p> * <p>即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。</p> ...

2017-05-20 17:15:53

阅读数 224

评论数 0

选择排序

/** * <p>在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;</p> * <p>然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换。</p> * <p>依次类推,直到第n-1个元素(倒数第二个数...

2017-05-20 17:09:44

阅读数 126

评论数 0

快速排序

/** * <p>选择一个基准元素,通常选择第一个元素或者最后一个元素</p> * <p>通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。</p> * <p>此...

2017-05-20 16:56:58

阅读数 229

评论数 0

希尔排序

/** * <p>先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。</p> * @author maosx * */ public class ShellSort { pub...

2017-05-20 16:40:38

阅读数 137

评论数 0

直接插入排序

/** * <p>将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。</p> * <p>即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。</p> * @author ma...

2017-05-20 16:15:02

阅读数 216

评论数 0

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