自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

借你一秒

沉心静气,平常心,做好小事方成大事。

原创 个人收藏

该文主要收藏一些比较好的,值得再次查看和研究的博客或者文章,免去了浏览器收藏的麻烦。 主要涉及编程语言、数据库、框架、web、Linux等! //-----------------------------------------------------java-----------------...

2015-08-03 18:28:33

阅读数 1979

评论数 6

原创 软件设计的一些原则.md

1. Don’t Repeat Yourself (DRY) 对重复代码进行公共方法提取,进行功能抽象、模板提取和功能最小化等操作。 若在项目中很多的重复代码,意味着程序缺乏设计和抽象,这样的代码显得臃肿,不够简洁、清晰,容易造成改写扩散,不易维护。 2.Keep It Simple, Stu...

2019-12-08 11:46:43

阅读数 21

评论数 0

原创 常用java代码质量检查工具.md

常用扫描工具 PMD-CPD :Copy/Paste Detector (CPD) 代码重复率检测 PMD:分析 Java 源代码,找出潜在的 bug Findbugs :Java bug检查 checkstyle : 固定团队编码风格,固定命名风格以及换行风格等 P3C: 阿里巴巴Java规范...

2019-11-22 22:51:34

阅读数 34

评论数 0

原创 Java如何实现文件变动的监听.md

在Java 7发布的新的IO框架中,除了大家都熟知的 FileVisitor 接口外,还有个 WatchService 接口经常被人忽视掉。 这个类可以让你实时的监控操作系统中文件的变化,包括创建、更新和删除事件。 WatchService 用来观察被注册了的对象的变化和事件。它和Watchabl...

2019-11-20 15:57:48

阅读数 11

评论数 0

原创 shell常用命令.md

1.在某匹配行行的前一行或后一行添加内容 sed -i '/2222222222/a\3333333333' test.txt #某一行后加入什么内容 sed -i '/2222222222/i\3333333333' test.txt #某一行前加入什么内...

2019-11-13 19:05:41

阅读数 29

评论数 0

原创 问题:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?.md

1,3,5元面值若干,凑钱问题 算法思想 假如要计算11元需要的面值数最小,那么,11元减去一张1元或者3元或者5元,即10元,8元,6元分别需要的面值数,取出最小,加上1,即可以得到11元最小的。 所以,n元最小问题,是由n-1元,n-3元,n-5元三种状态里面取到的最优解。 其中计算的递归...

2019-11-09 11:52:45

阅读数 23

评论数 0

原创 培训知识点总结.md

