linux.6 基础IO
文章目录
- 1.C语言文件接口的复习
- 2.系统文件的IO
- 2.1 系统调用接口open和close
- 2.2 系统调用接口write和read
- 3.深入理解文件描述符
- 3.1 进程和文件的对应关系
- 3.2 深入理解重定向
- 3.3 dup2
- 4.缓冲区
- 5.理解文件系统
- 5.1 磁盘
- 5.2 软链接和硬链接
- 6.动态库与静态库
- 6.1 动静态库的基本原理
- 6.2 认识动态库与静态库
- 6.3 动静态库各自的特征
1.C语言文件接口的复习
我们fopen创建文件时,是进程在当前目录下创建的文件,当前目录是运行程序所在的目录,不是可执行程序所在的目录。一般情况下直接 ./ 可执行程序得到的文件在可执行文件目录下是因为当前目录恰好就是可执行文件你的目录。如果 cd … 到上级目录,在上级目录下运行 ./10-12/testout ,文件就会被创建在10-12所在的目录下。需要掌握的三种文件打开方式 w , r , a(追加写入)。
打开文件,一定是进程运行的时候打开的。读写,关闭都是进程完成的。在Linux中,一切皆文件,那么我们的显示器,键盘也是文件。既然我们的显示器和键盘都是文件,但是想要往屏幕打印数据和用键盘写入数据的时候,我们并没有打开任何的文件,那我们为什么可以直接printf,scanf ?那是因为任何的进程在运行的时候,都会默认打开三个输入输出流:stdin ,stdout , stderr 。
如何理解这三个输入输出流?实际上这三个输入输出流就是三个FILE*的文件指针,所以有着键盘显示器也是文件的理解。如何操作?我们可以把下面的fputs中的file换成stdout,那么我们想要写入的字符串就会写到显示器中;如果我们把fgets中的file换成stdin,就会从输入的字符串中读取字符串打印到显示器上。
输入字符串到文件中fputs
从文件中获取字符串fgets
2.系统文件的IO
2.1 系统调用接口open和close
系统调用open有三个参数:分别是打开文件的路径文件名,打开方式,默认的文件权限。其中打开文件的方式是由宏代替的,实际上是系统函数参数传参标志位,有32个比特位,所以理论上可以传递32中标志位,在二进制序列中,只有一个比特位是1,假如O_RDONLY 对应的二进制是0001,O_WRONLY对应的二进制是0010,O_CREAT对应的二进制是0100,如果想要创建文件并只读,可以O_RDONLY | O_CREAT 使得标志位为0101而达成效果。如果想要检查是否设置完成某种方式,可以在open的程序中判断。例如 way = O_RDONLY | O_CREAT ,想要检查是否只读可以 if(way & O_RDONLY) 来判断结果。mode 是默认打开文件的权限,一般用8进制数表示,如果想要mode的值就是文件对应的权限,需要在open之前将系统 umask设置为0 ,umask(0)。
open的返回值是文件描述符,实际上就是数组下标。当我们在进程中打开多个文件时,可以发现这些open的返回值都不同,都是从3开始递增的,因为0,1,2对应的是输入输出流的文件描述符。如果返回-1就表示打开失败。打开文件之后,要用close关闭文件,要注意的是,close的参数是文件描述符。
2.2 系统调用接口write和read
可以发现系统调用接口对应着C语言的一些接口,例如open和fopen,write和fwrite,read和fread,close和fclose。这时C语言封装了这些系统接口,在底层用的其实就是这些系统接口,使得用户用起来更加的方便,也使得语言具有了跨平台性。
write
write有三个参数,第一个参数是要写入文件的文件描述符,第二个是要写入的数据的指针,第三个是要写入的大小。最终写入的大小由ssize_t决定。写入成功,返回写入的字节大小,返回0表示没有写入内容,返回-1表示写入失败。
read
read由三个参数,第一个参数是要读取的文件的文件描述符,第二个是读取到buf中,第三个是读取的字节大小。如果读取成功,返回读取的字节数,如果返回0表示文件结束,如果返回-1表示读取失败。
3.深入理解文件描述符
系统文件分为内存文件和磁盘文件。一个进程可以打开多个文件,那么多个进程就可以打开很多个文件,所以在任何时刻,都可能存在着大量的已经打开的文件,这时就需要操作系统对文件进行管理,这就是操作系统的文件管理。和操作系统的进程管理类似,既然要管理,就需要先描述再组织。操作系统对在内存中的内存文件描述成一个 struct file 的结构体,然后以双链表的形式对每个文件的结构体进行管理。文件由内容和属性组成,在磁盘文件中保存了文件的内容和属性,当文件加载到内存中变成内存文件时(类似程序加载为进程),加载到内存中的更多的是文件的属性信息,延后式的慢慢加载数据。
3.1 进程和文件的对应关系
当系统内存中存在着大量的文件,每个文件都会被描述成一个struct file 被操作系统用双链表管理起来,那么进程在打开或者更改文件的时候是通过什么样的对应关系找到相应的文件的呢?
当程序运行起来变成进程,相应的在内存中操作系统会创建 task_struct ,而在 task_struct 中有一个指针指向 struct files_struct 的结构体,这个结构体内包含了一个指针数组 struct file* fd_array[32]和其他的内容,而 struct files_struct 包含的指针数组内的指针就是指向各个文件的 struct file 的。所以当进程对文件进行操作时,例如open时,系统会将磁盘中的问价的内容和属性加载到内存中,形成,文件的 struct file ,然后用链表将 struct file 管理起来,然后系统再将进行操作的文件进行分配,最后将文件的 struct file 的地址填入到 struct file* fd_array[32]中,然后再将该位置数组的下标返回给调用方,这时用户就拿到了文件描述符,这也就是为什么文件描述符就是数组下标的原因。
进而现在可以理解为什么open,write,read的时候,参数都含有文件描述符了,正是进程要通过文件描述符找到指针数组相应下标中存放的地址进而找到文件的struct file,才能对文件进行操作。那么进程默认打开0,1,2实际上就是系统检测到键盘显示器后自动创建了0,1,2三个struct file将它们自动分配到数组下标0,1,2的位置。文件描述符的分配是有规则的,是从没有被占用的最小的下标开始依次分配。
fopen 究竟在做什么?1.给调用的用户申请 struct FILE 结构体变量FILE* fp = fopen("log.txt","w");
,并返回地址 FILE* 2.在底层通过open打开文件,并返回fd,把 fd 填入 FILE 变量中的 fileno。
3.2 深入理解重定向
重定向的本质时修改文件描述符fd的下标。当没有close(1)的时候,write(1)就直接将字符串写入到了显示器上,如果close(1),那么fd_array[1]所存放的就不再是显示器文件的地址,根据文件描述符的分配规则,后来open的test.txt的struct file 的地址将会放到 fd_arrray[1]中,所以后来再write(1)后,字符串就被写入到test.txt中。
从上面的代码中可以看到,表面上 open 和下面的 printf 和 fputs 是没有关系的,因为 printf 和 fputs 是往输出流也就是显示器中显示数据的,不管上面对文件进行怎样的操作,它们都是互不干涉的,但是我们 close(1),发现结果影响到了最后输出的结果,也就是说 fd=1 和 FILE* stdout 是存在着某一种联系的。stdout 本质上是一个指向 FILE结构体 的指针,而在这个 FILE 的结构体中就包含了 fd 的信息。而 stdout 的 FILE 中,它的 fd 被指定为了 1 ,如果不 close(1) ,那么 fputs("…",stdout) 就找到 fd_array[1] 的位置从而找到显示器文件的地址。但是如果 close(1) ,只是说 fd_array[1] 存放的不再是显示器文件的地址,open之后存放的是 test.txt 文件 struct file 的地址,这样想要显示的字符串就 fputs 到了 test.txt 中,所以这些C语言的文件接口只认 stdout ,而 stdout 的 fd永远等于1,至于 fd_array[1] 指向的是谁它们是不管的,这样就造成了输出重定向,这也是输出重定向的原始原理。
输入重定向,从文件输入
追加重定向
那么总的来说,输出重定向 > 实际上就是先 close(1) ,然后用 O_WRONLY 的方式打开文件,追加重定向 >> 实际上就是先 close(1),然后用 O_WRONLY | O_APPEND 的方式打开文件,输入重定向 < 实际上就是先 close(0), 然后用 O_RDONLY 的方式打开文件。
3.3 dup2
我们也可以通过 dup2 来进行重定向, fd_array[ oldfd ] 存放的 file* 指针拷贝到了 fd_array[ newfd ] 中,完成了重定向。
4.缓冲区
凡是显示到显示器上的内容,都是字符,凡是从键盘读取的内容也都是字符,所以,键盘和显示器一般称之为“字符设备”。缓冲分为三种,分别是无缓冲,行缓冲,全缓冲。常见的行缓冲有对显示器进行刷新数据,在我们printf 一段内容时,该内容被保存到内存的行缓冲区,只有当输入 \n ,或者程序结束 ,或者行缓冲区满了的时候内容才会被刷新到显示器上。全缓冲一般是对磁盘文件写入的时候会用到,必须要将全缓冲区写满或者进程退出才会刷新到磁盘中。观察以下的代码和现象:
在运行程序的时候,打印了正常的三行字符串,但是我们把输出的结果重定向到文件中时,结果发生了变化。./testout 和 ./testout > log.txt 存在差异性的原因是 ./testout 运行程序后,打印用的是行缓冲,遇到 \n 马上被刷新出来,所以三行数据都被刷新出来;但是 ./testout > log.txt 是在写入文件,用的是全缓冲,\n 就不发挥作用了,即使打印了也不会刷新出来,要等程序结束才会刷新出来。而打印结果不同的原因是 ./testout 行缓冲区的数据被立马刷新,fork() 得到的子进程就拿不到缓冲区数据了所以子进程没有打印;而 ./testout > log.txt 之后全缓冲区中的数据没有被刷新出去,在程序结束前进行了 fork() ,使得子进程拿到父进程的缓冲区数据,父进程和子进程都要结束时,父进程的全缓冲区和子进程的全缓冲区都要刷新,但是进程具有独立性,这时子进程就要发生写时拷贝,从而父进程和子进程分别刷新得到两个 printf 和 fprintf 。但是为什么 write 数据没有打印两份呢?那是因为 write 没有缓冲区。
那么缓冲区是谁提供的?如果缓冲区是操作系统提供的,那么上面的所有接口数据都要打印两次,这就说明缓冲区是语言自带的,是由 struct FILE 维护的,这是用户缓冲区。我们打开文件,文件的 struct file 就维护了这一块用户缓冲区。如果要写入内容到显示器或者磁盘中,光有用户缓冲区是不行的,因为软件与硬件要进行交互一定要经过操作系统,所以在 kernal 区有内核缓冲区,用户缓冲区的内容会刷新到内核缓冲区中,然后在刷新到显示器或者磁盘文件中。
FILE结构体
struct FILE
{int fd;...//缓冲区
};
再观察下面的代码:
如果我们在程序中不使用 fflush 进行手动刷新,最后在进程结束之前进行 close(fd) ,因为写入文件是全缓冲,所以在进程结束时才会刷新缓冲区,但是因为我们把该文件描述符 fd 给关了,即使 FILE 中还维护着缓冲区,最后进程想刷新该文件的缓冲区也写入不到文件中去了,因为已经不能通过 fd 找到这个文件了,所以就没有内容刷新到文件中。如果我们用的是 fclose(stdout) ,那么系统知道要关闭文件,就会提前在关闭文件之前要进行刷新缓冲区(这个时候还可以通过文件描述符 fd 找到文件的 struct file,就可以写入文件),再关闭文件,所以内容刷新到了文件中。
再次理解Linux下一切皆文件:一切硬件的读和写的方法实现不尽相同,每个硬件都有它们的 write() ,read() 等等,但是它们都可以被描述成一个 struct file ,其中有一些函数指针例如 void (*read) () 和 void (*write) () ,这是一些通用接口,当 struct file 具体描述的是哪一个硬件,就将这些函数指针指向了硬件自己的接口函数,在操作系统看来,这些硬件就变成了一个个的 struct file ,可以通过 struct file 中的函数指针去对硬件进行操作,而底层硬件实现的接口是怎么样的,系统并不关心。
接下来我们可以完善之前的简易shell的代码,使得程序可以完成输出重定向。子进程是会继承父进程打开的文件信息的,进程替换不会影响打开的文件信息。
5.理解文件系统
在我们输入ls -a -i -l 的时候,左边第一列代表的是 inode 编号。文件是由文件属性(元信息)和文件内容组成。而Linux把文件内容与文件属性进行了分开存储。而 inode 是任何一个文件的属性信息的集合,Linux 中每个文件都有一个 inode ,那么系统中就存在着大量的 inode ,所以就需要一个 inode 编号来进行区分。inode 和 文件内容都是在磁盘中存储的。实际上我们的 ls 是用来查看文件的属性信息, cat 来查看文件的内容。
5.1 磁盘
磁盘是一个效率很低的外设,寻址方式是磁面+柱面+扇区。磁盘可以理解为线性结构,为了管理磁盘要对磁盘进行分区,至于对每个分区的管理方法是由文件系统决定的,这也叫对分区的格式化。
Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。
超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。
GDT,Group Descriptor Table:块组描述符,描述块组属性信息。
块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用,用一个二进制的序列表示,如果该位置下Block 被占用,那么这个比特位会置1。
inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。同样的也是有一个二进制序列被占用则该比特位为1,没有占用该比特位为0。
inode节点表:其中存放的是一个一个的 inode 结构体,分区之后 inode 的个数就是确定的,结构体内存放了 inode号,与数据区对应的 block 数组,文件属性。
数据区:存放文件内容 。
总的来说,inode 和数据区有没有被占用,占用了多少,还剩多少是在超级块中体现出来,而哪些占用了,哪些没有被占用,是在两个位图中体现出来。inode Table 里的 inode 结构体存放着文件的 inode 号以及文件的属性信息,还有和数据区的对应关系,可以通过 inode 结构体里的数组找到文件在数据区的数据。所以文件的属性信息和数据信息是分离存储的。
那么回过头来,创建一个文件的过程是怎么样的呢?想要创建文件,就得到 inode bitmap 中去遍历找剩下的 inode ,在 inode Table中申请一个 struct inode,然后存放该文件的属性信息。创建完成之后,如果我们想要往文件中写入1kb的数据,例如往test.c中写入printf(“hello world”); 首先得通过文件名 test.c 找到该文件的 inode,在通过 inode 找到描述该文件数据区的数组,然后再通过到 block bitmap 中遍历找到可用的数据区 block 的位置,然后申请空间再将数据区与数组对应起来,然后再对数据区中的block进行写入,这样数据就被写入到文件中,然后再将文件的文件名和 inode 的映射关系填入到目录的内容当中。删除文件只要修改两个位图即可,将刚刚申请的比特位为1的位置为0,目录内容中的该文件名和inode的映射关系进行清除就完成了删除,而不会对该 inode 和 block 中的数据进行清空,如果下次有文件的创建,如果需要用到这块空间,那么就会就行覆盖式的写入,所以不需要清空。这也是为什么拷贝的时候比较慢,删除的时候比较快的原因。这种方式也造成了删除的文件是可以恢复的。
那么如何理解目录?既然Linux下一切皆文件,所以目录也可以看作是文件,那么目录就应该也有自己的 inode,和文件一样,目录的 inode 里存放了目录的属性信息,但是目录的内容存放的是当前目录下的文件名和文件名对应的 inode 指针,是一种映射关系,所以得到结论:文件名并没有在 inode 中保存,包括目录本身,当前目录下的所有文件的文件名都保存在该目录的数据区中,对于单个文件,它只有 inode 编号,并没有存储文件名。也就是说操作系统认识一个文件是通过 inode 编号认识的,而不是通过文件名认识的。目录也是文件,也有inode属性,也有内容。
对一个目录ls -i ,实际上就是将该目录的内容打印出来;
对一个目录ls ,实际上就是显示目录内容中的文件名;
对一个目录ls -l,实际上就是显示目录内容中的文件名,并通过文件名与各个文件的inode的映射关系找到各个文件的属性信息并显示出来
在目录下对一个文件进行cat,实际上就是在目录内容中找到该文件的文件名,并通过文件名和inode的映射关系找到该文件的inode,在通过该文件的inode找到该文件的内容数据,并显示出来。
5.2 软链接和硬链接
软链接和硬链接的区别:
1.软链接是一个独立的文件,有自己独立的 inode ,文件内容存放的是 testout 的路径,硬链接没有独立的 inode。
2.软链接相当于快捷方式,硬链接本质没有创建文件,只是建立了一个文件名和已有的 inode 的一个映射关系,并写入当前目录。例如 . 就是当前目录的一个别名, … 就是上级目录的一个别名,这样方便了目录之间通过相对路径进行跳转。上面的代码中发现 … 对应的硬链接数是 14 个,我们进入上级目录发现,上级目录中有12个目录,这12个目录里的 … 对应的是上级目录的硬链接,加上 . 和目录本身刚好是14个。
硬链接的本质实际上是多个文件名对应了一个inode,而这个硬链接数就是引用计数,只有当引用计数为1的时候删除该文件该文件才会真正被删除。
文件的ACM时间:
Access:最后一次访问的时间
Modify:文件内容最后一次修改的时间
Change:文件属性最后一次修改的时间
6.动态库与静态库
6.1 动静态库的基本原理
动静态库的本质是可执行程序的“半成品”,像 printf , scanf 这些函数使用者只要会用就行,函数的具体实现是在哪里呢?C语言的处理分为4个部分,预处理,编译,汇编,链接,经过汇编之后,所有的 .c 文件都变成了二进制的 .o 文件, .o 文件里包含的是大量的方法,这些 .o 文件可以与 其他的 main.o 文件进行链接,最后形成可执行程序。所有库的本质是一堆 .o 文件的集合,不包含 main ,但是包含了大量的方法。
6.2 认识动态库与静态库
我们在普通的test.c文件中调用 printf 函数时,实际上是调用了在 C 库中的 printf 函数方法。
在Linux中,动态库后缀为 .so ,静态库后缀为 .a
在Windows中,动态库后缀为 .dll ,静态库后缀为 .lib
6.3 动静态库各自的特征
当一个可执行程序使用的室静态库时,当进程运行起来,进程会直接把库的内容直接拷贝到该进程的正文代码段,当系统存在大量的进程,也要一次又一次的拷贝。而动态库则不一样,库文件是通过地址空间进行共享的,进程如果需要库中的某一个模块,就会利用进程空间的共享区和内存中的库文件通过页表的映射关系,要多少就给多少。
静态库的缺点:占空间(磁盘+内存)
静态库的优点:与库无关了,不需要库(就算是程序运行起来之后库被删了,进程也照样运行,因为已经拷贝了一份)
动态库的缺点:必须依赖库,没有库就无法运行(如果库被删,就不能通过页表找到所需要库的内容了)
动态库的优点:节省空间(内存空间)
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 前端开发工程师需要注意哪些性能优化方法?(JavaScriptvuejQuery)
目录 加载时 1.减少HTTP请求 2.使用服务端渲染 3.静态资源使用CDN 4.CSS写头部,JS写底部 关于 defer 与 async 区别: 5.字体图标代替图片 6.使用HTTP缓存 7.图片优化 8.其他方式 运行时 1.避免大量DOM元素与深层镶嵌 2.减少回流和重绘 3.降…...
2024/5/1 11:48:22 - “21天养成好习惯第一期“-3
对于x%y+z,y+z10,推出x%10,即xx%10因为x<10所以对于x对10取余就是x本身。 while是代表循环结构,sum表示前一项sum再相加, num为奇数输出为真,偶数输出为假,1为真.0为假…...
2024/4/20 13:52:24 - 关于什么是大研发的思考
近日与朋友聊天,聊到研发,他提出了一个问题:什么是大研发? 是啊!经常说大研发,究竟什么是大研发?有没有一个标准?还真没想过,都是凭感觉。 回来后问了一下万能的百度&a…...
2024/4/20 13:52:22 - CDP 平台简介
企业数据云概述 企业对大数据解决方案的要求:只要有必要,就可以在一个地方以原始的保真度来获取和合并任何数量或类型的数据,并尽可能快地向所有用户提供洞察力。 企业数据云公司 Cloudera 引入了企业数据云(EDC)的概…...
2024/4/27 9:01:34 - T31架构设计项目——Day1
T31架构设计项目 day1:2021-10-27 起始站T31架构设计项目day1:2021-10-27一、项目介绍二、需求分析核心:用户的诉求分析需求的内容分析需求的必要性伪需求:没有调研、没有目标、没有逻辑的无脑需求应对措施权力需求:老…...
2024/4/20 13:52:21 - VM虚拟机扩展磁盘空间
最初使用Linux虚拟机时定制的空间是20G,以为能够正常使用了,但是实际比预期使用的更快,需要将这个空间增大一些,所以就需要用到以下的 方法。 https://www.cnblogs.com/FengGeBlog/p/12146331.html 参照以上的文章进行了操作&…...
2024/4/28 9:46:51 - VINS-Fusion调试笔记
最近一直在断断续续的调试vins-fuison,odometry总是各种飘,令人头大。记录一下调试过程,供以后学习参考。首先选用一组可靠的视觉惯导传感器,如Realsense D435i,实践表明,传感器的校准十分重要。如果IMU和相…...
2024/4/29 3:02:44 - 选择RDP报表工具的原因
提到报表工具,想先告诉大家什么是报表?报表就是以各种形式直观的展现出数据统计、数据分析等。简单的说:报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:“报表 = 多样的格式 + 动态的数据”。报表工具就是让使用者更轻松、更方便的实现出各种形式的报表,达…...
2024/4/20 13:52:17 - IDEA编译环境中java的快捷输入方法
1. psvm -> 生成main方法 2. sout ->生成输出语句...
2024/4/21 17:36:37 - 这才是责任链模式的优雅使用方式
1 使用责任链模式设计热插拔权限控制 本文节选自《设计模式就该这样学》作者 谭勇德(Tom) 首先创建一个实体类Member。 public class Member {private String loginName;private String loginPass;private String roleName;public Member(String loginN…...
2024/4/27 20:51:34 - mui上拉加载出现错误mui(...).pullRefresh(...).endPullupToRefresh is not a function
把下面代码放在window.onload外面 mui.init({//初始化上拉加载更多,下拉刷新pullRefresh: {container: #pullrefresh,up: {contentrefresh: "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容contentnomore: 全部…...
2024/4/21 17:36:35 - 前端小知识点(4):JS 运行机制和存储
目录 被忽视的内存管理 JS工作原理 JS代码如何运行 JavaScript内存的生命周期 栈内存、堆内存 代码案例 运行结果 被忽视的内存管理 JavaScript不像C、C等语言——程序员必须通过调用内存管理接口,比如 malloc()和free(),自己手动分配和释放内存。…...
2024/4/21 17:36:34 - 日期使用(dayjs
转换 转换时间戳.unix() dayjs().startOf(day).unix()时间戳格式化.format() dayjs(time * 1000).format(YYYY/MM/DD) 基础使用 今天(开始- 结束:dayjs().startOf(day) - dayjs().endOf(day)明天 明天此时:dayjs().add(1, day) 明天00点&am…...
2024/4/21 17:36:34 - 专访|Moonbeam黑客松入选参赛项目——Walnut
每年区块链都会有团队衍生出创新的应用概念并引起热潮,从前几年的DeFi大爆发开始,每年都涌现出不同的关键词,CommunityFi就是其中一个。“社群”概念带出了区块链新的想象。 本次Moonbeam黑客松入选的项目Walnut正是CommunityFi的支持者&…...
2024/4/21 17:36:33 - 刘老师第三阶段知识点汇中:
一:SHA-1 (英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处…...
2024/4/21 17:36:32 - Hackergame 2021【web 卖瓜】
说实话 每次环境10分钟是真的恶心,这道题我记得因为时间截至大概在50次左右,独自解题解成了犊子。。。。。。 WP: 不接受小数,即使绕过了小数的限制但也会进入整数判断,四舍五入,换个方向考虑,…...
2024/4/23 7:24:31 - 交叉编译内容总结
关于交叉编译,在解压工具链之后,需要将工具链的位置配置到path内,方法是: 写入/etc/profile内,然后再执行:source /etc/profile 对于明远智睿编译链:添加的内容是: 对于飞凌的编译链…...
2024/4/21 17:36:29 - 流畅的python笔记(十一)接口:从协议到抽象类型
目录 一、python文化中的接口与协议 二、python喜欢序列 三、使用猴子补丁在运行时实现协议 四、Alex的水禽 五、定义抽象基类的子类(白鹅类型使用) 六、标准库中的抽象基类 collections.abc模块中的抽象基类 Iterable、Container、Sized Seque…...
2024/5/5 3:47:11 - k8s是什么,和docker有啥关系?
文章目录1,k8s的作用2,为什么用k8s?3,k8s的特性4,kubernetes集群架构和对应组件5,k8s核心概念我们都知道docker靠docker-compose单机编排容器,就是把多个容器放在脚本中一起运行,但是…...
2024/4/21 17:36:27 - ADS1256应用(一)
TI 公司的ADS1256芯片,是一款24BIT delta-sigma ADC.转换速度为30kSPS. 上图为ADS1256芯片结构和引脚图,从图可以看出ADS1256的通道资源比较丰富,可以配置成8个单端ADC通道,也可以配置成4个差分通道。ADS1256的通信接口为串行接口…...
2024/4/21 17:36:26
最新文章
- 网络基础(全)
协议 ”协议“就是一种约定。那么协议需要需要管理吗?答案是当然需要管理呀。 操作系统要进行协议管理——先描述,在组织协议本质就是软件,软件是可以进分层的协议在设计的时候,就是被层状的划分的为什么要划分为层状结呢&#…...
2024/5/5 4:18:19 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Unity核心学习
目录 认识模型的制作流程模型的制作过程 2D相关图片导入设置图片导入概述纹理类型设置纹理形状设置纹理高级设置纹理平铺拉伸设置纹理平台打包相关设置 SpriteSprite Editor——Single图片编辑Sprite Editor——Multiple图片编辑Sprite Editor——Polygon图片编辑SpriteRendere…...
2024/5/1 13:06:24 - 如何转行成为产品经理?
转行NPDP也是很合适的一条发展路径,之后从事新产品开发相关工作~ 一、什么是NPDP? NPDP 是产品经理国际资格认证,美国产品开发与管理协会(PDMA)发起的,是目前国际公认的唯一的新产品开发专业认证ÿ…...
2024/5/4 23:56:47 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/4 18:20:48 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/4 2:59:34 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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