lv17 BOA服务器搭建 4

1 boa简介:

其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。Boa支持CGI。

Boa的设计目标是速度和安全。

Boa的主要设计目标是速度和安全性。安全性在“不能被恶意用户破坏”的意义上,不是“细粒度访问控制和加密通信”。

关于CGI(通用网关接口),它只是一个进程,用来提供服务器和外部程序之间的接口。通过 CGI,Web 服务器可以与外部程序(如脚本、程序等)进行通信,从而动态生成内容或处理用户提交的数据。

自动目录生成和自动文件拼接指的是一些功能或特性,是 Boa 服务器具备的一些能力:

自动目录生成:当客户端访问一个目录时,如果在服务器上启用了自动目录生成功能,Boa 会自动列出该目录中的文件和子目录,以便用户可以浏览和访问这些内容,而不需要手动创建一个索引页面。

自动文件拼接:这是服务器在响应客户端请求时,会自动将多个文件或内容片段拼接在一起,以生成最终的响应内容。这种功能可以用于动态地生成复杂的页面或响应,提供更丰富的用户体验。

特点:可靠性和可移植性,Boa不是作为功能强大的服务器。 

开发平台:GNU / Linux是目前的开发平台。

跨平台移植三部曲:

	1、./configure生成一个Makefile    
	2、make 
	3、make install 

1.1 源码下载

http://www.boa.org/

News! (last updated 23 February 2005)

Latest Released Version (0.94.13) here (signature here)  --- 下载地址

 

2 x86平台移植

2.1 解压源码

tar -xvf boa-0.94.14rc21

2.2 在源码目录下配置

x86
./configure

arm
./configure --host=arm-linux-gnueabi  //实测只需要configure

--prefix=/your/installation/path:指定安装路径,即Boa服务器安装后所在的目录。
--host=arm-linux-gnueabi:指定ARM架构作为目标系统。

这是根据configure.in文件进行一系列的配置,生成config.status,configure,和Makefile文件。

如果无法执行,考虑权限,修改该目录下的configure的属性为可执行 chmod 755 configure

2.3 修改服务器根目录宏定义

将src/defines.h中的
    #define SERVER_ROOT "/etc/boa" 
修改为
    #define SERVER_ROOT "/boa"    //根据自己需要建立目录

这样boa程序启动时会在/boa目录下寻找boa.conf配置文件,并且将/boa文件夹作为服务器的根目录。

2.4 编译源码

make

2.5 建立安装目录

sudo mkdir -p /boa /boa/www /boa/cgi-bin /boa/log  

将需要的文件复制到安装目录中

将boa-0.94.13/src目录下生成的boa、boa_indexer二进制文件复制到/boa下
    sudo cp boa boa_indexer /boa
将boa-0.94.13目录下的boa.conf文件复制到/boa下
	sudo cp boa.conf /boa
可选项:arm-linux-strip boa(去掉boa中的调试信息,只是减小文件的大小可以执行也可以不执行)
将/etc/mime.types复制到/boa目录下
	sudo cp /etc/mime.types /boa

2.6 返回b顶层目录  --- 修改配置文件

vi boa.conf, //几乎全部指定到boa的目录下,这样方便我们进行管理

重新指定一些文件的生成路径,因为重新指定这些路径后会帮助我们深刻的理解关于boa服务器的工作机制

Port  80  
User  0  
Group 0 

#bind调用的IP地址,一般注释掉,表明绑定到INADDR_ANY,通配于服务器的所有IP地址
#Listen 192.68.0.5 

##### error_log和access_log会自动生成,只要指定生成路径就可以了。  
ErrorLog /boa/log/error_log  
AccessLog /boa/log/access_log    

##### 存放HTML文件的根路径 
DocumentRoot /boa/www  
UserDir public_html  

##### 默认页面,若之输入http://127.0.0.1/则会自动返回给浏览器默认页面index.html  
DirectoryIndex index.html    

