自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 原子广播理论与Zookeeper的一致性

原子广播协议zab的原子广播协议

2021-03-19 16:57:12 171

原创 Paxos算法原理与推导

               Paxos算法原理与推导一、问题产生的背景在分布式系统中,必然会存在服务宕机或网络异常(如网络延迟、消息乱序、消息丢失等)等状况。Paxos基于容错的分布式环境,实现在集群内部对某个值达成最终一致的分布式算法。 【注1】服务不存在拜占庭将军问题(不存在叛徒),也即集群内的机器可以随时发生宕机重启,但不能做出有违约定的行为。【注2】集群中的某...

2018-05-13 17:41:03 339

原创 B树索引要点整理

在数据库操作中,如果不确定在进行update、delete过程是否会锁表,一种策略是对数据库的表建立全序关系,每个事务中的update、delete总是按照这些表的全序关系来进行,比如数据库表 tableA、tableB、tableC,update/delete总是A->B->C这样的顺序来进行。B树检索的时间瓶颈一般是磁盘IO,B树的高度= log_F n下取整, F=每个page能够容纳的记录数,因此F与IO次数呈负相关,在索引设计时,需要让每个page容纳更多的记录数,典型的策略如下。

2024-01-15 13:44:35 377 1

原创 java垃圾回收与reference

