自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

思码堂

把所思所写与你分享

  • 博客(21)
  • 收藏
  • 关注

原创 Dubbo RPC MockServer设计与实现

一、MockServer需求可界面配置RPC接口的请求和响应数据调用方代码只需很少的改动就能使用RPC Mock可平滑的切换API版本预发和生产环境忽略Mock二、设计目标代码极少侵入:调用方代码只需很少的改动(例如增加一个注解),就能使用Mock调用隔离:Mock调用和真实调用隔离环境隔离:预发和生产环境下忽略掉Mock易用性:提供webUI配置API版本切换:支持依赖...

2019-04-22 04:15:55 2744 1

原创 小技巧:如何使用Java API从Maven仓库下载Maven Artifact

最近在开发中遇到需要从Maven仓库下载Maven Artifact(GAV)的场景,遂有此篇小文。目的可以在应用程序中根据Maven坐标(GroupID,ArtifactID,Version,即GAV)从maven仓库中下载maven jar到本地。Eclipse Aether项目Eclipse 的Aether项目(Wiki)能够满足这个需求,不止于此,它还能同时下载某个GAV的所有...

2019-04-22 04:09:03 2237 1

翻译 What is Aether

原文:《What is Aether》你是否曾经想过把maven依赖解析机制集成到你的应用程序中,并最终尝试嵌入Plexus和一整个Maven发行版?你是否曾经想过以多线程的方式使用Maven依赖解析机制,但被其中有状态的单例程序弄得很困惑?你是否曾经希望更多地控制Maven计算解析依赖关系图的方式,比如说使用别的策略来解决冲突或者检查一些中间阶段的依赖图?Did you ever wa...

2019-04-22 04:05:51 678

原创 Linux 如何保护重要进程不被OOM Killer干掉

最近在预发环境上有一个重要的进程隔三差五就被OOM Killer干掉(通过查看CentOS系统日志/var/log/messages揪出来是OOM Killer干的)。该机器上跑着各种进程,内存是有些吃紧。这当然可以通过加大机器内存或者迁走某些进程来解决。但一时又没有多余的机器和内存资源,只能自己动手丰衣足食了(资源短缺确实是更能激发人去思考更优更节省的方案)。现在我要解决的是如下两个问题:为...

2019-04-04 09:49:57 4456

原创 Skywalking容量规划

前言Apache skywalking 是一个面向分布式系统的APM(应用性能监控)工具。专门为微服务,云原生和基于容器的架构而设计。其底层是一个分布式追踪系统。Skywalking项目地址本次容量规划基于压测结果来进行估算。1. 压测用例模拟1000个用户并发,压测5分钟。TPS 3400/s (这比较接近生产环境的TPS了),每次请求产生20个span。监控压测期间skywalk...

2019-04-04 02:56:25 4655 2

原创 小技巧:Linux实用命令之cut, sort, uniq

1. cutcut - remove sections from each line of filescut 可以对文件中的每一行进行裁剪。常用选项:-d : 指定分隔符 ,与-f一起使用-f : 用-d将文本分隔成一段一段后,-f用来取出第几段-c : 指定取出第几个字符,也可以指定从第N个到第M个按区间取示例1 查出last中有哪些人登录过root@~$ lastroo...

2019-04-04 02:49:01 1145

原创 小技巧:利用HC fluent API 优雅地使用Apache HttpClient

Apache HttpClient功能强大,于http客户端操作有非常丰富的语义的支持。但是要在高并发、大流量的生产环境中健壮地使用好Apache HttpClient,还是要考虑很多场景的,比如使用连接池,使用代理,重试策略等等,这些都需要用各种API做各种繁琐的配置。我在使用过程中也尝试自己再封装一层,但考虑到自己的遇到的场景不多,可能封装的时候考虑不够充分,没有按照最佳实践来做。还是先找找别...

2019-03-21 06:08:13 2802 3

原创 JVM调优实战:解决CMS concurrent-abortable-preclean LongGC的问题

1. 背景1.1 多个业务线的应用出现LongGC告警最近一段时间,经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。2. 分析前的一些JVM背景知识回顾2.1 JVM堆内存划分新生代(Young Generation)新生代内被划分为三个区:Eden,from survivor,to survivor。大多数对象在新生代被创建。Minor GC针对的...

2019-03-20 07:05:42 10626 5

原创 sonarqube+jenkins实现持续CodeReview

sonarqube+jenkins实现代码持续Review介绍篇SonarQube 介绍SonarQube 是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测, 如 Java、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面:检查代码是否...

2018-05-31 16:04:26 21394 1

原创 缓存刷新术之保证数据一致性

1. 概述在上一篇文章《缓存读取术之防止缓存雪崩》里我们解决了引入缓存后读数据的问题,本文分析写数据要考虑的问题。数据变更时是更新缓存还是淘汰缓存?是先写DB再写Cache,还是先写Cache再写DB?如何考量?另外,如果写DB成功了但写Cache失败了,数据就会不一致,如何解决?下面逐一探讨。 本文讨论的缓存更倾向于分布式缓存,不过解决方案的思路对本地缓存而言也是大致适用的...

2018-03-03 00:12:48 6257 7

原创 缓存读取术之防止缓存雪崩

