Java踩坑记系列之线程池

Java踩坑记系列之线程池

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

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

JVM虚拟机HotSpot内存科普

JVM虚拟机HotSpot内存科普

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

metaspace元空间 JDK 8没有永久发电 类元数据存储在名为Metaspace的新空间中 与Java堆不相邻 元空间从本机内存中分配 元空间的最大可用空间是可用系统记忆 这可能会受到MaxMetaspaceSize JVM选项的限制 Compressed Class Space压缩类空间 如果启用了UseCompressedClassesPointers,则内存用于类及其元数据 –Meta

Java反射的用途系列二

Java反射的用途系列二

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

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

java内存泄露

java内存泄露

jvm 3年前 (2020-11-25) 浏览: 472 评论: 0

Java应用程序内存泄漏outofmemory简介 Java的核心优点之一是JVM,它是一种现成的内存管理。本质上,我们可以创建对象,Java垃圾收集器将负责为我们分配和释放内存。 然而,在Java应用程序中仍然会发生outofmemory内存泄漏。 在本文中,我们将描述最常见的java内存泄漏,了解其原因,并介绍一些检测/避免它们的技术。在本文中,我们还将使用java yourkit 探查器来分

ClassLoader和内存泄漏:一个Java爱情故事

ClassLoader和内存泄漏:一个Java爱情故事

jvm 3年前 (2020-12-27) 浏览: 923 评论: 0

我们在工作中的Java应用服务器中遇到了非常奇怪的内存泄漏:在部署新版本的微服务时,JVM进程内存不足,因此崩溃,导致服务中断。 经过一番研究,这类错误似乎在这个应用服务器中非常常见,尤其是在部署应用程序时不重新启动服务器时。常见的修复方法是在投入生产之前重新启动JVM进程,防止内存不足(但不会导致内存泄漏)。这就是我们选择的短期“修复”。 主要来自C/C++背景,我习惯于内存泄漏和内存分析,我喜

Java9 Modules

Java9 Modules

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

Java9模块是Java结构中最大的变化之一。这篇文章将对“Java9模块系统”做一个简要的介绍。 介绍 甲骨文公司将Java9的发布时间从2017年3月推迟到2017年9月。 正如我们所知,Java8带来了三大新特性(再加上一些增强和新特性)。 Lambda表达式 Stream API 日期API 同样,Java9也带来了三大特性(再加上一些增强和新特性): Java模块系统(Jigsaw项目)

SpringBoot和微服务

SpringBoot和微服务

微服务 3年前 (2021-02-27) 浏览: 232 评论: 0

Spring Boot是一个基于Java的开源框架,用于创建微服务。它是由Pivotal团队开发的,用于构建独立的和可生产的spring应用程序。本文将向您介绍SpringBoot并让您熟悉其基本概念。 什么是微服务? 微服务是一种允许开发人员独立开发和部署服务的体系结构。运行的每个服务都有自己的流程,这实现了支持业务应用程序的轻量级模型。 优势 微服务为其开发人员提供了以下优势: 易于部署 简单

Spring框架和SpringBoot之间的区别

Spring框架和SpringBoot之间的区别

相关技术 3年前 (2021-03-31) 浏览: 306 评论: 0

在本教程中,我们将研究标准Spring框架和Spring Boot之间的区别。 我们将重点讨论Spring的模块,如MVC和Security,在核心Spring中使用时与在Boot中使用时的区别。 Spring是什么? 简单地说,Spring框架为开发Java应用程序提供了全面的基础设施支持。 它包含了一些很好的功能,比如依赖注入,以及一些现成的模块,比如: Spring JDBC Spring

从Spring迁移到Spring Boot

从Spring迁移到Spring Boot

微服务 3年前 (2021-05-02) 浏览: 824 评论: 0

在本文中,我们将研究如何将现有的Spring框架应用程序迁移到SpringBoot应用程序。 Spring Boot并不是为了取代Spring,而是为了使使用它更快更容易。因此,迁移应用程序所需的大多数更改都与配置有关。在大多数情况下,我们的自定义控制器和其他组件将保持不变。 使用Spring Boot进行开发有几个优点: 更简单的依赖关系管理 默认自动配置 嵌入式web服务器 应用程序度量和运行

使用maven插件简化Spring Boot GraalVM原生镜像构建

使用maven插件简化Spring Boot GraalVM原生镜像构建

Serverless 3年前 (2021-06-03) 浏览: 2206 评论: 0

本文基于上一篇:在Docker&Heroku上运行Spring Boot GraalVM本机映像 新的spring-graalvm-native原生版本0.7.1和graalvm 20.1.0都进行了大量的优化!本机映像命令的配置变得容易得多。那么让我们来看一下Spring Boot GraalVM本机映像编译的native-image-maven-plugin。 新的Spring特性0.

试用Spring Native Beta版

试用Spring Native Beta版

Serverless 3年前 (2021-07-05) 浏览: 939 评论: 0

