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

day28 文件IO及进程线程基础

讨论光标共享情况

1.dup和dup2定义变量赋值都共享光标

2.使用两个描述符调用两次open函数打开同一个文件,不共享光标

#include <myhead.h>int main(int argc, const char *argv[])
{//1、描述符赋值给新的变量char buff[1024] = "abcdefg";int newfd;int fd1 = open("./1.txt",O_RDWR);if(fd1==-1){perror("open");return -1;}write(fd1,buff,sizeof(buff));newfd = fd1;//新的变量当作描述符被赋值lseek(newfd,3,SEEK_SET);//从文件开头移动3个字节read(fd1,buff,sizeof(buff));printf("%s\n",buff);memset(buff,0,sizeof(buff));//清空buff//2、两个描述符指向同一个文件char str[100] = "";int fd3,fd4;fd3 = open("./2.txt",O_RDWR);if(fd3==-1){perror("open");return -1;}fd4 = open("./2.txt",O_RDWR);if(fd4==-1){perror("open");return -1;}lseek(fd3,3,SEEK_SET);//fd3从文件开头移动3个字节read(fd4,str,sizeof(str));//读取fd4的光标printf("%s",str);//输出return 0;
}

stat

 #include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *pathname, struct stat *statbuf);功能:获取文件的详细信息参数1:文件路径和文件名参数2:获取到的文件信息存储地址。struct stat {dev_t     st_dev;         /* 设备号 */ino_t     st_ino;         /* Inode号 */mode_t    st_mode;        /*文件类型和权限 */nlink_t   st_nlink;       /* 硬链接数 */uid_t     st_uid;         /* 所有者ID */gid_t     st_gid;         /* 所有者组ID */dev_t     st_rdev;        /* 特殊文件的设备号 */off_t     st_size;        /* 最大容量按照字节存储 */blksize_t st_blksize;     /* 每一块大小,按照字节 */blkcnt_t  st_blocks;      /* 块的数量 */返回值:成功返回0,失败返回-1,并置位错误码。
#include <myhead.h>int main(int argc, const char *argv[])
{struct stat sb;int res = stat("./09.c",&sb);//文件的信息存入sb结构体变量if(res==-1){perror("stat");return -1;}switch (sb.st_mode & S_IFMT) {case S_IFBLK:  printf("block device\n");            break;case S_IFCHR:  printf("character device\n");        break;case S_IFDIR:  printf("directory\n");               break;case S_IFIFO:  printf("FIFO/pipe\n");               break;case S_IFLNK:  printf("symlink\n");                 break;case S_IFREG:  printf("regular file\n");            break;case S_IFSOCK: printf("socket\n");                  break;default:       printf("unknown?\n");                break;}    return 0;
}

opendir和closedir

 #include <sys/types.h>#include <dirent.h>DIR *opendir(const char *name);功能:打开文件目录,返回指向目录的指针。参数:目录路径和名字返回值:成功返回打开的目录指针,失败返回NULL,并置位错误码。int closedir(DIR *dirp);功能:关闭文件目录指针指向的文件。参数:opendir返回的指针。返回值:成功返回0,失败返回-1,并置位错误码。

readdir

  #include <dirent.h>struct dirent *readdir(DIR *dirp);功能:读取目录里面的所有文件或者文件夹信息参数:目录指针返回值:成功返回目录指针指向的文件信息结构体,失败返回NULL,并置位错误码。struct dirent {ino_t          d_ino;       /* Inode number */off_t          d_off;       /* Not an offset; see below */unsigned short d_reclen;    /* Length of this record */unsigned char  d_type;      /* Type of file; not supportedby all filesystem types */char           d_name[256]; /* Null-terminated filename */};