概述如今许多互联网应用系统都重度依赖缓存来提高读操作的性能,对于这些系统来说如何正确地使用缓存至关重要。本文从缓存读取这个视角来讨论缓存架构设计上的一些思路。重点关注如何防止缓存雪崩。1. 缓存读操作引入缓存后,读数据的流程如下:(1)先读缓存,如果缓存中有数据(hit),则返回缓存中的结果;(2)如果缓存中没有数据(miss),则回源到database获取,然后把结果...

2018-02-14 23:59:46 6815 5

原创 快速定位生产故障问题-JVM进程CPU占用率高于100%

前言 古语有云:人在江湖漂,哪有不挨刀。 这几年作为技术leader处理过的线上紧急问题,掐指一算应该有不下10次吧(说多了都是泪啊~~)。所以挡刀救火也是leader的必备技能!本文主要分享遇到“JVM进程CPU占用率超100%”时如何快速定位原因。1. 生产故障-JVM进程CPU占用率高于100%某日,运维同学反馈生产环境有故障,某个JVM进程CPU负载一直居高不下。登入...

2018-02-12 11:43:56 9875 9

原创 单元测试系列三-基于Springboot+Junit+Mockito做单元测试

前言前面的两篇文章讨论过《为什么要写单元测试,何时写,写多细》和《单元测试规范》,这篇文章介绍如何使用Springboot+Junit+Mockito做单元测试,案例选取撮合交易的一个类来做单元测试。单元测试前先理解需求要写出好的单测,必须先理解了需求,只有知道做什么才能知道怎么测。但本文主要讲mockito的用法,无需关注具体需求。所以本节略去具体的需求描述。隔离外部依赖...

2018-02-09 19:28:16 7701 3

原创 单元测试系列二-单元测试规范(适用于Java)

技术选型UT框架:JUnit (4.12)Mock框架:Mockito (1.10.19)文件、类与方法命名规范源文件目录src/main/javaUT文件目录src/test/javaUT类命名规范 假设源类的全限定名为 com.yourcompany.api.Matching源文件路径 src/main/java/com/yo...

2018-02-09 19:12:30 6644

原创 单元测试系列一-为什么要写单元测试,何时写,写多细

一、前言 半年前在公司团队内推动单元测试的落地,略有一些心得,记录在此。如有不同观点或建议,请在评论区留言,一起探讨。定义:单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。 单元测试从长期来看,可以提高代码质量,减少维护成本,降低重构难度。但是从短期来看,加大了工作量,对于进度紧张的项目中的开发人员来说,可能会成为不少的负担。本文从为什么要写单元测试,...

2018-02-09 19:04:37 17630

原创 Git快速入门-常用命令之交响乐篇

Git快速入门系列文章 - Git快速入门-安装配置篇 - Git快速入门-常用命令之独奏篇 - Git快速入门-常用命令之交响乐篇 - Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库1.概述Git入门系列第三篇,介绍日常开发中,与团队其他成员协作时常用的命令。2.Git交响乐2...

2018-02-08 14:01:04 2630 2

原创 Git快速入门-常用命令之独奏篇

Git快速入门系列文章 - Git快速入门-安装配置篇 - Git快速入门-常用命令之独奏篇 - Git快速入门-常用命令之交响乐篇 - Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库1.概述Git入门系列第二篇,介绍日常开发中,假设只有你一个人使用Git时常用的命令。2. Git初始化...

2018-02-08 14:00:44 6504 4

原创 Git快速入门-安装配置篇

Git快速入门系列文章 - Git快速入门-安装配置篇 - Git快速入门-常用命令之独奏篇 - Git快速入门-常用命令之交响乐篇 - Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库1.概述Git入门系列包括git客户端的安装配置,日常开发中常用命令。本文是第一篇,介绍git客户端的安装,配置...

2018-02-08 13:57:03 1746

原创 Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库

Git快速入门系列文章 - Git快速入门-安装配置篇 - Git快速入门-常用命令之独奏篇 - Git快速入门-常用命令之交响乐篇 - Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库 注:本文基于git version 2.13.5 版本进行演示1. 概述Git入门系列第四篇,基于场...

2018-02-08 11:42:04 11543

原创 用SWT可视化工具快速开发GUI应用

一、开发背景介绍:     1. 要开发什么工具?    最近和公司里的几位同事凑钱买了个的士发票打印机(报销用,你懂的^_^),内容可自己写,比如金额,时间,路程等等。发票内容的输出位置和文字样式要跟真实发票的一样,否则容易穿帮(嘻嘻...)。但位置、样式要手工调,非常麻烦。所以如果有个工具能够帮助我们调好位置和文字样式的话,那就方便省事多了!!    2. 为什么强调要快速开发?

2013-09-02 14:12:30 1830

原创 Java并发编程——this引用逸出("this"Escape)

     并发编程实践中,this引用逃逸("this"escape)是指对象还没有构造完成,它的this引用就被发布出去了。这是危及到线程安全的,因为其他线程有可能通过这个逸出的引用访问到“初始化了一半”的对象(partially-constructed object)。这样就会出现某些线程中看到该对象的状态是没初始化完的状态,而在另外一些线程看到的却是已经初始化完的状态,这种不一致性是不确定的...

2013-08-30 16:42:22 8947 10

空空如也

空空如也

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

TA关注的人

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