线程池ForkJoinPool简介

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

ForkJoinPool线程池最大的特点就是分叉(fork)合并(join),将一个大任务拆分成多个小任务,并行执行,再结合工作窃取模式(worksteal)提高整体的执行效率,充分利用CPU资源。 一. 应用场景 ForkJoinPool使用分治算法,用相对少的线程处理大量的任务,将一个大任务一拆为二,以此类推,每个子任务再拆分一半,直到达到最细颗粒度为止,即设置的阈值停止拆分,然后从最底层的任

Java从永久代PermGen到MetaSpace元空间的迁移

爪哇岛 4年前 (2020-09-26) 浏览: 710 评论: 0

Java8永久代被移除 OutOfMemoryError,这是由于您的HotSpotVM的PermGen空间耗尽造成的。这个问题很常见,通常是由于应用程序的动态重新部署(例如,从应用程序服务器加载和卸载Java EE应用程序)通常会触发类元数据泄漏;最终导致固定PermGen空间完全耗尽。 然而,oraclejrockit和ibmjre一开始并没有使用PermGen空间。它们使用C堆(本机内存)来

Java反射和内省教程

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

什么是反射? “反射通常被需要检查或修改运行在Java虚拟机中的应用程序的运行时行为的程序所使用。”这个概念经常与内省introspection混合在一起。以下是它们在Wiki中的定义: 内省是程序在运行时检查对象类型或属性的能力。 反射是程序在运行时检查和修改对象的结构和行为的能力。 从他们的定义来看,内省是反射的一个子集。有些语言支持自省,但不支持反射,例如C++。 内省示例:instance

outofmemory怎么解决二

jvm 3年前 (2020-11-29) 浏览: 510 评论: 0

在上一篇文章中我们讲了引用外部类的内部类导致内存溢出的问题以及如何解决,本节继续分析其他可能引起java内存泄露的场景: 通过 finalize() 方法 终结器finalizers的使用是潜在内存泄漏问题的另一个来源。每当类的finalize()方法被重写时,该类的对象不会立即被垃圾回收。相反,GC将它们排队等待最后确定,这将在稍后的时间点发生。 另外,如果我们的应用程序不能更快地完成或最终处理

java堆外内存泄漏排查

jvm 3年前 (2020-12-31) 浏览: 4906 评论: 0

大多数Java虚拟机内存不足的问题都发生在堆上,但这一次被证明有点不同。 Java虚拟机(JVM)具有自动内存管理功能,因此Java开发人员不需要关心对象回收。但是他们仍然应该关注内存,因为内存不是无限的,我们有时确实会看到内存不足的错误。对于内存不足的问题,通常有两个可能的原因: JVM的内存设置太小 应用程序内存泄漏 对于第一种类型,使用更多内存很容易修复;只需更改一些JVM内存设置参数。对于

Java10的新特性

jvm 3年前 (2021-01-30) 浏览: 832 评论: 0

Java10介绍 JDK10是JavaSE10的一个实现,于2018年3月20日发布。 在本文中,我们将介绍和探讨JDK10中引入的新特性和更改。 1. 局部变量类型推断 在Java 9之前,我们必须明确提到局部变量的类型,并确保它与用于初始化它的初始值设定项兼容: String message = "Good bye, Java 9"; 在Java 10中,我们可以这样声明局部变量: @Test

微服务和SOA有什么区别?

微服务 3年前 (2021-03-03) 浏览: 1059 评论: 0

微服务是新的SOA吗?人们还在谈论SOA吗?让我们来研究一下这两个架构之间的区别。 在上一篇博客“什么是微服务”中,您了解到具有分布式体系结构的SOA和微服务比单一体系结构具有显著的优势。在这个博客中,我将解释基于分层的体系结构,并告诉您微服务和SOA体系结构之间的区别。 在深入探讨微服务和SOA之间的区别之前,让我先告诉您单片体系结构、SOA和微服务之间的基本区别: 用外行的话说,一个整体类似于

Spring5新特性和增强功能

相关技术 3年前 (2021-04-04) 浏览: 479 评论: 0

Spring5是第一个主要版本,距离SpringFramework4.0快四年了。在此期间,大多数增强都是在springboot项目中完成的。在本文中,我们将快速介绍Spring5.0发行版中的一些令人兴奋的特性。 Baseline升级 要构建和运行Spring5应用程序,您至少需要JDK8和JavaEE7。以前的JDK和javaee版本不再受支持。具体来说,Java EE 7包括- Servle

Spring5新特性一览

相关技术 3年前 (2021-05-06) 浏览: 1389 评论: 0

Spring Framework 5.0是自2013年12月发布版本4以来Spring框架的第一个主要版本。Spring框架项目负责人juergenhoeller于2016年7月28日宣布发布了第一个Spring框架5.0里程碑(5.0m1)。 我对Spring Framework 5.0中的新特性和增强感到兴奋。 在较高的层次上,Spring Framework 5.0的功能可以分为: JDK基

spring5新特性一览

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

Spring5于2017年9月发布,正式发布(GA),标志着自2013年12月以来的第一个主要Spring框架发布。它提供了期待已久的改进,并采用了一种新的编程范式,该范式基于反应性宣言中提出的反应性原则。 这个版本是Spring框架长期以来最激动人心的版本。与Java兼容™ spring5集成了jdk8和jdk9,为端点和web应用程序开发提供了一种改变游戏规则的方法。 事实上,反应式编程是本次

软件工程领域建模

相关技术 3年前 (2021-07-09) 浏览: 639 评论: 0

