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

Java 7新特性深度解析:提升效率与功能

在这里插入图片描述

文章目录

  • Java 7新特性深度解析:提升效率与功能
    • 一、Switch中添加对String类型的支持
    • 二、数字字面量的改进
    • 三、异常处理(捕获多个异常)
    • 四、增强泛型推断
    • 五、NIO2.0(AIO)新IO的支持
    • 六、SR292与InvokeDynamic
    • 七、Path接口
    • 八、fork/join计算框架

Java 7新特性深度解析:提升效率与功能

一、Switch中添加对String类型的支持

Switch语句可以使用原始类型或枚举类型。

Java引入了另一种类型,可以在switch语句中使用:字符串类型。

public class switchAddString {public static void main(String[] args) {String s = "a";switch (s) {case "a":System.out.println("a");break; case "b":System.out.println("b");break;default:System.out.println("default");}}
}

编译器在编译时的处理情形

  1. 仅有一个casedefault,则直接转换为if…else…
  2. 有多个case。先将String转换为hashCode,然后相应的进行处理。

二、数字字面量的改进

  1. 数字中可加入分隔符
    • Java7中支持在数字量中间添加’_’作为分隔符。
    • 下划线仅仅能在数字中间。
    • 编译时编译器自己主动删除数字中的下划线。
  2. Java7添加二进制表示。
