当前位置: 首页 > news >正文

jvm面试题汇总

jvm面试题汇总

  • 1.说一说jvm的主要组成部分
  • 2.说一下堆栈的区别
  • 3.Java的内存泄露
  • 4.内存泄漏的原因
  • 5.实践中如何避免Java内存泄漏
  • 6.定位并修复内存泄漏
  • 7.GC如何判断一个对象是否为垃圾?
  • 8.GC Roots如何选取
  • 9.jvm有哪些垃圾回收算法
  • 10.jvm有哪些垃圾回收器
  • 11.说一说双亲委派机制
  • 12.为什么需要双亲委派?
  • 13."父子加载器"之间的关系是继承吗?
  • 14.什么情况下父加载器会无法加载某一个类呢?
  • 15.为什么Tomcat要破坏双亲委派
  • 16.说一说类的加载过程

1.说一说jvm的主要组成部分

JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。
类的加载器:将编译器生成的字节码文件加载到运行时数据方法区中,只要符合文件结构就加载,至于能否运行,它不负责,而是由执行引擎负责;
执行引擎:也叫解释器,负责执行命令,交由操作系统执行。
本地接口:融合其它语言为Java所用
运行时时数据区:
1.堆:Java对象的存储区域,用new字段分配的Java实例和数组,都被分配在堆上,Java7后运行时常量池从方法区上移到了堆上。
2.方法区:和堆一样都是所有线程共享的,主要存储的是类信息,静态变量,常量,即时编译器编译后的代码等数据。
3.虚拟机栈:虚拟机中执行每个方法的时候,都会创建一个栈帧用于存储局部变量,操作数栈,动态链接,方法出口等信息。
4,本地方法栈:与虚拟机栈类似,但是使用的是native方法
5.程序计数器:指示虚拟机下一条执行的字节码指令。
流程:首先编译器将代码编译成字节码文件,类加载器利用全类名将字节码文件加载带运行时数据区的方法区,字节码只是jvm的一套指令规范,操作系统不能识别,所以就需要执行引擎将字节码翻译成底层系统指令,交给cpu去执行。在这个过程中还需要调用其它语言的本地接口。

2.说一下堆栈的区别

堆:主要用于存储实例化的对象,数组,由jvm动态的分配内存一个jvm只有一个堆内存,线程是可以共享数据的,物理地址是不连续的,内存大小是运行时决定的
栈:主要用于存储局部变量和对象的引用,每个线程都会有一个独立的栈空间,线程之间不共享数据。物理地址是连续的,内存大小是编译时确定的

3.Java的内存泄露

内存泄漏指的是JVM中某些不再需要使用的对象,仍然存活于JVM中而不能及时释放而导致内存空间的浪费。
Java中,我们可能会遇到栈内存泄露和堆内存泄漏。
其中堆内存泄漏是由于创建后的对象一直存在于堆中,不再需要的对象其引用一直没有被移除。这些无用的对象会慢慢占用内存,最后导致内存溢出。
栈内存泄漏由于方法不断被调用,但是一直没有退出方法。这种情况可能发生在无限循环或递归掉用时,最终导致栈内存溢出。

4.内存泄漏的原因

Java中内存泄漏主要是因为不能正确释放不需要的资源,长生命周期对象持有短生命周期对象的引用。
静态字段
静态字段引起的内存泄漏比较常见,如果某个不需要的类中含有静态字段,那么就会造成内存泄漏。单例模式中如果持有其他的类引用就会造成内存泄漏,静态集合如HashMap,LinkedList等持有的一些对象没有及时释放等。
Thread Local
threadlocal引用一个对象使用完成后并没有被及时remove掉,线程一直存活的情况下(使用线程池时)就会发生内存泄漏。
大多时候内存泄漏都是由于开发人员的代码错误导致的,要防止这种内存泄漏,就需要编写必要的代码来配合垃圾回收器释放资源。

5.实践中如何避免Java内存泄漏

使用最新稳定版本的Java
尽量减少使用静态变量,使用完之后及时赋值 null,移除引用
明确对象的有效作用域,尽量缩小对象的作用域。局部变量回收会很快。
减少长生命周期对象持有短生命周期的引用
各种连接应该及时关闭(数据库连接,网络,IO等)
使用内存泄漏检测工具如MAT,Visual VM,jprofile 等
避免在代码中使用System.gc()
避免使用内部类
内存泄漏很难定位并修复,但是我们可以遵循以下几个步骤去定位并修复:

6.定位并修复内存泄漏

确定是否存在内存泄漏,启用详细的GC跟踪。
使用一些第三方插件进行分析(jprofile Visual VM等)
检查调用堆栈是否有未释放的引用(分析GC状态)
找出对象没有被垃圾回收的原因
编写代码手动删除此类对象

7.GC如何判断一个对象是否为垃圾?

1.引用计数法
主要是查看该对象是否还有引用指向它,如果有则说明该对象不是垃圾,反之则为垃圾。
具体就是给一个对象上标一个数字用来记录有多少个引用指向了该对象,当这个数字记录为0时,那就表示这个对象已经没有引用指向它了,那么这个对象就变成了垃圾。存在问题:循环引用
2.根可达算法
基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。

8.GC Roots如何选取

