Java
文章平均质量分 74
时间会告诉你答案,但不能重来
互联网、信创
展开
-
Java面向对象
面向对象,封装、继承、多态、抽象、重写、重载,面向接口编程,面向对象设计七大原则原创 2024-01-10 09:54:01 · 377 阅读 · 0 评论 -
Java中的运算符
Java中的运算符(全)原创 2024-01-09 10:50:13 · 355 阅读 · 0 评论 -
Java中的关键字和保留字
Java中的关键字和保留字,包括 Java 17原创 2024-01-08 14:52:07 · 335 阅读 · 0 评论 -
SpringBoot 官方脚手架不再支持Java8和Java11
Spring官方脚手架不再支持初始化Java8和Java11的项目,阿里巴巴Spring脚手架支持Java8、Java11、Java17、Java19 的项目原创 2023-12-08 10:34:10 · 402 阅读 · 0 评论 -
prometheus jmx exporter + prometheus + grafana
prometheus jmx exporter + prometheus + grafana 实现Java应用可视化监控原创 2023-04-01 21:37:17 · 1463 阅读 · 0 评论 -
prometheus jmx-exporter 暴漏HTTP服务端口无法获取监控数据
prometheus jxm-exporter 暴露HTTP服务端口无法获取监控数据;prometheus-http 线程占用CPU 100%;sentinel-system 线程占用CPU 100%;prometheus jmx-exporter 请求大量 CLOSE_WAIT;原创 2023-03-26 11:30:43 · 628 阅读 · 0 评论 -
每小时进行一次FullGC
开启JMX后导致应用每小时进行一次FullGC,问题排查与解决。原创 2023-03-26 09:51:43 · 718 阅读 · 0 评论 -
JDK 自带监控和故障处理工具
JDK 自动改监控和故障处理工具,jps、jinfo、jstack、jstat、jmap、jhat原创 2023-02-13 22:10:10 · 855 阅读 · 0 评论 -
hashCode() 与 equals()
hashCode 与 equals 方法原创 2022-06-14 17:06:02 · 190 阅读 · 0 评论 -
强引用 软引用 弱引用 虚引用
强引用 > 软引用 > 弱引用 > 虚引用原创 2022-02-15 09:55:20 · 131 阅读 · 0 评论 -
static
Java 中static关键字原创 2022-02-04 11:12:09 · 756 阅读 · 0 评论 -
Java是编译性语言还是解释性语言
结论:Java 即使编译性语言也是解释性语言。编译:将 *.java 文件编译成 *.class 字节码文件。解释:JVM 加载 *.class 字节码文件,然后通过解释器逐行解释为机器码执行。JIT:解释器逐行解释并运行效率相对较低,JVM 可以将热点代码编译成机器码并保存下来,下次调用直接调用执行机器码,在一定程度上提高运行效率。注:常见的 HotSpot 采用惰性评估的方式,在某些代码在某段时间内达到一定的执行次数后才会及时编译为机器码。JVM 也会根据每次被执行的情况收集信息并做出一些优化,原创 2022-02-03 22:10:21 · 1148 阅读 · 0 评论 -
JVM 类加载
1. 编译源代码是成百上千个 “.java" 文件,并能被机器执行,需要编译为 ".class” 文件。常见的编译工具有 javac、maven、gradle 把 Java 工程或文件编译为 “*.java” 或 jar 包,war 包。然后,编译后的 *.class 文件在合适的时机加载到 JVM 字节码执行引擎,最后由 JVM 字节码执行引擎解释执行。2. JVM 类加载过程一个类从加载到使用,一般会经历下面的过程:加载 -> 验证 -> 准备 -> 解析 -> 初始原创 2021-09-28 20:26:59 · 234 阅读 · 0 评论 -
Java集合-ArrayList
Java 集合之 List原创 2021-08-30 11:17:31 · 1150 阅读 · 0 评论 -
Java 异常
Java 异常类层次结构Java 异常原创 2021-07-29 23:30:54 · 364 阅读 · 0 评论 -
Java 泛型
泛型 在任何重要的软件项目中,错误都是编程中的一个事实。详细的计划、编程和测试可以帮助减少错误,但不知何故,它们总会找到一种方法潜伏到你的代码中。随着新功能的引入以及你的代码库的大小和复杂性的增长,这一点变得尤为明显。 幸运的是,有些错误比其它错误更容易检测到。例如,可以在早期检测到编译时错误;你可以使用编译器的错误消息找出问题所在并立即修复。然后,运行时错误可能会带来更多问题。它们并不是立即浮出水面,当它原创 2021-07-21 11:41:23 · 216 阅读 · 2 评论 -
面向对象编程
1. 面向对象概念1.1 什么是对象对象是相关状态和行为的包装,软件对象通常用于对日常生活中找到真实对象进行建模。对象是理解面向对象技术的关键。看看周围,你会发现有许多真实世界的对象的例子:你的狗狗、笔记本、桌子、显示器、自行车。显示世界的对象有两个特征:状态和行为。狗有状态(名称,颜色,品种)和行为(吠叫,跑,摇尾巴)。识别真实对象的状态和行为是开始思考面向对象编程一种良好的方法。软件对象在概念上与真实对象相似:它们也由状态和行为组成。对象将其状态存储在字段中,并通过方法公开其行为。方法对对象的原创 2021-07-13 23:00:04 · 1742 阅读 · 1 评论 -
Java 基本数据类型和封装类型
八种基本数据类型的封装数据类型如下表:基本数据类型封装数据类型类型描述字节数范围byteByte整型1[-128, 127]shortShort整型2[- 32768, 32767] or [-2^15, 2^15-1]intInteger整型4[-2^31, 2^31-1]longLong长整型8[-2^63, 2^63 -1]floatFloat单精度浮点型4-doubleDouble双精度浮点型8原创 2021-07-12 22:46:51 · 672 阅读 · 1 评论 -
重载和重写
重载发生在同一个类中;方法名必须相同;参数类型不同、个数不同、顺序不同;方法返回值和访问修饰符可以不同。举个例子:public class Student { private Integer id; private String name; private Integer age; public Student() { } public Student(Integer id) { this.id = id; } public Student(Integer id, Str原创 2021-06-03 09:23:09 · 506 阅读 · 0 评论 -
volatile
并发编程的三个重要特性原子性: 一个或一组操作,一旦开始,不会被线程调度机制打断,直到结束,中间不会有任何线程切换。要么所有操作全部执行,要么所有操作都不执行。synchronize 可保证代码片段的原子性;可见性: 一个线程对共享变量进行了修改,其它线程都可以立刻看到修改后的值。volatile 关键字可以保证共享变量的可见性;有序性: JVM 执行代码过程是有先后顺序的,但并非是代码编写顺序,Java 编译器以及JIT可能在运行期间对代码指令优化,进行指令重排。volatile 关键字可以禁止指令原创 2020-12-25 15:55:44 · 108 阅读 · 0 评论 -
start() 和 run() 方法启动线程的区别 ?
结论:start() 方法会启动一个新的线程,以及线程的一些准备工作(状态检查,加入通知线程组),然后 Java 虚拟机调用此线程的 run() 方法;run() 方法是直接执行 Runnable 对象的 run() 方法,是 main 线程下的一个普通线程,并不是多线程执行;源码分析(Java8):/*** 使该线程开始执行;Java 虚拟机将调用此线程的 <code>run</code> 方法。* 结果是两个线程同时运行:当前线程(从调用返回到<code&g原创 2020-12-23 19:00:13 · 554 阅读 · 0 评论 -
String StringBuffer StringBuilder
Stringjava.lang.String 类表示字符串。java.lang.String 是 final 修饰的,所以不能够被继承;private final char value[] 变量用户存储字符串数组的,所以String对象是不可变的;因为String不可变性,所以是线程安全的。注意:在 Java 9 之后,java.lang.String 类的实现改用 byte 数组存储字符串的:private final byte[] value;StringBuilderjava.l原创 2020-12-22 14:08:18 · 93 阅读 · 0 评论 -
8种基本数据类型的封装类型和常量池
八种基本数据类型的封装数据类型如下表:基本数据类型封装数据类型byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBooleanByte、Short、Integer、Long、Character、Boolean 实现了常量池技术。前四种常量值范围为[-128, 127],Character 范围为[0, 127],Boo原创 2020-12-16 22:28:16 · 658 阅读 · 0 评论 -
Java 基本数据类型
基本数据类型字节数位数默认值取值范围描述byte180[2^7-1, -2^7]整型short2160[2^15-1, -2^15]整型int4320[2^31-1, -2^31]整型long8640L[2^63-1, -2^63]长整型float4320f[2^31-1, -2^31]单精度浮点型double8640d[2^63-1, -2^63]双精度浮点型char216‘u...原创 2020-12-16 17:09:38 · 85 阅读 · 0 评论 -
OpenJDK 和 OracleJDK 的区别
OpenJDK 和 OracleJDK 的区别于关系OpenJDK 是一个参考模型且完全开源,而 Oracle JDK 是 OpenJDK 的一个实现,并不是完全开源的,有些功能是收费的;Oracle JDK 经过严格的测试和错误修复,比 OpenJDK 更加稳定,有些程序崩溃问题只需从 OpenJDK 切换到 Oracle JDK 即可修复;从整体性能来看,Oracle JDK 比 OpenJDK 性能相对更高;… …参考:JavaGuide.原创 2020-12-14 16:04:47 · 1529 阅读 · 1 评论 -
JVM JRE JDK 的关系
废话少说,Java 8 官方概念图JVM - Java Virtual Machine(Java 虚拟机)Java 源代码: 后缀为 *.java 的文件;** 字节码 ????* 由源代码经过编译(javac)后得到的 *.class 文件(JVM可理解);**机器码: **机器可执行的二进制机器码; Java 虚拟机(JVM)是把 Java 字节码解释为机器可执行的机器码的虚拟机。JVM 针对不同的平台有特定的实现,其目的是为了实现将相同的字节码解释为不同平台可执行的机器码。原创 2020-12-14 15:48:36 · 132 阅读 · 0 评论 -
记录一次线上 OOM
记录一次线上 OOM 事故日期: 2020-11-02 18:30**描述:**最开始是 APP 首页加载报 网络超时,后来管理后端也出现了网络超时的情况。个人排查过程:查看线上应用 pod 运行状态,发现存在大量服务消费者处于 Crashback 状态;考虑基础服务(baseservice)是否可用,发现基础服务日志正常输出,表名有正常的业务逻辑处理;查看 JVM 监控发现一直在 YoungGC 和 FullGC,这样导致没有时间处理业务逻辑,并发现 JVM 线程达到了 2.2K 个,且查看原创 2020-11-03 14:47:33 · 338 阅读 · 0 评论 -
Java 语言基础
语言基础Java 官方参考地址变量在面向对象的编程概念中提到过,对象将其状态存储到字段中。int cadence = 0;int speed = 0;int gear = 1;变量(字段)命名规则和约定是什么?有哪些数据类型?是否必须初始化?未显示初始化时是否分配了默认值?Java 编程语言定义了以下类型的变量:实例变量(非静态字段): 从技术上讲,对象将其单个状态存储在“非静态字段”中,即声明没有 static 关键字修饰。非静态字段也称为实例变量,因为它们的值对于类的每个实例原创 2020-10-27 11:16:16 · 138 阅读 · 0 评论 -
封装数据类型中的对象缓存
深入理解 Integer简介Integer 是基本数据类型 int 的封装类型,使用位移的方式实现大部分操作。提供了 int 转 String,String 转 int,以及处理 int 时的一些常量和方法。对象缓存先看代码 int a = 127; int b = 128; int c = -128; int d = -129; Integer e = 127; Integer f = 127;原创 2020-10-21 10:33:23 · 242 阅读 · 0 评论 -
equals 和 == 的区别
Java 中 == 与 equals 的区别双等号 ==== 既可以用用户比较基本数据类型,也可以比较引用数据类型。比较基本数据类型时,比较的是两个基本类型的值是否相等,相等返回true,不相等返回false;比较引用数据类型时,比较的是两个引用类型的地址,引用地址相同返回true,不相同返回false;equalsequals 是 Object 类中的方法,用于判断两个对象是否相等,一般有如下两种情况:类没有覆盖equals方法,用于比较该类的两个对象时,等价于通过“==”比较两个对象原创 2020-09-14 21:12:17 · 152 阅读 · 0 评论