自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 Java发生OOM是否必然导致JVM退出

注:栈OOM通常因线程创建失败导致关键线程终止,间接使JVM退出。

2025-04-20 22:43:38 576

原创 JVM对象创建全过程

每个线程预先分配一小块内存(默认占Eden区1%)字段对齐(通常按8字节对齐)按照字段类型和声明顺序存储。(仅数组对象有,4字节)

2025-04-18 23:42:30 757

原创 Java对象内存结构详解

JVM要求对象起始地址必须是8字节的整数倍,因此可能需要填充字节(0-7字节)对象头包含运行时元数据和控制信息,占12字节(压缩指针)或16字节(未压缩)指向方法区中的类元数据的指针(开启压缩指针时为4字节,否则8字节):避免包装类(Integer等)的内存开销。:对于不变对象可复用(如String池)如果是数组对象,额外存储数组长度。:手动排列字段可减少填充。下方公众号资料免费获取。

2025-04-12 16:33:54 755

原创 常用JVM启动参数

【代码】常用JVM启动参数。

2025-04-12 15:54:59 237

原创 OutOfMemoryError 和 StackOverflowError 的区别详解

NIO的DirectByteBuffer分配失败。检查内存泄漏(MAT工具分析堆转储):创建过多对象且GC无法回收。:单个方法占用过多栈空间。

2025-04-07 23:04:10 487

原创 如何判断JVM中类和其他类是不是同一个类

如何判断JVM中类和其他类是不是同一个类。

2025-04-06 23:43:54 328

原创 Java类加载机制深度解析

.class文件 → 加载(Loading) → 链接(Linking) → 初始化(Initialization) → 使用(Using) → 卸载(Unloading)

2025-04-06 16:39:43 1257

原创 Java中的四大引用类型详解

【代码】Java中的四大引用类型详解。

2025-04-05 18:16:18 460

原创 JVM 有哪些垃圾回收器

将可用内存按容量划分为两个区域,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面, 然后再把已使用过的内存空间一次清理掉。算法分为“标记” 和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记 的对象。标记阶段和标记清除算法一样,也是先标记出所需要回收的对象,然后让所有存活的对象移动到另一端,然后直接清理掉边界以外的内存。把Java堆分为新生代和老年代, 这样就可以根据各个年代的特点采用最适当的收集算法。

2025-04-04 21:59:14 1219

原创 什么是Stop The World

就像打扫房间时,如果家人同时乱扔垃圾,你永远打扫不干净。STW相当于让所有人暂停活动,等你打扫完再继续。是JVM在执行垃圾回收(GC)时的一种行为,

2025-04-04 18:28:40 388

原创 新生代如果只有一个Eden+一个Survivor可以吗?

JVM设计两个Survivor是为了高效实现复制算法,避免内存碎片并精确管理对象生命周期。单Survivor方案会导致性能下降和GC行为不稳定,在HotSpot JVM的垃圾回收(GC)设计中,新生代(Young Generation)通常采用。现代GC(如G1、ZGC)不再严格区分Eden/Survivor,而是采用。早期JVM或某些嵌入式场景可能采用单Survivor,但需配合。来尝试单Survivor,但会触发警告或性能问题。调整Eden/Survivor比例,甚至设置。,但底层仍遵循类似逻辑。

2025-04-02 13:30:00 475

原创 Java堆内存分代机制详解:为什么JVM要分代管理内存?

在JVM中,堆(Heap)是Java对象存储的主要区域,而现代JVM(如HotSpot)普遍采用**分代收集(Generational Collection)**策略,将堆划分为不同的区域,以适应不同对象的生命周期特点。177页jvm全面解析。

2025-04-02 09:00:00 917

原创 Java中的对象一定在堆上分配内存吗

