Java踩坑记系列之线程池

Java系列 4年前 (2020-02-16) 浏览: 4950 评论: 2

线程池大家都很熟悉,无论是平时的业务开发还是框架中间件都会用到,大部分都是基于JDK线程池ThreadPoolExecutor做的封装,比如tomcat的线程池,当然也有单独开发的,但都会牵涉到这几个核心参数的设置:核心线程数,等待队列,最大线程数,拒绝策略等。 先说下我们项目组在使用线程池时踩到的坑: 线程池的参数设置一定要结合具体的业务场景,区分I/O密集和CPU密集,如果是I/O密集型业务,

Java 17的一些新特性

Java系列 2年前 (2022-03-07) 浏览: 479 评论: 2

Java17将是一个长期支持的LTS版本。 您一定知道Java采用了6个月的发布周期。也就是说,它将每6个月发布一个新版本的Java。每隔3年,LTS版本就会发布一次。目前,Java 11是LTS版本,于2018年9月发布。但在Java17发布后,它将是最新的LTS支持。 许多组织依赖LTS版本,所以他们使用的是Java11。但在Java17发布后,他们将使用Java17(可能)。 自从将Java

Spring Boot使用GraphQL入门

Java系列 3年前 (2021-10-31) 浏览: 3298 评论: 1

GraphQL是来自Facebook的一个相对较新的概念,被宣传为RESTforWebAPI的替代品。 本文将介绍如何使用Spring Boot设置GraphQL服务器,以便将其添加到现有应用程序或用于新应用程序。 什么是GraphQL? 传统的RESTAPI使用服务器管理的资源概念。这些资源可以按照各种HTTP谓词以一些标准方式进行操作。只要我们的API符合资源概念,它就可以很好地工作,但当我们

使用方法引用简化Java中的函数式编程

Java系列 2年前 (2021-12-13) 浏览: 508 评论: 1

与lambdas一起,JavaSE8将方法引用引入Java语言。本文简要概述Java中的方法引用,然后通过Java代码示例开始使用它们。在本文结束时,你将了解如何使用方法引用引用类的静态方法、绑定和未绑定的非静态方法以及构造函数,以及如何使用它们引用超类和当前类类型中的实例方法。文还将了解为什么许多Java开发人员采用lambda表达式和方法引用作为匿名类的更干净、更简单的替代方案。 方法引用 有

Java8的元空间到底是什么?

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

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

反射API:Java的黑科技

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

在本文中,我将向您介绍一种Java程序员只在看似不可能的情况下使用的能力。Java的黑暗面是反射API 在Java中,反射是使用java reflection api实现的。 什么是Java反射? 互联网上有一个简短、准确和流行的定义。反射(从拉丁语reflexio晚期到turn-back)是一种在程序运行时探索有关它的数据的机制。反射允许您探索有关字段、方法和类构造函数的信息。 反射允许您处理编

NoClassDefFoundError和ClassNotFoundException的区别

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

在本文中,我们将了解NoClassDefFoundError和ClassNotFoundException之间的区别。这是增加java异常知识的问题之一。 我们将研究NoClassDefFoundError和ClassNotFoundException的区别、相似性和示例。 NoClassDefFoundError和ClassNotFoundException之间的差异 Error与Excepti

Java9 Flow-Reactive Stream编程

Java系列 3年前 (2021-07-06) 浏览: 1070 评论: 0

在本文中,将通过一个示例了解Java9中的FlowAPI如何帮助我们使用新的发布者和订阅者接口构建反应模式。通过本文你可以了解这种新的编程风格及其优缺点。所有代码都在GitHub上:https://github.com/mechero/java-9-flow-reactive,因此您也可以自己运行或尝试一些修改。 Java9的Flow API简介 Java9在这个古老但非常流行的编程语言中引入了一

Java中的函数式编程

Java系列 3年前 (2021-10-17) 浏览: 321 评论: 0

函数式编程是一种编程范式,其中程序是通过应用和组合函数来构造的。它是一种声明式编程范式,其中函数定义是表达式树,每个表达式树返回一个值,而不是一系列改变程序状态的命令语句 维基百科 Java8引入了Lambda形式的函数式编程。术语Lambda来自Lambda演算,用于描述计算。 Lambda 我们可以将lambda表达式视为一个匿名函数,可以将其分配给变量并传递给方法,该方法接受函数接口作为参数

Java9中新增的Collector

Java系列 2年前 (2022-05-09) 浏览: 268 评论: 0

