自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我与commons-lang3系列——RandomUtils

编程过程中经常会有产生随机数的需求,java.util.Random是我经常使用的,举例如下:// 固定seedRandom t = new Random(100);for (int i = 0; i < 5; i++) { System.out.println(t.nextInt(100) +" ");}// 以系统时钟作为seedRandom timeRandom...

2019-05-12 22:58:31 2147

原创 java.util.Date 和 java.sql.Date 傻傻分不清楚

一直没有搞清java.util.Date 和 java.sql.Date 的区别,总结一下java.util.Date 和java.sql.Date的关系java.sql.Date是继承java.util.Date的类,看看其在jdk里的源码解释A thin wrapper around a millisecond value that allows JDBC to identify...

2019-05-11 21:38:27 500

原创 ArrayList源码解析&ConcurrentModificationException

最近在写一个sdk的时候,没有考虑到多线程环境下,忽略了对同一个list存在同时进行排序的case,造成线上会出现ConcurrentModificationException的错误,因此抽个时间看了一下ArrayList的源码,总结了几个比较有意思的地方。ArrayList实现了几个接口?List&lt;E&gt;, RandomAccess, Cloneable, java.io.Se...

2018-08-22 19:35:44 241

原创 如何在命令行运行单元测试

在开发过程中,我们经常要写一些单元测试,但是有一些单元测试不可避免会依赖到开发环境的服务,而这些服务又不能从你本机访问,只能发布到开发机上,就需要通过命令行运行单元测试。例子新建一个maven工程RunUT, 在pom.xml加入junit的依赖:&lt;dependency&gt; &lt;groupId&gt;junit&lt;/groupId&gt; &lt;a...

2018-07-17 17:56:59 7127

原创 记录一次诡异的数据库查询慢的调查过程

最近的一次上线突然发现系统的某些数据库查询偶尔会超过300ms, 正常的情况都只有100ms,我花了一段时间开始调查原因,这篇文章记录了整个过程。项目背景项目提供了一个支持水平扩展的功能,扩展主要是基于扩展多数据库来分散压力,我就是在这个大场景下要求新增一些数据库来环境线上的压力。线上分为南方和北方两个大机房,80%的流量都在北方机房线上流量是写多读少,写大概是读的10倍量左右本次修改是为了解决北...

2018-06-14 21:05:26 762

原创 带权重值的随机选择算法

一个新的功能上线都会走灰度的过程,万一新功能有问题,则会导致线上的大量的报错,甚至不可用的严重情况。比如我们现在本来接入了2个短信渠道去发送短信,现在接入好了第三个渠道,如果我们直接把代码上了,那么万一这个第三个渠道的代码写的有问题,那么意味着我们有三分之一的短信发送不出去,后果非常严重。解决办法我们可以为每个渠道设置一个权重值,短信发送时,按照权重比例随机选择短信渠道。初次上线第三个渠道时,可以...

2018-06-11 17:13:28 4154 3

原创 Guava Cache 分析总结

最近突然比较好奇本地内存cache该如何实现,guava提供的cache应该是其中的佼佼者,因此花一些时间记录一下所学习到的东西,看看大神们是如何实现这个问题。由于cache里涉及了很多功能,这篇文章只会记录其中我关心的功能。源码结构我下载的guava的版本为25.0-jre,包名为com.google.common.cache,这个包里的东西真不少,都是带cache结尾,一时半会有点迷,只是实现...

2018-06-10 17:47:30 2776

转载 【转载】那个年薪五十万的程序员连优衣库都买不起了

转载自:http://blog.sina.com.cn/s/blog_be066ad70102y715.html对于公司不到北京平均工资的小编来说,年薪五十万,简直就是天文数字好嘛。但就是这么一个收入较高的程序员,在早9晚10甚至更晚的工作时间,肚子日渐突出,准备换上宽松的夏装时,发现自己竟然连优衣库都买不起了。                                           ...

2018-06-05 16:17:42 1430

原创 跨域问题学习记录 -- CORS解决的2种方法