##### 保持默认  
DirectoryMaker /boa/boa_indexer   //被修改
KeepAliveMax 1000  
KeepAliveTimeout 10  
MimeTypes /boa/mime.types   //被修改
DefaultType text/plain    

#####指定传给cgi程序的PATH环境变量  
CGIPath /bin:/usr/bin:/usr/local/bin   
#####保持默认  
Alias /doc /usr/doc   

#####如果输入http://127.0.0.1/cgi-bin/test.cgi, 则boa服务器会到/boa/cgi-bin中寻找test.cgi程序。  
ScriptAlias /cgi-bin/ /boa/cgi-bin/  

2.7 建立测试页面

(1)index.html  ,将index.html 放在/boa/www目录下

  <html>
      <body>
          <h3> This is a test !</h3> <br/>
          <img src="./image.jpg">
          <h3> beautiful picture !</h3> <br/>
          <a href="/cgi-bin/test.cgi">return to cgi page</a>
      </body>
  </html>

  

注意: 笔记本打开,另存为utf-8格式

(2)test.c, 使用gcc -o test.cgi test.c,将test.c编译生成test.cgi,后缀为cgi的类型

编译后得到的test.cgi放在/boa/cgi-bin目录下

#include <stdio.h>  

int main()  
{  

  printf("Content-type:text/html\n\n"); //这句一定要加上  
  printf("<html><body>");  
  printf("<font style=\"color:red; font-size:30px;\">Hello, CGI!</font><br/>");  
  printf("<a href=\"/index.html\">return index.html</a>");  
  printf("</body></html>");  
  return 0;  

}  

2.8 测试运行

 

 

makefile

 arm

boa源码src->makefile

gcc是x86,如果需要arm,改成arm-linux-gcc

3 arm平台移植

3.1 源码下载(13版可以)

 

 2.2 在源码目录下配置

进入src目录
./configure   //实测只需要configure

这是根据configure.in文件进行一系列的配置,生成config.status,configure,和Makefile文件。

如果无法执行,考虑权限,修改该目录下的configure的属性为可执行 chmod 755 configure

2.3 修改服务器根目录宏定义

将src/defines.h中的
    #define SERVER_ROOT "/etc/boa" 
修改为
    #define SERVER_ROOT "/boa"    //根据自己需要建立目录

这样boa程序启动时会在/boa目录下寻找boa.conf配置文件,并且将/boa文件夹作为服务器的根目录。

2.4 编译源码

修改Makefile

./configure
	生成Makefile后将Makefile中的
CC = gcc   CPP=gcc -E 
改为
CC = arm-linux-gcc,
CPP = arm-linux-gcc -E,
make

编译常见问题:

make 编译源码:
	问题1: 
	目录: boa-0.94.13/src$ make
		yacc  -d boa_grammar.y
		make: yacc: Command not found
		make: *** [y.tab.c] Error 127
	解决方法:
		/boa-0.94.13/src$ sudo apt-get install bison


	问题2: 
		yacc  -d boa_grammar.y
		gcc  -g -O2 -pipe -Wall -I.   -c -o y.tab.o y.tab.c
		......
		lex  boa_lexer.l
		make: lex: Command not found
		make: *** [lex.yy.c] Error 127
	解决方法:
		/boa-0.94.13/src$ sudo  apt-get install flex
	WARNING: The following packages cannot be authenticated!
	  libfl-dev flex
	Install these packages without verification? [y/N] 
	E: Some packages could not be authenticated
	注意加参数-f 自动搜索依赖,下面选择y  : sudo  apt-get install flex -f
	Do you want to continue? [Y/n] y
	WARNING: The following packages cannot be authenticated!
	  libfl-dev flex
	Install these packages without verification? [y/N] y


	问题3: 	
	util.c: In function ‘get_commonlog_time’:
	util.c:100:39: error: pasting "t" and "->" does not give a valid preprocessing token
			 time_offset = TIMEZONE_OFFSET(t);									   ^
	compat.h:120:30: note: in definition of macro ‘TIMEZONE_OFFSET’
	 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff						  ^
	make: *** [util.o] Error 1
	
