自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 资源 (5)
  • 收藏
  • 关注

原创 java推荐书单 什么值得读 (2021年1月8日更新)

2019年8月7日更新更新《大型网站技术架构演进与性能优化》《spring微服务实战》《微服务设计原理与架构》《持续演进的Cloud Native:云原生架构下微服务最佳实践》《软件架构设计 : 大型网站技术架构与业务架构融合之道》2019年5月4日更新更新《Kafka权威指南》《Apache Kafka实战》《码出高效:Java开发手册》《RocketMQ技术内幕 : R...

2018-04-02 22:53:46 3771

原创 mysql知识盘点【陆】_锁和事务级别

系列文章:mysql知识盘点【壹】_SQL优化mysql知识盘点【贰】_InnoDB引擎索引mysql知识盘点【叁】_主从复制mysql知识盘点【肆】_调优参数mysql知识盘点【伍】_执行计划1.锁innodb存储引擎支持4种锁:S:共享锁,可认为对一行数据的读锁;X:排他锁,可认为对一行数据的写锁;IS:意向共享锁,事务想获得一张表中几行数据的共享锁;IX:意向排他锁,事务想获得一张表中几行数据的排他锁;对于意向锁我们可以这样理解。基于前面的文..

2020-05-31 17:21:39 248

原创 Kafka知识盘点【叁】_消费者

Kafka知识盘点【壹】_生产者Kafka知识盘点【贰】_broker1.消费者组生产环境上,kafka都是配置消费者组来进行topic消息的消费。对于一个消费者组,会有多个消费者实例,同一个topic的消息只会发送到一个消费者组的其中一个消费者实例上消费,但是同一个topic可以被多个消费者组订阅。kafka的消息消费是基于拉模式的,即消费者不断调用poll()方法,获取订...

2020-05-06 01:57:25 235

原创 Kafka知识盘点【贰】_broker

Kafka知识盘点【壹】_生产者kafka broker这部分,可能是kafka系列知识的核心所在。好好总结。1.消息的存储1.1 存储文件在上文曾经介绍过,kafka的消息都是由partition为维度保存的。实际情况下,每个partition正是broker上的一个文件夹,文件夹下保存了segment和index两种文件。segment文件分为日志文件和索引文件...

2020-05-06 01:10:30 412

原创 Kafka知识盘点【壹】_生产者

尽快进入正题。0.一点题外话Kafka名字的由来,是Kafka之父Jay Krept很喜欢作家Franz Kafka。Kafka和很多消息中间件一样,支持两种消息模型:0.1.点对点模型包含消息队列(queue)、发送者(sender)和接受者(receiver)。流程就是发送者将消息发送到队列的指定位置,接收者从指定位置获取消息。一旦消息被消费,就从消息列表中删除。...

2020-05-01 16:39:07 249

原创 RocketMQ知识盘点【肆】_最佳实践

前文回顾:RocketMQ知识盘点【壹】_Producer和NameServerRocketMQ知识盘点【贰】_Broker和消息存储RocketMQ知识盘点【叁】_Consumer这篇文章简单说说rocketMQ的几个实践,可能会不断更新。1.延时消息使用场景比如当需要监控订单超时。那么发送2条定时消息,一个是订单开始定时消息A,一个是订单正常结束定时消息B,...

2020-04-15 03:12:46 151

原创 RocketMQ知识盘点【叁】_Consumer

前文回顾:RocketMQ知识盘点【壹】_Producer和NameServerRocketMQ知识盘点【贰】_Broker和消息存储1.模式1.1 模式类型分为推模式和拉模式。推模式是broker向consumer注册一个listener接口,收到消息后会回调listener接口,采用长轮询方式实现push;拉模式是consumer主动向broker拉消息,下文...

2020-04-15 02:51:34 355

原创 RocketMQ知识盘点【贰】_Broker和消息存储

前文回顾:RocketMQ知识盘点【壹】_Producer和NameServer。1.Broker一个topic拥有多个消息队列,一个Broker默认为每个topic创建4个读队列和4个写队列。多个Broker组成集群,brokerName相同的多个Broker组成master-slave架构。brokerId为0的为master,大于0为slave。对于一个Broker,它的存...

2020-04-12 21:47:10 1375 1

原创 RocketMQ知识盘点【壹】_Producer和NameServer

