自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java知识图谱

前言近段时间杂七杂八地生啃了很多Java的相关知识,尽管自认为受益匪浅,但是也苦于在学习过程中的杂乱无章,缺失系统化的知识框架体系。因此抽出一点时间整理下Java的知识图谱。目标我希望通过这篇文章能得到什么?构建工作过程中所接触到的Java知识的学习框架,让知识体系化、系统化,输出大纲性Java知识学习路线。针对体系化的知识进行深化学习并输出,本篇文章将作为目录索引。知识图谱层次...

2019-04-22 23:32:17 3092 2

原创 【资料夹】博文分享与汇总

优秀博文汇总

2016-01-27 12:20:07 636

原创 别人家的技术架构体系与技术痛点解决方案

目录前言Q&A前言架构组长找到我,说要让我梳理下公司的技术痛点以及提供一些常用的解决方案。我向来觉得他山之石可以攻玉,闭门造车只能让自己走向封闭。因此趁着周末,翻查了*篇大厂的博文,梳理了大公司的技术痛点以及他们常用的解决方案。该文将以Question & Answer的方式进行汇总归纳。目前该贴还在填坑中。Q&AQ:流量洪峰与高性能解决方案?A:【阿里】同学...

2019-06-23 15:38:16 1647

原创 Dubbo负载均衡算法总结

纲要前言一、学习目的与目标二、负载均衡概述三、DUbbo负载均衡的四种算法3.0 基于权重随机算法的 RandomLoadBalance3.0.1 实现原理3.0.2 源码解读3.1 基于最少活跃调用数算法的 LeastActiveLoadBalance3.1.1 实现原理3.1.2 源码解读3.2 基于 hash 一致性的 ConsistentHashLoadBalance3.2.1 实现原理3...

2019-06-23 13:01:31 2923 1

原创 如何才能多快好省的上班

办公文件随意放到桌面上,显得混乱不堪,到了要找的时候就跟我躲猫猫;领导交代的事情下一个回头,然后就把他忘记在下辈子了;邮件狂轰滥炸,以至于点了已读,假装自己全读了,但是很多重要的文件却没有响应;每月没有正常管理目标,禅道任务没有建立,也没有及时知会领导,导致领导以为没活,不断压活,天天加班,苦不堪言;有度信息超载,要么全部不看导致错过重要的问题,要么全部看,导致无法干活;重复性的活太多,...

2019-06-16 18:52:54 594

原创 Dubbo自适应拓展学习笔记

关于阅读开源代码的一些想法在编写本文前,其实已经写了一篇关于Dubbo 自适应拓展特性的草稿,但是通篇写下来,所做的也不过是copy-write的过程,这样的文章对于我来说,又有什么意义呢?尽管我多次想编写一篇详尽有效的文档,试图如同大神一样去理清Dubbo源码的脉络,但是深入其间才发现力有所不逮。因此便重新把那篇文章给删了,推倒重来,将阅读人群从别人转向自己。这样一来,就变得清晰简单的许多...

2019-05-29 22:30:45 1336

原创 可用性提升大作战-Redis的高可用策略之Sentinel

纲要Redis高可用技术说明正文1. 哨兵1.1 架构1.2 工作流程1.2.1 健康检测1.2.2 主观下线1.2.3 客观下线1.2.4 选举1.2.5 故障转移1.2.6 通知1.2.7 关于中断1.3 算法分布式一致性算法Raft算法1.4 缺陷1.4.1 关于脑裂1.4.2 异步复制的数据丢失问题其他解决方案参考资料Redis高可用技术说明由于本人技术能力较为有限,无法支撑独立成文...

2019-05-12 23:39:19 234

原创 走近Dubbo(附Dubbo思维导图)

阅读阿里的很多开源框架的文档,尽管所读不过是里面的一二,但是走入开发人员的思想宫殿里,把玩着期间的精巧之处,不亦说乎?Dubbo官网:http://dubbo.apache.org/zh-cn/附思维导图(未完待续)...

2019-05-07 23:33:23 804

原创 【技术员的工具箱】Mysql表结构不同环境的对比

