每日 Java 面试题分享【第 16 天】
欢迎来到每日 Java 面试题分享栏目!
订阅专栏,不错过每一天的练习
今日分享 3 道面试题目!
评论区复述一遍印象更深刻噢~
目录
- 问题一:Java 运行时异常和编译时异常之间的区别是什么?
- 问题二:什么是 Java 中的继承机制?
- 问题三:什么是 Java 的封装特性?
问题:Java 运行时异常和编译时异常之间的区别是什么?
面试官考察点
- 异常分类理解:对 Java 异常体系(Throwable、Error、Exception、RuntimeException)的掌握程度。
- 处理机制:是否清楚两种异常在代码中的处理方式差异(强制处理 vs 非强制)。
- 设计意图:能否理解 Java 对这两类异常的设计哲学(可控性问题 vs 程序逻辑错误)。
- 实战经验:是否能在项目中正确选择异常类型,避免滥用。
参考答案
1. 定义与继承关系
- 编译时异常(Checked Exception):
- 继承自
Exception
,但不是RuntimeException
的子类。 - 例如:
IOException
、SQLException
、ClassNotFoundException
。 - 必须在代码中显式处理(
try-catch
捕获或throws
声明),否则编译失败。
- 继承自
- 运行时异常(Unchecked Exception):
- 继承自
RuntimeException
(RuntimeException
本身继承Exception
)。 - 例如:
NullPointerException
、ArrayIndexOutOfBoundsException
、IllegalArgumentException
。 - 不需要强制处理,代码中可以不捕获或声明。
- 继承自
2. 核心区别
维度 | 编译时异常 | 运行时异常 |
---|---|---|
处理要求 | 必须显式处理,否则编译失败 | 可不处理,由 JVM 抛出并终止线程 |
设计目的 | 表示程序外部可控问题(如文件不存在、网络中断) | 表示程序内部逻辑错误(如空指针、数组越界) |
代码可读性 | 通过 throws 声明明确调用方需处理的异常类型 | 通常通过代码逻辑规避,而非显式处理 |
3. 底层机制
- 编译时异常:
- 编译器通过语法检查强制约束,确保程序员对可能发生的 " 已知风险 " 进行处理。
- 例如,读取文件时必须处理
IOException
,防止程序因外部资源问题崩溃。
- 运行时异常:
- 通常由程序逻辑错误引发,属于 " 程序员应避免的错误 ",如未做空判断直接调用方法。
- JVM 在运行时会自动抛出,若不捕获则线程终止(可通过全局异常处理器兜底,如 Spring 的
@ControllerAdvice
)。
4. 项目实战结合
场景:在电商项目的订单支付模块中,调用第三方支付接口时可能发生网络超时(编译时异常),而参数校验不通过(如金额为负数)属于运行时异常。
处理方式:
- 编译时异常:
try { PaymentResponse response = paymentClient.call(externalApi); } catch (IOException e) { // 记录日志并触发重试机制 log.error("支付接口调用失败", e); retryPolicy.retry(); }
- 运行时异常:
// 参数校验(通过Preconditions或Assert) public void createOrder(BigDecimal amount) { Preconditions.checkArgument(amount.compareTo(BigDecimal.ZERO) > 0, "金额必须大于0"); // 业务逻辑 }
总结:
- 编译时异常用于外部依赖的容错处理(如 IO、数据库连接)。
- 运行时异常用于快速暴露代码逻辑缺陷,避免无效状态扩散。
5. 高频追问预判
-
为什么 Java 要设计两种异常?
- 答:编译时异常强制处理 " 已知但不可控 " 的问题(如文件丢失),运行时异常用于标识 " 本应通过代码避免 " 的逻辑错误,减少冗余的
try-catch
代码。
- 答:编译时异常强制处理 " 已知但不可控 " 的问题(如文件丢失),运行时异常用于标识 " 本应通过代码避免 " 的逻辑错误,减少冗余的
-
如何自定义异常?应该继承哪一类?
- 答:业务异常通常继承
RuntimeException
(如BusinessException
),避免调用方强制处理;若异常需调用方显式关注(如特定 API 的错误码),可继承Exception
。
- 答:业务异常通常继承
-
实际项目中常见的异常处理误区?
- 答:
- 捕获
Exception
但不处理(如e.printStackTrace()
),导致问题被掩盖。 - 滥用
RuntimeException
传递业务错误,应通过返回错误码或自定义状态对象。
- 捕获
- 答:
通过分层拆解异常的设计哲学、处理机制和实战场景,可以体现对 Java 异常体系的深入理解,这正是大厂面试官期待的答案!
问题:什么是 Java 中的继承机制?
面试官考察点
- 面向对象基础:是否理解继承在面向对象编程中的核心地位。
- 实现细节:对继承的语法、方法重写(Override)、访问控制等机制的掌握。
- 设计思想:能否区分继承与组合的适用场景,避免滥用继承。
- 底层原理:对 JVM 中继承实现机制(如方法表、内存结构)的理解。
参考答案
1. 核心定义与语法
-
定义:继承是面向对象编程中类与类之间的一种关系,允许子类(派生类)复用父类(基类)的属性和方法,并可以通过重写(Override)或扩展实现新功能。
-
语法:
class Parent { public void print() { System.out.println("Parent Method"); } } class Child extends Parent { @Override public void print() { super.print(); // 调用父类方法 System.out.println("Child Method"); } }
-
关键字:
extends
(单继承)、super
(访问父类成员)、@Override
(注解声明方法重写)。
2. 核心机制与规则
- 单继承限制:Java 不支持多继承(一个类只能直接继承一个父类),但可通过接口(
implements
)实现多继承效果。 - 访问权限控制:
- 子类可访问父类的
public
、protected
成员,但无法直接访问private
成员(需通过父类提供的公共方法)。 - 父类的构造方法不继承,但子类构造器必须显式或隐式调用父类构造器(
super()
)。
- 子类可访问父类的
- 方法重写规则(Override):
- 签名一致:方法名、参数列表、返回类型(Java 5+ 允许协变返回类型)必须相同。
- 访问权限:子类方法的访问权限不能比父类更严格(例如父类
protected
,子类不能改为private
)。 - 异常声明:子类方法抛出的异常不能比父类更宽泛(可抛出更具体异常或不抛出)。
3. 底层实现原理
- 内存结构:子类对象在堆中会包含父类的实例变量(即使为
private
,但无法直接访问)。 - 方法调用:
- JVM 通过虚方法表(vtable) 实现动态绑定(多态)。
- 每个类的方法表存储其所有可继承方法的入口地址,子类重写的方法会覆盖父类方法在表中的引用。
- 类加载机制:
- 加载子类时,JVM 会先递归加载其父类(直至
Object
类)。 - 父类的静态代码块优先于子类执行。
- 加载子类时,JVM 会先递归加载其父类(直至
4. 项目实战结合
场景:在电商系统的订单模块中,抽象出
BaseOrder
类,包含订单创建时间、订单状态等公共字段和方法,NormalOrder
(普通订单)和GroupBuyOrder
(团购订单)继承并扩展特定逻辑。public abstract class BaseOrder { protected LocalDateTime createTime; protected OrderStatus status; public void validate() { if (createTime == null) { throw new IllegalArgumentException("创建时间不能为空"); } } } public class GroupBuyOrder extends BaseOrder { private int groupId; @Override public void validate() { super.validate(); // 复用父类校验 if (groupId <= 0) { throw new IllegalArgumentException("团购ID无效"); } } }
设计要点:
- 通过继承实现代码复用,避免重复校验逻辑。
- 使用抽象类定义通用行为,子类通过重写扩展差异化逻辑。
5. 继承 vs 组合
维度 | 继承(is-a) | 组合(has-a) |
---|---|---|
关系 | 强耦合,子类依赖父类实现 | 松耦合,通过持有其他类的对象实现功能复用 |
灵活性 | 父类修改可能破坏子类 | 可动态替换组合对象(如策略模式) |
适用场景 | 明确 " 是一种 " 关系(如 Dog extends Animal ) | 功能复用但无需继承全部能力(如 Car has Engine ) |
最佳实践:优先使用组合,仅在逻辑上严格符合 “is-a” 关系时使用继承(遵循里氏替换原则)。
6. 高频追问预判
-
为什么 Java 不支持多继承?
- 答:避免 " 菱形继承问题 "(多个父类有同名方法时冲突)。Java 通过接口(支持多实现)和内部类间接解决。
-
子类实例化时父类的构造方法如何调用?
- 答:子类构造器默认隐式调用父类无参构造器(
super()
),若父类没有无参构造器,子类必须显式调用super(args)
。
- 答:子类构造器默认隐式调用父类无参构造器(
-
重写(Override)和重载(Overload)的区别?
- 答:
- 重写:子类重新定义父类方法,方法签名相同,实现多态。
- 重载:同一类中方法名相同但参数列表不同,实现方法多样化调用。
- 答:
通过结合语法、底层原理、设计原则和实战案例,可以全面展示对继承机制的掌握,这正是大厂面试中区分候选人的关键点!
问题:什么是 Java 的封装特性?
面试官考察点
- 面向对象基础:是否理解封装在面向对象编程中的核心意义。
- 实现手段:对访问控制修饰符(
private
/protected
/public
)和方法的合理使用。 - 设计思想:能否结合高内聚、低耦合原则,说明封装如何提升代码健壮性。
- 实战经验:是否在项目中正确应用封装解决实际问题(如数据校验、逻辑隔离)。
参考答案
1. 核心定义与目的
- 定义:封装(Encapsulation)是面向对象编程的三大特性之一,指将数据(属性)和行为(方法)绑定为一个类,并对外隐藏内部实现细节,仅通过受控的接口暴露必要功能。
- 目的:
- 安全性:防止外部直接修改对象内部状态(如字段非法赋值)。
- 灵活性:内部实现可独立修改,不影响外部调用方。
- 易用性:通过明确的接口简化复杂逻辑的使用(如
ArrayList
隐藏动态扩容细节)。
2. 核心机制与实现
-
访问控制修饰符:
修饰符 类内 包内 子类 任意位置 private
✔ ✖ ✖ ✖ protected
✔ ✔ ✔ ✖ public
✔ ✔ ✔ ✔ -
典型实现方式:
public class BankAccount { // 私有字段:外部无法直接访问 private double balance; // 公有方法:受控的访问入口 public void deposit(double amount) { if (amount > 0) { balance += amount; } else { throw new IllegalArgumentException("存款金额必须大于0"); } } public double getBalance() { return balance; } }
- 隐藏实现:余额
balance
字段私有,防止外部直接修改。 - 逻辑封装:存款操作通过
deposit()
方法实现校验和计算。
- 隐藏实现:余额
3. 底层原理与设计原则
- 数据隐藏的本质:
- JVM 允许通过反射强制访问私有字段(
setAccessible(true)
),但封装是设计层面的约束,依赖于开发者遵守规范。
- JVM 允许通过反射强制访问私有字段(
- 与设计原则的关联:
- 迪米特法则(最少知识原则):只与直接朋友交互,避免暴露过多细节。
- 开闭原则:通过封装内部实现,使得类可以扩展(新增功能)而无需修改已有接口。
4. 项目实战结合
场景:在电商系统的用户模块中,封装用户敏感信息(如密码),确保数据安全和一致性。
public class User { private String username; private String encryptedPassword; // 加密后的密码 public void setPassword(String plainPassword) { if (plainPassword.length() < 8) { throw new IllegalArgumentException("密码长度至少8位"); } this.encryptedPassword = encrypt(plainPassword); // 加密逻辑封装在内部 } public boolean validatePassword(String input) { return encrypt(input).equals(encryptedPassword); } // 私有方法:隐藏加密算法细节 private String encrypt(String data) { // 使用SHA-256等算法加密 } }
设计优势:
- 密码存储与校验逻辑封装在
User
类内部,外部无法绕过规则直接修改。- 加密算法变更时(如从 MD5 升级为 SHA-256),只需修改
encrypt()
方法,不影响调用方。
5. 封装的多层次性
层级 | 示例 | 封装目标 |
---|---|---|
类级别 | 字段私有化 + 公共方法 | 保护对象状态,隐藏实现细节 |
包级别 | 使用包级私有(无修饰符)类或方法 | 限制跨包访问,实现模块内高内聚 |
模块级 | Java 9 模块化(module-info.java ) | 控制模块间的依赖和暴露(如 Spring Boot) |
6. 高频追问预判
-
封装与抽象的区别?
- 答:
- 封装:隐藏实现细节,控制访问(解决 " 怎么做 " 的暴露问题)。
- 抽象:提取共性,定义接口或抽象类(解决 " 做什么 " 的规范问题)。
- 示例:
List
接口抽象了 " 线性表 " 操作,ArrayList
封装了动态数组的实现细节。
- 答:
-
什么时候该用
protected
修饰符?- 答:当需要允许子类访问父类成员,但禁止非子类的外部访问时(如模板方法模式中的钩子方法)。
-
如何避免过度封装?
- 答:
- 避免为每个字段机械添加 getter/setter,应根据业务需求设计接口。
- 例如,订单的
totalPrice
可能不需要 setter,而是通过calculateTotal()
方法内部计算。
- 答:
通过结合语法规范、设计原则和实战案例,可以清晰展示对封装特性的深入理解,这正是大厂面试中区分候选人的关键!
总结
今天的 3 道 Java 面试题,您是否掌握了呢?持续关注我们的每日分享,深入学习 Java 面试的各个细节,快速提升技术能力!如果有任何疑问,欢迎在评论区留言,我们会第一时间解答!
明天见!🎉
相关文章:
每日 Java 面试题分享【第 16 天】
欢迎来到每日 Java 面试题分享栏目! 订阅专栏,不错过每一天的练习 今日分享 3 道面试题目! 评论区复述一遍印象更深刻噢~ 目录 问题一:Java 运行时异常和编译时异常之间的区别是什么?问题二:什么是 Jav…...
《多线程基础之互斥锁》
【互斥锁导读】互斥锁是大家使用最多的线程同步手段,但仅仅知道怎么用还是不够的?比如:面试官问你"互斥锁是属于内核层还是应用层的同步保护机制?性能怎样?","频繁加解锁,会有什…...
渲染流程概述
渲染流程包括 CPU应用程序端渲染逻辑 和 GPU渲染管线 一、CPU应用程序端渲染逻辑 剔除操作对物体进行渲染排序打包数据调用Shader SetPassCall 和 Drawcall 1.剔除操作 视椎体剔除 (给物体一个包围盒,利用包围盒和摄像机的视椎体进行碰撞检测…...
Android车机DIY开发之学习篇(七)NDK交叉工具构建
Android车机DIY开发之学习篇(七)NDK交叉工具构建 1.ubuntu安装GCC sudo apt-get update sudo apt-get install gcc g sudo gcc --version sudo g --version 2.测试GCC VSCODE中新建Hello.c编译 #include <stdio.h> int main(void) { printf(“Hello, this is a progr…...
c++ map/multimap容器 学习笔记
1 map的基本概念 简介: map中所有的元素都是pair pair中第一个元素是key(键),第二个元素是value(值) 所有元素都会根据元素的键值自动排序。本质: map/multimap 属于关联式容器,底…...
计算机网络之计算机网络体系结构
一、定义与概述 计算机网络体系结构是计算机网络及其部件所应该完成功能的精确定义,这些功能由何种硬件或软件完成是遵循这种体系结构的。体系结构是抽象的,实现是具体的,是运行在计算机软件和硬件之上的。 二、主流模型 目前,…...
研发的立足之本到底是啥?
0 你的问题,我知道! 本文深入T型图“竖线”的立足之本:专业技术 技术赋能业务能力。研发在学习投入精力最多,也误区最多。 某粉丝感发展遇到瓶颈,项目都会做,但觉无提升,想跳槽。于是&#x…...
最优化问题 - 内点法
以下是一种循序推理的方式,来帮助你从基础概念出发,理解 内点法(Interior-Point Method, IPM) 是什么、为什么要用它,以及它是如何工作的。 1. 问题起点:带不等式约束的优化 假设你有一个带不等式约束的优…...
Vue5---
目录 一、学习目标 1.自定义指令 2.插槽 3.综合案例:商品列表 4.路由入门 二、自定义指令 1.指令介绍 2.自定义指令 3.自定义指令的语法 三、自定义指令-指令的值 1.需求 2.语法 3.代码示例 五、插槽-默认插槽 1.作用 2.需求 4.使用插槽的基本语法…...
Helm Chart 实战指南
Helm 是 Kubernetes 的包管理工具,而 Helm Chart 是 Helm 的核心概念,用于定义、安装和升级 Kubernetes 应用。本文将带你从零开始,通过实战演练,掌握 Helm Chart 的创建、配置和部署,帮助你高效管理 Kubernetes 应用。 1. 环境准备 在开始之前,确保你已经具备以下环境:…...
如何写一篇高质量的提示词?
不管是产品经理还是使用AI工具的用户,很多时候的烦恼是如何写提示词,我觉得写提示词就是在梳理思路,下边是一个提示词的结果,OpenAI 的总裁 Greg Brockman 曾转发过这个结构。 这种结构可以创建一个清晰、简洁、可执行的提示&…...
系统架构设计师教材:信息系统及信息安全
信息系统 信息系统的5个基本功能:输入、存储、处理、输出和控制。信息系统的生命周期分为4个阶段,即产生阶段、开发阶段、运行阶段和消亡阶段。 信息系统建设原则 1. 高层管理人员介入原则:只有高层管理人员才能知道企业究竟需要什么样的信…...
在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)
文章目录 1 在Windows系统中安装Ollama,并成功启动;2 非docker方式安装open-webui3下载并部署模型deepseek-r1 Ollama Ollama 是一个命令行工具,用于管理和运行机器学习模型。它简化了模型的下载与部署,支持跨平台使用,…...
使用Redis生成全局唯一ID示例
全局ID生成器,一种在分布式系统下用来生成全局唯一ID的工具,一般满足一下要求特性 1.唯一性 2.高性能 3.安全性 4.递增性 5.高可用 Component public class RedisIdWorker {/*** 定义一个开始的时间戳(秒级)* param args*/private static final long BEGIN_TIMESTAMP 16…...
【llm对话系统】 LLM 大模型推理python实现:vLLM 框架
在 LLM 的应用中,推理 (Inference) 阶段至关重要。它指的是利用训练好的 LLM 模型,根据输入 (Prompt) 生成文本的过程。然而,LLM 的推理速度往往较慢,尤其是在处理长序列或高并发请求时,效率瓶颈尤为突出。 为了解决这…...
16.Word:石油化工设备技术❗【28】
目录 题目 NO1.2 NO3 NO4 题目 NO1.2 F12:另存为将“Word素材.docx”文件另存为“Word. docx”(“docx”为文件扩展名) 光标来到表格上方→插入→形状→新建画布→单击选中→格式→高度/宽度(格式→大小对话框→取消勾选✔锁定…...
《多阶段渐进式图像修复》学习笔记
paper:2102.02808 GitHub:swz30/MPRNet: [CVPR 2021] Multi-Stage Progressive Image Restoration. SOTA results for Image deblurring, deraining, and denoising. 目录 摘要 1、介绍 2、相关工作 2.1 单阶段方法 2.2 多阶段方法 2.3 注意力机…...
Oracle、PostgreSQL该学哪一个?
从事数据库运维一线工作的老鸟,经常会有人来问我:“Oracle 和 PostgreSQL,我该学哪个?哪个更有职业发展前景?” 今天就来和大家好好唠唠。 先说说 Oracle。它堪称数据库领域的 “老牌贵族”,功能极其强大。…...
SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由
前言 在微服务架构中,API 网关是各个服务之间的入口点,承担着路由、负载均衡、安全认证等重要功能。为了实现动态的路由配置管理,通常需要通过中心化的配置管理系统来实现灵活的路由更新,而无需重启网关服务。Nacos 作为一个开源…...
第十六届蓝桥杯大赛软件赛(编程类)知识点大纲
目录 大学 C 组 大学 B 组 研究生及大学 A 组 说明: 大学 C 组 1. 枚举:难度:[1-3] 2. 排序 冒泡排序:难度 2选择排序:难度 3插入排序:难度 3 3. 搜索 广度优先搜索(BFS)&a…...
商品信息管理自动化测试
目录 前言 一、思维导图 二、代码编写 1.在pom.xml文件中添加相关依赖 2.自动化代码编写 三、代码测试 小结 前言 1. 针对商品信息管理项目进行测试,商品信息管理项目主要有商品列表页、部门列表页、员工列表页,主要功能:对商品信息的…...
批量卸载fnm中已经安装的所有版本
直接上代码 fnm list | awk -F NR>1 {print line} {line$2} | xargs -n 1 -I {} fnm uninstall {}原理 fnm list 列出 fnm 中所有已经安装的 node 版本 awk -F NR>1 {print line} {line$2} 以空格分隔-F {line$2},取从左到右第 2 段(v22.11…...
有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# 分析:兔子从第三个月起增加一对,前两个月1对,三月份2对,4月份3对,5月份5对,6月份8对,7月份13个,以此类推每个月的兔子总数是前两月的兔子数的和。 def fibonacci(n): # 定义了斐波…...
ReactNative react-devtools 夜神模拟器连调
目录 一、安装react-devtools 二、在package.json中配置启动项 三、联动 一、安装react-devtools yarn add react-devtools5.3.1 -D 这里选择5.3.1版本,因为高版本可能与夜神模拟器无法联动,导致部分功能无法正常使用。 二、在package.json中配置启…...
【Unity教程】零基础带你从小白到超神part3
粒子系统 在创建粒子系统之前,需要先添加一些粒子样式,这可以在资源商店中通过导入官方提供的StandardAssets资源包得到。完成资源的导入后,该资源包中的StandardAssets>ParticleSystems>Prefabs文件夹下包含多种成品粒子效果…...
[Java]快速入门
java是什么 Java是美国的sun 公司(Stanford University Network)在1995年推出的一门计算机高级编程语言 sun公司于2009年被Oracle(甲骨文)公司收购。 普遍认同lava的联合创始人之一: 詹姆斯高斯林(James Gosling)为Java之父。 Java是世界上最流行的编程语言之一,…...
慕课:若鱼1919的视频课程:Java秒杀系统方案优化 高性能高并发实战,启动文档
代码: Javahhhh/miaosha191: 运行成功了慕课若鱼1919的视频课程:Java秒杀系统方案优化 高性能高并发实战https://github.com/Javahhhh/miaosha191 https://github.com/Javahhhh/miaosha191 miaosha项目启动文档 需安装的配置环境: VMwar…...
stack 和 queue容器的介绍和使用
1.stack的介绍 1.1stack容器的介绍 stack容器的基本特征和功能我们在数据结构篇就已经详细介绍了,还不了解的uu, 可以移步去看这篇博客哟: 数据结构-栈数据结构-队列 简单回顾一下,重要的概念其实就是后进先出,栈在…...
Kafka的内部通信协议
引言 kafka内部用到的常见协议和优缺点可以看看原文 Kafka用到的协议 本文奖详细探究kafka核心通信协议和高性能的关键 网络层通信的实现 基于 Java NIO:Kafka 的网络通信层主要基于 Java NIO 来实现,这使得它能够高效地处理大量的连接和数据传输。…...
【论文投稿-第八届智能制造与自动化学术会议(IMA 2025)】HTML, CSS, JavaScript:三者的联系与区别
大会官网:www.icamima.org 目录 前言 一、HTML(超文本标记语言):网页的骨架 HTML 的作用: 例子: 总结: 二、CSS(层叠样式表):网页的外观设计 CSS 的…...
解锁豆瓣高清海报:深度爬虫与requests进阶之路
前瞻 PosterBandit 这个脚本能够根据用户指定的日期,爬取你看过的影视最高清的海报,并自动拼接成指定大小的长图。 你是否发现直接从豆瓣爬取下来的海报清晰度很低? 使用 .pic .nbg img CSS 选择器,在 我看过的影视 界面找到图片…...
大数据治理实战:架构、方法与最佳实践
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 大数据治理是确保数据质量、合规性和安全性的重要手段,尤其在数据驱动决策和人工智能应用日益普及的背景下&…...
03链表+栈+队列(D1_链表(D1_基础学习))
目录 一、什么是链表 二、基本操作 三、为什么要使用链表 四、为什么能够在常数时间访问数组元素 数组优点 数组缺点 五、动态数组诞生 链表优点 链表缺点 六、链表、数组和动态数组的对比 七、 链表种类 1. 单向链表 2. 双向链表 3. 循环链表 八、链表衍生 ...…...
芯片AI深度实战:进阶篇之vim内verilog实时自定义检视
本文基于Editor Integration | ast-grep,以及coc.nvim,并基于以下verilog parser(my-language.so,文末下载链接), 可以在vim中实时显示自定义的verilog 匹配。效果图如下: 需要的配置如下: 系列文章: 芯片…...
【计算机网络】host文件
host文件的主要功能: 域名解析 本地映射:host文件的主要功能是将**域名映射到相应的 IP 地址**。当计算机需要访问一个网站或服务时,它会首先在 host文件中查找该域名对应的 IP 地址。如果在 host文件中找到了匹配的域名和 IP 地址映射&…...
算法随笔_31:移动零
上一篇:算法随笔_30: 去除重复字母-CSDN博客 题目描述如下: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,…...
知识图谱的动态演化与进化策略
目录 前言1. 数据补充与更新策略1.1 数据源扩展1.2 实体与关系更新1.3 流数据处理 2. 数据质量保障与清洗2.1 数据清洗2.2 数据融合2.3 质量评估 3. 规则与模型优化3.1 规则学习与优化3.2 模型更新3.3 推理能力增强 4. 知识验证与反馈机制4.1 用户反馈机制4.2 知识验证机制 5. …...
C ++ 1
静态变量和全局变量、局部变量的区别、在内存上是怎么分布的 静态局部变量 ● 特点: ○ 作用域:仅限于声明它们的函数或代码块内部。 ○ 生命周期:静态局部变量在程序的整个运行期间都存在,只初始化一次(在第一次使用…...
mybatis(134/134)完结
一级缓存(默认情况下开启)同一个sqlsession中执行相同的查询语句走一级缓存 二级缓存 :同一个sqlsessionfactory,sqlsession关闭了才会将一级缓存提交到二级缓存中 外部编写的缓存 PageHelper插件:方便进行分页&#x…...
SQL注入漏洞之错误类型注入 爆破表 字段 列名称 以及mysql版本 以及Limit使用方式解释 以及靶场相关联系
目录 Msql函数常用函数 基本变量函数 报错注入 报错注入什么时候用? 报错注入函数 报错注入语句-这是重点 报错性注入实战 案例1 爆数据库中的表 案例2 表名称 案例3 表字段 Limit用法解释: Msql函数常用函数 基于msql的基本变量可以学习常用函数是为了…...
k均值聚类将数据分成多个簇
K-Means 聚类并将数据分成多个簇,可以使用以下方法: 实现思路 随机初始化 K 个聚类中心计算每个点到聚类中心的距离将点分配到最近的簇更新聚类中心重复上述过程直到收敛 完整代码: import torch import matplotlib.pyplot as pltdef kme…...
智能工厂能耗管理:Python助力节能增效
智能工厂能耗管理:Python助力节能增效 在工业4.0时代,工厂能耗管理已成为制造企业降本增效的重要一环。传统的能耗管理方式往往依赖人工统计和经验决策,导致能源浪费严重。而借助人工智能与Python的强大能力,我们可以实现智能化、数据驱动的能耗优化方案。今天,我们就来聊…...
【汽车电子架构】AutoSAR从放弃到入门专栏导读
本文是汽车电子架构:AutoSAR从放弃到入门专栏的导读篇。文章延续专栏文章的一贯作风,从概念与定义入手,希望读者能对AutoSAR架构有一个整体的认识,然后对专栏涉及的文章进行分类与链接。本文首先从AutoSAR汽车软件架构的概念&…...
【go语言】指针
一、指针的定义和使用 在 Go 语言中,指针是一种变量,用来存储另一个变量的内存地址。通过指针,我们可以间接地操作其他变量的值。Go 语言中的指针与其他语言(如 C 或 C)的指针有所不同,它不支持指针算术&am…...
宝塔面板SSL加密访问设置教程
参考:https://www.bt.cn/bbs/thread-117246-1-1.html 如何快速使用证书加密访问面板 因早期默认未开启https访问所以没有相关的风险提醒,现面板默认已开启https加密访问、提升安全性 由于采用的是服务器内部本身签发证书,不被公网浏览器信任请参考以下步…...
spring中解决循环依赖的方法
为了避免这种循环依赖问题,Spring 引入了三级缓存的机制,分为: 一级缓存(singletonObjects):这是存放已经完全创建好的单例 Bean 的缓存。当 Bean 完全初始化并且可以被使用时,会存放在这里。 …...
新时代架构SpringBoot+Vue的理解(含axios/ajax)
文章目录 引言SpringBootThymeleafVueSpringBootSpringBootVue(前端)axios/ajaxVue作用响应式动态绑定单页面应用SPA前端路由 前端路由URL和后端API URL的区别前端路由的数据从哪里来的 Vue和只用三件套axios区别 引言 我是一个喜欢知其然又知其所以然的…...
Docker/K8S
文章目录 项目地址一、Docker1.1 创建一个Node服务image1.2 volume1.3 网络1.4 docker compose 二、K8S2.1 集群组成2.2 Pod1. 如何使用Pod(1) 运行一个pod(2) 运行多个pod 2.3 pod的生命周期2.4 pod中的容器1. 容器的生命周期2. 生命周期的回调3. 容器重启策略4. 自定义容器启…...
新年快乐!给大家带来了一份 python 烟花代码!
大家好,我是菲英。 今天带来一份 python 代码,是简易的烟花小程序。 安装包 pip install pygame进入正题 - 我们的烟花代码: import pygame import random import math# 初始化pygame pygame.init()# 设置屏幕大小和标题 screen pygame.…...
iperf 测 TCP 和 UDP 网络吞吐量
注:本文为 “iperf 测网络吞吐量” 相关文章合辑。 未整理去重。 使用 iperf3 监测网络吞吐量 Tom 王 2019-12-21 22:23:52 一 iperf3 介绍 (1.1) iperf3 是一个网络带宽测试工具,iperf3 可以擦拭 TCP 和 UDP 带宽质量。iperf3 可以测量最大 TCP 带宽…...