java
文章平均质量分 92
惜鸟
这个作者很懒,什么都没留下…
展开
-
Java 异常分析
本文是对以下内容的分析:Java异常设计Java 异常分类Java异常可以告诉什么问题Java异常处理最佳实践Java Exception 是为了处理应用程序的异常行为而创建的类。在本文中,将解释如何使用 Java Exception 类以及如何在考虑现有 Java Exception 设计的情况下创建异常结构。Java 异常概念是 Java 中的重要里程碑之一,每个开发人员都***必须***知道它。Java 异常体系结构基本结构如下图:Throwable 是所有异常.原创 2021-09-16 18:51:34 · 423 阅读 · 1 评论 -
是什么让 Java 应用程序的 CPU 使用率飙升?
如果命运是一条孤独的河流,谁会是你的灵魂摆渡人? —— 克莱儿·麦克福尔《摆渡人》一. 问题while 的无限循环是否会导致 CPU 使用率飙升?频繁的 Young GC 是否会导致 CPU 使用率飙升?有大量线程的应用程序的 CPU 使用率高吗?CPU 使用率高的应用程序的线程数是否很大?处于 BLOCKED 状态的线程是否会导致 CPU 使用率飙升?分时操作系统中的 CPU 是消耗 us(用户态) 还是 sy(内核态)?二. 思考1. 我们如何计算 CP.原创 2021-09-07 19:04:53 · 670 阅读 · 1 评论 -
Java 中如何实现线程间通信
世界以痛吻我,要我报之以歌 —— 泰戈尔《飞鸟集》虽然通常每个子线程只需要完成自己的任务,但是有时我们希望多个线程一起工作来完成一个任务,这就涉及到线程间通信。关于线程间通信本文涉及到的方法和类包括:thread.join()、object.wait()、object.notify()、CountdownLatch、CyclicBarrier、FutureTask、Callable。接下来将用几个例子来介绍如何在Java中实现线程间通信:如何让两个线程依次执行,即一个线程等待另一个线程执行完..原创 2021-09-05 19:03:13 · 922 阅读 · 0 评论 -
在 docker 容器中使用Java诊断工具Arthas
一、概述使用 docker 容器部署项目已经成为开发者必须掌握的技能,当使用 docker 容器部署项目后,如何在容器中对 Java 应用进行实时诊断,这篇文章主要介绍在 docker 容器中如何使用 Java 诊断工具 —— Arthas 。在容器中使用 Arthas 和在服务器上面使用是没有太大区别的,通常情况下一个容器中只会运行我们的应用服务这一个 Java 进程,所以在容器中使用 Arthas 只会看到一个 Java 进程。关于 Arthas 的详细说明可以查看下面的官方文档,这里只会对自己在 .原创 2021-05-26 18:41:23 · 1879 阅读 · 1 评论 -
记录一些 IntelliJ IDEA 中的常用配置
一、概述毋庸置疑 IntelliJ IDEA 已经成为 Java 开发最好用的开发工具,这篇文章主要记录自己使用 idea 开发过程中的一些常用配置,主要是根据自己的开发习惯进行的配置,记录这篇文章的目的是为了便于自己查询配置,并且希望对看这篇文章的小伙伴提供一些参考。说明:我这里使用的 idea版本是 IntelliJ IDEA 2021.1.1 (Ultimate Edition),不同的版本配置稍有不同,可以根据自己使用的具体版本进行更改。二、idea 常用配置这里就不介绍 idea 的.原创 2021-05-22 14:55:43 · 977 阅读 · 0 评论 -
spring boot使用nacos作为配置中心实践
概述本文主要介绍自己将nacos作为spring boot的配置中心的实践过程,希望对有需求的小伙伴提供一些帮助。通过nacos实现配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。详细的说明可以查看官方文档:https://nacos.io/zh-cn/docs/quick-start-spring-boot.html使用docker-compose安装nacos在linux系统中可以通过以下命令安装 docker-compse:yum install -y docker-com原创 2021-04-06 19:48:34 · 1524 阅读 · 0 评论 -
使用JWT实现跨域身份验证
一、传统用户的身份验证(使用session)一般过程如下:1、用户向服务器发送用户名和密码。2、服务器验证通过后,将相关信息保存到当前session中。3、服务器将session_id放到cookie中并返回给用户。4、用户后续的每个请求都会将cookie中的session_id发送给服务器。5、服务器收到session_id并对比session中的数据,确认用户身份。使用session的方式验证身份存在的问题是:每次用户认证通过以后,服务器需要创建一条记录保存用户信息,通常是在内存中,原创 2021-03-08 11:39:21 · 556 阅读 · 0 评论 -
java计算数据的百分比
概述有这样一个需求,需要计算一个集合中的数据占集合总数的百分比,这里做一个简单的记录。java计算数据的百分比实现代码如下:import java.text.DecimalFormat;import java.text.NumberFormat;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;public class Test3 { public static原创 2020-12-17 15:19:11 · 22443 阅读 · 0 评论 -
使用java stream对集合中的对象按指定字段进行分组统计并排序
一、概述有这样一个需求,在一个list集合中的对象有相同的name,我需要把相同name的对象的total进行汇总计算,并且根据total倒序排序。使用java stream来实现这个需求,这里做一个记录,希望对有需求的同学提供帮助。二、根据对象指定字段分组排序使用java stream 计算的过程如下图:下面是实现的代码示例:/** * 定义一个对象,这里使用了lombok的注解 */@Data@Accessors(chain = true)class Good { priv原创 2020-12-11 16:38:42 · 12751 阅读 · 0 评论 -
git提交代码时报错:RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
一、概述使用git push origin master时报错如下:Push failedEnumerating objects: 140, done.Delta compression using up to 4 threadsTotal 136 (delta 8), reused 84 (delta 3)the remote end hung up unexpectedlythe remote end hung up unexpectedlyRPC failed; HTTP 413 cu原创 2020-10-15 15:40:20 · 5363 阅读 · 1 评论 -
java泛型理论基础
文章目录一、为什么使用泛型(generics)1、官方说明2、通俗说明二、泛型的定义三、泛型的使用规则1、泛型中的通配符2、通用方法3、类型推断四、泛型类型擦除1、通用类型的擦除2、类型擦除与桥接方法五、泛型的使用限制一、为什么使用泛型(generics)1、官方说明官方地址:https://docs.oracle.com/javase/1.5.0/docs/guide/language/generics.html2、通俗说明在 JDK5.0 以前,如果一个方法返回值是 Object,一个集合里原创 2020-09-27 16:57:27 · 116 阅读 · 0 评论 -
java反射实践
一、概述java反射是通过java.lang.Class类实现的,从java.lang.Class的描述中我们可以看出,Class对象可以代表所有对象,Class类没有公有的构造器,所以无法通过new关键字创建Class对象,相反Class对象是在类加载的时候被JVM自动构建的,或者调用类的.class进行构建。二、java反射实践1、准备一个类这个类中定义的属性和方法用于后面的java反射实践public class Boy { // 定义静态代码块 static {原创 2020-09-25 19:18:30 · 217 阅读 · 0 评论 -
java反射理论基础
一、什么是java反射Java反射指的是在Java程序运行过程中,对于任何一个类,都可以获得这个类的所有属性和方法;对于给定的一个对象,都能够调用它的任意一个属性和方法,这种动态获取类的内容以及动态调用对象的方法称为反射机制。二、从JVM层面理解反射JVM通过Class的类名找到Class的字节码文件,然后通过ClassLoader的类加载机制在堆内存中分配对象(暂不考虑对象在栈、TLAB上的分配情况)。三、反射的优缺点优点:增加程序的灵活性,避免将固有逻辑写死代码简洁,可读性强,可提高代原创 2020-09-25 15:45:04 · 165 阅读 · 0 评论 -
minio的安装及使用
目录一、概述二、下载二进制文件安装minio三、spring boot整合使用minio1、使用maven引入minio依赖2、在`application.yml`中定义连接`minio`的参数3、定义一个`MinioUtil.java`工具类四、总结一、概述最近在学习使用minio,在这里对自己的学习过程做一个记录和总结,方便自己查阅。Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang原创 2020-08-06 16:58:26 · 32024 阅读 · 6 评论 -
java双亲委派模型
文章目录类加载器种类双亲委派模型过程双亲委派模型的系统实现类加载器种类从 Java 虚拟机的角度来说,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用 C++ 语言实现(HotSpot 虚拟机中),是虚拟机自身的一部分;另一种就是所有其他的类加载器,这些类加载器都由Java 语言实现,独立于虚拟机,并且全部继承自java.lang.ClassLoader。从开发者的角度,类加载器可以细分为:启动(Bootstrap)类加载器:.转载 2020-07-12 16:54:46 · 224 阅读 · 0 评论