进程相关概念

1.什么是程序,什么是进程

程序:一般是放在实体磁盘中,通过使用者的运行来触发,出发后会加载到内存中成为一个个体,这就是程序。

程序(program):通常为二进制,放置在储存媒体中(如光盘、硬盘、软盘、磁带等),为实体文件的形态存在。

进程(process):程序触发后,运行者的权限与属性、程序的程序码和所需数据等都会被加载到内存中,操作系统给予这个内存单元一个识别码(PID),可以说,进程就是一个运行中的程序。

2.如何查看系统中有哪些进程

a.使用ps指令查看,实际工作,配合grep来查找程序中是否存在一某一个进程

b.使用top指令查看,类似windows任务管理器

3.什么是进程标识符

每一个进程都有一个非负整数表示的唯一ID,叫做pid,类似身份证

 Pid=0:称为交换进程(swapper),作用是进程调度

Pid=1:init进程,作用是进程初始化

编程调用getpid函数获取自身的进程标识符

getppid获得父进程的进程标识符

#include <stdio.h>
#include <sys/types.h>
#include <unisted.h>int main()
{pid_t pid;pid = getpid();printf("my pid is %d\n",pid);return 0;
}

4.父进程和子进程

进程A创建了进程B

那么A叫做父进程,B叫做子进程,父子进程是先对的概念.

5.C程序的存储空间是如何分配的

