Java 基础面试300题 (261-290)
Java 基础面试300题 (261-290)
261.CompletableFuture.runAsync
和CompletableFuture.supplyAsync
方法有什么区别?
这两个方法都可用于异步运行代码。但两者之间有一些区别如下 :
-
runAsync
不返回结果,返回的是一个CompletableFuture<Void>
,另一方面supplyAsync
从线程返回一个CompletableFuture<T>
-
runAsync
方法接受Runnable
为参数。另一方面,supplyAsync
接受Supplier
为参数。 -
runAsync
方法在单独的线程中执行Runnable
中的代码。另一方面,supplyAsync
在单独的线程中执行Supplier
提供的代码,并返回由Supplier
生成的值。
262.什么是模块?它们有什么好处?
一个模块由一组相关包组成。就像将一组相关类放入一个包中一样,可以将一组相关包放入一个模块中。模块提供以下几个好处:
-
如果应用程序有大量包,则很难跟踪。模块充当救援角色,它们有助于组织包,相关包可以分组到一个模块中。
-
模块可以自行部署, 有助于减小应用程序的大小。
-
模块提供更好的安全性。在模块之前,使类在其他包中可重用的唯一方法是将其公开。然而,这构成了一个安全问题,因为公共 类对每个人都开放,都可以访问。将包分组到模块中,确保无法在模块外访问该类。
-
由于Java 9之前没有模块,像
rt.jar
这样的Java API jar文件的非常大。有了模块后,Java 9将其拆分为更小的模块,这些小模块更易于测试和维护。 -
在Java 9之前,安全性一直是个问题,因为开发人员能够访问内部JDK文件。模块也有助于解决这个问题。模块增加了更多的访问控制,可以控制模块内哪些包在模块外可见和可访问。
263.模块描述符是什么?
模块描述符是一个名为module-info.java的Java文件。它包含有关模块的信息。它需要出现在模块的根部。以下代码行演示了模块描述符的结构:
module demomodule {
//optional directives
}
模块描述符可以包含一些可选指令, 下表是其中的指令:
指令 | 描述 |
---|---|
Name | 指定模块的名称。 |
exports | 指定该模块中将对其他模块可用的包的名称。 |
requires | 指定当前模块依赖的模块的名称。如果未指定这些模块,则当前模块可能无法正常工作。 |
provides | 指定当前模块提供的服务。当一个模块作为服务提供者时,应使用此指令。 |
uses | 指定当前模块消耗的服务。当模块是服务消费者时,应使用此指令。 |
open | 指定当前模块中的类可以通过Java反射访问。 |
264. 包和模块有什么区别?
包和模块都是一个逻辑单元,都封装了一些Java文件。然而,两者之间存在以下几个差异:
包直接来自Java的早期版本。另一个模块则是在Java 9后增加的。
-
包可以避免名称冲突,它们允许在不同包中拥有相同名称的类。Java添加了模块,以模块化JDK并提高安全性。
-
一个包包含一组相关Java文件。另一方面,一个模块包含一组相关包。
-
包不需要描述符(元数据),模块需要一个名为module-info.java的模块描述符。
-
包不能自行部署;模块可以自行部署。
-
包中的类通过反射可见。除非在模块描述符中明确指定了
open
指令,否则模块中的类无法通过反射可见。
265. Java 9对JDK有哪些主要改进?
Java 9利用模块的优点对JDK进行了一些根本性的更改。在Java 9之前,在安装JDK后,会创建一个名为jre\lib
的文件夹, 其中包含所有核心的jar文件。安装Java 9时,不会再创建jre\lib
文件夹,而是在JDK安装的根目录中创建了一个名为jmods
的文件夹。 该文件夹包含所有与核心Java文件相对应的模块。因此,JDK 9没有一个巨大rt.jar,而是一些单独的模块。
266. 如何将下面代码作为模块的一部分进行部署?
package mypackage;
public class MyClass {
public void doSomething() {
}
}
上面的代码定义了一个名为MyClass
的类,位于 mypackage
的包中。为了将上述代码作为模块的一部分部署,需要创建一个模块描述符,如下所示:
module mymodule {
exports mypackage;
}
上述模块描述符指定了一个名为mymodule
的模块,使用exports
将包mypackage
导出, 表示mypackage
可用于其他模块。
267. requires static
模块指令有什么作用?
requires static
模块指令用于指定可选的依赖项,即在编译时需要但在运行时不需要的依赖项。假设已经开发了一个模块,并且需要一些第三方库,而最终用户永远不会需要这些库 。在这种情况下, 可以在定义模块时通过requires static
指令指定第三方库, 在编译时需要这些库,运行时不需要它。
268.Java 9在Stream接口上做了哪些改进?
以下是Java 9在Stream接口上所做的一些改进:
-
增加了
Stream.ofNullable()
方法,用于创建一个值可能为空的流。 如果将非空值传递给此方法,它将创建一个流,否则创建一个空流。 -
增加了
takeWhile
和dropWhile
方法,用于获取输入流的子集。 -
增加了
Stream.iterate()
方法的重载版本,它接受谓词,并在谓词指定的条件为真时终止流。
269.下面的代码有效吗?如果没有,可以做些什么来修复它?
Stream<String> strStream = Stream.of(null);
strStream.forEach(str–> System.out.println(str));
上面的代码是有效的,不会导致任何编译错误。然而,执行时,会导致NullPointerException
异常。这是因为无法使用Stream.of()
方法创建具有空值的流。为了修复上述代码,需要进行以下更改:
Stream<String> strStream = Stream.ofNullable(null);
strStream.forEach(str–> System.out.println(str));
Java 9为流接口增加了ofNullable()
方法 ,可用来创建具有null
值的流。修改后的代码不会导致NullPointerException
。
270.下面的代码片段有什么问题,如何修复?
List<Integer> numbers = List.of(5,10,15); //Line 1
numbers.add(20); //Line 2
System.out.println(numbers); //Line 3
Java 9为所有集合接口添加了一个of()
静态方法, 用来创建一个无法修改的不可变集合。上面的代码使用此方法在第1行创建了一个整数列表。 第2行试图向该列表添加一个值,会导致运行异常,因为numbers
是不可变的,不能够修改。为了修复上面的代码,需要按以下方式重写代码:
List<Integer> numbers = List.of(5,10,15,20); //Line 1
System.out.println(numbers); //Line 3
271. 可以使用Java 9的哪种方法创建字符串集合?
Java 9在Set
接口中增加了一个of()
静态工厂方法, 可用
来创建 字符串值的集合。如下代码所示:
Set<String> months = Set.of(“January”,”February”,”March”);
272. 下面代码片段的输出是什么?
Stream<Integer> oddNumbers = Stream.iterate(1, num–> num <= 20, num–> num+2);
oddNumbers.forEach(num–> System.out.print(num+” “));
在Java 9之前,Stream.iterate()
方法用于创建一个无限 流。Java 9增加了该方法的一个重载版本,用于创建一个有限流 , 这个重载接受一个额外的谓词参数, 并在谓词为真时立即停止流。因此,上述代码输出一个有限流如下:
1 3 5 7 9 11 13 15 17 19
273.Java 9对接口进行了哪些更改,为什么?
Java 9允许在接口中使用私有方法。在Java 8之前,接口只能有抽象方法。Java 8增加了对静态和默认接口方法的支持。默认和静态方法是带有方法主体的接口。Java 9更进一步,允许在接口中使用私有方法。私有接口方法允许重用代码。因此,如果一个接口有几个默认和静态方法,并且这些方法之间有一些通用代码,则该代码可以移动到私有方法。如下代码所示:
public interface Sample {
default method1(){
//some code
doSomething();
}
default method2(){
//some code
doSomething();
}
private void doSomething(){
System.out.println(“Doing something..”);
}
}
上述代码中,doSomething()
是一个私有接口方法,在默认方法method1()
和method2()
中使用。
274.什么是JShell?
Jshell
上是一个命令行工具。允许编写和运行Java代码,而无需创建类文件。通过在命令窗口键入jshell
来启动。 启动可以在其中键入任何Java代码,JShell将显示代码的执行结果。 例如,如果 键入以下内容:
System.out.println(“Hello World”);
JShell将打印文本“Hello World”
JShell为Java添加了REPL支持。REPL代表Read Evaluate Print Loop
,Python等许多语言都提供REPL功能。
275. 下面代码片段的输出是什么?
Optional<Double> myDoubleOptional = Optional.of(10.0);
Optional<Double> defaultOptional = Optional.of(50.0);
double value = myDoubleOptional.or(()–> defaultOptional).get();
System.out.println(value);
Java 9在Optional
类上增加了一个名为or()
的新方法, 该接受一个 Supplier<Optional>
函数接口为参数, 并返回一个Optional
。因此,如果调用它的可选项是非空的,则返回该可选项,否则它将返回一个新的Optional
,该可选项由已传递的Supplier<Optional>
参数生成。在上面的代码片段中,在myDoubleOptional
上调用or
方法,这是一个值为10的 Optional
,因为是一个非空的可选项,or
方法返回其值,而不是defaultOptional
,因此代码打印以下输出:
10.0
276.Java 9对try-with
语句进行了哪些更改?
try-with
语句是Java 7增加的, 它允许在没有明确关闭语句的情况下自动关闭资源。 例如,如果正在编写文件写代码,如果使用try-with
语句,一旦try
语句完成,FileWriter
会自动关闭。这样做的缺点是,需要自动关闭的资源必需是try
语句的一部分。因此,如果资源在try-with
语句之外声明,则需要作为try-with
的一部分再次声明,比较繁琐。Java 9废除了这一限制。 使用Java 9, 可以在try-with
语句之外声明的资源,并自动关闭。
277.Java 9在Optional
类上增加的流方法有什么用处?
Java 9在Optional
上增加的stream()
方法可用于将Optional
转换为流。从而允许在Optional
类上应用流的所有操作。如下代码示例 :
Optional<String> str = Optional.of(“Hello”);
Stream<String> strStream = str.stream();
上述代码中, str
是一个字符串类型的Optional
, 其值是 Hello
,然后使用stream()
方法,将其转换为具有一个String
流。 现在所有流操作,如map
、filter
等,都可以应用于此流。
278. ProcessHandle
类的主要作用是什么?
Java 9增加了一个名为java.lang.ProcessHandle
的新类,用于管理与操作系统相关的进程, 主要用途是方便与操作系统交互。该类的一些主要方法如下:
方法 | 描述 |
---|---|
current() | 这是一个静态方法,返回当前进程对应的 ProcessHandle 对象。 |
isAlive() | 返回一个布尔值,指示进程是否存活。 |
pid() | 返回进程的 ID。 |
children() | 返回一个流,其中包含当前进程的子进程对应的 ProcessHandle 对象。 |
279. 补充下面代码中第1行, 使代码具有下面的预期输出 ?
Optional<Double> price = <code here>; //Line 1
price.ifPresentOrElse(val–> System.out.println(“Price is not null”), ()–> System.out.println(“Price not specified”));
预期输出:
Price not specified
上面的代码使用了Java 9在Optional
类上新增的ifPresentOrElse()
方法。该此方法接受Consumer
实例和Runnable
实例为参数。如果Optional
中存在值 ,则调用传入的 Consumer
对其进行处理 , 否则 ,它将执行传入Runnable
代码。对于上述情况,因为需要打印未指定价格的输出。与此对应的打印语句应在Runnable
参数中指定,price
应该是为空的Optional
。 因此,第1行代码需要补充如下:
Optional<Double> price = Optional.empty();
280.Java 9引入的新HttpClient
有什么优势?
Java 9引入了一个新的HttpClient
类 ,用于通过Java代码发出HTTP请求。在Java 9之前,UrlConnection
和HttpUrlConnection
类也可用于发出HTTP请求。与这些类相比,新的Java HttpClient
有下面几个优势:
-
HttpUrlConnection
仅支持HTTP 1.1,这是一个非常古老的HTTP版本。HttpClient
则支持 Http 2.0,是HTTP的最新版本。 -
与通过
HttpUrlConnection
编写的代码相比,HttpClient
编写的代码要干净得多。 -
HttpClient
通过CompletableFuture
支持异步处理,它有一个名为sendAsync
的方法,可以异步发送HTTP请求, 并返回一个CompletableFuture
,可用于在请求完成后立即获取响应。
281.解释Java泛型。
Java 范型允许创建仅接受特定类型数据的集合,避免类型转换。泛型的另一个优点是, 可以创建适用于不同数据类型的通用算法或方法,而无需为每个数据类型单独编程。
List<String> listGen = new ArrayList<String>(); // 定义ArrayList以存储字符串对象.
listGen.add("hello"); // 增加一个字符串
String strGen = listGen.get(0); // ArrayList是字符串类型列表 ,因此不需要类型转换.
在上述代码中,如果增加以下行,会出现编译错误:
listGen.add(21); // 编译错误,因为21不是字符串
282. 编写一个程序来解释范型方法。
下面程序展示了如何定义一个范型方法:
public class exampleForGenericMethod{
public static <E> void printArrayElements(E[] elementsVal) {
for ( E elementVal : elementsVal){
System.out.println(elementVal);
}
System.out.println();
}
public static void main( String abcs[] ) {
Integer[] myIntArray = { 15, 25, 35, 45, 55 };
Character[] myCharArray = { 'H', 'E', 'L', 'L', 'O','W','O','R','L','D' };
System.out.println( "The Integer Array is:" );
printArrayElements (myIntArray );
System.out.println( "The Character Array is: " );
printArrayElements ( myCharArray );
}
}
上面代码使用了Java范型方法,避免了方法重载,既可以打印整数数组,也可以打印字符串数组。
283. List<? extends T>
和 List <? super T>
有什么区别?
Java范型中,符号?
是一种类型通配符,表示任何类型。? extends T
意味着List
将接受任何扩展T
的类型,也就是T
的子类对象。 ? super T
意味着 List
将接受这样一些类型的对象,它们是T的任何超级类。
284. 解释以下代码:
案例 1:
List listORTExample = new ArrayList(); // Line 1
listORTExample.add("abc"); // Line 2
listORTExample.add(123); // Line 3
String strItem = (String) listORTExample.get(0); // Line 4
strItem = (String) listORTExample.get(1); // Line 5
案例 2:
List<String> listOSExample = new ArrayList(); // Line 6
listOSExample.add("abcd"); // Line 7
listOSExample.add(1234); // Line 8
strItem = listOSExample.get(0); // Line 9
第3行- 编译没有问题,但运行时将抛出异常。
第4行-必须要显式转换,因为列表元素类型显示声明为字符串。
第5行-将抛出ClassCastException
,因为Integer
类型无法转换为String
类型
第8行- 编译时出现错误,因为列表使用了范型声明为字符串列表
第9行-因为列表已经声明为字符串列表,因此不需要显式转换
上述两段代码时使用Java范型如何改进程序的经典示例。
285. 什么是泛型中的类型参数?
类型参数是参数类型的占位符。类型参数可用于方法的参数和方法的返回类型, 以及类型转换中的目标类型和参数化方法的开放类型参数。类型参数不能用于创建对象、数组或异常处理。它不能是静态的,也不能与instanceOf
运算符一起使用。它不能用作超类型或类的字面量。
Java有5种类型的类型参数。通常遵守如下约定:
T
表示一种类型
E
表示一种(集合中)元素(类型)
K
表示键(类型)
N
表示数值(类型)
V
表示值(类型)
286. 从集合中检索元素时如何避免类型转换?
使用范型集合可以避免类型转换。举例如下:
List<String> gList = new ArrayList<String>();
gList.add("str1");
gList.add("str2");
String g0 = gList.get(0); //无需类型转换
287. 下面代码会编译吗?能否正确运行?
public static void main(String[] args) {
List<String> typeSafeList = newArrayList<String>();
typeSafeList.add(new String("string1"));
addElementsToList(typeSafeList);
String a = typeSafeList.get(1);
}
private static void addElementsToList(List list){
list.add(new Integer(10));
}
代码编译没有问题,但运行会出现如下类型转换错误:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
288.在范型声明中可以使用多个参数化类型吗?
可以。如下示例:
public class UseTwo<T, X> { }
289. 如何定义泛型方法?
定义范型方法的语法有点棘手,需要在返回类型前声明范型参数。下面是一个示例:
public <T> void makeList(T t) { }
289.可以实例化一个范型数组吗?
可以声明范型数组,但不能像普通数组一样实例化 。否则会编译错误,因为编译器在编译过程中还不知道数组的类型。 它必须使用 new
操作符和类型转换为数组进行实例化。
//声明并初始化范型数组
arrType<String> [] abc = new arrType[50];//下面代码错误
arrType2<xyz> [] abc = new arrType<xyz>[50];
290.什么是对象序列化? 如何实现序列化 ?
对象序列化是将对象的属性和行为写入字节流或文件, 对象中引用的的所有可序列化对象也都写入文件中, 序列化操作保存了对象的瞬时状态 。当对象必须通过网络发送时,通常会使用序列化。如果类实现了Externalizable
接口或者Serializable
接口 ,其对象便是可序列化的。前者必须实现readExternal()
和writeExternal()
方法,后者是一个标记接口,没有定义任何方法。 序列化的具体过程是,对象可以传递给ObjectOutputStream
,而ObjectOutputStream
又将其传递给文件输出流。 。
相关文章:
Java 基础面试300题 (261-290)
Java 基础面试300题 (261-290) 261.CompletableFuture.runAsync和CompletableFuture.supplyAsync方法有什么区别? 这两个方法都可用于异步运行代码。但两者之间有一些区别如下 : runAsync不返回结果,返回的是一个Com…...
音频信号分析与实践
音频信号分析与实践课程,方便理解音频信号原理和过程 1.音频信号采集与播放 两种采样模式和标准的采样流程 人说话的声音一般在2kHz一下: 采样频率的影响:采样率要大于等于信号特征频率的2倍;一般保证信号完整,需要使用10倍以上的…...
程序媛:拽姐
更多精彩内容在公众号。 最近都在玩梗图,我也来玩下拽姐的梗图。来说说拽姐做为程序媛的痛。 程序媛的痛不在于996,而在于无休止的攻关。拽姐刚入职听领导说攻关不多,一年也就一次,拽姐心中暗喜,觉得来对了地方。结果…...
前端面试题日常练-day54 【面试题】
题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 1. 在PHP中,以下哪个函数用于将一个字符串转换为日期时间对象? a) date() b) strtotime() c) datetime() d) time() 2. PHP中的超全局变量$_COOKIE用于存储什么类型的数据&a…...
054、Python 函数的概念以及定义
编程大师Martin Fowler曾说过:“代码有很多种坏味道,重复是最坏的一种。” 那么遇到重复的代码,如何做?答案就是:函数。 函数就是把重复的代码封装在一起,然后通过调用该函数从而实现在不同地方运行同样的…...
今时今日蜘蛛池还有用吗?
最近不知道哪里又开始刮起“蜘蛛池”这个风气了,售卖、购买蜘蛛池的行为又开始在新手站长圈里开始蔓延和流行了起来,乍一看到“蜘蛛池”这个词给明月的感受就是陌生,要经过回忆才能想起来一些残存的记忆,所谓的蜘蛛池说白了就是利…...
【一步一步了解Java系列】:重磅多态
看到这句话的时候证明:此刻你我都在努力 加油陌生人 个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者:小闭…...
运维工具 - SFTP 和 FTP 的区别?
SFTP 和 FTP 的区别有三点 连接方式 SFTP 是在客户端和服务器之间通过 SSH 协议建立的安全连接来传输文件,而 FTP 则是 TCP 端口 21 上的控制连接建立连接。 安全性 SFTP 使用加密传输认证信息来传输数据,因此 SFTP 相对于 FTP 更安全的。 效率 SF…...
创新入门|营销中的视频内容:不可或缺的策略
视频在营销中日益重要。你是否也发现,视频内容最近似乎无处不在?它占据着社交媒体的推文、网站首页,甚至电子邮件中的位置。事实上,并不是你一个人有这样的感受。在过去十年中,视频作为一种营销手段日益成熟和强大。这是因为,人类天生就是视觉动物。我们大脑处理视觉信息的速度…...
《探索Stable Diffusion:AI绘画的创意之路与实战秘籍》
《Stable Diffusion AI 绘画从提示词到模型出图》介绍了 Stable Diffusion AI 绘画工具及其使用技巧。书中内容分为两部分:“基础操作篇”,讲解了 SD 文生图、图生图、提示词、模型、ControlNet 插件等核心技术的应用,帮助读者快速从新手成长…...
某铁路信息中心运营监测项目
某铁路信息中心承担大量实时监测、例行巡检和排障维护等工作,为巩固信息化建设成果,提高整体运维效果,保障铁路信息系统稳定运行,需对现有网络监测系统进行升级改造。 设备类型:服务器、交换机、数据库、中间件、虚拟…...
Threejs加载DOM+CSS到场景中,实现3D场景展示2D平面的效果
1. 前言 本篇文章主要实现了将DOM元素转换为Threejs可以使用的数据结构,使用CSS2DRenderer渲染器渲染这些DOMCSS的平面,使其可以作为一个物体添加到Threejs场景里 如下效果图: 2. 实现步骤 首先创建一个ThreejsVueVite的项目,作为本次的demo项目下载Threejs第三方库 yarn…...
本地知识库开源框架Fastgpt、MaxKB产品体验
本地知识库开源框架Fastgpt、MaxKB产品体验 背景fastgpt简介知识库共享部署 MaxKB总结 背景 上一篇体验了Quivr、QAnything两个开源知识库模型框架,这次介绍两款小众但是体验比较好的产品。 fastgpt 简介 FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&am…...
音视频开发15 FFmpeg FLV封装格式分析
FLV(Flash Video)简介 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式,由于其封装后的⾳视频⽂件体积⼩、封装简单等特点,⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤ FLV格式封装的⽂件后缀为.flv。 FLV封装格式的组成 FLV封装…...
Qt 的 d_ptr (d-pointer) 和 q_ptr (q-pointer)解析;Q_D和Q_Q指针
篇一: Qt之q指针(Q_Q)d指针(Q_D)源码剖析---源码面前了无秘密_qtq指针-CSDN博客 通常情况下,与一个类密切相关的数据会被作为数据成员直接定义在该类中。然而,在某些场合下,我们会…...
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
🔥 个人主页:空白诗 文章目录 一、机器学习的基本概念与原理二、深度学习与机器学习的关系2.1 概念层次的关系2.2 技术特点差异2.3 机器学习示例:线性回归(使用Python和scikit-learn库)2.4 深度学习示例:简…...
C++模板类与Java泛型类的实战应用及对比分析
C模板类和Java泛型类都是用于实现代码重用和类型安全性的重要工具,但它们在实现方式和应用上有一些明显的区别。下面,我将先分别介绍它们的实战应用,然后进行对比分析。 C模板类的实战应用 C模板类允许你定义一种通用的类,其中类…...
使用Qt对word文档进行读写
目录 开发环境原理使用的QT库搭建开发环境准备word模板测试用例结果Gitee地址 开发环境 vs2022 Qt 5.9.1 msvc2017_x64,在文章最后提供了源码。 原理 Qt对于word文档的操作都是在书签位置进行插入文本、图片或表格的操作。 使用的QT库 除了基本的gui、core、…...
docker容器内无法使用命令问题
更换国内源 /etc/apt/source.list 可以先apt-get install vim #进入容器 docker exec -it 容器ID /bin/bashmv /etc/apt/source.list /etc/apt/source.list.bd vim /etc/apt/source.list#此处我使用腾讯云的源 deb http://mirrors.cloud.tencent.com/debian/ buster main non…...
【深度学习】安全帽检测,目标检测,Faster RCNN训练
文章目录 资料环境尝试训练安全帽数据训练测试预测全部数据、代码、训练完的权重等资料见: 资料 依据这个进行训练: https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_object_detection/faster_rcnn ├── bac…...
IDEA2024创建maven项目
1、new->project 2、创建后展示 3、生成resources文件夹 4、测试--编写一个hello文件...
linux上VirtualBox使用
前言 最近想把唯一的windows系统装成linux, 但是确实存在一些特殊软件无法舍弃,所有装完linux需要用虚拟机装个windows 上来使用特定的一些软件(不想用wine了)。 还有对一些特定usb设备的透传,这样才能保证在虚拟机中…...
PID控制算法介绍及使用举例
PID 控制算法是一种常用的反馈控制算法,用于控制系统的稳定性和精度。PID 分别代表比例(Proportional)、积分(Integral)和微分(Derivative),通过组合这三个部分来调节控制输出&#…...
因子区间[牛客周赛44]
思路分析: 我们可以发现125是因子个数的极限了,所以我们可以用二维数组来维护第几个数有几个因子,然后用前缀和算出来每个区间合法个数,通过一个排列和从num里面选2个 ,c num 2 来计算即可 #include<iostream> #include<cstring> #include<string> #include…...
代码随想录算法训练营第四十四天 | 01背包问题理论基础、01背包问题滚动数组、416. 分割等和子集
背包问题其实有很多种,01背包是最基础也是最经典的,软工计科学生一定要掌握的。 01背包问题 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经…...
【PingPong_注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...
车辆路径规划之Dubins曲线与RS曲线简述
描述 Dubins和RS曲线都是路径规划的经典算法,其中车辆运动学利用RS曲线居多,因此简单介绍Dubins并引出RS曲线。 花了点时间看了二者的论文,并阅读了一个开源的代码。 Dubins曲线 Dubins曲线是在满足曲率约束和规定的始端和末端的切线&#…...
PostgreSQL 和Oracle锁机制对比
PostgreSQL 和Oracle锁机制对比 PostgreSQL 和 Oracle 都是业界广泛使用的关系型数据库管理系统,它们在锁机制方面都有独到的设计来控制并发访问,确保数据的一致性和完整性。下面我们详细比较一下这两个数据库系统的锁机制。 1. 锁类型 PostgreSQL P…...
6月05日,每日信息差
第一、特斯拉在碳博会上展示了其全品类的可持续能源解决方案,包括首次在国内展出的超大型电化学商用储能系统 Megapack 和家庭储能系统 Powerwall。此外,特斯拉还展示了电动汽车三电系统的解构和电池回收技术产品 第二、2024 年第一季度,全球…...
MongoDB~俩大特点管道聚合和数据压缩(snappy)
场景 在MySQL中,通常会涉及多个表的一些操作,MongoDB也类似,有时需要将多个文档甚至是多个集合汇总到一起计算分析(比如求和、取最大值)并返回计算后的结果,这个过程被称为 聚合操作 。 根据官方文档介绍&…...
wordpress的cms主题/怎么制作网站详细流程
图[一]下面我们就开始讲与文字内容有关的排版操作。首先是文章中字体和字号的设定。一般的文档正文部分都是用宋体小四或五号字,文章中的小标题可以用黑体三号字,文章的总标题用黑体一号或小一号字。当然,这只是常用的标准。我们还可以根据对…...
昆明做网站开发维护的公司/提高工作效率总结心得
背景:从csv读取数据,并赋值到对应结构体字段。 由于读取出来的数据为string,需要根据结构体字段类型逐一赋值; /// 假定要赋值的结构体类型 struct stStudent {char name[64];int age;double score;stStudent(){memset(thi…...
专业建设金融行业网站的公司/网络seo软件
类和对象面向过程和面向对象的初步认识1.类的引入1.1类的定义1.2 类的两种定义方式2. 类的访问限定符及封装2.1 访问限定符2.2 class定义的类与struct定义的类的区别2.3 封装3.类的作用域4.类的实例化5.类对象模型5.1 如何计算类对象的大小6.this指针6.1 this指针的形成6.2 thi…...
全国网站建设公司排名/强强seo博客
计算机领域有句话:“计算机的任何问题都可以通过增加一个虚拟层来解决”。另言之:"All problems in computer science can be solved by another level of indirection"。其主要思想是将调用者和被调者隔离开,既屏蔽细节࿰…...
网站开发论文简要/环球网疫情最新消息
DSPc语言教程.doc电气专业词汇集散控制系统——Distributed Control System(DCS)现场总线控制系统——Fieldbus Control System(FCS)监控及数据采集系统——Supervisory Control And Data Acqusition(SCADA)可编程序控制器——Programmable Logic Controller(PLC) 可编程计算机…...
wordpress商城 注册/百度网站制作
前言我个人还在使用PHP5.6,7.3的话纯粹是拿来做测试的,因为PHP7已经支持强类型了,不再支持根据字符串调用函数的方法了,所以我的个人项目的PHP版本停留在了5.6。最近的话想折腾一下,试试PHP5.6、7.3和Tomcat7、8、9的各…...