#include <myhead.h>int main(int argc, const char *argv[])
{DIR *dir = opendir("/home/ubuntu/24101/IO/IO-1/");//打开一个文件夹if(dir==NULL){perror("opendir");return -1;}while(1){struct dirent *hangzhou = readdir(dir);//读取文件夹的内容if(hangzhou==NULL){perror("readdir");return -1;}printf("文件名:%s\n",hangzhou->d_name);switch(hangzhou->d_type)//输出文件的类型{case DT_BLK:printf("块设备文件\n");break;case DT_CHR:printf("字符设备文件\n");break;case DT_DIR:printf("目录文件\n");break;case DT_FIFO:printf("管道文件\n");break;case DT_REG:printf("普通文件\n");break;}}closedir(dir);//关闭文件夹    return 0;
}

进程(process)

程序的一次执行过程就是进程

1、进程概念:

时间片轮询 上下文切换。

1、进程1在3ms时间内运行结束,那么cpu会将进程1出队,继续询问进程2.

2、进程1需要8ms才能结束,那么cpu会在第5ms时将进程1,放入就绪队列尾部

3、进程1正好5ms运行结束cpu将进程1出队。

4、如果有外部优先级更高的事件打断进程1,进程1也会进入就绪队列等待。例如IO

2、进程内存管理

1、进程在创建时系统会从1G的物理内存中,通过mmu映射出4G的虚拟内存,其中0--3G的内存是所有进程的空间,进程间空间是独立的,但是3--4G的空间是内核空间,由所有进程共享。

2、注意在32位的操作系统中,1G物理内存映射出来4G虚拟内存,在64位的操作系统中,1G物理内存映射出来256T虚拟内存。

3、进程之间并不能直接进程数据交换,但是可以通过内核空间实现数据交换也就是进程间通信。

3、进程和程序区别

1、进程是动态的,随着程序的执行而创建,随着程序的结束而消亡。

2、程序是存储在内存的二进制文件,进程消亡程序并不会消失。

3、进程是动态,程序是静态。

4、进程种类

Linux系统中进程种类可以为三种:

1、交互进程,如vi编辑器,实现用户和主机之间的交流。

2、批处理进程,如gcc编译器的一步到位的编译,批处理进程将所有进程放入就绪队列,一次性全部运行结束。

3、守护进程,不受用户控制,不依赖于终端,随着系统的开启而开启,随着系统的关闭而消亡。

5、进程号

pid(process ID):当前进程的进程号。

ppid(parent process ID):父进程号。

每一个子进程都不会凭空产生,都由父进程创建而生(除了守护进程等伴随操作系统的特殊进程),

每一个子进程和其父进程都有自己的ID号,也就是进程号。

进入到该文件下:cd /proc/

可以查看操作系统中所有的进程号。

6、Linux下5个特殊进程

1、0号进程,又叫idel进程没有父进程,系统启动时创建的,维护系统运行,当系统内没有任何进程需要执行时运行0号进程,系统处于待机状态。

2、1号进程,又叫 init进程父进程就是0号进程,也被称为守护进程,当有子进程处于僵尸状态时,1号进程会为子进程收尸。

3、2号进程,又称为kthreadd进程,是调度进程,完成任务器各项任务的调度工作。

4、僵尸进程:父进程还在运行,但是子进程已经消亡,而父进程并没有回收子进程的资源,这时子进程就被称为僵尸进程。

5、孤儿进程:父进程已经消亡,但是子进程还在运行,此时子进程就被称为孤儿进程。

7、进程的shell指令(ps top kill pidof)

1、查看进程状态:ps -ajx

 PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND0      1      1      1 ?            -1 Ss       0   0:03 /sbin/init splash0      2      0      0 ?            -1 S        0   0:00 [kthreadd]2      3      0      0 ?            -1 I<       0   0:00 [rcu_gp]2      4      0      0 ?            -1 I<       0   0:00 [rcu_par_gp]2      5      0      0 ?            -1 I        0   0:00 [kworker/0:0-cgr]2      6      0      0 ?            -1 I<       0   0:00 [kworker/0:0H-kb]2      8      0      0 ?            -1 I<       0   0:00 [mm_percpu_wq]2      9      0      0 ?            -1 S        0   0:00 [ksoftirqd/0]2     10      0      0 ?            -1 I        0   0:02 [rcu_sched]2     11      0      0 ?            -1 S        0   0:00 [migration/0]2     12      0      0 ?            -1 S        0   0:00 [idle_inject/0]2     14      0      0 ?            -1 S        0   0:00 [cpuhp/0]2     15      0      0 ?            -1 S        0   0:00 [kdevtmpfs]2     16      0      0 ?            -1 I<       0   0:00 [netns]2     17      0      0 ?            -1 S        0   0:00 [rcu_tasks_kthre]
