Skip to content

Latest commit

 

History

History
80 lines (67 loc) · 4.22 KB

learn.md

File metadata and controls

80 lines (67 loc) · 4.22 KB

动态规划(一个问题必须拥有最优子结构,才能使用动态规划去解决)

  • 动态规划的递推写法总是从这些边界出发,通过状态转移方程扩散到整个dp数组
  • 而使用递归写法的计算方式是自顶向下(Top-down Approach),即从目标问题开始,将它分解成子问题的组合,直到分解至边界为止

线程与进程

进程 是操作系统分配资源的基本单位,代表正在执行的程序实例。每个进程都有自己的内存空间、数据、堆栈以及其它执行资源。进程是操作系统进行资源管理的基本单位。 线程 是进程内的一个执行单元,也被称为轻量级进程(LWP)。一个进程可以有多个线程,它们共享进程的资源(如内存、文件描述符等),但每个线程有自己独立的执行栈和寄存器。

gcc use

编译文件 例:gcc test.c -o test.o 运行文件 ./test.o (此处可传入命令行参数) 在编译时加入 -fsanitize=address 可检查内存泄露 如 gcc -fsanitize=address test.c -o test

文件

  • 文件句柄
文件句柄是操作系统为管理和操作打开文件而分配的标识符。它使程序能够抽象地对文件进行读写操作,  
而不需要直接操作文件系统中的文件路径。操作系统通过文件句柄来管理文件访问权限、资源分配等内容,  
确保程序与文件系统的交互高效且安全.
  • 文件描述符
操作系统中用于标识打开文件的一个整数标识符,它由操作系统为每个打开的文件分配  
文件描述符是操作系统内部使用的一个数字(通常是非负整数),它标识一个进程打开的  
文件或其他输入输出流(如网络连接、管道等)。程序通过文件描述符来与文件进行交互,而不需要直接使用文件路径。
  • 文件锁
一种操作系统提供的机制,用于管理多个进程或线程对同一文件的访问,避免竞争条件和数据不一致性问题。  
在并发环境中,当多个进程同时访问或修改同一个文件时,文件锁可以确保只有一个进程能在某一时刻修改文件内容,
从而避免文件损坏或产生冲突

  • 符号链接
操作系统中的一种特殊类型的文件,它指向另一个文件或目录的位置。它可以被认为是一个“快捷方式”或“别名”,
通过符号链接,用户可以访问或引用另一个文件或目录,而不需要直接操作原始文件或目录

  • 文件戳
文件在文件系统中记录的与文件相关的日期和时间信息

  • 权限掩码
用于在操作系统中控制文件和目录的权限的二进制标志。它通常用于指定谁可以访问文件或目录,  
并决定他们可以执行哪些操作(如读取、写入和执行)。权限掩码通常与用户、组和其他用户的权限相关

  • 阻塞与非阻塞
特性                  阻塞操作                                      非阻塞操作
执行方式      在等待条件满足时,进程或线程会被挂起,暂停执行      操作立即返回,不等待,继续执行后续代码
等待状态      操作会使进程或线程进入等待状态,直到操作完成       操作立即返回,进程或线程不进入等待状态
返回值        操作完成后返回结果                             操作未完成时返回特定的值(如 -1 或 EAGAIN)
常见应用场景   网络 I/O、文件 I/O 操作、进程同步等            非阻塞网络 I/O、异步 I/O、文件操作等

  • 文件中“a+,r,w,w+" w+ 这玩意如果打开一个存在的文件会进行截断,将要写入的内存从头开始覆盖文件原本的内容, 因此一般在创建一个新的文件时用最好; a+ 对文件进行追加,并且是换行进行追加 r 读写文件中的内容 w 单纯允许写入,不可读文件内容

  • fprintf与fscanf fscanf 读取文件中的字符串,但在遇到空格与环行符就会停止; fprintf 在文件中另起一行写入内容

int fprintf(FILE* stream, const char* format, ...)
int fscanf(FILE* stream, const char* format, ...);

二者都是将数据以字符串的形式存储在文件中 可以利用

数据结构