问题描述:在compat.h文件中的宏定义问题:  ‘TIMEZONE_OFFSET’
	解决方法:
		修改 boa-0.94.13/src$ vi compat.h  +120
		找到
		#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
		修改成
		#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

		将boa.c中的 vi   boa.c
		225     #if 0     //注释掉
		226         if (setuid(0) != -1) {
		227             DIE("icky Linux kernel bug!");
		228         }
		229     #endif             
 	
这三行注释掉,否则boa启动时会出现“boa.c:226 - icky linux kernel bug!: No suchfile or directory错误”		
		



	
清除之前编译的内容 make clean (防止某些依赖的信息出现问题)
	重新make 
	再次boa-0.94.13/src$ make
	make: Nothing to be done for `all'.
	make主要检查的是时间戳, 只要target比依赖的文件时间靠后它就认为不需要编译

2.5 建立安装目录

sudo mkdir -p /boa /boa/www /boa/cgi-bin /boa/log  

将需要的文件复制到安装目录中

将boa-0.94.13/src目录下生成的boa、boa_indexer二进制文件复制到/boa下
    sudo cp boa boa_indexer /boa
将boa-0.94.13目录下的boa.conf文件复制到/boa下
	sudo cp boa.conf /boa
可选项:arm-linux-strip boa(去掉boa中的调试信息,只是减小文件的大小可以执行也可以不执行)
将/etc/mime.types复制到/boa目录下
	sudo cp /etc/mime.types /boa

2.6 返回b顶层目录  --- 修改配置文件

vi boa.conf, //几乎全部指定到boa的目录下,这样方便我们进行管理

重新指定一些文件的生成路径,因为重新指定这些路径后会帮助我们深刻的理解关于boa服务器的工作机制

Port  80  
User  0  
Group 0 

#bind调用的IP地址,一般注释掉,表明绑定到INADDR_ANY,通配于服务器的所有IP地址
#Listen 192.68.0.5 

##### error_log和access_log会自动生成,只要指定生成路径就可以了。  
ErrorLog /boa/log/error_log  
AccessLog /boa/log/access_log    

##### 存放HTML文件的根路径 
DocumentRoot /boa/www  
UserDir public_html  

##### 默认页面,若之输入http://127.0.0.1/则会自动返回给浏览器默认页面index.html  
DirectoryIndex index.html    

##### 保持默认  
DirectoryMaker /boa/boa_indexer   //被修改
KeepAliveMax 1000  
KeepAliveTimeout 10  
MimeTypes /boa/mime.types   //被修改
DefaultType text/plain    

#####指定传给cgi程序的PATH环境变量  
CGIPath /bin:/usr/bin:/usr/local/bin   
#####保持默认  
Alias /doc /usr/doc   

#####如果输入http://127.0.0.1/cgi-bin/test.cgi, 则boa服务器会到/boa/cgi-bin中寻找test.cgi程序。  
ScriptAlias /cgi-bin/ /boa/cgi-bin/  

2.7 建立测试页面

(1)index.html  ,将index.html 放在/boa/www目录下

  <html>
      <body>
          <h3> This is a test !</h3> <br/>
          <img src="./image.jpg">
          <h3> beautiful picture !</h3> <br/>
          <a href="/cgi-bin/test.cgi">return to cgi page</a>
      </body>
  </html>

  

注意: 笔记本打开,另存为utf-8格式

(2)test.c, 使用 arm-none-linux-gnueabi-gcc -o test.cgi test.c,将test.c编译生成test.cgi,后缀为cgi的类型

编译后得到的test.cgi放在/boa/cgi-bin目录下

#include <stdio.h>  

int main()  
{  

  printf("Content-type:text/html\n\n"); //这句一定要加上  
  printf("<html><body>");  
  printf("<font style=\"color:red; font-size:30px;\">Hello, CGI!</font><br/>");  
  printf("<a href=\"/index.html\">return index.html</a>");  
  printf("</body></html>");  
  return 0;  

}  

2.8 错误

移植到开发板后:

[root@fengjunhui boa]:~$ ./boa
No such user: nobody



解决方法:
sudo vi boa.conf
(1)Group的修改
修改 Group nogroup  为 Group 0
(2)user的修改
修改 User nobody 为 User 0
[root@fengjunhui boa]:~$ ./boa
问题描述:
[01/Jan/1970:00:23:10 +0000] boa.c:211 - getpwuid: Success
[01/Jan/1970:00:00:39 +0000] boa.c:211 - getpwuid: No such file or directory

解决:修改src/boa.c
注释掉下面两句话:
#if 0
        if (passwdbuf == NULL) {
                DIE(”getpwuid”);
                }
                if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
                DIE(”initgroups”);
                }
#endif
移植boa到嵌入式linux后,在启动时若出现“gethostbyname:: Success
"然后程序退出,则需在原boa.conf文件中增加一行:
ServerName  www.your.org.here


然后重新运行boa,然后在主机浏览器输入开发板网址(http://开发板ip:port)
[root@fengjunhui ]:~$ cd boa
[root@fengjunhui boa]:~$ ls
boa          boa_indexer  log          www
boa.conf     cgi-bin      mime.types
[root@fengjunhui boa]:~$ ./boa
[01/Jan/1970:00:00:24 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:24 +0000] boa: server built Jul 19 2017 at 23:07:48.
[01/Jan/1970:00:00:24 +0000] boa: starting server pid=1185, port 80

[root@fengjunhui boa]:~$ [01/Jan/1970:00:01:30 +0000] request from 192.168.8.223 "GET /favicon.ico HTTP/1.1" ("/boa/www/favicon.ico"): document open: No such file or directory
[01/Jan/1970:00:01:30 +0000] request from 192.168.8.223 "GET /favicon.ico HTTP/1.1" ("/boa/www/favicon.ico"): document open: No such file or directory

这个问题不影响使用:
问题描述:

[01/Jan/1970:00:01:34 +0000] cgi_header: unable to find LFLF

出错位置
      cgi_procee_header()
对于错误 cgi_header: unable to find LFLF的补充



浏览器中显示502 Bad Gateway
The CGI was not CGI/1.1 compliant.
解决方法:在Ubuntu端和A9端的交叉编译环境不一样,最好链接为静态库,这样不用单独提供库的支持
<3>编译方式:arm-linux-gcc -static -o xxx.cgi  xxx.c

可能的原因:
<1>输出MIME格式错误,结尾一定要有两个换行符
printf("Content-Type:text/html\n\n")
<2>权限错误
chmod 777 var/www/cgi-bin/xxx.cgi
<3>编译方式:arm-linux-gcc -static -o xxx.cgi  xxx.c
<4>备用方案:代码本身错误也会引起这个问题。实践中这个问题困扰了很久,一个字符串数组的处理有了问题, 提示的错误信息却是这个,开始一直郁闷于格式和权限,也可能是调用的一个小函数有些问题而导致的。所以在遇到这个问题时,如果输出格式和权限都正确的情况下,检查代码是个很好的选择
​
错误记录:


开发板上运行可执行程序报出错误:

line1: 1: Syntax error: word unexpected (expecting ")")

解决思路:

1.编译器的问题



2.文件完整性

重新烧写或上传一遍。

3.编译命令问题  

比如我的一个测试程序test.c :



​
可选项: ***----->然后给boa瘦身

arm-none-linux-gnueabi-strip boa
fengjunhui@ubuntu:~/smartstorage/boa-0.94/boa-0.94.13/src$ arm-none-linux-gnueabi-strip boa
arm-none-linux-gnueabi-strip: Unable to recognise the format of the input file `boa'
我们并没有修改Makefile,那么这个时候编译生成的x86格式的boa
fengjunhui@ubuntu:~/smartstorage/boa-0.94/boa-0.94.13/src$ file boa
boa: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=95bed4fc9481ca5ac84616c6cfb2578f4e4d1a2f, not stripped
F