PPID:父进程进程号
PID:当前进程的进程号
PGID:当前进程组的进程号
TTY:如果是?表示不依赖于任何终端而运行。
STAT:进程的状态(S:可中断的休眠态,+:前台运行状态)
TIME:进程执行的时间
COMMAND:进程的名称。

2、查看进程的CPU占用率 ps -aux

ubuntu@ubuntu:proc$ ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 159804  7232 ?        Ss   10:23   0:03 /sbin/init splash
root          2  0.0  0.0      0     0 ?        S    10:23   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        I<   10:23   0:00 [rcu_gp]
root          4  0.0  0.0      0     0 ?        I<   10:23   0:00 [rcu_par_gp]
root          5  0.0  0.0      0     0 ?        I    10:23   0:00 [kworker/0:0-cgr]
root          6  0.0  0.0      0     0 ?        I<   10:23   0:00 [kworker/0:0H-kb]
root          8  0.0  0.0      0     0 ?        I<   10:23   0:00 [mm_percpu_wq]
root          9  0.0  0.0      0     0 ?        S    10:23   0:00 [ksoftirqd/0]
root         10  0.0  0.0      0     0 ?        I    10:23   0:02 [rcu_sched]
root         11  0.0  0.0      0     0 ?        S    10:23   0:00 [migration/0]
root         12  0.0  0.0      0     0 ?        S    10:23   0:00 [idle_inject/0]
root         14  0.0  0.0      0     0 ?        S    10:23   0:00 [cpuhp/0]
root         15  0.0  0.0      0     0 ?        S    10:23   0:00 [kdevtmpfs]
root         16  0.0  0.0      0     0 ?        I<   10:23   0:00 [netns]
USER :当前用户
%CPU:CPU占用率
%MEM:内存占用率
START:创建时间

3、进程之间的树状关系 pstree

ubuntu@ubuntu:proc$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]├─NetworkManager─┬─2*[dhclient]│                └─2*[{NetworkManager}]├─VGAuthService├─accounts-daemon───2*[{accounts-daemon}]├─acpid├─avahi-daemon───avahi-daemon├─bluetoothd

4、查看进程间的关系 ps -ef

ubuntu@ubuntu:proc$ ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 10:23 ?        00:00:03 /sbin/init splash
root          2      0  0 10:23 ?        00:00:00 [kthreadd]
root          3      2  0 10:23 ?        00:00:00 [rcu_gp]
root          4      2  0 10:23 ?        00:00:00 [rcu_par_gp]
root          5      2  0 10:23 ?        00:00:00 [kworker/0:0-cgr]
root          6      2  0 10:23 ?        00:00:00 [kworker/0:0H-kb]
root          8      2  0 10:23 ?        00:00:00 [mm_percpu_wq]
root          9      2  0 10:23 ?        00:00:00 [ksoftirqd/0]
root         10      2  0 10:23 ?        00:00:02 [rcu_sched]
root         11      2  0 10:23 ?        00:00:00 [migration/0]

5、动态查看进程的状态 top