正文(代码段):是由CPU执行的机器指令部分。通常,正文段时可共享的,所以即使是频繁执行的程序(如文本编辑器,C编译器和shell等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由意外而修改其中自身的指令。

初始化数据段:通常将此段称为数据段,它包含了程序中需明确地赋初值的变量。例如,C程序中出现在任何函数之外的声明:

int maxcount = 99;

使此变量带有其初值放在初始化数据段中。

非初始化数据段:通常将此段称为bss段,在程序开始执行前,内核将此段中的数据初始化为0或空指针。出现在任何函数外的C声明:

long sum[1000]; 

使此变量存放非初始化数据中。

:自动变量以及每次函数调用时所需保存的信息都存放在此段中。每次调用函数时,其返回地址以及调用者的环境信息(例如某些及前期寄存器的值)都放在栈中。然后,最近被调用的函数在栈上为其自动和临时变量分配存储空间。通过以这种方式使用栈,可以递归调用C函数。递归函数每次调用自身时,就使用一个新的栈帧,因此一个函数调用实例中的变量集不会影响另一个函数调用实例中的变量集。

:通常在堆中进行动态分配。

7.创建进程fork的使用

fork()系统调用

【功能】创建一个新的子进程

【调用格式】 int fork();

【返回值】0 向子进程返回的返回值,总为0

>0 向父进程返回的返回值,它是子进程的PID

-1 创建失败

【说明】若fork()调用成功,则它向父进程返回子进程的PID,并向新建的子进程返回0。

例1:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>int main()
{pid_t pid;pid_t pid2;pid = getpid();printf("before fork pid = %d\n",pid);fork();pid2 = getpid();printf("after fork pid = %d\n",pid2);if(pid == pid2){printf("this is father print\n");}else{printf("this is child print,child pid = %d\n",getpid());}return 0;
}

例2:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>int main()
{pid_t pid;printf("father pid = %d\n",getpid());pid = fork();if(pid > 0){printf("this is father print,pid = %d\n",getpid());}else if(pid == 0){printf("this is child print,pid = %d\n",getpid());}return 0;
}

fork创建一个子进程的目的:

        (1)一个父进程希望复制自己,使父,子进程同时执行不同的代码段。这在网路服务进程中是常见的——父进程等待客户端的服务请求。当这种情求达到时,父进程调用fork(),使子进程处理此请求,父进程则继续等待下一个服务请求到达。

        (2)一个进程要执行一个不同的程序。这对shell是常见的情况。在这种状况下,子进程从fork返回后立即调用exec。

总结: 

        由fork创建的新进程称为子进程(child process)。fork函数被调用一次,但返回两次。两次返回的唯一区别是子进程的返回值是0,父进程的返回值是子进程的PID。

        将子进程PID返回给父进程的原因:因为一个进程的子进程可以有多个,且没有一个函数使一个进程可以获得所有的子进程的PID。

        fork使子进程得到返回值0的理由:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获得父进程的PID。

        子进程和父进程继续执行fork调用之后的指令。子进程是父进程的副本。例如,子进程获得父进程的数据空间、堆和栈的副本。注意,这是子进程所拥有的副本,父,子进程并不共享这些存储空间,父,子进程共享正文段。

        由于在fork之后经常跟随exec,所以现在的很多实现并不执行一个父进程数据段、堆和栈的完全复制。作为代替,使用了写时复制技术。这些区域由父,子进程共享,而且内核将它们的访问权限改为只读。如果父,子进程中的任意一个试图修改这些区域,则内核只为修改区域那块内存制作一个副本,通常是虚拟存储系统中的一“页”。

8.vfork函数

与fork的区别:

1.vfork直接使用父进程存储空间,不拷贝。

2.vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。

例1:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>int main()
{pid_t pid;pid = vfork();if(pid > 0){while(1){printf("this is father print, pid = %d/n",getpid());sleep(1);}}else if(pid == 0){while(1){printf("this is child print,pid = %d\n",getpid());sleep(1);}}return 0;
}

可以看到,如果不调用exit,子进程会一直执行。

例2:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>int main()
{pid_t pid;int cnt = 0;pid = vfork();if(pid > 0){while(1){printf("cnt=%d\n",cnt);printf("this is father print, pid = %d/n",getpid());sleep(1);}}else if(pid == 0){while(1){printf("this is child print,pid = %d\n",getpid());sleep(1);cnt++;if(cnt == 3){exit(0);}}}return 0;
}


9.进程退出

正常退出

1.Main函数调用return

2.进程调用exit(),标准C库

3.进程调用_exit() 或者_Exit(),属于系统调用

补充:

1.进程最后一个线程返回

2.最后一个线程调用pthread_exit

异常退出

1.调用abort

2.当进程收到某些信号时,如ctrl+c

3.最后一个线程对取消(cancellation)请求做出响应

        不管进程如何终止,最后都会执行内核中的同一段代码。这段代码为相应进程关闭所有打开描述符,释放它们所使用的存储器。

        对上述任意一种终止情形,我们都希望终止进程能够通知其父进程它是如何终止的,对于三个终止函数(exit、_exit、_Exit)实现这一点的方式是,将其退出状态(exit status)作为参数返回给函数。在异常终止情况下,内核(不是进程本身)产生一个指示其异常终止的原因的终止状态。在任意一种情况下,该终止进程的父进程都能用wait或者waitpid函数取得其终止状态。

10.父进程等待子进程退出

(1)为什么要等待子进程退出

        创建子进程得目的是为了让子进程干别的活,设置退出状态的作用是通知父进程有关此次运行的状况,以便父进程做出相应的处理,等待子进程得退出,收集退出状态。

(2)父进程如何等待子进程退出状态并收集子进程得退出状态

         子进程退出状态不被收集,则变为僵尸进程。

例1:僵尸状态演示

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>int main()
{pid_t pid;int cnt = 0;pid = fork();if(pid > 0){while(1){printf("cnt=%d\n",cnt);printf("this is father print, pid = %d\n",getpid());sleep(1);}}else if(pid == 0){while(1){printf("this is child print,pid = %d\n",getpid());sleep(1);cnt++;if(cnt == 3){exit(0);}}}return 0;
}

        通过运行结果可以看到,父子进程是并发执行的,子进程结束后退出,父进程并没有调用wait()收集子进程的状态,此时用ps -aux|grep 查看,子进程的状态是z+,说明子进程此时是僵尸状态。

wait()系统调用

        【功能】阻塞进程直到子进程结束;收集子进程。

        【调用格式】int wait(int *status)

        【参数说明】*status保存了子进程的一些状态。如果是正常退出,则字节莫为0,第2字节为退出状态;如果是非正常退出(即被某个信号终止),则其末字节不为0,末字节的低7位为导致进程终止的信号的信号值,若不关心子进程是如何终止的,可以用NULL作参数,即wait(NULL)。

        【返回值】>0 子进程的PID;

        -1 调用失败;

        0 其他;

  • 如果所有子进程都还在运行,则阻塞
  • 如果一个子进程已终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回。
  • 如果它没有任何子进程,则立即出错返回

区别:wait使调用者阻塞,waitpid有一个选项,可以使调用者不阻塞。

waitpid()系统调用

        【功能】与wait()一样

        【调用格式】pid_t waitpid(pid_t pid, int *status, int options);

        【参数说明】

  •         对于waitpid函数中pid参数的说明:
pid == -1等待一子进程
pid > 0等待其进程ID与pid相等的子进程
pid == 0等待其组ID等于调用进程组ID的任一子进程
pid < 0等待其ID等于pid绝对值的任一进程
  •         status参数与wait()一样
  • waitpid的options常量
常量说明
WCONTINUED若实现支持作用控制,那么由pid指定的任一子进程在暂停后已经继续,但状态尚未报告,则返回其状态
WNOHANG若由pid指定的子进程并不是立即可用的,则waitpid不阻塞,此时其返回值为0
WUNTRACED若某实现支持作业控制,而pid指定的任一子进程已进入状态状态,并且其状态自暂停以来从未报告过,则返回其状态。WIFSTOPPED宏确定返回值是否对应一个暂停子进程

例2:调用wait()后

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>int main()
{pid_t pid;int cnt = 0;pid = fork();if(pid > 0){wait(NULL);while(1){printf("cnt=%d\n",cnt);printf("this is father print, pid = %d\n",getpid());sleep(1);}}else if(pid == 0){while(1){printf("this is child print,pid = %d\n",getpid());sleep(1);cnt++;if(cnt == 3){exit(0);}}}return 0;
}

父进程等待子进程运行结束后再运行,并收集子进程的退出状态,用 ps -aux|grep 查看可以看到子进程退出后,子进程的PID消失了

例子3:调用waitpid()

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>int main()
{pid_t pid;int cnt = 0;int status = 10;pid = fork();if(pid > 0){waitpid(pid,&status,WNOHANG);printf("child quit, child status =%d\n",WEXITSTATUS(status));while(1){printf("cnt=%d\n",cnt);printf("this is father print, pid = %d\n",getpid());sleep(1);}}else if(pid == 0){while(1){printf("this is child print,pid = %d\n",getpid());sleep(1);cnt++;if(cnt == 3){exit(3);}}}return 0;
}

注意:虽然父进程调用waitpid()来收集子进程的退出状态,但使用 ps - aux|grep 查看发现,非阻塞等待子进程也会变成僵尸进程

 例子4:检查退出状态      

        如果检查退出状态,status就不能是NULL,而是wait(&status);

        如果要检查exit()中的返回值,需要使用检查wait和waitpid所返回的终止状态的宏 

说明
WIFEXITED(status)若为正常终止子进程返回的状态,则真。可执行WEXITSTATUS(status),取子进程传送给exit,_exit或_Exit参数的第8位
WIFSIGNALED(status)若为异常终止子进程返回的状态,则为真。可执行WTERMSIG(status),取使子进程终止的信号编号。另外,有些实现定义宏WCOREDIUMP(status),若以产生终止进程的core文件,则它返回真
WIFSTOPPED(status)

若为当前暂停子进程返回状态,则为真。对于这种情况,可执行WSTOPSIG(status0),取使子进程暂停的信号编号

WIFCONTUNUED(status)若在作业控制暂停后以及继续的子进程返回状态,则为真。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>int main()
{pid_t pid;int cnt = 0;int status = 10;pid = fork();if(pid > 0){wait(&status);printf("child quit, child status =%d\n",WEXITSTATUS(status));while(1){printf("cnt=%d\n",cnt);printf("this is father print, pid = %d\n",getpid());sleep(1);}}else if(pid == 0){while(1){printf("this is child print,pid = %d\n",getpid());sleep(1);cnt++;if(cnt == 3){exit(3);}}}return 0;
}

11.孤儿进程

        父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”,此时子进程叫做孤儿进程。Linux避免系统存在过多孤儿进程,init进程会收留孤儿进程,变成孤儿进程的父进程。由于init进程不会退出,所以所有的进程都会被收养,最后,在系统关机之前,init进程要负责结束所有的进程。

12.exec族函数

大佬总结的文章:

linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)_牛仔的blog-CSDN博客_execlehttps://blog.csdn.net/u014530704/article/details/73848573

