自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

转载 ThreadLocal剧集(一)

总述最近做了一个日志调用链路跟踪的项目,涉及到操作标识在线程和子线程,线程池以及远程调用之间的传递问题。最终采用了阿里开源的TransmittableThreadLocal插件(https://github.com/alibaba/transmittable-thread-local)完美解决。在分析源码以及中途修复bug的过程中,被ThreadLocal搞得晕头转向。好在静下...

2019-03-02 17:54:00 128

转载 Spring-web初始化流程简图

转载于:https://www.cnblogs.com/Kidezyq/p/10452536.html

2019-02-28 19:10:00 161

转载 记一次升级Tomcat

总述JDK都要出12了,而我们项目使用的jdk却仍然还停留在JDK1.6。为了追寻技术的发展的脚步,我这边准备将项目升级到JDK1.8。而作为一个web项目,我们的容器使用的是Tomcat。看了下Tomcat版本与JDK版本之间的兼容关系http://tomcat.apache.org/whichversion.html以及网上所传的各种JDK1.8和Tomcat7不兼容的问题...

2019-02-28 14:47:00 247

转载 Spring-Task思维导图

最近在搞一个定时任务的相关东西,为了方便记忆,这里将知识点总结成一个思维导图。后续也会通过思维导图的方式发布博客。转载于:https://www.cnblogs.com/Kidezyq/p/10444079.html...

2019-02-27 15:36:00 161

转载 2019的第一个工作日

今天是2019的第一个工作日,不知道为啥我总是无法集中注意力来工作。与其在这里东看西看浪费时间,不如写写我2018年的总结以及2019的展望。 如果人的一生是一首歌的话,那么我的2018一定是按了快进键。结婚、买房、装修、办酒......人生中很多重要的事就在下半年短短的几个月内全部完成,对于一向追求安逸的我而言,真的是焦头烂额。为了买房我们掏空了"6个口袋"。面对30年的房贷,...

2019-01-02 16:28:00 76

转载 XSS事件(一)

前言​ 最近做的一个项目因为安全审计需要,需要做安全改造。其中自然就包括XSS和CSRF漏洞安全整改。关于这两个网络安全漏洞的详细说明,可以参照我本篇博客最后的参考链接。当然,我这里并不是想写一篇安全方面的专题。我要讲的是在做了XSS漏洞修复之后引发的一系列事件。超时​ 本地测试的时候随便点了些页面,然后debug跟了下代码未发现任何问题。上线之后用户反馈有的页面打不开,自己去线...

2018-10-27 17:54:00 288

转载 RocketMQ专题2:三种常用生产消费方式(顺序、广播、定时)以及顺序消费源码探究...

顺序、广播、定时任务前插​ 在进行常用的三种消息类型例子展示的时候,我们先来说一说RocketMQ的几个重要概念:PullConsumer与PushConsumer:主要区别在于Pull与Push的区别。对于PullConsumer,消费者会主动从broker中拉取消息进行消费。而对于PushConsumer,会封装包含消息获取、消息处理以及其他相关操作的接口给程序调用Tag...

2018-09-20 09:04:00 362

转载 RocketMQ专题1:入门

RocketMQ入门源码和应用下载​ 这里以RocketMQ的4.3.0版本为例,本地环境为windows10,jdk1.8, maven3.2.1.源码下载地址: http://mirrors.hust.edu.cn/apache/rocketmq/4.3.0/rocketmq-all-4.3.0-source-release.zip应用下载地址: https://www.a...

2018-09-18 19:59:00 127

转载 博客搬家到云栖社区

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。转载于:https://www.cnblogs.com/Kidezyq/p/9660884.html

2018-09-17 10:47:00 112

转载 ActiveMQ专题2: 持久化

AMQ的持久化问题前言​ 前面一篇AMQ专题中,我们发现对于Topic这种类型的消息,即使将deliveryMode设置为持久化,只要生产者在消费者之前启动。消息生产者发布的消息还是会丢失。这是符合JMS规范的。当然,作为一个如此活跃的开源消息中间件,在实现JMS基本规范之后,必然会通过扩展的方式来实现Topic的持久化订阅。而所谓的deliveryMode持久化和订阅持久化还是...

2018-08-30 19:45:00 153

转载 ActiveMQ专题1: 入门实例

序好久没有写博客了,最近真的是可以说是忙成狗了。项目的事和自己的终身大事忙得焦头烂额,好在是一切都是越来越好了......趁着项目今天唯一的一点喘息时间,加上项目开始接触到的mq,开始写一篇amq的入门专题AMQ入门实例下载导入源码:下载地址: http://activemq.apache.org/activemq-5155-release.html (可以同时下载安装包和...

2018-08-29 19:47:00 103

转载 分布式改造剧集3:Ehcache分布式改造

第三集:分布式Ehcache缓存改造前言​ 好久没有写博客了,大有半途而废的趋势。忙不是借口,这个好习惯还是要继续坚持。前面我承诺的第一期的DIY分布式,是时候上终篇了---DIY分布式缓存。探索之路​ 在前面的文章中,我给大家大致说过项目背景:项目中的缓存使用的是Ehcache。因为前面使用Ehcache的应用就一台,所以这种单机的Ehcache并不会有什么问题。现在分布式部...

2018-06-29 16:00:00 125

转载 For update带来的思考

For update or not起源​ 之所以想写这个专题,是因为最近在做一个抢占任务的实现。假设数据库很多个任务,在抢占发生之前任务的状态都是FREE。现在假设同时有一堆抢占线程开始工作,抢占线程会查找数据库中状态为FREE的任务,并且将其状态置为BUSY,然后开始执行对应任务。执行完成之后,再将任务状态置为FINISH。任何任务都是不能被重复执行的,即必须保证所有任务都只能被一...

2018-06-28 16:48:00 117

转载 分布式改造剧集2---DIY分布式锁

前言:​ 好了,终于又开始播放分布式改造剧集了。前面一集中(http://www.cnblogs.com/Kidezyq/p/8748961.html)我们DIY了一个Hessian转发实现,最后我们也留下了一个展望方向:可以实现一个管理界面管理节点,实现简单的服务治理的功能。这一集我们接着继续DIY分布式锁。第二集:分布式锁DIY探索之路​ 由于业务互斥的需要,当前项目中实现了...

2018-05-01 22:04:00 109

转载 CentOS探索之路3---安装python3

安装Python3总述​ 一般来说Linux类型的操作系统都会自带安装python,但是系统默认安装的python都是2.x的版本。而现在一般使用的是python3.x版本,相比于python2.x版本,python3.x教之前版本有较大升级,且不向下兼容python2.x版本。因此我们需要安装python3.x版本。具体安装步骤安装依赖包: 直接执行下面的命令: ...

2018-04-25 14:49:00 95

转载 分布式改造剧集之Redis缓存踩坑记

Redis缓存踩坑记​前言​ 这个其实应该属于分布式改造剧集中的一集(第一集见前面博客:http://www.cnblogs.com/Kidezyq/p/8748961.html),本来按照顺序来的话,不会这么快发布这篇博客。但是,因为这个坑让我浪费太多时间。这个情形和一年前我在另一个项目中试图优化mybatis时简直完全一致,即使拿出了源码来debug还是解决不了这个问题,网上搜...

2018-04-25 11:47:00 299

转载 CentOS探索之路2---使用rpm安装JDK

使用rpm安装jdk​ 在前一Linux探索文章中http://www.cnblogs.com/Kidezyq/p/8782728.html,有关于通过yum指令安装原生OpenJDK的命令。当时有大神给出评论,建议最好安装sun的JDK。网上搜索了下JDK与OpenJDK的区别,大致上可以认为OpenJDK是JDK的精简版本。具体区别可以参照这个知乎问题:https://www.zh...

2018-04-24 19:14:00 71

转载 三和大神

源​ 前几天微信群里一个朋友突然给分享了一篇公众号文章,标题是《全中国最堕落的地方》(原文链接https://mp.weixin.qq.com/s/2OeQSqReSONIeu2l64fjMg)。讲的是深圳龙华三和的一群人,他们拒绝奋斗,拒绝改变。他们活着只是为了满足最原始的欲望,他们用自己的慢对抗着深圳的快。​ 开始看完这篇文章的时候我的挺震惊的。一是今年是我来到深圳的第五个年头,...

2018-04-11 23:51:00 510

转载 Linux探索之路1---CentOS入坑笔记整理

前言上次跟运维去行方安装行内环境,发现linux命令还是不是很熟练。特别是用户权限分配以及vi下的快捷操作。于是决定在本地安装一个CentOS虚拟机,后面有时间就每天学习一点Linux常用命令。作为一个小白正式入坑CentOS了,于是就有了CentOS摸索系列。后续我会根据自己的摸索情况不间断更新。安装安装VMWare WorkStation:直接百度搜索下载安装即可,我这...

2018-04-10 20:49:00 120

转载 分布式改造剧集1

背景介绍​ 我所在的项目组,使用的技术一直是接近原始社会的:jdk1.6 + SpringMVC + hessian + Mybatis,当前最火的中间件技术Redis、MQ是完全没有用到,更别说什么分布式这种高大上的东西了。开始一直以为可能接下来的日子我都会在原始社会中渡过,直到我跳槽到另一家公司。​ 事情总是在最不抱希望的时候出现转机,最近老大指派我牵头做分布式改造。作为技术痴的...

2018-04-08 23:46:00 103

转载 加班有感

​ 生命是一个受锤的过程,成长是被锤扁后的结果。​ 我一直都非常抗拒加班,特别是强制性加班。所以在第一家公司虽然干了三年,一直都不受领导待见。当然我不是那种老油条,啥都不想干,下班就想走。而是我一直觉得时间不够用,不想把所有的时间都花在工作上。保持健康和良好的身材需要时间,学习新的知识需要时间,玩游戏需要时间,看书需要时间,看美剧需要时间,陪女朋友需要时间,陪父母需要时间,看病需...

2018-03-30 00:51:00 125

转载 Spring服务定制

问题总述​ 我们都知道如果使用Spring来进行bean管理的时候。如果同一个接口的实现类存在两个,直接使用@Autowired注解来实现bean注入,会在启动的时候报异常。我们通常的做法是使用@Resource注解来执行bean的名称。不过通过@Resource注解类似于硬编码的方式,如果我们想修改接口的具体实现,必须修改代码。假设我们环境中针对所有接口,都有两套实现,一套在测试环境...

2018-03-20 18:43:00 106

转载 Spring @Transactional踩坑记

@Transactional踩坑记总述​ Spring在1.2引入@Transactional注解, 该注解的引入使得我们可以简单地通过在方法或者类上添加@Transactional注解,实现事务控制。 然而看起来越是简单的东西,背后的实现可能存在很多默认规则和限制。而对于使用者如果只知道使用该注解,而不去考虑背后的限制,就可能事与愿违,到时候线上出了问题可能根本都找不出啥原因。...

2018-03-10 18:10:00 250

转载 Web Service初探

Web Service初探简介​ 简单地说WebService就是一种Web服务,他是一种跨编程语言和操作系统的远程调用技术。WebService的传输依赖于HTTP协议,通过SOAP协议使用XML格式进行数据传输。​ WebService的三要素如下:SOAP (Simple Object Access Protocol): 简易对象访问协议,soap用来描述传递信息的格式...

2018-03-04 09:09:00 113

转载 算法之逆序对

算法之逆序对逆序对问题​ 假设A[1..n]是一个有n个不同数的数组。若i<j且A[i]>A[j],则对偶(i, j)称为A的一个逆序对(inversion)。列出数组{2, 3, 8, 6, 1}的5个逆序对由集合{1, 2, ..., n}中的元素构成的什么数组具有最多的逆序对?它有多少逆序对?插入排序的运行时间与输入数组中的逆序对的数量有什么关系?给出一...

2018-01-29 20:20:00 155

转载 算法之数组和问题

算法题之数组和求解数组和问题​ 加上给定一个数组和值x。设计一个算法使得如果数组中存在两个元素的和为x,则输出两个元素的值组成的数组(不区分先后),否则输出{-1, -1}。​ 分析:最简单的办法,就是依次求每个元素与其他元素的和。这个就是经典的握手问题,不难得出其最坏时间复杂度为: \(\Theta\)(\(n^2\)) 这种指数级别的时间复杂度必然不是我们想要的,直接PAS...

2018-01-29 20:16:00 99

转载 重读算法导论之算法基础

重读算法导论之算法基础插入排序​ 对于少量数据的一种有效算法。原理:整个过程中将数组中的元素分为两部分,已排序部分A和未排序部分B插入过程中,从未排序部分B取一个值插入已排序的部分A插入的过程采用的方式为: 依次从A中下标最大的元素开始和B中取出的元素进行对比,如果此时该元素与B中取出来的元素大小关系与期望不符,则将A中元素依次向右移动​ 具体代码如下:publi...

2018-01-29 20:02:00 130

转载 线程池定制初探

背景​ 我在的公司虽然是移动支付领域的公司。但是我做的业务类似于管理系统,所以一开始写代码的时候没有考虑到数据的量的问题。开始有一个统计页面,大概要统计的数据分为十多个维度,然后每个维度需要考虑十个左右的方面。也就是统计页面轻轻地点击一个查询按钮,要进行100次左右的数据库查询。开始数据量小的时候,查询还能够使用,页面不会超时。到后面数据量越来越大,最大的一张表数据量已经超过1亿。这时...

2018-01-27 01:20:00 63

转载 JVM GC杂谈之理论入门

GC杂谈之理论入门JVM堆布局介绍​ JVM堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor,其中两个Survivor区的大小一致。​ \(堆新生代老年代老年代java堆 = 新生代(Young) + 老年代(Old) = 老年代(Old) +...

2018-01-25 21:42:00 90

转载 java finally深入探究

When---什么时候需要finally:在jdk1.7之前,所有涉及到I/O的相关操作,我们都会用到finally,以保证流在最后的正常关闭。jdk1.7之后,虽然所有实现Closable接口的流,可以通过在try块中定义,从而实现jvm自动关闭输入输出流。但其实在我们需要在代码块返回之前,实现在不管前面的操作是否执行成功,都要执行的某操作A。这时候我们就可以将A放入finally...

2018-01-02 23:25:00 102

转载 Java-String.intern的深入研究

When---什么时候需要了解String的intern方法:面试的时候(蜜汁尴尬)!虽然不想承认,不过面试的时候经常碰到这种高逼格的问题来考察我们是否真正理解了String的不可变性、String常量池的设计以及String.intern方法所做的事情。但其实,我们在实际的编程中也可能碰到可以利用String.intern方法来提高程序效率或者减少内存占用的情况,这个我们等下会细说...

2017-12-30 09:58:00 169

转载 java如何获取一个对象的大小

When---什么时候需要知道对象的内存大小在内存足够用的情况下我们是不需要考虑java中一个对象所占内存大小的。但当一个系统的内存有限,或者某块程序代码允许使用的内存大小有限制,又或者设计一个缓存机制,当存储对象内存超过固定值之后写入磁盘做持久化等等,总之我们希望像写C一样,java也能有方法实现获取对象占用内存的大小。How---java怎样获取对象所占内存大小在回...

2017-12-12 22:36:00 4453

转载 java序列化反序列化深入探究

When---什么时候需要序列化和反序列化:简单的写一个hello world程序,用不到序列化和反序列化。写一个排序算法也用不到序列化和反序列化。但是当你想要将一个对象进行持久化写入文件,或者你想将一个对象从一个网络地址通过网络协议发送到另一个网络地址时,这时候就需要考虑序列化和反序列化了。另外如果你想对一个对象实例进行深度拷贝,也可以通过序列化和反序列化的方式进行。Wh...

2017-12-11 23:00:00 89

转载 Mysql锁初步

存储引擎要了解mysql的锁,就要先从存储引擎说起。常用存储引擎列表如下图所示:最常使用的两种存储引擎:Myisam是Mysql的默认存储引擎。当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD (MYData,存储数据)、.MYI ...

2016-11-08 19:53:00 59

转载 Jetty入门

总述同tomcat一样,jetty也是一个servlet引擎,jetty的神奇之处在于,jetty不仅可以作为一个web应用的容器,它甚至还可以作为一个程序中的插件来通过main函数加载web应用程序本身。Jetty 是一个Web server/servletcontainer, 支持SPDY,WebSocket,OSGi,JMX,JNDI,JAAS。Jetty非常...

2016-10-31 18:54:00 122

转载 最大公约数的算法

算法的原理:  对于辗转相除法:i和j的最大公约数,也就是i和j都能够除断它。换句话讲,就是i比j的n倍多的那个数k(i = j*n + k,即i % j = k)应该也是最大公约数的倍数。所以就能转换成求k和j的最大公约数。同理,对于更相减损术,同样的道理,i比j大的部分也是最大公约数的倍数。代码:   1 /** 2 * 求最大公约数算法汇总 ...

2016-10-18 20:06:00 71

转载 Eclipse中Program arguments和VM arguments的说明

在运行程序的时候,我们一般可以进行run configuration的配置,就比如tomcat源码导入eclipse之后,我们可以发现其运行配置如下:其中Program arguments配置的元素就是我们传入main方法的字符串数组,而VM arguments其实就是我们在程序中需要的运行时环境变量。比如上图中就是指定catalina.home为工程所在的位置。在程序中我们可以...

2016-09-02 09:38:00 905

转载 将struts源码导入eclipse

预制条件和spring源码导入eclipse中一样,下面直接给出导入eclipse的步骤。步骤:1. 下载struts相应版本的源码http://struts.apache.org/download.cgi。我这里下载的是struts-2.3.16-all.zip。下载完成后解压到本地目录。2. struts的源码是通过maven管理的,所以需要下载mavenhttp...

2016-08-31 11:54:00 248

转载 将spring源码导入到eclipse中

前置条件:1. 正确安装jdk,并配置好JAVA_HOME、PATH。(我这里安装的是jdk1.8)2. 正确安装好eclipse。(我的eclipse版本是: Neon Release (4.6.0))步骤:1. 首先去下载spring的源码https://github.com/spring-projects/spring-framework/releases。...

2016-08-31 11:06:00 77

转载 将tomcat源码导入eclipse

前言:写完了socket小应用的原始版本,中间还有好多预想的功能没有实现,在写的过程中也发现了很多问题。因为前面有粗略的看过tomcat实现原理解析,知道tomcat其实也是纯java写的web服务器,而且用的也是socket通信。所以特别想看下tomcat是如何处理这些问题的。主要步骤:1. 去apache官网下载对应的tomcat版本源码(我这里下载的是9.0.0....

2016-08-29 23:34:00 118

空空如也

空空如也

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

TA关注的人

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