环境 Debian 10.8 (WSL2) Docker 社区版(客户端=19.03.11,服务器=20.10.5) GraalVM CE 21.0.0.2(构建 11.0.10+8-jvmci-21.0-b06) Apache Maven 3.6.3 准备工作 使用gs-rest-service(https://github.com/spring-guides/gs-rest-service)。

GraalVM系列之二-Polyglot技术

GraalVM系列之二-Polyglot技术

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

在上一篇中介绍了GraalVM的基本功能,GraalVM是Oracle的一个新的开源项目,它试图使Java虚拟机成为运行所有主要语言的通用虚拟机。在GraalVM之前,已经很少有像Scala、Closure这样的语言将JVM作为其运行时。这对于这些语言来说是非常成功的。GraalVM进一步扩展了这一思想,使得以JVM为目标变得很容易,从而使更多的语言可以在JVM上共存。 GraalVM是从2014

Java Agent:动态修改字节码

Java Agent:动态修改字节码

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

假设您有一个在生产环境中运行的应用程序。每隔一段时间,它就会进入中断状态,错误很难重现,您需要从应用程序中获得更多信息。 那么你想知道解决方案吗? 您可以做的是动态地将一些代码集附加到应用程序中,并仔细地重写它,以便代码转储您可以记录的其他信息,或者您可以将应用程序阶段转储到文本文件中。Java为我们提供了使用Java Agent实现这一点的工具。 你有没有想过我们的Java代码是如何在IDE中进

理解Java类加载器

理解Java类加载器

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

Class Loaders简介 Class Loaders类加载器负责在运行时将Java类动态加载到JVM(Java虚拟机)。此外,它们也是JRE(Java运行时环境)的一部分。因此,由于类加载器的存在,JVM不需要知道底层文件或文件系统就可以运行Java程序。 此外,这些Java类不会一次全部加载到内存中,而是在应用程序需要时加载。这就是类装入器出现的地方。它们负责将类加载到内存中。 在本文中,

Kubernetes上的gRPC负载平衡实践

Kubernetes上的gRPC负载平衡实践

相关技术 2年前 (2021-12-31) 浏览: 312 评论: 0

Kubernetes上的gRPC负载平衡(使用无消息头服务) gRPC是用于进程间通信的最流行的现代RPC框架之一。对于微服务体系结构来说,这是一个很好的选择。毫无疑问,部署微服务应用程序最流行的方法之一是Kubernetes。 Kubernetes部署可以有相同的后端实例来服务许多客户端请求。Kubernetes的ClusterIP服务提供负载平衡的IP地址。但是,这种默认的负载平衡在gRPC中

Spring Boot Rest常用注解简介

Spring Boot Rest常用注解简介

微服务 2年前 (2022-05-16) 浏览: 424 评论: 0

让我们了解一下Spring Boot Rest框架注释。它是如此简单和快速。在本文中,我将尝试解释Spring Boot Rest API的不同注释。这些注释是Spring Boot中REST API所必需的。 开始Spring Boot Rest的先决条件 最需要了解的是Spring容器或IOC。除此之外,还必须具备Java注释的基本知识。因为Spring Boot应用程序充满了注释。最后但并非

Resilience4j库使用指南

Resilience4j库使用指南

相关技术 1年前 (2022-11-14) 浏览: 736 评论: 0

在本文中,我们将讨论Resilience4j库【https://github.com/resilience4j/resilience4j】。 该库通过管理远程通信的容错能力来帮助实现弹性系统。 该库受到Hystrix的启发,但提供了更方便的API和许多其他功能,如Rate Limiter(阻止太频繁的请求)、Bulkhead(避免太多并发请求)等。 Maven设置 首先,我们需要将目标模块添加到p

Spock代码讲解-void方法测试

Spock代码讲解-void方法测试

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

这是Spock系列的第六篇文章,本篇讲解如何针对void方法,即无返回结果的方法测试 void方法 void方法的测试不能像前面几篇介绍的那样在then标签里验证返回结果,因为void方法没有返回值 一般来说无返回值的方法,内部逻辑会修改入参的属性值,比如参数是个对象,那代码里可能会修改它的属性值,虽然没有返回,但还是可以通过校验入参的属性来测试void方法 还有一种更有效的测试方式,就是验证方法

如何编写Java递归函数?

如何编写Java递归函数?

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

这篇关于Java中递归的深入教程通过示例、类型和相关概念解释了什么是递归。它还包括递归与迭代: 从Java的早期教程中,我们已经看到了迭代方法,其中我们声明一个循环,然后通过一次获取一个元素以迭代的方式遍历数据结构。 我们还看到了一个条件流,其中我们保留一个循环变量并重复一段代码,直到循环变量满足条件为止。说到函数调用,我们还研究了函数调用的迭代方法。 Java中的递归是什么? 递归是一个函数或方

Java反射替代方案

Java反射替代方案

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

替换反射API调用可以提高性能 有时,作为开发人员,您可能会遇到这样的情况:无法使用new运算符实例化对象,因为它的类名存储在配置XML中的某个位置,或者您需要调用名称指定为注释属性的方法。在这种情况下,您总是有一个答案:使用反射! 您可以通过存储java.lang.reflect.Method实例,并像在许多框架中实现一样调用它们,但我们决定看看其他选项。反射调用有其成本,如果您开发一个生产类框

登录

忘记密码 ?

切换登录

注册