- 博客(44)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Davids阅读笔记:《Redis设计与实现》
《Redis设计与实现》阅读笔记第一部分:数据结构与对象第一章:(简单动态字符串)1、Redis只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简单动态字符串)作为字符串表示。2、比起C字符串,SDS具有以下优点: 2.1:常数复杂度获取字符串长度 2.2:杜绝缓冲区溢出 2.3:减少修改字符串长度时所需的内存重分配次数...
2020-06-04 22:29:47
4525
原创 Mark:2020年8月文章
精选:阿里研究员:软件测试中的18个难题监控系统选型看这一篇够了!选择 Prometheus 还是 Zabbix ?Java 开发必备! I/O与Netty原理精讲如何写好代码?
2020-09-03 10:35:30
175
原创 Davids实操笔记:docker安装使用小米SQL分析工具Soar
文章目录docker安装使用小米SQL分析工具Soar背景介绍官网简介功能特点线路图开始安装使用Soar访问SOAR-WEBSOAR配置SQL分析总结docker安装使用小米SQL分析工具Soar关注可以查看更多粉丝专享blog~背景做后端开发难免和数据库打交道,有时候回碰到很多特别复杂同时令人特别费解的SQL语句,让人无从下手。常规套路是取出完整SQL,理解其用意之后方能进行重构。使用EXPLAIN进行分析,调整SQL结构,去除多余的字段、关联表和导致索引失效的函数等等。和之前介绍的Art
2020-08-16 19:03:17
584
原创 Davids实操:关于Git分支管理的思考?merge还是rebase?
文章目录关于Git分支管理的思考?merge还是rebase?引发思考什么是rebase(变基)?关于Git分支管理的思考?merge还是rebase?关注可以查看更多粉丝专享blog~引发思考最近这段时间入职新公司,处在熟悉阶段,所以有些时间没有写博客了。其实每次进入一个新的环境的时候肯定会有很多开发工具和开发方式和自己之前使用的方式不一样。没有对错,只有是否合适。最近遇到了一个Git分支管理的问题。由于都是使用的多人协同开发已经成熟的敏捷流程,主干分支是一样的,一共四个,包含开发、测试、预发
2020-08-16 10:57:10
197
原创 Davids原理探究:Java并发包中的线程同步器(CountDownLatch、CyclicBarrier和Semaphore)
文章目录Java并发包中的线程同步器(CountDownLatch、CyclicBarrier和Semaphore)CountDownLatch核心方法1:countDown核心方法2:await核心方法3:getCountCyclicBarrier核心方法1:await核心方法2:resetSemaphore核心方法1:construction核心方法2:acquire核心方法3:acquireUninterruptibly核心方法4:release总结Java并发包中的线程同步器(CountDownL
2020-08-13 09:21:38
235
原创 Mark:2020年7月文章
阿里出品:如何写出健壮的代码?一文总结:分布式一致性技术是如何演进的?正确入门Service Mesh:起源、发展和现状JavaGuide:5万字、97 张图总结操作系统核心知识点作为资深面试官,被问烂的高并发,说实话,能回答到点的人实际并不多!...
2020-07-28 12:49:44
127
原创 Davids实操笔记:玩转Arthas
文章目录玩转Arthas个人感受官网简介使用方式下载arthas-bin.zip找到arthas-boot.jar模拟场景启动Arthas处理问题为什么单元测试同样的参数是可以的,到了生产环境却没有返回值?是我没有传进去吗?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?为什么接口这么慢啊?这方法几百行我要一行一行加日志打印时间(吐血...)?怎么感觉这个没有调用到我的方法呀?感觉调用路径不对?生产环境又不能debug!玩转Arthas个人感受其实很早之前就听说过Arthas这个工具
2020-07-18 23:59:29
523
转载 转载:maven项目配置findbugs插件 使用git钩子控制代码的提交
[maven项目配置findbugs插件 使用git钩子控制代码的提交]https://www.cnblogs.com/DFX339/p/8259295.html
2020-07-13 09:55:15
221
原创 Davids实操笔记:Spring Boot 使用docker整合MongoDB
文章目录Spring Boot 使用docker整合MongoDB前言安装MongoDBSpring Boot 使用docker整合MongoDB关注可以查看更多粉丝专享blog~前言前面简单介绍了如何使用docker安装ElasticSearch、elasticsearch-head、elasticsearch ik和elasticsearch pinyin,今天学习一下MongoDB,都是一些现在用途非常广泛的一些中间件。ElasticSearch传送门:Davids实操笔记:Sprin
2020-07-11 10:50:36
823
原创 Davids实操笔记:Spring Boot使用docker整合ElasticSearch ik分词搜索和拼音搜索
文章目录Spring Boot整合ElasticSearch分词搜索和拼音搜索准备工作新建Spring Boot项目Spring Boot整合ElasticSearch分词搜索和拼音搜索准备工作新建Spring Boot项目添加我们需要使用的依赖,除了elasticsearch其他两个非必要,web是为了方便调试,如果没有使用过lombok的需要安装IDEA<!-- elasticsearch --><dependency> <groupId>org.
2020-07-06 18:37:05
1241
1
原创 Davids实操笔记:Spring Boot 使用docker整合ElasticSearch
文章目录Spring Boot整合ElasticSearch分词搜索和拼音搜索准备工作新建Spring Boot项目安装ElasticSearch安装elasticsearch-headSpring Boot整合ElasticSearch分词搜索和拼音搜索准备工作新建Spring Boot项目添加我们需要使用的依赖,除了elasticsearch其他两个非必要,web是为了方便调试,如果没有使用过lombok的需要安装IDEA//Eclipse插件。<!-- elasticsearch --
2020-07-06 10:03:00
1215
原创 Davids原理探究:Java并发包中锁的原理(ReentrantLock、ReentrantReadWriteLock)
文章目录Java并发包中锁的原理(ReentrantLock、ReentrantReadWriteLock)ReentrantLock公平锁ReentrantLock非公平锁abstract class AbstractQueuedSynchronizer - hasQueuedPredecessors实现ReentrantLock抽象类syncCopyOnWriteArrayList内部由ReentrantLock加锁实现线程安全Java并发包中锁的原理(ReentrantLock、ReentrantR
2020-07-02 19:30:02
292
原创 Davids原理探究:Dubbo服务消费原理
文章目录Dubbo服务消费原理概述服务消费过程Dubbo服务消费原理关注可以查看更多粉丝专享blog~概述前面已经讲过Dubbo服务暴露的原理了(传送门),今天分析一下Dubbo服务消费原理,相比于服务暴露原理,服务消费就有点像把暴露原理倒过来,可以看一下消费原理图。跟服务暴露的流程很相似,只是服务暴露的核心类是ServiceConfig,服务消费的核心类是ReferenceConfig,从名字上也可以看出来。服务暴露流程是ServiceConfig --> ProxyFactory --&
2020-06-24 22:48:01
2335
原创 Davids原理探究:Dubbo优雅停机原理
Dubbo优雅停机原理解析关注可以查看更多粉丝专享blog~收到kill -9进程退出信号,Spring容器会触发容器销毁事件。provider端会取消注册服务元数据信息。consumer端会收到最新的地址列表(不包含准备停机的地址)。Dubbo协议会发送readonly事件报文通知consumer服务不可用。服务端等待已经执行的任务结束并拒绝新任务执行。最后provider与consumer断开TCP连接。注册中心已经通知了最新服务列表,provider还要发送readonly报文的
2020-06-24 22:45:18
2017
原创 Davids原理探究:Dubbo配置解析原理
文章目录Dubbo配置解析原理配置解析原理基于XML配置解析原理schema模块说明基于注解配置解析原理@EnableDubboServiceAnnotationBeanPostProcessor的作用ReferenceAnnotationBeanPostProcessor的作用Dubbo配置解析原理关注可以查看更多粉丝专享blog~上次本地编译的最新的Dubbo 2.7.8,跟着书看源码是基于2.6.5,从2.7.0版本开始dubbo的groupId已经变了。这里查看2.6.5的源码有两种方案【
2020-06-24 22:29:04
2028
原创 Davids原理探究:JDK8将永久代(PermGen)替换为元空间(MetaSpace)的原因
文章目录JDK8为什么要将永久代(PermGen)替换为元空间(MetaSpace)呢?什么是方法区永久代产生的原因将永久代替换为源空间的原因JDK8为什么要将永久代(PermGen)替换为元空间(MetaSpace)呢?什么是方法区方法区(Method Area)和Java堆一样,是各个线程共享的内存区域,它用于存储已经被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它却有着一个别名叫做“非堆”(Non-Hea
2020-06-20 10:44:39
3410
原创 Davids原理探究:MySQL-InnoDB-MVCC 多版本控制
文章目录MySQL-InnoDB-MVCC 多版本控制概述特性事务快照的创建过程:undo logInnoDB行数据隐藏字段当前读/快照读MySQL-InnoDB-MVCC 多版本控制概述指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。在内部实现中,与Postgres在数据行上实现多版本不同,InnoDB是在undolog中实现的,通过undolog可以找回数
2020-06-17 16:27:44
3492
原创 Davids原理探究:Dubbo负载均衡实现原理
Dubbo负载均衡实现原理RandomRobin 随机负载均衡(default)RoundRobin 轮询负载均衡普通轮询/平滑轮询算法(Nginx中有使用)LeastActive 最少活跃调用数负载均衡越慢的服务越少调用,活跃计数差(调用前计数器+1,调用后计数器-1,如果一个服务提供者计数差很大,则说明该服务处理的比较慢,则减少请求量,防止服务客户端阻塞,以及服务端崩溃。)一致性Hash负载均衡默认根据只对第一个参数hash,可以通过<dubbo:parameter key="has
2020-06-15 23:48:29
4105
原创 Davids原理探究:Dubbo过滤器原理
文章目录Dubbo过滤器原理概述使用方式@Activate注解启用XML配置启用规则总体结构图作用列表过滤器链初始化的实现原理Dubbo过滤器原理概述Dubbo过滤器提供了服务提供者和消费者的调用拦截,即每次执行RPC调用的时候,对应的过滤器都会生效。虽然过滤器功能强大,但由于每次调用的时候都会执行,因此在使用的时候需要注意它对性能的影响。使用方式在Dubbo中又很多内置过滤器,并且大多数都是使用@Activate注解默认启用的,比如ContextFilter。对于自行扩展的过滤器有以下两种启用方
2020-06-14 18:57:43
4308
转载 转载:MyBatis SQL执行原理
MyBatis SQL是如何执行的mark一下https://juejin.im/post/5e350d895188254dfd43def5#heading-8
2020-06-14 16:41:00
679
原创 Davids原理探究:Dubbo路由实现原理
文章目录Dubbo路由实现原理ConditionRouter(条件路由)条件路由的参数规则Dubbo路由实现原理Dubbo的路由分为条件路由、文件路由和脚本路由,对应的dubbo-admin中三种不同的规则配置方式。条件路由是用户使用Dubbo定义的语法规则去写的路由规则;文件路由则需要用户提交一个文件,里面写着对应的路由规则,框架基于文件读取对应的规则;脚本路由则是使用JDK自身的脚本引擎解析路由规则脚本,所有JDK脚本引擎支持的脚本都能解析,默认是JavaScript。ConditionRout
2020-06-12 17:26:10
4583
原创 Davids原理探究:Dubbo服务暴露原理
文章目录Dubbo服务暴露和服务消费原理(基于Dubbo 2.6.5)配置解析原理基于XML配置解析原理schema模块说明基于注解配置解析原理@EnableDubboServiceAnnotationBeanPostProcessor的作用ReferenceAnnotationBeanPostProcessor的作用服务暴露原理配置初始化服务暴露的核心类ServiceConfig注册中心暴露服务拦截器初始化服务消费原理概述服务消费过程Dubbo优雅停机原理解析Dubbo服务暴露和服务消费原理(基于Dub
2020-06-12 09:50:12
4229
原创 Davids原理探究:Dubbo注册中心(ZooKeeper、Redis)实现原理
文章目录Dubbo注册中心注册中心概述工作流程Zooeeper原理概述Dubbo注册中心注册中心概述在Dubbo微服务体系中,注册中心是其核心组件之一。Dubbo通过注册中心实现了分布式环境中各服务之间的注册和发现,是各分布式节点之间的纽带。其主要作用如下:动态加入。一个服务提供者通过注册中心可以动态地把自己暴露给其他消费者,无需消费者逐个去更新配置文件。动态发现。一个消费者可以动态的感知新的配置,路由规则和新的服务提供者,无需重启服务使之生效。动态调整。注册中心支持参数的动态调整,新参数自动
2020-06-08 18:12:08
4383
原创 Davids原理探究:Dubbo源码编译(2.7.8)
文章目录编译Dubbo源码(2.7.8)第一步:下载ZooKeeper第二步:配置maven 阿里云镜像(可以但不必要-_-!!!)第三步:下载Dubbo源码第四步:开始编译第五步:导入项目第六步:测试Demo编译Dubbo源码(2.7.8)第一步:下载ZooKeeperZooKeeper-3.6.1第二步:配置maven 阿里云镜像(可以但不必要-_-!!!)打开setting.xml文件,添加阿里云镜像,国内镜像会快一些。<mirror> <id>alimaven
2020-06-08 18:11:19
2406
原创 Davids原理探究:分布式事务(2PC、3PC、TCC、基于消息达到最终一致性)
文章目录分布式事务(2PC、3PC、TCC、基于消息达到最终一致性)二阶段提交(2PC)三阶段提交(3PC)TCC(Try-Confirm-Cancel)RocketMQ基于消息达到最终一致性总结分布式事务(2PC、3PC、TCC、基于消息达到最终一致性)二阶段提交(2PC)第一阶段:请求/表决阶段在分布式事务发起者向分布式事务协调者发送请求的时候,事务协调者向所有参与者发送事务预处理请求(vote request)。这个时候参与者会开启本地事务并开始执行本地事务,执行完成后不会commit,
2020-06-07 15:20:10
4030
原创 Davids原理探究:ThreadPoolExecutor原理
ThreadPoolExecutor原理探究线程池状态及转换条件如果当前线程!RUNNING状态,则从队列中删除任务,并执行拒绝策略,如果队列满,则新增线程,新增失败则执行拒绝策略。executeaddWorkerCASaddWorkers状态设置为-1避免在runWorker之前被中断,shutDownNow中断状态>=0的线程。// TODO 线程池状态已经切换状态的方法图XmindshutDown和shutDownNowpublic void shutdown()
2020-06-06 17:24:40
4277
原创 Davids实战笔记:Spring Boot IDEA JRebel热部署
Spring Boot IDEA JRebel热部署平时写代码最烦的一件事就是每次改一行代码需要调试就需要restart,导致效率低下,久而久之都不愿意去debug了,直接提交代码又各种bug,试过了devtools但是一样的效果,只是少点一下而已,还是JRebel香。首先第一步安装JRebel插件,并重启IDEA(我的IDEA是2019.2.1)以管理员身份打开ReverseProxy_windows_amd64.exe(如果闪退,请查看8888端口是否被占用)打开setting -
2020-06-06 11:52:46
1691
原创 Davids实操笔记:Spring Cloud使用Zuul和Ribbon实现灰度发布
##Spring Cloud使用Zuul和Ribbon实现灰度发布公司产品线采用的是Spring Cloud(Dalston.SR1)、Spring Boot(1.5.x)、Spring MVC、Mybatis、Redis构建的微服务、服务数量60+,之前规定是每周二中午12点-2点发布,由于用户访问量的上升这样用户体验特别差,之前为了解决这个问题做过一次不停机发布方案,采用的是Spring C...
2020-06-05 15:47:38
4598
原创 Davids原理探究:Java中List浅拷贝深拷贝问题
Java中List浅拷贝深拷贝问题浅拷贝基本数据类型的成员变量,进行值传递(将该属性值复制一份给新的对象)。引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等进行引用传递(将该成员变量的引用值(内存地址)复制一份给新的对象)。深拷贝基本数据类型的成员变量,进行值传递(将该属性值复制一份给新的对象)。引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,会重新分配内存并将成员变量拷贝一份赋值给新对象(将该成员变量的内容复制一份到新开辟的内存上,新的对象指向新的内存地
2020-06-05 10:55:50
3338
原创 Davids知识点笔记:事务的7种传播机制和4种隔离级别
事务的7种传播机制和4种隔离级别事务的传播机制支持当前事务:1、REQUIRED(默认):支持使用当前事务,如果当前事务不存在,创建一个新事务。2、SUPPORTS:支持使用当前事务,如果当前事务不存在,则不使用事务。3、MANDATORY:强制,支持使用当前事务,如果当前事务不存在,则抛出Exception。不支持当前事务:1、REQUIRES_NEW:创建一个新事务,如果当前事务存在,把当前事务挂起。2、NOT_SUPPORTED:无事务执行,如果当前事务存在,把当前事务挂起。3、N
2020-06-05 09:17:23
4962
1
ReverseProxy_windows_amd64.zip
2020-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人