JDK
-
阿里面试:NIO为什么会导致CPU100%?
升级 Java 版本:早期的 JDK 版本中(JDK 1.7 之前),这个 bug 较为常见,但后续的 JDK 更新中,Oracle 和 OpenJDK 团队已经着手解决了这一问题,确保使用最新的 Java 版本可以减少遇到此问题的风险。但网上依然有人发现即使在 JDK 1.8 中,使用原生的 NIO 依然会发生空轮询的问题,只是发生的概率变低了而已。
-
SpringBoot3使用虚拟线程一定要小心了
虚拟线程在项目中应用时你稍不注意就可能出现问题。本篇文章将要讲述的是在非Web应用的情况下使用虚拟线程出现的问题(并非BUG)。
-
强大的异步任务处理类CompletableFuture使用详解
Future是从JDK1.5开始有的,目的是获取异步任务执行的结果,通常情况会结合ExecutorService及Callable一起使用。
-
我们一起聊聊 Java Steam 常用 API
现在 Java 17 和 Java 11 基本上可以和 Java8 平分 JDK 装机比例。下面是我常用的一些 Strem API 操作。除了分组、转换、排序,如果大家还有更多常用的 API 可以一起留言交流。分组
-
JDK为什么废弃永久代,而引入元空间
在原来的永久代划分中,永久代用来存放类的元数据信息、静态变量以及常量池等。现在类的元信息存储在元空间中,静态变量和常量池等并入堆中,相当于原来的永久代中的数据,被元空间和堆内存给瓜分了。
-
Jenkins一键打包部署SpringBoot应用步骤详解
关于JDK的选择,自1.8版本收费之后,我们大多数选择openjdk作为生产环境的运行时环境,和大多数软件安装包一样,在CentOS服务器上,我们可以选择yum方式和下载压缩包的方式进行安装。
-
Java8中新增新特性异步编程之CompletableFuture
Future是从JDK1.5开始有的,目的是获取异步任务执行的结果,通常情况会结合ExecutorService及Callable一起使用。
-
面试官:为什么JDK动态代理只能代理接口?
我们使用CGLIB的Enhancer类和MethodInterceptor接口来创建代理对象。RealObject类不再需要实现接口,而是直接作为代理对象的类型。在CGLIBProxy类中,我们实现了MethodInterceptor接口,并在intercept()方法中添加了额外的逻辑。
-
珍贵的线程资源,JDK VS Tomcat
线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。
-
亚毫秒GC暂停到底有多香?JDK17+ZGC初体验
在本篇文章中,我们探讨了如何升级到JDK 17,并使用最新一代垃圾回收器ZGC。经过实践和测试,我们发现升级后的系统在垃圾回收方面表现出色,暂停时间被有效控制在1毫秒内。
-
为什么同样的代码我就是跑不起来,同事却能跑起来?
反正跑不起来肯定有原因,不是代码原因就是环境原因,一般经过上面几个方式的排查,都能找到问题了,如果再不行,重新查询拉取代码库也未尝不是一个方法,当然如果实在解决不了,咨询前辈也是一个很有效的方法。
-
HashMap底层实现原理
JDK1.8中,是通过hashCode()的高16位异或低16位实现的:(h=k.hashCode())^(h>>>16),主要是从速度,功效和质量来考虑的,减少系统的开销,也不会造成因为高位没有参与下标的计算,从而引起的碰撞。
-
为什么更推荐使用组合而非继承关系?
不知道大家项目中继承用的多吗?其实在JDK中就有许多违反这条原则的地方,比如栈Stack类并不是Vector,不应该有继承关系,但是实际上就是继承自Vector。
-
别再问问JDK的Stream怎么用了好么?面试官
关于Stream 会用就好,真到面试问到了,知道这些关键字都是干什么用的,也就可以了,如果还有人问这个好几年前的东西,那么这个公司好像也没有什么进去的必要了。你说是么?
-
甲骨文加仓Java,数据库被榨干了?
在云时代,数据库的缩水能否给甲骨文一些启示呢?对待 Java 的发展,又会做出怎样的动作呢?