最近发现测试环境和生产环境的表结构并不一致,导致了测试环境的测试结果达不到预期,甚至更严重的是,测试环境测不出问题,一到生产就有可能出现生产故障。为了提前排除风险,需要对生产环境和测试环境进行一次比对。网上提供了两种方式,一种是mysqldiff的方式,另一种则是用Mysql的客户端:Navicat。这里选用了Navicat的方式,在这里做下记录。参考资料10秒钟完成MySQL数据库结构...

2019-05-07 22:58:17 509

原创 Spring AOP工作原理

纲要1.概述1.1 谈谈AOP,谈谈代理什么是AOP?为什么使用AOP?什么时候或者什么场景使用AOP?AOP的运作原理?1.2 静态代理1.3 动态代理1.3.1 动态代理的几种实现方式2.SpringAOP和AspectJ2.1 AspectJ2.2 SpringAOP原理剖析参考文献1.概述1.1 谈谈AOP,谈谈代理在编写正文前,我想聊聊什么是AOP?如果在分析一件事物前,没有明确这...

2019-05-04 12:32:44 3741

原创 可用性提升大作战-从阿里的哨兵中间件谈谈服务降级

目录服务可用性Sentinel的限流、熔断降级与隔离保证服务稳定的几种策略限流降级隔离超时重试集群服务限流的几种算法漏桶算法令牌桶算法隔离设计的几种思路线程池隔离信用量隔离其他dubbo的服务降级实现原理Hystrix的隔离策略正文1.从阿里的Sentinel说起笔者特别喜欢阿里的中间件,缘由很简单,在于他详尽的文档说明,无论D...

2019-05-02 14:51:18 605

原创 【笔记】Mysql执行计划快速查询手册

说明本文仅作笔记记录文档旨在生成执行计划后能快速根据文档进行分析Sql。故本文档只做查询用途,不做讲解。文章来源文章来源:https://segmentfault.com/a/1190000008131735正文mysql> explain select * from user_info where id = 2\G*************************** 1. ...

2019-04-30 12:18:22 198

原创 JVM问题快速排查手册

查看JVM启动参数jps -vjinfo -flags pidjinfo pid – 列出JVM启动参数和system.propertiesps -ef | grep java查看当前堆的配置jstat -gc pid 1000 3 – 列出堆的各个区域的大小jstat -gcutil pid 1000 3 – 列出堆的各个区域使用的比例jmap -heap pi...

2019-04-28 23:13:02 459

原创 从代码热替换谈谈类加载机制

知识点谈谈Tomcat的代码热替换与模块的热部署各自使用场景实现原理谈谈OSGI的模块化热部署了解类加载机制与双亲委派机制概念类加载器如何破坏双亲委派机制其他应用场景目标我希望:(1)学习到代码热替换/模块热部署的实现原理(2)了解Java的类加载机制、双亲委派机制(3)破坏双亲委派机制的场景(4)初步了解OSGI正文玩过Tomcat的朋友都应该了...

2019-04-28 23:06:51 427

原创 理解JMM模型的原子性、可见性与有序性

我们需要去了解JMM存在的意义,作为一组规则,我们不能别人要我们有,我们就得有这个规则,我们得尝试去理解JMM作为一组规则存在的意义。我们在之前已经了了解到JVM实际运行程序的时以线程为实体,在创建线程的时候,JVM虚拟机会尝试给他们创建栈空间,即工作空间,来作为线程本身私有数据的存储空间。线程从主存取出数据后进行更新,然后重新写入主存中。主存的数据是实体,单一线程拿到的实际是数据的镜像。这里会...

2019-04-28 21:24:16 985

原创 了解Java内存区域、内存模型与硬件架构

几个要点记录:(1)触发时机:程序运行时(2)发起对象:Java虚拟机(3)线程共享的数据区域:方法区、堆(4)线程私有数据区域:虚拟机栈、本地方法栈、程序计数器各区域概述1、方法区存储:已被虚拟机加载的类信息、常量、静态变量以及编译后的代码等数据。特殊要点:(1)运行时常量池。存储:编译期生成的各种字面量和符号引用。(2)字面量:文本字符串和申明为final的变量;符号引用量...

2019-02-18 13:32:51 343

原创 系统性能指标与调优思路——常用的性能调优方法