top - 14:13:35 up  3:50,  1 user,  load average: 0.00, 0.01, 0.00
任务: 315 total,   1 running, 248 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.1 us,  2.1 sy,  0.0 ni, 95.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1987060 total,   130112 free,  1469492 used,   387456 buff/cache
KiB Swap:   969960 total,   874984 free,    94976 used.   331056 avail Mem 进程 USER      PR  NI    VIRT    RES    SHR � %CPU %MEM     TIME+ COMMAND                                                                                1649 ubuntu    20   0  600048 102164  28996 S  3.0  5.1   0:47.74 Xorg                                                                                   1846 ubuntu    20   0 3041844 156168  41260 S  2.0  7.9   0:59.59 gnome-shell                                                                            2255 ubuntu    20   0  922236  75776  33960 S  1.7  3.8   0:38.26 x-terminal-emul                                                                        10 root      20   0       0      0      0 I  0.3  0.0   0:02.19 rcu_sched                                                                              647 avahi     20   0   47408   3244   2836 S  0.3  0.2   0:06.59 avahi-daemon                                                                           3455 root      20   0       0      0      0 I  0.3  0.0   0:08.05 kworker/0:2-eve                                                                        1 root      20   0  159804   7232   5244 S  0.0  0.4   0:03.49 systemd                                                                                2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                               3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp                                                                                 4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_par_gp                                                                             5 root      20   0       0      0      0 I  0.0  0.0   0:00.02 kworker/0:0-cgr                                                                        6 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:0H-kb                                                                        8 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 mm_percpu_wq                                                                           9 root      20   0       0      0      0 S  0.0  0.0   0:00.27 ksoftirqd/0                                                                            11 root      rt   0       0      0      0 S  0.0  0.0   0:00.09 migration/0                                                                            12 root     -51   0       0      0      0 S  0.0  0.0   0:00.00 idle_inject/0

8、向进程发送信号指令 kill

发送信号:kill -信号号 进程ID

8、进程状态和切换

1、进程创建后进入就绪队列

2、通过CPU的时间片轮询,处于运行态

3、如果被外部事件如IO,中断,会处于阻塞状态。

4、解除阻塞状态后,会重新进入到就绪队列。

5、直至运行结束处于消亡态。

9.进程的创建

fork函数

 #include <sys/types.h>#include <unistd.h>pid_t fork(void);功能:创建子进程,子父进程空间独立,在父进程中返回值时子进程的ID,在子进程中返回值是0,创建子进程失败返回-1.参数:无返回值:在父进程中返回值时子进程的ID,在子进程中返回值是0,创建子进程失败返回-1。

创建子进程

#include <myhead.h>int main(int argc, const char *argv[])
{pid_t  pid = fork();//创建子进程if(pid==0)//进入到子进程执行流{//子进程执行流printf("我是子进程\n");}else if(pid>0)//进入到父进程执行流{//进入到父进程执行流sleep(1);printf("我是父进程\n");printf("父进程中子进程的ID:%d\n",pid);}else{perror("fork");return -1;}printf("*************\n");//子父进程都会执行这行代码while(1);return 0;
}

写时拷贝技术

1、写时拷贝技术,当创建子进程后,子父进程空间在发生数据写操作时就独立。

2、子进程中对局部变量的操作不会影响到父进程,父进程中对局部变量的操作不会影响到子进程。

3、进程之间数据不共享。

1、讨论子父进程是否共享全局变量

fork之后子父进程独立运行,子进程拷贝了父进程的资源,所以子进程修改变量,不会影响到父进程内的变量。

#include <myhead.h>
int n = 100;
int main(int argc, const char *argv[])
{pid_t  pid = fork();//创建子进程if(pid==0)//进入到子进程执行流{//子进程执行流n = n+1;printf("我是子进程 n= %d\n",n);}else if(pid>0)//进入到父进程执行流{//进入到父进程执行流sleep(1);printf("我是父进程n = %d\n",n);printf("父进程中子进程的ID:%d\n",pid);}else{perror("fork");return -1;}printf("*************\n");while(1);return 0;
}

局部变量不会共享

#include <myhead.h>
int main(int argc, const char *argv[])
{int n = 100;pid_t  pid = fork();//创建子进程if(pid==0)//进入到子进程执行流{//子进程执行流n = n+1;printf("我是子进程 n= %d\n",n);}else if(pid>0)//进入到父进程执行流{//进入到父进程执行流sleep(1);printf("我是父进程n = %d\n",n);printf("父进程中子进程的ID:%d\n",pid);}else{perror("fork");return -1;}printf("*************\n");while(1);return 0;
}

作业