对象未逃逸出方法,且生命周期与方法调用一致。:直接使用局部变量代替对象,避免分配完整对象。中分配,方法结束后自动销毁,无需GC介入。:对象未逃逸,且可拆解为基本类型(如。除了堆和栈,Java对象还可能分配在。开始,JVM引入了一项关键技术——:对象未逃逸,且同步代码块无竞争。:减少堆内存占用,降低GC压力。:需谨慎使用,容易导致内存泄漏。:移除不必要的同步锁(如。

2025-04-01 13:45:00 1022

原创 JVM的运行时内存区域是怎样的

Java虚拟机(JVM)在运行Java程序时,会将内存划分为不同的区域,每个区域负责不同的任务。了解这些内存区域对于优化程序性能、排查内存泄漏(如OOM错误)至关重要。

2025-04-01 08:00:00 937

原创 什么是编译和反编译

反编译**这两个术语。它们分别代表代码从高级语言到机器码的转换,以及从机器码或字节码逆向还原成可读代码的过程。理解这两个概念,有助于我们更好地掌握程序的运行机制,并在逆向分析、安全审计、调试优化等方面发挥作用。掌握这两者,能让我们更深入地理解程序的运行机制,并在开发、调试、安全等领域发挥作用。这说明Java字节码的反编译效果非常好。机器可执行的代码(如二进制文件、字节码)**的过程。编译是指将**高级编程语言(如Java、C++)在软件开发过程中,我们经常听到**“编译”让计算机理解我们的代码,

2025-03-31 23:20:57 1086

原创 深入浅出:JIT优化技术如何让Java运行更快

JIT通过动态编译和多种优化技术(如内联、逃逸分析、循环展开等),让Java在保留跨平台优势的同时,逼近原生语言的性能。JIT(Just-In-Time Compilation,即时编译)是Java虚拟机(JVM)的核心优化技术之一。Java程序默认是解释执行的,即JVM逐条读取字节码并解释成机器指令运行。,并将其编译成优化后的机器码,后续执行时直接运行机器码,避免解释开销。:将短小的方法调用直接替换为方法体,减少方法栈帧的创建和销毁开销。:减少循环控制语句的开销,将循环体复制多次。

2025-03-31 10:00:00 1013

原创 Java是编译型还是解释型

这个问题看似简单,但实际上涉及Java的底层执行机制。本文将从Java代码的编写到最终执行的完整流程出发,带你深入理解Java的独特运行方式。这种混合模式让Java兼具跨平台性和高性能,这也是它长期占据企业级开发主流地位的原因之一。在编程语言的学习过程中,我们经常会听到“编译型语言”和“解释型语言”这两个概念。,而是JVM能理解的中间代码,类似于汇编语言,但比机器码更抽象。除了传统的JIT编译,Java还支持。在讨论Java之前,我们先明确。Java的设计目标是“时,Java编译器(,其内容类似(可通过。

2025-03-30 16:51:06 753

原创 Java如何实现平台无关性

Write Once, Run Anywhere”(一次编写,到处运行)是Java最著名的口号之一,也是它能够风靡全球的重要原因。但Java究竟是如何实现这种跨平台能力的呢?本文将深入剖析Java平台无关性的实现原理,帮助开发者更好地理解Java虚拟机(JVM)的工作机制。

2025-03-30 16:36:39 1032

原创 MySQL数据库备份与恢复

MySQL数据库备份与恢复是数据安全的重要保障。根据业务需求选择合适的备份策略和工具,并定期验证备份的有效性,才能确保在数据丢失时能够快速恢复。记住,没有备份策略的系统就像走钢丝没有安全网,风险极高。

2025-03-26 23:32:49 406

原创 DeepSeek的优势

清华大学DeepSeek使用手册

2025-03-26 21:11:18 453

原创 javascript学习

JavaScript快速入门什么是JavaScript? JS网页脚本语言。用来处理一些动态的DOM(document = html 标签)、用于用户交互、网页中的业务。DOM 和事件JS 有2套标准:W3C 和 IE浏览器厂商: IE ,火狐、谷歌、苹果、opera(欧鹏)IE 版本11以后开始 100% 兼容JavaScript ,因为对JS的不兼容导致对CSS3和Html5的不兼容,因为Html5和CSS3中内置了很多JShttps://www.w3school.com.cn/js/p

2021-01-04 09:58:20 492

原创 CSS学习

CSScss入门<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>css入门</title> <style type="text/css"> /*id选择器的引用*/ #text{ color: blue; } /*cl

2021-01-04 09:51:36 285

原创 html学习

Html5世界知名浏览器厂商对HTML5都支持html5+css3W3C标准W3CWorld Wide Web Consortium (万维网联盟)成立于1994年, Web技术领域最权威和具影响力的国际中立性技术标准机构http://www.w3.org/http://www.chinaw3c.org/W3C标准包括结构化标准语言(HTML、XML))表现标准语言(CSS)行为标准(DOM、ECMAScript )html5html->xhtml->html5BS

2021-01-04 09:43:41 249

原创 注解和反射学习笔记

注解和反射本文章参考https://www.bilibili.com/video/BV1p4411P7V3进行学习和记笔记注解什么是注解Annotation是从JDK5.0开始引|入的新技术.Annotation的作用:不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取.Annotation的格式:注解是以"@注释名"在代码中存在的, 还可以添加一些参数值,例如:@SuppressWarnings(value=“un

2020-12-09 10:47:06 208

原创 多线程学习笔记

多线程编程线程就是独立的执行路径;在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程;main() 称之为主线程,为系统的入口,用于执行整个程序;在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能认为的干预的。对同一份资源操作时, 会存在资源抢夺的问题, 需要加入并发控制;线程会带来额外的开销,如cpu调度时间,并发控制开销。每个线程在自己的工作内存交互,内存控制不当会造成数据不一致如果有错,各位可以指出

2020-12-02 16:51:52 238

原创 Lambda表达式简单使用

Lambda表达式为什么要使用lambda表达式避免匿名内部类定义过多可以让你的代码看起来很简洁去掉了一堆没有意义的代码,只留下核心的逻辑。也许你会说,我看了Lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了。理解Function Interface(函数式接口)是学习java8 lambda表达式的关键所在函数式接口的定义:​ 1.任何接口,如果包含唯一的抽象方法,那么它就是一个函数式接口public interface

2020-11-26 16:58:47 213

原创 IO流学习笔记

IO流参考:http://c.biancheng.net/java/130/;流的概念在 java 中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方输入:是将数据从各种输入设备(包括文件、键盘等)中读取到内存中,输出:是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。流的分类数据流是 Java 进行 I/O 操作的对象,它按照不同的标准可以分为不同的类别。按方向输入流:将<存储设备>中的内容读到<内存>中输出流:将&lt

2020-11-19 16:56:09 234 2

原创 java集合、泛型、枚举

java集合、泛型、枚举参考资料:http://c.biancheng.net/java/110/参考视频:https://www.bilibili.com/video/BV1zD4y1Q7Fw?p=19

2020-11-13 16:48:00 140

转载 常用系统类

常用系统类参考 http://c.biancheng.net/java/50/

2020-11-13 14:30:34 106

原创 String字符串处理和常用API

字符串常用APIpublic class Hello{ // String 的常用API : 每一个都要自己动手写一下 public static void main(String[] _args){ String word = "hello world web"; // charAt(int index) //获取字符串单个字符 System.out.println(word.charAt(0)); int len = word.length(); System

2020-11-13 14:10:59 151

原创 异常处理

异常处理异常处理的学习参考http://c.biancheng.net/java/100/

2020-11-13 11:13:40 413

翻译 this和super详解

this和superthis关键字表示当前对象提示:当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数。this.属性名new 出的是哪个对象,表示的就是哪个对象package com.qh.person;public class Person { String name = "父类"; public void show(){ System.out.println(

2020-11-13 10:37:35 192

原创 java面向对象的学习

java面向对象学习笔记视频

2020-11-11 16:33:21 88

转载 数组的Arrays工具类

数组的Arrays工具类数组的简介参考http://c.biancheng.net/java/70/Arrays 类是一个工具类,其中包含了数组操作的很多方法。这个 Arrays 类里均为 static 修饰的方法(static 修饰的方法可以直接通过类名调用),可以直接通过 Arrays.xxx(xxx) 的形式调用方法。package com.qh.array;import java.util.Arrays;public class ArraysTest { public st

2020-11-11 15:32:10 249

原创 递归

递归A方法调用B方法,我们很容易理解!递归就是: A方法调用A方法!就是自己调用自己利用递归可以用简单的程序来解决一些复 杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分:递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。递归体:什么时候需要调用自身方法。package

2020-11-10 16:24:02 173 1

原创 for循环练习

for循环练习package com.qh.exercisefor;public class forDemo01 { //0~100奇数和偶数的分别的和 public static void main(String[] args) { int ouresult = 0; int jiresult = 0; for (int i = 0; i <= 100; i++) { if(i%2 == 0){//偶数

2020-11-09 17:12:39 145

原创 java控制流程语句

java流程控制语句参考: http://c.biancheng.net/java/30/包括:if else 语句switch case 语句while 循环for循环for循环嵌套foreach语句return、break、continue 详解

2020-11-09 17:08:02 116

原创 Scanner用法

Scanner用法next和nextLinenext():一定要读取到有效字符后才可以结束输入。对输入有效字符之前遇到的空白, next() 方法会自动将其去掉。只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next() 不能得到带有空格的字符串。nextLine():以Enter为结束符也就是说nextLine()方法返回的是输入回车之前的所有字符。可以获得空白。package com.qh.scanner;import java.util.Scanner;

2020-11-09 16:05:33 192

转载 javaDoc生成文档

javaDoc生成文档javadoc基本介绍javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以同时形成程序的开发文档了。javadoc命令是用来生成自己API文档的,使用方式:使用命令行在目标文件所在目录输入javadoc +文件名.java。javadoc常用标识@author 作者@version 版本号@param 参数名 描述

2020-11-09 12:59:13 370

原创 java自增自减运算符

java自增自减package com.data;public class Operator { public static void main(String[] args) { // 自增 ,自减 ++ -- ;一元运算符 int a =3; int b =a++; //执行完这行代码后,先给b赋值,再自增 //a = a+1 赋值后执行 /* int a = a++ 相当于 int b

2020-11-06 15:14:21 190

计算机二级考前知识重点

二级Office选择题押题 二级MS计算机基础押题 二级计算机考试命中率最高的92选择题 二级公共基础知识考前押题

2025-04-20

### 文章总结:TX-1C 51单片机开发板使用手册. 概述

内容概要:本文档是TX-1C 51单片机开发板的使用手册,由北京微控天祥电子有限公司发布。手册详细介绍了开发板的特性、配置以及如何使用。开发板基于STC89C52单片机,提供了多种接口和外围设备,如USB下载口、发光二极管、七段数码管、矩阵键盘、蜂鸣器、ADC0804、DAC0832、AT24C02、1602液晶显示屏、DS18B20温度传感器等。手册不仅涵盖了开发板的基础配置和快速入门指南,还包括了多个实验案例,如闪烁灯、流水灯、单键识别、59秒计数器、矩阵键盘检测、利用定时器和蜂鸣器唱歌、模数转换ADC0804的应用、数模转换DAC0832的应用、DS18B20温度测量显示、1602字符液晶显示、EEPROM AT24C02实验、串口通讯实验等。此外,手册还提供了扩展模块的详细说明,如红外遥控步进电机、红外遥控舵机、红外遥控直流电机、红外遥控继电器、DS12C887实时时钟、超声波测距等。附录部分包含了开发板的原理图和配套模块的介绍。 适合人群:单片机初学者及电子爱好者,尤其是希望深入了解51单片机编程和应用的人群。 使用场景及目标:① 学习51单片机的基础知识和编程技巧;② 掌握开发板的各种外围设备的使用方法;③ 通过实例实验加深对单片机的理解;④ 使用扩展模块进行更复杂的应用开发。 其他说明:手册提供了详细的硬件连接图和程序代码,帮助用户更好地理解和使用开发板。同时,手册还附带了视频教程,进一步降低了学习门槛。用户可以通过手册中的联系方式获取更多技术支持。

2025-04-12

计算机专业毕业设计分享

计算机专业毕业设计分享

2025-04-05

计算机二级考试,命中率最高的的选择题

计算机二级考试资料

2025-04-05

CCF-GESP,软件编程能力等级认证真题包括答案

CCF-GESP认证相关的资源真题资料:包括: 图形化编程,C++, Python

2025-04-04

【Java面向对象编程】封装、继承、多态详解:三大特性实现原理与应用场景分析

内容概要:本文详细介绍了Java面向对象编程的三大核心特性:封装、继承和多态。封装强调数据隐藏与方法绑定,通过私有化字段、提供公共方法确保安全性和易用性;继承描述了子类从父类继承属性和方法的机制,涵盖单继承限制、构造方法链以及super关键字的使用,并指出应优先考虑组合而非继承;多态则解释了编译时和运行时多态的区别,重点介绍方法重载与重写,以及JVM中通过虚方法表实现多态的具体过程。最后探讨了三大特性的协同关系,并给出了实战建议和常见面试问题解答。; 适合人群:具有Java编程基础的开发人员,尤其是希望深入理解面向对象设计原则的学习者。; 使用场景及目标:①理解并掌握Java面向对象编程的核心概念;②提高代码的安全性、可维护性和扩展性;③为面试准备相关知识点;④优化现有代码结构,避免常见的设计误区。; 阅读建议:建议读者结合实际项目经验进行阅读,重点关注三大特性的应用场景及其相互之间的关系,同时注意实战建议部分提供的最佳实践指导。此外,对于面试高频问题部分,可以加深对概念的理解并为技术面试做准备。

2025-04-04

程序员面试个人简历模板

程序员面试个人简历模板

2025-04-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除