为什么要用exec族函数,有什么作用

        (1)一个父进程希望复制自己,使父,子进程同时执行不同的代码段。这在网络服务进程中是常见的——父进程等待客户端的请求。当这种请求达到时,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求到达。

        (2)一个进程要执行一个不同的程序。这对shell是常见的情况。在这种情况下,子进程从fork返回后立即调用exec。

exec族函数的定义

        【功能】在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本

        【函数族】exec函数族分别是:execl, execlp, execle, execv, execvp, execvpe
        【函数原型】

        

#include <unistd.h>
extern char **environ;

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],char *const envp[]);

        【返回值】exec函数族的函数执行成功后不会返回,调用失败时,会设置errno并返回-1,然后从原程序的调用点接着往下执行。

        【参数说明】

        path:可执行文件的路径名字

        arg:可执行程序所带的参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束。

        file:如果参数file中包含/,则就将其视为路径名,否则就按PATH环境变量,在它所值的各目录中搜寻可执行文件。

例子:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
//函数原型:int execl(const char *path,const char *arg,...);int main(void)
{printf("before execl\n");if(execl("./echoarg","echoarg","abc",NULL) == -1){printf("execl failed!\n");}printf("after execl\n");return 0;
}
#include <stdio.h>int main(int argc,char *argv[])
{int i = 0;for(i=0;i<argc;i++){printf("argv[%d] :%s\n",i,argv[i]);}return 0;
}

        先gcc编译echoarg.c,生成可执行文件echoarg。文件echoarg的作用是打印命令行参数。然后再编译execl.c并执行execl可执行文件。用execl 找到并执行echoarg,将当前进程main替换掉,所以”after execl” 没有在终端被打印出来。

        exec函数族的函数执行成功后不会返回,调用失败时,会设置errno并返回-1,然后从原程序的调用点接着往下执行。当发生错误时可以用 perror 解析错误。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