接着上一篇文章,解决跨域有很多办法,我选择的是CORS的办法,对于Spring Mvc来说,已经内置了这个功能,在Spring boot种新增一个配置如下:@Configurationpublic class CORSConfiguration { @Bean public WebMvcConfigurer corsConfigurer() { return ne...

2018-06-04 20:51:44 392

原创 从零使用Maven搭建SpringMVC工程-IDEA开发工具

前段时间的工作中一直使用spring boot开发,spring boot本身确实开发很快,自动配置确实帮我们省去了不少的麻烦,但是这也是一把双刃剑,如果你不是从spring mvc转过来的,很多的细节就无从了解,真正出问题的时候也会无从下手,因此我打算从零开始用maven建一个spring mvc的工程,这篇文字就记录了操作的过程。新建maven工程打开idea, 新建一个maven工程,工程名...

2018-06-03 22:40:29 843

原创 跨域问题学习记录 -- 初识跨域

最近工作中遇到了跨域问题,其实这个名词我一直都能听别人提起,但是确实没有仔细研究过,因此我会通过几篇系列文章,记录下我学习的过程。今天的这篇文章主要从以下2个方面来介绍:为什么会有跨域?单机上重现跨域问题为什么会有跨域跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域...

2018-05-30 19:08:36 449

原创 SpringMvc 参数绑定自定义对象

springmvc我们经常在写controller一般都接受两种方式,一种是form提交,一种是json提交,下面就来介绍如何在这两种方式中将提交的数据自动绑定到自定义对象中。json提交这个比较简单,在网上搜一下一大把,这里就简单放一段代码:@RequestMapping("/testjson")public String testjson(@RequestBody User user){ ...

2018-05-29 20:10:30 3972 2

原创 JAVA主线程Sleep, Eden堆还在增长?

今天在JAVA群里突然有人问了一个问题:问个问题,我启动一个主线程一直sleep, 通过jconsole监控,几个小时过后,发现内存占用依旧缓慢在上涨,请问是什么导致的呢?其实我之前也发现在排查JVM问题的时候,通过jvisualvm跟踪的时候也发现了这个问题,当时是一个web工程后,启动后,没有任何流量也没有任何定时任务,但是Eden区的内存一直在缓慢的涨,这是为什么呢?JVM内部线程首先要纠正...

2018-05-18 15:16:13 1733

原创 一切从“零”开始

背景昨天匆匆从前公司办完离职,都没来得及和昔日的小伙伴一一道别,因为是不太敢,前公司最近人员动荡,为了不影响军心,我只和几个坐在旁边的同事打打招呼就匆忙离开,今天就来新公司报道了。为什么要跳槽?回想起来,我是从6个月前就觉得要走了,本来当时我们的业务一片大好,但是由于国家的一纸文书,整个行业都动荡,而我们的业务也几乎停滞,直接导致我们在长达好几个月的时间里没什么事情干,只能不断优化现有的系统,我是...

2018-05-17 20:59:54 142

原创 Spring Boot配置文件加密的快速指南

工程中的配置文件如果把数据库的用户名密码写成明文的话是一件很危险的事情,之前也看见网上说可以对密码进行加密,用的时候再解密,因此今天我就尝试如何在spring boot 中的项目中实现关键信息的加密解密,并记录下来。jasyptJasypt is a java library which allows the developer to add basic encryption capabiliti...

2018-05-15 14:31:55 6553

原创 Spring Boot应用中监控tomcat,druid连接池状态

这篇文章记录一下如何在spring boot中监控tomcat,druid连接池状态,之前我写过一篇文章介绍过类似的,具体背景和监控数据的收集部分这里就不赘述,可以参考在SPRING BOOT应用监控线程池的状态背景随着流量的增大,我们急需监控各个微服务部署的tomcat和数据库连接池状态,以此来了解线上连接池配置是否满足要求,不存在性能上的问题。数据收集JMX再介绍怎么监控连接池状态之前,先来了...

2018-05-12 20:02:31 7699 2

原创 微服务之分布式跟踪系统(springboot+pinpoint)

这篇文章介绍一下在微服务(springboot开发)的项目中使用pintpoint监控的过程及效果展示。背景随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪,而通过调研多个开源APM工具后,最终我们选择了pintpoint。github地址是:pinpoint, 选择它有4个方面原因:pinpoint是基...

2018-05-10 17:47:18 10811

原创 HashMap的get方法传入不一致类型的key?

今天同事向我抱怨了一个他最近使用hashmap时遇到的一个诡异问题,他的代码逻辑大概如下:Map&lt;Long, String&gt; map = new HashMap&lt;&gt;();map.put(70l, "dd");System.out.println(map.get(70));输出结果是什么?他预期的是“dd”,  但是实际是null, 对于java的初学者来说这确实是一个很...

2018-05-10 13:37:15 836

原创 GRPC学习之路(5)——protobuf解码过程解析

接着上一篇文章的例子,本篇主要研究protobuf如何从字节流中解析并生java对象的。之前的文章也介绍过如何从文件中读取出一个对象的:Message testMessage = Message.parseFrom(new FileInputStream("testmessage.txt"));通过阅读parseFrom这个方法的源码,将它的流程简要概括如下:从InputStream中新建Code...

2018-05-10 13:06:06 2829 1

原创 GRPC学习之路(4)——protobuf编码过程解析

上一篇文章通过一个例子大致了解了protobuf的作用,我曾经打开那个存储对象编码后的文件,里面像是有一团乱码:这篇文章主要研究protobuf是如何编码的,同时你也能感受到protobuf为什么更快更省带宽。Base 128 Varints在开始研究过程之前,必须先要了解Varints,Varints提供了一种办法能让一个或者多个字节代表整型变量,通常在java中一个int需要占用4个字节,即使...

2018-05-09 19:46:21 2067 1

原创 GRPC学习之路(3)——protobuf的作用

上一篇文章介绍的是nginx做为负载均衡与后端grpc的集成,没有继续深入下去,因为这个需要线上真正实践才会有更多的感悟,之后入职后有体会的话再继续写吧。刚好我也比较好奇protobuf到底和grpc是个什么关系,protobuf在整个rpc的过程中起的是什么作用,所以我之后的几篇文章都会是关于protobuf的。我还是从网上找了几个网上的资料,看看前人的研究成果:proto3官网 毫不犹豫推荐官...

2018-05-08 18:41:15 7568

原创 GRPC学习之路(2)——尝试与Nginx集成

作为服务,线上的版本肯定是多实例的版本,这就带来了一个负载均衡的问题,在网上搜了搜资料,有用haproxy做的,由于我对nginx更熟悉一些,因此专注于找这方便的资料,之前的老版本的nginx还真不支持grpc,不过从1.13.10开始支持了,所以赶紧下了一个尝尝鲜,附nginx下载地址. 另外我也在网上找了一些相关资料参考:grpc模块的使用说明grpc模块的详细APIgithub上一个实际使用...

2018-05-07 18:52:08 2112

原创 GRPC学习之路(1)——初次上手

由于新工作中要使用grpc框架,之前也接触过一些,但是没有静下心来学它,加之网上对于这个方面的资料确实比较少,而且没有书,所以记录下来加深一下印象。我主要参考的资料如下,当然也可以参考中文版的,但是感觉英文的还是更原汁原味吧。grpc的官网gRPC 基础: Java至于什么是grpc?它有什么特点之类的问题就不介绍了,官网及csdn的博客里有很多赘述。这里只记录一下如何上手做的一个简单的grpc服...

2018-05-06 21:15:09 2563

原创 在spring boot应用监控线程池的状态

今天在公众号中看到了一篇教你如何监控 Java 线程池运行状态 ,才记起来我之前也做过一样的事情,但是没有记录下来,今天有空记下来。我会首先介绍一下监控的背景,监控方式,实例代码及效果3个部分介绍。背景废话不多说,做这个监控的背景很简单,我们的项目都是以spring boot框架为基础开发的,代码里所有的异步线程都是通过@Async标签标注的,并且标注的时候都是指定对应线程池的,如果不知@Asyn...

2018-05-05 11:27:26 15003

空空如也

空空如也

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

TA关注的人

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