Java 8中添加了收集器Collectors,这有助于将输入元素累积到诸如Map、List和Set等可变容器中。 在本文中,我们将探讨Java 9中添加的两个新收集器:Collectors.filtering 和 Collectors.flatMapping。flatMapping与收集器结合使用。通过提供智能元素集合进行分组。 Filtering Collector Collectors.fi

如何在Maven中运行集成测试

Java系列 7个月前 (09-25) 浏览: 175 评论: 0

一般情况下在Maven构建中添加集成测试有点麻烦,这是因为标准目录布局只有一个测试目录(src/test)。 如果我们想使用标准目录布局并将集成测试添加到Maven构建中,我们有两个选项: 首先,我们可以将集成测试添加到与单元测试相同的目录中。这是一个糟糕的想法,因为集成测试和单元测试是完全不同的概念,这种方法迫使我们将它们混合在一起。此外,如果我们遵循这种方法,从IDE运行单元测试将成为一件麻烦

Java递归算法讲解二

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

递归算法示例 布朗桥 public class Brownian { // midpoint displacement method public static void curve(double x0, double y0, double x1, double y1, double var, double s) { // stop if interval is sufficiently smal

Java9的新特性

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

Java9概述 Java9具有丰富的特性集。虽然没有新的语言概念,但是新的api和诊断命令肯定会引起开发人员的兴趣。 在本文中,我们将对一些新特性进行快速、高层次的研究;这里提供了新特性的完整列表。 模块化系统——Jigsaw项目 让我们从一个大问题开始——将模块化引入Java平台。 模块化系统提供类似于OSGi框架系统的功能。模块具有依赖性的概念,可以导出公共API并保持实现细节隐藏/私有。 这

Java并行流Parallel Streams介绍

Java系列 3年前 (2021-03-13) 浏览: 2829 评论: 0

Java并行流Parallel Streams是Java8和更高版本的一个特性,用于利用处理器的多个核心。通常,任何java代码都有一个处理流,在这里它是按顺序执行的。然而,通过使用并行流,我们可以将代码分成多个流,这些流在不同的内核上并行执行,最终的结果是各个结果的组合。然而,处理的顺序不在我们的控制之下。 因此,建议在以下情况下使用并行流:无论执行顺序如何,结果不受影响,一个元素的状态不影响另

Java Parallel Stream

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

Java8引入了并行流parallel stream的概念来进行并行处理。由于廉价的硬件成本,我们现在拥有更多的cpu核,因此可以使用并行处理来更快地执行操作。 让我们通过简单的例子来理解 package org.arpit.java2blog.java8; import java.util.Arrays; import java.util.stream.IntStream; public cla

JNDI是什么?

Java系列 2年前 (2021-12-17) 浏览: 495 评论: 0

Java命名和目录接口是Java编程语言中接口的名称(JNDI)。它是一个API(应用程序接口),与服务器一起工作,可以使用命名约定从数据库获取文件。命名约定可以是单个短语或单词。还可以将其合并到套接字中,使用服务器在项目中传输数据文件或平面文件来实现套接字socket编程。它也可以在浏览器中的网页中使用,其中有许多目录的实例。JNDI为Java用户提供了使用Java编码语言在Java中搜索对象的

HashSet的removals()方法注意事项

Java系列 2年前 (2022-06-20) 浏览: 250 评论: 0

我有一个集合,实际上是一个HashSet。我想从中删除一些item…其中许多item可能不存在。事实上,在我们的测试用例中,“removals”集合中的所有项都不在原始集合中。这听起来——实际上也是——非常容易编码。毕竟,我们已经准备好了。removeAll来帮助我们,对吗? 让我们把它变成一个小测试。我们在命令行上指定“source”set的大小和“removals”集合的大小,并构建它们。so

Java反射的用途系列二

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

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

如何在Windows和Linux上为Java设置classpath

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

  Java中的classpath是什么? Java中的classpath类路径是指向目录的路径或目录列表,类加载器用它在Java程序中查找和加载类。可以使用不区分大小写的Classpath环境变量、-cp或-Classpath命令行选项或中的Classpath属性来指定Classpath在JAR文件中的manifest.mf文件。在这篇Java文章中,我们将学习什么是Java中的cla

Error: Could not find or load main class

Java系列 3年前 (2021-04-30) 浏览: 16721 评论: 0

在从系统控制台运行Java类(例如Hello world应用程序)时,我们可能会遇到此错误:Could not find or load main class(找不到或加载主类)。我们得到这个错误是因为我们错误地试图在类中使用java命令运行main() 错误原因-无法找到或加载主类 考虑下面的Java类,它有一个main()方法。我们正在尝试使用命令行执行MainClass这个类。 packag

登录

忘记密码 ?

切换登录

注册