2.8 测试运行

 测试:

在Ubuntu上输入你板子的ip: http://192.168.1.100/

OK ,实现了和直接在Ubuntu上操作一样的结果

输入指定的路径去访问:

http://192.168.1.100/index.html  

http://192.168.1.100/pass.html    跳转访问到指定的cgi  

指定是OK的。

4 补充:boa.conf 内容详解

boa.conf 内容详解:
25 Port 80
监听的端口号,缺省都是80,一般无需修改。注意,如果你的httpd服务器已经开启,那么你必须关掉或者重新设定端口号,
当你修改了模式http端口那么访问的时候要加上端口号,如http://localhostip:port
作为哪个用户运行,即它拥有该用户的权限,一般都是nobody,需 要 /etc/passwd中有nobody用户
User nobody
查看: 	vi /etc/passwd   18 nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
作为哪个用户组运行,即它拥有该用户组的权限,一般都是nogroup,需要在/etc/group文件中有nogroup组
Group nogroup
查看:  vi /etc/group   39 nogroup:x:65534:
是否使用本地时间。如果没有注释掉,则使用本地时间。注释掉则使用UTC时间
UseLocaltime

是否记录CGI运行信息,如果没有注释掉,则记录,注释掉则不记录
VerboseCGILogs

服务器名字
ServerName www.chad.com
是否启动虚拟主机功能,即设备可以有多个网络接口,每个接口都可以拥有一个虚拟的Web服务器。一般注释掉,即不需要启动
VirtualHost
非常重要,HTML文档的主目录。如果没有以/开始,则表示从服务器的根路径开始。注意,如果此处设置不正确,将不能打开网页
DocumentRoot /var/www
如果收到一个用户请求的话,在用户主目录后再增加的目录名
UserDir public_html
HTML目录索引的文件名,也是没有用户只指明访问目录时返回的文件名
DirectoryIndex index.html
当HTML目录没有索引文件时,用户只指明访问目录时,boa会调用该程序生成索引文件然后返回给用户,因为该过程比较慢最好不执行,
可以注释掉或者给每个HTML目录加上DirectoryIndex指明的文件
DirectoryMaker /usr/lib/boa/boa_indexer
如果DirectoryIndex不存在,并且DirectoryMaker被注释,那么就用Boa自带的索引生成程序来生成目录的索引文件并输出到下面目录,
该目录必须是Boa能读写
DirectoryCache /var/spool/boa/dircache
一个连接所允许的HTTP持续作用请求最大数目,注释或设为0都将关闭HTTP持续作用
KeepAliveMax 1000
HTTP持续作用中服务器在两次请求之间等待的时间数,以秒为单位,超时将关闭连接
KeepAliveTimeout 10
指明mime.types文件位置。如果没有以/开始,则表示从服务器的根路径开始。可以注释掉避免使用mime.types文件,此时需要用AddType在本文件里指明
MimeTypes /etc/mime.types
文件扩展名没有或未知的话,使用的缺省MIME类型
DefaultType text/plain
提供CGI程序的PATH环境变量值
CGIPath /bin:/usr/bin:/usr/local/bin

