Java
文章平均质量分 71
追兔子的乌龟
这个作者很懒,什么都没留下…
展开
-
java stream 中的一些坑
toMap。原创 2024-08-01 08:36:19 · 365 阅读 · 0 评论 -
CPU狂飙900%,该怎么处理?
CPU狂飙900%,该怎么处理?转载 2023-03-13 09:13:46 · 412 阅读 · 0 评论 -
jvm图解
jvm图解原创 2022-08-18 11:44:18 · 99 阅读 · 0 评论 -
ThreadLocal原理
ThreadLocal原理原创 2022-06-30 18:08:39 · 103 阅读 · 0 评论 -
netty零拷贝
netty零拷贝原创 2022-06-14 15:38:52 · 89 阅读 · 0 评论 -
Spring解决循环依赖
原创 2022-03-28 09:33:33 · 597 阅读 · 0 评论 -
jvm垃圾回收(GC)日志简单理解
jvm垃圾回收(GC)日志简单理解每种收集器的日志形式都是由它们自身的实现所决定的,换言之,每种收集器的日志格式都可以不一样。不过虚拟机为了方便用户阅读,将各个收集器的日志都维持了一定的共性,来看下面的一段GC日志:[GC [DefNew: 310K->194K(2368K), 0.0269163 secs] 310K->194K(7680K), 0.0269513 secs] [Times: user=0.00 sys=0.00, real=0.03 secs][GC [DefNew.转载 2021-11-25 14:59:44 · 487 阅读 · 0 评论 -
面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?
处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种:代码中某个位置读取数据量较大,导致系统内存转载 2021-11-15 10:20:19 · 226 阅读 · 0 评论 -
JVM实际内存占用超过Xmx的原因,设置Xmx的技巧
前言不知道大家在开发过程中有没有遇到过类似的问题,明明通过JVM参数-Xmx4g设置了最大堆内存大小为4g,但是程序运行一段时间后发现占用的内存明显超过了8g,却并没有出现内存溢出等问题,那是什么东西占用了额外的内存空间呢?一、背景1.通过free -g查看服务器内存使用情况2.通过ps查看java进程项目启动命令为:java -Xmx6g -Xms6g - -XX:+UseG1GC -jar /home/pgcp/pgcp-0.0.1-SNAPSHOT.jar3.通转载 2021-11-12 16:41:08 · 13181 阅读 · 1 评论 -
JVM内存分配及调优方案(基于JDK1.8)
1.前言Java作为目前最通用的编程语言之一,而Java底层的JVM是Java编程语言的核心。不管是在企业应用系统,移动终端还是大数据领域都有很大的市场占有率。Java的扁平快受到越来越多的开发青睐,但与C/C++相比,Java语言也有些不足的地方,比如在垃圾回收机制上。什么叫垃圾回收,简单来如,不管是对于Java还是C/C++而言,一切皆对象,当创建对象后,就要分配队或栈占用资源。对象实例化后,不可能一直被引用。这里就会有一个问题,对象核实才不会被引用,不被引用后是否立即进行回收。这个在Java和C/转载 2021-11-12 16:04:15 · 1539 阅读 · 0 评论 -
Java问题诊断和排查工具(查看JVM参数、内存使用情况及分析等)
JDK自带的工具在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的大小基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能代码是在tools类库中实现的。命令行工具的好处是:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程telnet到服务器上都会受到限制。而借助tools.jar类库里面的接口,我们可以直接在应用程序中实现功能强大的监...转载 2021-11-12 15:11:22 · 434 阅读 · 0 评论 -
临时抱佛脚,线上问题如何排查?
原创闪客sun低并发编程6月25日收录于话题#随便聊聊49个内容#技术小思28个内容低并发编程战略上藐视技术,战术上重视技术重要的事情说一遍!最近我在面试~面试时被高频问到,有没有遇到过线上问题,如何解决。一般我都是大眼瞪小眼,说个看看日志中有没有 NPE 问题,去机器上 top 一下,就没了。被面试官鄙视了好多次,今天简单梳理一下,目的是为了不大眼瞪小眼即可,等我应付完面试,再给大家好好准备准备这块的思路。到时候面试被问到了没思路,还能手机上偷偷看看自...转载 2021-11-12 15:10:08 · 559 阅读 · 0 评论 -
jdk1.8——jvm分析与调优
很多文章都是讲如何配置JVM各个参数的,但是生产环境里参数的值到底配置为多少,却没有一个具体的指标。文章分四个部分,分别是JVM说明、配置,GC的过程和具体配置值。一.JVM空间说明 JDK 1.7及以前,Java 类信息、常量池、静态变量都存储在 Perm(永久代)里。类的元数据和静态变量在类加载的时候分配到 Perm,当类被卸载的时候垃圾收集器从 Perm 处理掉。 JDK 1.8 的对 JVM 架构的改造将类元数据放到本地内存中,另外,将常量池和静态变量放到 Java 堆里。H.转载 2021-11-12 11:45:11 · 1186 阅读 · 0 评论 -
MySQL分组查询每组最新的一条数据(通俗易懂)
开发中经常会遇到,分组查询最新数据的问题,比如下面这张表(查询每个地址最新的一条记录):sql如下:正在上传…重新上传取消-- ------------------------------ Table structure for test-- ----------------------------DROP TABLE IF EXISTS `test`;CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT,转载 2021-10-19 09:52:37 · 5766 阅读 · 2 评论 -
漫话:如何给女朋友解释什么是策略模式?
原创漫话编程漫话编程2019-05-13收录于话题#小朋友,你是否有很多问号!~37个周末无事,窝在家里面看《权力的游戏第八季》,看的很是津津有味,虽然感觉有一点点要烂尾,但是我还是忍不住要去看到底谁可以坐上铁王座。女朋友在一旁点外卖,好像是在使用优惠的时候遇到了一点点小问题。策略策略,指的是可以实现目标的方案集合,在某些特定情况下,策略之间是可以相互替换的。比如我们在外卖平台上看到的这些优惠。满减、会员和红包等,每一个大项...转载 2021-08-13 10:09:12 · 126 阅读 · 0 评论 -
单点登录原理与简单实现
(2017-09-22更新)GitHub:https://github.com/sheefee/simple-sso一、单系统登录机制1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器转载 2021-07-12 11:20:02 · 157 阅读 · 0 评论 -
Spring事务传播行为详解
前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文对七种事务传播行为做详细介绍,内容主要代码示例的方式呈现。基础概念1. 什么是事务传播行为?事务传播转载 2021-06-15 18:03:10 · 68 阅读 · 0 评论 -
浅谈偏向锁、轻量级锁、重量级锁
为了换取性能,JVM在内置锁上做了非常多的优化,膨胀式的锁分配策略就是其一。理解偏向锁、轻量级锁、重量级锁的要解决的基本问题,几种锁的分配和膨胀过程,有助于编写并优化基于锁的并发程序。内置锁的分配和膨胀过程较为复杂,限于时间和精力,文中该部分内容是根据网上的多方资料整合而来;仅为方便查阅,后面继续分析JVM源码的时候也有个参考。如果对各级锁已经有了基本了解,读者大可跳过此文。隐藏在内置锁下的基本问题内置锁是JVM提供的最便捷的线程同步工具,在代码块或方法声明上添加synchronized关键转载 2021-06-15 17:29:33 · 187 阅读 · 0 评论