#include <luochen.h>
int main(int argc, const char *argv[])
{int fd1= open("./1.txt",O_RDONLY);int fd2= open("./2.txt",O_CREAT|O_TRUNC|O_WRONLY,0664);int fd3= open("./3.txt",O_RDONLY);int fd4= open("./4.txt",O_CREAT|O_TRUNC|O_WRONLY,0664);pid_t pid = fork();if(pid==0){if(-1==fd1){perror("open");return -1;}char buff[1024];while(1){int res = read(fd1,buff,sizeof(buff));if(res == 0){break;}write(fd2,buff,res);}}if(pid>0){if(-1==fd3){perror("open");return -1;}char buff[1024];while(1){int res = read(fd3,buff,sizeof(buff));if(res == 0){break;}write(fd4,buff,res);}}return 0;
}
#include <luochen.h>
int main(int argc, const char *argv[])
{   int fd =open("./1.txt",O_RDONLY);if(-1==fd){perror("open");return -1;}pid_t pid = fork();int len = lseek(fd,0,SEEK_END);int half = len/2;if(pid>0){//父进程lseek(fd,0,SEEK_SET);int fd1 = open("./5.txt",O_CREAT|O_TRUNC|O_WRONLY);char *buff = malloc(sizeof(char)*half);int res = read(fd,buff,half);write(fd1,buff,res);close(fd1);}if(pid == 0){//子进程lseek (fd,half,SEEK_SET);int fd2 = open("./6.txt",O_CREAT|O_TRUNC|O_WRONLY);char *buff = malloc(sizeof(char)*(len-half));int res = read(fd2,buff,len-half);close(fd2);}close(fd);return 0;
}

相关文章:

day28 文件IO及进程线程基础

讨论光标共享情况 1.dup和dup2定义变量赋值都共享光标 2.使用两个描述符调用两次open函数打开同一个文件&#xff0c;不共享光标 #include <myhead.h>int main(int argc, const char *argv[]) {//1、描述符赋值给新的变量char buff[1024] "abcdefg";int ne…...

【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 前言 随着无服务计算的兴起和大数据环境中的数据集成需求&#xff0c; 需要使用某些轻量级的服务&#xff0c;来实现一些简单操作。因此Azure Function就成了微软云上的一个必不可少的组成部分。 …...

前端文件下载

这里写自定义目录标题 前端文件下载方法使用a标签使用iframe标签二进制流 前端文件下载方法 使用a标签 /*** 文件下载方法 使用a标签* 存在浏览器下载时&#xff0c;太快的话&#xff0c;会取消上次的下载请求* param {*} href* param {*} filename*/ export function downlo…...

前端成长之路:HTML(3)

在HTML中&#xff0c;有列表标签。列表最大的特点是整齐、简洁、有序&#xff0c;用列表进行布局会更加自由方便。根据使用的情景不同&#xff0c;可以将列表分为三大类&#xff1a;无序列表、有序列表和自定义列表。 无序列表 在HTML中使用<ul>标签定义一个无序列表&a…...

无人机自动机库的功能与作用!

一、无人机自动机库的功能 智能停放与管理 无人机自动机库为无人机提供了一个安全、可靠的停放环境。通过先进的感知技术和安全防护措施&#xff0c;它能够实时监测周围环境&#xff0c;确保无人机免受恶劣天气或潜在风险的侵害。 无人机在机库内可以实现智能停放&#xff0…...

ubuntu 新建脚本shell并增加图标 双击应用实现python运行

1.使用nano创建shell脚本文件 需要在终端窗口中输入“nano”以打开文本编辑器。 nano 在创建脚本文件前&#xff0c;我们要了解脚本文件是如何运行的&#xff1a; 直接运行&#xff1a;直接在终端直接输入需要运行的脚本文件名称&#xff0c;系统或用缺省版本的shell运行脚…...

ANR 分析SOP

遇到ANR问题不要慌&#xff0c;大部分情况下可能是系统or测试手段问题&#xff0c;我们按照如下关键字排查定位 文章目录 1 是否是 heapdump 导致&#xff1f;1.1 dump开始1.2 dump结束 1 是否是 heapdump 导致&#xff1f; 使用 hprof: heap dump 关键词过滤&#xff0c;在d…...

COLA学习之环境搭建(三)

小伙伴们&#xff0c;你们好&#xff0c;我是老寇&#xff0c;上一节&#xff0c;我们学习了COLA代码规范&#xff0c;继续跟老寇学习COLA环境搭建 首先&#xff0c;打开GitHub&#xff0c;搜索 COLA 请给这个COLA项目点个Star&#xff0c;养成好习惯&#xff0c;然后Fork到自…...

CSS输入框动态伸缩动效

前言 下面我们将会做出如下图输入框样式&#xff0c;并且附上组件代码&#xff0c;有特殊需求的可以自行优化同理&#xff0c;下拉框的话只要把el-input标签修改掉即可 MyInput组件 <template><div class"my-input" click.stop"showInput !showInput…...

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】&#xff0c;点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…...

探索视觉与语言模型的可扩展性

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

sock_recvmsg函数

sock_recvmsg 是一个在 Linux 内核中用于处理接收网络数据的函数。它通常与套接字 (socket) 操作相关,特别是在网络协议栈中用于处理从网络中接收到的数据。这个函数是内核的一部分,提供了一种机制把接收到的数据从网络协议栈转移到用户空间,或者在内核内进一步处理。 以下是…...

HCIA笔记8--DHCP、Telnet协议

1. DHCP介绍 对于主机的网络进行手动配置&#xff0c;在小规模的网络中还是可以运作的&#xff0c;但大规模网络是无力应对的。因此就有了DHCP协议来自动管理主机网络的配置。 DHCP(Dynamic Host Configuration Protocol): 动态主机配置协议&#xff0c;主要需要配置的参数有…...

Scala的单例对象

在Scala中&#xff0c;单例对象是一种特殊的类&#xff0c;它只能有一个实例&#xff0c;并且这个实例在需要时会自动创建。单例对象在Scala中通过object关键字来定义&#xff0c;它类似于Java中的静态成员和方法&#xff0c;但更加灵活和强大。 定义单例对象 以下是定义一个…...

【笔记】分布式任务调度平台XXL-JOB

这篇笔记主要记录以下内容&#xff1a; &#xff08;1&#xff09;第一次启动xxl-job的过程 &#xff08;2&#xff09;模块、文件、数据库&#xff08;表和字段&#xff09;的作用 &#xff08;3&#xff09;极少的源码解读&#xff08;XxlJobConfig&#xff09; 有点像实…...

PDFMathTranslate,PDF多语言翻译,批量处理,学术论文,双语对照(WIN/MAC)

分享一个非常实用的PDF文档翻译项目——PDFMathTranslate。作为一个经常逛GitHub的开发者&#xff0c;我总喜欢翻看各种项目附带的论文&#xff0c;虽然大多时候是瞎研究&#xff0c;但却乐在其中。该项目能够完美保留公式、图表、目录和注释&#xff0c;对于需要阅读外文文献的…...

zerotier实现内网穿透(访问内网服务器)

moo 内网穿透工具 实用工具&#xff1a;zerotier 目录 内网穿透工具 Windows下zerotier安装 ubuntu系统下的zerotier安装 使用moon加速 Windows下zerotier安装 有了网络之后&#xff0c;会给你一个网络id&#xff0c;这个网络id是非常重要的&#xff0c;其它设备要加入…...

Formality:set_svf命令

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 svf文件的全称是Setup Verification for Formality&#xff0c;即Design Compiler提供给Formality的设置验证文件&#xff0c;它的作用是为Formality的指导模式(Gui…...

IDEA报错:无效的源发行版、无效的目标发行版

1. 无效的源发行版 创建项目的时候&#xff0c;会遇见这个报错&#xff0c;原因就是编译的JDK版本与发布版本不一致。 解决方法&#xff1a; 1.1. 找到问题所在地 英文&#xff1a;File -> Project Structure ->Project Settings 中文&#xff1a;文件->项目结构 …...

#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit插件使用及编写01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...