将文件扩展名和MIME类型关联起来,和mime.types文件作用一样。如果用mime.types文件,则注释掉,如果不使用mime.types文件,则必须使用
AddType application/x-httpd-cgi cgi
指明文档重定向路径
Redirect /bar http://elsewhere/feh/bar
为路径加上别名
Alias /doc /usr/doc
非常重要,指明CGI脚本的虚拟路径对应的实际路径。一般所有的CGI脚本都要放在实际路径里,用户访问执行时输入站点+虚拟路径+CGI脚本名
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
用户可以根据自己需要,对boa.conf进行修改,但必须要保证其他的辅助文件和设置必须和boaconf里的配置相符,不然Boa就不能正常工作。
最后将修改好的boa.conf放在开发板上的/etc/boa目录下。
在上面的例子中,我们还需要创建日志文件所在目录/var/log/boa,
创建HTML文档的主目录/var/www,将mime.types文件拷贝到/etc目录,
创建CGI脚本所在目录/var/www/cgi-bin/。
mime.types文件用来指明不同文件扩展名对应的MIME类型,一般可以直接从Linux主机上拷贝一个,
大部分也都是在主机的/etc目录下,同样,将主机的mime.types文件拷贝到开发板上的/etc目录下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/273309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8改进 | 图像去雾 | MB-TaylorFormer改善YOLOv8高分辨率和图像去雾检测(ICCV,全网独家首发)

