借你一秒

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

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

2019-08-08 16:35:07

阅读数 510

评论数 3

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

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

2019-08-08 11:12:48

阅读数 66

评论数 0

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

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

2019-08-08 09:32:13

阅读数 38

评论数 0

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

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

2019-08-06 11:28:51

阅读数 33

评论数 0

Vert.x(vertx)入门资料

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

2019-08-02 14:40:46

阅读数 23

评论数 0

两个长数字相加

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

2019-06-30 10:44:44

阅读数 68

评论数 0

分布式ID生成器

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

2019-06-12 22:40:24

阅读数 96

评论数 1

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

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

2019-06-03 20:31:08

阅读数 48

评论数 0

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

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

2019-05-20 15:14:14

阅读数 70

评论数 0

Spring Cloud入门教程

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

2019-04-29 19:53:38

阅读数 119

评论数 0

logback配置实例

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

2019-04-28 16:44:38

阅读数 45

评论数 0

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

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

2019-04-28 16:37:17

阅读数 74

评论数 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

阅读数 156

评论数 0

Java 枚举Enum理解

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

2019-04-24 17:32:20

阅读数 47

评论数 0

Java中double转BigDecima导致精度损失

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

2019-04-22 14:03:30

阅读数 87

评论数 0

JAVA多线程实现方式

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

2019-04-16 23:06:21

阅读数 47

评论数 0

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

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

2019-04-09 22:35:02

阅读数 1242

评论数 0

JAVA自带工具之jps

1.命令介绍 jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。 功能描述: jps是用于查看有权访问的hotspot虚拟机的进程. 当未指定hostid时,默认查看本机jvm进程,否者查看指定的...

2019-04-01 22:36:36

阅读数 53

评论数 0

Unable to open socket file: target process not responding or HotSpot VM not loaded异常处理方法

1.问题 某台服务器出现假死的现象,服务进程在,但是就是不工作。于是想定位下,先看了下服务器本身的状态都是OK的,然后看下服务的状态,先执行如下的命令,发现服务是存在的,如下: 执行jps -ml输出如下: 然后执行jstack 2276,报出如下的错误: 2276: Unable to ope...

2019-04-01 21:13:06

阅读数 2132

评论数 0

Java:双括号初始化 / 匿名内部类初始化法

1.楔子 在开发中一个常见的操作就是新建Map或者List并进行初始化,但是在java的集合框架中并未提供好的初始化方式,只能先new,然后在一个个的put,但这样显得非常的low,如何才能优雅的初始化常见集合呢? 2. 一个看似很装逼的方式 2.1 代码实例 这种初始化方式使用了匿名内部类和非静...

2019-03-30 12:52:49

阅读数 101

评论数 0

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