- 博客(40)
- 收藏
- 关注
原创 如何利用 Spring Hibernate 高级特性设计实现一个权限系统
如何利用 Spring Hibernate 高级特性设计实现一个权限系统 ...
2019-05-11 21:23:41
292
原创 我的2018年总结
2018年结束了,这一年成长是的一年。目标回顾:2017年底给自己定了几个目标:买房,希望新的一年在北京站稳脚跟。(1/1)晋级,向T6进发。(入职新公司,给了资深 title,1/1)学习,新的一年着重应该聚焦两个相关点吧,一个是自己的老本行,更加深入的研究分布式系统。还有就是重启AI相关的学习。(确实研究了不少分布式的知识,AI 还是没有开...
2019-01-01 12:07:37
202
原创 从 LongAdder 中窥见并发组件的设计思路
最近在看阿里的 Sentinel 的源码的时候。发现使用了一个类 LongAdder 来在并发环境中计数。这个时候就提出了疑问,JDK 中已经有 AtomicLong 了,为啥还要使用 LongAdder ? AtomicLong 已经是基于 CAS 的无锁结构,已经有很好的并发表现了,为啥还要用 LongAdder ?于是赶快找来源码一探究竟。Atomi...
2018-11-27 20:42:20
106
原创 徒手撸框架--实现 RPC 远程调用
微服务已经是每个互联网开发者必须掌握的一项技术。而 RPC 框架,是构成微服务最重要的组成部分之一。趁最近有时间。又看了看 dubbo 的源码。dubbo 为了做到灵活和解耦,使用了大量的设计模式和 SPI机制,要看懂 dubbo 的代码也不太容易。按照《徒手撸框架》系列文章的套路,我还是会极简的实现一个 RPC 框架。帮助大家理解 RPC 框架的原理。广义...
2018-09-26 18:18:21
248
原创 我的写作工具链
写作是技术输出的重要手段。自己也写了一年多的文章,累计也超过五万多字。今天就想谈谈自己对于写作的一些看法以及写作时使用到的工具。工欲善其事必先利其器。输入能做到持续的输出文字,首先需要自己有所积累的同时不断的输入新的内容。要构建自己的知识系统,首先要考虑的是自己知识系统的输入是什么?我想我的知识输入主要来自于三个方面:泛读书籍当我拿到一本书的时候...
2018-08-17 14:31:00
112
原创 Java 渲染 docx 文件,并生成 pdf 加水印
最近做了一个比较有意思的需求,实现的比较有意思。需求:用户上传一个 docx 文件,文档中有占位符若干,识别为文档模板。用户在前端可以将标签拖拽到模板上,替代占位符。后端根据标签,获取标签内容,生成 pdf 文档并打上水印。需求实现的难点:模板文件来自业务方,财务,执行等角色,不可能使用类似 (freemark、velocity、Thymeleaf...
2018-08-15 21:00:38
487
原创 撸码的福音--变量名生成器的实现
最近换工作以后,结结实实的写了几个月的业务。需求完结以后,就找找自己喜欢的东西写写,换个口味。撸码最难的就是给变量取名字了。所以就写一个变量生成器吧。演示如下:实现思路:使用了 Mac 上最出名的效率工具 Alfred。利用 Alfred 调用本地的 python 脚本,利用 http 模块,请求远程的 API 接口。远程 API 获取查询的字符后,首...
2018-07-09 11:26:04
661
原创 Raft 协议学习笔记
好久没有更新博客了,最近研究了Raft 协议,谈谈自己对 Raft 协议的理解。希望这篇文章能够帮助大家理解 Raft 论文。Raft 是什么Raft 是一种分布式系统的一致性算法。在分布式系统中,我们需要让一组机器作为一个整体向外界提供服务。由于在实际的条件下,我们认为每台机器都是不100%可靠的,随时都可能发生宕机。每台机器之间的通信也不是可靠的,可能发...
2018-06-04 21:40:31
169
原创 dubbo 源码学习(一)开篇
今天开始将开启 dubbo 的源码研究。dubbo 是什么?dubbo 是阿里巴巴开发的一个基于 java 的开源的 RPC 框架。所谓 RPC 指的的是 Remote Procedure Call Protocol 远程过程调用协议。阅读代码前的准备下载代码:1git clone https://github.com/apache/incuba...
2018-04-01 16:51:26
87
原创 Redis 命令的执行过程
原文地址:https://www.xilidou.com/2018/03/30/redis-recommend/之前写了一系列文章,已经很深入的探讨了 Redis 的数据结构,数据库的实现,key的过期策略以及 Redis 是怎么处理事件的。所以距离 Redis 的单机实现只差最后一步了,就是 Redis 是怎么处理 client 发来的命令并返回结果的,所以我...
2018-03-30 12:45:46
101
原创 Redis 中的事件驱动模型
原文地址:https://www.xilidou.com/2018/03/22/redis-event/Redis 是一个事件驱动的内存数据库,服务器需要处理两种类型的事件。文件事件时间事件下面就会介绍这两种事件的实现原理。文件事件Redis 服务器通过 socket 实现与客户端(或其他redis服务器)的交互,文件事件就是服务器对 socke...
2018-03-22 22:48:03
131
原创 Redis 的基础数据结构(三)对象
原文地址:https://xilidou.com/2018/03/15/redis-object/前两篇文章介绍了 Redis 的基本数据结构动态字符串,链表,字典,跳跃表,压缩链表,整数集合,但是使用过 Redis 的同学会发现,平时根本没有使用过这些数据结构。 平时使用的数据结构,包括字符串,列表,哈希,集合,还有有序集合。 其实 Redis 的实现是将底...
2018-03-15 15:25:35
72
原创 Redis 的基础数据结构(二) 整数集合、跳跃表、压缩列表
原文地址:https://www.xilidou.com/2018/03/13/redis-data2/上篇文章写了 Redis 基础数据结构的可变字符串、链表、字典。大家可以点击链接查看。今天我们继续研究 Redis 的基础数据结构。整数集合跳跃表压缩列表整数集合当一个集合只包含整数,且这个集合的元素不多的时候,Redis 就会使用整数集合 i...
2018-03-13 22:14:00
109
原创 Redis 的基础数据结构(一) 可变字符串、链表、字典
原文地址:https://www.xilidou.com/2018/03/12/redis-data/这周开始学习 Redis,看看Redis是怎么实现的。所以会写一系列关于 Redis的文章。这篇文章关于 Redis 的基础数据。阅读这篇文章你可以了解:动态字符串(SDS)链表字典三个数据结构 Redis 是怎么实现的。SDSSDS (Sim...
2018-03-12 12:46:44
116
原创 线程池 execute() 的工作逻辑
原文地址:https://www.xilidou.com/2018/02/09/thread-corepoolsize/最近在看《Java并发编程的艺术》回顾线程池的原理和参数的时候发现一个问题,如果 corePoolSize = 0 且 阻塞队列是无界的。线程池将如何工作?我们先回顾一下书里面描述线程池execute()工作的逻辑:如果当前运行的线程,少...
2018-02-09 23:42:27
331
原创 JAVA 中的 CAS
原文地址:https://www.xilidou.com/2018/02/01/java-cas/CAS 是现代操作系统,解决并发问题的一个重要手段,最近在看 eureka 的源码的时候。遇到了很多 CAS 的操作。今天就系统的回顾一下 Java 中的CAS。阅读这篇文章你将会了解到:什么是 CASCAS 实现原理是什么?CAS 在现实中的应用自旋锁...
2018-02-01 13:56:06
81
原创 徒手撸框架--高并发环境下的请求合并
原文地址:https://www.xilidou.com/2018/01/22/merge-request/在高并发系统中,我们经常遇到这样的需求:系统产生大量的请求,但是这些请求实时性要求不高。我们就可以将这些请求合并,达到一定数量我们统一提交。最大化的利用系统性IO,提升系统的吞吐性能。所以请求合并框架需要考虑以下两个需求:当请求收集到一定数量时提交数...
2018-01-22 19:10:45
133
原创 徒手撸框架--实现Aop
原文地址:犀利豆的博客上一讲我们讲解了Spring 的 IoC 实现。大家可以去我的博客查看点击链接,这一讲我们继续说说 Spring 的另外一个重要特性 AOP。之前在看过的大部分教程,对于Spring Aop的实现讲解的都不太透彻,大部分文章介绍了Spring Aop的底层技术使用了动态代理,至于Spring Aop的具体实现都语焉不详。这类文章看以后以后,...
2018-01-13 10:12:48
155
原创 徒手撸框架--实现IoC
原文地址:https://www.xilidou.com/2018/01/08/spring-ioc/Spring 作为 J2ee 开发事实上的标准,是每个Java开发人员都需要了解的框架。但是Spring 的 IoC 和 Aop 的特性,对于初级的Java开发人员来说还是比较难于理解的。所以我就想写一系列的文章给大家讲解这些特性。从而能够进一步深入了解 Spr...
2018-01-08 19:16:52
148
原创 2017个人总结
2017年结束了总的来说2017年是充实的一年,也是在北京从生存逐渐向生活靠拢的一年。 工作在58从T4晋级到了T5,工资也涨了一点。负责的业务也从英才的APP到整个英才的C端,最后负责了新的58速聘业务。从一个项目的单纯的执行者,到某个模块的的架构者,再到现在变成了某个业务的架构者。虽然现在项目的主要关键点还需要与架构师讨论。但是对于如何设计一个完整的业...
2017-12-26 12:07:37
159
原创 Netty-Apns接入实现
极光推送免费版每分钟600次的请求限制实在是把我恶心坏了,考虑到现在我们 Android 的推送已经全量接入了小米,所以接下来就是要把 iOS 的推送直接接入 APNS 这样就可以彻底摆脱极光的推送。不再受这个600次/分钟的限制了。APNS使用 HTTP2 协议进行通信所以自然就想到了使用Netty作为网络框架,进行开发。下面逐个给大家介绍使用 Netty 接入...
2017-10-24 00:00:39
173
原创 Future研究
Future是什么?最近写了一些关于netty的相关代码,发现类似netty 的这种异步框架大量的使用一个Future的类。利用这个future类可以实现,代码的异步调用,程序调用耗时的网络或者IO相关的方法的时候,首先获得一个Future的代理类,同时线程并不会被阻塞。继续执行之后的逻辑,直到真正要使用远程调用返回的结果的时候,才需要调用future的get()...
2017-10-24 00:00:07
169
原创 Hystrix入门研究
1、Hystrix是什么Hystrix 是Netflix开源的一个针对分布式容错和库。Hystrix的主要功能是隔离分布式系统之间的故障,防止故障带来的雪崩效应。同时也能提供一个分布式服务的优雅的降级方案。从而提高系统的可用性的组件。2、Hystrix设计理念是什么(其实也是高可用系统设计的理念)?防止单个系统故障后,造成容器(tomcat,scf)的线...
2017-10-23 23:59:28
72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人