- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 记一次CPU使用率低负载高的排查过程
一、背景历史原因,当前有一个服务专门用于处理mq消息,mq使用的阿里云rocketmq,sdk版本1.2.6(2016年)。随着业务的发展,该应用上的consumer越来越多,接近200+,导致该应用所在的ecs长时间load高,频繁报警。二、现象分析该应用所在的ecs服务器load长期飙高(该ecs上只有一个服务),但cpu、io、内存等资源利用率较低,系统负载参考下图:ECS配置:4核8G物理cpu个数=4单个物理CPU中核(core)的个数=1单核多处理器在系统负荷方面,多核CP
2020-05-28 20:37:39 3330
原创 layui省市区级联选择器的实现
在很多场景下,都需要使用到省市区选择器,本文主要分享layui以插件的形式实现城市级联选择,并引入高德地图进行输入地址友好提示。效果如下:下面贴一下相关实现:1、省市区级联选择器的实现,并封装成符合layui规范的插件 //pca.jslayui.define(['table', 'form', 'layer', 'jquery', 'element'], fun...
2018-09-11 15:39:58 23029 11
原创 Semaphore实际应用
题目:顺序递增打印正整数,从1开始打印到100,中间换行分隔。不允许重复打印出相同的数字,比如打印结果里出现2个5,3个6之类的。要求如下: 1、使用三个线程A、B、C,其中线程A打印3的倍数,B打印5的倍数,C打印其他数字分析:三个线程竞争资源,可以使用信号量Semaphore实现方式一:package juc;import java.util.concurrent.Semaphore;import java.util.concurrent.atomic.Ato...
2020-12-18 15:52:48 394 2
原创 pinpoint agent改造之全局采样部分上报
背景公司在18年开始,使用pinpoint(1.7.2)做应用监控,考虑到数据上报所带来的网络、存储、应用负载等成本,只配置了部分采样(10%)profiler.sampling.rate=10因此,只能拿到10%的全局traceId,导致部分异常请求无法定位到上游的应用.经过相关调研以及成本估算(使用其他APM方案,例如skywalking、cat),还是决定通过改造pinpoint的方式来实现全局采样、部分上报.数据采样原理熟悉pinpoint进行全链路监控时,支持对请求的采样,某条请求是
2020-07-22 19:36:58 1452 2
原创 Runtime.getRuntime().addShutdownHook()方法说明
程序正常退出,系统调用 System.exit方法或者虚拟机被关闭时才会执行添加的shutdownHook线程。其中shutdownHook是一个已初始化但并不有启动的线程,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以,可以通过这些钩子在jvm关闭的时候进行内存清理、资源回收等工作。...
2020-05-29 15:24:21 414
转载 Spring与SpringMVC的容器关系分析
Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但是在实际项目中,同时配置Spring和SpringMVC时会出现一些奇怪的异常,比如Bean被多次加载,多次实例化,或者依赖注入时,Bean不能被自动注入,但是明明你已经将该Bean注册了的。找原因还是要看问题的根源,我们从容器
2017-12-26 13:49:19 333
转载 spring如何在action中获取请求的真实IP地址
@RequestMapping(value = "test") @ResponseBody public String test(HttpServletRequest request) { ResultBean result = new ResultBean<>(); String ipp=request.getRemoteAddr();
2017-12-21 11:27:59 1619
原创 eclipse通过findbugs插件生成html报告
首先,下载findbug插件,解压到eclipse的plugin目录下。下载地址:http://download.csdn.net/download/qq_29463709/10162960修改build.xml文件中第二行的value值
2017-12-18 13:55:33 4250
原创 关于MyBatis中String和varchar进行大小比较(均保存的数字)
业务场景:①beanpublic class ProductParam extends BaseQuery { private static final long serialVersionUID = 3115760968824884833L; /* * 贷款金额 */ private String amount; /* * 贷款期限
2017-12-13 18:02:58 6434
原创 关于MyBatis把0当做空字符串的解决方案
在开发中,一般在sqlmap中都会判断参数是否为null,以及是否为空字符串当参数为Int类型 0时,myBatis自动把0定义为空字符串“”因此我们在可能入参为0的地方多加一个判断: ,a.AUTHORIZE_AMOUNT = #{authorizeAmount,jdbcType=VARCHAR} 这是一个比较容易粗心的地方,出
2017-12-07 15:47:26 3525
原创 SSM框架整合所需相关jra包的maven地址
SSM框架整合: jdk1.7 +maven 3.11+tomcat7+mysql<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht
2017-12-07 14:33:39 427
原创 关于switchcase和ifelse的效率对比分析
switch...case与if...else的根本区别在于: switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。具体地说,switch...case会生成一份大小(表项数)为
2017-12-04 14:28:50 1732
原创 关于JAVA中使用remove方法循环删除list中元素的常见误区
在开发中,对list中的元素进行删除是很常见的,但如若不注意,很容易走入误区,这是自己切实碰到的,记录下来给自己一点警示:1)错误1:循环遍历for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i);} 这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的
2017-12-04 11:09:33 2270
原创 关于Java中Native修饰符
native主要用于方法上:1、一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C++实现。2、在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外面实现的。说明: Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI
2017-12-01 14:20:12 3079
原创 Spring使用tx标签配置拦截器动态为指定方法添加事务
1、事务传播特性1)REQUIRED默认的,加入当前正要执行的事务不在另外一个事务里,那么就起一个新的事务。比如说,ServiceB.methodB的事务级别定义为PROPAGATION_REQUIRED,那么由于执行ServiceA.methodA的时候,ServiceA.methodA已经起了事务,这时调用ServiceB.methodB,ServiceB.meth
2017-11-20 14:51:38 1487
原创 关于Eclipse引入maven插件后,启动时maven报错的解决方案
毫无疑问,Maven是一款很好用的项目管理工具,很多人都喜欢在eclipse中安装maven插件,但当eclipse非正常关闭后,再次启动时有时候会报以下错误: 解决方案如下: 1、使用eclipse新建一个workspace 2、用新建的workspace下.metadata\.pl
2017-11-20 09:26:06 1252
eclipse中findbugs插件
2017-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人