领域建模被理解为抽象建模。站点模型可以是在缺陷域中显示的想法或对象的说明。它还捕获了这些对象之间的明显关系。这类抽象对象的样本区域单位为图书、图书登记簿、会员登记簿、图书馆会员等。 建议的策略是快速生成一个粗略的抽象模型,只要压力是发现需求中表达的明显想法,而推迟深入的调查。后来在整个事件方法中,抽象模型被逐步地细化和扩展。领域分析中已知的3种对象。 整个领域分析中已知的对象分为3种类型: 边界对

基于微软的Dapr构建微服务系统

相关技术 3年前 (2021-08-10) 浏览: 781 评论: 0

当你第一次读到微软本周发布的最新开源项目Dapr时,你可能会觉得它是另一个服务网格。相反,Dapr在一篇博客文章中被描述为“一个开源、可移植、事件驱动的运行时,使开发人员能够轻松构建在云和边缘上运行的弹性、微服务无状态和有状态的应用程序。” 虽然该项目在其Istio服务网格实现中使用了特使代理使用的熟悉的侧车架构,但Azure项目管理总监Gabe Monroy在一次电子邮件采访中解释说,Dapr作

使用Byte Buddy生成运行时代码

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

Java平台的一个经常被忽略的特性是在JVM的解释器或即时(JIT)编译器执行程序之前修改程序字节码的能力。虽然此功能由工具使用,例如进行对象关系映射的探查器和库,但应用程序开发人员很少使用它。这代表了未开发的潜力,因为在运行时生成代码允许轻松实现跨领域问题,如日志记录或安全性,有时以模拟或编写性能数据收集代理的形式更改第三方库的行为。 目前有三个主要的库用于生成字节码: ASM cglib Ja

Azure Service Fabric简介

相关技术 3年前 (2021-10-13) 浏览: 498 评论: 0

Azure Service Fabric是一个分布式系统平台,可轻松打包、部署和管理可扩展且可靠的微服务和容器。ServiceFabric还解决了开发和管理云本机应用程序的重大挑战。 Service Fabric的一个关键区别在于它非常注重构建有状态的服务。您可以使用Service Fabric编程模型或运行以任何语言或代码编写的容器化有状态服务。除了Azure之外,您还可以在任何地方创建Serv

基于Spring Boot的GraphQL项目

相关技术 2年前 (2022-01-13) 浏览: 567 评论: 0

这是一篇面向那些想用Java创建GraphQL服务的人。它需要一些Spring Boot和Java知识,虽然我们简要介绍了GraphQL,但本教程的重点是用Java开发GraphQL服务器。 3分钟内搭建GraphQL GraphQL是一种从服务器检索数据的查询语言。在某种程度上,它是REST、SOAP或gRPC的替代品。 假设我们要从在线商店后端查询特定书籍的详细信息。 使用GraphQL,您向

你真的了解java.util.Date吗?

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

很少有类能像java.util.Date那样在堆栈溢出方面引起如此多的类似问题,有四个原因: 日期和时间工作基本上相当复杂,而且充满了拐弯抹角的情况。这是可以管理的,但你确实需要花一些时间来理解它。 java.util.Date类在很多方面都很糟糕(详情如下)。 一般来说,开发人员对它的理解很差。 它被库作者严重滥用,进一步加剧了混乱。 了解java.util.Date最重要的事情为: 如果可能的

JSONassert:简化单元测试中的JSON字符串测试

Java系列 1年前 (2023-03-02) 浏览: 311 评论: 0

用更少的代码编写 JSON 单元测试。非常适合测试 REST 接口。 像比较字符串一样编写 JSON 测试。JSONassert 将您的字符串转换为 JSON 对象,并将逻辑结构和数据与实际的 JSON 进行比较。当strict设置为 false(推荐)时,它允许重新排序数据和扩展结果(只要所有预期的元素都存在),从而使测试不那么脆弱。 支持的测试框架:JUnit 代码示例 在 JSONasser

Spock注意事项

Spock系列 4年前 (2020-08-20) 浏览: 1854 评论: 2

Spock虽然好用,但要应用到实际项目中还是需要注意几个问题,下面讲下我们公司在使用过程中遇到的一些问题和解决方案 版本依赖 要使用Spock首先需要引入相关依赖,目前使用下来和我们项目兼容的Spock版本是1.3-groovy-2.5,以maven为例(gradle可以参考官网),完整的pom依赖如下: <spock.version>1.3-groovy-2.5</spock.

Spock如何模拟抽象类方法

Spock系列 4年前 (2020-10-07) 浏览: 1534 评论: 0

我们平时写单元测试时经常会遇到调用抽象类或父类的方法,这些抽象方法可能是调用底层接口或数据库,需要mock掉,让抽象方法返回一个我们指定的值,以便测试当前代码逻辑的场景。 下面讲下Spock如何结合power mock实现动态mock抽象方法 一. 抽象方法或父类方法动态mock AbstractService 是个抽象类,我们需要把它的方法 parentMethod 模拟掉,返回我们预先设置的"

Java反射真的慢吗?

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

你是否听到人们说“Java反射太慢了”或“使用反射刚刚降低了性能”,但我还没有听到任何确切的数字。不如我们做些测试来了解真实情况。 下面我编写了一些示例代码来对典型的Java方法调用与基于反射的方法调用进行比较。结果正是我对JVM的期望。任何可优化的函数(比如返回一个常量,或者一个只依赖于输入的方法,或者像交换内存中的整数这样的简单操作)都会因为在方法中执行的工作太快而出现明显的减速。但是,当该方

登录

忘记密码 ?

切换登录

注册