- 博客(1357)
- 资源 (120)
- 收藏
- 关注
原创 SOFAMosn 如何提高 GoLang 的转发性能
通过SOFAMosn了解goroutine只能在一定并发量级上降低并发编程的难度(goroutine内存占用2kb+)。高并发的场景还是NIO比较适合。jiankunk...
2019-11-09 20:07:36 1147 2
原创 微服务理想国
JenkinsCI&CDKubernetes调度、负载、高可用自动化容器的部署和复制随时扩展或收缩容器规模将容器组织成组,并且提供容器间的负载均衡很容易地升级...
2019-10-28 20:10:37 462
原创 给 Go 库作者的建议
视频信息Practical Advice for Go Library Authorsby Jack Lindamoodat GopherCon 2016https://...
2019-10-20 16:17:59 417
转载 JRockit权威指南深入理解JVM
本文整理自:《JRockit权威指南深入理解JVM》作者:Marcus Hirt , Marcus Lagergren出版时间:2018-12-10起步将应用程序迁移到...
2019-10-12 18:06:39 1384
转载 MySQL 面试知识点 汇总
原文地址:https://github.com/CyC2018/CS-Notes/blob/master/notes/MySQL.md一、索引B+ Tree 原理1. 数...
2019-09-25 18:07:44 588
原创 如何用Linux命令行管理网络:11个你必须知道的命令
如何用Linux命令行管理网络:11个你必须知道的命令无论你是要下载文件、诊断网络问题、管理网络接口,还是查看网络的统计数据,都有终端命令可以来完成。这篇文章收集了久经考验靠谱的命令,也收集了几个比较新的命令。多数命令都可以在图形桌面执行,即使是没什么终端使用经验的Linux用户也会常常执行命令来使用ping或是其它的网络诊断工具。curl&wget使用c...
2019-09-22 15:08:57 1303 1
原创 JDK/Java 13:ZGC未使用堆内存归还操作系统
翻译自:JEP 351一、摘要增强ZGC,将未使用的堆内存返回给操作系统。二、动机目前ZGC不会将未使用的内存归还给操作系统,即使该内存已经很长时间没有使用了。这种行为并...
2019-09-18 19:37:12 1279
原创 Java ForkJoin 解析
本文主要想了解两个地方:如何窃取任务、task如何等待(join)代码基于 OpenJDK 12窃取算法(work-stealing)从ForkJoin-Paper-Do...
2019-09-16 21:29:17 1040 2
原创 gRPC 从学习到生产
gRPC Practice了解gRPC,更知REST视频信息grpc: From Tutorial to Productionby Alan Shreveat Gophe...
2019-09-05 18:33:21 1262
原创 Golang 如何正确使用 Context
视频信息How to correctly use package contextby Jack Lindamoodat Golang UK Conf. 2017视频:https://www.youtube.com/watch?v=-_B5uQ4UGi0博文:https://medium.com/@cep21/how-to-correctly-use-context-...
2019-09-02 08:59:19 6804
转载 ElasticSearch 查询的秘密
原文地址:https://neway6655.github.io/elasticsearch/2015/09/11/elasticsearch-study-notes.h...
2019-08-25 16:40:49 641
转载 Elasticsearch 分词器
无论是内置的分析器(analyzer),还是自定义的分析器(analyzer),都由三种构件块组成的:character filters,tokenizers,token filters。内置的analyzer将这些构建块预先打包到适合不同语言和文本类型的analyzer中。Character filters (字符过滤器)字符过滤器以字符流的形式接收原始文本,并可以通过添加、...
2019-08-21 15:55:20 573
原创 ThreadLocal原理解析
基于OpenJDK 12引本文主要想了解两个地方:ThreadLocal实例看起来是在多个线程共享,但实际上是彼此独立的,这个是怎么实现的?ThreadLocal使用不当...
2019-08-20 18:16:33 1692 9
原创 如何clone github wiki?
比如我想git clone seata的wikiseata的github地址:https://github.com/seata/seataseata git clone 地址:https://github.com/seata/seata.gitseata wiki下载git clone https://github.com/seata/seata.wiki.git个人微信公众号:...
2019-08-20 15:23:49 7006 2
转载 API网关架构设计
定义API Gateway一个比较广泛的定义如下:API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个...
2019-08-17 12:06:14 80
原创 Java JUC Atomic LongAdder 详解
基于OpenJDK12阅读本文前,推荐先阅读以下两篇文章,以便能更好的对比理解:[译]Java Concurrent Atomic Package详解面试必备:Java JUC AtomicLong 实现解析LongAdder是JDK 1.8 新增的原子类,基于Striped64实现。从官方文档看,LongAdder在高并发的场景下会比AtomicLong ...
2019-08-09 07:23:46 2088
原创 Java JUC AtomicLong 实现解析
基于OpenJDK12本文的目的是为后续文章解析LongAdder做一个引子,以便两者对比。Atomic Package解析参考(比如lazySet原理解析):[译]Java Concurrent Atomic Package详解AtomicLong的常用方法如下: long addAndGet(long delta):以原子方式将输入的数值与实例中的值(Atom...
2019-08-07 20:42:24 942
原创 [译]Java Concurrent Atomic Package详解
翻译自:Package java.util.concurrent.atomic地址:https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/package-summary.html#package.description翻译JDK8而不是12的原因是JDK8对与内存语义部分讲解更加详细。Pack...
2019-08-07 11:28:07 464
原创 [译]ZGC: 一个可伸缩的低延迟垃圾收集器
翻译自:JEP 333地址:https://openjdk.java.net/jeps/333一、摘要Z垃圾收集器,也称为ZGC,是一个可伸缩的低延迟垃圾收集器。二、目标 GC暂停时间不超过10ms 能处理大小从相对较小(几百MB)到非常大(TB级)的堆 与使用G1相比,应用程序吞吐量减少不超过15% 方便日后在此基础上利用彩色指针和内存屏障...
2019-07-31 07:48:20 720
转载 elasticsearch 倒排索引原理
如何快速检索?Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在 18 和 30 之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型数据库的 b-tree 索引快在哪里?到底为什么快呢?笼统的来说,b-tree 索引是为写入优化的索引结构。当我们不需要支持快速的更新的时候,可以用预先排...
2019-07-29 19:26:20 1708
转载 红黑树、B(+)树、跳表、AVL等数据结构,应用场景及分析
AVL树:最早的平衡二叉树之一。应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树红黑树:平衡二叉树,广泛用在C++的STL中。map和set都是用红黑树实现的。我们熟悉的STL的map容器底层是RBtree,当然指的不是unordered_map,后者是hash。B/B+树用在磁盘文件组织 数据索引和数据库索引Trie树 字典树,用在统计和排序大量字符串...
2019-07-29 19:23:49 4167 1
原创 linux 查看java的安装路径
在linux下,如何找java的安装路径jiankunking@ubuntu:/etc$ whereis javajava: /usr/bin/java /usr/share/java /usr/lib/jvm/java-8-openjdk-amd64/bin/java /usr/share/man/man1/java.1.gzjiankunking@ubuntu:/etc$ ls -lrt...
2019-07-19 21:05:03 427 1
原创 关于日志的那些事儿
在满足业务需求的前提下,代码、架构,越简单,越稳定。通用性的架构意味着,考虑的比较全,也就会比较重(比如:会引入很多组件),而这些组件对于你的场景有可能并不是不可或缺的,同时运维这些组件又会产生一定的成本,所以说通用架构对于你来说有可能并不一定是最好的。
2019-07-16 16:41:32 10133 23
转载 Elasticsearch 7.0 废弃mapping type原因及替代方案
Removal of mapping typesIndices created in Elasticsearch 7.0.0 or later no longer accept a default mapping. Indices created in 6.x will continue to function as before in Elasticsearch 6.x. Types are...
2019-06-29 14:08:36 13668
转载 Spring Transaction Attributes
What are transaction attributes?Spring transactions allow setting up the propagation behavior, isolation, timeout and read only settings of a transaction. Before we delve into the details, here are s...
2019-06-14 13:31:31 548
转载 Spring 下默认事务机制中@Transactional 无效的原因
Spring中 @Transactional 注解的限制同一个类中, 一个nan-transactional的方法去调用transactional的方法, 事务会失效If you use (default) Spring Proxy AOP, then all AOP functionality provided by Spring (like @Transational) will o...
2019-06-13 18:45:42 6382 1
转载 epoll 的本质是什么?
从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。epoll 很重要,但是 epoll 与 select 的区别是什么呢?epoll 高效的原因是什么?网上虽然也有不少讲解 epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔者于...
2019-05-24 18:30:48 2458 3
原创 Go 1.9 sync Map 源码阅读笔记
1. 空间换时间。 通过冗余的两个数据结构(read、dirty),实现加锁对性能的影响。2. 使用只读数据(read),避免读写冲突。3. 动态调整,miss次数多了之后,将dirty数据提升为read。4. double-checking。5. 延迟删除。 删除一个键值只是打标记(会将key对应value的pointer置为nil,但read中仍然有这个key:key;value:nil的键值对),只有在提升dirty的时候才清理删除的数据。6. 优先从read读取、更新、删除,因为对read
2019-05-18 08:58:35 4114 1
原创 念念不忘的ReentrantReadWriteLock
来先猜一下ReentrantReadWriteLock会如何实现?都在java.util.concurrent包下,那么可以明确一点,那就是关于锁的实现,应该用的就是AQS,那么,读锁、写锁会不会对应的就是AQS中的共享模式与独占模式?
2019-05-16 07:55:03 1905 7
原创 如何手撕一个API 网关(API Gateway)?
一、什么是API Gateway一个比较普遍的定义如下:API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理...
2019-05-15 19:42:54 13004 5
原创 售达方、送达方的区别
送达方:The party who receives delivery of the goods.售达方:The customer who orders the goods or services. The sold-to party is contractually responsible for sales orders其实简单的说,售达方就是买东西的客户,送达方就是你要发货之后收货的客户...
2019-05-15 09:12:49 3763 2
原创 如何从零手撕一个PaaS平台?
一、背景目前在用的PaaS平台是之前购买的一个商业产品,但没有源码,运维期也早就结束了,所以会遇到一些奇奇怪怪的问题,需要我们这边case by case的处理,不胜其烦。老PaaS的架构及基本功能如下:二、重构为什么选择重构PaaS平台而不是全部迁移kubernates集群?kubernates集群的确提供了很多优秀的特性,比如:RC、滚动更新或回滚、资源监控和日志记录、负载均衡等等...
2019-05-13 18:26:08 6261 1
原创 Java JDK 动态代理(AOP)使用及实现原理分析
代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息一、什么是代理?二、Java 动态代理类三、JDK的动态代理怎么使用?四、动态代理怎么实现的?五、结论一、什么是代理?代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理模式UML图:简单结构示意图:为了保持行为的...
2019-05-08 21:28:06 166263 104
原创 清理 docker registry image
#!/usr/bin/env pythonimport requestsfrom requests.auth import HTTPBasicAuthfrom requests.packages.urllib3.exceptions import InsecureRequestWarningimport jsonimport reimport argparse## this is ...
2019-05-08 18:04:03 1344 3
转载 OAuth 2.0 的四种方式
OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。RFC 6749OAuth 2.0 的标准是 RFC 6749 文件。该文件先解释了 OAuth 是什么。OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。…资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。这段话的意思就是,OAuth 的核心就是向第三方应用颁发令...
2019-04-24 14:06:25 1756
转载 Kafka Exactly Once语义与事务机制原理
本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/transaction/一、写在前面的话本文所有Kafka原理性的描述除特殊说明外均基于Kafka 1.0.0版本。二、为什么要提供事务机制Kafka事务机制的实现主要是为了支持Exactly Once即正好一次语义的原子性有状态操作的可恢复性2.1 Exactly Once《Kafk...
2019-04-24 11:52:58 1401 1
原创 Elasticsearch GET 流程
ES的读取分为GET和Search两种操作,这两种读取操作有较大的差异,GET/MGET必须指定三元组:_index、_type、_id。也就是说,根据文档id从正排索引中获取内容。而Search不指定_id,根据关键词从倒排索引中获取内容。本章分析GET/MGET过程,下一章分析Search过程。一个GET请求的简单例子(来自官网)如下:curl -XGET http://127.0.0.1...
2019-04-11 19:50:51 1905
原创 Elasticsearch Search流程
GET操作只能对单个文档进行处理,由_index、_type和_id三元组来确定唯一文档。但搜索需要一种更复杂的模型,因为不知道查询会命中哪些文档。找到匹配文档仅仅完成了搜索流程的一半,因为多分片中的结果必须组合成单个排序列表。集群的任意节点都可以接收搜索请求,接收客户端请求的节点称为协调节点。在协调节点,搜索任务被执行成一个两阶段过程,即query then fetch。真正执行搜索任务的...
2019-04-11 19:50:08 2193
原创 Elasticsearch 写流程
本文分析ES写入单个和批量文档写请求的处理流程,仅限于ES内部实现,并不涉及Lucene内部处理。在ES中,写入单个文档的请求称为Index请求,批量写入的请求称为Bulk请求。写单个和多个文档使用相同的处理逻辑,请求被统一封装为BulkRequest。1、文档操作的定义在ES中,对文档的操作有下面几种类型:enum OpType { INDEX(0), CREATE(1), UPDA...
2019-04-10 18:17:47 2017 1
原创 Linux下常见的日志文件名
Linux常见的日志文件名:/var/log/cron 工作调度/var/log/dmesg 内核检测过程中产生的信息/var/log/lastlog 检测所有账号登陆信息/var/log/maillog或/var/log/mail/* 邮件/var/log/messages 记录系统发生的所有错误信息/var/log/secure 涉及账号密码信息/var/log/w...
2019-04-02 13:15:26 4233
zookeeper开源客户端Curator
2017-03-25
zookeeper开源客户端ZkClient使用
2017-03-25
java cpu 内存占用高 问题 模拟并排查
2018-03-29
理解 channels - Kavya Joshi
2018-01-18
zookeeper常见应用场景简单实现及ppt
2017-03-26
zookeeper应用场景实现demo及ppt资料
2017-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人