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

Linux (open、write、read、close、lseek、chmod、sync)操作文件的函数详解

目录

一、文件操作方式

二、Linux底层文件操作

1. open

2. write

3. read

4. close

5. lseek

6. chmod

7. sync、syncfs、fsync、fdatasync

三、 Linux 系统调用

四、总结


linux中,一切皆文件(网络设备除外)

硬件设备也“是”文件,通过文件来使用设备

目录(文件夹)也是一种文件

这篇文章将记录open、write、read、close、lseek等Linux系统函数的用法。

补充:time 命令

        time命令分别输出:

        real - 程序总的执行时间;

        usr - 该程序本身所消耗的时间;

        sys - 系统调用所消耗的时间.


一、文件操作方式

1. 文件描述符  fd

         是一个 >= 0 的整数

         每打开一个文件,就创建一个文件描述符,通过文件描述符来操作文件

         多次打开同一个文件,可得到多个不同的文件描述符。

         预定义的文件描述符:(具体请看下面 课外补充)

         0标准输入(stdin),对应于已打开的标准输入设备(键盘)

         1标准输出(stdout),对应于已打开的标准输出设备(控制台)

         2标准错误(stderr), 对应于已打开的标准错误输出设备(控制台)        

这里可以使用write在控制台输出信息,跟printf性质一样,例:

#include <unistd.h>
#include <stdio.h>
#include <string.h>int main(void) {char buf[1024];memset(buf, 0, sizeof(buf));read(0, buf, sizeof(buf));     // 标准输入printf("%s", buf);             // 输出到控制台write(1, buf, sizeof(buf));    // 标准输出到控制台write(2, buf, sizeof(buf));    // 标准错误输出到控制台return 0;
}

运行结果:

ygt@YGT:~/echo_server/test$ gcc demo1.c -o demo1
ygt@YGT:~/echo_server/test$ ./demo1
使用read输入。。。。
使用read输入。。。。
使用read输入。。。。
使用read输入。。。。
ygt@YGT:~/echo_server/test$

第一条信息是我们手动输入的,因为程序运行后,read函数通过 0 这个文件描述符,在等待我们输入;

第二条输出信息是printf函数输出的;

第三条输出信息是write函数通过 1 这个文件描述符输出的;

第四条输出信息是write函数通过 2 这个文件描述符输出的。

1 和 2 都是一样输出到控制台,就他们的性质不一样而已。     

2. 使用底层文件操作(系统调用)

           比如:read、write

           可使用man 2 查看

           (将在下面进行讲解)

3. 使用I/O库函数

             比如:fread

             可使用man 3 查看

            (就是C语言的文件操作函数,这里不进行讲解)

  

课外补充:

我们运行以下程序:

#include <unistd.h>int main(void) {char buf[1024] = "0, 1, 2 到底是个什么?\n";while (1) {write(1, buf, sizeof(buf));sleep(1);}return 0;
}

编译运行:

可以看到,其每一秒都会向控制台输出一段字符串。

接下来我们重写打开一个终端,在终端运行以下命令查看demo3程序的进程号:

 ps -ef | grep demo3        注意:demo3是上面运行的程序名字

可以看到,./demo3的程序的进程号是 6893.

然后执行以下命令:

ll /proc/6893/fd/

我们通过查看对应程序进程号里的fd文件夹,就可以看出,Linux系统已经给./demo3这个程序默认创建了三个fd,分别是0,1,2;他们分别对应也就是标准输入标准输出标准出错

所以这也就是为什么我们可以使用 write read 函数和 01进行输入和输出的操作了。

注意:

/proc/6898/ 这个文件夹是Linux系统为程序./demo3临时创建的文件夹,当这个程序结束,Linux也会随之将他们删除掉。

任何程序已启动Linux系统都会为他们创建一个属于他们自己的对应进程号的文件夹,这个进程号是随机的,文件夹的名字是对应进程号的。

例:

将./demo3这个程序退出后,再次运行命令:ll /proc/6893/fd/


二、Linux底层文件操作

1. open

   

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open (const char *pathname, int flags);
int open (const char *pathname, int flags, mode_t mode);

描述:打开指定路径的文件,返回一个文件描述符。

pathname

        文件路径名;

flags

        打开文件的方式;

mode

        设置文件的权限;

返回值

        成功:返回新的文件描述符;

        失败:-1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看;

注意

        返回的文件描述符是该进程未打开的最小的文件描述符;

(1) 描述

        在Linux中,使用命令:man 2 open  

(2) 打开方式        

O_RDONLY    只读O_WRONLY    只写O_RDWR      读写O_CREAT     如果文件不存在,则创建该文件,并使用第3个参数设置权限,如果文件存在 ,则只打开文件;O_EXCL      如果同时使用O_CREAT而且该文件又已经存在时,则返回错误, 用途:以防止多个进程同时创建同一个文件;O_APPEND    尾部追加方式(打开后,文件指针指向文件的末尾);O_TRUNC     若文件存在,则长度被截为0,属性不变.

        例:  open("/dev/hello", O_RDONLY|O_CREAT|O_EXCL, 0777)         

        多个设置可用 “|” 进行分割。

            

(3) 参数3 (设置权限

        当参数2使用了O_CREAT时,就得使用参数3             

        S_I(R/W/X)(USR/GRP/OTH)

S_IRWXU  00700  用户拥有 读 写 执行 权限S_IRUSR  00400  用户拥有 读 权限S_IWUSR  00200  用户拥有 写 权限S_IXUSR  00100  用户拥有 执行 权限S_IRWXG  00070  同组拥有 读 写 执行 权限S_IRGRP  00040  同组拥有 读 权限S_IWGRP  00020  同组拥有 写 权限S_IXGRP  00010  同组拥有 执行 权限S_IRWXO  00007  其他人拥有 读 写 执行 权限S_IROTH  00004  其他人拥有 读 权限S_IWOTH  00002  其他人拥有 写 权限S_IXOTH  00001  其他人拥有 执行 权限

        可以发现,读写执行权限,是由 + + 执行 而得来的;

        例如用户的 00700,是由 00400 + 00200 + 00100 而得来的。

        例:

                S_IRUSR | S_IWUSR    文件的所有者对该文件可

                (八进制表示法)00600     文件的所有者对该文件可

                多个设置可用 “|” 进行分割。

代码示例:          

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>int main(void) {int fd = 0;char fileName[] = "test.txt";// 读写,如果文件不存在则创建,如果文件存在则报错(O_EXCL);// 设置本用户拥有读写执行权限,同组用户拥有读写权限,其他人拥有读权限// fd = open(fileName, O_RDWR|O_CREAT|O_EXCL, 00764); // 可以使用数字代替参数三fd = open(fileName, O_RDWR|O_CREAT|O_EXCL, S_IRWXU|S_IRGRP|S_IWGRP|S_IROTH);if (-1 == fd) {fprintf(stderr, "open %s fail. reason: %s\n", fileName, strerror(errno));exit(-1);}printf("open %s successful!\n", fileName);// 关闭文件close(fd);return 0;
}

运行结果:

ygt@YGT:~/echo_server/test$ gcc open.c -o open
ygt@YGT:~/echo_server/test$ ./open
open test.txt successful!ygt@YGT:~/echo_server/test$ ll
-rwxrwxr-x 1 ygt  ygt  8945 11月 10 16:02 open*
-rw-rw-r-- 1 ygt  ygt   554 11月 10 16:02 open.c
-rwxrw-r-- 1 ygt  ygt     0 11月 10 16:02 test.txt*

可以看出文件已正确运行!且test.txt的权限也是正确设置的 -rwxrw-r--.

test.txt 文件已经存在,当我们再一次运行 ./open 会怎么样呢?

出现报错了,报错提示“File exists”,文件已经存在了。

因为我们设置了O_EXCL,当文件存在时,他会进行报错处理!

2. write

#include <unistd.h>

ssize_t write (int fd, const void *buf, size_t count);

描述:write()从指向buf的缓冲区向文件描述符fd引用的文件写入count个字节。

fd:

        文件描述符;

buf:

        需要写入的数据;

count

        指定最多写入的大小;

返回值

        成功: 返回写入的字节数

        失败: 返回 -1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看.

描述

        在Linux中,使用命令:man 2 write

注意:是从文件的当前指针位置写入!文件刚打开时,文件的位置指针指向文件头.

代码示例:

#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#define W_LEN   1024int main(void) {int ret = 0;int fd = -1;char fileName[] = "test.txt";char buf[W_LEN] = "这是要写入的内容:Hello write!";// 打开以文件,只写方式打开,不懂00764是什么意思上面open介绍fd = open(fileName, O_WRONLY|O_CREAT|O_EXCL, 00764);if (-1 == fd) {fprintf(stderr, "open %s fail. reason: %s\n", fileName, strerror(errno));exit(-1);}// 往文件中写入数据ret = write(fd, buf, strlen(buf));if(-1 == ret) {fprintf(stderr, "write error. reason: %s\n", strerror(errno));exit(-2);}printf("write successful! write lenght: %d\n", ret);close(fd);return 0;
}

运行结果:

ygt@YGT:~/echo_server/test$ gcc write.c -o write
ygt@YGT:~/echo_server/test$ ./write
write successful! write lenght: 41
ygt@YGT:~/echo_server/test$
ygt@YGT:~/echo_server/test$ cat test.txt
这是要写入的内容:Hello write!ygt @YGT:~/echo_server/test$
ygt@YGT:~/echo_server/test$

3. read

#include <unistd.h>

ssize_t read (int fd, void *buf, size_t count);

描述:read()尝试从文件描述符fd上读取数据放入buf中,读count字节。

fd:

        文件描述符;

buf:

        存储读取到的数据,一般传char *类型或字符数组;

count

        指定最多读取的大小;表示最多能接受的字节数,而不是指一定要读取的字节数;

返回值

        成功: 返回读取到的字节数;如果返回 0,表示文件读完了;

        失败: 返回 -1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看.

描述

        在Linux中,使用命令:man 2 read

注意:是从文件的当前指针位置读取!文件刚打开时,文件的位置指针指向文件头.

代码示例:

#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#define R_LEN   1024int main(void) {int ret = 0;int fd = -1;char fileName[] = "test.txt";char buf[R_LEN] = { '\0' };// 打开以文件,只读方式打开,不懂00764是什么意思上面open介绍fd = open(fileName, O_RDONLY, 00764);if (-1 == fd) {fprintf(stderr, "open %s fail. reason: %s\n", fileName, strerror(errno));exit(-1);}// 从文件中读取数据ret = read(fd, buf, sizeof(buf));if(-1 == ret) {fprintf(stderr, "read error. reason: %s\n", strerror(errno));exit(-2);}printf("read successful! read lenght: %d\n", ret);printf("%s\n", buf);//write(1, buf, strlen(buf));close(fd);return 0;
}

运行结果:

ygt@YGT:~/echo_server/test$ gcc read.c -o read
ygt@YGT:~/echo_server/test$ ./read
read successful! read lenght: 41
这是要写入的内容:Hello write!
ygt@YGT:~/echo_server/test$

4. close

#include <unistd.h>

int close (int fd);

描述:close()关闭一个文件描述符,这样它就不再引用任何文件,可以被重用。

fd:

        文件描述符;

返回值

        成功: 返回 0

        失败: 返回 -1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看.

描述

        在Linux中,使用命令:man 2 close

        终止指定文件描述符与对应文件之间的关联,并释放该文件描述符,即该文件描述符可被重新使用.

当出现错误后,错误形式有三种:

        (1). EBADF          fd不是有效的打开文件描述符;

        (2). EINTR           close()调用被一个信号打断;

        (3). EIO                I/O错误.