尽量少啰嗦。1.部署组成由图可知,rocketMq的运转至少需要4个组成部分:Producer(生产者),NameService(路由中心),Broker(消息服务费)和Consumer(消费者)。下面依次总结。2.Producer2.1 消息发送方式同步:producer发送消息后,等待broker返回发送结果。异步:producer发送消息时,指定回...

2020-04-12 18:34:06 477

原创 java多线程解说【贰拾】_多线程知识总结

本篇文章旨在对多线程的知识进行补充总结。1.wait和sleep的区别wait()是Object类的方法,是线程同步的手段之一。sleep是thread类的方法。区别:1.wait()必须在synchronized同步块或方法里调用;2.wait()会释放synchronized锁上的对象锁,sleep不会;3.wait()形成的阻塞,只能在同一个对象锁的synchron...

2019-10-05 16:30:36 173

原创 什么是Service Mesh服务网格

起源2016年1月,Buoyant公司在git上发布了Linkerd 0.0.7版本,这是业界第一额Service Mesh项目。2016年9月29日,Buoyant公司在SF Microservices大会上第一次提出Service Mesh概念。2016年10月,Buoyant公司的官网博客开始连载《A Service Mesh for Kubernetes》系列文档。2017...

2019-10-04 11:54:20 366

原创 什么是云原生Cloud Native

起源2010年5月,WSO2的CTO Paul Premantle在博客中首次提出了云原生(Cloud Native)的概念。2013年,Netflix的云架构师Adrian Cockcroft在Yow会议上介绍了Netflix基于Cloud Native的成功应用实践。同在2013年,Pivotal的Matt Stine在文章中详细介绍了如何将应用迁移到Cloud Native。...

2019-10-04 10:26:10 334

原创 瓷器的发展历程和启示

这个星期在读吴军老师的《文明之光》第一册,在介绍瓷器的发展历程一章里略有感触,将内容整理如下。首先要区分两个概念,即陶和瓷。虽然日常中我们常连在一起说,但实际上这是两种不同的东西。陶器主要是使用粘土烧制(800度左右)而成,现多见于花盆,但作为承武物的器皿来讲缺点有二:易渗水和强度不够。瓷器的烧制则有三个条件:高岭土(一种矿石粉末)、高温(1200度以上)和上釉技术(相当于镀层)。中...

2019-09-08 18:42:11 1536

原创 redis知识盘点【捌】_redis新特性

这个月终于有了一些时间,看了几本书。归。继续更新。这次还是先分享几个redis之前没写的新特性。HyperLogLog2.8版本引入,可用于巨量去重统计,比如统计UV。有点是需要空间很小,只有12KB;缺点是平均会有0.81%的误差。不过当统计量级特别大的时候,HyperLogLog的性价比还是很高的。基本指令主要有三个指令:pfadd:增加成员pfcount:...

2019-04-27 18:55:00 163

原创 在生活之中,要活在生活之上

在生命的历程中,你要始终保持自己的本色,按照内心的指引过 自己想过的生活。除此之外,一切都是次要的。你的工作、生活、事业、人际关系、婚姻、艺术创作以及种种兴趣爱好,如果不是建立在自己的本色的基础上,一切都肤浅的、混乱的、虚无的。成长的过程,其实就是你的本色遂渐展现的过程。你可以从做过的每一件事、 说过的每一句话中注意到你的本色。如果每天你都能花点时间观察自己,留心自己的经历、想法、情绪和好恶……你...

2018-08-26 12:52:49 1276

原创 git使用的自我修养