一、本文介绍 本文给大家带来的改进机制是图像去雾MB-TaylorFormer&#xff0c;其发布于2023年的国际计算机视觉会议&#xff08;ICCV&#xff09;上&#xff0c;可以算是一遍比较权威的图像去雾网络&#xff0c; MB-TaylorFormer是一种为图像去雾设计的多分支高效Transformer…

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH&#xff08;Authentication Header&#xff0c;认证头&#xff09; ESP&#xff08;Encapsulating Security Payload&#xff0c;封装安全载荷&#xff09; IKE&#xff08;Internet Key Exchange&#xff0c;因特网密钥…

容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion

目录 引言1 通用容器部署的主要步骤1.1 准备环境1.2 构建 Docker 镜像1.3 上传镜像1.4 部署容器1.5 配置网络1.6 监控和维护 2 使用腾讯云容器镜像服务&#xff08;TCR&#xff09;部署的主要步骤2.1 下载 Stable Diffusion web UI 代码2.2 制作 Docker 镜像2.3 上传镜像到 TCR…

十、MySQL主从架构配置

一、资源配置 主库&#xff1a;192.168.134.132 从库&#xff1a;192.168.134.133 从库&#xff1a;192.168.134.134 二、主从同步基本原理&#xff1a; master用户写入数据&#xff0c;会生成event记录到binary log中&#xff0c;slave会从master读取binlog来进行数据同步…

【STL源码剖析】【2、空间配置器——allocator】

文章目录 1、什么是空间配置器&#xff1f;1.1设计一个简单的空间配置器&#xff0c;JJ::allocator 2、具备次配置力( sub-allocation)的 SGI 空间配置器2.1 什么是次配置力2.2 SGI标准的空间配置器&#xff0c;std::allocator2.2 SGI特殊的空间配置器&#xff0c;std::alloc2.…

09|代理(上):ReAct框架,推理与行动的协同

应用思维链推理并不能解决大模型的固有问题&#xff1a;无法主动更新自己的知识&#xff0c;导致出现事实幻觉。也就是说&#xff0c;因为缺乏和外部世界的接触&#xff0c;大模型只拥有训练时见过的知识&#xff0c;以及提示信息中作为上下文提供的附加知识。如果你问的问题超…

npm install 报错

问题原因是依赖冲突导致不能下载依赖包&#xff08;dependency conflict&#xff09;&#xff0c; 因为npm版本升级&#xff08;version>7&#xff09;&#xff0c; npmV7之前的版本遇到依赖冲突会忽视依赖冲突&#xff0c;继续进行安装&#xff0c; npmV7版本开始不会自动…

login登录界面

展示情况 代码&#xff1a; <template><div class"wrapper"><div style"margin: 200px auto; background-color: #fff; width: 350px; height: 300px; padding: 20px; border-radius: 10px"> <div style"margin: 20px 0; text…

C#,图论与图算法,无向图(Graph)回环(Cycle)的不相交集(disjoint)或并集查找(union find)判别算法与源代码

1 回环(Cycle)的不相交集(disjoint)或并集 不相交集数据结构是一种数据结构,它跟踪划分为多个不相交(非重叠)子集的一组元素。联合查找算法是对此类数据结构执行两个有用操作的算法: 查找:确定特定元素所在的子集。这可用于确定两个元素是否在同一子集中。 并集:将…

【软考】系统集成项目管理工程师(二十一)法律法规和标准规范【1分】