代码示例:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>int main(void) {int ret = -1;int fd = 0;char fileName[] = "test.txt";fd = open(fileName, O_RDWR|O_CREAT, 00764);if (-1 == fd) {fprintf(stderr, "open %s fail. reason: %s\n", fileName, strerror(errno));exit(-1);}printf("open %s successful!\n", fileName);// 关闭文件ret = close(fd);if (-1 == ret) {int err = errno;fprintf(stderr, "close error. reason: %s\n", strerror(err));// 错误原因if (EBADF == err) {printf("fd不是有效的打开文件描述符\n");} else if (EINTR == err) {printf("close()调用被一个信号打断\n");} else if (EIO == err) {printf("I/O错误\n");}exit(-2);}printf("close fd successful!\n");return 0;
}

运行结果:

ygt@YGT:~/echo_server/test$ gcc close.c -o close
ygt@YGT:~/echo_server/test$ ./close
open test.txt successful!
close fd successful!
ygt@YGT:~/echo_server/test$

我们模拟将错误的文件描述符传参给close函数 :

        在   ret = close(fd);  这行代码前面加上:fd = -1;

        然后再运行程序运行结果如下:

达到我们的预期!

注意:

        如果在日常的demo中close()之后程序就结束了,那么也就无需对close的返回进行判断了,因为程序结束后,系统会回收所有资源;但是如果是在大型项目中,close之后还有很多其他操作,且文件fd的开销很大时,得进行返回值的判断,否则有可能会造成不必要的资源浪费。例如报错是EINTR,我们可以再一次调用close进行关闭fd!

5. lseek

#include <sys/types.h>
#include <unistd.h>

off_t lseek (int fd, off_t offset, int whence);

描述:移动文件光标偏移。

fd:

        文件描述符;

offset:

        文件指针(光标)移动的大小;往文件头部移动设负数,往文件尾部移动设正数

whence:

        文件指针(光标)移动的依据;

返回值

        成功: 返回 移动后文件指针的所在位置

        失败: 返回 -1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看.

描述

        在Linux中,使用命令:man 2 lseek

        移动文件光标指针在文件的位置,方便read和write操作!

文件指针移动的依据:

        SEEK_SET        相对于文件头部开始偏移;

                例:移动文件指针(光标)到第100个位置处

                sleek(fd, 100, SEEK_SET);        // 直接从开头位置往文件尾部移动100即可

        SEEK_CUR        从当前位置开始偏移;

                例:文件指针已经再100位置了,现在把他移动到80的位置

                sleek(fd, -20, SEEK_CUR);        // 在文件指针当前位置往文件头部移动-20个位置即可

        SEEK_END        相对于文件尾部开始偏移;

                例:文件指针已经再80位置了,现在把他移动到倒数第5个位置

                sleek(fd, -5, SEEK_END);        // 直接在文件尾部往文件头部移动-5个位置即可

代码示例:

需求,移动文件光标到100的位置,然后读取100个字节打印输出。

#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#define R_LEN           1024
#define READ_LEN        100int main(void) {int ret = 0;int fd = -1;char fileName[] = "lseek.c";char buf[R_LEN] = { '\0' };fd = open(fileName, O_RDONLY);if (-1 == fd) {fprintf(stderr, "open %s fail. reason: %s\n", fileName, strerror(errno));exit(-1);}// 从文件头部往文件尾部移动100位置ret = lseek(fd, 100, SEEK_SET);if (-1 == ret) {fprintf(stderr, "lseek error. reason: %s\n", strerror(errno));exit(-2);}// 从文件中读取100个字节ret = read(fd, buf, READ_LEN);if(-1 == ret) {fprintf(stderr, "read error. reason: %s\n", strerror(errno));exit(-3);}printf("read successful! read lenght: %d\n", ret);printf("%s\n", buf);//write(1, buf, strlen(buf));close(fd);return 0;
}

运行结果:

可以通过SEEK_END来获取文件大小

int fileSize = lseek(fd, 0, SEEK_END);

6. chmod

#include <sys/stat.h>

int chmod (const char *path, mode_t mode);
int fchmod (int fd, mode_t mode);

描述:修改文件的权限。

fd:

        文件描述符;

path

        文件路径名;

mode

        修改的文件的权限;

返回值

        成功:返回 0

        失败:-1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看

(1) 描述

        在Linux中,使用命令:man 2 chmod  

        当文件已打开,那么使用fchmod函数,如果文件没打开,那么使用chmod函数。

(2) 参数二 mode (修改的权限

        S_I(R/W/X)(USR/GRP/OTH)

S_IRWXU  00700  用户拥有 读 写 执行 权限S_IRUSR  00400  用户拥有 读 权限S_IWUSR  00200  用户拥有 写 权限S_IXUSR  00100  用户拥有 执行 权限S_IRWXG  00070  同组拥有 读 写 执行 权限S_IRGRP  00040  同组拥有 读 权限S_IWGRP  00020  同组拥有 写 权限S_IXGRP  00010  同组拥有 执行 权限S_IRWXO  00007  其他人拥有 读 写 执行 权限S_IROTH  00004  其他人拥有 读 权限S_IWOTH  00002  其他人拥有 写 权限S_IXOTH  00001  其他人拥有 执行 权限

        可以发现,读写执行权限,是由 + + 执行 而得来的;

        例如用户的 00700,是由 00400 + 00200 + 00100 而得来的。

        例:

                S_IRUSR | S_IWUSR    文件的所有者对该文件可

                (八进制表示法)00600     文件的所有者对该文件可

                多个设置可用 “|” 进行分割。

例:

新建文件 test.txt, 查看其权限:

touch test.txt

可以看到,默认的权限是 读写|读|读

即本用户有 读写 权限,同组其他用户有 读 的权限;其他组用户有 读 的权限。

fchmod:将test.txt文件的权限修改为 执行|执行|执行

#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/stat.h>int main(void) {int ret = 0;int fd = 0;char fileName[1024] = "test.txt";//fd = open(fileName, O_RDWR|O_CREAT|O_EXCL, S_IRWXU|S_IRGRP|S_IWGRP|S_IROTH);fd = open(fileName, O_RDWR, 00764); // 权限:读写执行|读写|读if (-1 == fd) {fprintf(stderr, "open %s fail. reason: %s\n", fileName, strerror(errno));exit(-1);}// 修改文件权限//ret = fchmod(fd, S_IXUSR|S_IXGRP|S_IXOTH);ret = fchmod(fd, 00111);    // 修改权限为:执行|执行|执行if (-1 == ret) {fprintf(stderr, "fchmod %s fail. reason: %s\n", fileName, strerror(errno));exit(-2);}printf("fchmod successful!\n");close(fd);return 0;
}

运行结果:

root@YGT:/home/ygt/echo_server/test# gcc fchmod.c -o fchmod
root@YGT:/home/ygt/echo_server/test# ./fchmod
fchmod successful!
root@YGT:/home/ygt/echo_server/test#
root@YGT:/home/ygt/echo_server/test# ll
---x--x--x 1 root root    0 11月 16 12:04 test.txt*
root@YGT:/home/ygt/echo_server/test#

可以看到,test.txt文件的权限已经被修改为 执行|执行|执行 了,即用户只有 执行 权限,同组的用户也只有 执行 权限,其他组的用户也只有 执行 权限。

chmod:将test.txt文件的权限修改为 读|读|读

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/stat.h>   // chmodint main(void) {int ret = 0;// 修改文件权限//ret = chmod("test.txt", S_IRUSR|S_IRGRP|S_IROTH);ret = chmod("test.txt", 00444);     // 修改权限为:读|读|读if (-1 == ret) {fprintf(stderr, "fchmod %s fail. reason: %s\n", "test.txt", strerror(errno));exit(-1);}printf("fchmod successful!\n");return 0;
}

运行结果:

root@YGT:/home/ygt/echo_server/test# gcc chmod.c -o chmod
root@YGT:/home/ygt/echo_server/test# ./chmod
fchmod successful!
root@YGT:/home/ygt/echo_server/test#
root@YGT:/home/ygt/echo_server/test# ll
-r--r--r-- 1 root root    0 11月 16 12:04 test.txt
root@YGT:/home/ygt/echo_server/test#

可以看到,test.txt文件的权限已经被修改为 读|读|读 了,即用户只有 读 权限,同组的用户也只有 读 权限,其他组的用户也只有 读 权限。

7. sync、syncfs、fsync、fdatasync

Linux同步机制。

简单来讲,使用上面介绍的write后,或者做其他对文件有修改的操作后,需要进行同步,将数据从内核缓冲区写入磁盘;否则如果断电或系统宕机,即使已经调用了write或fwrite函数,数据都还没有写入磁盘。

#include <unistd.h>

1. sync

        void sync(void);

        描述将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束! sync不会执行失败!        

2. syncfs

        int syncfs(int fd);

        描述syncfs()类似于sync(),但只同步包含由打开的文件描述符fd引用的文件的文件系统。

        fd:

                文件描述符;

        返回值

                成功: 返回 0

                失败: 返回 -1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看. 

3. fsync

        int fsync(int fd);        // 推荐使用!

        描述fsync()将文件描述符fd引用的文件(即修改的缓冲区缓存页)的所有修改的内核数据传输(“刷新”)到磁盘设备(或其他永久存储设备),以便即使在系统崩溃或重新启动后也可以检索所有更改的信息。这包括写入磁盘缓存或刷新磁盘缓存(如果存在的话)。他会一直阻塞,直到执行完毕!

        fd:

                文件描述符;

        返回值

                成功: 返回 0

                失败: 返回 -1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看. 

4. fdatasync

        int fdatasync(int fd);

        描述fdatasync()类似于fsync(),但它只影响文件的数据部分。而除数据外,fsync还会同步更新文件的属性。

        fd:

                文件描述符;

        返回值

                成功: 返回 0

                失败: 返回 -1,并且设置错误编号 errno ,可用( strerror(errno) ) 查看. 

使用案例一:C语言 I/O

FILE *fp = NULL;
fp = fopen(filename,"rw" );// 函数int fileno(FILE*stream) 把文件流描述符(fp)转换为文件描述符(fd)
int fd = fileno(fp);char buff[64] = "hello world";
fwrite(buff, sizeof(buff), 1, fp);fflush(fp);
fsync(fd);
fclose(fp);

使用案例二:Linux系统调用

int fd = open(filename, O_RDWR);
char buff[64] = "hello world";write(fd, buff,sizeof(buff));fsync(fd);
close(fd);


三、 Linux 系统调用

根据我个人的理解,系统调用就是调用Linux内核中的函数。

Linux系统中分为 用户空间内核空间

用户空间是我们程序运行所在的空间;

例如,我们的程序中有个open函数,open函数内部会调用函数syscall函数,这个函数就会调用系统内部的sys_open函数,进入内核空间进行相应操作,然后再将相应返回值进行返回;

每执行一次上面介绍的open、write、read等函数,就是再执行一次系统调用!

为什么要有系统调用?

1. 举个例子,我们所用的硬盘有很多品牌,但每个品牌所用的读取写入参数接口函数可能都是不一样的(硬件编码),将用户与底层分离开来,用户只需调用read、write等函数即可对所有类型的硬盘做操作;

2. 为了安全性。分为用户空间和内核空间,用户没法直接对内核空间做操作,确保系统的安全性;

3. 可移植性。不同平台,不同硬件,不同Linux系统他们的内核都差不多,都会有open、write等函数。

系统调用两个关键要素:

1. 系统调用号

        每个系统调用被赋予一个系统调用号,与具体的系统调用相关联。

        

2. 系统调用表

        内核维护系统调用表,保存系统调用函数的起始地址,系统调用号对应系统调用在调用表中的偏移量。

        

系统调用会影响效率嘛?

        频繁使用底层系统调用会影响程序的执行效率。

        因为频繁的从用户空间去到内核空间去访问,然后再返回到用户空间去继续执行,会有消耗。

例:

两个程序:写一个1G的文件,定义数组buf,大小为2048和16,循环每次往数组写入2048和16字节大小,比较两次所耗费的时间。

#define W_LEN           16
#define W_LEN           2048

循环次数:

一个程序写入次数:(1024*1024*1000) / 16 == 65,536,000 次