在明确性能指标后,我们针对这些性能指标,需要选择一些方法来提升系统性能。缓存缓存通常需要用空间换时间,在击中率较高的情况下,缓存通常能提升系统性能,这一句话从反面来看,即如果无法保证热点击中的频率,那么缓存反而是一种不好的策略。因此,使用缓存有一定的限制条件。有以下几种场景会使用到缓存:对于一个web应用来说,浏览器会有缓存,cookie或者session,cdn等。后端则有本地缓存、分布...

2019-01-21 22:32:15 1125

原创 Synchronized底层语义以及基本原理

Java对象头与Monitorsynchronized的锁对象存储在Java对象头里。在jvm的对象头里,主要是由Mark Word以及Class Metadata Address组成。Class Metadata Address是类型指针指向对象的类元数据。JVM通过这个指针确定该对象在哪个类的实例。Mark Word存储对象的HashCode、分代年龄、锁标记位等信息。随着对象锁的不同,...

2019-01-21 21:48:30 339

原创 synchronized的应用方式

synchronized的三种应用方式(1)修饰实例方法(2)修饰静态方法(3)修饰代码块修饰实例方法/**** 代码1-1*/public class SynDemo implements Runnable{ static int i=0; public synchronized void increase(){ ...

2019-01-15 23:51:08 404

原创 系统性能指标与调优思路(一)

参考文档:性能优化指南:性能优化的一般性原则与方法http://www.cnblogs.com/xybaby/p/9055734.htmllazy ideas in programming(编程中的惰性思想)http://www.cnblogs.com/xybaby/p/6425735.html...

2018-12-26 22:03:15 1247

原创 乐观锁+版本号解决锁竞争问题

在高并发的场景下,经常会遇到这种情况:A请求过来,查询出来一条数据,进行update操作,与此同时B请求也在这个时候过来,对这条数据进行查询,并进行操作。此时就会出现B在A之后进行查询操作,但是实际B的数据却被A覆盖。这种情况并不少见,有时候会为了避免这种情况,我们会引入锁来解决这种问题,常见的比如使用ReetrantLock或者synchronized同步块等悲观锁的方式来实现,其实在这里,...

2018-12-24 21:55:15 6246 12

原创 Java"锁",你好

前言Java中的锁种类丰富,一方面在某些场景使用对的锁,会有非常高的效率。但是另一方面,由于锁的复杂性,也给开发人员带来了使用上的困难。因此,希望能通过一篇文章总结下锁的知识点。目录悲观锁和乐观锁自旋锁、适应性自旋锁无锁、偏向锁、轻量级锁和重量级锁公平锁和非公平锁可重入锁和非重入锁共享锁和排它锁悲观锁和乐观锁悲观锁和乐观锁的概念比较容易理解。举个例子来帮助理解下:程序猿...

2018-12-06 22:11:34 157

原创 Spring Ioc源码阅读笔记(二)Spring Ioc核心源码体系

BeanFactory概述从接口命名,我们可以很容易看出,Spring的Ioc核心源码体系是工厂模式。这里从类图抽象出来的接口层级关系,结合Spring源码对这些接口的注释,我们可以了解到:BeanFactory是Spring Bean容器的顶层接口,是一个基本的容器视图,在这里只定义了容器的一些最基本的行为。而如ListableBeanFactory、ConfigurableBeanFa...

2018-12-02 21:50:16 313

原创 Spring Ioc源码阅读笔记(一):Ioc概念简述与理解

前言不得不说,阅读源码是一件很让人头疼的事情,枯燥乏味,稍有不慎便落入代码的潮水中窒息而死。我想,每一位程序员就像穿梭丛林的冒险家,试图在这枯燥的旅途中,找寻着被隐藏的宝藏。重要的是,我们应当如何在这代码丛林,找到我们的宝藏,或者应该说是我,应该怎么找到我想要的,也许,带着问题去找寻宝藏,是一个不错的方法。我觉得,我们没有必要去完全读懂这座宝库的一切,而应该转变观念,这是一座宝库,我们只取我...

2018-11-30 21:26:32 291

原创 【技术员的工具箱】千万数据生产环境更改方案

最近需要给公司的某系统的表进行千万级别数据的加密。但是该系统作为公司的基础系统,外部业务访问频次高,且该系统无法做出长时间的停机挂牌,因此需要提供一套方案,尽量压缩系统的停机时间,在尽可能短的时间内完成千万级别的数据加密任务。方案的基本思路是: 以8月20日作为分界点,建立临时表,备份8月20日之前的表数据。对该备份表进行加密处理。8月20日以后的数据作为增量数据,进行增量的处理。存量数据和增量数

2016-08-28 19:23:42 862

原创 【技术员的工具箱】四步十分钟生成一千万条数据进行性能测试

1.创建一份包含一千万数据的txt文件 [root@test]i=1;while[ i−le10000000];doechoi -le 10000000 ];do echo i ;let i+=1; done>1000w.txt;2.在数据库中创建临时表 create table tmp_series(id INT,PRIMARY(id))3.将txt文件的数据读取到临时表中 loa

2016-08-13 23:40:12 976

原创 Spring AOP初探(二)

作者:谢新亭 链接:https://www.zhihu.com/question/23641679/answer/105442105 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。此答案有毒,请谨慎服用。如果需要深入而且准确理解Spring的工作原理以及设计思想,请阅读以下官方文档。本稿仅供学习!参考文档: http://docs.spring.io/spr

2016-06-11 19:58:33 749

原创 Spring AOP初步了解

作者:谢新亭 链接:https://www.zhihu.com/question/24863332/answer/105412266 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。此答案有毒,请谨慎服用。如果需要深入而且准确理解Spring的工作原理以及设计思想,请阅读以下官方文档。本稿仅供学习!参考文档:http://docs.spring.io/sprin

2016-06-11 16:52:46 550

原创 Spring Bean的生存日记

作者:谢新亭 链接:https://www.zhihu.com/question/24675135/answer/103209078 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。此答案有毒,请谨慎服用。如果需要深入而且准确理解Spring的工作原理以及设计思想,请阅读以下官方文档。本稿仅供学习!参考文档:http://docs.spring.io/sprin

2016-05-29 13:15:23 684

原创 【事务系列3】锁,你的兄弟姐妹还能再多点吗?

在很长的一段时间里,我对数据库中锁的概念都处于一种蒙圈的状态。 锁是什么?锁的出现是为了解决什么问题?锁的类型究竟有哪些?为什么有悲观锁、乐观锁,又有行级锁、表级锁等等的称呼? 在数据库中,锁就像拦路虎,但可惜我不是武松,就算是喝了三杯,依然被这头猛虎摁趴在路上。1.锁是什么? 锁是计算机协调多线程或者进程在并发请求同一资源的一种策略。在《事务的隔离级别以及低隔离级别下的数据异常情况》也写过,

2016-03-12 15:56:47 721

原创 学习技巧以及学习方法的总结

俗话说“工欲善其事必先利其器”,大凡学习做事无非此理。器具不利,事情不顺,反之,一旦器具利,做起事情则得心应手。基于此,在这些天里,也读了不少学习方法以及学习技巧的书,以下做出总结,希望能够在接下来的行事提升自己的工作效率。我将分两部分进行总结。第一部分是学习技巧部分,第二部分是事务管理部分。学习技巧能够大幅度提升单位时间内的产出以及转化,而事务管理部分则能够获取更多的时间去进行自己真正所需要做的事

2016-02-25 00:43:30 1758 1

原创 【事务系列2】事务的隔离级别以及低隔离级别下的数据异常情况

简述当多个事务在操作同一套数据源时,事务会彼此影响。根据这些事务之间的影响程度的不同,我们将其划分为多个隔离级别。隔离级别越低,事务所受到的限制就越低,性能相对会提高些,但是所造成的数据异常情况也相对多些。数据异常数据异常有以下几种情况: (1)脏读:在事务A读取了事务B尚未提交的更新数据,此时事务B由于各种异常情况回滚了。 事务A 事务B X=100 更新X=200

2016-01-31 22:04:14 689

原创 由解决方案想到的一些杂七杂八

在我刚进入第一家公司接受新人培训时,负责培训我们的前辈强调了公司是解决方案提供商。那时解决方案这个词语对于刚刚进入这一行的我来说,并没有特别深刻的感触。后来又进入了第二家公司,开始经历一款产品从无到有的完整的生命周期,在这个过程中经历了同类产品的竞品调研,需求讨论、评审以及确立等等几个过程,开始对解决方案这个词语也有了一定的了解。什么是解决方案?如果从这个词语的字面上看,无非就是为某个问题提供一个方

2016-01-26 23:46:23 749

原创 【微信你妹】中间人攻击截获微信数据

前言最近由于项目的需求,需要获取微信图文的点赞数以及阅读数。相关的接口已经通过抓包软件fiddler定位到了,但是这两个接口需要传递一个key值才能获取到响应的数据,而这个key的参数不仅动态变化,而且还是通过微信的自定义的协议进行传递通信,所以按照一般的手段,很难获取到这个值。缺失key值,就无法获取到图文的点赞数以及阅读数,反过来说,只要解决了获取key参数的问题,那么这个获取点赞数以及阅读数的

2016-01-25 00:15:59 18754 2

原创 【知乎问答】为什么很多看起来不是很复杂的网站,比如 Facebook 需要大量顶尖高手来开发?

问题某知乎下的问题:为什么很多看起来不是很复杂的网站,比如 Facebook 需要大量顶尖高手来开发?答案因为他们仅仅是看起来不复杂……举个现实中的例子: 收银员干的工作不复杂吧,简单的收钱、找钱两个动作,然而就是这么简单的工作一旦在顾客多的情况下,也会变得十分复杂。现在可以类比下,Facebook的服务器就是收银员,而用户就是顾客。而访问Facebook的顾客可是成千万上亿的。如果要说的稍微深入

2016-01-05 14:39:30 2629

原创 【懒程序员的日常】接口文档绝对是个混账!

在多人团队前后端配合协作作业中,一份良好的接口稳定可以使前端以及后端开发人员通畅地进行并行研发。在需求制定后,后端人员投入编码工作前,需要做好接口设计,并整理成接口文档,以便前端人员开展后续工作。然而在实际的作业当中,由于需求的不确定性以及研发工作的任务变更等不确定因素,之前制定好的接口文档往往无法实时地与实际的代码同步,从而导致了前端人员与后端人员的工作脱轨。诚然,编写接口文档,既能保证前端工作人

2015-12-26 23:37:41 1303

原创 【事务系列一】事务概念与特性

在Java的编程开发中,我们会利用各种数据资源(比如:数据库、文件系统)来保存系统状态。当程序进入业务逻辑处理,这些数据资源或多或少都会进行一定程度的操作。为了保证数据操作后的正确性以及完整性,因此引入事务这一个概念来进行管理。 在这里,需要举一个例子来辅助理解。 A向B借款,在借款前A签下了借条,此时B获取借条后,前行银行去取钱,但是银行今天没有开,此处的银行异常造成了A与B的债务关系建

2015-12-26 12:22:39 890

原创 关于项目的构建与打包

在项目的部署当中,难免牵涉到开发环境、测试环境以及生产环境的切换,如果缺失一套良好的项目构建以及部署方案,那么我们很容易因为反复修改配置文件而酿成开发事故,毕竟线上和测试的配置很多不同。所以拥有一套比较良好的项目构建和部署方案是必须的。目前构建项目是用Maven来进行的。Maven提供Profile功能来满足项目的可移植性构建的需求。以下简单说下我的项目的配置。该工程采用了Maven进行构建,同时采

2015-12-07 18:28:29 3135

原创 设计模式系列三——Decorator模式

Decorator模式,中文称之为装饰者模式。我们可以用游戏的角色与装备的方式去理解这个模式。角色A裸装来到了新手村,此时他的攻击只有一个普通攻击。角色A出村奋斗升级打BOSS,终于迎来人生的第一张蓝装的图纸。然后A自然的蹭的一下把这张图纸给做了出来。做出来的装备随着职业的不同可以分为法师装备和战士装备,而且居然还有攻击技能的加持。角色A肯定就直接穿上去了,这时候的A就可以使用法师的攻击...

2015-11-16 15:13:59 352

原创 设计模式系列二——Builder模式

Builder模式,如果用中文来表述的话,我更愿意称之为建造者模式。这是一个很贴合它名字的模式。我们可以想象我们正在玩模拟城市的游戏。这个城市在刚刚开始发展的时候,只是一个小村庄,随着小村庄的发展,我们耗费了两个人口去建了两个工人,于是一个工人去建造小屋,另一个则去开发农田。小村庄慢慢发展,所需要修筑的建筑越来越多,那么作为管理者的我们需要怎么做呢?作为睿智的管理者,...

2015-11-14 18:10:12 540

空空如也

空空如也

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

TA关注的人

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