在 Net7.0环境下测试了 Assembly.Load、Assmebly.LoadFile和Assembly.LoadFrom的区别
一、简介
很长时间没有关注一些C#技术细节了,主要在研究微服务、容器、云原生、编批等高大上的主题了,最近在写一些框架的时候,遇到了一些和在 Net Framework 框架下不一样的情况,当然了,我今天主要测试的是,在通过【添加项目引用】和【手动拷贝DLL】的情况下,这三个方法加载程序集:Assembly.Load()、Assmebly.LoadFile() 和Assembly.LoadFrom() 的区别,别的可没测试,今天就把我的测试过程发布出来,如果对大家有帮助,我当然很高兴,如果是高手,也希望不吝赐教。
测试环境:
操作系统:Windows 10 Professional
开发工具:Visual Studio 2022
测试平台:Window Form
DotNet版本:Net 7.0
二、测试过程
最近,我在写一些底层框架,需要用到反射,项目要做到热拔插、热启动等类似的功能,有人说 Assembly.Load() 可以直接输入程序集的名称就可以加载拷贝到当前运行目录下的程序集,我一运行,就出现了错误,索性,我就都测试一下,所以就有了今天的测试。在编码的过程中出现了一些和预期不一样的地方,我就把测试的代码发布出来,也希望大家提出宝贵的意见。
直接上代码,然后再总结,今天主要测试 Assembly.Load()、Assmebly.LoadFile() 和Assembly.LoadFrom() 的区别,当然只是一家之言,也有疏忽之处,也希望大家批评指正。
代码如下:
1 //202309181033、通过多种方法加载程序集
2 {
3 //可以是程序集全名,也可以文件名,必须引用项目,拷贝到目录下无效
4
5 //1.1、Load加载(没有引用项目,直接将 DLL 拷贝到程序运行目录下)
6 {
7 //[1]、使用强命名的程序集名称,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
8 Assembly assembly = Assembly.Load("PatrickLiu.Database.SqlServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
9
10 //[2]、使用程序集弱命名,包含后缀名,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer.dll, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
11 Assembly assembly2 = Assembly.Load("PatrickLiu.Database.SqlServer.dll");
12
13 //[3]、完整路径,程序集名称,包含后缀名,也报错【The given assembly name was invalid.】
14 Assembly assembly22 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
15
16 //[4]、完整路径,程序集名称,不包含后缀名,报错【The given assembly name was invalid.】
17 Assembly assembly23 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
18
19 //[5]、程序集弱名称名称,不包含后缀名,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
20 Assembly assembly24 = Assembly.Load("PatrickLiu.Database.SqlServer");
21
22 //[6]、通过 File 读取字节数据,包含程序集名称和文件后缀名,正常加载---VVVVVVV。
23 Assembly assembly25 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer.dll"));
24
25 //[7]、通过 File 读取字节数据,包含程序集名称,不包含文件后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'.】。
26 //Assembly assembly26 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer"));
27
28 //[8]、通过 File 读取字节数据,包含程序集完整路径和文件后缀名,正常加载---VVVVVVV。
29 Assembly assembly27 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll"));
30
31 //[9]、通过 File 读取字节数据,包含程序集完整路径,不包含文件后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'.】。
32 Assembly assembly28 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer"));
33 }
34
35 //1.2、Load加载(直接引用项目,系统自己会拷贝,没有人为拷贝 DLL 到目录下)
36 {
37 //[1]、使用强命名的程序集名称,正常加载---VVVVVVV。
38 Assembly assembly = Assembly.Load("PatrickLiu.Database.SqlServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
39
40 //[2]、使用程序集弱命名,正常加载---VVVVVVV。
41 Assembly assembly2 = Assembly.Load("PatrickLiu.Database.SqlServer");
42
43 //[3]、完整路径,程序集名称和后缀名,也报错【The given assembly name was invalid.】
44 Assembly assembly22 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
45
46 //[4]、完整路径,程序集名称,不包含后缀名,报错【The given assembly name was invalid.】
47 Assembly assembly23 = Assembly.Load("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
48
49 //[5]、程序集弱名称名称,包含文件扩展名,报错【Could not load file or assembly 'PatrickLiu.Database.SqlServer, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。】
50 Assembly assembly24 = Assembly.Load("PatrickLiu.Database.SqlServer.dll");
51
52 //[6]、通过 File 读取字节数据,包含程序集后缀名,正常加载---VVVVVVV。
53 Assembly assembly25 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer.dll"));
54
55 //[7]、通过 File 读取字节数据,不包含程序集后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'】。
56 Assembly assembly26 = Assembly.Load(File.ReadAllBytes("PatrickLiu.Database.SqlServer"));
57
58 //[8]、通过 File 读取字节数据,包含程序集完整路径和文件后缀名,正常加载---VVVVVVV。
59 Assembly assembly27 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll"));
60
61 //[9]、通过 File 读取字节数据,包含程序集完整路径,不包含文件后缀名,报错【Could not find file 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'.】。
62 Assembly assembly28 = Assembly.Load(File.ReadAllBytes("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer"));
63 }
64
65 //总结:
66 //Assembly.Load()针对【添加项目引用】和【通过手动拷贝】来加载程序集是有区别的,如果通过 Visual Studio IDE 【添加项目引用】菜单引用了程序集,只要书写正确,都能正常加载程序集,支持【强命名程序集】加载和【弱命名程序集】加载,如果加载的是弱命名的程序集不要写程序集的后缀名(.dll),不需要书写程序集的完整或者相对路径。Assembly.Load(File.ReadAllBytes())这个方法参数可以接受:必须包含后缀名的程序集名称或者包含完整路径、并包含后缀名的程序集名称,形如:Assembly.Load(File.ReadAllBytes("XXX.dll(包含后缀名的程序集名称)")),Assembly.Load(File.ReadAllBytes("E:\\XX\\XXX\\XXXX\\PatrickLiu.Database.SqlServer.dll(包含完整路径、并包含后缀名的程序集名称)"))这两种方式都是有效的。如果在不引用程序集(是不通过VS菜单【添加项目引用】),还想使用 Assembly.Load() 方法成功加载程序集,只能通过 Assembly.Load(File.ReadAllBytes())这种方式,当然我只测试了这个接口,其他的大家可以尝试。
67
68 //2、LoadFile加载(必须是完整路径,包含扩展名,不用引用项目,拷贝到目录就可以)
69
70 //2.1、LoadFile()在不引用程序集,通过拷贝DLL到指定目录来执行
71 {
72 //[1]、只包含程序集的名称和文件扩展名,报错【Path "PatrickLiu.Database.SqlServer.dll" is not an absolute path. 】
73 Assembly assembly221 = Assembly.LoadFile("PatrickLiu.Database.SqlServer.dll");
74
75 //[2]、包含程序集完整路径,程序集名称和文件扩展名,正常加载--------VVVVVV。
76 Assembly assembly222 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
77
78 //[3]、只包含程序集的名称,报错【Path "PatrickLiu.Database.SqlServer" is not an absolute path】
79 Assembly assembly223 = Assembly.LoadFile("PatrickLiu.Database.SqlServer");
80
81 //[3]、报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. The system cannot find the file specified.”】
82 Assembly assembly224 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
83 }
84 //2.2、LoadFile()在引用程序集
85 {
86 //[1]、只包含程序集的名称和文件扩展名,报错【Path "PatrickLiu.Database.SqlServer.dll" is not an absolute path. 】
87 Assembly assembly221 = Assembly.LoadFile("PatrickLiu.Database.SqlServer.dll");
88
89 //[2]、包含程序集完整路径,程序集名称和文件扩展名,正常加载--------VVVVVV。
90 Assembly assembly222 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
91
92 //[3]、只包含程序集的名称,报错【Path "PatrickLiu.Database.SqlServer" is not an absolute path】
93 Assembly assembly223 = Assembly.LoadFile("PatrickLiu.Database.SqlServer");
94
95 //[3]、报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. The system cannot find the file specified.”】
96 Assembly assembly224 = Assembly.LoadFile("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
97 }
98
99 //总结:Assembly.LoadFile()方法使用也比较简单,无论是在【添加项目引用】还是【手动拷贝】都可以正常加载程序集,唯一要注意的就是,必须书写完整的程序集路径,程序集文件名,也包含扩展名。
100
101
102 //3、LoadFrom加载(程序集全名不可以,文件名也不可以,原因不知道,文件全名可以,不用引用项目,直接拷贝就可以)
103 //必须增加后缀名
104
105 //3.1、不引用项目,把所需的Dll 拷贝到目标目录下
106 {
107
108 //[1]、使用强命名的程序集名称,正常加载---VVVVVVV。
109 Assembly assembly31 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll");
110
111 //[2]、使用强命名的程序集名称,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。”】。
112 Assembly assembly32 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer");
113
114 //[3]、完成的程序集路径,程序集名称,程序集扩展名,正常加载---VVVVVVV。
115 Assembly assembly33 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
116
117 //[4]、完成的程序集路径,程序集名称,程序集扩展名,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。】。
118 Assembly assembly34 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
119 }
120
121 //3.2、引用项目,系统将 Dll 拷贝到目标目录下
122 {
123 //[1]、使用强命名的程序集名称,正常加载---VVVVVVV。
124 Assembly assembly31 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll");
125
126 //[2]、使用强命名的程序集名称,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。”】。
127 Assembly assembly32 = Assembly.LoadFrom("PatrickLiu.Database.SqlServer");
128
129 //[3]、完成的程序集路径,程序集名称,程序集扩展名,正常加载---VVVVVVV。
130 Assembly assembly33 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer.dll");
131
132 //[4]、完成的程序集路径,程序集名称,程序集扩展名,报错【Could not load file or assembly 'E:\Visual Studio 2022\Source\Projects\PatrickLiu.DelegateDeep.Study\PatrickLiu.DelegateDeep.AllStudy\bin\Debug\net7.0\PatrickLiu.Database.SqlServer'. 系统找不到指定的文件。】。
133 Assembly assembly34 = Assembly.LoadFrom("E:\\Visual Studio 2022\\Source\\Projects\\PatrickLiu.DelegateDeep.Study\\PatrickLiu.DelegateDeep.AllStudy\\bin\\Debug\\net7.0\\PatrickLiu.Database.SqlServer");
134 }
135
136 总结:Assembly.LoadFrom()使用起来相对简单一点,无论是在已经【添加项目引用】还是【手动拷贝】都可以正常加载程序集,但是方法的参数必须是:(1)、包含完整路径、程序集名称和后缀名的程序集,如:Assembly.LoadFrom("E:\\X\\XX\\XXX\\PatrickLiu.Database.SqlServer.dll"),(2)、参数必须包含程序集名称和后缀名,如:Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll")
137 }
1、Assembly.Load()针对【添加项目引用】和【通过手动拷贝】来加载程序集是有区别的,如果通过 Visual Studio IDE 【添加项目引用】菜单引用了程序集,只要书写正确,都能正常加载程序集,支持【强命名程序集】加载和【弱命名程序集】加载,如果加载的是弱命名的程序集不要写程序集的后缀名(.dll),不需要书写程序集的完整或者相对路径。Assembly.Load(File.ReadAllBytes())这个方法参数可以接受:必须包含后缀名的程序集名称或者包含完整路径、并包含后缀名的程序集名称,形如:Assembly.Load(File.ReadAllBytes("XXX.dll(包含后缀名的程序集名称)")),Assembly.Load(File.ReadAllBytes("E:\\XX\\XXX\\XXXX\\PatrickLiu.Database.SqlServer.dll(包含完整路径、并包含后缀名的程序集名称)"))这两种方式都是有效的。如果在不引用程序集(是不通过VS菜单【添加项目引用】),还想使用 Assembly.Load() 方法成功加载程序集,只能通过 Assembly.Load(File.ReadAllBytes())这种方式,当然我只测试了这个接口,其他的大家可以尝试。
2、Assembly.LoadFile()方法使用也比较简单,无论是在【添加项目引用】还是【手动拷贝】都可以正常加载程序集,唯一要注意的就是,必须书写完整的程序集路径,程序集文件名,也包含扩展名,如:Assembly.LoadFile("E:\\X\\XX\\XXX\\PatrickLiu.Database.SqlServer.dll")。
3、Assembly.LoadFrom()使用起来相对简单一点,无论是在已经【添加项目引用】还是【手动拷贝】都可以正常加载程序集,但是方法的参数必须是:(1)、包含完整路径、程序集名称和后缀名的程序集,如:Assembly.LoadFrom("E:\\X\\XX\\XXX\\PatrickLiu.Database.SqlServer.dll"),(2)、参数必须包含程序集名称和后缀名,如:Assembly.LoadFrom("PatrickLiu.Database.SqlServer.dll")
三、总结
好了,今天就写道这里了,总算还不错,能有点收获。如果以后有新的需求,在测试把。每天进步一点点,努力一直在路上。
在 Net7.0环境下测试了 Assembly.Load、Assmebly.LoadFile和Assembly.LoadFrom的区别的更多相关文章
- [原]Redis主从复制各种环境下测试
Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 C ...
- linux环境下测试环境搭建
一.linux环境下测试环境搭建过程简述: 1.前端后台代码未分离情况下: 主要步骤为:安装jdk,安装mysql,安装tomcat,将项目代码部署到tomcat/webapps/下. 2.前端后台代 ...
- [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”
在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...
- VB6.0环境下的CATIA二次开发简介
CATIA作为CAD/CAE/CAM/PDM一体化的软件,广泛用于航空航天.汽车.船舶及电子工业,尤其在航空航天业,有八成以上厂商使用CATIA的市场[11].然而由于使用习惯和使用的侧重点不用,功能 ...
- Windows-Server-2008、IIS7.0环境下配置伪静态化
在Windows-Server-2008.IIS7.0环境下配置伪静态化 首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为 ...
- 使用zipkin2在SpringCloud2.0环境下追踪服务调用情况
1.目的: 使用zipkin2.0在Spring Cloud 2.0环境下,追踪服务调用情况. 2.所需组件: zipkin2.0,Spring Cloud 2.0,Eureka Server,Eur ...
- [转]mongodb authentication 设置权限之后,新建个管理账户和一般数据库用户,在win 7 64bit 环境下测试使用实例
如果之前安装mongodb时没有使用 --auth,那么必须要卸载MongoDB服务,进行重新安装,设置账号权限才生效! 主要是解决在测试使用mongo db 时候,总是出现的MongoAuthent ...
- 【swoole】如何在docker+swoole环境下测试udp服务
前面几篇文章讲了使用 docker+swoole 环境来测试tcp服务以及如何测试,但是当我开始学习udp服务那块的时候,发现使用原来的方式在 docker+swoole 环境下行不通啦,后来发现如果 ...
- 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件
我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...
- .NET Core2.0 环境下MVC模式的支付宝扫码支付接口-沙箱环境开发测试
所有配置以及相关信息均可以从PC支付中获取 使用的生成二维码的组件名为QRCoder,该组件引用了一个第三方实现的System.Drawing类库,和支付宝官网类似 当面付SDK为Alipay.Aop ...
随机推荐
- Python网页开发神器fac 0.2.9、fuc 0.1.29新版本更新内容介绍
fac项目地址:https://github.com/CNFeffery/feffery-antd-components fuc项目地址:https://github.com/CNFeffery/fe ...
- ARC118E Avoid Permutations
题意 给定一个长度为 \(n\) 的排列 \(p\),在一个 \((n + 2)\times(n + 2)\) 的网格上,禁止通过 \((i, p_i)\) 这些点,每次只能向上或右走一格,从 \(( ...
- 2023-06-22:一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试 给你一个二维数组 classes ,其中 classes[i] = [passi, totali] 表
2023-06-22:一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试 给你一个二维数组 classes ,其中 classes[i] = [passi, totali] 表 ...
- 【python基础】文件-初识文件
文本文件可存储的数据量是非常多的.每当需要分析或修改存储在文件中的信息时,首先就是读取文件到内存中,为此可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 1.读取文件 1.1读取整个文件 ...
- OOP4-6题目集总结
4-6次题目集,从集合框架,正则表达式,类的继承与多态三个方面展开,在帮助我们了解java常用的工具(集合框架,正则表达式)的同时让我们学着利用类与类之间的关系来减少耦合,第六次题目集侧重于类的继承与 ...
- linux 服务器上如何判断网络是否开通
项目上由于升级了kafka需要测试下网络是否是通的,因此需要使用命令 nc -zv ip地址 端口这个命令来跑一下网络是否是通的,最后发现是新的kafka的config使用了新的端口,没有开通网络 ...
- Acunetix使用说明
简述 Acunetix是一种应用安全性扫描工具,旨在帮助发现和修复Web应用程序中的漏洞和安全风险. Acunetix可以发现以下一些常见的安全问题: 跨站脚本攻击(XSS):通过在网页中注入恶意脚本 ...
- 零基础实现Java直播(一):集成
从泛娱乐的秀场直播,到直播带货潮流中的电商直播,直播已经成为2020年最热的应用技术之一,越来越多的产品希望加入直播功能.下面我们基于即构Express Video SDK,来分享如何从零实现线上直播 ...
- 2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,
2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列. 输入:nums = [1,2,2,3,3, ...
- MAUI中Windows的标题栏颜色怎么设置
如下图所示,MAUI中Windows下的标题栏是灰色的,如何设置颜色,找了很久,在GitHub上的issue中找到了答案, 找到/Platforms/Windows/App.xaml <maui ...