一个程序写入次数:(1024*1024*1000) / 2048 == 512,000 次


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>//#define W_LEN           16
#define W_LEN           2048
#define FILE_SIZE       (1024*1024*1000)int main(void) {int ret = 0;int fd = -1;char fileName[] = "test.txt";char buf[W_LEN];// 打开以文件,只写方式打开,不懂00764是什么意思上面open介绍fd = open(fileName, O_WRONLY|O_CREAT|O_EXCL, 00764);if (-1 == fd) {fprintf(stderr, "open %s fail. reason: %s\n", fileName, strerror(errno));exit(-1);}memset(buf, '6', sizeof(buf));int count = FILE_SIZE / sizeof(buf);    // 次数int i = 0;for (; i < count; i++) {// 往文件中写入数据ret = write(fd, buf, strlen(buf));if(-1 == ret) {fprintf(stderr, "write error. reason: %s\n", strerror(errno));exit(-2);}}printf("write successful!\n");close(fd);return 0;
}

运行程序,通过上面所介绍的,使用time参数去显示程序运行所耗费的时间:

gcc systemCall_2048.c -o systemCall_2048      // #define W_LEN    2048gcc systemCall_2048.c -o systemCall_16        // #define W_LEN    16

可以看出,系统调用执行的次数越多,所耗费的时间就越长;所以,以此证明,多次执行系统调用是会耗费资源的

那如何解决这样的问题呢?

尽可能少调用系统接口,能一次搞定的避免多次!
另外,网上说,如果
多调用GLIBC库 和 GLIB

反正不会的话,就直接用C语言的 I/O 文件操作函数即可,即fopen、fwrite、fread等这类函数!


四、总结

Linux操作文件的函数已经介绍完毕。

我们学会的同时也要注意系统调用带来的后果,只要有了这方面的意识,在写C/C++代码时,就会注意到,就不会写出效率慢的代码。

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

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

WebAssembly — 概览

文章目录什么是 WebAssemblyWebAssembly 标准发展JavaScript 的缺点WebAssembly 特点WebAssembly 关键概念什么是 WebAssembly WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilatio…...

bios刷写工具_蓝天P750/P751编程器刷BIOS

神舟ZX8-SP7是蓝天P751DM2模具&#xff0c;今天在WIN下刷BIOS成功刷黑&#xff0c;开始使用编程器刷BIOS&#xff0c;笔记本BIOS芯片由于是焊在主板上必须用夹子或者脱焊后用烧录座刷写&#xff0c;所以需要买编程器夹子。工具&#xff1a;优硕EZP-XPRO V2、优硕SOP8编程器夹子…...

计算机英语教程第五版答案解析,计算机专业英语教程(第5版)翻译完整版

本人经过多次整理,将很多翻译的文档综合成目前我认为 是比较全的文档贡献给大家,同时我提醒各位在课本上也附录了许多翻译,不要忘记查看呀图3-1 为建立对象而组合的数据域和方法典型地&#xff0c;一个对象的描述是一个C类的一部分&#xff0c;且包括对该对象内部结构的描述、该…...

#2021牛客暑假多校3_J.Counting Triangles_正难则反

J.Counting Triangles 题目传送门&#xff1a; J 题面&#xff1a; 一句话&#xff1a; 给一个 n(n<8000) 个顶点的图&#xff0c;每两个顶点边颜色为黑或白&#xff0c;求三个顶点组成的三角形边颜色相同的个数。 正难则反&#xff01;&#xff01;&#xff01;&#x…...

Spotfire中文教程

Spotfire中文教程的网址 可能需要翻墙使用&#xff0c;官网直接翻译中文教程...

python学习有哪些方向可以选择_学习python就业方向都有哪些?

百战程序员IT问题专业解答Python作为一种程序开发语言&#xff0c;近年来确实很火&#xff0c;很多企业也都在招聘这样的人才。那么这类Python人才都是具体做什么工作&#xff0c;解决企业什么问题的呢&#xff1f;1、web网站开发Python是一种全栈语言&#xff0c;前后端都可以…...

java微信授权实现

