代码片段
说的就是你吧
脚踏实地 逐步执行下一个三年计划
展开
-
System.gc() 导致CPU飙升
1. 前言 昨天服务器的CPU又飙升了,导致应用几乎卡死,页面切换都很卡,之前遇到我这种情况我就赶紧top,top -H -p,然后打印16进制,然后再jstack pid | grep 16进制 -A90,然后并没有获取到什么有用的信息,这次稍微换了下查找思路。 使用arthas 查看了下最占用CPU的程序(thread -n 5)发现全都是GC操作,然后我直接 jstack pid >> test.txt,查看了堆栈信息,直接搜和本项目相关的类的包名,然后搜到一个...原创 2021-03-19 14:42:07 · 506 阅读 · 1 评论 -
arthas热修复线上代码
前几天撸了华为云的服务器羊毛,可以白嫖三个月的云服务器,于是部署了一个spring boot的项目,本来在服务器上装了MySQL8,但是因为是最低的配置,导致MySQL服务经常挂掉,后来又在华为云里找到个新用户云数据库前两个月低价的活动,又白嫖了两个月的MySQL数据库,这样云服务器跑项目就不影响了。今天想试下arthas的线上热修复功能,线上改代码。参考了下别的文章,https://www...原创 2020-04-10 18:21:29 · 730 阅读 · 0 评论 -
不可变对象的设计模式
在多线程操作共享资源的情况下,大多数情况下都需要对资源进行加锁操作,多线程设计模式中的一个方法,可以不依赖加锁操作,直接将资源的状态设置为不可变,一个不可变的对象,无论任何时候都是线程安全的,就像java.lang.String一样。 那么String类是如何保证线程安全的呢?做过String s1 = “hello”;s1 = s1+”world”;的就会知道,对s...原创 2019-11-26 10:14:05 · 236 阅读 · 0 评论 -
自定义ClassLoader案例
首先说明,本文是参考《Java高并发编程详解》一书总结的。所有自定义的类加载器都是ClassLoader的直接或间接子类,此类中并没有抽象方法,但是有findClass方法,这个一定要实现,不然会抛异常:protected Class<?> findClass(String name) throws ClassNotFoundException { throw...原创 2019-11-17 15:09:57 · 384 阅读 · 0 评论 -
两边横线 中间汉字 js效果实现
话不多说,直接上css 样式代码:CSS text-decoration 属性 文本修饰:可以控制一条线从不同的位置以不同的状态、姿势来通过一段文字。<html><head><style type="text/css">h1 {text-decoration: overline}h2 {text-decoration: line-throu...原创 2019-01-11 15:49:52 · 805 阅读 · 0 评论 -
JS对象数组去重(单个数组 新方法)
转载地址:https://www.cnblogs.com/le220/p/9130656.html 亲测可用方法一:采用对象访问属性的方法,判断属性值是否存在,如果不存在就添加。方法二:采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法var arr = [{ key: '01', value: '乐乐' }, { ...转载 2019-01-18 11:03:17 · 662 阅读 · 0 评论 -
MiniUI grid改变行背景颜色
在使用miniUI开发中,时常会遇到需要改变gird的符合条件的某一行的颜色,下面就说两种方法:一:使用renderer=”theRenderer” 渲染的方式,也是最简单的一种方式在gird的某一列上加上这个renderer="theRenderer"然后在你的js中写上theRenderer()方法function changeColor(e){ if(e.row.con...转载 2019-01-16 17:55:44 · 4131 阅读 · 1 评论 -
JS几种数组遍历方式以及性能分析对比
转载地址:https://dailc.github.io/2016/11/25/baseKnowlenge_javascript_jsarrayGoThroughJS数组遍历的几种方式JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比第一种:普通for循环代码如下:for(j =...转载 2019-01-16 19:40:29 · 391 阅读 · 1 评论 -
冒泡排序优化
话不多说,直接上代码,最基本的冒泡: public static void bubbleSort1(int[] arr){ for (int i = 0; i < arr.length - 1; i++) {//外层循环控制排序趟数 for (int j = 0; j < arr.length - 1 - i; j++) {//内层循环控制...原创 2019-02-11 17:58:52 · 180 阅读 · 2 评论 -
不安全的SimpleDateFormat
转载地址: https://mp.weixin.qq.com/s/YmmM1KdGX_g46Sn_vFQraA问题场景复现 多线程不安全原因 解决方案 只在需要的时候创建新实例,不用static修饰 synchronized大法好 ThreadLocal 基于JDK1.8的DateTimeFormatter 日常开发中,我们经常需要使用时间相关类,说到时间相关类,想必大家...转载 2019-04-16 17:23:24 · 148 阅读 · 0 评论 -
为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
转载地址:https://mp.weixin.qq.com/s/e9ITxUmsMFhfjeHhOgTtfA为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作在阿里巴巴Java开发手册中,有这样一条规定:但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考。1.foreach循环foreach循环(Foreach loop)是计...转载 2019-04-19 22:54:16 · 119 阅读 · 0 评论 -
JS对象数组根据属性分组方法
最近看到了个简单明了的分组方法,因为别人也是转的,没有标注原地址,我这也就不给转载地址了。function test() { var list = [ {"name": "John", "Average": 15, "High": 10, "DtmStamp": 1358226000000}, {"name": "Jane", ...转载 2019-06-20 18:44:29 · 13678 阅读 · 0 评论 -
city_picker改造-------五级城市联动控件
这几天做项目,需要用到城市控件,网上找了个样式不错的控件,基于bootstrap的,具体用法可以参照https://blog.csdn.net/bsw451926392/article/details/78886965。但是我这边需要精确到村级别,而控件是省市区,而且数据是写死的,因为也不太懂js代码,就没改造,整了五个联动的下拉框,先把功能实现了,后来不咋忙的时候,决定还是改造下这个控件。...原创 2019-08-24 14:32:05 · 982 阅读 · 0 评论 -
Java 快递平台接口调用问题 base64 加密(jdk与Apache)
近来调EMS的下单接口,总是不成功,还有调韵达的接口,总是报签名错误,弄了两天也没找出来啥原因,后来老司机不造咋地就找到了原因,原来是在对参数进行base64加密的时候使用了jdk自带的base64进行编码(sun.misc.BASE64Encoder),编码结果会在最后面多加换行,导致参数不正确,换成Apache包下的base64就可以了(1.8中的java.util.Base64也可以)。...原创 2019-01-10 13:16:02 · 901 阅读 · 2 评论 -
原码, 反码和补码详解
转载的:作者:张子秋出处:http://www.cnblogs.com/zhangziqiu/一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进...转载 2018-12-24 16:39:03 · 706 阅读 · 1 评论 -
js date 月份、日期加一天等
转载地址:http://www.cnblogs.com/gmq-sh/p/5194706.html以在某个日期上加减天数来说,其实只要调用Date对象的setDate()函数就可以了,具体方法如下: function addDate(date,days){ var d=new Date(date); d.setDate(d.getDate()+day...转载 2019-01-03 19:16:20 · 2482 阅读 · 0 评论 -
前台JS转换long型数字为Date日期类型
项目中需要在页面上把后台传过来的long型数字转换为Date日期,查了下资料,发现方法挺多的,但有的方法以及过期了,有的倒是挺简单的,但是感觉下面这一种最好理解,也最容易搭配,自己想要什么样式的格式,都可以自己手动配置,贴上代码,以作备用。//将long类型时间戳转换为date时间表示function timestampToTime(timestamp) { var date = ...原创 2018-07-19 19:20:51 · 2353 阅读 · 0 评论 -
记一次try-catch代码排查的问题
今天中午,经理给分了一个小bug,当时debug进去,发现没啥明显的问题,但是也的确是有问题,提示框中的%s没有替换成后面的内容,后来也没找到(丢人了),还是经理给解决了,在throw 异常的外面用了try/catch,catch里面又抛了一个异常,结果就是之前的异常信息没有显示,catch最后抛的异常信息又没有可以替换%s的信息,所以就造成了这样的后果。现在想想也是,try/catch的话会...原创 2018-07-31 09:34:48 · 181 阅读 · 0 评论 -
工具类——HttpClientUtil(进行http请求,机试时可用)
想起之前去面试的时候,有一家让上机测试的,就是做一个简单的增删改查,远程操作,给了接口。当时想用webService来做的,但是半天jar包下不下来,当时也没想到用httpClient,结果没做出来,也就没了下文了。正好现在的项目也用到了httpClient,当然只是封装了一下,也是做请求用的,现在把这个工具类的代码贴出来,供以后备用。public class HttpClientUtil ...原创 2018-07-28 10:28:19 · 1237 阅读 · 0 评论 -
Collections$UnmodifiableMap类型转换出错问题
今天修改之前kafka消费者的代码,之前都是从properties中读取信息来创建AdminClient的,现在的配置是在xml文件中去读取properties的数据,然后在代码中直接注入对应的类——ConsumerFactory,直接用consumerFactory.getConfigurationProperties就可以了,但是在参数转换的时候报错了,具体信息如下:(这几个字的作用是为了...原创 2018-08-02 12:18:50 · 4825 阅读 · 0 评论 -
JsonPath:json解析神器(缓存项目中的使用)
最近要做的缓存项目中用到了jsonpath,这个工具主要是用来在多层嵌套的json中去取出对应的值。项目介绍:因为我们项目设计是提供一个细致到方法参数级别的缓存,中间也用到了redis,通过将项目名,类名,方法名,参数类型,已经参数的取值规则配置到redis中去,这点是通过springaop中的环绕通知去做的,获取某个包下的类,或者是jar包下,相对路径下的类等,在通过反射获取对应的方法的...转载 2018-08-20 11:54:24 · 2961 阅读 · 0 评论 -
工具类——HttpClientUtil带连接池的实现
为什么要使用连接池:1、降低延迟:如果不采用连接池,每次连接发起Http请求的时候都会重新建立TCP连接(经历3次握手),用完就会关闭连接(4次挥手),如果采用连接池则减少了这部分时间损耗。2、支持更大的并发:如果不采用连接池,每次连接都会打开一个端口,在大并发的情况下系统的端口资源很快就会被用完,导致无法建立新的连接。话不多说,直接上代码,就是个工具类,之前提供了代码,这次是加入了连...原创 2018-08-21 11:22:47 · 4013 阅读 · 0 评论 -
JS数组方法
今天在代码中要在前台操作js数组,当然以前操作也不少,基本上就是push还有遍历操作,今天需要用到复制功能,本以为copy可以了,结果不行,查了下,发现数组功能也挺多的,摘选几个记录一下。整体功能以w3school上的为准,参考地址http://www.w3school.com.cn/jsref/jsref_obj_array.asp。当然也发现了一个现成的写的不错的,博客园没有账号,没法...转载 2018-10-25 19:57:12 · 728 阅读 · 0 评论 -
js中startWith和endWith的扩展
今天用到了js中的endWith方法,以为直接有呢,就直接用了,结果报错,endWith 未定义啥的,后来发现这个startWith和endWith都需要另外实现一下,只要加上以下代码就行了。String.prototype.endWith = function(str){ if(str==null || str=="" || this.length == 0 ||str.length ...原创 2018-11-06 18:15:04 · 2813 阅读 · 0 评论 -
JS对象数组根据属性排序
在项目中需要给grid的某一列排序,但又不是miniui那样的人为的操作,本来是想用冒泡来排下序就行了,结果发现事情没有这么简单,当然也没有那么复杂,之前转的一篇文章中,介绍了很多js数组的方法,今天就用到了sort()方法。sort()方法会改变原来的数组,并且sort方法并不是严格按照数字大小排序的,好像是根据字符的阿斯科码表对应值排序的。如果想对数组按照大小进行排序,则需要在sort()...转载 2018-11-05 18:44:03 · 5206 阅读 · 1 评论 -
js 两个数组(对象)去重合并
项目前台代码中需要用到数组的去重操作,其实也不难,就算是对象数组,判断下对应的属性值也是可以实现的,但是如果我实现的话肯定是最常见的双重for循环,加个flag标记,老套的不能行了,想了想,还是上网找点高级点的操作吧。下面几个方法都是网上找的,链接如下:https://blog.csdn.net/NAMECZ/article/details/82220534https://blog.csd...转载 2018-12-06 12:12:34 · 50425 阅读 · 5 评论 -
Java代码实现二进制、十进制互相转换
话不多说,直接上代码,反正也是转载的,只是为了测试精度缺失的验证。转载地址:https://blog.csdn.net/weixin_37610397/article/details/79928221 https://blog.csdn.net/u014102846/article/details/75394186二进制转换为十进制: publi...转载 2018-12-24 16:03:24 · 4407 阅读 · 0 评论 -
IEEE 754标准
作者:KyrinWoo链接:https://www.jianshu.com/p/e5d72d764f2f來源:简书组成IEEE754标准包含一组实数的二进制表示法。它有三部分组成:符号位 指数位 尾数位三种精度的浮点数各个部分位数如下:正规化对于将某个实数表示为计算机浮点数,首先要将其正规化,也就是表示为形如:的样子。其中b是0或1,而p二进制数表示的指数...转载 2018-12-24 16:20:40 · 4859 阅读 · 1 评论 -
static代码块——初始化数据的利器
在项目中用到了kafka来生产消息、消费消息,无论是生产还是消费,都需要配置对应的配置文件,而且需要在项目启动时,就去读取配置文件的内容,并且只执行一次,这里就要用到static静态代码块了。静态代码块是在虚拟机加载类(jvm加载类的顺序 加载-连接(验证-准备-解析)-初始化)的时候就执行的,而且只执行一次。如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个...原创 2018-07-19 18:58:53 · 1531 阅读 · 0 评论