在Java语言中,可以作为GCRoots的对象包括下面几种:
(1). 虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中引用的对象。
(2). 方法区中的类静态属性引用的对象。
(3). 方法区中常量引用的对象。
(4). 本地方法栈中JNI(Native方法)引用的对象。

9.jvm有哪些垃圾回收算法

1.标记-清除算法
标记-清除算法对根集合进行扫描,对存活的对象进行标记。标记完成后,再对整个空间内未被标记的对象扫描,进行回收。
优点:
实现简单,不需要进行对象进行移动。
缺点
标记、清除过程效率低,产生大量不连续的内存碎片,提高了垃圾回收的频率。
2.复制算法
这种收集算法解决了标记清除算法存在的效率问题。它将内存区域划分成相同的两个内存块。每次仅使用一半的空间,JVM生成的新对象放在一半空间中。当一半空间用完时进行GC,把可到达对象复制到另一半空间,然后把使用过的内存空间一次清理掉。
优点
按顺序分配内存即可,实现简单、运行高效,不用考虑内存碎片。
缺点
可用的内存大小缩小为原来的一半,对象存活率高时会频繁进行复制。
3.标记-整理算法
标记-整理算法 采用和 标记-清除算法 一样的方式进行对象的标记,但后续不直接对可回收对象进行清理,而是将所有的存活对象往一端空闲空间移动,然后清理掉端边界以外的内存空间。
-优点
解决了标记-清理算法存在的内存碎片问题。
缺点
仍需要进行局部对象移动,一定程度上降低了效率。
3.分代收集算法
绝大多数最新被创建的对象会被分配到这里,由于大部分对象在创建后会很快变得不可达,所以很多对象被创建在新生代,然后消失。对象从这个区域消失的过程我们称之为 minor GC。
新生代 中存在一个Eden区和两个Survivor区。新对象会首先分配在Eden中(如果新对象过大,会直接分配在老年代中)。在GC中,Eden中的对象会被移动到Survivor中,直至对象满足一定的年纪(定义为熬过GC的次数),会被移动到老年代。
可以设置新生代和老年代的相对大小。这种方式的优点是新生代大小会随着整个堆大小动态扩展。参数 -XX:NewRatio 设置老年代与新生代的比例。例如 -XX:NewRatio=8 指定 老年代/新生代 为8/1. 老年代 占堆大小的 7/8 ,新生代 占堆大小的 1/8(默认即是 1/8)。
老年代(Old generation)
对象没有变得不可达,并且从新生代中存活下来,会被拷贝到这里。其所占用的空间要比新生代多。也正由于其相对较大的空间,发生在老年代上的GC要比新生代要少得多。对象从老年代中消失的过程,可以称之为major GC(或者full GC)。

10.jvm有哪些垃圾回收器

新生代收集器(全部的都是复制算法):Serial、ParNew、Parallel Scavenge
老年代收集器:CMS(标记-清理)、Serial Old(标记-整理)、Parallel Old(标记整理)
整堆收集器: G1(一个Region中是标记-清除算法,2个Region之间是复制算法) 同时,先解释几个名词:
1,并行(Parallel):多个垃圾收集线程并行工作,此时用户线程处于等待状态
2,并发(Concurrent):用户线程和垃圾收集线程同时执行
3,吞吐量:运行用户代码时间/(运行用户代码时间+垃圾回收时间)

11.说一说双亲委派机制

首先,我们需要知道的是,Java语言系统中支持以下4种类加载器:
Bootstrap ClassLoader 启动类加载器
Extention ClassLoader 标准扩展类加载器
Application ClassLoader 应用类加载器
User ClassLoader 用户自定义类加载器
所谓的双亲委派机制,指的就是:当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。只有父加载器无法加载这个类的时候,才会由当前这个加载器来负责类的加载。

12.为什么需要双亲委派?

首先,通过委派的方式,可以避免类的重复加载,当父加载器已经加载过某一个类时,子加载器就不会再重新加载这个类。
另外,通过双亲委派的方式,还保证了安全性。因为Bootstrap ClassLoader在加载的时候,只会加载JAVA_HOME中的jar包里面的类,如java.lang.Integer,那么这个类是不会被随意替换的,除非有人跑到你的机器上, 破坏你的JDK。
那么,就可以避免有人自定义一个有破坏功能的java.lang.Integer被加载。这样可以有效的防止核心Java API被篡改

13."父子加载器"之间的关系是继承吗?

双亲委派模型中,类加载器之间的父子关系一般不会以继承(Inheritance)的关系来实现,而是都使用组合(Composition)关系来复用父加载器的代码的。

14.什么情况下父加载器会无法加载某一个类呢?

Java中提供的这四种类型的加载器,是有各自的职责的:
Bootstrap ClassLoader ,主要负责加载Java核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。
Extention ClassLoader,主要负责加载目录%JRE_HOME%\lib\ext目录下的jar包和class文件。
Application ClassLoader ,主要负责加载当前应用的classpath下的所有类
User ClassLoader , 用户自定义的类加载器,可加载指定路径的class文件
那么也就是说,一个用户自定义的类,如com.li.ClassHollis 是无论如何也不会被Bootstrap和Extention加载器加载的。

15.为什么Tomcat要破坏双亲委派