public static void main(String[] args) {int i = 10;System.out.println("i=" + i);// 二进制int j = 0b1010;// 十六进制int k = 0x1234;// 1,000,000int l = 1_000_000;// 1,000,000int m = 1__000_000;System.out.println("j=" + j);System.out.println("k=" + k);System.out.println("l=" + l);System.out.println("m=" + m);}

三、异常处理(捕获多个异常)

  1. catch子句能够同一时候捕获多个异常
    • 使用’|'切割,多个类型,一个对象e 。
  2. try-with-resources语句
    • Java7之前须要在finally中关闭socket、文件、数据库连接等资源。
    • Java7引入try-with-resources,用于确保资源在使用后能够正确地关闭。
    • 在使用try-with-resources时,你可以在 try 关键字后面的括号中声明一个或多个资源。
    • 这些资源必须实现 AutoCloseable 接口(Java 7引入的接口,它具有一个 close() 方法用于释放资源)。
public static void main(String[] args) {// 捕获多个异常try {int a = 10;int b = 0;System.out.println("a/b=" + (a / b));} catch (ArithmeticException | NullPointerException e) {e.printStackTrace();}// try-with-resources,在 try 关键字后面的括号中声明一个或多个资源,每个资源用逗号分隔String fileName = "example.txt";try (// 使用try-with-resources声明BufferedReader资源BufferedReader reader = new BufferedReader(new FileReader(fileName));// 需要声明多个资源,我们只需在括号中用逗号分隔BufferedReader reader1 = new BufferedReader(new FileReader("file1.txt"));BufferedReader reader2 = new BufferedReader(new FileReader("file2.txt"))) {// 读取文件内容String line;while ((line = reader.readLine()) != null) {System.out.println(line);}// 这里不需要显式调用reader.close(),因为try-with-resources会自动处理} catch (IOException e) {// 处理可能发生的IOExceptione.printStackTrace();}// 在try代码块执行完毕后,reader会被自动关闭}

四、增强泛型推断

  1. 菱形操作符
    • 在实例化泛型类时,可以使用菱形操作符 <> 来省略类型参数。
    • 编译器会根据上下文推断类型参数。
    • 简化代码,减少冗余,提高代码的可读性。
  2. 泛型实例化类型推断
    • 当泛型类的构造函数的参数包含泛型类型时,Java 7 能够推断泛型的类型。
    • 这允许你在实例化泛型类时省略类型参数,只在构造函数参数中指定类型即可。
public static void main(String[] args) {// Java7之前ArrayList<String> arrayList = new ArrayList<String>();// Java7之后ArrayList<String> arrayList2 = new ArrayList<>();// 泛型类class Generic<T> {// 构造函数参数为泛型类型public Generic(T t) {}}// 使用泛型实例化类型推断Generic<String> generic = new Generic<>("abc");}

五、NIO2.0(AIO)新IO的支持

Java 7 引入了 NIO 2.0(New I/O),其中包含对异步 I/O(AIO)的支持,这是一个显著的新特性,特别是在处理非阻塞 I/O 操作时非常有用。具体来说,NIO 2.0 的 AIO 支持通过引入 AsynchronousFileChannel 类来实现异步文件 I/O 操作。

  1. AsynchronousFileChannel 类:
    • 允许进行异步文件读取和写入操作。
    • 相比于传统的阻塞 I/O,异步 I/O 可以在读写数据的同时执行其他操作,从而提高系统的效率和性能。
public static void main(String[] args) throws Exception {// 异步读取文件Path path = Paths.get("file.txt");AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ);// 分配缓冲区ByteBuffer buffer = ByteBuffer.allocate(1024);// 读取文件long position = 0;// 异步读取数据,用于检查读取操作的状态和获取读取的结果Future<Integer> operation = fileChannel.read(buffer, position);while (!operation.isDone()) {// 等待读取完成Thread.sleep(1000);}// 读取完成,将缓冲区数据翻转buffer.flip();// 读取数据byte[] data = new byte[buffer.limit()];// 将缓冲区数据复制到data中buffer.get(data);System.out.println(new String(data));// 关闭文件fileChannel.close();}
  1. AsynchronousServerSocketChannel 和 AsynchronousSocketChannel:
    • 用于支持异步的网络编程。
    • 这些类允许你创建异步服务器端和客户端,并进行异步的网络数据读取和写入操作。
    • 在高并发环境下处理 I/O 操作变得更为高效和灵活。
public static void main(String[] args) throws Exception {// 创建异步通道AsynchronousServerSocketChannel serverChannel =AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(8080));// 接受连接serverChannel.accept(null, new CompletionHandler<AsynchronousSocketChannel, Void>() {/*** 接受连接完成时调用此方法。* @param clientChannel* @param attachment*/@Overridepublic void completed(AsynchronousSocketChannel clientChannel, Void attachment) {// 继续接受连接serverChannel.accept(null, this);// 读取数据ByteBuffer buffer = ByteBuffer.allocate(1024);// 异步读取数据clientChannel.read(buffer, buffer, new CompletionHandler<Integer, ByteBuffer>() {/*** 当读取操作完成时调用此方法。** @param result 读取操作的结果,通常为读取的字节数,但在此处未使用* @param attachment 包含读取数据的ByteBuffer对象*/@Overridepublic void completed(Integer result, ByteBuffer attachment) {// 处理读取完成attachment.flip();// 读取数据byte[] data = new byte[attachment.limit()];// 将数据复制到数组中attachment.get(data);System.out.println(new String(data));}/*** 读取操作失败时调用此方法。* @param exc* @param attachment*/@Overridepublic void failed(Throwable exc, ByteBuffer attachment) {// 处理读取失败}});}/*** 接受连接失败时调用此方法。* @param exc* @param attachment*/@Overridepublic void failed(Throwable exc, Void attachment) {// 处理接受连接失败}});// 程序继续执行其他操作Thread.sleep(Long.MAX_VALUE);}

六、SR292与InvokeDynamic

  1. SR-292(Small Ranges):
    • SR-292 是 Java 7 中引入的一个改进,主要针对 switch 语句的性能优化。
    • 在早期的 Java 版本中,switch 语句的效率问题在于它通过逐个比较每个 case 条件来确定执行的分支,如果分支很多,这个过程可能会很慢。
    • SR-292 引入了一种优化,即当 switch 语句的 case 常量之间的距离非常小(称为 “small ranges”),Java 编译器会使用一种更有效的查找方式,而不是简单的逐个比较。
    • 这种方式可以显著提高 switch 语句的执行速度,特别是在处理密集的条件分支时。
public static void main(String[] args) {int month = 3;String monthName;// Java 7 的 SR-292 特性可以在一些情况下优化这样的 switch 语句,尤其是在 case 常量的范围较小时switch (month) {case 1:monthName = "January";break;case 2:monthName = "February";break;case 3:monthName = "March";break;case 4:monthName = "April";break;case 5:monthName = "May";break;case 6:monthName = "June";break;default:monthName = "Unknown";break;}System.out.println("Month: " + monthName);}
  1. InvokeDynamic(动态方法调用):
    • InvokeDynamicJava 7 引入的另一个重要特性,它是 Java 虚拟机(JVM)层面的改进,旨在支持更灵活和高效的动态语言实现。
    • 允许 Java 代码中的方法调用在运行时动态解析,并且可以绑定到相应的方法实现。
    • 用来优化字节码生成和方法调用的性能。
    • Java 8Lambda 表达式依赖于 InvokeDynamic 来生成相应的字节码。
public static void main(String[] args) throws Throwable {// 创建动态调用MethodHandles.Lookup lookup = MethodHandles.lookup();// 创建方法句柄,使用lookup对象来查找Math.class中的静态方法sqrt,该方法接受一个double参数并返回一个dou* 第一个参数是`lookup`对象。MethodHandle mh = lookup.findStatic(Math.class, "sqrt",MethodType.methodType(double.class, double.class));// 创建动态调用// 第一个参数是`lookup`对象// 第二个参数是方法名,这里使用`"apply"`,因为它是`Function`接口中唯一的方法。// 第三个参数是`Function`接口的签名(即`Function.class`的类型)。// 第四个参数是`mh`的泛型类型签名。// 第五个参数是我们要调用的方法句柄(即`mh`)。// 第六个参数是`mh`的类型签名,表示我们要调用的方法的实际类型。CallSite sqrt = LambdaMetafactory.metafactory(lookup, "apply",MethodType.methodType(Function.class),mh.type().generic(),mh,mh.type());// 调用动态调用MethodHandle factory = sqrt.getTarget();// 调用工厂方法,得到一个Function对象,使用了强制类型转换,因为factory.invoke()返回的是一个ObjectFunction<Double, Double> sqrtFunc = (Function<Double, Double>) factory.invoke();double result = sqrtFunc.apply(16.0);System.out.println("Square root of 16: " + result);}

七、Path接口

在 Java 7 之前,通常使用 java.io.File 类来处理文件路径,Java 7 引入了 java.nio.file.Path 接口,它是 Java 中操作文件和目录路径的抽象表示。 Path 接口提供了更多功能和更强大的操作能力。

Path 接口的一些主要特性和用法

  1. 路径表示

    • Path 接口可以表示文件系统中的路径,可以是文件或目录。它不仅仅是一个字符串,而是一个真正的对象,提供了丰富的方法来操作路径。
  2. 创建路径

    • 可以使用Paths 类的静态方法来创建 Path 对象

      Path path = Paths.get("/path/to/file.txt");
      
  3. 路径操作

    • Path 接口提供了多种方法来获取路径的信息
      • toString():将路径转换为字符串表示。
      • getFileName():获取路径中的文件名部分。
      • getParent():获取路径中的父路径。
      • getRoot():获取路径的根部分。
      • getNameCount():获取路径中的名称元素的数量。
      • subpath(int beginIndex, int endIndex):获取指定范围内的子路径。
  4. 路径解析

    • resolve() 方法可以用于解析相对路径或者连接两个路径,返回一个新的路径对象。
  5. 检查路径属性

    • 可以使用 Files 类的静态方法来检查文件或目录的属性,例如是否存在、是否可读、是否可写等。
  6. 文件操作

    • Files 类结合 Path 接口提供了丰富的文件操作功能,包括读取文件内容、写入文件、复制、移动、删除等。
  7. 路径迭代

    • Path接口支持迭代,可以方便地遍历路径的各个部分。

      for (Path element : path) {System.out.println(element);
      }
      
  8. 相对路径和绝对路径

    • Path 接口可以表示相对路径和绝对路径,并提供了方法来转换和处理这两种路径。
public static void main(String[] args) {// 创建一个 Path 对象Path path = Paths.get("/path/to/file.txt");// 获取文件名Path fileName = path.getFileName();System.out.println("File Name: " + fileName);// 获取父路径Path parent = path.getParent();System.out.println("Parent Path: " + parent);// 获取路径的根部分Path root = path.getRoot();System.out.println("Root of the path: " + root);// 获取路径的元素数量int nameCount = path.getNameCount();System.out.println("Number of elements in the path: " + nameCount);// 遍历路径的每个元素System.out.println("Elements in the path:");for (int i = 0; i < nameCount; i++) {System.out.println("Element " + i + ": " + path.getName(i));}// 路径解析示例Path resolvedPath = path.resolve("subdir");System.out.println("Resolved Path: " + resolvedPath);// 检查文件或目录的属性// 判断文件是否存在boolean exists = Files.exists(path);System.out.println("Exists: " + exists);// 判断文件是否是目录boolean isReadable = Files.isReadable(path);System.out.println("Readable: " + isReadable);// 判断文件是否是可写boolean isWritable = Files.isWritable(path);System.out.println("Writable: " + isWritable);// 读取文件内容Path filePath = Paths.get("/path/to/file.txt");List<String> lines = null;try {lines = Files.readAllLines(filePath, StandardCharsets.UTF_8);} catch (IOException e) {throw new RuntimeException(e);}for (String line : lines) {System.out.println(line);}// 写入文件内容Path newFilePath = Paths.get("/path/to/newfile.txt");String content = "Hello, Java 7!";try {Files.write(newFilePath, content.getBytes());} catch (IOException e) {throw new RuntimeException(e);}// 复制文件Path copiedFilePath = Paths.get("/path/to/copiedfile.txt");try {Files.copy(filePath, copiedFilePath, StandardCopyOption.REPLACE_EXISTING);} catch (IOException e) {throw new RuntimeException(e);}// 移动文件Path targetPath = Paths.get("/path/to/targetdir/movedfile.txt");try {Files.move(filePath, targetPath, StandardCopyOption.REPLACE_EXISTING);} catch (IOException e) {throw new RuntimeException(e);}// 删除文件try {Files.delete(filePath);} catch (IOException e) {throw new RuntimeException(e);}}

八、fork/join计算框架

Java 7 引入了 Fork/Join 框架,是一种并行计算框架,专门用于解决分而治之的问题。主要用于执行递归式地将问题划分为更小子问题,并行执行这些子问题的计算,然后合并结果的任务。

使用 Fork/Join 框架的基本步骤:

  1. 定义任务类 (RecursiveTaskRecursiveAction):
    • RecursiveTask: 用于有返回值的任务。
    • RecursiveAction: 用于无返回值的任务。
  2. 重写 compute() 方法:
    • 在任务类中,需要实现 compute() 方法来定义任务的具体执行逻辑。
    • 通常会判断是否需要进一步拆分任务,执行子任务的计算,最终将子任务的结果合并或处理。
  3. 创建 Fork/Join 池:
    • 使用 ForkJoinPool 类来管理并发执行的任务。
    • 通常可以通过 ForkJoinPool.commonPool() 方法来获取默认的线程池,也可以根据需要创建自定义的线程池。
  4. 提交任务:
    • 将任务提交给 ForkJoinPool 来执行。

使用 Fork/Join 框架来计算数组的总和Demo

import java.util.concurrent.*;// 继承 RecursiveTask 来实现有返回值的任务
class SumTask extends RecursiveTask<Long> {// 阈值,控制任务拆分的粒度private static final int THRESHOLD = 10;private int[] array;private int start;private int end;public SumTask(int[] array, int start, int end) {this.array = array;this.start = start;this.end = end;}@Overrideprotected Long compute() {if (end - start <= THRESHOLD) {// 如果任务足够小,直接计算结果long sum = 0;for (int i = start; i < end; i++) {sum += array[i];}return sum;} else {// 否则,拆分任务为更小的子任务int mid = (start + end) / 2;SumTask leftTask = new SumTask(array, start, mid);SumTask rightTask = new SumTask(array, mid, end);// 异步执行左边的子任务leftTask.fork();// 同步执行右边的子任务long rightResult = rightTask.compute(); // 获取左边子任务的结果long leftResult = leftTask.join(); // 合并子任务的结果return leftResult + rightResult;}}
}public class ForkJoinDemo {public static void main(String[] args) {int[] array = new int[100];for (int i = 0; i < array.length; i++) {array[i] = i;}// 创建 Fork/Join 线程池ForkJoinPool forkJoinPool = ForkJoinPool.commonPool();// 创建任务并提交给 Fork/Join 线程池SumTask task = new SumTask(array, 0, array.length);long result = forkJoinPool.invoke(task);// 输出计算结果System.out.println("Sum: " + result);}
}

如果你累了,学会休息,而不是放弃

相关文章:

Java 7新特性深度解析:提升效率与功能

文章目录 Java 7新特性深度解析&#xff1a;提升效率与功能一、Switch中添加对String类型的支持二、数字字面量的改进三、异常处理&#xff08;捕获多个异常&#xff09;四、增强泛型推断五、NIO2.0&#xff08;AIO&#xff09;新IO的支持六、SR292与InvokeDynamic七、Path接口…...

RHEL9找不到/var/log/dmesg日志文件问题

问题描述 在Rocky Linux 9 服务器上查看启动日志&#xff0c;发现没有/var/log/dmesg文件。 dmesg是什么&#xff1f; dmesg(diagnostic messages)用于打印kernel ring buffer的所有消息。 kernel会将开机信息存储在ring buffer中&#xff0c;如果开机时来不及查看启动信息&…...

是什么让以太坊从众多公链中脱颖而出

以太坊从众多公链中脱颖而出&#xff0c;成为区块链和加密货币领域的一个重要玩家&#xff0c;主要是由于以下几个关键因素&#xff1a; 智能合约&#xff1a; 以太坊是第一个广泛实施智能合约的区块链平台&#xff0c;智能合约允许在区块链上自动执行合同条款&#xff0c;无需…...

HarmonyOS--路由管理--组件导航 (Navigation)

文档中心 什么是组件导航 (Navigation) &#xff1f; 1、Navigation是路由容器组件&#xff0c;一般作为首页的根容器&#xff0c;包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式 2、Navigation组件适用于模块内和跨模块的路由切换&#xff0c;一次开发&#xff0…...

【Linux 命令】文件比较 diff

diff 命令是 Unix 和类 Unix 系统&#xff08;如 Linux 和 macOS&#xff09;中用于比较文件内容差异的一个非常有用的命令行工具。它可以逐行比较两个文件的内容&#xff0c;并输出它们之间的差异。这些差异通常以行为单位显示&#xff0c;并且会标记出哪些行是唯一的、添加的…...

猫头虎分享[可灵AI」官方推荐的驯服指南-V1.0

猫头虎分享[可灵AI」官方推荐的驯服指南-V1.0 猫头虎是谁&#xff1f; 大家好&#xff0c;我是 猫头虎&#xff0c;别名猫头虎博主&#xff0c;擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程、bug解决思路、开发工具教程、前沿科技资讯、产品评…...

你的硬盘知道的太多:你以为你的秘密真的被删除了吗?

某一天你收到了朋友发给你的一个秘密文件&#xff0c;在看完之后&#xff0c;为了不被别人发现&#xff0c;你决定将文件毁尸灭迹&#xff01; 你选中文件名称 / 右键 / 删除&#xff0c;好了&#xff0c;文件已经消失了。但你是懂电脑的&#xff0c;知道文件此时还在回收站里面…...

虚拟机的网络配置

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️ 每一步都向着梦想靠近&#xff0c;坚持就是胜利的序曲 一 …...

ONLYOFFICE8.1版本桌面编辑器简单测评

ONLYOFFICE官网链接&#xff1a;在线PDF查看器和转换器 | ONLYOFFICE ONLYOFFICE介绍&#xff1a;https://www.onlyoffice.com/zh/office-suite.aspx OnlyOffice 是一款免费且开源的 Office 协作办公套件&#xff0c;支持桌面端和移动端等多平台&#xff0c;由一家领先的 IT 公…...

PDF内存如何变小,PDF内存压缩,PDF内存变小怎么调整

在数字化时代&#xff0c;pdf已成为工作、学习和生活中不可或缺的文件格式。它以其跨平台兼容性和安全性受到广大用户的喜爱。然而&#xff0c;随着pdf文件中嵌入的图片、图形和文本内容的增多&#xff0c;文件大小往往会变得相当可观&#xff0c;给文件的传输和存储带来一定的…...

深⼊理解MySQL Innodb存储引擎的缓冲池、事务、索引底层工作原理,掌握 MySQL 主从同步,读写分离技术以及集群的搭建,具备分库分表,SQL调优经验

深入理解MySQL的InnoDB存储引擎是数据库管理员和开发人员的重要技能。以下是对InnoDB存储引擎的缓冲池、事务、索引以及主从同步、读写分离技术和集群搭建的详细原理介绍&#xff1a; ### InnoDB存储引擎 1. **缓冲池(Buffer Pool)**&#xff1a; - 缓冲池是InnoDB存储引擎…...

《HelloGitHub》第 99 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…...

mysql 将一个列按逗号分割为多列

在MySQL中&#xff0c;将一个列按逗号分割为多列通常需要使用字符串函数&#xff0c;如SUBSTRING_INDEX()&#xff0c;配合UNION ALL或CROSS JOIN等操作来实现。 假设有一个表my_table&#xff0c;它有一个列tags&#xff0c;其中存储了逗号分隔的标签值&#xff0c;如下所示&…...

Vue 3中 <script setup> 与生命周期钩子函数的详细解析

Vue 3中 <script setup> 与生命周期钩子函数的详细解析 Vue 3 引入了 <script setup> 语法糖&#xff0c;这是一种简化和集成组件逻辑的新方式。尽管 <script setup> 简化了组件的编写&#xff0c;但仍然可以利用 Vue 提供的生命周期钩子函数来管理组件的生…...

一篇文章入门主成分分析PCA

文章目录 基本概念事件随机变量独立同分布离散型随机变量伯努利分布&#xff08;两点分布&#xff09;二项分布几何分布泊松分布 连续型随机变量正态分布 期望方差标准化协方差相关系数线性组合特征值和特征向量特征值分解对称矩阵的特征值分解 齐次线性方程组单位向量基向量矩…...

Android系统为什么lmkd杀到adj 100就代表有低内存?

在Android系统中&#xff0c;lmkd&#xff08;Low Memory Killer Daemon&#xff0c;低内存终止守护进程&#xff09;负责监控系统的内存状态&#xff0c;并在内存压力较高时通过终止不必要的进程来释放内存&#xff0c;以维持系统的稳定运行。关于lmkd为何在杀到adj&#xff0…...

d嘤嘤不想求异或喵(牛客周赛49)

题意&#xff1a; 嘤嘤有两个整数 l,r&#xff0c;她想知道区间 [l,r] 所有整数的异或和是多少. 分析&#xff1a; 样例1只有一个数输出1 样例2 1^201^10113 样例3 1^2^301^10^1111^11000 #include<bits/stdc.h> using namespace std; typedef long long ll; ll f(l…...

java反射-动态调用方法

通过字符串动态创建对象&#xff0c;通过字符串动态使用对象方法 package com.hmdp.service.动态调用方法;import java.lang.reflect.Method;public class Main {public static void main(String[] args) throws Exception {String name "javax.swing.JFrame";Clas…...

ThreadLocal作用

ThreadLocal作用(线程本地存储) ThreadLocal&#xff0c;很多地方叫做线程本地变量&#xff0c;也有些地方叫做线程本地存储&#xff0c;ThreadLocal的作用是提供线程内的局部变量&#xff0c;这种变量在线程的生命周期内起作用&#xff0c;减少同一个线程内多个函数或者组件之…...

Python基础入门知识

目录 引言 简要介绍Python语言 为什么要学习Python Python的应用领域 Python安装和环境配置 Python的下载和安装(Windows, macOS, Linux) 配置Python环境变量 安装和使用IDE(如PyCharm, VS Code) Python基本语法 注释 变量和数据类型(数字,字符串,列表,元组,字典,…...

uniapp——据用户角色显示或隐藏部分功能权限。

v-if"user.state.agent_level!business || (user.state.agent_levelbusiness && item.value ! 3 && item.value ! 4)"...

JCR一区级 | Matlab实现BO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现BO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现BO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BO-Transformer-LSTM多变量回归预测&#xff0c;贝叶斯优化Transformer结合LSTM长…...

软件开发环境-系统架构师(二十一)

1、对计算机评价的主要性能指标有时钟频率、&#xff08;&#xff09;、运算精度和内存容量等。 对数据库管理系统评价的主要性能指标有&#xff08;&#xff09;、数据库所允许索引数量和最大并发事务处理能力。 问题1 A丢包率 B端口吞吐量 C可移植性 D数据处理速率 问题…...

AI与大模型工程师证书研修班报名啦!

人工智能大模型是指拥有超大规模参数&#xff08;通常在十亿个以上&#xff09;、超强计算资源的机器学习模型&#xff0c;能够处理海量数据&#xff0c;完成各种复杂任务&#xff0c;如自然语言处理、图像识别等。计算机硬件性能不断提升&#xff0c;深度学习算法快速优化&…...

ctfshow-web入门-命令执行(web56、web57、web58)

目录 1、web56 2、web57 3、web58 1、web56 命令执行&#xff0c;需要严格的过滤 新增过滤数字&#xff0c;只能采用上一题临时文件上传的方法&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…...

controller不同的后端路径对应vue前端传递数据发送请求的方式,vue请求参数 param 与data 如何对应后端参数

目录 案例一&#xff1a; 为什么使用post发送请求&#xff0c;参数依旧会被拼接带url上呢&#xff1f;这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后&#xff0c;data会以请求体传递 补充&#xff1a;后端controller 参数上如果没写任何注解&#xff0c…...

【FFmpeg】avcodec_send_frame函数

目录 1.avcodec_send_frame1.1 将输入的frame存入内部buffer&#xff08;encode_send_frame_internal&#xff09;1.1.1 frame的引用函数&#xff08;av_frame_ref &#xff09;1.1.1.1 帧属性的拷贝&#xff08;frame_copy_props&#xff09;1.1.1.2 buffer的引用函数&#xf…...

python获取字符编码

在Python中&#xff0c;您可以使用内置的ord()函数获取单个字符的Unicode编码&#xff0c;使用encode()方法获取字符串的字节编码。 获取单个字符的Unicode编码: char a unicode_code ord(char) print(unicode_code) # 输出字符的Unicode编码 获取字符串的字节编码: tex…...

通过MATLAB控制TI毫米波雷达的工作状态之实时数据采集

前言 前一章博主介绍了如何基于MATLAB的各种前面板组件结合MATLAB代码来发送CFG指令控制毫米波雷达的工作状态,这一章节博主将介绍如何基于这些组件结合MATLAB代码来实现TI毫米波雷达数据的实时采集。目前大部分TI毫米波雷达的数据采集均是仅可以采集一段数据又或者利用DAC10…...

华为HCIP Datacom H12-821 卷21

1.单选题 以下关于PIM-SM中SPT切换的描述,错误的是哪一项? A、若所有组播流量都经过RP路由器,则RP路由器可能成为数据转发的瓶颈 B、SPT路径最短,转发性能更优 C、SPT 切换完成后,组播流量依然经过 ReT 树 D、RPT 树可能不是组播流量转发的最优路径 正确答案: C 解析…...

MySQL之应用层优化(二)

应用层优化 Web服务器问题 寻找最优并发度 每个Web服务器都有一个最佳并发度——就是说&#xff0c;让进程处理请求尽可能快&#xff0c;并且不超过系统负载的最优的并发连接数。这就是前面说的最大系统容量。进行一个简单的测量和建模&#xff0c;或者只是反复试验&#xf…...

Java源码解读之常量52429

文章目录 为什么有52429的常量呢&#xff1f;对于为什么选择52429?那么为什么不再选几位呢&#xff1f; 在JDK8源码中 java.lang.Integer有52429作为常量出现&#xff0c; 为什么有52429的常量呢&#xff1f; static void getChars(int i, int index, char[] buf) {int q, r;…...

“Photoshop AI插件:StartAI的全面使用攻略

随着人工智能技术的飞速发展&#xff0c;Photoshop作为设计师们不可或缺的工具&#xff0c;也在不断地融入AI技术&#xff0c;以提升设计效率和效果。在2024年&#xff0c;PSAI插件StartAI因其强大的功能和易用性&#xff0c;成为了Photoshop用户的得力帮手。下面来给大家详细介…...

入门Axure:快速掌握原型设计技能

2002 年&#xff0c;维克托和马丁在旧金山湾区的一家初创公司工作&#xff0c;发现自己一再被软件开发生命周期的限制所困扰&#xff0c;而且产品团队在编写规范之前很难评估他们的解决方案&#xff0c;开发人员经常不理解&#xff08;或不阅读&#xff09;给出的规范&#xff…...

Java中的序列化与反序列化详解

Java中的序列化与反序列化详解 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是序列化与反序列化&#xff1f; 序列化&#xff08;Serialization&#…...

在鸿蒙开发中如何实现皮肤切换?

在鸿蒙开发中&#xff0c;实现主题皮肤切换可以通过以下步骤&#xff1a; 1. 创建不同的主题样式文件&#xff0c;例如theme_light.json和theme_dark.json。 2. 在应用程序的config.json文件中&#xff0c;引入这些主题样式文件。 3. 在应用程序的入口文件&#xff08;例如main…...

FlowUs新一代内容创作营销平台|FlowUs息流国产 好用 不限速

FlowUs 作为一个知识管理和协作平台&#xff0c;知识库功能可以被视为一个强大的学习工具&#xff01; 为什么FlowUs知识库可以成为学习利器呢&#xff1f;原因有以下几点 集中化知识存储&#xff1a;FlowUs允许我们将所有相关信息和资料集中在一个地方&#xff0c;便于访问和复…...

WebSocket解决方案(springboot 基于Redis发布订阅)

WebSocket 因为一般的请求都是HTTP请求&#xff08;单向通信&#xff09;&#xff0c;HTTP是一个短连接&#xff08;非持久化&#xff09;&#xff0c;且通信只能由客户端发起&#xff0c;HTTP协议做不到服务器主动向客户端推送消息。WebSocket确能很好的解决这个问题&…...

如何优化网站SEO排名?

选择那些容易排名的关键词。使用工具找到那些竞争少但有流量的词语。其次&#xff0c;内部链接非常重要。通过合理的内部链接&#xff0c;可以提升各个页面的权重。 增加FAQ部分能帮助你捕捉更多的长尾关键词流量。争取出现在精选摘要的位置&#xff0c;可以直接提升你的曝光率…...

基于Java的音乐网站系统-计算机毕业设计源码01239

目 录 摘要 1 绪论 1.1 研究背景 1.2系统开发目标、意义 1.3研究内容 2 相关技术介绍 2.1 MySQL数据库 2.2 Java编程语言 2.3 SpringBoot框架介绍 3 系统需求分析与设计 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 法律可行性分析 3.2 需…...

云原生之容器编排实践-OpenEuler23.09在线安装Kubernetes与KubeSphere

背景 前几篇文章中介绍了如何将 ruoyi-cloud 项目部署到 Kubernetes 集群中&#xff0c;包括网关服务、认证服务和系统服务并且对全部服务采用 YAML 文件的方式来进行部署&#xff0c;这虽然有助于理解 K8S 组织管理资源的风格与底层机制&#xff0c;但是对于团队中不太熟悉命…...

Ubuntu 截图shutter,图像编辑 gimp,录屏kazam

1.截图&#xff1a; Shutter 安装shutter命令&#xff1a; sudo add-apt-repository ppa:shutter/ppasudo apt-get updatesudo apt-get install shutter 2.图片编辑&#xff1a;Gimp, Kolourpaint, Pinta gimp全名为&#xff1a;GNU Image Manipulation Program&#xff0c…...

WSO2 products 文件上传漏洞(CVE-2022-29464)

前言 CVE-2022-29464 是一个影响多个 WSO2 产品的严重远程代码执行&#xff08;RCE&#xff09;漏洞。这些产品包括 WSO2 API Manager、WSO2 Identity Server 和 WSO2 Enterprise Integrator 等。由于用户输入验证不当&#xff0c;该漏洞允许未经身份验证的攻击者在服务器上上…...

YOLOv8改进 | 卷积模块 | SAConv可切换空洞卷积

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…...

使用Python下载并合并HLS视频片段

下载和合并视频片段的实用方法 在日常工作中&#xff0c;我们经常会遇到需要从网上下载视频并将其合并成一个完整视频的需求。本文将介绍如何使用 Python 下载多个视频片段&#xff0c;并使用 ffmpeg 将这些片段合并成一个完整的视频文件。以下是具体步骤和代码实现。 完整代…...

常见的九种二极管

常见的九种二极管 文章目录 常见的九种二极管1、普通二极管2、光电二极管&#xff08;LED&#xff09;3、变容二级管4、发光二极管5、恒流二极管6、快恢复二极管&#xff08;FRD&#xff09;7、肖特基二极管8、瞬态电压抑制二极管(TVS)9、齐纳二极管&#xff08;稳压&#xff0…...

竞赛选题 python的搜索引擎系统设计与实现

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python的搜索引擎系统设计与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;5分创新点&#xff1a;3分 该项目较为新颖&#xff…...

大模型技术方向夏令营1期-对话分角色要素提取挑战赛

#AI夏令营 #Datawhale #夏令营 一、 baseline 跑通 Baseline 本身挑战性有限&#xff0c;关键是熟悉 LLM-centric 相关任务 coding 层面的流程方法&#xff0c;比如: 大模型 API&#xff08;这里为科大讯飞 Spark&#xff09;调用token消耗的理解如何调用大模型实现针对给定…...

类和对象(封装、继承、多态、友元)

c面相对象的三大特性为&#xff1a;封装、继承、多态 c 认为万事万物都皆为对象&#xff0c;对象上有其属性和行为 一、类和对象&#xff08;封装&#xff09; &#xff08;一&#xff09;封装的意义 封装是c面相对象的三大特性之一 封装的意义&#xff1a; 将属性和行为…...

关于Yolov8我踩过的那些坑

按照报错频次梳理&#xff1a; 致命反斜杠‘\’ 调用模型时&#xff0c;我喜欢‘copy relative location’&#xff0c;然后win系统默认反斜杠&#xff01; 就导致路径读取错误&#xff01;各种报错&#xff01;&#xff01; debug到崩溃然后发现是斜杠的问题&#xff0c;本吗喽…...

Three.js机器人与星系动态场景:实现3D渲染与交互式控制

内容摘要&#xff1a;使用Three.js库构建了一个交互式的3D场景。组件中创建了一个机器人模型&#xff0c;包括头部、眼睛、触角、身体和四肢&#xff0c;以及两个相同的机器人实例以实现动态效果。场景中还加入了粒子效果&#xff0c;模拟星系环境&#xff0c;增强了视觉效果。…...

昇思25天学习打卡营第17天|ChatGLM-6B聊天demo

一、简介&#xff1a; 本次实验&#xff0c;基于MindNLP和ChatGLM6B模型搭建一个小的聊天应用&#xff0c;ChatGLM6B 是基于 GLM-4 模型开发的开源对话机器人&#xff0c;拥有 62 亿个参数&#xff0c;能够进行自然流畅的语言交流。在对话中&#xff0c;ChatGLM6B 可以胜任文案…...

opencascade AIS_InteractiveContext源码学习7 debug visualization

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…...

2.4章节python中字符串类型

在Python中&#xff0c;字符串&#xff08;String&#xff09;是一种基本的数据类型&#xff0c;用于表示文本信息。字符串可以包含字母、数字、标点符号或任何Unicode字符。Python中的字符串是不可变的&#xff0c;这意味着一旦创建了字符串&#xff0c;就不能更改字符串中的字…...

深入分析 Android HTTPS 证书管理策略:设置本地证书、使用系统默认证书和忽略证书

深入分析 Android HTTPS 证书管理策略&#xff1a;设置本地证书、使用系统默认证书和忽略证书 在 Android 应用开发中&#xff0c;确保 HTTPS 请求的安全性至关重要。为实现这一目标&#xff0c;我们可以通过不同的方式来管理 HTTPS 证书。本文将详细探讨三种常见的证书管理策…...

利用git将Qt代码托管到U盘或者网盘

文章目录 1.前言2.解决方案3.操作步骤3.1.软件安装3.2.在U盘创建裸仓库3.3.创建Qt程序并将代码上传至U盘3.4.版本标记及切换3.4.在别的电脑上clone代码出来 4.其他5.结语 1.前言 我们在开发项目时&#xff0c;随着项目需求的增加以及bug的修复&#xff0c;肯定会涉及到版本管理…...

AIONV霸王龙车门首开,首款全球战略车“外刚内柔”

埃安凭借重磅车型带起了产品推新的节奏。6月20日,埃安首款全球战略车型埃安V?霸王龙全球媒体品鉴会上,新车内饰设计首次全面公开,同时,埃安官方宣布,品牌将全面启用AION字母标作为品牌全球标识,以更具国际化的形象面向全球。埃安V?霸王龙定位为中型SUV,与燃油车时代的…...

马斯克:若苹果在操作系统层面集成OpenAI,我将禁止苹果设备进入我的公

文|编辑部整理 编辑|大风马斯克:若苹果在操作系统层面集成OpenAI,我将禁止苹果设备进入我的公司马斯克表示,如果苹果与OpenAI合作,在操作系统层面整合ChatGPT,我将禁止那些携带苹果设备的人来访。届时,访客将需要在公司大门口接受针对苹果设备的设备检查。马斯克提及,“…...

助推中国越野事业向前发展,越野世家不忘使命与担当

作为国内最早涉及越野领域的品牌之一,北京汽车在多年来的发展进程中,始终以品质为基石,不负“越野世家”的使命与担当,在深耕尖端越野技术,用心服务用户的同时,聚焦越野文化的普及和推广,努力为中国越野事业的向前发展,做出卓越贡献。始于突破,忠于使命,“越野世家”…...

电脑录屏怎么录?7个电脑录屏软件免费版强势来袭,赶快收藏!

电脑录屏怎么录&#xff1f;相信很多小伙伴们都不知道怎么在Windows电脑上录屏吧&#xff1f;在当今社会&#xff0c;随着互联网的快速发展&#xff0c;越来越多的小伙伴们开始通过制作视频内容来分享知识、展示技能或者记录生活。电脑录屏成为了一种简单高效的方式&#xff0c…...

如何使用Postman更好的进行API渗透测试

在这个时代&#xff0c;Web 和移动应用程序通常是由 RESTful 网络服务提供支持的。 公共和私有 API 在互联网上非常普遍&#xff0c;测试这些 API 绝非易事&#xff0c;但有一些工具可以帮助你。 虽然(通常用与渗透测试)工具不能代替技能&#xff0c;但即使是最熟练的木匠也能用…...

快解析动态域名解析,实现外网访问内网数据库

今天跟大家分享一下如何借助快解析动态域名解析&#xff0c;在两种特定网络环境下&#xff0c;实现外网访问内网mysql数据库。 第1种网络环境&#xff1a;路由器分配的是动态公网IP&#xff0c;且有路由器登录管理权限。如何实现外网访问内网mysql数据库&#xff1f; 针对这种…...