一、配置Git的配置,分为如下3个级别。 (1) config-system:修改/etc/gitcon6g文件,是全局配置,只需要系统admin做一次即可。 (2) config-global: 修改化ome/[username]/.gitconfig文件,配置只对每一个SSH的用户可见。 (3) config-e: 修改工作区的.git/config文件,配置只对当前仓库有效。 覆盖顺序为:(...

2018-06-30 13:20:17 228

原创 java虚拟机面试干货【拾】_G1 GC的回收机制

上篇文章:java虚拟机面试干货【玖】_G1 GC的空间划分简单来说,G1 GC的收集分为4个阶段:年轻代GC,并发标记周期,混合收集和full GC。

2018-05-14 01:24:21 1490

原创 java虚拟机面试干货【玖】_G1 GC的空间划分

之前有看过介绍G1回收器的知识,但是一直没有去完成一个整理。接着今天的功夫,好好把这部分知识总结一下。什么是G1 GC通过前面的文章我们知道,在JDK 1.6版本之前,我们一般是使用ParNew+CMS两个垃圾回收器来完成JVM中的垃圾回收的。但是它们的实现并不算特别的高效,详情可见之前的文章总结(链接)。有鉴于此,JDK从1.7版本开始全新引入了一个新的垃圾回收期,就是今天要说的G1 GC。和之...

2018-05-11 17:12:12 587

原创 java虚拟机面试干货【捌】_JVM配置参数

本文总结一下JVM中常用的配置参数。堆内存相关的JVM参数-Xms设置Java应用程序启动时的初始堆大小。-Xmx设置Java应用程序能获得的最大堆大小。-Xss设置线程桟的大小。-XX:MinHeapFreeRatio设置堆空间最小空闲比例。当堆空间的空闲内存小于这个数值时,JWM便会扩展堆空间。-XX:MaxHeapFreeRatio设置堆空间的最大空闲比例。当堆空间的空闲内存大于这个数值时,...

2018-05-08 09:17:03 327

原创 redis知识盘点【柒】_redis补遗

系列文章:redis知识盘点【零】_redis常用命令redis知识盘点【壹】_基础知识redis知识盘点【贰】_五种类型redis知识盘点【叁】_持久化redis知识盘点【肆】_主从复制和sentinel哨兵redis知识盘点【伍】_一致性哈希和cluster集群redis知识盘点【陆】_客户端Jedisredis知识盘点【柒】_redis补遗本文将之前redis系列文章中遗漏的知识点进行补充,...

2018-04-30 11:12:24 372

原创 redis知识盘点【陆】_客户端Jedis

系列文章:redis知识盘点【零】_redis常用命令redis知识盘点【壹】_基础知识redis知识盘点【贰】_五种类型redis知识盘点【叁】_持久化redis知识盘点【肆】_主从复制和sentinel哨兵redis知识盘点【伍】_一致性哈希和cluster集群redis知识盘点【陆】_客户端Jedisredis知识盘点【柒】_redis补遗本篇文章主要介绍一下redis的客户端Jedis。首...

2018-04-30 11:05:19 362

原创 mysql知识盘点【伍】_执行计划

系列文章:mysql知识盘点【壹】_SQL优化mysql知识盘点【贰】_InnoDB引擎索引mysql知识盘点【叁】_主从复制mysql知识盘点【肆】_调优参数本文总结一下sql语句执行计划的查看,在mysql中,我们可以通过EXPLAIN SELECT ... 来查看该查询sql的执行计划,执行后的输出大致是这样的:下面详细

2018-04-28 15:54:51 206

原创 mysql知识盘点【肆】_调优参数

本文内容整理自《Mysql运维内参》第26章,本书值得一看,即使是开发同学。链接如下:genera_log建议在数据库正常服务时,将这个参数设置为关闭状态,因为它会记录提到MysQL的一切东西,既浪费磁盘又影响效率。同时它又是分析问题的利器,如果觉得数据库有莫名的访问或SQL, 可以把它打开,截取一段时间的日志,以帮助定位问题。

2018-04-26 16:31:07 184

原创 mysql知识盘点【叁】_主从复制

系列文章:mysql知识盘点【壹】_SQL优化mysql知识盘点【贰】_InnoDB引擎索引本文内容部分整理自《高性能mysql》,链接如下:两种复制方式mysql支持两种复制方式:基于语句的复制和基于行的复制。基于语句的复制(逻辑复制)在mysql 3.23版本就已存在,基于行的版本在5.1版本引入。两种

2018-04-17 10:32:31 207

原创 mysql知识盘点【贰】_InnoDB引擎索引

上篇文章:mysql知识盘点【壹】_SQL优化本文主要基于Mysql数据库的InnoDB引擎介绍下其索引的实现。索引结构在B+Tree的每个叶子节点增加一个指向相邻叶子节点的指针,就形成了带有顺序访问指针的B+Tree。做这个优化的目的是为了提高区间访问的性能,当进行范围查找时只需顺着节点和指针顺序遍历就可以一次性访问到所有数据节点,极大提到了区间查询效

2018-04-16 15:53:08 228

原创 说说zookeeper【陆】_zkClient客户端

上篇文章:说说zookeeper【伍】_参数与命令本文说说zookeeper最常用的两个客户端:zkClient和Curator。zkClientzkClient是github上一个开源的zookeeper客户端,在zookeeper原生接口上进行了包装,更加易用,内部实现了如Session超时重连、watcher反复注册等功能。zkClient

2018-03-29 15:09:05 304

原创 java多线程解说【拾玖】_ThreadLocal总结

突然发现之前总结的知识没有覆盖到ThreadLocal,这里续上一文是为补充。首先说说什么是ThreadLocal。看名字感觉像是本地线程之意,其实不然。ThreadLocal其实是Thread的一个本地化对象,相当于线程访问其持有对象的代理,各个线程可通过它创建并访问各自的自有对象。说白了就是,线程可以创建自己的ThreadLocal保存想要保存的对象,实现跨越接口拿到保存的对象。

2018-03-29 11:36:00 233

原创 说说zookeeper【伍】_参数与命令

上篇文章:说说zookeeper【肆】_应用场景基本参数高级参数常用命令conf输出zookeeper服务器运行的基本信息cons输出当前服务器素有客户端连接的详细信息crst重置所有客户端连接的统计信息dump输出当前集群所有会话信息envi

2018-03-25 13:35:35 269

原创 说说zookeeper【肆】_应用场景

上篇文章:说说zookeeper【叁】_工作机制在系列第一篇文章中,我们已经整理了zookeeper在分布式应用中的使用场景:可基于zookeeper实现数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、master选举、分布式锁和分布式队列等功能。下面我们依次详细介绍一下具体实现。数据发布/订阅即所谓配

2018-03-25 03:54:17 262

原创 说说zookeeper【叁】_工作机制和实现原理

上篇文章:说说zookeeper【贰】_ZAB协议本文简单说说zookeeper的工作机制。总体来说,客户端先和zookeeper服务器建立起一个TCP长连接(session),之后根据ACL权限的设置,可在zookeeper服务器上对目录和节点(zode)进行操作,同时还可以在节点上注册watcher事件。下面依次展开说明。session客户端

2018-03-25 03:43:27 393

原创 说说zookeeper【贰】_ZAB协议

上篇文章:说说zookeeper【壹】_什么是zookeeper上文中我们对zookeeper的基础知识进行了介绍,本文说说zookeeper遵循的ZAB协议。ZAB协议ZAB协议全称是Zookeeper Atomic Broadcast(zookeeper原子消息广播协议),是zookeeper数据一致性的核心算法。该协议的核心是:所有事务请求

2018-03-25 03:32:04 299

原创 说说zookeeper【壹】_基础知识

本系列文章内容大部分总结自倪超老师的《从Paxos到Zookeeper分布式一致性原理与实践》,如果想了解zookeeper,那么读着一本书就够了。链接如下:本文先介绍下什么是zookeeper。zookeeper介绍zookeeper是一个开发源码的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。其设计目标是将那些复杂且容易

2018-03-25 03:19:45 322

原创 mysql知识盘点【壹】_SQL优化

简单一点,上来就说说数据库优化。本文都是基于mysql数据库的优化建议。分为四个方面:索引优化、sql优化、建表优化和参数优化。索引优化首先介绍下索引。索引是数据库中一个排序的数据结构,用于快速查询和更新数据。根据结构形式可分为B树索引(B-tree)、散列索引(hash)、空间索引(R-tree)和全文索引(full-text)。mysql有两大数据库引擎,分

2018-03-20 00:23:43 418

原创 分布式系统漫谈【拾肆】_分布式系统常用优化思路

本文说说系统优化的常用手段吧,其中可能有一些内容在系列前面的文章里已经总结过了,这里还是再系统地整理出来,方便将知识汇总,有个整体上的认识。本文只讲方法论,没有具体实现。限于水平总结得可能不全,后面还会补充。本文将系统主要分为前端优化和架构优化两个层面来说。前端优化1.页面优化延迟加载对一些还没有访问到的元素实行延迟加载,尤其是首页上的内容。...

2018-03-18 21:55:58 982 1

原创 JDK各版本I/O分析

全文总结于李林锋老师的《Netty权威指南》,链接如下:Linux系统I/O的实现Linux阻塞linux非阻塞Linux I/O复用Linux提供select/poll,进程通过将一个或多个fd(file descriptor,文件描述符,Linux内核为高效管理已被打开的“文件”

2018-03-16 14:37:06 692

原创 JDK集合类源码分析

本文总结一下JDK中集合类的实现。首先看下集合类的继承图:可看出,接口主要有Collection和Map两大主线,其中Collection又有List和Set两个分支。List是一个有序的队列,每一个元素都有它的索引;而Set是一个不允许有重复元素的集合。Map是一个key-value键值对映射,AbstractMap是个抽象类,它实现了Map接口中的大部分API。Ha

2018-03-13 00:06:59 2469

原创 java虚拟机面试干货【柒】_class的执行

上篇文章:java虚拟机面试干货【陆】_垃圾回收:垃圾收集器在之前的文章中,我们大致总结了JVM的执行过程如下:当class文件被类加载器加载到内存(栈)后,由执行引擎对字节码进行解析或等效处理后,最后输出结果。下面就说说这个执行引擎是如何工作的。栈帧栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,

2018-03-11 20:39:32 432

原创 java虚拟机面试干货【陆】_垃圾回收:垃圾收集器

上篇文章:java虚拟机面试干货【肆】_垃圾回收:回收算法本文我们说说垃圾收集器,先明确几个概念:串行(serial):单线程,按顺序依次执行多任务;并行(Parallel):多线程,多个相同任务在一个实体上执行;并发(Concurrent):多线程,多个不同任务在一个实体上执行;明确好上面概念以后,有助于我们介绍下面的垃圾收集器:S

2018-03-11 18:05:44 282

原创 java虚拟机面试干货【伍】_垃圾回收:回收算法

上篇文章:java虚拟机面试干货【肆】_垃圾回收:判断条件上篇文章我们分析了GC中对要回收对象的判断条件,这篇文章我们说说GC回收算法。标记-清除算法即mark-sweep算法。通过两个阶段完成,一是标记阶段,筛选出已经没有关联到GC Roots调用链的对象;二是清除,将这些标记处的对象删除。示意图如下:但这个算法有2个问题:一是

2018-03-11 17:33:39 212

原创 java虚拟机面试干货【肆】_垃圾回收:判断条件

上篇文章:java虚拟机面试干货【叁】_JVM内存结构由上文我们可以大略总结出,在JVM中线程私有的变量是保存在栈上的,公共的对象保存在堆上,而静态变量保存在堆空间中的方法区(PermGen)上。由于系统分配给JVM的内存空间也是有限的,当一个对象不再使用时我们应该把它回收以释放空间,下面就说说垃圾回收(GC)的事儿。对象是否存活垃圾回收的第一步就是要判断,

2018-03-11 16:06:28 190

大型网站技术架构演进之路.pptx

大型网站技术架构演进之路,从单体应用起源,历经分布式集群、微服务、中台、云原生,最后到service mesh和serverless。 全程带动画效果。

2020-11-26

【含动画效果】mysql索引原理与最佳实践.pptx

从数据结构底层实现,阐述B树、B+树的特点,到mysql为什么选择了B+树作为索引存储结构。接着介绍mysql底层存储实现段簇页,和聚簇索引非聚簇索引包括联合索引的关系。最后列举一些sql是否可走索引,涉及最左匹配原则、索引覆盖、范围查询等原则,以及sql优化建议。 笔者使用此ppt分享,取得了较好的现场效果。

2020-09-29

Java并发编程培训(阿里巴巴)

volatile关键字: 1:简化实现或者同步策略验证的时候来使用它; 2:确保引用对象的可见性; 3:标示重要的生命周期的事件,例如:开始或者关闭。 脆弱的volatile的使用条件: 1:写入变量不依赖变量的当前值,或者能够保证只有单一的线程修改变量的值; 2:变量不需要和其他变量共同参与不变约束; 3:访问变量时不需要其他原因需要加锁。

2018-05-15

Zookeeper原理及应用汇总

ZooKeeper为分布式应用程序提供高效且可靠的分布式协调服务,提供的服务:配置管理、统一命名服务、分布式同步、组服务等,是Google Chubby的开源实现,Hadoop和Hbase的重要组件;是一个典型的分布式数据一致性的解决方案,分布式应用程序可基于它实现诸如数据发布/订阅、负载均衡、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。

2018-01-08

ActiveMQ入门

企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格。因此,消息传递可以满足应用间的通知和互相操作。但是开源的解决方案是到最近10年才出现的。Apache ActiveMQ就是其中一种。它使应用间能以异步,松耦合方式交流。本章将向您介绍ActiveMQ。

2017-12-01

空空如也

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

TA关注的人

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