我们知道,Tomcat是web容器,那么一个web容器可能需要部署多个应用程序。
不同的应用程序可能会依赖同一个第三方类库的不同版本,但是不同版本的类库中某一个类的全路径名可能是一样的。
如多个应用都要依赖hollis.jar,但是A应用需要依赖1.0.0版本,但是B应用需要依赖1.0.1版本。这两个版本中都有一个类是com.hollis.Test.class。
如果采用默认的双亲委派类加载机制,那么是无法加载多个相同的类。
所以,Tomcat破坏双亲委派原则,提供隔离的机制,为每个web容器单独提供一个WebAppClassLoader加载器。
Tomcat的类加载机制:为了实现隔离性,优先加载 Web 应用自己定义的类,所以没有遵照双亲委派的约定,每一个应用自己的类加载器——WebAppClassLoader负责加载本身的目录下的class文件,加载不到时再交给CommonClassLoader加载,这和双亲委派刚好相反。

16.说一说类的加载过程

类加载的过程主要分为三个部分:加载,链接,初始化
而链接又可以细分为三个小部分:验证,准备,解析
加载
简单来说,加载指的是把class字节码文件从各个来源通过类加载器装载入内存中。
这里有两个重点:
字节码来源。一般的加载来源包括从本地路径下编译生成的.class文件,从jar包中的.class文件,从远程网络,以及动态代理实时编译
类加载器。一般包括启动类加载器,扩展类加载器,应用类加载器,以及用户的自定义类加载器。
验证
主要是为了保证加载进来的字节流符合虚拟机规范,不会造成安全错误。
包括对于文件格式的验证,比如常量中是否有不被支持的常量?文件中是否有不规范的或者附加的其他信息?
对于元数据的验证,比如该类是否继承了被final修饰的类?类中的字段,方法是否与父类冲突?是否出现了不合理的重载?
对于字节码的验证,保证程序语义的合理性,比如要保证类型转换的合理性。
准备
主要是为类变量(注意,不是实例变量)分配内存,并且赋予初值。
特别需要注意,初值,不是代码中具体写的初始化的值,而是Java虚拟机根据不同变量类型的默认初始值。
比如8种基本类型的初值,默认为0;引用类型的初值则为null;常量的初值即为代码中设置的值,final static tmp = 456, 那么该阶段tmp的初值就是456
解析
将常量池内的符号引用替换为直接引用的过程。
两个重点:
符号引用。即一个字符串,但是这个字符串给出了一些能够唯一性识别一个方法,一个变量,一个类的相关信息。
直接引用。可以理解为一个内存地址,或者一个偏移量。比如类方法,类变量的直接引用是指向方法区的指针;而实例方法,实例变量的直接引用则是从实例的头指针开始算起到这个实例变量位置的偏移量
举个例子来说,现在调用方法hello(),这个方法的地址是1234567,那么hello就是符号引用,1234567就是直接引用。
在解析阶段,虚拟机会把所有的类名,方法名,字段名这些符号引用替换为具体的内存地址或偏移量,也就是直接引用。
初始化
这个阶段主要是对类变量初始化,是执行类构造器的过程。
换句话说,只对static修饰的变量或语句进行初始化。
如果初始化一个类的时候,其父类尚未初始化,则优先初始化其父类。
如果同时包含多个静态变量和静态代码块,则按照自上而下的顺序依次执行。