//int execl(const char *path,const char *arg,...);int main(void)
{printf("before execl\n");if(execl("./bin/echoarg","echoarg","abc",NULL) == -1){printf("execl failed!\n");perror("why");}printf("after execl\n");return 0;
}

 

这里说明我们的路径设置错误,echoarg就在当前目录下,没有在bin目录。

whereis 可以查看文件的路径

 

13.exec族函数配合fork使用

例:配置文件的修改

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>int main()
{pid_t pid;int data = 10;while(1){printf("please input a data\n");scanf("%d",&data);if(data == 1){int fdSrc;pid =fork();if(pid > 0){wait(NULL);}if(pid == 0){execl("./changedata","changedata","config.txt",NULL);exit(0);}}else{printf("wait,do nothing\n");}}return 0;
}

changedata 文件:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>int main(int argc,char **argv)
{int fdSrc;char *readBuf = NULL;fdSrc = open("config.txt",O_RDWR);int size = lseek(fdSrc,0,SEEK_END);lseek(fdSrc,0,SEEK_SET);readBuf=(char*)malloc(sizeof(char)*size + 8);int n_read = read(fdSrc,readBuf,1024);char *p = strstr(readBuf,"LENG=");if(p==NULL){printf("not found\n");exit(-1);}p = p+strlen("LENG=");*p = '5';lseek(fdSrc,0,SEEK_SET);int n_write = write(fdSrc,readBuf,strlen(readBuf));close(fdSrc);return 0;
}

 使用execl()使代码简洁了许多。

        

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 野火-fpga系类视频从0开始学习(1)软件的安装

    这种关于FPGA开发环境的搭建主要有四个软件。 1 Quartus II 13.0 视频没有讲破解 但软件在群文件中有的 我是按照这个教程安装的 Quartus II 13.0 最全的安装、破解教程(包含下载地址)_dxm809的博客-CSDN博客https://blog.csdn.net/dxm809/article/details/90136662这里复制…...

    2024/5/2 22:26:27
  2. 使用React+ts搭建一个可视化大屏项目

    # React Typescript搭建大屏项目&#xff0c;并实现屏幕适配 ## 安装 // npm 方式 npm install -g create-react-app // 如果很久之前安装过&#xff0c;建议卸载重新安装 npm uninstall -g create-react-app ### 新建项目 npx create-react-app my-app --template typesc…...

    2024/5/2 22:26:24
  3. Spring Security入门基础

    Spring Security入门基础 文章目录Spring Security入门基础一&#xff0c;Spring Security的使用1.1 基本术语1.2 基本使用1.2.1 引入依赖1.2.2 配置文件1.2.3 测试接口1.3 过滤器链的15个过滤器1.4 自定义用户认证 WebSecurityConfigurerAdapter1.4.1 configure(HttpSecurity …...

    2024/5/2 22:26:20
  4. LeetCode 7 整数翻转

    给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09; 解题思路&#xff1a;&#…...

    2024/5/2 22:26:15
  5. mp3解码 - 文档参考

    官方文档 ISO_11172-3 下载ISO.IEC-13818-1下载 学位论文 南京邮电大学2004级 曾涛 毕业论文大连海事大学2006年 李菁菁 《MP3软件解码器的研究与实现》 博客文章 lfp001 用JAVA编写MP3解码器系列 原文链接xsjm206 博客链接张芳涛 MP3解码算法原理解析...

    2024/5/2 22:26:11
  6. 程序设计与C语言

    第一节&#xff1a;1.1引例 &#xff08;1&#xff09;c程序由函数组成 &#xff08;2)所以的C程序有且只有一个main&#xff08;&#xff09;函数。C程序总是从main()函数的第一条语句开始运行&#xff0c;当main&#xff08;&#xff09;函数结束时&#xff0c;程序也就结束…...

    2024/5/2 22:26:07
  7. 二叉树-堆(2)

    文章目录向上调整建堆堆的代码实现Heap.hHeap.c初始化堆销毁堆插入数据删除数据获取堆顶数据判断堆是否为空获取堆中数据个数打印堆中数据test.cTOP-K问题向上调整建堆 我们知道对一个数组建堆&#xff0c;有向下调整算法来建堆&#xff0c;但向上调整同样可以建堆。首先可以把…...

    2024/5/2 19:30:07
  8. 博客网站设置SSL证书

    刚得到的域名是没有安全证书的&#xff0c;在地址栏https处有警告&#xff0c;在cPanel主域中也会提示有风险&#xff0c;因此我们需要给我们的网站设置SSL证书&#xff08;b站视频教程&#xff09; 1.登陆SSLforfree官方网站 登陆https://zerossl.com/&#xff0c;然后输入自己…...

    2024/5/2 22:26:04
  9. MySQL进阶之路(十八)—— 最常用的索引使用规则

    最常用的索引使用规则&#xff08;干货篇&#xff09; 文章目录最常用的索引使用规则&#xff08;干货篇&#xff09;一、概述二、常用规则1、等值匹配规则2、最左匹配规则3、最左前缀匹配规则4、范围匹配规则5、最左匹配规则 等值匹配规则 范围匹配规则三、小结一、概述 ​…...

    2024/5/2 22:25:59
  10. display 和float

    <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>div{height: 200px;width: 200px;border-color: #d99f23;display: inline-block;/*行内元素展示&#xff0c;块元素的…...

    2024/5/2 22:25:55
  11. MySQL和Redis数据一致性

    MySQL和Redis数据一致性双写一致性1.什么是双写一致性&#xff1f;2.数据读取的过程3.保证双写一致性的策略&#xff1a;1.什么是双写一致性&#xff1f; 当我们更新了数据库的数据之后&#xff0c;同时保证redis的数据库同时更新。 2.数据读取的过程 当有请求读取数据库的时…...

    2024/5/2 22:25:51
  12. 问题来了,如何轻松给Spring Boot配置文件加个密?

    在实践中&#xff0c;项目的某些配置信息是需要进行加密处理的&#xff0c;以减少敏感信息泄露的风险。比如&#xff0c;在使用Druid时&#xff0c;就可以基于它提供的公私钥加密方式对数据库的密码进行加密。 但更多时候&#xff0c;比如Redis密码、MQ密码等敏感信息&#xf…...

    2024/5/2 22:25:47
  13. Microsoft SQL Server 下载汇总 SQL Server 2019

    腾讯云秒杀&#xff1a;2核4G8M 下行100M&#xff0c;74元每年&#xff01; 请访问原文链接&#xff1a;https://sysin.org/blog/sql-server/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者&#xff1a;gc(at)sysin.org&#xff0c;主页&#xff1a;www.…...

    2024/5/2 22:25:43
  14. Java 笔记01

    package hello;public class Hello{ //创建一个类叫做Hellopublic int age; //属性public double salary;//属性//功能public Hello(int ageValue,double salaryValue) {age ageValue;salary salaryValue; }void key() {System.out.println("world");}public s…...

    2024/5/2 22:25:39
  15. 【LeetCode-876题】链表的中间节点

    题目&#xff1a;给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;[1,2,3,4,5] 输出&#xff1a;此列表中的结点 3 (序列化形式&#xff1a;[3,4,5]) 返回的结…...

    2024/5/2 22:25:36
  16. 有疑问的题目

    有一分数序列&#xff0c;2/1,3/2,5/3,8/5,13/8,21/13,.....求出这个数列的前20项之和。 #include<iostream> using namespace std; int main() { double x, sum 2,a 1, b 2, t 1;//a为分母&#xff0c;b为分子,t为次数 while (t < 20) { b a b; a b …...

    2024/5/2 22:25:31
  17. 分支、循环语句经典例题

    一、写代码将三个整数数按从大到小输出 方法1. #include<stdio.h>int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);if (a > b && b > c)printf("%d %d %d", a, b, c);else if (a > c &&am…...

    2024/5/2 22:25:28
  18. Python知识点

    Python知识点 python中的lambda函数与sorted函数 lambda函数 匿名函数lambda&#xff1a;是指一类无需定义标识符&#xff08;函数名&#xff09;的函数或子程序。 lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值 例1:传入多个参数的lambda函数 …...

    2024/5/2 22:25:23
  19. unity导出带admob sdk时显示cocospod错误

    之前一直能顺利导出&#xff0c;因最近测试xcode版本的admob sdk时需要更新cocospod版本&#xff0c;在更新到1.11.2后发现unity带admob sdk的文件在导出时会显示如下错误&#xff1a; iOS framework addition failed due to a CocoaPods installation failure. This will wil…...

    2024/5/2 22:25:20
  20. 海量数据库的查询优化及分页算法方案[转帖]

    随着“金盾工程”建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种、各部门。与此同时,应用系统体系的核心、系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量。那么,如何…...

    2024/5/2 22:25:16

最新文章

  1. JVM笔记2--垃圾收集算法

    1、如何确认哪些对象“已死” 在上一篇文章中介绍到Java内存运行时的各个区域。其中程序计数器、虚拟机栈、本地方法栈3个区域随着线程而生&#xff0c;随线程而灭&#xff0c;栈中的栈帧随着方法的进入和退出而有条不紊的执行着入栈和出栈操作。每个栈帧中分配多少内存基本上…...

    2024/5/5 16:58:06
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. OpenHarmony开发-连接开发板调试应用

    在 OpenHarmony 开发过程中&#xff0c;连接开发板进行应用调试是一个关键步骤&#xff0c;只有在真实的硬件环境下&#xff0c;我们才能测试出应用更多的潜在问题&#xff0c;以便后续我们进行优化。本文详细介绍了连接开发板调试 OpenHarmony 应用的操作步骤。 首先&#xf…...

    2024/5/5 8:53:16
  4. xv6项目开源—05

    xv6项目开源—05.md 理论&#xff1a; 1、设备驱动程序在两种环境中执行代码&#xff1a;上半部分在进程的内核线程中运行&#xff0c;下半部分在中断时执行。上半部分通过系统调用进行调用&#xff0c;如希望设备执行I/O操作的read和write。这段代码可能会要求硬件执行操作&…...

    2024/5/2 2:36:53
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57