
java
文章平均质量分 68
hanlang_java
安安静静写点代码
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
简单单机版限流器
在高并发系统设计的时候,限流器是一个很重要的工具,现在的分布式框架大多集成了限流器 如何手撸一个简单限流器呢 限流种类 限制并发数:即限制同一时刻的请求数,例如限制1w的并发,就是说一个请求来了我们检查一下当前正在运行的请求,如果数量不超过1w我们就放行 限制qps:限制时间段内的请求数,例如限制qps为1w,就是说一秒钟最多有1w个请求放行 限制并发数 对于第一种我们需要一个信号量,请求开始...原创 2019-12-06 16:35:08 · 646 阅读 · 0 评论 -
利用jvm-sandbox画服务依赖图和时序图
jvm-sandbox功能 jvm-sandbox是一个java动态字节码注入的工具,使用非常灵活,项目主页https://github.com/alibaba/JVM-Sandbox,它的原理是通过JVM-TI技术,利用asm修改字节码的能力,实现对运行时系统切入动态逻辑,具体使用介绍可以查看其主页说明。 service-trace使用 service-trace是一个使用jvm-sandbox...原创 2019-08-06 23:16:00 · 1956 阅读 · 0 评论 -
利用shell命令和浏览器优化jstack的结果显示
jstack现状 当我们用jstack排查线程栈问题的时候,我们经常会遇到许多相同的线程栈,尤其是当我们使用了线程池或者系统框架使用了线程池的时候,许多重复的栈桢充满着整个屏幕,想要找到我们需要的信息比较麻烦 执行: jstack 12321 结果: "qtp837692250-110" #110 prio=5 os_prio=31 tid=0x00007fdc80c4d000 nid=0x77...原创 2019-08-06 00:08:48 · 336 阅读 · 0 评论 -
利用java-tracer来录制方法调用过程
介绍 对于程序开发一般要从两个角度去考虑,业务开发更关注功能逻辑实现,是一个业务问题;技术开发则需要关注性能稳定性,是一个纯技术问题。功能逻辑是一个大话题,涉及思维方式,业务需求,比较复杂,不太好量化,但是对于性能稳定性,却是一个技术领域的问题,对性能的追求是一个码农应有的素质。 要想对性能有所追求,就要对系统有所了解,项目开发不是一个独立的事件,大的工程往往依赖很多人很多工具的辅助才能完成。正常...原创 2019-05-11 00:33:42 · 1127 阅读 · 0 评论 -
classLoader原理及自定义ClassLoader
ClassLoader功能 类的加载 JVM运行的时候,当用到一个类的时候,需要把类字节码文件加载到内存并生成运行时数据结构,其中classLoader的角色必不可少 classLoader加载一个类的时候,会调用其如下方法 public Class<?> loadClass(String name) throws ClassNotFoundException { return...原创 2019-05-10 20:34:53 · 1240 阅读 · 0 评论 -
java日志框架原理(一)
日志代理框架 常用的一些日志工具 一般打日志,有许多种选择,像slf4j, log4j, logback, jul(java.util.logging.Logger), SimpleLog(System.err), commons-logging等。这些大致可以分为两类,代理类和工具类,其中代理类为slf4j和commons-logging,其它的为工具类。其中代理类不负责具体的日志打印,实际打印...原创 2018-10-11 01:35:00 · 3569 阅读 · 0 评论 -
java程序通过命令行执行
用惯了各种方便的ide之后,我们时常忘了程序它本来的面貌,许多时候都是没有关系,但是如果想探究具体细节,用命令行执行代码也是有一定的必要性的。 #!/bin/sh java_home=/usr/bin proj_home=/home/admin/proj_1 cp=. for j_file in `find $proj_home/lib` do cp=$cp:$j_file don原创 2015-05-18 19:28:10 · 980 阅读 · 0 评论 -
入侵java进程的方法
需求 当我们线上程序运行的时候,难免会遇到一些业务问题,在排查问题的时候我们会去看日志,查看一些函数输入输出来定位问题;然而许多时候,我们在项目开发的时候并没有留下足够的日志来排查问题,这时候就需要一些特殊的方法来排查,比如远程debug,重新增加日志重启服务,或者用btrace等工具来排查,各种工具都有各自的优点和使用的场景,具体不足本篇暂不讨论,本文只介绍一种新的简单的工具,这个工具可以提供...原创 2018-05-21 23:54:39 · 1233 阅读 · 1 评论 -
java函数式编程
java8终于引入了函数式编程,函数式编程即对lambda(λ)表达式的运用,熟练运用λ表达式,我们实现功能的思路会变得更清晰,写起代码来也可以更简捷,下面来认识和学习一下λ 一、认识λ表达式,对于λ表达式,我们看到的使用得最多的就是集合的操作了,下面看几个例子 List list = Arrays.asList("abc", "bcd", "cdef"); List lengthLi原创 2018-01-28 22:42:53 · 235 阅读 · 0 评论 -
线程安全随机队列
有的时候,在某些场景下,我们需要这么一个队列 1、这个队列是线程安全的 2、来了最新元素我们需要把最新元素放入队列,如果队列满了,我们需要把队尾的元素给remove掉 3、我们需要随机读取这个队列中的一个元素于是我们可以利用java现有的对象来完成,例如LinkedBlockingQueue 它能保证线程安全,符合第一点 它提供了操作的保证,即当队列满的时候,插入元素会报异常,能保证队列的原创 2016-08-16 23:28:50 · 863 阅读 · 0 评论