首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JAVA 后端那些事
空无
创建于2021-05-10
订阅专栏
专注分享 JAVA、网络、IO、JVM、GC 等技术干货,帮助开发人员成长
等 103 人订阅
共43篇文章
创建于2021-05-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Java 中的强引用/软引用/弱引用/虚引用以及 GC 策略
垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。 Java 语言出来之前,大家都在拼命的写 C 或者 C++ 的程序,而此时存在一个很大的…
记一次通过Arthas定位解决spring-boot中内嵌tomcat的Bug问题
公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用。 最近在优化接口的响应时间,优化了代码之后,但是时间还是达不到要求;有一个诡异的100ms左右的耗时问题,在接口中打印了请求处理时间后,和调用方的响应时间还有差…
细说 Http 中的 Keep-Alive 和 Java Http 中的 Keep-Alive 机制
这个词看着有点熟,很多地方好像都见过。 TCP 的 KeepAlive,Http 的 KeepAlive,现在就连一些前端框架都有类似 KeepAlive 的东西了(比如 VUE.js,保持路由)。 本文介绍 HTTP 和 TCP 中的 KeepAlive 机制,其他方面不在本…
一个JDK线程池BUG引发的GC机制思考
逻辑很简单,线程池执行了一个带结果的异步任务。但是最近有偶发的报错: 第一个思考的问题是:线程池为什么关闭了,代码中并没有手动关闭的地方。看一下Executors.newSingleThreadExecotor的源码实现: 这里创建的实际上是一个FinalizableDeleg…
这可能是最清晰易懂的 G1 GC 资料
G1 是一款分代的 (generational),增量的 (incremental),并行的 (parallel),移动式(evacuating)的,软实时的垃圾回收器。其最大特点是暂停时间可配置,我们可以配置一个最大暂停时间,G1 就会尽可能的在回收的同时保证程序的暂停时间在…
SpringBoot可执行Jar很方便,但相关的背景知识你了解吗
在查阅资料后才知道,Uber Jar 的原单词是Über Jar,是德语单词,可以解释为 "Over",结束的意思,不过在实际的上下文中,翻译为 “一切” 可能更合适。 这个术语最初是由开发人员创造的,他们认为将所有依赖项和自己的代码放入一个 jar 文件中可以解决很多冲突问题…
用了这么久的@Transactional,你真的了解吗?
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。_一致状态_的含义是数据库中的数据应满足完整性约束。 隔离性(Isolat…
用了这么多日志框架,也试试自己写一个?手把手教你从零写一个日志框架
Java 里的各种日志框架,相信大家都不陌生。Log4j/Log4j2/Logback/jboss logging 等等,其实这些日志框架核心结构没什么区别,只是细节实现上和其性能上有所不同。本文带你从零开始,一步一步的设计一个日志框架 提到日志框架,最容易想到的核心功能,那就…
在 IDEA 中 DEBUG 的各种奇技淫巧
Java 中各种 IDE 的 Debug 功能,都是通过 Java 提供的 Java Platform Debugger Architecture (JPDA) 来实现的。 借助 Debug 功能,可以很方便的调试程序,快速的模拟 / 找到程序中的错误。 Interllij I…
JDK中为了性能大量使用的Unsafe类,你会用吗?
Unsafe 是位于 sun.misc 包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升 Java 运行效率、增强 Java 语言底层资源操作能力方面起到了很大的作用(比如JUC/NIO)。但由于 Unsaf…
细说 Netty 中的粘包和拆包
确实,我也认为这是个伪命题,tcp 这种双工面向流的协议,本来就没有粘拆包的说法,包的界限问题应该需要由上层的应用处理。 应用程序写入的数据大于套接字缓冲区大小,这将会发生拆包。 应用程序写入数据小于套接字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发生粘包。 进行…
手把手教你写一个Java Agent,实现“免费激活”
再或者用过一些APM工具,在JVM启动脚本上增加了-javaagent:/path/to/apm-agent.jar,就可以自动进行追踪。再或者用过Arthas之类的JVM诊断工具,这些工具都是通过Java Agent的技术去实现的。** 比如上面说的“免费激活”,其实就是在运…
JAVA日志框架适配/冲突解决方案大全
上面的这些问题,基本都是由于多套日志框架共存或配置错误导致的。那么为什么会出现共存或者冲突呢? 日志抽象/门面,他们不负责具体的日志打印,如输出到文件、配置日志内容格式等。他们只是一套日志抽象,定义了一套统一的日志打印标准,如Logger对象,Level对象。 slf4j(Si…
你还在用Logback?Log4j2的异步性能已经无敌了,还不快试试
Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。 Apache Log4j…
GC调优实际案例 - 年轻代 GC 长暂停的分析与解决
《深入理解 Java 虚拟机》一书中提到,对象晋升年龄的阈值是动态判定的。 315529928 total这个是一个累加值,表示小于等于当前分组年龄的对象总大小。先把对象按年龄分组,age 1 的分组 total 为 age 1 总大小(前面的 xxx bytes),age 2…
别再纠结线程池大小/线程数量了,没有固定公式的
那么理论上,我一个线程只需要不停的执行指令,就可以跑满一个核心的利用率。 从上图可以看到,CPU利用率和上一步一样,还是所有核心100%,不过此时负载已经从11.x增加到了22.x(load average解释参考https://scoutapm.com/blog/unders…
给顶级开源项目 Spring Boot 贡献代码是一种什么样的体验?
Spring Boot的默认日志框架一直是 Logback,支持的很好。而且针对Logback,Spring Boot还提供了一个扩展功能 - <springProfile>,这个标签可以在Logback的XML配置文件中使用,用于配合Spring的profile来区…
ClassLoader 中除了“双亲委派”,这些细节更应该了解
提到 ClassLoader,最先想到的一定是“双亲委派”了,加载类时优先使用父类加载器(parent classloader),不过除了这个委托模型之外,还有很多细节值得研究!
JDK/Dubbo/Spring 三种 SPI 机制,谁更好?
SPI 有什么用?JDK/Dubbo/Spring 三种 SPI 机制,谁更好?本文全部告诉你!!!
下一页