一、相关法规标准规范 1.对没有国家标准而又需要在全国某一行业范围内统一的技术要求&#xff0c;可以制定行业标准&#xff0c;在公布国家标准 之后&#xff0c;该项行业标准即行废止。2.对没有国家标准和行业标准而又需要在省、自治区,直辖市范围内统一的工业产品的安全、卫…

吴恩达深度学习环境本地化构建wsl+docker+tensorflow+cuda

Tensorflow2 on wsl using cuda 动机环境选择安装步骤1. WSL安装2. docker安装2.1 配置Docker Desktop2.2 WSL上的docker使用2.3 Docker Destop的登陆2.4 测试一下 3. 在WSL上安装CUDA3.1 Software list needed3.2 [CUDA Support for WSL 2](https://docs.nvidia.com/cuda/wsl-…

25考研|北大软微会「爆炸」吗?

软微不是已经爆炸了吗&#xff1f; 大家去看看他的录取平均分就知道了&#xff0c;没有实力千万别碰&#xff0c;现在考软微已经不存在捡漏之说。 110408的复试线已经划到了465分&#xff0c;这个人真的不低了&#xff0c;因为有数学一和408两个比较难的专业课&#xff0c;复…

华为配置WAPI-PSK安全策略实验

配置WAPI-PSK安全策略示例 组网图形 图1 配置WAPI-PSK安全策略组网图 配置流程组网需求配置思路配置注意事项操作步骤配置文件 配置流程 WLAN不同的特性和功能需要在不同类型的模板下进行配置和维护&#xff0c;这些模板统称为WLAN模板&#xff0c;如域管理模板、射频模板、VAP…

MVC接收请求教程

mvc接收各种请求 1-环境搭建 1.1-准备apifox发送请求 1.2-项目搭建 ①创建Web骨架的Maven项目 ​ --打开2023-IDEA &#xff0c;选择New Project ​ --选择Maven Archetype ​ --注意点&#xff1a;Catalog默认就行了 ​ --Archetype选择webapp ​ --JDK跟着黑马敲最好…

MS17_010 漏洞利用与安全加固

文章目录 环境说明1 MS17_010 简介2 MS17_010 复现过程3 MS17_010 安全加固 环境说明 渗透机操作系统&#xff1a;kali-linux-2024.1-installer-amd64漏洞复现操作系统: cn_windows_7_professional_with_sp1_x64_dvd_u_677031 1 MS17_010 简介 MS17_010 漏洞后门利用程序 Eter…

跳绳计数,YOLOV8POSE

跳绳计数&#xff0c;YOLOV8POSE 通过计算腰部跟最初位置的上下波动&#xff0c;计算跳绳的次数

VSCode + PicGo + Github 实现markdown图床管理

目录 PicGo客户端VSvode插件 PicGo客户端 PicGo 是一个图片上传管理工具 官网&#xff1a;https://molunerfinn.com/PicGo/ github图传使用说明&#xff1a;https://picgo.github.io/PicGo-Doc/zh/guide/config.html#GitHub图床 步骤&#xff1a; 1、创建一个github公开仓库…

Vue+SpringBoot打造数据可视化的智慧河南大屏

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…

单目相机标定实现--张正友标定法

文章目录 一&#xff1a;相机坐标系&#xff0c;像素平面坐标系&#xff0c;世界坐标系&#xff0c;归一化坐标系介绍1&#xff1a;概述公式 二:实现1&#xff1a;整体流程4&#xff1a;求出每张图像的单应性矩阵并用LMA优化5&#xff1a;求解理想无畸变情况下的摄像机的内参数…

基于Spring Boot的拍卖管理系统设计与实现

摘 要 随着社会的发展&#xff0c;系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息&#xff0c;但各种信息鱼龙混杂&#xff0c;信息真假难以辨别。为了方便用户更好的获得信息&#xff0c;因此&#xff0c;设计一种安全高效的拍卖管理系统极为重要。 为设计一个…
最新文章