Java基础关键_037_Java 常见新特性
目 录
一、新语法
1.JShell
2.try-with-resources
(1)jdk 7 之前
(2)jdk 7 之后
(3)jdk 9 之后
3.局部变量类型判断(不推荐)
4.instanceof 的模式匹配
(1)之前写法
(2)模式匹配增强
5.switch
(1)之前写法
(2)jdk 12 之后
(3)jdk 13 之后
6.文本块
7.Record
8.密封类 / 接口
二、新 API
1.String
(1)存储结构改变
(2)jdk 11 新增方法
(3)jdk 12 新增方法
2.接口支持私有方法
3.标识符命名变化
4.简化编译运行程序
5.创建只读集合
6.Optional
(1)创建 Optional 对象
(2)Optional 类的方法
一、新语法
1.JShell
JShell 是 jdk 9 引入的,像 Python、Scala 等语言之前就有交互式编程环境(REPL)。开发者只需要输入一些代码,就可以在编译前获得反馈。之前版本的 Java,必须创建文件、声明类、提供测试方法。
2.try-with-resources
(1)jdk 7 之前
在之前的章节我们就知道,所有被打开的资源(流、文件、Socket 连接 等) 都需要手动关闭,否则随程序不断运行,会造成严重的资源泄漏。
在 jdk 7 之前,需要在 finally 代码块中完成资源的关闭。
public class TryWithResources {public static void main(String[] args) {// jdk 7 之前,创建资源对象,然后调用 close() 方法关闭资源FileReader fileReader = null;FileWriter fileWriter = null;try {fileReader = new FileReader("D:\\apache-maven-3.6.3\\bin\\m2.conf");fileWriter = new FileWriter("D:\\m2.conf");int readCount = 0;char[] chars = new char[1024];while ((readCount = fileReader.read()) != -1) {fileWriter.write(chars, 0, readCount);}fileWriter.flush();} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);} finally {try {if (fileReader != null) {fileReader.close();}if (fileWriter != null) {fileWriter.close();}} catch (IOException e) {throw new RuntimeException(e);}}}
}
(2)jdk 7 之后
jdk 7 之后,应该使用 try-with-resources 语法自动关闭资源。
使用该语法,需要关闭资源的对象的对应类应该实现 java.lang.AutoCloseable 接口,该接口提供了一个抽象的 close 方法。
public class TryWithResources {public static void main(String[] args) {// jdk 7 之后,可以使用try-with-resources语句,自动关闭资源try (FileReader reader = new FileReader("D:\\apache-maven-3.6.3\\bin\\m2.conf");FileWriter writer = new FileWriter("D:\\m2.conf")) {int readCount = 0;char[] chars = new char[1024];while ((readCount = reader.read()) != -1) {writer.write(chars, 0, readCount);}writer.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
(3)jdk 9 之后
jdk 9 之后,再次进行改进。
public class TryWithResources {public static void main(String[] args) throws Exception {// jdk 9 之后,try-with-resources 再次改进FileReader reader = new FileReader("D:\\apache-maven-3.6.3\\bin\\m2.conf");FileWriter writer = new FileWriter("D:\\m2.conf");try (reader; writer) {int readCount = 0;char[] chars = new char[1024];while ((readCount = reader.read()) != -1) {writer.write(chars, 0, readCount);}writer.flush();}}
}
3.局部变量类型判断(不推荐)
jdk 10 之后,新增了局部变量类型判断。在方法体或代码块当中,对于可以在编译期确定的类型,可以使用 var 来定义。对于编译期无法确定的类型,仍需写清楚类型。但是不推荐使用。
public class VarType {public static void main(String[] args) {/*int i = 1;double d = 1.0;String s = "hello";boolean b = true;*/var i = 1;var d = 1.0;var s = "hello";var b = true;System.out.println(i);System.out.println(d);System.out.println(s);System.out.println(b);}
}
4.instanceof 的模式匹配
jdk 14 新增预览,jdk 16 正式版。通过 instanceof 模式匹配增强,可以直接在模式匹配的括号中声明对应类型的局部变量。
(1)之前写法
public class Person {
}
public class Student extends Person {public void study() {System.out.println("study");}
}
public class InstanceofTest {public static void main(String[] args) {Person p = new Student();if (p instanceof Student) {Student student = (Student) p;student.study();}}
}
(2)模式匹配增强
public class InstanceofTest {public static void main(String[] args) {Person p = new Student();if (p instanceof Student s) {s.study();}}
}
5.switch
- 之前 switch 表达式:
- 匹配自上而下,没有 break,则后边的 case 语句都会被执行;
- 不同 case 定义的变量名不能相同;
- 不允许在一个 case 后边写多个值;
- 整个 switch 不可以作为表达式的返回值。
- jdk 12 之后的 switch 表达式更加简洁。
(1)之前写法
public class SwitchTest {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("欢迎查询季节");System.out.print("请输入月份:");int month = in.nextInt();switch (month) {case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;case 12:case 1:case 2:System.out.println("冬季");}}
}
(2)jdk 12 之后
public class SwitchTest {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("欢迎查询季节");System.out.print("请输入月份:");int month = in.nextInt();String season = switch (month) {case 3, 4, 5 -> "春季";case 6, 7, 8 -> "夏季";case 9, 10, 11 -> "秋季";case 12, 1, 2 -> "冬季";default -> "输入有误!";};System.out.println(season);}
}
(3)jdk 13 之后
public class SwitchTest {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("欢迎查询季节");System.out.print("请输入月份:");int month = in.nextInt();String season = switch (month) {case 3:case 4:case 5:yield ("春季");case 6:case 7:case 8:yield ("夏季");case 9:case 10:case 11:yield ("秋季");case 12:case 1:case 2:yield ("冬季");default:yield ("输入有误!");};System.out.println(season);}
}
6.文本块
Java 中,通常使用 String 类型表达 HTML、XML、SQL、JSON 等格式的字符串,在进行字符串赋值时,需要进行转义和连接操作,然后才能编译该代码,这种方式难以阅读和维护。
jdk 12 新增文本块,文本块就是多行字符串,有了文本块以后,用户无需转义,由 Java 自动完成。
public class TextBlock {public static void main(String[] args) {String text = """<html><head><title>Test</title></head><body><p>This is test program.<p></body></html> """;System.out.println(text);}
}
7.Record
在开发中,需要一个类只做纯数据载体、不负责修改等操作,可以将这种类型定义为 Record 类型。可以省略 构造方法、get / set 方法,toString 方法、equals 方法、 hashCode 方法 等等。
Record 类型可以添加:无参构造方法、静态变量、静态方法、实例方法。
public record Animal(String name, int age) {// 自动生成构造方法,getter方法,toString方法,equals方法,hashCode方法,还有两个被 final 修饰的实例变量// 添加无参构造方法public Animal {System.out.println("Animal()");}// 添加静态变量public static final String TYPE = "Animal";// 添加静态方法public static void eat() {System.out.println("Animal.eat()");}// 添加实例方法public void run() {System.out.println("Animal.run()");}
}
public class RecordTest {public static void main(String[] args) {Animal animal = new Animal("Dog", 4);System.out.println(animal.name());System.out.println(animal.age());System.out.println(animal);System.out.println(Animal.TYPE);Animal.eat();animal.run();}
}
8.密封类 / 接口
- 一种新的类修饰符,可以修饰类和接口可以控制哪些类可以扩展或实现该类或接口;
- 作用:
- 维护类层次结构的密闭性:可以保证一组类不被其他类继承或实现,确保了代码的安全性和稳定性;
- 预防代码意外扩展:可以保证在特定的类中才能继承或实现指定的类,强制限制可以继承或实现类的范围;
- 增强可读性和可维护性。
- jdk 15 新增,使用 sealed关键字修饰的类就是密封类;
- 密封类必须是父类或接口,可以使用 permits 关键字指定哪些子类可以继承该密封类或实现该密封接口;
- 密封类的子类必须使用 sealed、final、non-sealed 来修饰;
- Record 类型默认被 final 修饰,其可以做密封接口的实现类
public sealed class Person permits Student, Teacher{
}
public final class Student extends Person {
}
public non-sealed class Teacher extends Person {
}
二、新 API
1.String
(1)存储结构改变
jdk 9 之前,String 底层采用 char 类型数组存储字符。
从 jdk 9 开始,String 底层采用 byte 数组,目的是为了节省空间。
(2)jdk 11 新增方法
public class StringNewMethod {public static void main(String[] args) {/** isBlank(),空格、制表符、换行都认为是空* */String s1 = " ", s2 = "\t", s3 = "\n";System.out.println(s1.isBlank() + " " + s2.isBlank() + " " + s3.isBlank()); // true true true/** repeat(),重复字符串 n 次* */String s4 = "I Love You! ";System.out.println(s4.repeat(3)); // I Love You! I Love You! I Love You!/** strip(),去除字符串首尾空格* */String s5 = " I Miss You!\t";System.out.println(s5.strip()); // I Miss You!/** stripLeading(),去除字符串首空格* */String s6 = " I Hate You!\t";System.out.println(s6.stripLeading()); // I Hate You!/** stripTrailing(),去除字符串尾空格* */String s7 = " I Forgot You!\t";System.out.println(s7.stripTrailing()); // I Forgot You!/** lines(),将字符串按行分割,返回一个 Stream* */String s8 = "I\nAm\nReborn!";s8.lines().forEach(System.out::println);// I// am// reborn!}
}
(3)jdk 12 新增方法
public class StringNewMethod {public static void main(String[] args) {/** indent(),缩进 n 个字符串* */String s9 = "I Like Her!";System.out.println(s9.indent(6));}
}
2.接口支持私有方法
jdk 8 中,接口支持公开静态方法和公开默认方法。
jdk 9 中,接口允许定义私有静态方法和私有成员方法,但不能定义私有默认方法。
public interface InterfaceTest {public static void staticMethods(){}public default void defaultMethods(){}public void methods();private static void privateStaticMethods(){}private void privateMethods(){}
}
3.标识符命名变化
jdk 9 之前,标识符可以独立使用【_】命名。
jdk 9 开始,不能用下划线独立命名标识符了。
4.简化编译运行程序
运行一个 java 文件,必须先编译(javac),再运行(java)。
但是 jdk 11 开始,只需要一个 java 命令即可。
5.创建只读集合
jdk 9 开始,可以通过 List、Set、Map 接口提供的 of(E… elements) 静态方法创建不可变集合。
public class NotChangeCollection {public static void main(String[] args) {List<Integer> list = List.of(1, 2, 3);list.forEach(System.out::println);// 不可以增、删、改// list.add(4);// list.remove(0);// list.set(0, 4);Set<Double> set = Set.of(3.14, 5.20, 13.14);set.forEach(System.out::println);// 不可以增、删、改// set.add(4.14);// set.remove(0);// set.set(0, 4.14);Map<Integer, String> map = Map.of(1, "I ", 2, "Love ", 3, "You");map.forEach((k, v) -> System.out.println(k + ":" + v));// 不可以增、删、改// map.put(4, "!");// map.remove(1);// map.replace(2, "!");List<String> stringList = Arrays.asList("Hello", "World");stringList.forEach(System.out::println);// 不可以增、删// stringList.add("!");// stringList.remove(0);// 可以修改stringList.set(0, "qqq");stringList.forEach(System.out::println);}
}
6.Optional
jdk 8 之前,为了避免错误引用 null 造成空指针异常,经常需要一系列复杂的判空操作。
jdk 8 开始,引入了 Optional 类,可以简单的对 null 值处理,从而避免空指针异常。Optional 类是一个包含有可选项的包装类,意味着 Optional 类中既可以含有对象也可以为 null。
(1)创建 Optional 对象
使用 Optional 类提供的 of() 和 ofNullable() 静态方法创建包含值的 Optional 实例。
若将 null 当作参数传入 of() ,会抛空指针异常。若将 null 当参数传入 ofNullable() ,不会抛出空指针异常。
因此,当对象可能存在或不存在,应使用 ofNullable() 创建Optional 实例。
(2)Optional 类的方法
- T get():若值不为 null 则直接取出该值,若为 null 则抛出空指针异常;
- T orElse(T other):若值不为 null 则直接取出该值,若为 null 则取出参数 other 的值。
相关文章:
Java基础关键_037_Java 常见新特性
目 录 一、新语法 1.JShell 2.try-with-resources (1)jdk 7 之前 (2)jdk 7 之后 (3)jdk 9 之后 3.局部变量类型判断(不推荐) 4.instanceof 的模式匹配 (1&a…...
鸿蒙公共通用组件封装实战指南:从基础到进阶
一、鸿蒙组件封装核心原则 1.1 高内聚低耦合设计 在鸿蒙应用开发中,高内聚低耦合是组件封装的关键准则,它能极大提升代码的可维护性与复用性。 从原子化拆分的角度来看,我们要把复杂的 UI 界面拆分为基础组件和复合组件。像按钮、输入框这…...
IntelliJ 配置(二)配置相关类库(2)LineMarkerProvider
一、介绍 LineMarkerProvider 是 IntelliJ 平台插件开发中的一个接口,它的作用是在编辑器左侧的“行标记区域”(就是代码行号左边那一栏)添加各种图标、标记或导航链接。比如Java 类中看到的: 小绿色三角形(可以点击运…...
红宝书第四十二讲:Angular核心特性精讲:依赖注入 RxJS整合
红宝书第四十二讲:Angular核心特性精讲:依赖注入 & RxJS整合 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、依赖注入(Dependency Injection):快…...
AD917X系列JESD204B MODE7使用
MODE7特殊在F8,M4使用2个复数通道 CH0_NCO10MHz CH1_NCO30MHZ DP_NCO50MHz DDS1偏移20MHz DDS2偏移40MHz...
软考高级系统架构设计师-第11章 系统架构设计
【本章学习建议】 根据考试大纲,本章不仅考查系统架构设计师单选题,预计考12分左右,而且案例分析和论文写作也是必考,对应第二版教材第7章,属于重点学习的章节。 软考高级系统架构设计师VIP课程https://edu.csdn.net/…...
中和农信的“三农”服务密码:科技+标准化助力乡村振兴
作为中国农村市场最大的专注服务农村小微客户的“三农”综合服务机构,中和农信凭借多年积累的农村服务经验,成功从单一小额信贷机构转型为覆盖金融、生产、生活及生态服务的综合型“三农”服务平台。近期,中和农信在由中保保险资产登记交易系…...
【Redis】布隆过滤器应对缓存穿透的go调用实现
布隆过滤器 https://pkg.go.dev/github.com/bits-and-blooms/bloom/v3 作用: 判断一个元素是不是在集合中 工作原理: 一个位数组(bit array),初始全为0。多个哈希函数,运算输入,从而映射到位数…...
MyBatis-Plus笔记(下)
注解 tablename注解 - 描述:表名注解,标识实体类对应的表 - 使用位置:实体类 代码举例: TableName//可以不加,使用实体类的名字作为表名!忽略大小写 //BaseMapper->User实体类-》实体类名-》表名数据…...
【项目管理】第14章 项目沟通管理-- 知识点整理
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...
3个关键数据解密:首航上市如何重构ebay电商新能源供应链?
3个关键数据解密:首航上市如何重构eBay电商新能源供应链? 在跨境电商圈,一个新玩家的崛起往往意味着新的格局变动。2024年,伴随一家名为“首航”的新能源企业在港股成功上市,整个eBay类目的供应链悄然掀起新一轮洗牌。…...
《华为云Node.js部署:从开发环境到生产上线的完整指南》
目录 引言第一步: 重置密码第二步:连接到服务器第三步:安装必要软件第四步:创建项目目录第五步:将代码上传到服务器1、安装 FileZilla2、打开FileZilla,连接到您的服务器:3、连接后,…...
【网络原理】TCP/IP协议五层模型
目录 一. 协议的分层 二. OSI七层网络协议 三. TCP/IP五层网络协议 四. 网络设备所在分层 五. 封装 六. 分用 七. 传输中的封装和分用 八. 数据单位术语 一. 协议的分层 常见的分层为两种OSI七层模型和TCP/IP五层模型 为什么要协议分层? 在网络通信中&…...
Asp.Net Core学习随笔
学习自BLBL杨中科老师 依赖注入(Dependency Injection) 依赖注入是实现控制反转(Inversion Of Control 即IOC)的一种方式(还有一种叫服务定位器的实现,但是不如依赖注入好用),软件开发中实现解耦常用的方式. 比如吃饭 1. 传统写法(没有DI,紧耦合&a…...
基于PHP的酒店网上订房系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 酒店服务是旅游行业的一个重要组成部分,它的作用已经从过去的单一的住宿、结算帐务向全面、高水平的服务型酒店转变。酒店的服务工作贯穿于整个酒店的市场营销、预定、入住、退房、结账等环节,酒店要提高整体工作水平,简化工作程序&…...
《MySQL从入门到精通》
文章目录 《MySQL从入门到精通》1. 基础-SQL通用语法及分类2. 基础-SQL-DDL-数据库操作3. 基础-SQL-DDL-表操作-创建&查询4. 基础-SQL-DDL-数据类型及案例4.1 数值类型4.2 字符串类型4.3 时间和日期类型 5. 基础-SQL-DDL-表操作-修改&删除5.1 DDL-表操作-修改5.2 DDL-表…...
MySQL聚合查询
聚合查询 group by...
生信初学者教程(三十四):文章的方法
文章目录 介绍数据收集和整理数据整合差异基因分析功能富集分析免疫浸润分析候选标记物识别诊断ROC曲线单细胞分析统计方法介绍 在数据分析进行的同时,我们可以逐步撰写方法部分,确保其与结果紧密相连。一旦结果部分完成,方法部分应根据结果的逻辑顺序进行分类和组织。在描…...
算力云平台部署—SadTalker的AI数字人视频
选择算力 部署选择 选择镜像 机器管理 控制台 通过平台工具进入服务器 认识管理系统 打开命令行 进入目录 stable-diffusion-webui# cd 增加执行权限 chmod x ./webui.sh 运行命令 bash ./webui.sh sudo apt install -y python3 python3-venv git 安装软件 Creating the …...
iPhone相册导出到电脑的完整指南
iPhone相册导出到电脑的完整指南 本文介绍通过数据线连接实现iPhone照片视频传输到电脑的标准操作方法,适用于需要备份移动设备影像资料的用户。 环境准备 使用原装Lightning或USB-C数据线连接设备与电脑需在电脑端安装设备管理工具(如克魔助手&#…...
【数据结构】励志大厂版·初阶(复习+刷题):复杂度
前引:从此篇文章开始,小编带给大家的是数据结构初阶的刷题讲解 ,此类文章将简略的包含相关知识,详细的思路拆分讲解,分析每一题的难点、易错点,看见题目如何分析,以上就是小编预备的内容&#x…...
Nginx底层架构(非常清晰)
目录 前言: 场景带入: HTTP服务器是什么? 反向代理是什么? 模块化网关能力: 1.配置能力: 2.单线程: 3.多worker进程 4.共享内存: 5.proxy cache 6.master进程 最后&…...
Golang|Channel 相关用法理解
文章目录 用 channel 作为并发小容器channel 的遍历channel 导致的死锁问题用 channel 传递信号用 channel 并行处理文件用channel 限制接口的并发请求量用 channel 限制协程的总数量 用 channel 作为并发小容器 注意这里的 ok 如果为 false,表示此时不仅channel为空…...
智能合约安全审计平台——以太坊虚拟机安全沙箱
目录 以太坊虚拟机安全沙箱 —— 理论、设计与实战1. 引言2. 理论背景与安全原理2.1 以太坊虚拟机(EVM)概述2.2 安全沙箱的基本概念2.3 安全证明与形式化验证3. 系统架构与模块设计3.1 模块功能说明3.2 模块之间的数据流与安全性4. 安全性与密码学考量4.1 密码学保障在沙箱中…...
趣说区块链隐私智能合约Shielder 实现原理
目录 核心理念 Deposit Withdraw Shielder 是 Aleph Zero 上的智能合约,它利用 zk-SNARK 技术实现隐私支付以及与 DeFi 的隐私交互。这与常规区块链的完全透明性形成鲜明对比,常规区块链允许追踪单个用户与链上合约以及其他用户的所有交互。Shielder 通过使第三方链观察者…...
TCPIP详解 卷1协议 五 Internet协议
5.1——Internet协议 IP是TCP/IP协议族中的核心协议。所有TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。IP 提供了一种尽力而为、无连接的数据报交付服务。“尽力而为”的含义是不保证 IP 数据报能成功到达目的地。任何可靠性必须由上层(例如TCP)提供。…...
基于Oracle ADG通过dblink创建物化视图同步数据到目标库
基于Oracle ADG通过dblink创建物化视图同步数据到目标库 环境说明:源端环境Oracle ADG一主一备,版本11.2.0.4,目标端版本11.2.0.4,测试通过dblink方式在目标库创建物化视图同步ADG备库的数据。 PROD --> STANDBY – > TAR…...
openGauss新特性 | 自动参数化执行计划缓存
目录 自动化参数执行计划缓存简介 SQL参数化及约束条件 一般常量参数化示例 总结 自动化参数执行计划缓存简介 执行计划缓存用于减少执行计划的生成次数。openGauss数据库会缓存之前生成的执行计划,以便在下次执行该SQL时直接使用,可…...
qt中的正则表达式
问题: 1.在文本中把dog替换成cat,但可能会把dog1替换成cat1,如果原本不想替换dog1,就会出现问题 2文本中想获取某种以.txt为结尾的多有文本,普通的不能使用 3如果需要找到在不同的系统中寻找换行符,可以…...
开源项目 | 17款云原生安全相关的扫描和平台类开源工具
“ 随着云计算技术的不断发展,越来越多的企业开始将应用程序和数据存储到云上。然而,云安全问题也随之而来,因此,开源云原生安全工具的需求也越来越大。在本文中,我们将介绍一些流行的开源云原生安全工具,以…...
力扣面试150题—旋转图像和矩阵置零
Day21 题目描述 思路 矩阵转置 在将列反转 1 2 3 4 5 6 7 8 9 转置 1 4 7 2 5 8 3 6 9 反转 7 4 1 8 5 2 9 6 3 class Solution {public void rotate(int[][] matrix) { //分为两步 矩阵转置,将列倒序 int x0; int nmatrix.length; //转…...
ScholarCopilot:“学术副驾驶“
这里写目录标题 引言:学术写作的痛点与 AI 的曙光ScholarCopilot 的核心武器库:智能生成与精准引用智能文本生成:不止于“下一句”智能引用管理:让引用恰到好处 揭秘背后机制:检索与生成的动态协同快速上手:…...
Node.js项目开启多进程的2种方案
当node项目只部署一个单进程单实例时,遇到异常发生后程序会崩溃,此时杀掉进程在重启单这段时间会导致服务不能正常使用,这显然会影响用户体验。 所以需要以多进程的模式去部署应用,这样当某一个进程发生异常重启时,此时有其他请求被接受后,其他进程依旧可以对外提供服务…...
论文导读 | 基于GPU的子图匹配算法
摘要 大规模图上的子图匹配在社交网络挖掘,生物信息学,知识图谱等领域具有关键作用。近年来随着以GPU为代表的新硬件的发展,研究人员开始尝试在GPU上实现这一NP难的任务。GPU提供了大量的计算单元和高速的显存带宽,可以显著提升算…...
中天科技旗下的中天智能装备有限公司,在立库方面有哪些优势?
中天科技旗下的中天智能装备有限公司在立库方面优势显著,主要体现在产品与方案、技术研发、项目经验和服务质量管控等多个维度,能够为客户提供全方位、高品质的立库相关服务。 产品与解决方案优势 多种立库解决方案:提供托盘式立库、料箱式立…...
HTML5+CSS前端开发【保姆级教学】+超链接标签
一、引入: Hello!,各位编程猿们!一个页面可以跳转到其他页面,去访问其他资源,使得我们的文档更加的灵动,那我们如何实现不同页面的跳转呢?本期主要介绍超链接标签 那么什么是超链接…...
【游戏安全】文本校验类风险
文本风险定义: 在游戏中除了动画,声音参与和玩家的交互之外,游戏中的文本也属于和玩家交互中一项重要的元素。由玩家操作触发任何不同于游戏自身逻辑设定,进而破坏游戏平衡的文本内容都可以称之为文本类风险漏洞。(这个定义自己瞎写的…) 文本风险危害(漏洞举例): …...
快速排序及其应用
快速排序及其应用 标准写法改成稳定版本求第k小值O(n)做法快排的另一种写法 标准写法 #include <bits/stdc.h>using namespace std;using ll long long;int a[] {8, 5, 18, 11, 7, 2, 21, 15, 3, 8};void quickSort(int l, int r) {if (l > r) return ; // 元素个数…...
南柯电子|新能源汽车EMC电磁兼容性测试整改:突破行业规范之路
随着新能源汽车产业的蓬勃发展,车辆电子化、智能化程度不断提高,电磁兼容性(EMC)问题日益凸显。作为衡量汽车电子系统稳定性的关键指标,EMC性能不仅影响车辆功能安全,更关乎道路交通的整体安全性。 一、EM…...
LabVIEW 程序持续优化
LabVIEW 以其独特的图形化编程方式,在工业自动化、测试测量、数据分析等众多领域发挥着关键作用。为了让 LabVIEW 程序始终保持高效、稳定,并契合不断变化的实际需求,持续改进必不可少。下面将从多个关键维度,为大家细致地介绍通用…...
裂缝检测数据集,支持yolo,coco json,pasical voc xml,darknet格式的标注,1673张原始训练集图片,正确识别率99.4%
数据集详情: 裂缝检测数据集,支持yolo,coco json,pasical voc xml,darknet格式的标注,1673张原始训练集图片,正确识别率99.4% 2394总图像 数据集分割 训练集占比 70% 1673图片 有效集20% 477图片 测试集...
Webrtc让浏览器实现无服务器中转的安全私密聊天
私密聊天平台的应用介绍 在当今数字时代,隐私和安全成为人们日益关注的焦点。许多人发现,他们的聊天记录、个人信息甚至行为习惯都可能被第三方平台记录、分析甚至滥用。无论是出于保护个人隐私的需要,还是希望实现真正的点对点直接通信&…...
数据结构-限定性线性表 - 栈与队列
栈和队列是数据结构中非常重要的两种限定性线性表,它们在实际应用中有着广泛的用途。这篇文章将深入讲解栈和队列的概念、抽象数据类型、实现方式、应用场景以及性能分析,并通过代码示例帮助大家更好地理解和实践。 一、栈的概念与抽象数据类型 1.1 栈…...
接口的集成测试步骤
一、集成测试是什么 接口的集成测试是指在软件开发过程中,将各个模块或组件按照设计要求组合在一起,并测试它们之间的接口是否能够正确交互和协同工作的过程。集成测试是软件开发中的一个重要阶段,通常在单元测试之后进行,目的…...
Python 实现的运筹优化系统数学建模详解(多目标规划模型)
一、引言 在数学建模的广阔领域中,多目标规划模型占据着极为重要的地位。它致力于在复杂的实际场景里,同时优化多个相互冲突的目标,寻求一组决策变量,让多个目标函数在满足特定约束条件下达到某种平衡。这种模型广泛应用于生产调度…...
AJAX原理与XMLHttpRequest
目录 一、XMLHttpRequest使用步骤 基本语法 步骤 1:创建 XHR 对象 步骤 2:调用 open() 方法 步骤 3:监听 loadend 事件 步骤 4:调用 send() 方法 二、完整示例 1. GET 请求(带查询参数) 2. POST 请…...
css中的3d使用:深入理解 CSS Perspective 与 Transform-Style
在前端开发的奇妙世界中,CSS 不仅负责页面的布局和样式,还能赋予元素生动的动态效果。要实现引人入胜的 3D 变换,perspective 和 transform-style 这两个属性扮演着至关重要的角色。本文将带您深入了解这两个属性,揭开它们如何协同…...
在 JMeter 中,Active Threads Over Time 是一个非常有用的监听器(Listener)
在 JMeter 中,Active Threads Over Time 是一个非常有用的监听器(Listener),它可以帮助你实时观察测试过程中活跃线程数(并发用户数)的变化趋势,从而分析系统的并发处理能力和负载情况。 1. Active Threads Over Time 的作用 实时监控并发用户数:显示测试过程中活跃线程…...
未来七轴机器人会占据主流?深度解析具身智能方向当前六轴机器人和七轴机器人的区别,七轴力控机器人发展会加快吗?
六轴机器人和七轴机器人在设计、功能和应用场景上存在明显区别。六轴机器人是工业机器人的传统架构,而七轴机器人则在多自由度和灵活性方面进行了增强。 本文将在理解这两者的区别以及为何六轴机器人仍然是市场主流,从多个方面进行深入解读六轴和七轴区…...
spark-SOL简介
Spark-SQL简介 一.Spark-SQL是什么 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块 二.Hive and SparkSQL SparkSQL 的前身是 Shark,Shark是给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供的快速上手的工具 …...