后端
让我做你的眼睛、
这个作者很懒,什么都没留下…
展开
-
系统CPU过高,导致系统GC频繁,会引发一系列问题,如何定位原因呢?---以跑批洗数据为例
1. 第一步 top 查看cpu,如图java 进程号 1066182. top -Hp 106618 查看该进程下所有的线程情况3. 把线程ID转为16进制printf "%x" 10762216进制转10进制 printf "%d" 0x1a4664. 把堆栈信息输出到文件中jstack 106618 >> 2020072101.txt5. 在堆栈信息中查找该16进制线程号,分析具体代码情况...原创 2020-07-21 17:25:09 · 730 阅读 · 0 评论 -
linux 常用查看命令
查看各个进程内存所占百分比,使用情况ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less原创 2020-01-09 11:27:28 · 194 阅读 · 0 评论 -
JAVA什么时候执行垃圾回收以及回收流程
JAVA head 分三个区域:1、新生代:1).Eden(伊甸园)区是新对象分配内存的地方,由于堆是所有线程共享的,因此在堆上分配内存需要加锁。而Sun JDK为提升效率,会为每个新建的线程在Eden上分配一块独立的空间由该线程独享,这块空间称为TLAB(Thread Local Allocation Buffer)。在TLAB上分配内存不需要加锁,因此JVM在给线程中的对象分配内存时会尽量...原创 2020-01-09 11:06:51 · 490 阅读 · 0 评论 -
一周内第二次MQ积压问题
旧机房6台服务器MQ全部停掉后,MQ积压告警,原因是分账MQ有两套,针对二维码某种业务的原来有4台机器,但是新机房的6台读取的配置文件都是prod,并没有读取新MQ qrProd代码如下: @Bean public SimpleMessageConsumer<String> direct() { String exchangeName = env...原创 2019-10-24 19:56:59 · 456 阅读 · 0 评论 -
20191018 投产导致结算MQ没有及时消费
第三季度 修改了配置文件获取方式,原来是 private static Environment evironment; public static String getEnvironmentProperty(String key) { if (evironment == null) { evironment = SpringUtils.g...原创 2019-10-24 16:22:51 · 156 阅读 · 0 评论 -
Gradle版本升级流程及注意事项
因架构升级,需要系统更换gradle版本,gradle 2.14.1升到4.10版本以上,也是第一次做这个事,记录一下,还是有一些坑的主要修改的就是gradle 配置第一步,下载高版本gradle all.zip 包含了gradle源码,一般我们只需要下载bin.zip就可以用第二步 修改新安装的gradle地址,刷下gradle包第三步 修改gradle 配置高版本不...原创 2019-08-09 11:24:16 · 5788 阅读 · 1 评论 -
UnsupportedOperationException异常
今天写了一个String转list,然后新创建的list.add()会报错java.lang.UnsupportedOperationException List<String> list = Arrays.asList("1,2,3"); list.add("2"); public static <T> List<T> asL...原创 2019-03-15 11:25:59 · 2772 阅读 · 0 评论 -
深度复制和浅度复制
1.深度复制和浅度复制深度复制和浅度复制的区别在于有没有为拷贝出的新对象重新分配一块内存区域。 浅度拷贝即直接赋值,拷贝的只是原始对象的引用,在堆中仍然公用一块内存,而深度拷贝为新对象在堆中重新分配一块内存,所以对新对象的操作不会影响原始对象public class Person implements Cloneable { String name; Stri...原创 2019-03-15 11:09:48 · 483 阅读 · 0 评论 -
事务PlatformTransactionManager
1.事务三大接口PlatformTransactionManager 事务管理器 TransactionDefinition 事务的一些基础信息,如超时时间、隔离级别、传播属性等 TransactionStatus 事务的一些状态信息,如是否一个新的事务、是否已被标记为回滚2.PlatformTransactionManagerpublic interface PlatformTr...原创 2019-01-29 11:42:08 · 23867 阅读 · 1 评论 -
synchronized和Lock
1. synchronized的缺陷synchronized是java的一个关键字,也就是说是java语言的特性。如果一个代码块被synchronized修饰,当一个线程获取了对应的锁,其他线程只能等待,这里释放锁只有两种情况: (1)执行完了该代码块,该线程释放对锁的占有(2)线程执行发生异常,此时JVM 会让线程自动释放锁 那么如果这个获取锁的线程由于等待IO或其他原因(sleep...原创 2019-01-22 16:21:24 · 98 阅读 · 1 评论 -
mysql查询超时,跑批报错分析原因
1. 跑批报错 日志如下:最开始以为是那天的数据有什么问题,然后把sql和对应的值拿出来在测试环境执行也不行 报一样的错,就是查询超时在查询生产表的数据量发现19号开始,二维码的量到了60W,我认为是量大后查询变慢,设置的300s超时,现在300s查不出来报错但是所有的表都做了分区,按理说一天60W的量也没有问题,只会查找那一天的最终确认原因是 没有写执行日志表的时间 m.exec...原创 2019-01-23 19:09:57 · 1481 阅读 · 0 评论 -
RandomStringUtils工具类
//产生5位长度的随机字符串,中文环境下是乱码RandomStringUtils.random(5);//使用指定的字符生成5位长度的随机字符串RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'});//生成指定长度的字母和数字的随机组合字符串RandomStringUtils....原创 2018-12-18 11:14:40 · 1146 阅读 · 0 评论