重构的目标 易读 易改 留好扩展点 防护 需要做金字塔防护 测试用例要由关键的冒烟用例和普通用例 测试用例做到测试即文档,测试函数名字就知道要测什么 每个测试的职责要单一 手段 切割上下文 留好扩展点 做好测试保护(多使用MOCK工具。例如数据库可以使用HSQL内存数据库、kafka采用...

2019-11-03 19:35:35

阅读数 14

评论数 0

原创 Git学习入门笔记

1. 集中式VS分布式 集中式:CVS、SVN 速度慢,必须联网,版本库在中央服务器中,使用简单 分布式:Git 速度快,无需联网,安全性高,每个人的电脑都有完整的版本库,中央服务器用来交换大家的改动,分支管理强大,使用较复杂 注: GitHub:免费提供Git存储。提供Git仓库托管服务,...

2019-09-01 20:13:00

阅读数 57

评论数 0

原创 单点登录原理分析及CAS实战

前端需要了解的 SSO 与 CAS 知识

2019-08-08 16:35:07

阅读数 594

评论数 3

原创 一次SPRING声明式事务失效的探讨

楔子 现在在Spring开发过程中使用声明式事务的次数要远远大于编程式事务,这一切都要归功于声明式事务让我们从复杂的事务处理中解脱出来。它会自动帮我们进行获取连接,关闭连接、事务提交、回滚、异常处理等操作。正因为这一切都是Spring自动帮我们完成的,所以我们也更容易掉入一些非常低级的陷阱中。 本...

2019-08-08 13:43:34

阅读数 82

评论数 0

原创 系统运行缓慢,CPU 100%,以及FULL GC次数过多问题的排查思路

对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种: 代码中某个位置读取数据量较大,导致系统内存耗尽,从而导致Full GC次数过多,系统缓慢; 代码中有比较耗CPU的...

2019-08-08 11:12:48

阅读数 95

评论数 0

原创 大量CLOSE_WAIT导致服务不可用的原因解析

1.现象 商旅通服务没有宕机,服务CPU,磁盘,内存,网络均正常,但就是一直不提供服务。 2.定位问题 出现服务不可用时,最重要的是要定位出原因,出于经验考虑,当服务不可用时,优先考虑服务本身的问题。最直接的方法就是查看服务不可用状态下的线程状态。已知商旅通tomcat线程池maxThrad是20...

2019-08-08 09:32:13

阅读数 101

评论数 0

原创 gradle第三方Jar包依赖统一管理

1. 背景 一个gradle的工程中往往包含很多的子工程,每个子工程都有其自己的Jar包依赖。现实情况是各个子工程对jar包的引入都是比较随意的,版本号各式各样,如何统一各个子工程的版本号?统一管理第三方依赖? 版本号统一后,若某个组件有漏洞能够统一升级,能够直观的看到依赖情况等。 2.实现 配置...

2019-08-06 11:28:51

阅读数 259

评论数 0

原创 Vert.x(vertx)入门资料

1.vert.x简介 vert.x 采用类似 Node.js 的 eventloop callback 机制,优势是 Eventloop 是单线程场景下几乎是最快的并发解决方案,但也需要周边生态的支持,比如 DbClient/HttpClient 这些跟 IO 打交道的 API 需要支持异步回调的...

2019-08-02 14:40:46

阅读数 428

评论数 0

转载 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较

前言 在开发服务端软件时,经常需要进行性能测试,一般我采用手写性能测试代码的方式进行测试,那有什么现成的好的性能测试工具吗? 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 详见:性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 ...

2019-07-07 14:29:09

阅读数 380

评论数 0

原创 两个长数字相加

1.编程题目 题目:要实现两个百位长的数字直接相加 分析:因为数字太长所以无法直接相加,所以采用按位相加,然后组装的方式。(注意进位) 2.编程实现 package com.sino.daily.code_2019_6_29; import org.apache.commons.lang3.St...

2019-06-30 10:44:44

阅读数 131

评论数 0

原创 分布式ID生成器

1.背景 公司产品线最初为了快速上线、快速迭代,所使用的ID采用把JDK原生的32位(去掉四个-)或者36位的原始UUID(Universally Unique Identifier)缩短为19位,且不丢失精度的方式。 但是UUID太长而且人类不可读(由大写、小写、数字随机组成),且对数据库性能有...

2019-06-12 22:40:24

阅读数 207

评论数 1

原创 图片轻松转文字-天若OCR

1.楔子 工作中经常需要把图片中的文字、字符转为可编辑的文本? 你还停留在手动敲击的原始社会吗?那就太OUT了 使用图片转文字的OCR软件可以方便的解放生产力 2.天若OCR简介 天若OCR,只有1.4M,但是识别度非常的高,特别的简单易用。 快捷键如下,F4可迅速启动识别: 使用实例: ....

2019-06-03 20:55:57

阅读数 471

评论数 1

原创 获取所有classpath指定包下类的所有子类

1.问题 开发过程中,有时需要找到所有classpath下,特定包下某个类的所有子类,如何做到? 2. 实现 比较常见的解决方案是自己遍历目录,查找所有.class文件。 下面这个方法使用spring工具类实现,简化过程,不再需要自己遍历目录 /** * 获取在指定包下某个cla...

2019-06-03 20:31:08

阅读数 227

评论数 0

原创 spring boot 创建no-web应用

1. 问题 不是所有的Spring应用都必须是web应用(或web服务)。如果你想在main方法中执行一些代码,但需要启动一个Spring应用去设置需要的底层设施,那使用Spring Boot的SpringApplication特性可以很容易实现。 spring boot绝大多数用于web应用,但...

2019-06-03 20:01:02

阅读数 125

评论数 0

原创 Springboot启动不检查JPA的数据源配置

1.问题 有时我们使用spring boot ,在依赖中配置了spring data jpa的依赖,此时spring boot启动时会自动检测数据源的配置,如果没有则报无数据源的错误。 但是这个依赖必须要有,因为代码需要根据一些条件选择是否启用数据源,则么办? 2.方案 在SpringApplic...

2019-06-03 19:51:23

阅读数 767

评论数 0

原创 nginx配置ngx_http_sub_module

前言 nginx的ngx_http_sub_module模块,可以用于修改网站响应内容中的字符串,如过滤敏感词。第三方模块ngx_http_substitutions_filter_module,弥补了ngx_http_sub_module的不足,可以采用正则表达式替换。 安装ngx_http_s...

2019-05-29 22:59:44

阅读数 479

评论数 0

原创 一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,...

2019-05-20 15:14:14

阅读数 200

评论数 0

原创 springboot 修改启动时默认加载application.properties文件以及加载指定配置文件

1.前言 在项目中遇到这样一个问题,A工程依赖于B工程(jar包依赖),A、B均采用springboot开发,且都有application.properties文件。在A工程启动时,加载的竟然是B工程的application.properties文件,而非我们想要的A工程的application....

2019-05-15 14:04:04

阅读数 2184

评论数 0

原创 Jenkins自动构建部署项目

1. 楔子 在实际开发中,经常需要编译、静态代码检查、自动化测试、打包、部署、启动等一连串重复机械的动作,浪费时间、而且容易出错,而Jenkins就是专门Continuous integration(CI)/ Continuous Deploy(CD)开源工具,本文简单介绍Jenkins的使用。 ...

2019-05-08 20:02:35

阅读数 344

评论数 0

转载 Spring Cloud入门教程

一个非常好的Spring Cloud入门教程系列。推荐下: Spring Cloud入门教程系列

2019-04-29 19:53:38

阅读数 218

评论数 0

原创 logback配置实例

logger和appender的关系 root是根logger,所以他两是一回事;只不过root中不能有name和additivity属性,是有一个level。 appender是一个日志打印的组件,这里组件里面定义了打印过滤的条件、打印输出方式、滚动策略、编码方式、打印格式等等。但是它仅仅是一个...

2019-04-28 16:44:38

阅读数 122

评论数 0

转载 看完这个不会配置 logback ,请你吃瓜!

之前在 日志?聊一聊slf4j吧 这篇文章中聊了下slf4j。本文也从实际的例子出发,针对logback的日志配置进行学习。 logack 简介 logback 官网:https://logback.qos.ch/ 目前还没有看过日志类框架的源码,仅限于如何使用。所以就不说那些“空话”了...

2019-04-28 16:37:17

阅读数 104

评论数 0

原创 免费开源ETL工具KETTLE

1.ETL概念 ETL:Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。 ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。...

2019-04-25 17:01:08

阅读数 711

评论数 0

原创 linux上查看java最耗时的线程信息

找到JAVA进程pid ps -ef|grep java或则jps -mlv 找进行下耗时的线程TID 使用top -Hp pid可以查看某个进程的线程信息 -H 显示线程信息,-p指定pid top -Hp 10906 查看最耗时的 TID即线程id printf "%x\n&q...

2019-04-25 11:00:05

阅读数 517

评论数 0

原创 Java 枚举Enum理解

1.楔子 枚举能继承别枚举吗?枚举能继承其他类吗?枚举能实现接口吗?枚举能被其他类继承吗? 本文就是要探讨这些问题。 2. 准备 本文需要使用到反编译,请自行安装Jad(JAva Decompiler)反编译工具。由于该工具最新的版本也只支持Java 4,不支持Java 5,所以能够很好的保留jd...

2019-04-24 17:32:20

阅读数 78

评论数 0

原创 Java中double转BigDecima导致精度损失

1.楔子 服务中如下的代码出现了诡异的不相等问题? 最后发现是double转bigDecimal时精度损失导致。代码和现象如下: @Test public void doubleToDecimal() { double amountDouble = 16.67; ...

2019-04-22 14:03:30

阅读数 245

评论数 0

原创 JProfiler性能分析工具

1.楔子 jprofiler9.2是一款非常好用且功能强大的跨平台java必能分析工具,使用它可以有效地对JAVA程序的CPU、内存使用情况进行监控行装,同时还可以对JAVA程序的性能瓶颈进行分析。 主要功能 本地会话实时分析模式 远程会话实时分析模式 离线分析模式 快照比较 查看HPROF快照...

2019-04-19 16:27:41

阅读数 508

评论数 0

原创 spring boot中restfull api版本控制

1.楔子 我们就是设计一套基于http协议的业务接口,但是随着时间变迁,业务的变化,或者我们协议本身的优化,都有可能要改变之前存在的接口。这时候给所有接口进行版本管理就显得很重要了,比如某个添加用户的接口,由于业务发展很大,接口的字段属性变化很大,只能重新定义一个新的接口,由 /v1/user/a...

2019-04-18 16:47:20

阅读数 771

评论数 0

原创 Spring Boot 对多线程支持-提高程序执行效率

1.楔子 在我们的系统中,经常会处理一些耗时任务,自然而然的会想到使用多线程,JDK给我们提供了非常方便的操作线程的API,为什么还要使用Spring来实现多线程呢? 1.使用Spring比使用JDK原生的并发API更简单。(一个注解@Async就搞定) 2.我们的应用环境一般都会集成Sprin...

2019-04-17 22:05:00

阅读数 6071

评论数 3

原创 JAVA多线程实现方式

1. 楔子 java有多种方式实现多线程,比如继承Thread类或实现Runnable接口创建无返回值的多线程、使用ExecutorService、Callable、Future实现有返回结果的多线程等,这些该具体如何实现?各有什么不同?在什么样的场景下使用哪种方式比较好?本文就来探讨这些问题。 ...

2019-04-16 23:06:21

阅读数 149

评论数 0

原创 Restfull服务异常统一处理

1.前言 在构建一个服务时,总会抛出各种异常,这时我们就需要进行统一的异常处理,这样就能保证对外有一致的返回。 而且可以避免通过返回值判断函数调用结果这种繁琐的代码。 2.Controller层方法,进行统一异常处理 提供两种不同的方案,如下: 方案1:使用 @ControllerAdvice ...

2019-04-10 20:19:43

阅读数 321

评论数 0

原创 fastJson解析URL中&特殊字符报错

1.楔子 在做消息推送的时候,突然报出一个fastJosn解析json错误的报错,找了好久都终于发现是因为URL中含有特殊字符需要转义的字符&,导致JSON解析报错。 2.报错信息 网上搜索这个错误,大部分观点是JSON中含有特殊字符。还有人说是fastjson版本,字符串编码等问题,最...

2019-04-09 22:35:02

阅读数 1980

评论数 0

原创 mysql中dual表

1.楔子 今日在某项目数据库中发现每个库底下都有这样一张表,如下图所示: 这张表有且只能有一条数据,表结构如下所示: 我想这样做必然有其精神奥义和奇技淫巧,于是一探究竟。 2. mysql中模拟dual表 因为早期的mysql中是没有DUAL表的,应该是5.1之前。于是为了实现dual表的效果...

2019-04-09 22:17:46

阅读数 4155

评论数 0

原创 磁盘空间不足导致zookeeper宕机

楔子 某服务需要使用Zookeeper作为配置管理和服务注册与发现,今天突然发现服务不可用,病症就是无法连接zk,服务不断的重试,报如下的错误。(zk版本为3.4.10 单机部署) 定位 使用df -Th查看文件的使用情况 , 发现磁盘空间满了,使用du -sh *查看当前目录下各个文件及目录占...

2019-04-03 10:32:58

阅读数 363

评论数 0

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