jdk9模块化知识和规则入门

jdk9模块化知识和规则入门

Java系列 3年前 (2021-01-25) 浏览: 965 评论: 0

要使用Java9模块系统,首先需要理解它。在本教程中,我将向您介绍: 模块的基本定义、内容和配置 Java9中封装的工作原理 如何定义接口 如何列出可用模块 java8和java9应用程序的比较 如何使用模块的基本规则 类路径和模块路径的区别 现在,让我们来认识一下Java语言的新一等公民:Module。 定义Java9模块 模块是代码、数据和资源的集合。它是一组相关的包和类型(类、抽象类、接口等

为什么反射慢?

为什么反射慢?

Java系列 4年前 (2020-11-09) 浏览: 963 评论: 0

现在您仍然从其他开发人员那里听到的一句话是,Java不仅速度慢,而且反射是JDK中异常缓慢的一部分。这篇文章是为那些相信或希望与信徒进行建设性对话的人准备的。 这篇文章中介绍的技术主题已经有很多年了,但是当你发现它们的时候,有些东西会让你大吃一惊。因此,即使您是一个经验丰富的Java开发人员,您也可以在这里找到一些有趣的地方。 有人怎么能测量出反射是慢的呢?第一个想法是运行一个基准应用程序。这可以

为什么我的Java应用程序被OOMKilled了?

为什么我的Java应用程序被OOMKilled了?

Java系列 3年前 (2021-02-22) 浏览: 942 评论: 0

在AWS云上,我们运行并部署容器化应用程序到我们的PaaS管道。像我们这样在Docker中运行Java应用程序的人,可能已经遇到过JVM在容器中运行时无法准确检测可用内存的问题。jvm没有准确地检测Docker容器中可用的内存,而是查看机器的可用内存。这可能导致在容器内运行的应用程序在尝试使用超出Docker容器限制的内存量时被终止的情况。 JVM对可用内存的错误检测与Linux tools/li

Java16和Java17的新特性

Java16和Java17的新特性

Java系列 2年前 (2022-01-04) 浏览: 895 评论: 0

Java平台的发展比以往任何时候都要快。让我们来探讨一下今年在Java 16和Java 17的Java创新方面为我们准备了什么。 “Java?这不是前一个时代发展缓慢的企业语言吗?” 虽然这是一种可以理解的情绪,但事实却截然不同。从2018年的Java10开始,Java开发工具包(JDK)每年发布两次,Java平台的发展比以往任何时候都要快。让我们来探索一下现在Java创新方面为我们准备了什么!

Java开发利器之重试器

Java开发利器之重试器

Java系列 4年前 (2020-02-12) 浏览: 901 评论: 0

在平时开发中经常会遇到需要调用接口和外部服务的场景,但是有些接口服务方不能立即返回数据,而是需要处理一段时间才能返回真实的业务数据,如果没有处理完则直接返回一个中间状态的结果。 业务场景: 代码中存在依赖不稳定的场景,需要使用重试获取预期结果或者尝试重新执行逻辑不立即结束,比如远程接口访问,数据加载访问,数据上传校验等 对于异常需要重试的场景,同时希望把正常逻辑和重试逻辑解耦 对方接口不支持异步回

比Java反射更快的替代方案

比Java反射更快的替代方案

Java系列 4年前 (2020-11-06) 浏览: 867 评论: 0

invokedynamic 字节码指令是用来避免非常慢的反射的技术的实现者。简而言之,invokedynamic(或“indy”)是java7中引入的最伟大的东西,目的是为通过动态方法调用在JVM之上实现动态语言铺平道路。后来它还允许java8中的lambda表达式和方法引用以及java9中的字符串连接从中受益。 简而言之,下面我将利用lambdametfactory和MethodHandle来动

Java8的元空间到底是什么?

Java8的元空间到底是什么?

Java系列 4年前 (2020-09-30) 浏览: 839 评论: 0

Java8中关于Java7的一个重大变化是用元空间替换永久代。 我们将通过提醒一些关于永久代的信息来开始本文。主要,我们将列出它的缺点,以便更好地理解Java8中用元空间替换它的原因。第二部分将描述更多的新空间在内存中。最后一部分将介绍分析元空间中发生的事情的不同方法。 永久代Permgen缺陷 永久代是一个包含JVM所需数据的池,例如类或方法。当JVM想要创建给定类的新实例时,此数据很有用。通常

Java反射的利弊

Java反射的利弊

Java系列 4年前 (2020-10-29) 浏览: 831 评论: 0

这篇文章将介绍如何使用java reflection api在运行时访问和使用一些相同的信息。为了帮助那些已经了解反射基础知识的开发人员保持有趣,我将介绍反射性能与直接访问的比较。 使用反射不同于普通的Java编程,因为它处理元数据——描述其他数据的数据。Java语言反射访问的特定类型的元数据是JVM中类和对象的描述。反射使您能够在运行时访问各种类信息。它甚至允许您读写字段和调用在运行时选择的类的

简洁高效的Eclipse Collections API

简洁高效的Eclipse Collections API

Java系列 3年前 (2021-09-29) 浏览: 824 评论: 0

在本文中,您将了解Eclipse Collections集合提供的一些有用特性。您是否觉得Java Streams API有时还不够?我认为值得一看Eclipse集合。让我们讨论一下原因。 可变的或不变的 如果你喜欢Kotlin collections API,这个概念会吸引你。您可以创建可变和不可变集合。只有可变集合提供了添加新对象的方法。 Person p1 = new Person("Tes

Java递归函数与算法讲解系列三

Java递归函数与算法讲解系列三

Java系列 4年前 (2020-10-16) 浏览: 821 评论: 0

递归跟踪 为了产生不同形式的递归跟踪,我们在Java实现中包含了一个无关的print语句。该输出的精确格式有意地镜像了一个名为du的经典Unix/Linux实用程序(用于“disk usage 磁盘使用”)生成的输出。它报告一个目录所使用的磁盘空间量和嵌套在其中的所有内容,并可以生成一个详细的报告。 当在示例文件系统上执行时,我们对diskUsage方法的实现会产生下图给出的结果。在算法的执行过程

JVM Code Cache代码缓存简介

JVM Code Cache代码缓存简介

Java系列 2年前 (2022-02-07) 浏览: 799 评论: 0

在本文中,我们将了解JVM的Code Cache 代码缓存。 什么是Code Cache? 简而言之,JVM Code Cache (代码缓存)是JVM存储编译成本机代码的字节码的区域。我们将可执行本机代码的每个块称为nmethod。nmethod可能是一个完整的或内联的Java方法。 即时(JIT)编译器是代码缓存区的最大消费者。这就是为什么一些开发人员将此内存称为JIT代码缓存。 Code C

字节码修改工具Javasisst简介

字节码修改工具Javasisst简介

Java系列 3年前 (2021-08-18) 浏览: 799 评论: 0

在本文中,我们将研究Javasisst(http://www.javassist.org/)库。 简单地说,这个库通过使用高级API比JDK中的API更简单地操作Java字节码。 Maven依赖 要将Javassist库添加到我们的项目中,我们需要将Javassist添加到pom中: <dependency> <groupId>org.javassist</group

Java 8中的Collectors API详解

Java 8中的Collectors API详解

Java系列 2年前 (2022-03-14) 浏览: 787 评论: 0

在本文中,我们将介绍Java8的收集器Collectors,它们用于处理流的最后一步。 如果我们想了解如何利用收集器Collectors的能力进行并行处理,我们可以看看这个项目:https://github.com/pivovarit/parallel-collectors Stream.collect() 方法 Stream.collect()是Java 8的流API的终端方法之一。它允许我们对

Java17快多少?

Java17快多少?

Java系列 3年前 (2021-11-02) 浏览: 785 评论: 0

Java17附带了许多新特性和增强功能。然而,其中大多数都需要代码更改才能从中受益。除了性能。只需切换JDK安装,您就可以获得免费的性能提升。但是提升多少?值得吗?让我们通过比较JDK17、JDK16和JDK11的基准来找出答案。 基准方法 硬件:一台稳定的机器,无需运行任何其他要求计算的进程,具有Intel®Xeon®Silver 4116@2.1 GHz(总共12核/24线程)和128 GiB

Java递归算法讲解一

Java递归算法讲解一

Java系列 4年前 (2020-10-11) 浏览: 770 评论: 0

从另一个函数调用一个函数的想法立即暗示了函数调用自身的可能性。Java中的函数调用机制支持这种可能性,即递归。 下面这个视频通过代码讲述了递归的基本原理: 递归算法示例 递归的“Hello,World”是阶乘函数,它是由等式为正整数n定义的 public class Factorial { // return n! // precondition: n >= 0 and n <= 20

Java反射的用途系列二

Java反射的用途系列二

Java系列 4年前 (2020-10-24) 浏览: 764 评论: 0

针对字段的Java反射 反射API提供了几种方法来分析类字段并在运行时修改它们的值,在本节中,我们将研究一些常用的方法反射函数。   获取公共字段 在上一篇文章中,我们看到了如何获取类的所有公共字段的列表。反射API还提供了通过getField()方法获取类的特定公共字段的方法。这个方法先在指定的类引用中查找字段,然后在超级接口中查找,然后在超级类中查找。 Field field = C

Java递归与迭代的优缺点

Java递归与迭代的优缺点

Java系列 4年前 (2020-10-10) 浏览: 760 评论: 0

递归在某些算法中更难理解。一个可以自然地迭代表达的算法,如果递归地表达,可能就不那么容易理解了。 没有可移植的方法来判断深度递归可以在多大程度上不引起麻烦(机器有多少“堆栈空间”),也没有办法从太深的递归中恢复(“堆栈溢出”)。 你不能递归地做一些好事。例如,如果我要遍历一个二叉树,我可能想用For循环来完成: tree t; item *i; for (i = first (t); i != N

JAR和WAR文件之间有什么区别?

JAR和WAR文件之间有什么区别?

Java系列 3年前 (2021-08-14) 浏览: 740 评论: 0

JAR和WAR文件之间的主要区别在于,JAR文件是包含Java类文件、相关元数据和资源的文件,这些文件聚合到一个文件中以执行Java应用程序,而WAR文件是包含Servlet、JSP、HTML、JavaScript和开发web应用程序所需的其他文件的文件。 Java是一种高级通用编程语言,用于开发各种领域的应用程序。Java之所以流行是因为多种原因。Java源代码编译成称为字节码的中间代码。任何具

Java开发规范之性能篇

Java开发规范之性能篇

Java系列 4年前 (2020-02-17) 浏览: 745 评论: 0

JAVA开发中,大部分的性能问题原因并不在于JAVA语言本身,而是我们用这些语言写的程序,所以养成良好的编码习惯非常重要。 下面给大家分享一些日常开发中比较常见的典型案例: 一. 类中的内部方法声明为private 很多同学觉得这个无所谓,写代码时喜欢一个类里的所有方法都是public的(原因大家都懂),美其名曰:便于后期扩展。。 对于不需要外部访问的方法改为私有的,不仅仅是因为面向对象的思想,符

了解Tomcat中的配置文件

了解Tomcat中的配置文件

Java系列 3年前 (2021-02-25) 浏览: 741 评论: 0

  在深入了解Tomcat服务器中配置文件的含义之前,我们可以访问另一篇关于为javaweb配置Tomcat的文章。 我们开始吧。 启动、停止和重新启动Tomcat 为了启动、停止和重新启动Tomcat,我们需要访问Tomcat的bin目录。脚本文件可以用.sh(Unix的shell脚本文件)和.bat(Windows的批处理文件)终止。 下表描述了我们需要知道的bin目录中每个文件的含

登录

忘记密码 ?

切换登录

注册