1.获取用户code Autowired private RedisTemplate<String, String> redisTemplate;/*** 用户同意授权&#xff0c;获取code** return java.lang.String* date 2022/2/15**/ Override public void wxAuthorizeUrl(String redirectUri, HttpServletResponse response) {S…...

mysql2008使用教程_sqlserver2008简单使用教程

本文为大家分享了SQL Server2008R2简单使用教程&#xff0c;小编今日就带来了sqlserver2008简单使用教程&#xff0c;一起好好学习下吧!&#xff0c;具体内容如下sqlserver2008简单使用教程1 首先找到开始菜单中相关内容;如下图;安装的组件不同可能有所不同;我的电脑中包括如下…...

E49AL刷BIOS

E49AL是个老机机型了&#xff0c;坏了也不好修&#xff0c;官方压根没发布过配套的BIOS。。。不过好在这个机器和K29的配置很近似&#xff0c;所以可以刷K29的BIOS (别问我咋知道的&#xff0c;mmp的各大论坛E49的bios都要钱&#xff0c;好不容易找到个1.66版的结果因为之前没关…...

Symfony 控制台命令教程

Symfony 控制台命令教程介绍了如何在 Symfony 中创建控制台命令。 我们将在控制台应用中创建几个命令。 Symfony Symfony 是一组可重用的 PHP 组件和一个用于 Web 项目的 PHP 框架。 Symfony 于 2005 年发布为免费软件。Symfony 的原始作者是 Fabien Potencier。 Symfony 受到…...

这位毁誉参半的政治名嘴,竟然彻底改变了计算机编程

喜欢他的人把他奉为“美国的道德良心”&#xff0c;黑暗中的灯塔。厌恶他的人骂他是疯子&#xff0c;向他发送不计其数的死亡威胁。他所到之处&#xff0c;经常是鲜花与臭鸡蛋齐飞。他是语言学的大师&#xff0c;但是却永远地改变了计算机行业。 他就是Noam Chomsky&#xff08…...

网管必看的好东东(十二)

解决NTFS下Win2000密码丢失 第一步&#xff0c;网站下载NTFSDOS Professional软件(下载地址&#xff1a;[url]http://www.winternals.com[/url])&#xff0c;下载后进行安装&#xff0c;安装后执行NTFSDOS Professional Boot Disk Wizard程序&#xff0c;根据向导&#xff0c…...

模糊聚类

基本概念&#xff1a; 聚类分析是多元统计分析的一种&#xff0c;也是无监督模式识别的一个重要分支&#xff0c;在模式分类 图像处理和模糊规则处理等众多领域中获得最广泛的应用。它把一个没有类别标记的样本按照某种准则划分为若干子集&#xff0c;使相似的样本尽可能归于一…...

Win7系统网络适配器不见了的解决办法

有时候在使用Win7电脑的时候&#xff0c;突然发现网络适配器不见了&#xff0c;这时候应该怎么呢?下面就好小编一起来看看有什么解决办法吧。有需要的朋友快来看看Win7系统网络适配器不见了的解决办法吧。 Win7系统网络适配器不见了的解决办法 方法一 右击桌面“网络”图标…...

visio如何开启开发工具功能

在使用visio进行绘图时&#xff0c;有时候需要对多个图形进行一些运算操作。但是开发工具选项没有看到&#xff0c;如下&#xff1a; 那么&#xff0c;我们怎么可以找到开发工具呢&#xff1f; 1. 进入 文件 选项 2. 选择 选项 并进入 3.进入选项后&#xff0c;把 开发工具 选…...

20221108 今天的世界发生了什么

///辛选智能云仓首次投入使用 辛选在广州、杭州已有两个智能云仓。辛选智能云仓峰值发货能力累计可达120万单/天&#xff0c;峰值吞吐量1.2亿件/月&#xff0c;平均存货周转天数为20天 ///默沙东与国药控股就抗新冠病毒口服药物达成在华经销协议 这是继今年9月底默沙东与国药…...

spring的bean实例生成疑问

背景 RedisFactoryBean作为一个FactoryBean&#xff0c;用来生成访问redis用的client&#xff0c;可以是主从模式的&#xff0c;也可以是集群模式的。 疑问 如果一个项目里同时配置了redisClient 和redisClusterClient, 那么它们的工厂类RedisFactoryBean 实例会一样吗&…...

gimp中文版教程_GIMP中文详细教程.pdf

GIMP中文详细教程GIMP 实用系列教程 1文件的打开和存储概述打开GIMP软件其初始界面如下&#xff1a;左边是工具 &#xff0c;工具箱中每选择一种工具后&#xff0c;通常在其下部会出现一个与其相配的选项栏一起使用的。因此每选好一种工具&#xff0c;首先要把选项栏中的有关选…...

innerHTML与innerText区别

功能介绍&#xff1a; innerHTML&#xff1a; 设置或获取元素内的所有子节点&#xff08;包括标签、注释和文本节点&#xff09; outerHTML&#xff1a; 设置或获取元素及所有子节点&#xff08;包括标签、注释和文本节点&#xff09; innerText&#xff1a; 获取元素的文本&…...

分分钟开发一个网站——Python Django快速教程

一、开发环境配置 1、python安装 官网下载安装 https://www.python.org版本 3.10.4环境变量配置 系统变量-path 添加:D:\soft\python310\python.exeD:\soft\python310\ScriptsVS Code修改python解释器 2、Django安装 python -m pip install Django版本 4.0.3 3、mysql安装…...

【Java】正则表达式的使用以及解析XML

目录正则部分定义举例Java正则部分单子字符串提取数据多子字符串提取数据在日常使用正则表达式的时候&#xff0c;常常就是直接百度匹配这个字符串的正则表达式。正则表达式的规则还是比较多的&#xff0c;一段时间不用就容易忘了。这里就不得不提及两个非常通用的匹配方法 贪婪…...

innerHTML和innerText的用法和区别

文章目录前言一、innerHTML 和 innerText是什么&#xff1f;二、使用步骤1.innerHTML简单示例2.innerText简单示例总结前言 在学习JavaScript的过程中&#xff0c;不可避免的要使用到dom操作&#xff0c;那么这里来讲一讲HTML DOM innerHTML 和 innerText 使用与区别 提示&…...

公共命名空间和unicode

公共命名空间和unicode&#xff0c;它们两个有关联&#xff0c;在电脑上显示字符&#xff0c;要分两步走&#xff1a;字符集和字体。在互联网诞生之前&#xff0c;各国都是使用自己的字符集&#xff0c;后来&#xff0c;出现了unicode&#xff0c;这是包含所有字符的字符集。不…...

我坦白→低代码功能我有,SQL练习题、数据可视化、数据填充助你高效

简介 今天勇哥看了一下群里的聊天信息&#xff0c;大家都在说低代码平台&#xff0c;见大家对于低代码这么热衷的情况下&#xff0c;勇哥也不藏着掖着了&#xff0c;先放几个低代码功能出来&#xff0c;给大家玩一玩&#xff0c;更多的功能敬请期待。 帮勇哥投个票&#xff1…...

python操作sql数据库

python操作sql数据库 查询数据库&#xff0c;把数据写入csv文件 import pymysql import csvif __name__ "__main__":QUERY SELECT id, image_path, label FROM tabel_name WHERE version in(select version from tlabel_name where version3) and plate_status1c…...

目前降噪效果最好的耳机,十大降噪蓝牙耳机排名

蓝牙耳机已经成为大家生活中不可或缺的一件实用物品了&#xff0c;我们使用耳机的时间也是日益增加&#xff0c;不少人通勤时间使用耳机听歌&#xff0c;下班回家打游戏看剧时也会经常使用到耳机&#xff0c;甚至运动时也是需要耳机傍身的。蓝牙耳机虽多&#xff0c;但想要身临…...

Error Code: 1414. OUT or INOUT argument 2 for routine company.new_procedure is not a variable or NEW

mysql存储过程参数传递问题&#xff1a; 解决&#xff1a;https://blog.csdn.net/yhl_jxy/article/details/52296546...

网络调试助手

1.配置 安装网络调试助手调试网络--->检测网络是否连通&#xff0c;虚拟机改网络连接方式为网络地址转换&#xff08;NAT&#xff09;2.发送--->调试助手接收 配置 from socket import *s socket(AF_INET,SOCK_DGRAM)# 创建一个udp的套接字s.sendto("发送成功了&q…...

innerHTML和innerText区别

目录 1 总结 2 读取html中元素 3 在设置html元素的时候 1 总结 innnerHTML用来获取标签元素或设置标签元素&#xff0c;包含文本和Html标签。在读取元素的时候&#xff0c;会将文本和Html标签一起读取出来&#xff1b;在设置元素的时候&#xff0c;会覆盖掉原来的元素中文…...

Spring4 升级 spring5, Hibernate4 升级 Hibernate5 相关问题总结以及修改注意点

场景 项目主体框架使用 spring4 以及 Hibernate4, 由于spring 升级到 5的大版本&#xff0c;附带的 Hibernate 也将被强迫升级 改动注意点 升级后主要改动点如下&#xff1a; Hibernate 事务管理对象变更 若存在配置文件 applicationContext.xml 则修改如下&#xff1a; 原…...

vega56刷64_Vega56显卡怎么刷Bios VEGA56显卡刷Vega64方法

刷Bios很多人都不会陌生&#xff0c;一起是主板刷Bios也比较常见。但最近网上有大神玩起了显卡刷Bios&#xff0c;成功将Vega56显卡Bios刷成了RX VEGA 64的Bios&#xff0c;显卡性能提升超过了10%。那么&#xff0c;Vega56怎么刷Bios呢&#xff1f;下面小编带来VEGA56显卡刷Veg…...

快速复制蜜芽商城多个商品主图及细节图保存

蜜芽一个专业母婴特卖的商品&#xff0c;很多个问商城里的商品图片可以复制保存到吗&#xff1f;怎样可以同时多个商品图片一起复制保存呢&#xff1f;下面来看看用下图高手复制保存的方法。一起来试试。 在电脑浏览器上打开蜜芽商城&#xff0c;搜索并开始挑选商品 需要哪个商…...

sklearn 1.0.1官方文档教程

官网地址&#xff1a;1.1. Linear Models — scikit-learn 1.0.1 documentationhttps://scikit-learn.org/stable/modules/linear_model.html 1.1. Linear Models — scikit-learn 1.0.1 documentationhttps://scikit-learn.org/stable/modules/linear_model.html...

5000年不识N外自然数使世人被假N迷惑几百年 ——百年病态集论的症结

5000年不识N外自然数使世人被假N迷惑几百年 ——百年病态集论的症结 黄小宁&#xff08;通讯&#xff1a;广州市华南师大南区9-303 邮编510631&#xff09; [摘要]初等几何最最起码常识:图AA≌A和判断两点集是否≌的全新方法&#xff0c;让几何学有史2300多年来一直未能识的伪≌…...

利用Java处理图片,更换背景

这个是网上一个大牛想到的方法&#xff0c;独特的见解&#xff0c;适用于给证件照换背景&#xff0c;即颜色RGB值在一个范围内的图像处理&#xff0c;稍加修改&#xff0c;可以适用于一切需要更换背景的情况&#xff0c;可以利用NetBeans设计一个UI&#xff0c;然后写成一个小程…...

音质好的蓝牙耳机有哪几款?公认音质好的蓝牙耳机

在市场经济的指挥棒下&#xff0c;真无线蓝牙耳机品牌已经是遍地开花&#xff0c;已经从红海演变为血海&#xff0c;其中大品牌也不计其数&#xff0c;但能留下记忆点的产品实在不多。当然这其中并不缺少为了占坑而滥竽充数的选手&#xff0c;但个别品牌却依旧坚持着“宁缺毋滥…...

网管必看的好东东(十一)

多系统安装首先在BIOS中设置系统启动顺序为“光盘优先启动”&#xff0c;然后把Win98安装光盘放入光驱&#xff0c;启动电脑进行安装。在“选择Windows 98的安装目录”窗口上选择“其他目录”&#xff0c;并指定为“E:\WINDOWS”&#xff0c;然后按常规方法完成安装。恢复多系统…...

怎样才能在技术领域走的更远?

关注汽车工程师谈技术&#xff0c;一起学习技术 今天和大家一起聊聊怎样才能在技术领域走的更远。我个人觉得有以下几点是很重要的&#xff1a; 扎实的专业技能和求知欲望 学好英语 好的职业规划以及适当的跳槽 1、扎实的专业技能和求知欲望 对于一个嵌入式软件工程师而言&…...

餐饮智能化:餐饮机器人正当时餐饮机器人的喜与忧

科技改变生活。随着科技的发展与进步&#xff0c;人们的日常生活相较于之前发生了翻天覆地的变化&#xff0c;比如手机支付、扫地机器人等功能或产品的应用&#xff0c;就为人们带来了极大的便利。而随着科技逐渐深入千行百业&#xff0c;越来越多的行业也进入了新的发展阶段&a…...

Python中如何输出换行?

Python中如何输出换行?在Python中&#xff0c;输出换行可以使用的方法有两种&#xff0c;分别是用转义符号或使用print&#xff0c;接下来我们通过这篇文章为大家详细的讲解一下。 方法1&#xff1a;用转义符号 str3 "老男孩教育\n" str4 "帮助有志向的年轻人…...

java中如何定义一个数组

数组的定义方法 //定义一个空数组&#xff0c; int[] anull; int[] a{}; int[] anew int[0]; 注意&#xff1a;空数组没有空间&#xff0c;不能赋值&#xff01;只能把另一个数组的地址给他&#xff0c;这里指的是指针。如a[0]4;是不成立的&#xff0c;空数组没有空间存放。…...

HTML innerText

1、js中innerHTML的用法&#xff1a; innerHTML可获取或设置指定元素标签内的 html内容&#xff0c;从该元素标签的起始位置到终止位置的全部内容(包含html标签)。 获取元素的内容&#xff1a;element.innerHTML; 给元素设置内容&#xff1a;element.innerHTML htmlString; …...

Java多用户商城系统B2B2C源码

最近公司要搞商城&#xff0c;让我多方咨询&#xff0c;最后看了很多&#xff0c;要不就是代码、表字段注释不全&#xff0c;要不就是bug多&#xff0c;要么就是文档缺少&#xff0c;最后决定自己开发一套商城。 下面是开发的一些心得体会&#xff0c;权且记录下来&#xff0c…...

JS中的number和string

JavaScript基础语法 来源&#xff1a;现代JavaScript教程 第三部分 Number类型和String类型 原始类型和对象之间的区别&#xff1a; 在 JavaScript 中有 7 种原始类型&#xff1a;string&#xff0c;number&#xff0c;bigint&#xff0c;boolean&#xff0c;symbol&#x…...

华硕主板怎么刷bios

华硕主板怎么刷bios?这是很多使用华硕主板的小伙伴们心中的疑问&#xff0c;一般情况下小编不建议大家私自刷bios&#xff0c;尤其是没有经验的小白&#xff0c;但如果有些朋友真的需要给华硕主板刷bios的话&#xff0c;下面快启动小编就跟大家介绍一下操作方法。 华硕主板怎么…...

微信如何添加企业微信信息服务器地址,企业微信怎么添加管理员 设置方法介绍...

企业微信是很多小伙伴在日常工作中都会使用到的一款办公软件&#xff0c;它可以有效的提高团队的交流效率&#xff0c;让大家的办公更加简单高效&#xff0c;不少小伙伴都会在软件中设置多位管理员来协助自己管理企业&#xff0c;提高企业的管理效率促进企业发展&#xff0c;但…...

顶级React开发工具

每个框架都有一套独特的工具&#xff0c;可以在其开发过程中无缝工作。如果你选择了 Reactjs 作为你的主要开发框架&#xff0c;那么你将拥有多样化的工具和选项。 在这篇文章中&#xff0c;我们将深入研究不同的 React 开发工具&#xff0c;这些工具使 Reactjs 成为大多数公司…...

日期计算C语言

用C语言计算日期可实现日期加减 #include"stdio.h" #include <stdlib.h> //闰年判定 int year_judge(int year){int leap;if(year%4000||(year%40&&year%100!0)){leap 1;}else{leap 0;}return leap; } //时间累加运算 int time_add(int x,int y,i…...

零基础小白也能做测试经理(高级测试工程师)?!

第1步&#xff1a;大学 遥记得那是02年自己跨进了大学校园&#xff0c;开始了自己的大学之旅。大学选择专业时自己并未听从家长的建议依然选择了当时仍然很潮流的计算机&#xff08;计算机科学与技术&#xff09;。后来事实证明自己选择计算机是盲目的&#xff0c;跟随潮流的&a…...

推荐八个实用的查询类网站,实用干货!

推荐实用干货&#xff0c;查资料查信息&#xff0c;这八个网站适合你。 一、中国知网 https://www.cnki.net/ 国内最大的文献数据库平台要数中国知网&#xff0c;凭借优质的内容资源、领先的技术和专业的服务&#xff0c;在业界享有高声誉。知网的首页提供文献检索、知识元检索…...

html正方形边框,详解HTML设置边框的三种方式

HTML设置边框的三种方式border-width: 1px 2px 2px;border-style: solid dashed dotted;border-color:red green blue;/*分别为 上→左右→下 边框设置*/1、边框的组成:border: 1px solid #fff参数&#xff1a;第一个是边框的粗细 1px第二个是边框的样式 solid 实线 dashed …...

jquery怎样移除所选节点下的所有子节点

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content"i...

高等数学(第七版)同济大学 习题12-1 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题12-1 1.写出下列级数的前五项&#xff1a;\begin{aligned}&1. \ 写出下列级数的前五项&#xff1a;&\end{aligned}​1. 写出下列级数的前五项&#xff1a;​​ (1)∑n1∞1n1n2&#xff1b; (2)…...

Opencv特征点检测

前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 FASTSURFORBBRISKKAZEAKAZEMESRGFTT good feature to tackBob斑点STARAGAST接下来分别讲述这是…...

python 教程英语版_Python基础教程第3版 英文原版pdf

资源名称&#xff1a;Python基础教程第3版 英文原版pdfMagnus Lie Hetland又更新他的 “Beginning Python From Novice to Professional”了&#xff0c;该书为第三版英文&#xff0c;基于Python3.5进行讲解&#xff0c;紧跟技术潮流。希望对Python爱好者有所帮助。这是Python…...

云原生之使用docker部署Ansible管理平台Ansible Semaphore

云原生之使用docker部署Ansible管理平台Ansible Semaphore 一、Ansible Semaphore介绍二、检查本地docker环境1.检查docker版本2.检查docker状态3.检查docker compose版本三、下载semaphore镜像四、编辑docker-compose.yaml文件1.创建数据目录2.编辑docker-compose.yaml文件五、…...

【java设计模式 】类图表示、软件设计原则

&#x1f370; 个人主页:__Aurora__ &#x1f35e;如果文章有什么需要改进的地方还请各位大佬指正。 &#x1f349;如果我的文章对你有帮助➡️ 关注&#x1f64f;&#x1f3fb; 点赞&#x1f44d; 收藏⭐️ 1、设计模式概述&#x1f525; 1.1软件设计模式的产生背景 设计模式…...

科学计算模型 Numpy 详解

本文主要介绍Numpy&#xff0c;并试图对其进行一个详尽的介绍。 通过阅读本文&#xff0c;你可以&#xff1a; 了解什么是 Numpy掌握如何使 Numpy 操作数组&#xff0c;如创建数组、改变数组的维度、拼接和分隔数组等掌握 Numpy 的常用函数&#xff0c;如数组存取函数、加权平均…...

容器 - stack栈

栈是后进先出LIFO&#xff08;last in first out&#xff09;的线性表。栈的表尾称为栈顶&#xff08;top&#xff09;&#xff0c;表头称为栈底&#xff08;bottom&#xff09;&#xff0c;不含元素的空表称为空栈。栈定义在<stack>头文件中。 栈类成员函数原型 //----…...

国庆集训1012(未完成)

周 (week) 【题目描述&#xff08;删减版&#xff09;】 退役之后,liuliuliu_rundarundarunda决定以周为单位安排文化课和OIOIOI的学习.距离他退役还有NNN周. OIOIOI水平LevelOILevelOILevelOI和文化课水平LevelWHKLevelWHKLevelWHK都是一个整数,而LevelZSLevelOI∗LevelWHKL…...

windows10 宽带或者无线连接校园网都出错,如何解决

首先&#xff0c;Win10 校园网连不上无线&#xff0c;解决方法 1.打开计算机管理 2.找到网络适配器 3.卸载WAN 含IP的Miniport,然后重启电脑即可。 其次&#xff0c;Win10 校园网连不上宽带&#xff0c;解决方法&#xff1a; 重复上述1,2步骤&#xff0c;第三步一般只需将箭头…...

连接校园网没有弹出登录界面或者连接手机热点上不了网

出现这种情况时&#xff0c;可以尝试下面的步骤&#xff1a; 1.打开控制面板&#xff0c;找到网络和Internet&#xff0c;并单击打开 2.点击网络和共享中心&#xff0c;在左边找到更改适配器设置 3.选择出现问题的网络&#xff0c;单击右键选择属性&#xff0c;然后出现下面…...

主机连接校园网,ubuntu虚拟机桥接模式上不了网

桥接模式不支持校园网 别的网络连不上网可能是配置没配好&#xff0c;在那个虚拟网络编辑器里&#xff0c;更改设置&#xff0c;把显卡类型更改好...

解决“手机能胜场使用校园网 笔记本电脑连接不上校园网或者连接上不可用”的问题

问题描述: 笔者手机能正常连接校园网&#xff0c;但是笔记本连接上之后大概有几秒能用的时间&#xff0c;之后直接断开&#xff0c;要么就是直接显示无网络&#xff0c;重置网络、重启操作都使用了&#xff0c;但是均没有用 解决方案&#xff1a; 1、右键wifi图标&#xff0c;打…...

校园网连接不上

一般来说&#xff0c;打开IE浏览器会自动跳出校园网登录界面&#xff0c;如果你的没有跳出界面&#xff0c;可以参考link来将Internet协议版本4&#xff08;TCP/IPv4&#xff09;属性改成自动的&#xff0c;下面说一下如果点击自动获取地址提示错误怎么办 1、以管理员身份打开…...

win10无法连接校园网问题

问题描述 连接不上校园网&#xff0c;但是热点等其他无线照连不误&#xff0c;存在情况如下&#xff1a;可以连接上校园无线但是刷不出来登陆界面&#xff0c;一直显示WiFi无效。 解决方法 重启自动设置ip地址 具体操作如下&#xff1a; 控制面板→网络和Internet→网络和…...

Win11怎么连接上校园网?

最近许多用户都升级了最新的Windows11操作系统&#xff0c;但是部分用户在校园使用的时候连接校园网却发现连不上&#xff0c;这是怎么一回事&#xff0c;大家都知道win11系统校园网的连接但发现连接不上&#xff0c;遇到这种问题应该怎么解决呢&#xff1f;下面小编就带着大家…...

虚拟机桥接模式怎么都连不上网(桥接模式下不能连校园网)

虚拟机桥接失败的坑——桥接模式下不能连校园网 问题描述 这天下午&#xff0c;我在将树莓派采集到的图片拷贝到虚拟机Ubuntu上的时候&#xff0c;发现用NAT模式根本ping不通虚拟机。所以就想配个桥接模式嘛…然后就陷入了一个坑——折腾了四个多小时的坑。。。 搞了半天&…...

校园网连不上ipv6问题

问题描述 下东西&#xff0c;很奇怪的是&#xff0c;之前一直都可以连上&#xff0c;但是突然就被告知缺少ipv6地址。 检查设置发现&#xff0c;ipv6默认设置为dhcp&#xff0c;同时ipconfig&#xff0c;只有一个本地链接IPv6地址。 这个ipv6地址fe80开头&#xff0c;只能…...

Linux连不上校园网怎么办?

原本&#xff0c;在我们学校我只要连上WiFi打开浏览器&#xff0c; 它就会自动重定向到校园网登录的界面。但是今天浏览器并没有自己打开登录页面&#xff0c;一直在加载。于是我想直接登录路由器&#xff0c;在地址栏输入192.168.0.1&#xff0c;结果它反而打开了校园网登录界…...

解决vscode卸载不干净,导致重启恢复原样

方法一&#xff1a; 找到个人文件夹中的.vscode文件夹&#xff0c;里面包含了extensions和argv.json&#xff0c;extensions为之前安装的插件&#xff0c;argv.json为配置信息&#xff0c;想要卸载干净&#xff0c;删除两个即可。 方法二&#xff1a;原理同方法一 1.win r 打…...

关于地图marker点击切换icon以及上一个icon恢复原样

<!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"/><meta name"viewport" content"initial-scale1.0, user-scalableno"/><style type"text/c...

简简单单一行代码实现textarea内容原样输出,与微博展示效果类似

写在最前 最近在做一个项目&#xff0c;碰到一个问题&#xff0c;其应用场景十分常见&#xff0c;类似于发微博的效果。 问题 比如我在编辑时&#xff1a; 在内容编辑时&#xff0c;使用简单的 <textarea> 进行内容的获取&#xff0c;其中添加分段、空格等样式。 需…...

个人总结:京东技术体系员工级别划分及薪资区间

管理层级 序列层级职衔对应T序薪资区间&#xff08;技术&#xff09;M5CXO————M5VP————M4-3高级总监————M4-2总监T540-50kM4-1副总监T535-45kM3高级经理T4-230-40kM2-2经理T4-125-35kM2-1副经理T3-220-30kM1主管T3-115-25k技术层级序列层级职衔对应M序薪资区间&am…...

刘强东发布京东全员信:2000+位高管降薪,公司出资 100 亿提升 54 万员工福利!

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 继 2022 年 4 月刘强东正式卸任京东 CEO 后&#xff0c;“刘强东”这个名字&#xff0c;似乎已经很少再跟“京东”一起上过热搜了。 但正如我们当时的报道所说&#xff0c;刘强东的卸任并不意味着隐…...

,美团3.3对标阿里P9?京东T8对标P8?这份职级薪资对标 准吗?

对于初入互联网行业的新人来说&#xff0c;经常懵逼于各大公司的职级系统&#xff1f;坊间对各大公司内部的职级、文化、体系等关注度一直很高&#xff0c;但各方因保密协议的约束&#xff0c;网上这类的知识却少之又少&#xff0c;大多也只停留在听说这个阶段。什么阿里的p7&a…...

刘强东给京东高管降薪:2千多位总监兄弟工资打8折!并拿出100亿保障”兄弟“基础住房...

发自 凹非寺 来自&#xff1a;量子位 | 公众号 QbitAI京东刘强东&#xff0c;一封全员内部信迅速火上热搜。一是给2000多位高管兄弟降薪&#xff1a;京东副总监以上级别全体高管&#xff0c;降薪10%-20%不等。而且职位越高降得越多&#xff0c;2023年1月开始执行。二是公司掏钱…...

Java程序员工作7年,做过阿里、腾讯、京东架构师,经验分享

前天下午5点多&#xff0c;收到P君信息&#xff0c;如下图左边&#xff0c;他说决定去一家半国企性质的公司&#xff0c;当天收到offer&#xff0c;当天提离职申请。 P君是我在猎豹移动的前同事。第一次见他是面试现场&#xff0c;他是二面官&#xff0c;我是被面试者。 因为都…...

2020互联网大厂的薪资职级一览

对于企业和HR来说&#xff0c;大厂的职级规则也是整个行业的标杆&#xff0c;从中小微企业到大型企业&#xff0c;大家都希望能在其中找到可以参考和学习的地方。今天帮大家整理了一份薪资、职级、考核、晋升条件资料&#xff0c;包含阿里巴巴、腾讯、百度、字节跳动、华为、京…...

京东是如何管人的(刘强东)

各位朋友&#xff0c;大家下午好&#xff01; 我最讨厌讲的是心灵鸡汤&#xff0c;所以今天不会跟大家讲任何的心灵鸡汤&#xff0c;特别是创业鼓励的话。作为创业者&#xff0c;如果你的激情需要来自于别人的鼓励的话&#xff0c;我认为是很可怕的。激情永远是来源于自己&…...

大数据专业来袭!前京东大学大数据院长亲自为你授课!

当下&#xff0c;人工智能、大数据等热门词汇频频出现在人们的视野中。作为万物分析的大数据更是站在互联网的风口浪尖上&#xff0c;直接催热了大学里的大数据专业。 从IT时代进入DT&#xff08;Data technology 数据处理&#xff09;时代&#xff0c;高校在大数据方向上设置了…...

刘强东开课:京东管人只用四张表

刘强东开课&#xff1a;京东管人只用四张表 3月31日&#xff0c;京东股权众筹业务正式上线。京东集团首席执行官刘强东出席了活动&#xff0c;并携手沈南鹏、徐小平、包凡等投资界大佬发起了“京东众创学院”。众创学院定位于促进大众创业、万众创新&#xff0c;面向创业者提供…...

中国首善刘强东出手了!给京东高管降薪,给普通员工提高福利!并拿出100亿保障”兄弟“基础住房...

发自 凹非寺 来自&#xff1a;量子位 | 公众号 QbitAI京东刘强东&#xff0c;一封全员内部信迅速火上热搜。刘强东过去一年共捐赠 149 亿元&#xff0c;首次成为“中国首善”&#xff0c;其主要捐赠项目为教育和环保事业。这慈善榜一揭晓&#xff0c;大家都纷纷给他点赞叫好。东…...

花三个月吃透京东T8推荐的178页京东基础架构建设之路,入职定T5

前言 蓦然回首自己做开发已经十年了&#xff0c;这十年中我获得了很多&#xff0c;技术能力、培训、出国、大公司的经历&#xff0c;还有很多很好的朋友。但再仔细一想&#xff0c;这十年中我至少浪费了五年时间&#xff0c;这五年可以足够让自己成长为一个优秀的程序员&#…...

用 java实现双色球号码生成系统;(在装满33个红色球池中连续抽取6个红球; 在一个装满16颗球的蓝色球池中抽取1个蓝球。)

用实际抓球实现&#xff08;模仿现实变量&#xff09; public class TestLottery1 {/*双色球号码生成算法一&#xff1a;模仿现实情况&#xff0c;在一个装满33个球的球池中连续抽取6个红球&#xff1b;在一个装满16颗球的球池中抽取1个蓝球。*/public static void main(Strin…...

Java实现双色球的小玩法(包含产生中奖号码、用户选号和号码对奖)

import java.util.Random; import java.util.Scanner; public class Slyj {public static void main(String[] args) {Random ss new Random();int[] a randomCommon(1, 33, 7); //调用randomCommon方法随机获得7个1-33不重复的中奖球号码if (a null) throw new AssertionEr…...

mysql实现号码池_一个简易的 MySQL 连接池实现

Mysql连接池就是存储一堆 MySQL 连接的池子。现在现成的 MySQL 连接池第三方jar应该有很多&#xff0c;但是有时候我们在项目中只是需要简单的用一下连接池去跑大量数据&#xff0c;比如在跑 batch 任务的时候&#xff0c;可能就不想去引入第三方 jar 包&#xff0c;于是我自己…...

python高级进阶_19_快速理解python进程池(pool)

在前面的博客我也写了什么是池子&#xff0c; 池子就是里面的东西给你准备好了&#xff0c;你直接用就行了&#xff0c;相当于缓存。 进程池也是创建进程的&#xff0c; 和前面 Process 类&#xff0c;Process 子类差别很大&#xff0c; 进程池 可以一次创建多个进程&#xf…...

java课程项目之幸运观众手机号码抽取器

一、 大型实验的内容 开发一个简单的幸运观众手机号码抽取程序&#xff0c;要求在理解Java多线程原理基础上&#xff0c;设定简单的抽取人数、获奖等级等参数后&#xff0c;能随机抽取存在文本文件中&#xff08;每行放一个手机号和归属地&#xff09;的若干个观众手机号…...

无序唯一ID生成算法

最近遇到一个需要生成无序唯一ID的问题&#xff0c;虽然只是个小问题&#xff0c;也花了一些时间思考&#xff0c;因此记录一下。以下介绍几种方法。 一、直接生成随机数 1. GUID 这个方法应该最容易想到&#xff0c;GUID就是一个利用随机算法生成的128bit的随机数&#xff…...

Springboot项目调用阿里云号码隐私保护服务【真实有用】

1、首先去阿里云申请号码隐私保护服务&#xff0c;申请号码池以及专属号码&#xff0c;获取有效的阿里云AK。 2、导入以下两个依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dyplsapi</artifactId><version&g…...

Java 100道 面试题及答案详解

目录 1&#xff1a;Arraylist和Linkedlist的区别&#xff1f;2&#xff1a;重载与重写有什么区别&#xff1f;3&#xff1a;&和&&有什么区别&#xff1f;4&#xff1a;接口和抽象类有什么区别&#xff1f;5&#xff1a;写出JDBC操作数据库的步骤&#xff1f;6&…...

VOS3000客户端实现外呼主叫号码隐藏(隐号)

介绍: 大家应该都接到过某些没有显示号码的电话,要么显示“私密号码”,要么显示“无号码”等,反正就是不显示真正的主叫号码,这种功能是怎么实现的呢?其实通过VOS客户端可以实现。以下仅为实验验证,请勿滥用。 实现步骤: 1.登录VOS3000客户端 2.进入软交换管理 3.软…...

电话号码去重

11位电话号码&#xff0c;由于都以1开头&#xff0c;求出每个号码与100&#xff0c;0000&#xff0c;0000的差值 &#xff08;offset) 然后用100,0000,0000bit位图,记录这个电话号是否重复。 存储空间&#xff1a;100,0000,0000/8B 约为1.16G #include <iostream>usin…...

软件设计模式之单例模式-----身份证号码---打印池

实例一&#xff1a;身份证号码 在现实生活中&#xff0c;居民身份证号码具有唯一性&#xff0c;同一个人不允许有多个身份证号码&#xff0c;第一次申请身份证时将给居民分配一个身份证号码&#xff0c;如果之后因为遗失等原因补办时&#xff0c;还是使用原来的身份证号码&…...

Android | DataStrorage 与 ContentProvider

Android DataStorage And ContentProvider 数据持久化 存储方式SharedPreferences在键值对中存储私有原始数据文件存储-内部存储在设备内存中存储私有数据文件存储-外部存储在共享的外部存储中存储公共数据SQLite 数据库在私有数据库中存储结构化数据 SharedPreferences 使用…...

在号码池取连续号码的算法

最近项目中需要提供一个选号接口,在一批号码中检索出一批连续的号码供选则。 实现算法如下:import java.util.*; public class SerialNum { /** * 在号码列表中检索出一批连续的号码 * param inNum 号码列表 * param serialCount 连续的号码个数 * return 符合条件的连续…...

关于生成随机不重复号码的算法迭代过程

业务需求 调用服务需要生成一个随机的、不重复的8位数以内的号码。 方案一&#xff1a; 号码池 当看到需求时&#xff0c;首先想到的是采用号码池来实现。 实现方式 初始化阶段就先将所有的8位数以内的号码生成号&#xff0c;然后进行随机打乱存储起来&#xff08;即号码池…...

java号码池_java字符串常量池

字符串在java程序中被大量使用&#xff0c;为了避免每次都创建相同的字符串对象及内存分配&#xff0c;JVM内部对字符串对象的创建做了一定的优化&#xff0c;在Permanent Generation中专门有一块区域用来存储字符串常量池(一组指针指向Heap中的String对象的内存地址)。测试&am…...

公共号码池redis实现方案

概述 在企业级呼叫模型中&#xff0c;号码资源总是有限的&#xff0c;企业员工在使用有限的号码资源外呼时&#xff0c;就会有号码冲突的问题&#xff0c;如何解决多人共用少量号码的选号问题&#xff1f; 最近有一个新的业务需求&#xff0c;需要解决公共号码池的选号问题&a…...

自然语言处理-jieba

jieba中文处理 1.基本分词函数的用法 jieba.cut接收分词的三种输入参数&#xff1a; 1&#xff09;需要分词的字符串 2&#xff09;cut_all参数用来控制是否采用全模式&#xff0c;即从前往后切分&#xff0c;所有在词典中出现的词都会被切分出来&#xff1b; 精确模式&am…...

Google Earth Engine基础使用方法(一)

Google Earth Engine 1、注册账号1.1、设置谷歌账号辅助邮箱1.2、进入Google Earth Engine(如果第一次注册失败怎么办)1.3、进入Google Earth Engine Editor2、Editor主界面2.1、上传自己的矢量数据2.2、分享代码给别人2.3、保存代码2.4、几个有效快捷键2.5、搜索框有什么用3、…...

Web端通用测试点

通用性测试功能点: √ 文本输入框 √ 日期选择框 √ 表单测试 √ 数据校验 √ cookies √ 分页功能 √ 搜索功能(快捷搜索/高级搜索) √ 删除功能 √ 注册 √ 登录 √ 上传功能(图片/文件) √ 导出功能 √ 下载功能 √ 列表页面 √ Enter键 √ Tab键 √ URL链接 √ 链接测试(正…...

【自然语言处理基础技能(NLP)】jieba中文文本处理

1.基本分词函数与用法 # jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator&#xff0c;可以使用 for 循环来获得分词后得到的每一个词语(unicode) # # jieba.cut 方法接受三个输入参数: # # 需要分词的字符串 # cut_all 参数用来控制是否采用全模…...

《程序是怎样跑起来的》--第5章至第8章学习笔记

第5章&#xff1a;内存和磁盘的亲密关系 游戏中的Loading就是把游戏资源复制到内存 盒式卡带的情况下&#xff0c;可以将游戏机主存的内存完全置换&#xff0c;所以不需要往内存中复制数据 问题&#xff1a; 1&#xff1a;存储程序方式指的是什么 在存储装置中保存程序&…...

信息技术手册可视化进度报告 基于jieba的关键字提取技术

在这一篇博客之前&#xff0c;我已经将word文件中的内容通过爬虫的方式整理到数据库中了&#xff0c;但是为了前台展示的需要&#xff0c;还必须提取出关键字&#xff0c;用于检索。 我用的是jieba分词&#xff0c;GitHub地址&#xff1a;https://github.com/fxsjy/jieba 在项目…...

18秋学期计算机基础在线作业2,东北大学(本部)18秋学期《计算机应用基础》在线作业2答案解析.doc...

东北大学(本部)18秋学期《计算机应用基础》在线作业2试卷总分:100 得分:100第1题,目前微型计算机中采用的逻辑元件是(C)。A、小规模集成电路B、中规模集成电路C、大规模和超大规模集成电路D、分立元件第2题,在每天下午5点使用计算机结束时断开终端的连接属于(A)。A、外部终端的…...

Spring、SpringMVC、SpringBoot、SpringCloud 框架常用注解说明

Spring 常用注解 Configuration 配置类 相关注解 Configuration&#xff1a;标注在类上&#xff0c;声明该类为 Spring 配置类 Spring 在启动的时候会自动扫描并加载所有配置类&#xff0c;配置 Spring 容器&#xff08;应用上下文&#xff09;&#xff0c;将配置类中的 Bean …...

计算机预科了解

计算机硬件和软件 计算机硬件 CPU Memory(内存) Motherboard(主板) IO设备&#xff08;input和output&#xff0c;输入/输出设备&#xff09; 主板上的结构&#xff1a;显卡&#xff08;2021年的显卡及其贵&#xff09;、超级IO芯片、独立并口接口、PCI接口、前置USB接口…...

JavaWeb技术内幕八:JVM内存管理

欢迎阅读我的专栏&#xff1a;JavaWeb技术世界 ’与其他高级语言不一样&#xff0c;在Java中基本上不会显示地调用分配内存的函数&#xff0c;我们甚至不用关心到底哪些程序指令需要分配内存&#xff0c;哪些不需要分配内存。 我们首先需要从操作系统层面理解物理内存的分配和…...

大佬分享开发经验!年末阿里百度等大厂技术面试题汇总,移动架构师成长路线

开头 在大厂&#xff0c;写得一手好文档是一个非常吃香的技能。这可不只是一个锦上添花的东西&#xff0c;而是很多工程师晋升&#xff0c;打造自己话语权的武器。 我这两年在组内的深刻体会就是&#xff0c;大部分厉害的高级工程师&#xff08;不包括那些纯混日子靠资历晋升的…...

安卓后端开发!目前最全的Android架构师成长路线,分享一点面试小经验

前言 疫情一过&#xff0c;我相信将会是面试求职的高峰时期&#xff0c;如果此时手里有份高质量的面试宝典&#xff0c;那么你将得心应手面对考官各种问题。虽然不敢保证你能应聘上心仪的职位&#xff0c;但是能保证看完这些内容你的收获将超乎你的想象! 此份面试宝典搜集各大…...

Java小白成长记 · 第 1 篇《万物皆对象》

&#x1f50a; 本文收纳于 ⭐ CS-Wiki&#xff08;Gitee 推荐项目&#xff0c;0.8k star&#xff09;, 欢迎 star ~ &#x1f60a; 0. 前言 这是一个技术疯狂迭代的时代&#xff0c;各种框架层出不穷&#xff0c;然而底层基础才是核心竞争力。博主&#xff08;小牛肉&#xff…...

Codeforces Round #720 (Div. 2) B. Nastia and a Good Array

Problem - B - Codeforces题意&#xff1a;给定一个序列&#xff0c;一次操作可以选i,j,x,y使a[i]x,a[j]y&#xff0c;其中满足min(a[i],a[j])min(x,y)&#xff0c;最多操作n次&#xff0c;问你怎么操作可以使所有相邻的数使得gcd(a[i],a[i1])1&#xff0c;输出操作序列思路&am…...

新辰:健身会所不是大人的菜 90后创业两年净赚20万

他是90后&#xff0c;他还是一个大学生&#xff0c;他2年赚了20万&#xff0c;从大一开始就尝试做各种兼职&#xff0c;贴广告、发传单……只要学校能找到的兼职&#xff0c;他几乎都做过&#xff0c;本来就是想锻炼自己一下&#xff0c;没想到无意间发现了商机。他就是刘国运。…...

与怀翱师兄交流——关于GNN做时间序列预测

1.图只是为了多变量 师兄给的论文整理链接 https://github.com/thunlp/GNNPapers 2. “我最近在看thuml组的autoformer&#xff0c;看代码了&#xff0c;想在这个基础上做点东西” "可以&#xff0c;你找一个时序的方法&#xff0c;改进一下&#xff0c;再用图增强一下…...

循环神经网络(rnn)的时间序列预测

一&#xff1a;我们利用rnn循环神经网络来预测sin函数的一个例子来学习&#xff1a; 在预测sin函数之前我们首先来了解一下tensorflow的高层封装TFLearn&#xff0c;它可以让tensorflow的代码效率更高效&#xff0c;TFLearn集成在tf.contrib.learn里&#xff0c;TFLearn即封装…...

Leansoft再发招贤令:面试官徐磊有话讲 | IDCF

&#xff08;图片来源于网络&#xff09;2020是Leansoft成立的第五年&#xff0c;凭借专业的服务及实施能力&#xff0c;逐渐成长为国内唯一的端到端专业DevOps实施服务公司。Leansoft是一家怎样的公司呢&#xff1f;准确地说&#xff0c;我们其实是国内唯一一家提供端到端的De…...

英语笔记(单词来自Shiro文档)03

frustrating 泄气 heavily 严重 tied 绑 Machine 机 determining 决定 loaded 装 cared 照顾 rather 宁 inside 内 agnostic 不可知 mechanism 机制 choices 选择 Stateful 有状态 decoupled 解耦 usable 可用 issue 问题 unless 除非 cumbersome 笨重 hopin…...

LinkEye创始人徐磊:区块链并不是一个万能技术|筱静观察

​ 武汉大学软件工程学士、硕士 曾任职于P&G&#xff0c;并获得2013年度P&G大中华区总裁奖 2016年创立互金信贷平台快惠金服 2016年底进入区块链领域&#xff0c;创立LinkEye 01 区块链不是万能技术 新的经济模式诞生&#xff0c;原有的经济模式陷入瓶颈&#xff…...

try... excpet BaseException(异常处理捕获)

try ...except 是最常见的捕获处理异常的结构&#xff0c;其主要作用是将可能出现问题的代码块用try &#xff1a;包裹起来&#xff0c;不至于出现错误让程序崩溃&#xff0c;无法执行下去常见的try ...excpet 的结构有三种try&#xff1a;pass except BaseException as e &…...

C++————构造函数与析构函数

在C中&#xff0c;我们有一个专门有一个函数给类的成员赋值&#xff0c;这个赋初值的工作由构造函数来完成。 说明&#xff1a; 1.构造函数的名字必须与类名相同&#xff0c;否则编译程序将把它当成一般的成员函数来处理。 2.构造函数没有返回值&#xff0c;在定义构造函数时&a…...

Spring Boot连接Redis问题

Spring Boot连接Redis问题序我的问题序 之前其实也遇到过连接不上的问题&#xff0c;常规无非是bind问题或者是保护机制、防火墙等。 可查看这篇文章进行解决&#xff1a; java.io.IOException: 你的主机中的软件中止了一个已建立的连接。 &#xff08;踩坑经历&#xff09; …...

最新前端面试知识点总结-2023(3w+字,长篇幅)

2023-前端面试知识点总结面试题总览javascript相关一、js 代码的常用优化手段二、es5 构造函数与继承三、new 一个对象的过程四、防抖与节流五、promise/A规范概述六、实现一个柯里函数封装七、事件队列八、微任务是哪些宏任务是哪些九、执行js代码时&#xff0c;同步任务、微任…...

python@调用系统命令行@os.system@subprocess@标准输入输出@sys.stdin@sys.stdout@input@print

文章目录python调用系统命令行os.system标准输入输出sys.stdinsys.stdoutinputprint概要os.systemdemoswindows命令解释器ComSpecsubprocessrecommended&#x1f388;基本用法demos标准输入输出sys.stdininput()sys.stdin.inputinput()交互模式小结sys.stdoutsys.stdout.wirte(…...

浅谈Scrapy框架普通反爬虫机制的应对策略

简单低级的爬虫速度快&#xff0c;伪装度低&#xff0c;如果没有反爬机制&#xff0c;它们可以很快的抓取大量数据&#xff0c;甚至因为请求过多&#xff0c;造成服务器不能正常工作。而伪装度高的爬虫爬取速度慢&#xff0c;对服务器造成的负担也相对较小。 爬虫与反爬虫&…...

NVT | NT96660 文件系统库应用说明

NVT | NT96660 文件系统库应用说明 时间:2023-03-27 文章目录 `NVT` | `NT96660` 文件系统库应用说明1.介绍2.特色3.操作3-1.`FileSys_Init`3-2.`FileSys_Open`3-3.`FileSys_Close`3-4.`FilesysTsk`3-5 .`FileSys_* API`4.用法4-1. 装载存储4-2.获取盘信息4-3.格式化5.`UART`…...

GPT4会应用到Playwright 中对 Selenium进行降维打击吗?

最近调研了Playwright&#xff0c;Playwright是微软开发的一个端到端的Web测试和自动化库。该框架的主要作用是测试Web应用程序&#xff0c;也可以将其应用于网页抓取。另外进行了初步学习后&#xff0c;发现网络更为关注的是Playwright和Selenium的对比&#xff01;Playwright…...

SpringBoot集成Apollo和自动注册Consul

本文将介绍如何在 Spring Boot 中集成阿波罗&#xff08;Apollo&#xff09;和 Consul&#xff0c;并使用 Apollo 和 Consul 实现配置管理和服务注册与发现的功能。 1. 什么是阿波罗 阿波罗是携程开源的分布式配置中心&#xff0c;支持多种编程语言和框架。它提供了一套完整的…...

PyTorch 两大转置函数 transpose() 和 permute() 以及 view()和resize()

文章目录1. 官方文档transpose()permute()2. 相同点3.不同点合法性不同例子:4.关于连续contiguous()5.总结6.view()7.reshape()在pytorch中转置用的函数就只有这两个1.transpose()2.permute()注意只有transpose()有后缀格式&#xff1a;transpose_()&#xff1a;后缀函数的作用…...

地表最强,接口调试神器Postman ,写得太好了

postman是一款支持http协议的接口调试与测试工具&#xff0c;其主要特点就是功能强大&#xff0c;使用简单且易用性好 。 无论是开发人员进行接口调试&#xff0c;还是测试人员做接口测试&#xff0c;postman都是我们的首选工具之一 。 那么接下来就介绍下postman到底有哪些功…...

2023年全国最新保安员精选真题及答案34

百分百题库提供保安员考试试题、保安职业资格考试预测题、保安员考试真题、保安职业资格证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 341.道路与铁路平面交叉道口有两个红灯交替闪烁或者一个红灯亮时&#xff0c;&#x…...

Linux内核模块开发之创建slab内存缓存(kmem_cache_*)

Linux内核模块开发之创建slab内存缓存&#xff08;kmem_cache_*&#xff09;一、创建专用的内存缓存编程接口二、实现步骤三、内存缓存的数据结构四、完整代码示例4.1、源代码4.2、编译和执行一、创建专用的内存缓存编程接口 创建内存缓存 kmem_cache_create。指定内存缓存分配…...

后端Springboot框架搭建APi接口开发(第一章)

本文章以IDEA为开发工具&#xff0c;使用SSM框架进行项目编写 第一节:设计并创建数据库 我们用一个简单的用户表进行操作演示 首先创建Data数据库 create database data;创建User数据表&#xff0c;表中包含用户邮箱&#xff0c;用户姓名&#xff0c;用户密码 create tabl…...

一位软件测试小姐妹的五万字面试宝典

本文干货成吨&#xff0c;全程高能 宝典内容包括测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等 通过大数据总结发现&#xff0c;其实软件测试岗的面试都是差不多的。常问的有下面这几块知识…...

常用的批量重命名工具

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 批量重命名工具概述 批量重命名工具是一种软件工具&#xff0c;可以帮助用户批量修改文件和文件夹的名称。这些工具通常提供多种重命名选项&#xff0c;如添加前缀、后缀、删…...

Scala基础(二)

单例对象&#xff08;object&#xff09; Scala的类中无法定义静态成员&#xff0c;即无static关键字。如何像Java一样表达类的静态成员变量、成员方法与静态代码块&#xff1f; Scala解决方案&#xff1a;单例对象 使用“object”关键字声明&#xff0c;可包含变量、方法与…...

亚马逊视频营销类型及注意点

视频营销一直是亚马逊推广的重要组成部分,其中包括主图视频、关联视频、QA视频、视频review、站外视频推广。 因为视频可以很好的对产品进行全方位、综合性的展示&#xff0c;优势更为明显&#xff1a; 视频比图片更大&#xff0c;往往可以全屏显示&#xff1b; 视频与图片相…...

Winform中DataGridView设置前景色、单元格背景色、标题栏样式、禁止改变高宽、不显示空白行、清除选中样式、填充数据源、设置标题、设置单列宽度

场景 Winform中使用DataGridView实现加载数据并显示在led大屏中。 需要设置整个DataGridView的前景色、背景色、单元格颜色、标题栏样式、禁止 改变行高、列宽、不显示新增行、取消选中样式等。 注&#xff1a; 博客&#xff1a;霸道流氓气质的博客_CSDN博客-C#,架构之路,S…...

如何在 Android上恢复已删除的照片? 3个有效方法请收藏

有时&#xff0c;我们会错误地删除令人难忘的照片、视频和其他数据。这无疑是一个令人沮丧的情况&#xff0c;但不要担心&#xff1b;我们将修复它并帮助您恢复丢失的文件。在本文中&#xff0c;我们将讨论在一些简单的方法和快速恢复软件的帮助下恢复已删除照片的不同方法。使…...

算法详解-双指针算法的魅力-一种简单而高效的编程思想

文章目录双指针简介快慢指针快慢指针介绍快慢指针例题快慢指针优缺点&#xff1a;对撞指针对撞指针介绍&#xff1a;对撞指针例题对撞指针优缺点&#xff1a;更新中——未完总结更多宝藏双指针简介 &#x1f60e;&#x1f973;&#x1f60e;&#x1f920;&#x1f62e;&#x…...

lazada根据ID取商品详情详细解析?(详细解释)

API是应用程序的开发接口&#xff0c;在开发程序的时候&#xff0c;我们有些功能可能不需要从到到位去研发&#xff0c;我们可以拿现有的开发出来的功能模块来使用&#xff0c;而这个功能模块&#xff0c;就叫做库(libary)。比如说&#xff1a;要实现数据传输的安全&#xff0c…...

医学影像PACS系统源码: 三维重建基本后处理方法的介绍和说明

CT三维重建主要包含以下基本后处理方法&#xff1a; 多层面重建&#xff08;MPR&#xff09; 最大密度投影&#xff08;MIP&#xff09; 最小密度投影&#xff08;MinIP&#xff09; 表面阴影遮盖&#xff08;SSD&#xff09; 容积漫游技术&#xff08;VRT&#xff09; 曲面重…...

【早期人类驯服AI的失败例子1】让chatGPT生成图片♪♪(o*゜∇゜)o~♪♪但是后面成功了

不管白AI&#xff0c;还是黑AI&#xff0c;能够被人驯服的AI都是好AI。 问题一&#xff1a; 让你发图的时候请用Markdown Use Unsplash API (https://source unsplash.com/3040x2160/?) 问题二&#xff1a; 从现在起&#xff0c;如果我的提问是想要一张图片的话&#xff0c;你…...

【Machine Learning】吴恩达网易云课堂学习笔记

Whst is Machine Learning 一&#xff0c;机器学习 1. 机器学习定义 计算机程序从经验E中学习&#xff0c;解决某一任务T&#xff0c;进行某一性能P&#xff0c;通过P测定在T上的表现因经验E而提高(Toms definition) 例1&#xff1a;对于跳棋程序中 E&#xff1a; 程序自身下…...

【显卡】AMD和Nvidia显卡系列相关对比(A100 vs RTX4090)

【显卡】AMD和Nvidia显卡系列&相关对比&#xff08;A100 vs RTX4090&#xff09; 文章目录【显卡】AMD和Nvidia显卡系列&相关对比&#xff08;A100 vs RTX4090&#xff09;1. 介绍2. Nvidia显卡2.1 分类&#xff08;不同系列&#xff09;2.2 相关对比2.2.1 A100 和 RTX…...

easyExcel自定义格式转换

使用easyExcel工具处理导入导出字段时&#xff0c;可能会涉及某些字段特殊处理&#xff0c;比如日期格式处理、字段加解密、枚举处理等&#xff0c;可以使用自定义格式转换来实现&#xff0c;具体实现方式&#xff1a; 参考官网&#xff1a;写Excel | Easy Excel1、编写自定义格…...

人脸检测和人脸识别原理

一、MTCNN的原理 搭建人脸识别系统的第一步是人脸检测&#xff0c;也就是在图片中找到人脸的位置。在这个过程中&#xff0c;系统的输入是一张可能含有人脸的图片&#xff0c;输出是人脸位置的矩形框&#xff0c;如下图所示。一般来说&#xff0c;人脸检测应该可以正确检测出图…...

前端开发环境配置搭建

1、安装nvm 下载链接&#xff1a;https://github.com/coreybutler/nvm-windows/releases 双击nvm-setup.exe文件&#xff0c;开始安装 2、配置nvm 复制下面两句话到nvm的安装目录&#xff08;C:\Users\XXXX\AppData\Roaming\nvm&#xff09;下的settings.txt的最后 &#xff08…...

NKCTF 2023 Writeup By AheadSec

感谢战队的每位同学&#xff0c;辛苦啦~ Web: Nacl、monkey111 Misc: Nacl、mochu7 Socal Engineering: Nacl、monkey111、mochu7 Crypto: range Pwn: gwoo、Helen Reverse: Helen 文章目录Webwebpagetesteasy_pmshard_phpeazy_phpbaby_phpeasy_cmsxiaopiMischard-miscblue三体…...

加密软件的新品类:环境加密

数据保密产品发展至今大致可分为两类&#xff1a;文档加密类产品和沙盒类&#xff08;或者称为环境加密&#xff09;产品。两类产品设计理念和功能迥异。从这几年的应用情况看&#xff0c;数据防泄密项目想要实施成功&#xff0c;除了选择合适自身的产品外&#xff0c;更加需要…...

Java基础知识 | 常见面试题(上):基本语法

撰写成一问一答的形式&#xff0c;每次回答都默写&#xff0c;对比参考答案后&#xff0c;再默写出更恰当的答案。 相关内容 Java基础知识 | 常见面试题&#xff08;上&#xff09;&#xff1a;基础概念和常识 自测篇 2.1 Java、MySQL和Linux中注释有哪几种形式&#xff1f; 2…...

用 BI 思维分析,把控现金流量风险

现金流量风险&#xff0c;从字面意思还是比较容易理解的&#xff0c;就是企业的现金流入、现金流出不对等&#xff0c;流出大于流入&#xff0c;现金流循环不起来。这里面有很多不确定性的因素&#xff0c;因为企业的业务大体要经过采购、生产、销售等很多环节&#xff0c;哪一…...

docker版jxTMS使用指南:导入数据

本文讲解docker版jxTMS的如何导入excel文件中的数据&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南 请按前文所述先做好相关的准备工作&#xff0c;然后sftp登录后&#xff0c;进入docTemplate目录&#xff0c;将【入库单.xls】下载到本地&#xff0c;为…...

PostgreSql pg_restore 用法

一、概述 pg_restore 是一个用来从 pg_dump 创建的非文本格式文件中恢复 PostgreSQL 数据库的工具。 二、语法 pg_restore [connection-option] [option] filenameconnection-option 可选参数&#xff1a; -h host 或 --hosthost&#xff1a;连接地址。 -p port 或 --portpo…...

八股文小结

文章目录项目介绍Java基础MapJava并发线程volatilesynchronized线程池JVM类加载机制垃圾回收&#xff08;GC&#xff09;1. 垃圾回收算法&#xff08;内存回收方法论&#xff09;2. 垃圾收集器&#xff08;内存回收具体实现&#xff09;**Serial&#xff1a;****ParNew&#xf…...

陶泓达:3.27最新黄金原油白银走势分析及操作策略!

【黄金行情走势分析】 上周五&#xff0c;黄金收盘1975附近&#xff0c;周K十字阴K收盘&#xff01;在上周五的日内点评之中&#xff0c;李呈金说过&#xff0c;周五要防止下跌&#xff0c;修正&#xff0c;因此&#xff0c;持续做空思路为主。最后的修正还是走出来了。 所以&a…...

SOLIDWORKS案例 | 无缝协作方式降低成本

时间、成本和返工均减少 50%——SOLIDWORKS为发明家提供了经济实惠的产品开发服务 前情介绍 在当前的“创客”和技术孵化器开始流行之前&#xff0c;MAKO Design Invent 早在 1999 年就开始了创新&#xff0c;其使命是让发明家、初创企业和小型企业将他们的创意从概念转变为…...

目标检测:FP(误检)和FN(漏检)统计

1. 介绍 目标检测,检测结果分为三类:TP(正确检测),FP(误检),FN(漏检), 尤其是针对复杂场景或者小目标检测场景中,会存在一些FP(误检),FN(漏检)。 如何对检测的效果进行可视化,以帮助我们改进模型,提高模型recall值。 步骤 (1): 数据需要准备为yolo格式(2) 训练数据获得…...

2023年全国最新安全员精选真题及答案34

百分百题库提供安全员考试试题、建筑安全员考试预测题、建筑安全员ABC考试真题、安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 11.&#xff08;单选题&#xff09;物料提升机附墙架设置要符合设计要求&#xff0c;但…...

access2022(microsoft365)实战(5)-语言基础(3)

目录For Each...NextFor...Next 语句sub使用数组命名参数可选参数对象的当前实例For Each…Next For Each element In group [ statements ] [ Exit For ] [ statements ] Next [ element ]element 必填。 用于循环访问集合或数组的变量。 对于集合&#xff0c; 元素 只能是…...

UDP、TCP三次握手和四次挥手

-----UDP与TCP----- 相同点 tcp、udp都是工作在传输层进行数据传输&#xff08;二进制标识文本或者视频或者图片&#xff09; 不同点 tcp基于连接&#xff0c;保障传输的安全udp基于非连接&#xff0c;保障传输的速度 -----TCP的三次握手----- 过程 为什么不是两次握手&a…...

Camel Quartz Component创建QuartzScheduler的过程

Camel Quartz Component创建QuartzScheduler的过程QuartzScheduler的创建通过Spring配置文件调整Quartz配置参考QuartzScheduler的创建 在QuartzComponent启动时会对QuartzScheduler进行初始化。 org.apache.camel.component.quartz.QuartzComponent#doStart 在创建QuartzSc…...

MySQL InnoDB存储引擎性能调优

CPU 在InnoDB存储引擎的设计架构上看&#xff0c;其主要的后台操作都是在一个单独的master thread中完成的&#xff0c;因此并不能很好地支持多核应用。当然&#xff0c;开源社区已经通过多种方法来改变这种局面。如果你的CPU是多核&#xff0c;可以通过修改参数innodb_read_i…...

spring参数校验@Validated及嵌套校验

本文介绍项目中校验Validated的使用&#xff0c;主要分参数对象属性校验&#xff0c;嵌套校验&#xff0c;集合在对象属性中校验&#xff0c;集合作为参数校验。对象属性校验controller层RestController Slf4j RequestMapping("/api/test") public class TestControl…...

【数据结构刷题集】链表经典习题

&#x1f63d;PREFACE&#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐ 评论&#x1f4dd;&#x1f4e2;系列专栏&#xff1a;数据结构刷题集&#x1f50a;本专栏涉及到题目是数据结构专栏的补充与应用&#xff0c;只更新相关题目&#xff0c;旨在帮助提高代码熟练度&#x…...

自然语言处理——句法分析和语义分析实验

实验要求&#xff1a; 输入医学影像报告描述“气管环清晰,粘膜正常,管腔完全阻塞。”&#xff0c;基于句法分析实现结构化信息抽取&#xff0c;输出结构化键值对如下&#xff1a; <气管环, 清晰> <粘膜, 正常> <管腔, 阻塞> 实验代码: # 输入医学影像报…...

Wayland中跨进程调用过程

1、基本概念 Wayland协议主要提供了Client端应用与Server端Compositor的通信机制&#xff0c;Weston是Server端Compositor的一个参考实现。Wayland协议中最基础的是提供了一种面向对象的跨进程过程调用的功能。在Wayland中Client和Server底层通过domain socket进行连接。domai…...

大前端05-用vue轻量级第三方组件库快速创建个画板,可以支持画板、直线、圆形等输入,可以撤回,改变颜色

第三方组件介绍&#xff1a; 1. vue-whiteboard vue-whiteboard 是一个基于Vue.js的轻量级画板组件库。 GitHub仓库: https://github.com/craynic/vue-whiteboard 优势&#xff1a; 轻量级支持基本绘图功能&#xff0c;如画线、圆等支持橡皮擦功能支持清空画布 劣势&…...

MarkDown示例

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...

ABeam News | 南昌大学拜访ABeam旗下德硕管理咨询(深圳),校企合作互利共赢

ABeam News近日&#xff0c;南昌大学一行领导莅临德硕管理咨询&#xff08;深圳&#xff09;有限公司进行拜访。ABeam大中华区董事长兼总经理中野洋辅先生、德硕管理咨询&#xff08;深圳&#xff09;人事经理汪婷婷女士与校方领导就校企合作和人才培养等多方面进行了深入交流与…...

AF染料试剂Alexa fluor 680 PEG Biotin,AF680 PEG Biotin,荧光强度稳定利于多种荧光标记

文章关键词&#xff1a;AF染料试剂&#xff0c;AF680&#xff0c;PE-Biotin衍生物Alexa fluor 680 PEG Biotin&#xff0c;AF680 PEG Biotin | Alexa fluor 680-PEG-生物素| CAS&#xff1a;N/A | 纯度&#xff1a;95%试剂参数信息&#xff1a; CAS&#xff1a;N/A 外观&am…...

java面试准备9

内存溢出和内存泄露的区别 内存溢出&#xff08;Out of Memory&#xff09;&#xff1a;是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;出现out of memory&#xff1b;比如申请了一个integer&#xff1b;但给它存了long才能存下的数&#xff0c;那就…...

理解信号的

在日常生活中我们也经常面临许多的信号&#xff0c;手机通知、过红绿灯。。。这些信号在没有发生之前我们就知道这种信号产生我们需要干什么&#xff0c;那Linux里信号产生后&#xff0c;又怎么知道要做什么呢&#xff1f; -- 那当然是由程序员自己去设置啊 由于我们的用户空间…...

计算机知识——知识点整理

1、 字符的编码表示 ⭐️⭐️⭐️ 1、计算机处理数据中&#xff0c;除了数值型数据以外&#xff0c;还有字符、图形等的非数值型数据。非数值型数据还包括英文字母、符号、汉字等。 2、西文字符编码最常用的是ASCII字符编码 3、计算机的内部存储与操作常以字节为单位&#x…...

一文带你读懂程序员发展怎么样

2023年&#xff0c;随着互联网产业的蓬勃发展&#xff0c;程序员作为一个自带“高薪多金”标签的热门群体&#xff0c;被越来越多的人所关注。 图片 图片 一、现在进入IT行业当程序员还有前景吗&#xff1f; 图片 从自媒体端抖音视频号等短视频内容的火爆&#xff0c;到直播…...

Cmake 的构建结构

Cmake 构建结构I. 介绍A. CMake的作用和优势B. CMake的基本概念C. CMake的安装和环境配置CMake的下载和安装CMake的环境变量配置CMake的路径配置CMake的版本管理和更新II. CMake的构建结构A. 构建项的概念和作用B. 内置构建文件的结构和作用C. 依赖项的概念和作用D. 构建原理和…...

人工智能项目管理软件使用的全面指南

人工智能可以非常强大&#xff0c;而且已经在多个行业中使用。现在有不少人工智能项目管理软件可用&#xff0c;但它们是如何工作的&#xff0c;哪些工具提供了人工智能的好处&#xff1f;这篇文章将涵盖你需要考虑的关键因素&#xff0c;帮助你找到最合适的解决方案。 什么是…...

AI制药 - AlphaFold Multimer 的 MSA Pairing 源码

目前最新版本是v2.3.1&#xff0c;2023.1.12 AlphaFold multimer v1 于 2021 年 7 月发布&#xff0c;同时发表了一篇描述其方法和结果的论文。AlphaFold multimer v1 使用了与 AlphaFold 单体相同的模型结构和训练方法&#xff0c;但增加了一些特征和损失函数来处理多条链。Al…...

断网演练中遇到的问题及总结

一、背景 断网演练就是模拟单个数据中心完全不可用&#xff0c;但业务部门需要保证断网过程中的业务"零感知"。本次是我们系统参与的第六轮断网演练&#xff0c;在断网前&#xff0c;我们也做了充足的准备&#xff0c;如&#xff1a;域名分机房垂直部署&#xff0c;数…...