
技术播客
文章平均质量分 51
码农的霸道梦
这个作者很懒,什么都没留下…
展开
-
JAVA-如何修改源码(重写JAR包里的类)
同名类的加载顺序及原理原创 2022-11-17 15:55:42 · 7709 阅读 · 0 评论 -
线程安全的List
今天写代码的时候需要用到线程安全的List,大脑开始遍历发掘,有个Vector,性能有点差,看了网上的博客,常用的有两个synchronizedList和CopyOnWriteArrayList。分析synchronizedList无论是读取还是写入,它都会进行加锁,当我们并发级别特别高,线程之间在任何操作上都会进行等待,因此在某些场景中它不是最好的选择。在很多的场景中,我们的读取操作可能远远大于写入操作,这时使用这种方式,显然不能让我们满意,那么怎么办呢?别担心,JDK已经为我们考虑好了,为了将读原创 2021-07-31 11:34:29 · 1218 阅读 · 0 评论 -
mysql时区产生数据不一致问题
今天测试小哥说:接口查出来的依赖表到达时间跟数据库里的不一致,我当时就提供了 排查思路:1.看一下应用配置的数据库地址对不对2.不行的话,重启一下应用,可能是有人更改配置没有重启应用几分钟后测试告诉我,还不行,好吧,好像得亲自出马了.配置idea远程反复debug,触发接口,查看connection的信息,ip,端口号,库都对啊,怎么查出来的时间就不一样呢?真实出鬼了!!!本地main方法测试,也没有出现不一致的问题!顿时感觉走到了职业生涯的尽头,还能出现这种问题?正在一筹莫展之际,原创 2021-05-27 17:51:53 · 412 阅读 · 0 评论 -
java调远程服务器的shell脚本以及停止
最近接了个需求,要求远程调shell脚本,你没听错!!!需求就一句话,咱是谁,咱是优秀的开发选手。考虑再三,有两种实现方式:方案一:脚本所在服务器安装一个客户端,也就是自己写的一个小程序,本地通过端口调目标服务器的程序,然后程序调本机上的shell脚本!优点:通过端口调用,用户不用暴露服务器的账号密码,安全性高缺点:我们需要一直维护这个客户端程序,而且每接入一台服务器,都得安装该客户端,另外非常考验客户端程序的健壮性。方案二:本地直接通过IP,服务器账号密码调远程服务器的shell脚本优原创 2021-03-17 16:51:06 · 1429 阅读 · 5 评论 -
shell获取数据库的主从状态
原来的运维小哥跑路了,目前项目上的运维工作由测试小哥暂时支持,晨会上,测试小哥说目前工作量有些大,其中就说到:每天都要检查各个环境的数据库主从状态。检查步骤:1.登录目标服务器2.登录mysql3.输入show slave status\G;4.检查Slave_IO_Running,Slave_SQL_Running,Seonds_Behind_Master等属性的值这只是一个环境的检查步骤,有几个环境就要重复几次这样的操作,以程序员的思维来讲,这是愚蠢的,非常非常不可取的!!!!原创 2021-03-11 15:12:34 · 526 阅读 · 4 评论 -
curl命令测试接口
最近要作为服务端上线两个接口,供数据资产项目调用,由于接口没有增删改操作,只有查询操作,也没有机密信息,调用对项目没有影响,怎么能在上线后,测试一下接口是否能正常返回,于是我想起了curl命令!谨记,一般生产上不能这样操作!Curl命令模拟Post请求带参数的post请求:如,post接口请求的链接为:https://api.xxxx.com/xxx/search/list?c={“cc”:1602,“ct”:20,“dt”:1,“ov”:20,“p”:xxx,“v”:...原创 2021-01-15 15:29:07 · 1691 阅读 · 0 评论 -
又是性能优化的一天之java性能优化
背景最近写了一些关于性能优化的文章,还是想给老铁们写一下关于java性能优化的细节,有助于我们在开发时写出更好的代码,提高代码效率!1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。2....原创 2020-11-11 17:38:56 · 235 阅读 · 0 评论 -
又是性能优化的一天之接口问题排查
背景今天领导给了个任务,页面上有个功能请求接口特别慢,需要优化一下,哇,又是充满希望的一天!问题排查打开F12看接口的执行时间,妈耶,执行了6.22秒,如果任务以来很多的话,那岂不是更慢,怪不得有些用户反映接口慢的要命。用arthas(阿尔萨斯)排查接口中的慢方法,开启arthas,选择需要监控的服务trace命令格式:trace 全路径类名 方法名执行tracecom.dtstack.batch.service.job.impl.BatchJobJobServi...原创 2020-11-09 20:20:13 · 1167 阅读 · 1 评论 -
又是性能优化的一天之连接池
背景今天接了个需求,页面任务运行和保存提交按钮等待时间特别长,页面转圈圈,于是充满希望的一天开始了!问题分析性能监测,于是乎,我想起了阿里开源性能检测工具arthas(阿尔萨斯),它能监测接口连路上每个方法的运行时间,可以直观的看到接口到底哪一步比较慢,由于我也是刚刚接触这个工具,后续我会专门出一期关于这个工具安装和使用的文章,老铁们不要着急,平常有点忙,文章产量不大,见谅见谅。运行按钮里面调了多个接口,将任务里面的sql语句按分号截取发给集群运行,任务中有几个sql,就会产生多少个接口..原创 2020-11-04 19:08:37 · 1528 阅读 · 0 评论 -
mysql存量表数据碎片与索引碎片优化
背景最近领导分配了个任务,测试sit环境一些功能相比之前慢了许多,需要优化一下。问题排查过程浏览器F12查看相关接口的响应,看到底是哪个接口反应慢,根据互联网的要求,页面3秒还没有显示出来,用户体验会非常差。查看相关代码的提交时间,这些代码一上线就没有改动过,由此以我三年职业生涯的经验推断,可能是接口相关数据库表设计不合理或者需要优化导致的问题,因而该篇文章由此诞生!数据库单表优化步骤设计表时:1.选择合适的字段类型 2.创建高性能索引...原创 2020-10-30 17:44:17 · 2091 阅读 · 1 评论 -
java线上故障排查技巧-cpu
线上故障主要包括CPU,磁盘,内尺寸以及网络问题,大多数故障可能会包含多个层面,所以排查时尽量四个方面依次排查一遍。CPU问题出现原因:业务代码(死循环),频繁GC以及上下文切换,数据库排序计算等等。首先java应用排查:1.使用jstack分析CPU问题首先我们用jps找到对应java进程的pid,top pid,看一下哪一个线程的占用比较高,然后top -H -p 线程pid ,找到CPU使用率较高的线程。可以看到线程41964线程的cpu的占用率较高,然后我们将41...原创 2020-10-20 20:32:46 · 436 阅读 · 1 评论 -
线上运行一年的代码竟然查出问题了?
由于轮训服务改造的原因,线上运行了一年的代码竟然出问题了,话不多说,直接抛问题!!!问题介绍我们的项目是一个任务调度的平台,每天都有大量的任务需要发送到大数据集群进行处理,在发送前,需要判断是否达到跑批要求。每天晚上11点会生成第二天的周期实例,周期实例有个跑批调度时间,到达该时间,调轮训服务获取任务依赖表是否到达。任务提交轮训逻辑...原创 2020-10-10 17:44:06 · 404 阅读 · 1 评论