一、finalize相当于析构函数,主要用于销毁某些资源。与GC的关系:在gc发现对象mutator不可达,并且存在非平凡的finalize方法时,会将改方法放入finalize队列,并重新以该队列作为trace root来标记堆中的对象。实现上,对象拥有一个finalize标志位,当gc发现mutator不可达且拥有该标志位时,会将该对象放入ReferenceQueue,(实际上是挂到Reference的discover上,由守护线程轮询入队),同时去除该标记位(让改对象不能再次入队,保

2021-09-18 17:54:59 188

原创 spring 注解体系处理

spring注解体系

2021-09-14 17:01:14 198

原创 JVM G1相关说明

G1大致分为两部分,标记与迁移,注意,迁移与标记可以并发执行,也就是迁移不一定要依赖标记的结果,对于young gc阶段,collection set就不必依赖标记的结果,但是对于mixed gc阶段,需要以标记阶段的结果来筛选老年代的collection set。一、标记阶段三色标记,拆出不同阶段,部分耗时阶段可以与mutator并发初始化标记: 根扫描,此阶段需要STW,因为需要一个稳定的初始化快照。写屏障也能解决问题,但这些根有些不是指针,并且这个阶段的耗时是相对较短的 并发.

2021-09-07 17:22:14 347

原创 Spring-草稿

2021-06-01 15:59:38 95

原创 一个redis锁的实现

package hww.utils.redis;import java.util.function.Supplier;/** * redisLock提供资源保护功能,防止获取锁后忘记关闭。同时RedisLockAcquiredTimeOutException,提供了锁释放失败的提示 * * @author hanweiwei * @see RedisLock#doWithLock(Supplier, Long) */public interface RedisLock { Lo.

2021-05-31 16:30:33 160

原创 队列

/** * 队列元素 包含了n-1个元素 * * @author hanweiwei */public class Queue { private Object[] array; //将要消费 private int head; //将要插入 private int tail; public Queue(Integer size) { this.array = new Object[size]; } void .

2021-04-14 19:37:59 90

原创 无锁-栈

import java.util.concurrent.atomic.AtomicReference;/** * 线程安全的stack * * @param <T> * @author hanweiwei */public class Stack<T> { private AtomicReference<Node<T>> tail = new AtomicReference<>(); public void p..

2021-04-14 16:58:07 145

原创 java fork/join framework

paper地址:A Java Fork/Join FrameworkQ1:为什么forkjoin的steal是FILO的?A:分治算法的本质是将一个大任务分解为若干个简单的子任务,若子问题可解,则原任务也是可解的。一般先分解的任务时比较繁重的,一个空闲线程去窃取繁杂的任务,会减少线程切换与窃取次数。...

2021-03-17 20:45:50 151 1

原创 基数排序

/** * @author hanweiwei */public class CountingSort implements Sort { public CountingSort(Integer maxValue) { this.maxValue = maxValue; } private Integer maxValue; /** * 时间复杂度正比于max{maxValue,target.length} * *..

2021-03-11 14:11:07 69

原创 快速排序

/** * 快速排序 * A[p,q] [q+1,r] [p,q]中的元素都小于等于[q+1,r]中的元素 * @author hanweiwei */public class QuickSort implements Sort { public void sort(Integer[] target) { quick(target, 0, target.length - 1); } /** * 每次排序前,增加一个随机交换 *.

2021-03-11 14:10:15 73

原创 合并排序

/** * 合并排序 * * @author hanweiwei */public class MergeSort implements Sort { public void sort(Integer[] target) { sort(target, 0, target.length - 1); } private void sort(Integer[] target, Integer p, Integer r) { if (p &lt..

2021-03-11 14:09:23 76

原创 插入排序

/** * 循环不变式: * target[0...j-1]表示已经排好的数组,target[j...n-1]表示待排部分 * <p> * 初始:j=1,target[0]显然是已排序的 * 保持: 假设对j成立,target[0...j-1]已排序 [j...n-1]待排, * [0...j-1] [j...n-1] * 对于下一次循环,分析内层跟外层循环,j=j+1,key=target[j-1] * * @author hanweiwei */public cla.

2021-03-11 14:08:34 122

原创 堆排序,递归与非递归版本

/** * 最大堆 * @author hanweiwei */public class HeapSort implements Sort { public void sort(Integer[] target) { buildMaxHeap(target); for (int i = target.length - 1; i > 0; i--) { Integer tmp = target[0]; ta.

2021-03-11 14:05:51 100

原创 java管程与条件变量

霍尔风格:发出通知的线程必须等待被通知的线程放弃占用管程(或者离开管程,或者等待某个条件变量)调度方式:进入管程:如果管程locked,则进入等待队列e,阻塞当前线程条件等待:管程内线程调用wait等待条件变量 当前线程放入对应条件变量的等待队列a.q 启动管程调度 阻塞当前线程 唤醒条件变量:线程t唤醒等待条件变量a的线程, 将条件变量的等待队列a.q中的线程加入到s队列,记线程为t 将当前线程加入s 重启t,并阻塞当前线程...

2021-03-11 13:14:05 783

原创 逻辑时钟

定义happen before关系->满足如下条件:事件a和b在同一个进程中发生,a在b之前发生,那么a->b 事件a是发送信息,事件b是接收该信息,那么a->b a->b并且b->c,那么a->c ,传递性 如果a 不happen before b,b也不happen before a,则 a,b是并发的定义Ci作为进程Pi的时钟,Ci(a)用来给事件a产生一个数字,代表事件的时间。定义C作为系统的时钟,如果事...

2021-03-08 20:26:00 223

原创 ExecutorService的正确关闭方式

ExecutorService提供了两个接口 /** * Initiates an orderly shutdown in which previously submitted * tasks are executed, but no new tasks will be accepted. * Invocation has no additional effect if already shut down. * * 已经加入线程池的任务会被执行

2021-03-08 13:53:26 2458 1

原创 it书籍资源收集

网盘地址:https://pan.baidu.com/s/1ILoCpvnAcPLBjeVVKVmpFw 网盘地址:https://pan.baidu.com/s/1aROc5XHn8H1cPlgxQdEpLw包括:

2018-11-21 15:47:43 258

原创 架构风格与基于网络的软件架构设计(Restful)

软件架构软件架构是对软件系统运行时状态的抽象,一个软件架构是一个软件系统在其操作的某个阶段的运行时(run-time)元素的抽象。一个系统可能由很多层抽象和很多个操作阶段组成,每个抽象和操作阶段都有自己的软件架构软件架构可以通过动态添加约束来获取不同的架构属性 基于网络的架构属性performance:网络性能(吞吐量、负载、带宽)、用户可察觉性能(动作延迟、动作完成时间)、网...

2018-11-10 16:43:00 947

原创 设计模式

前言设计模式的本质是通过合理的抽象,以满足开闭原则。所有的技术都是为业务服务,不同的业务场景,技术的适用性也不尽相同。设计模式也同样如此,它并不是脱离了业务的存在,而是在软件开发过程中,对出现的共性问题提出的较优的解决方案。很多入门的程序,总是喜欢拿着设计模式到处套用,忽略自身业务的特殊性,结果是程序显得复杂冗余而不实用。本篇撰写的目的主要就是让读者了解设计模式的本质设计原则...

2018-10-26 20:32:39 130

原创 Tomcat源码分析:一、tomcat组件认识

  前言     最近一次上线过程中出现了jekin是自动化部署的web环境跟本地开发环境不一致的情况,导致生产环境应用访问失败,因此阅读tomcat源码,以加深对web的认识。基本组件在阅读源码之前,最好是对整个应用架构进行了解跟分析,从而会对程序阅读带来事半功倍的效果。change our perspective,Tomcat整体组件结构图如下:基本组件图Serve...

2018-10-18 17:54:43 206

FailureDetectors.pdf

failure detector

2021-03-11

DistributedPrimitives.pdf

DistributedPrimitives.pdf

2021-03-10

加密技术与安全

学习资料 Web安全开发指南.pdf 加密与认证技术的数学基础.pdf

2018-10-31

java学习资料

Java NIO Programing.pdf Java虚拟机规范 Java SE 8版.pdf

2018-10-27

python资料

Python_Data_Science_Handbook.pdf Python编程入门经典.pdf Python机器学习(Sebastian著-带书签.pdf

2018-10-27

spark学习资料

kafka权威指南中文版.pdf Mastering Apache Spark.pdf Spark大数据分析核心概念技术及实践OCR.pdf Spark零基础实战.pdf

2018-10-27

微服务资料

Microservices from Theory to Practice.pdf Advanced-Microservices-A-Hands-on-Approach-to-Microservice-Infrastructure-and-Tooling-.pdf Building_Microservices.pdf

2018-10-27

分布式资料

<<apache zookeeper深入浅出.pdf>> <<Cheap Paxos.pdf>> <<Kafka权威指南.pdf>> <<分布式实时处理系统 原理、架构与实现.pdf>>

2018-10-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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