-
adb查看某个文件是否存在_linux实现检查文件夹是否存在不存在则创建
2020-12-30 08:12:07{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":...广泛应用于容器存储、大数据分析、Web 服务和内容管理、应用程序开发和测试、媒体...{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。广泛应用于容器存储、大数据分析、Web 服务和内容管理、应用程序开发和测试、媒体和娱乐工作流程、数据库备份。支持冷热数据分级存储,平均有效存储成本可低至 0.19元/月GB","link1":"https://www.aliyun.com/product/nas","link":"https://www.aliyun.com/product/nas","icon":"https://img.alicdn.com/tfs/TB1SisTRFXXXXbEXpXXXXXXXXXX-128-128.png","btn2":"折扣套餐","tip":"高性价比NAS新品上线,容量型NAS限时99元起! 立即查看","btn1":"立即开通","link2":"https://www.aliyun.com/product/nas","title":"文件存储 NAS"}],"search":[{"txt":"NAS新手入门","link":"https://m.aliyun.com/markets/aliyun/nas_edu01"},{"txt":"产品价格","link":"https://www.aliyun.com/price/product?spm=5176.149973.776685.6.ID90rH#/nas/detail"},{"txt":"最佳实践","link":"https://help.aliyun.com/document_detail/54998.html"},{"txt":"常见问题","link":"https://help.aliyun.com/knowledge_list/42175.html?spm=5176.59209.972911.4.3f6d3f62SVIECT"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"ifIcon":"icon","link":"https://img.alicdn.com/tfs/TB1XY8hGYr1gK0jSZFDXXb9yVXa-1740-328.png","icon":"nas","title":"文件存储 NAS","contentLink":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.1.27543d3eTvR5Bi","des":"阿里云文件存储(Network Attached Storage)是面向阿里云ECS、HPC和Docker的共享文件存储服务,支持linux和window客户端多种标准文件访问协议,无限容量及性能扩展、单一命名空间,企业级安全防护。","btn1":"立即开通","link1":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.2.27543d3eTvR5Bi","btn2":"产品文档","link2":"https://help.aliyun.com/product/27516.html?spm=5176.cnnas.0.0.42216689Kvc7ZO","link3":"https://nasnext.console.aliyun.com/overview?spm=5176.cnnas.0.0.42216689Kvc7ZO","btn3":"管理控制台","infoGroup":[{"infoName":"产品入门","infoContent":{"firstContentName":"NAS使用流程","firstContentLink":"https://help.aliyun.com/document_detail/148430.html?spm=a2c4g.11174283.6.564.b9c74da2J1uIZi","lastContentName":"挂载NAS到系统","lastContentLink":"https://help.aliyun.com/document_detail/27526.html?spm=a2c4g.11186623.6.566.1872495fTbU32y"}},{"infoName":"最新动态","infoContent":{"firstContentName":"极速型性能提升340%","firstContentLink":"https://yq.aliyun.com/articles/761833?spm=5176.cnnas.0.0.25216689DjruaG","lastContentName":"NAS低频型发布","lastContentLink":"https://yq.aliyun.com/articles/762197?spm=5176.cnnas.0.0.25216689DjruaG"}}]}]}
{"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。广泛应用于容器存储、大数据分析、Web 服务和内容管理、应用程序开发和测试、媒体和娱乐工作流程、数据库备份。支持冷热数据分级存储,平均有效存储成本可低至 0.19元/月GB","link1":"https://www.aliyun.com/product/nas","link":"https://www.aliyun.com/product/nas","icon":"https://img.alicdn.com/tfs/TB1SisTRFXXXXbEXpXXXXXXXXXX-128-128.png","btn2":"折扣套餐","tip":"高性价比NAS新品上线,容量型NAS限时99元起! 立即查看","btn1":"立即开通","link2":"https://www.aliyun.com/product/nas","title":"文件存储 NAS"}],"search":[{"txt":"NAS新手入门","link":"https://m.aliyun.com/markets/aliyun/nas_edu01"},{"txt":"产品价格","link":"https://www.aliyun.com/price/product?spm=5176.149973.776685.6.ID90rH#/nas/detail"},{"txt":"最佳实践","link":"https://help.aliyun.com/document_detail/54998.html"},{"txt":"常见问题","link":"https://help.aliyun.com/knowledge_list/42175.html?spm=5176.59209.972911.4.3f6d3f62SVIECT"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"ifIcon":"icon","link":"https://img.alicdn.com/tfs/TB1XY8hGYr1gK0jSZFDXXb9yVXa-1740-328.png","icon":"nas","title":"文件存储 NAS","contentLink":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.1.27543d3eTvR5Bi","des":"阿里云文件存储(Network Attached Storage)是面向阿里云ECS、HPC和Docker的共享文件存储服务,支持linux和window客户端多种标准文件访问协议,无限容量及性能扩展、单一命名空间,企业级安全防护。","btn1":"立即开通","link1":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.2.27543d3eTvR5Bi","btn2":"产品文档","link2":"https://help.aliyun.com/product/27516.html?spm=5176.cnnas.0.0.42216689Kvc7ZO","link3":"https://nasnext.console.aliyun.com/overview?spm=5176.cnnas.0.0.42216689Kvc7ZO","btn3":"管理控制台","infoGroup":[{"infoName":"产品入门","infoContent":{"firstContentName":"NAS使用流程","firstContentLink":"https://help.aliyun.com/document_detail/148430.html?spm=a2c4g.11174283.6.564.b9c74da2J1uIZi","lastContentName":"挂载NAS到系统","lastContentLink":"https://help.aliyun.com/document_detail/27526.html?spm=a2c4g.11186623.6.566.1872495fTbU32y"}},{"infoName":"最新动态","infoContent":{"firstContentName":"极速型性能提升340%","firstContentLink":"https://yq.aliyun.com/articles/761833?spm=5176.cnnas.0.0.25216689DjruaG","lastContentName":"NAS低频型发布","lastContentLink":"https://yq.aliyun.com/articles/762197?spm=5176.cnnas.0.0.25216689DjruaG"}}]}]}}
-
在linux下防止某个程序被运行两次的方法
2008-01-12 15:43:00在linux下防止某个程序被运行两次的方法 通过文件锁来实现,在程序运行的一开始,检查某文件是否存在,如果存在则说明改程序已经在运行了,如果不存在则利用open语句创建该文件,程序退出时关闭并删除此文件。...在linux下防止某个程序被运行两次的方法
通过文件锁来实现,在程序运行的一开始,检查某文件是否存在,如果存在则说明改程序已经在运行了,如果不存在则利用open语句创建该文件,程序退出时关闭并删除此文件。
具体代码:
static char file_lock[sizeof(ctl_addr.sun_path)] = /var/run/file.pid;
static bool file_lock_created = FALSE;
static int
create_lock(void)
{
int fd = open(file_lock, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC,
S_IRUSR | S_IRGRP | S_IROTH);
if (fd < 0)
{
if (errno == EEXIST)
{
fprintf(stderr, "file: lock file /"%s/" already exists/n", file_lock);
exit_file(10);
}
else
{
fprintf(stderr, "file: unable to create lock file /"%s/" (%d %s)/n"
, file_lock, errno, strerror(errno));
exit_file(1);
}
}
file_lock_created = TRUE;
return fd;
}
static bool
fill_lock(int lockfd)
{
char buf[30]; /* holds "/n" */
pid_t pid;
int len;
pid = getpid();
len = snprintf(buf, sizeof(buf), "%u/n", (unsigned int) pid);
bool ok = len > 0 && write(lockfd, buf, len) == len;
close(lockfd);
return ok;
}
static void
delete_lock(void)
{
if (file_lock_created)
{
//delete_ctl_socket();
unlink(file_lock); /* is noting failure useful? */
}
} -
linux c 检查程序是否运行(pid_t定义/stat();函数)
2020-07-25 04:01:26linux c 检查程序是否运行 检查进程存在的五种方法: 通过wait()函数来监控: 这种方法只适用于父子进程之间,父进程可以使用该函数对子进程进行监控 信号量和文件锁: 如果某个进程一直持有某个信号量或者文件锁...linux c 检查程序是否运行
检查进程存在的五种方法:
- 通过wait()函数来监控: 这种方法只适用于父子进程之间,父进程可以使用该函数对子进程进行监控 信号量和文件锁:
- 如果某个进程一直持有某个信号量或者文件锁,并且该文件锁或者信号量一直处于被监控状态,那么当可以获取到信号量和文件锁的时候说明该进程已经终止
- 进程间IPC通信机制:可以通过进程间通信的某些机制来实现对某一个进程的监控,比如FIFO,可以给被监控进程管道的读端,当写端写入失败的时候,说明该进程也已经结束,还可以通过socket,让被监控进程和监控进程间建立socket,监控该socket的连接状态就可以知道被监控进程有没有退出
- 查看/prco/PID: 通过这种方式可以调用stat()等函数实现对进程的查看
- kill(pid,0):通过向被监控进程发送sigid 为0的信号,若返回失败且errno为ESRCH说明该进程不存在
注意:4、5两种方法有可能存在一定的风险,因为linux系统会重用进程ID,当被监控进程终止后,linux进程可能重用该进程ID,所以监控的可能不是之前的进程。
方法4、5示例代码1:
/* 通过PID文件判断进程是否运行 */ #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <signal.h> static char starter_pid_file_default[] = "/var/run/test.pid"; static bool check_pid(char *pid_file) { struct stat stb; FILE *pidfile; if (stat(pid_file, &stb) == 0) { pidfile = fopen(pid_file, "r"); if (pidfile) { char buf[64]; pid_t pid = 0; memset(buf, 0, sizeof(buf)); if (fread(buf, 1, sizeof(buf), pidfile)) { buf[sizeof(buf) - 1] = '\0'; pid = atoi(buf); } fclose(pidfile); if (pid && kill(pid, 0) == 0) { /* such a process is running */ printf("pid=%d",pid); return 1; } } printf("removing pidfile '%s', process not running", pid_file); unlink(pid_file); } return 0; } int main() { FILE *fd = fopen(starter_pid_file_default, "w"); if (fd) { fprintf(fd, "%u\n", getpid()); fclose(fd); } if (check_pid(starter_pid_file_default)) { printf("test is already running (%s exists)\n", starter_pid_file_default); } else printf("test is NOT running (%s NOT exists)\n", starter_pid_file_default); unlink(starter_pid_file_default); return 0; }
方法4、5示例代码2:
snprintf(pid_file, sizeof(pid_file), "/var/run/%s.pid", progname); int check_daemon_running(const char *pid_file) { int retVal = -1; struct stat fStatBuf; retVal = stat(pid_file, &fStatBuf); if (0 == retVal) { pid_t pid = -1; printf("PID record file \"%s\" exist.\n", pid_file); pid = get_daemon_pid(pid_file); if (pid > 0) /* Process pid exist */ { if ((retVal = kill(pid, 0)) == 0) { printf("Program with PID[%d] seems running.\n", pid); return 1; } else /* Send signal to the old process get no reply. */ { printf("Program with PID[%d] seems exit.\n", pid); remove(pid_file); return 0; } } else if (0 == pid) { printf("Can not read program PID form record file.\n"); remove(pid_file); return 0; } else /* Read pid from file "pid_file" failure */ { printf("Read record file \"%s\" failure, maybe program still running.\n", pid_file); return 1; } } return 0; }
**示例代码3:**详情见https://blog.csdn.net/qq_46042542/article/details/105813198
#include <stdio.h> #include <string.h> #include <libgen.h> #include <stdlib.h> int check_run(char *proname) { FILE *fp = NULL; char command[150]; char buf[300]; int count = 3; /****************************************************** ps -ef列出相关进程的信息 grep -w %S精确字符串的匹配 wc -l显示数据有几行,用此来判断程序是否存在 注意的是grep是一个单独的进程,popen会执行一个sh -c .... 的进程, 所以需设置count为3 ******************************************************/ snprintf(command, sizeof(command), "ps -ef | grep -w %s | wc -l ", proname); fp=popen(command, "r"); if( !fp ) { printf("popen errno\n"); return -1; } if((fgets(buf, sizeof(buf), fp)) != NULL) { count = atoi(buf); printf("%d\n", count); } /*snprintf(command, sizeof(command), "ps -ef | grep -w %s ", proname); fp=popen(command, "r"); while( count != 7) { fgets(buf, sizeof(buf), fp); printf("%s",buf); count++; }*/ pclose(fp); fp = NULL; if((count -3) == 0) { return 0; } else { return 1; } *int main(int argc, char **argv) { int rv; char *progname=NULL; progname=basename(argv[0]); printf("%s\n", progname); rv = check_run(progname); printf("%d\n", rv); while(1) {}; }
pid_t定义
pid_t 类型在 Linux 环境编程中用于定义进程 ID,需要引入头文件<sys/types.h>,
#include<sys/types.h>//pid_t定义在这个头文件中 #include<unistd.h> //意为unix std,是POSIX标准定义的,包含许多系统服务的函数原型 pid_t getpid(void);//返回调用进程的PID pid_t getppid(void);//返回父进程的PID //pid_t 在types.h中被定义为int
获取pid_t的字节长度
#include <iostream> using namespace std; int main(int argc, char *argv[]) { pid_t pid; cout <<"sizeof(pid_t)="<< sizeof(pid_t) << endl; return 0; }
运行结果
[root@localhost test]# g++ test.cpp -o test [root@localhost test]# ./test sizeof(pid_t)=4
获取当前进程的ID
#include <iostream> #include <unistd.h> using namespace std; int main(int argc, char *argv[]) { pid_t pid = getpid(); cout <<"pid="<<pid << endl; return 0; }
运行结果
[root@localhost test]# g++ test.cpp -o test [root@localhost test]# ./test pid=1006
stat函数
- 作用:获取文件信息
头文件:include <sys/types.h> #include <sys/stat.h> #include <unistd.h>
函数原型:int stat(const char *path, struct stat *buf)
返回值:成功返回0,失败返回-1;
参数:文件路径(名),struct stat 类型的结构体
struct stat { dev_t st_dev; //文件的设备编号 ino_t st_ino; //节点 mode_t st_mode; //文件的类型和存取的权限 nlink_t st_nlink; //连到该文件的硬连接数目,刚建立的文件值为1 uid_t st_uid; //用户ID gid_t st_gid; //组ID dev_t st_rdev; //(设备类型)若此文件为设备文件,则为其设备编号 off_t st_size; //文件字节数(文件大小) unsigned long st_blksize; //块大小(文件系统的I/O 缓冲区大小) unsigned long st_blocks; //块数 time_t st_atime; //最后一次访问时间 time_t st_mtime; //最后一次修改时间 time_t st_ctime; //最后一次改变时间(指属性) };
错误代码:
ENOENT 参数file_name指定的文件不存在 ENOTDIR 路径中的目录存在但却非真正的目录 ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接 EFAULT 参数buf为无效指针,指向无法存在的内存空间 EACCESS 存取文件时被拒绝 ENOMEM 核心内存不足 ENAMETOOLONG 参数file_name的路径名称太长
-
Linux 查找某个应用的安装目录
2020-07-03 16:43:38which [root@iZ94d74d2reZ opt]# which redis-server /usr/local/bin/redis-...which命令是查找命令是否存在,以及命令的存放位置在哪儿。 2.whereis whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数which
[root@iZ94d74d2reZ opt]# which redis-server /usr/local/bin/redis-server
whereis
[root@sss opt]# whereis redis-server redis-server: /usr/local/bin/redis-server
两者区别
1.whichwhich命令是查找命令是否存在,以及命令的存放位置在哪儿。
2.whereis
whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
-
如何判断 Linux 服务器是否被入侵?
2017-11-12 14:21:00如何判断 Linux 服务器是否被入侵? 本指南中所谓的服务器被入侵或者说被黑了的意思,是指未经授权的人或程序为了自己的目的登录到服务器上去并使用其计算资源,通常会产生不好的影响。 免责声明:若你的服务器被... -
如何检查linux服务器是否被入侵
2018-07-03 13:32:46出自:...免责声明:若你的服务器被类似 NSA 这样的国家机关或者某个犯罪集团入侵,那么你并不会注意到有任何问题,这些技术也无法发觉他们的存在。然而,大多数被攻破的服务... -
如何判断 Linux 服务器是否被***?
2017-12-13 17:25:24如何判断 Linux 服务器是否被***? 本指南中所谓的服务器被***或者说被黑了的意思,是指未经授权的人或程序为了自己的目的登录到服务器上去并使用其计算资源,通常会产生不好的影响。 免责声明:若你的服务器被类似 ... -
Linux 服务器如何判断是否被入侵?
2019-09-19 12:18:40免责声明:若你的服务器被类似 NSA 这样的国家机关或者某个犯罪集团入侵,那么你并不会注意到有任何问题,这些技术也无法发觉他们的存在。然而,大多数被攻破的服务器都是被类似自动攻击程序这样的程序或者类似... -
手把手教你如何判断 Linux 服务器是否被入侵
2017-12-18 14:59:41免责声明:若你的服务器被类似 NSA 这样的国家机关或者某个犯罪集团入侵,那么你并不会注意到有任何问题,这些技术也无法发觉他们的存在。 然而,大多数被攻破的服务器都是被类似自动攻击程序这样的程序或者类似... -
深入理解 Linux 内核---块设备驱动程序
2018-12-24 20:31:11块设备的处理 一个进程在某个磁盘文件上发出一个 read() 系统调用,内核对进程请求回应的一般步骤: ...VFS 函数确定所请求的数据是否已经存在,如有必要,它决定如何执行 read 操作。 有时候没有... -
Kali linux渗透测试系列————13、Kali linux信息收集之端口扫描
2018-05-16 11:18:28在确定某端口开发状态之后,攻击人员就会检查在该端口提供相应的服务的程序版本,以判断这个版本的程序是否存在漏洞,例如说,主机A使用的是数年前的1.0版本的web服务端程序,而且官方发布过这个版... -
Linux进程相关的概念
2021-01-07 10:12:33Linux进程相关的概念 理清楚以下的5个问题:...a、操作系统提供一个指令ps,配合grep使用查看是否存在某个进程。 b、或者使用top来观察进程。 ps -aux|grep +某个程序 如: CLC@Embed_Learn:~$ ps -aux|grep a.out Warn -
Linux进程
2020-12-21 14:42:011.查看进程中是否存在某个进程 例:cp -aux|grep init 2.类似Windows任务管理器 命令:top 2、进程标识符 1.每个进程都有一个标识符(非负整数) Pid=0:交换进程,进程调度(某一时刻哪个进程来跑,CPU,内存,网络) Pid=... -
linux动态库查找问题
2020-12-07 16:55:35在configure阶段,为了检测安装安装环境是否满足,通常情况下都是通过pkg-config来检测其依赖的动态库是否存在,这一过程pkg-config会去寻找相应库的pc文件。当我们完某个程序后,如果其提供了动态库,在源码中会有... -
Linux添加环境变量
2018-09-27 21:46:24首先写一个可执行程序 #include "stdio.h" int main() { printf("hello"); return 0; } 然后将它编译成二进制可执行...linux命令行下面执行某个命令的时候,首先保证该命令是否存在,... -
linux shell 逻辑运算符、逻辑表达式详细介绍
2021-01-10 13:14:27一、逻辑运算符 逻辑卷标 表示意思 1. 关于档案与目录的侦测逻辑卷标!...侦测『某个东西』是否存在! 2. 关于程序的逻辑卷标! -G 侦测是否由 GID 所执行的程序所拥有 -O 侦测是否由 UID 所 -
Linux----Bash和Shell + source命令
2020-10-19 13:35:08外部命令:存在于文件系统中某个目录下的单独的程序 shell首先检查是否是内部命令,不是再检查是否应用程序。 搜索路径:能找到可执行程序的目录列表。如果是应用程序,shell会试着在搜索路径($PATH)里寻找应用... -
Linux grep 命令 文件内容搜索
2018-11-26 21:53:30在写Linux服务器上的一些程序时,偶尔会碰到需要搜索某个字段是否存在于某个文件中,为了实现这个目的,我们可以使用grep命令 以下是两种通用的使用方法: 从文件中搜索目标字符串 eg: 从file.txt中搜索string: ... -
Centos版Linux 一些常用操作命令
2018-12-01 13:52:04/bin里面一般是普通可执行程序,而/sbin里多为系统管理程序和服务程序s应该是system这个单词sudo是给普通用户赋予超级权限,ps常配合grep 查看某个进程是否存在 ps -ef | grep httpd source 命令是更新配置文件命令... -
Linux 电脑系统基本操作
2020-04-18 22:05:11Linux 系统常用命令 一、基础命令行 1. htop function:互动的进程...function:检查Nginx进程是否存在。 ps命令:将某个进程显示出来, grep命令:查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本... -
Linux shell 逻辑运算符、逻辑表达式详解
2020-11-05 15:29:45一、逻辑运算符 1、逻辑卷标表示意思 1)关于档案与目录的侦测逻辑卷标 -f 常用!侦测『档案』是否存在 eg:...-e 侦测『某个东西』是否存在! 2)关于程序的逻辑卷标 -G 侦测是否由 GID 所执行的程序所拥有 -O 侦测是否 -
Linux文件搜索命令
2020-03-07 12:06:57使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令 也可以搜索命令所在路径及别名 举例 2、whereis 查看文件的位置 whereis命令只能用于搜索程序名,而且只能搜索二进制文件、... -
linux下查询命令
2017-01-01 23:02:28也就是说,使用which命令,就可以看到系统命令是否存在,以及执行的到底是哪一个位置的命令。命令格式:which 可执行文件名称 which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。... -
Linux 中进程管理工具汇总
2018-05-05 20:36:55如果我们的Linux系统整个系统资源快要被耗尽时,我们是否能够找出那个最消耗系统资源的进程,然后删除该进程,让系统恢复正常呢,或者由于某个程序存在BUG,导致产生一系列的问题,有如何查找它并结束进程?...
-
2014年下半年 信息系统监理师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
支付宝架构师眼里的高可用与容灾架构演进
-
全局绝热搜索算法的电路模型
-
快读函数
-
Go-SpeedTest-Bot:帮助您使用手机管理所有节点的机器人-源码
-
ASHRAE 2012 IT Equipment Thermal Management and Controls_V1.0.pdf
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
MySQL你该了解的那些事【服务端篇】
-
深入分析 Java 中的中文编码问题
-
在 Linux 上构建企业级 DNS 域名解析服务
-
STM32F373XXDataSheet.zip
-
通过加速或跳过网页视频解决进度条无法拖动问题
-
破折号-源码
-
2013年上半年 信息系统管理工程师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
Unity 热更新技术-ILRuntime
-
WLAN中共存的802.11a / n和802.11ac客户端:优化和区分
-
从理论到试验台,WiFi DCF网络的性能评估
-
-191-4-源码
-
阿里集团八年容器化演进之路
-
bert_sentiment_analysis_finetuning-源码