相关文章:

  • 电商项目之同一笔单多次收款成功
  • 零基础学JavaWeb开发(二十二)之 springmvc入门到精通(2)
  • Issues with peer dependencies found
  • CSS 艺术之心形-彩虹-加载动画
  • Python---自动生成二维码
  • Java集合常见面试题(四)
  • input 实现回车失焦,考虑输入法的情况
  • 高等数学【合集2】
  • 雅睿生物在创业板IPO终止:安信证券为保荐人,曾计划募资7.5亿元
  • 【操作系统】—— Windows常用快捷键(带你快速了解)
  • 基于Andriod的智慧校园卡系统的设计与实现
  • (18)go-micro微服务ELK介绍
  • OSG三维渲染引擎编程学习之二十八:“第三章:OSG场景组织” 之 “3.10 Switch开关节点”
  • 动态站点地图提交百度收录
  • 【价格型需求响应】基于Logistic函数的负荷转移率模型需求响应研究(Matlab代码实现)
  • javascript中Math.random()产生随机数进行随机点名
  • Hyperbolic geometry (双曲几何简介)
  • 【Leetcode每日一题】34.在排序数组中查找元素的第一个和最后一个位置|二分求下标
  • 【JavaEE】如何开始基础的Servlet编程(基于Tomcat服务器)
  • 【SpringCloud20】SpringCloud Alibaba Seata处理分布式事务
  • MODBUS总线的学习笔记
  • OSG三维渲染引擎编程学习之二十七:“第三章:OSG场景组织” 之 “3.9 AutoTransform自动对齐节点”
  • 最实用的 Docker 知识(一)
  • Leetcode:78. 子集、90. 子集 II(C++)
  • 1月23日Linux c编程之Makefile
  • UPS BP650CH实现nas自动关机
  • MySQL —— 库操作
  • ❤️如何实现所谓的“关键字传参”--理论+易懂版⭐
  • 【JavaEE】认识线程Thread类及常用方法线程状态
  • Shell语法
  • MP-2平面烟雾气体传感器介绍
  • springboot中restful风格请求的使用
  • 【19】C语言 | 三子棋
  • 【每日一题Day97】LC1828统计一个圆中点的数目 | 模拟
  • 议论文书写总结
  • Day869.索引(下) -MySQL实战
  • 离线召回与排序介绍
  • 【Ajax】防抖和节流
  • CMAKE
  • 【面试克星】【公式少代码少话多】Vins-Mono预积分相关知识点总结与概述
  • C语言基础知识(36)
  • Python实现一个简易的CLI翻译程序
  • SQL学习
  • 【计组笔记01】计算机组成原理之冯诺依曼体系结构、计算机编码、定点数的表示、原码和补码的乘除法
  • 人世正道沧桑,她亦奋力向前 --读《李清照传》有感
  • Android 深入系统完全讲解(37)
  • 【QT5.9】与MFC对比学习笔记-感悟篇2【2023.01.23】
  • ARP渗透与攻防(五)之Ettercap劫持用户流量
  • C++初阶--继承
  • 学习率衰减、局部最优、Batch归一化、Softmax回归
  • 树状数组(代码模板和原理详解)
  • 我的第一次真实对国外某购物平台web漏洞挖掘
  • Intellij IDEA 丢失 Project Structure 问题
  • 分享139个ASP源码,总有一款适合您
  • Java | 解决并发修改异常问题【CurrentModificationException】
  • Mybatis遇到的脑残问题
  • 为了方便项目打包,我用Node写了个git-tag工具
  • RK3399平台开发系列讲解(内存篇)访问虚拟内存的物理内存过程
  • Essential C++第五章习题
  • JDK8 新特性之并行的Stream流
  • Cesium:Indexed 3D Scene Layers (I3S)加载
  • 【代码阅读】MSC-VO
  • Python基础学习六
  • 使用 AJAX+JSON 实现用户查询/添加功能
  • 在linux下安装docker
  • 【Hadoop】HDFS+Shell实践(定时上传数据至HDFS)
  • 《Rust权威指南》读书笔记9 - 泛型、特性、生命周期
  • 文本情感分类TextCNN原理+IMDB数据集实战
  • 【蓝桥杯】历届真题 作物杂交(省赛)Java
  • Tkinter的Listbox控件
  • 进阶C语言 第二章-------《进阶指针》 (指针数组、数组指针、函数指针、回调指针)知识点+基本练习题+深入细节+通俗易懂+完整思维导图+建议收藏
  • 梯度之上:Hessian 矩阵
  • Ubiquiti MAC Address Changer 3.0 Crack
  • 机器学习(五):机器学习算法分类
  • 路由处理及功能(实现了权限控制vue admin)
  • 【JavaSE专栏5】Java 基本数据类型和取值范围
  • 英语学习打卡day4
  • 【数据库概论】3.1 SQL简述、数据定义和索引
  • 【C语言进阶】一文带你学会C语言文件操作
  • 欧几里得与扩展欧几里得算法(含推导过程及代码)
  • 【My Electronic Notes系列——晶闸管】
  • 安装配置Ecplise插件PyDev 8.3.0
  • LeetCode刷题记录---贪心算法
  • 蓝桥杯-刷题-补基础
  • 多线程不安全函数的理解
  • 插入排序算法的实现和优化~
  • 协调中心性能大对比:zookeeper是如何解决负载均衡问题的
  • Email Signature Manager 9.3 Crack
  • CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂
  • 2022——>2023
  • 【手写 Vue2.x 源码】第四十二篇 - 组件部分 - 组件挂载流程简述
  • 数据结构 最短路径课设(源码+实验报告+视频讲解)(用了自取)
  • 高等数学(第七版)同济大学 习题12-6 个人解答
  • Nacos集群搭建
  • JVM快速入门学习笔记(三)
  • 作为项目经理,如何做好项目进度管理
  • Linux进程信号
  • 我的1周年创作纪念日
  • 量子力学奇妙之旅-微扰论和变分法
  • CS61A 2022 fall HW 01: Functions, Control
  • MySQL主从复制、读写分离
  • NR PUSCH(七) 相干传输
  • 【Java|golang】1828. 统计一个圆中点的数目
  • Nginx与LUA(7)
  • 设计模式 - 六大设计原则之LoD(迪米特法则原则)
  • C++程序设计——动态内存管理
  • Leetcode:93. 复原 IP 地址(C++)
  • 《TPM原理及应用指南》学习 —— TPM实体4
  • 树,堆,二叉树的认识
  • OSG三维渲染引擎编程学习之二十五:“第三章:OSG场景组织” 之 “3.7 PositionAttitudeTransform位置姿态变换节点”
  • 几种觉排序优劣
  • 【C++】右值引用和移动语义 | 新的类功能 | 可变参数模板
  • 园区网典型组网架构及案例实践
  • 【学习Arduino单片机AD传感器采样的十大滤波算法】
  • PAT 1074 宇宙无敌加法器(C++解法)
  • Kubernetes:基于命令行终端UI的管理工具 K9s
  • 【JavaSE】一文看懂构造器/构造方法(Cunstructor)
  • 排序算法: 数据的离散化(排序+去重 C++例题实现)
  • 【每日一道智力题】之海盗分金币(上)
  • TypeScript
  • C++第七讲——Demon和Angela的魔法之旅
  • 美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)
  • CSS样式基础内容2
  • 【C++】类和对象(上)---什么是类?
  • 【头歌】单链表的基本操作
  • ConcurrentHashMap的死循环问题
  • C++6:STL-模拟实现string
  • 一文吃透python多线程(全面总结)
  • 计算机基础——无处不网络(2)
  • Docker安装教程(看这篇就够了)
  • 高性能 Java 框架。Solon v1.12.3 发布(春节前兮的最后更)
  • 内存函数及其模拟实现
  • Spring介绍
  • scala函数柯里化
  • C++基础回顾
  • 深度学习数据自动标注器开源 目标检测和图像分类(高精度高效率)
  • Redis脑裂为何会导致数据丢失?
  • Spring控制反转(IoC)和依赖注入(DI)
  • 客快物流大数据项目(一百零八):Spring Cloud 技术栈
  • CUDA编程笔记(5)
  • 【SpringCloud】Nacos注册中心、配置中心用法与原理(下)
  • Python 超强命令行解析工具 argparse !
  • 【C++】lambda 表达式 | 包装器
  • JQUERY案例
  • 第九层(1):初识STL
  • 【蓝桥云课】最大公约数与最小公倍数
  • Redis常用的数据类型
  • 抖音小黄车挂淘宝店相关问题记录
  • 【C语言进阶】指针进阶(干货)
  • 棋盘放麦子-蓝桥杯
  • 【Hadoop】HDFS高可用与高扩展原理分析(HA架构与Federation机制)
  • 23种设计模式(二十二)——访问者模式【行为变化】
  • 3.1 卷积神经网络的应用领域|卷积的作用|卷积特征值的计算方法|得到特征图表示|步长与卷积核大小对结果的影响|边缘填充方法
  • 安卓S开机动画流程
  • react源码:目录结构、调试源码
  • 车辆占用应急车道识别抓拍系统 opencv
  • 2022年“网络安全”赛项黑龙江省赛选拔赛 任务书
  • Webpack5 教程 (7) --- 减少代码
  • Elasticsearch7.8.0版本入门——JavaAPI操作(环境准备)
  • 常见递归模式
  • 偷偷理解Java和Scala中==和equals()的区别
  • 基于双层优化的微电网系统规划设计方法(Matlab代码实现)
  • STL - 常用算法
  • 基于Springboot+Vue+Sercurity实现的大学生健康管理平台
  • Linux内核驱动初探(二) TI声卡
  • 有关Java多线程的几个概念
  • JavaEE 突击 5 - Spring 更简单的读取和存储对象(2)
  • 约数个数及约数之和知识点(含公式)
  • 50个常用的 Numpy 函数详解
  • JavaEE5-Spring更简单的读取和存储对象
  • 过完2022,依然记得仰望星空
  • MyBatis 连接数据库与增删改查
  • Java标准输入输出流(in/out)
  • 【Python百日进阶-Web开发-Linux】Day236 - Win11安装Windows Subsystem for Android(WSA)
  • java8新特性
  • cmake 目录
  • C++进阶 哈希表封装unordered_map和unordered_set
  • Spring事务、事务隔离级别、事务传播机制
  • 【13】C语言 | “go_to“语句
  • Vue3悬浮返回主页按钮设计与实现
  • XILINX FPGA OV5640 摄像头驱动(一)
  • 合宙ESP32C3上手使用
  • 英语学习打卡day3
  • 2.4总线操作和定时
  • 8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
  • 基于networkx聚类技术—复杂网络社团检测(附完整版代码)
  • avb校验相关与块校验原理
  • SpringBoot 统一功能处理
  • 基于PythonOpenCv的视频图像处理
  • 力扣sql简单篇练习(五)
  • Java---微服务---SpringCloud(2)
  • 【手写 Vue2.x 源码】第四十一篇 - 组件部分 - 生成组件的真实节点
  • 02 |「数据结构、逻辑结构、物理结构」基本概念简析
  • 06_平台总线匹配规则,自己搭建总线xbus
  • 什么是数据库连接池?Druid(德鲁伊)连接池的使用详细解读
  • 自己动手写一个操作系统——MBR(1)
  • Redis在秒杀场景的作用
  • await 返回了什么
  • pytorch零基础实现手写数学符号识别项目(三)——模型训练与预测
  • eBPF 入门开发实践指南五:在 eBPF 中使用 uprobe 捕获 bash 的 readline 函数调用
  • windows权限维持方法详解
  • 【LeetCode】二叉树的序列化与反序列化 [H](二叉树)
  • 【JavaSE专栏4】关键字、标识符和命名规范
  • 使用小程序+网页简易实现多客户端实时弹幕
  • 【JavaScript】多态(Symbol),迭代器接口,getter/setter
  • Java/JavaScript有哪些图形图像处理的框架?
  • Unity HurricaneVR 插件中的 VRIK 设置
  • Maplab 2.0发布:多传感器融合的SLAM框架,支持多机器人、语义回环检测功能
  • 汇报写作学习总结
  • Java中的hashCode,真的很容易弄懂
  • 域环境搭建
  • 单片机扫盲
  • C++:类的构造函数与析构函数
  • Canal实时同步发送JSON数据示例代码
  • 《TPM原理及应用指南》学习 —— TPM实体3
  • 面试官问我有没有分布式系统开发经验,我一脸懵圈…
  • 七、python-PySpark篇(黑马程序猿-python学习记录)
  • redis 数据库简介
  • 多线程(5)
  • mysql锁
  • 你对CSS权重真的足够了解吗?
  • E2PROM 蓝桥杯 stm32 AT24C02读写函数
  • 【SpringBoot】SpringBoot三层开发
  • Redis数据类型简介
  • 深度学习TensorFlow—GPU2.4.0版环境配置,一文简单易懂详细大全,CUDA11.0、cuDNN8.0
  • YOLOv5/v7 引入 YOLOv8 的 C2f 模块
  • 1月24日,30秒知全网,精选7个热点
  • MySQL(五):事务简介、事务的特性、事务的概念及状态、支持事务的引擎
  • 顺序表的具体使用方法.数据解构(二)
  • UE INI文件操作 INI File Operation [ Read / Write ] 插件说明
  • 【程序环境和程序预处理】万字详文,忘记了,看这篇就对了
  • 从零开始的python基础教程
  • STL分析(九 适配器)
  • MySQL间隙锁详细分析
  • 使用C++实现学委作业管理系统
  • 【IDEA】自动部署SpringBoot Jar包到远程服务器并通过脚本启动jar
  • 【My Electronic Notes系列——三极管】
  • 【操作系统】—— 如何安装双系统与多系统(带你快速了解)
  • OSG三维渲染引擎编程学习之八:“第一章:OSG介绍” 之 “1.8 基于QT的第三方库编译”
  • 三、利用迁移学习进行模型微调(Datawhale组队学习)
  • Kubernetes:分享一个很简洁的 k8s 管理工具 Skooner
  • <C++>哈希
  • Day09 - 子类父类多继承多层继承多态
  • Python---字典相关知识
  • fpga实操训练(一个典型的fpga系统)
  • 【剧前爆米花--爪哇岛寻宝】Java中有关异常类的详细讲解
  • Centos7 Docker安装APISIX
  • 06-jquery函数
  • C语言中不定参数 ... 的语法、函数封装
  • Cadence PCB仿真使用Allegro PCB SI生成振铃ringing仿真报告及报告导读图文教程
  • Kubernetes:通过 kubectl 插件 kubectl-tree 查看API对象层级关系
  • 博客系统项目的自动化测试
  • 深入剖析JVM垃圾收集器
  • 【并发编程十二】c++20线程同步——信号量(semaphore)
  • 深度估计算法原理与论文解读
  • 【Android】手机安装Termux运行nodejs学习Javascript编程入门
  • JAVA练习29
  • MySQL —— 数据库基础
  • 【HBase入门】2. 集群搭建
  • 【蓝桥杯】简单数论2——快速幂矩阵快速幂
  • 十二、网络基础2
  • 【数据结构】二叉搜索树的实现
  • 【文本分类实战练习】使用多个经典神经网络模型(词嵌入 词向量 LSTM CNN ),含问题记录及解决。
  • JDBC快速入门,如何使用JDBC操作数据库?
  • 20230123英语学习
  • 7个流行的强化学习算法及代码实现
  • Spring笔记上(基于XML配置)
  • 【目标检测论文解读复现NO.25】基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法
  • Go Data race and Vector clock
  • 前后端联调经验总结
  • Java多线程(二)—— ReentrantLock 源码分析
  • Springcloud 笔记
  • C++虚继承,虚基表 ,菱形继承以及解决方法
  • 我的硕士前半生
  • 【设计模式】我终于读懂了外观模式。。。
  • 【苹果家庭群发推】软件keychain中刚打开的证书下载的证书文件要决不会报错 UNTimeIntervalNotificationTrigge
  • 《Rust权威指南》读书笔记8 - Error handling 错误处理
  • CSS 特效之心形-彩虹-加载动画
  • 使用 Grafana 请求API接口
  • cmake 04 使用 python 管理 cmake 工程
  • POJ 1845 Sumdiv题解(C++ 整数惟一分解定理+分治法求等比数列之和+快速幂)
  • macm1使用Docker制作jar镜像并连接宿主机mysql
  • Vue TypeScript 使用eval函数的坑
  • CSDN原创图片链接失效分析
  • postgresql源码学习(52)—— vacuum①-准备工作与主要流程
  • 学习记录668@项目管理之项目沟通管理和干系人管理
  • Linux条件判断(全)
  • 【手写 Vue2.x 源码】第四十篇 - 组件部分 - 组件的生命周期
  • 01_kobject和ktype创建设备文件和设备目录
  • 大数据之HBase集群搭建
  • 我的创作纪念日——“永远相信美好的事情即将发生”
  • 期货交易原理(期货交易原理与实务)
  • C语言基础知识总结大全(五)
  • Linux——innode
  • 一本通-1033:计算线段长度
  • Python数模笔记-模拟退火算法(5)求解旅行商问题的联合算子模拟退火算法
  • 【青训营】Go语言的基本语法
  • HashMap1.7中的线程安全问题
  • 数学表达式的处理
  • casbin权限和配置文件的理解
  • 详解1247:河中跳房子(二分经典例题)
  • Yolo系列理论
  • 尚硅谷前端ES6-ES11
  • 08 |「双指针」算法分析
  • ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1
  • 高等数学【合集】
  • sbt编程语言scala的构建工具配置及项目构建(附带网盘下载)
  • 【蓝桥杯】历届真题 质数行者(决赛)Java
  • Java多线程(二)——ReentrantLock源码解析(补充2——可打断的锁)
  • 如何与他人交流
  • JavaScript 入门基础 - 对象(五)
  • 网关超详解
  • Multiple Dimension Input 处理多维特征的输入
  • React源码之render过程中发生了什么?
  • java spring IOC xml 方式 内部Bean注入
  • JavaScript 输出
  • 《啊哈算法第四章之bfs》(17张图解)
  • ArcGIS Pro脚本工具(17)——生成多分式标注
  • 【手写 Vue2.x 源码】第三十九篇 - 组件部分 - 创建组件虚拟节点
  • 【MySQL进阶】MySQL事务详解
  • Maplab:一个用于视觉惯性建图和定位研究的开源框架
  • 代码随想录--字符串习题总结
  • 【pytorch】.mul .add_ 和直接 + * 有什么区别
  • 2022年度总结:反思与回顾
  • 动态规划(基础)
  • 分享129个ASP源码,总有一款适合您
  • 第55章 SQL EXISTS 运算符教程
  • 【模拟CMOS集成电路】电路失调与CMRR—— 随机失调与系统失调分析(1)
  • 《MLB美职棒大联盟》:赛扬奖·棒球1号位
  • 文件操作和IO
  • java入门作业-DAO,读取sql数据库
  • Python基础学习 -- 文件操作
  • Python 匿名函数
  • STM32编写OLED显示屏驱动
  • 春节假期后,如何快速让员工恢复上班的元气和状态?
  • 【Unity Shader 赛博小人01】UV准备 SD制作特效贴图
  • Git使用Merge和Rebase区别及心得技巧
  • 20230123使AIO-3568J开发板在Android12下永不休眠
  • 【回望2022,走向2023】一个双非二本非科班的学生的旅途
  • 【经典算法】双指针(尺取法):爱,是双向奔赴,还是你追我赶?
  • Redis内部的阻塞式操作以及应对方法
  • 2023年大年初一 —— 牛客网刷题经验分享~
  • 一、pyhon准备工作篇(黑马程序猿-python学习记录)
  • AcWing第87场周赛题解
  • 【每日一道智力题】之蚂蚁走树脂和绳子秒表
  • 【Vue】我的尚品汇项目笔记---20230109~20230120
  • eBPF 入门开发实践指南一:介绍 eBPF 的基本概念、常见的开发工具
  • 数据结构 最短路径课设(源码+实验报告+视频讲解)(不要钱、用了自取)
  • autojs模仿QQ长按弹窗菜单(二)
  • python能做的100件事03-python爬虫
  • 【求职】济南地区-运维工程师
  • SpringBoot+Vue项目月度员工绩效考核管理系统
  • 实现升序降序排列问题
  • C++普通类,派生类,虚基类的成员构造顺序以及构造函数调用顺序详解
  • 每日算法4 —— UVa10474 大理石在哪里? Where is the Marble?
  • 【进击的算法】基础算法——动态规划
  • logstash + logback实现分布式日志采集
  • 在java中操作redis
  • 线程常用方法及常见状态
  • JDK8 新特性之Stream流方法详解
  • 设计模式之原型模式
  • 【C++】从0到1入门C++编程学习笔记 - 核心编程篇:类和对象(下)
  • 7.Java判断和循环+面试相关力扣算法题详解
  • 【Kotlin】泛型 ① ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 )
  • Java 23种设计模式(2.创建者模式-工厂设计模式)
  • Java基础进阶
  • 【附代码】python绘图集锦-关系Correlation图
  • 【蓝桥杯】历届真题 蓝肽子序列(决赛) Java
  • 【大数据hive】hive ddl语法使用详解
  • linux系统中使用QT实现APP开发的基本方法
  • Linux基本功系列之rename命令实战
  • 2023-1-22 刷题情况
  • Java面试题,Spring Bean的注册与依赖注入
  • 什么是数字经济
  • Java 集合之Stream流
  • Tkinter的Entry与Text
  • 二维费用背包问题
  • while循环——求100以内偶数和
  • 04 |「链表」简析
  • RESTful开发风格 与 SpringMVC跨域访问
  • eBPF 入门开发实践指南二:在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用
  • 【ARM体系结构】之相关概念与公司简介
  • 超级完整的 Git 下载、安装与配置
  • Tkinter的Menu与Messagebox
  • (考研湖科大教书匠计算机网络)第二章物理层-第一、二节:物理层基本概念和传输媒体
  • ARP渗透与攻防(一)之ARP原理
  • English Learning - L1-13 主动脉修饰 (上) 2023.1.16 周一
  • 从零实现一个组件库(一)项目环境搭建
  • acwing基础课——快速幂
  • 双指针思想,c语言
  • 【HTML | CSS】春节将至,为网页挂上精美的灯笼吧(附源码)程序员的浪漫
  • 第三章 AOP
  • 【leetcode】学了栈和队列却觉得无用武之地?试试这几道题目吧!
  • CMMI之工程类
  • 【算法题】1604. 警告一小时内使用相同员工卡大于等于三次的人
  • 【Leetcode面试常见题目题解】8. 合并两个有序链表
  • linux系统中利用QT实现视频监控的基本方法
  • Python数据可视化之条形图和热力图
  • 浅析Spring的五大类注解和方法注解
  • 【蓝桥杯】历届真题 蓝肽子序列 Java
  • Kotlin 中 infix 函数的应用:构建清晰易读的语法
  • 机器学习(四):机器学习工作流程
  • 零基础学MySQL(三)-- 对表中数据的增删改【新年快乐】
  • Nacos注册中心
  • PAT 1058 选择题(C++实现)
  • 【手写 Vue2.x 源码】第三十七篇 - 组件部分 - 组件的合并
  • 【Java】比较器 Comparator Comparable
  • HTTPS 是这样握手的
  • 【每日一题Day96】LC2303计算应缴税款总额 | 模拟
  • 看我使用Python秒变高级程序员
  • 目录 行盒的盒模型 显著特点 行块盒 空白折叠 可替换元素 和 非可替换元素 分页例子 display:inline-block object-fit
  • 函数式编程之stream开发实战
  • 基于android手机选课系统的设计与实现
  • 【Android笔记68】Android之相机控制类Camera相关操作的API介绍(Camera已过期不推荐)
  • LeetCode_单周赛_329
  • 第十届蓝桥杯省赛 C++ A/B组 - 完全二叉树的权值
  • <Python的文件>——《Python》
  • 扩散模型 Diffusion Models 入门到实践 | 论文、学习资源、课程整理
  • Linux常用命令——strace命令
  • 字节青训前端笔记 | Web安全
  • Java | 浅谈多态中的向上转型与向下转型
  • 【MySQL】第九部分 MySQL信息函数
  • 生物化学 电阻抗成像OpenEIT,Dbar算法,数据集等(暂记)
  • python基础——列表推导式
  • 自定义Filter后,我的业务代码怎么被执行了多次?
  • 5-2中央处理器-指令周期的数据流
  • day25-类加载器反射
  • 3.5 拉普拉斯定理
  • 【操作系统】—— Windows卸载与清除工具“ Geek 与 CCleaner ” (带你快速了解)
  • Socket通信
  • 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 435. 无重叠区间
  • Java EE之线程编(进阶版)
  • 零入门容器云实战之文章目录列表
  • expect实现无交互操作
  • Linux进程学习【一】
  • 跨平台freebasic集锦(4)-基本语法(3)-dim(3)
  • 2022年,经历了两段实习后,我学会了……
  • JVM面试一
  • Sprig框架集成(SSM框架) | Sping+SpringMVC+Mybatis
  • 【计算机网络】HTTP/HTTPS
  • 【MySQL】第八部分 加密和解密函数
  • 线性代数[向量]
  • PHP XML DOM
  • Couplet | 用Python写一副对联送给诸位科研汪!~
  • 线段树学习
  • 分享130个ASP源码,总有一款适合您
  • 高等数学(第七版)同济大学 习题12-3 个人解答
  • linux shell脚本学习
  • 当你编码时
  • 汇编【王爽】实验8、9
  • 第四章必备前端基础知识-第二节2:CSS属性
  • P2615 [NOIP2015 提高组] 神奇的幻方
  • Allegro如何统计包含过孔长度的网络长度操作指导
  • Java-线程基础
  • 【C++】从0到1入门C++编程学习笔记 - 实战篇:职工管理系统
  • 目标检测论文解读复现【NO.24】改进 YOLOv5s 的轨道障碍物检测模型轻量化研究
  • 将字符串代码编译为字节代码对象 compile()
  • Java的基本语法格式
  • 进程概念——Linux
  • Java面试题,JVM相关问题
  • Windows 服务器刷题(2)(带答案)
  • liunx centos9安装nodejs并搭建vue 图文详解手把手教程
  • Android 国际化
  • 【基础】BMP格式
  • 使用账号激活MATLAB软件
  • 【ArcGIS微课1000例】0059:三种底图影像调色技巧案例教程
  • Java基础练习题(四)
  • 从0开始深入学习Elasticsearch
  • JQUERY总结(四)
  • Week 12
  • 狂神。JVM入门学习笔记。
  • HDFS高可用单NameNode从standby恢复为active(二)
  • day23-网络编程01
  • Solid Edge 放样使用引导曲线
  • 基于双层共识控制的直流微电网优化调度(Matlab代码实现)
  • 使用Py6S计算瑞利反射率教程
  • 走进 HTML
  • 我用笨办法啃下了一个开源项目的源码!
  • 第四十四章 动态规划——背包问题模型(一)
  • 3.7 克拉默法则
  • Ubuntu显示优化 动画
  • 动态规划完全背包 fullbackpack
  • 第十三届蓝桥杯省赛 JAVA A组 - 蜂巢
  • C语言-qsort函数基本使用
  • 创建者模式-建造者模式
  • 卷积神经网络进阶--基础知识
  • 十六进制转八进制+超大数据处理(蓝桥杯基础练习C/C++)
  • 《深入浅出计算机组成原理》学习笔记 Day7
  • Windows SDK编程 初学笔记
  • vue学习笔记(更新中)
  • 2023年springboot面试题集合
  • Python烟花秀
  • 左值和右值的概念
  • pytorch 神经网络笔记-RNN和LSTM
  • KK集团再冲刺港交所上市:期内被罚款30万元,曾存在“二清”问题
  • 【JavaSE】保姆级教程|1万字+10张图学会类与对象--建议收藏
  • k8s之挂载NFS到POD中
  • Kettle(4):excel数据抽取到mysql
  • 【学习笔记】[AGC030F] Permutation and Minimum
  • 07 | 应届生身份为什么重要?只有一次