02 2021 档案

摘要:1.网络应用程序设计模式 C/S - client/server 优点:1.协议选用灵活,可以自己规定协议 2.可以缓存数据 缺点:1.对用户安全构成威胁 2.开发工作量大,调试困难 B/S - browser/server 优点:可以跨平台 缺点:只能使用http协议 2.协议的概念 规则:数据传 阅读全文
posted @ 2021-02-23 15:09 さくらむすび 阅读(79) 评论(0) 推荐(0)
摘要:由于在一个进程中,各个线程都可以操作共享数据,cpu的调度问题,可能会导致数据混乱。例如两个线程在操作同一个全局变量,一个线程在对变量进行修改后,还为来得及将修改的变量写入内存,cpu就结束对这个线程的运行,去运行另一个线程。如果另一个线程也对这个变量进行了修改,并写入了内存,就可能导致数据混乱。这 阅读全文
posted @ 2021-02-22 13:06 さくらむすび 阅读(74) 评论(0) 推荐(0)
摘要:一、线程简介 一个单独的进程可以看做是一个线程。在创建线程之后,程序运行的地址空间没有发生变化,进程退出变成了线程,有主线程和子线程之分。创建出的主线程和子线程共用地址空间,有各自独立的PCB,子线程的PCB是从主线程中拷贝而来的。 主线程和子线程共享.text、.data、.bss、堆、环境变量、 阅读全文
posted @ 2021-02-20 13:59 さくらむすび 阅读(103) 评论(0) 推荐(0)
摘要:1.守护进程的特点 ①后台服务进程 ②独立于控制终端 ③周期性执行某任务 ④不受用户登录注销影响 ⑤一般采用以d结尾的名字 2.进程组 组里边的第一个进程就是进程组的组长,进程组的ID == 进程组组长的ID。 3.会话 - 多个进程组 创建一个会话的注意事项: ①不能是进程的组长 ②创建会话的进程 阅读全文
posted @ 2021-02-19 13:48 さくらむすび 阅读(148) 评论(0) 推荐(0)
摘要:一、信号的概述 信号是linux操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,原本操作将被中断。如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。 1.信号的特点: 阅读全文
posted @ 2021-02-19 10:10 さくらむすび 阅读(263) 评论(0) 推荐(0)
摘要:mmap的作用是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件。 1.函数原型:void *mmap(void *addr,size_t length,int prot,int flags,int fd,off_t offset); addr:映射区的首地址,可以传NULL lengt 阅读全文
posted @ 2021-02-18 13:39 さくらむすび 阅读(75) 评论(0) 推荐(0)
摘要:1.管道的概念 管道本质上是内核中的一个缓冲区,让具有血缘关系的进程之间可以进行通信。它其实相当于一个伪文件,不占用磁盘空间,我们可以通过和对文件一样的读写方式去操作管道。 管道具有两部分,读端和写端,分别对应两个文件描述符,数据从写端流入,从读端流出。 操作管道的进程被销毁之后,管道会被系统自动释 阅读全文
posted @ 2021-02-17 13:50 さくらむすび 阅读(225) 评论(0) 推荐(0)
摘要:1.一些概念: 孤儿进程 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,称为进程领养孤儿进程。 僵尸进程 进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。 僵尸进程不能使用kill命令清除,因为kill命令只是用来终止进程的 阅读全文
posted @ 2021-02-15 21:07 さくらむすび 阅读(106) 评论(0) 推荐(0)
摘要:fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数去执行另一个程序,当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行,调用exec函数并不创建新进程,所以调用exec前后进程的id没有变化 阅读全文
posted @ 2021-02-15 15:15 さくらむすび 阅读(215) 评论(0) 推荐(0)
摘要:1.fork函数 作用:创建一个子进程 函数原型:pid_t fork(); 返回值: 两个返回值,一个是父进程的返回值,其值为子进程的进程id;一个是子进程的返回值,为0代表创建成功,-1代表创建失败。 循环创建n个进程: 1 #include <stdio.h> 2 #include <unis 阅读全文
posted @ 2021-02-14 20:49 さくらむすび 阅读(64) 评论(0) 推荐(0)
摘要:1.简介 环境变量,是指在操作系统中用来指定操作系统运行环境的一些参数,通常具备以下特征: ①字符串(本质);②用统一的格式:名 = 值[:值];③值用来模描述进程环境信息; 引入环境变量表:须声明环境变量,extern char ** environ; 打印当前进程的所有环境变量 2.常见环境变量 阅读全文
posted @ 2021-02-14 14:59 さくらむすび 阅读(113) 评论(0) 推荐(0)
摘要:1.程序与进程 程序是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的设备……)。 进程是活跃的程序,占用系统资源,在内存中执行(程序运行起来会产生一个进程)。 程序就好比是剧本,而进程就是按照剧本演的戏(舞台、演员、道具等就相当于系统资源),同一个剧本可以在多个地方同时上演,同 阅读全文
posted @ 2021-02-14 13:47 さくらむすび 阅读(89) 评论(0) 推荐(0)
摘要:1.int dup(int oldfd) 复制文件描述符 参数: oldfd:要复制的文件描述符 返回值:新的文件描述符,新描述符为最小的且没被占用的文件描述符; dup调用成功,有两个文件描述符指向同一个文件 2.int dup2(int oldfd,int newfd) 使newfd成为oldf 阅读全文
posted @ 2021-02-13 14:20 さくらむすび 阅读(51) 评论(0) 推荐(0)
摘要:1.int rename(const char *oldpath,const char *newpath) 文件重命名 参数: oldpath:旧文件名或路径 newpath:新文件名或路径 2.int chdir(const char *path) 修改当前进程的(应用程序)的路径,相当于shel 阅读全文
posted @ 2021-02-13 14:05 さくらむすび 阅读(179) 评论(0) 推荐(0)
摘要:1.int access(const char *pathname,int mode); 测试当前用户指定文件是否具有某种属性 参数: pathname:文件名 mode:4种权限 R_OK:读 W_OK:写 X_OK:执行 F_OK:文件是否存在 返回值: 0:具有某种权限 -1:没有权限,或文件 阅读全文
posted @ 2021-02-13 10:45 さくらむすび 阅读(80) 评论(0) 推荐(0)
摘要:1.获取文件属性 struct stat { dev_t st_dev; //文件的设备编号 ino_t st_ino; //节点 mode_t st_mode; //文件的类型和存取的权限 nlink_t st_nlink; //连到该文件的硬连接数目,刚建立的文件值为1 uid_t st_uid 阅读全文
posted @ 2021-02-12 21:06 さくらむすび 阅读(106) 评论(0) 推荐(0)
摘要:1.open/close 函数原型: int open(const char *pathname,int flags); int open(const char *pathname,int flags,mode_t mode); 参数: pathname:文件名 flags: 必选项:O_RDONL 阅读全文
posted @ 2021-02-12 14:53 さくらむすび 阅读(63) 评论(0) 推荐(0)
摘要:gdb调试流程 1.gcc a.c b.c -o app gcc a.c b.c -o app -g -g:会保留函数名和变量名 2.启动gdb gdb 可执行程序的名字 给程序传参:set args xxx xxx 3.查看代码 -- list 当前文件: l:查看默认行数的代码 l 行号:查看在 阅读全文
posted @ 2021-02-10 19:54 さくらむすび 阅读(78) 评论(0) 推荐(0)
摘要:1.makefile简介 linux下的makefile的作用就是四个字——“自动编译”。当整个项目完成之后,我们可以写一个makefile文件,输入make命令就能完成所有编译。 make其实就是linux下自带的构建器,而构建的规则就写在makefile中,makefile规定了make执行的命 阅读全文
posted @ 2021-02-10 16:44 さくらむすび 阅读(94) 评论(0) 推荐(0)
摘要:1.什么是库 库是一段编译好的二进制代码,加上头文件就可以供别人使用。什么时候会用到库?一是某些代码需要给别人使用,但又不想暴露源代码,就需要以库的形式进行封装,只暴露出头文件;二是对于某些不需要经常修改的代码,为了减少编译的时间,就可以把它打包成库,因为库已经是编译的文件,编译的时候只需要链接,不 阅读全文
posted @ 2021-02-10 11:40 さくらむすび 阅读(216) 评论(0) 推荐(0)
摘要:1.gcc工作流程 ①预处理 -- E 宏替换、头文件展开、注释去掉、xxx.c -> xxx.i(c文件) ②编译 -- S xxx.i -> xxx.s(汇编文件) ③汇编 -- c xxx.s -> xxx.o(二进制文件) ④链接 xxx.o -> xxx(可执行文件) 其中,编译阶段所耗费 阅读全文
posted @ 2021-02-08 20:15 さくらむすび 阅读(77) 评论(0) 推荐(0)
摘要:1.vim的工作模式 命令模式、编辑模式、末行模式; 2.vim命令模式下的相关操作 保存退出:ZZ(大写) 代码格式化:gg = G 光标的移动: 左下上右 :HJKL 光标移动到行首(尾):0($) 光标移动到文件首部(尾部):gg(G) 向下跳转n行:nG 删除命令: 删除字符:光标前(后)的 阅读全文
posted @ 2021-02-07 20:48 さくらむすび 阅读(96) 评论(0) 推荐(0)
摘要:Linux下软件的安装与卸载有两种,一种是在线安装,需要联网;另一种是软件包安装,需下载好软件包。 1.在线安装 -- ubuntu apt-get 安装:sudo apt-get install 安装包的名字 卸载:sudo apt-get remove 安装包的名字 软件列表的更新:sudo a 阅读全文
posted @ 2021-02-06 14:14 さくらむすび 阅读(283) 评论(0) 推荐(0)
摘要:1.linux下常见压缩格式 .gz -- gzip .bz2 -- bzip2 2.常见压缩命令 tar -- 打包 参数: c - 创建压缩文件 x - 解压缩文件 v - 打印信息(可不写) f - 指定压缩包的名字 z - 使用gzip方式压缩/解压文件 命名:-xxx.tar.gz j - 阅读全文
posted @ 2021-02-05 21:17 さくらむすび 阅读(65) 评论(0) 推荐(0)
摘要:1.根据文件属性查找 --find ①文件名: find 查找的目录 -name “查找的文件名” ②文件类型: find 查找的目录 -type 文件类型 普通文件:f 目录:d 符号链接:l 管道:p 套接字:s 字符设备:c 块设备:b ③文件大小 find 查找目录 -size -10M + 阅读全文
posted @ 2021-02-05 21:02 さくらむすび 阅读(426) 评论(0) 推荐(0)
摘要:1.修改文件或目录权限 -- chmod ①文字设定法 chmod who [+、-、=] mode 文件名 who:u - user,文件所有者 g - group,文件所属组 o - others,其他人 a - all,所有人 +、-、=:增加、减少、覆盖 mode:r:读 w:写 x:执行 阅读全文
posted @ 2021-02-05 20:22 さくらむすび 阅读(513) 评论(0) 推荐(0)
摘要:1.tree 查看目录的内容 用法: tree 查看当前目录 tree dir 查看指定目录 (linux默认没有安装tree,需手动安装:sudo apt-get install tree) 2.ls 查看文件或目录 用法: ls 参数(可不加) 参数: -a 显示所有文件(隐藏文件:文件或目录名 阅读全文
posted @ 2021-02-05 19:28 さくらむすび 阅读(87) 评论(0) 推荐(0)
摘要:相对路径:从当前的目录开始表示 绝对路径:从根目录/开始表示 1、使用相对路径进入food目录:./zoo/animal/food 2、使用绝对路径进入food目录:/home/kevin/demo/1Day/zoo/aniaml/food 3、. :代表当前路径 .. :代表上一级路径 4、 ke 阅读全文
posted @ 2021-02-05 13:30 さくらむすび 阅读(426) 评论(0) 推荐(0)
摘要:linux目录结构图 1、根目录表示方式:/ 2、根目录下常见目录: -/bin:即binary,存放二进制文件、可执行程序和shell命令等; -/dev:即device,linux的设备文件,如硬盘、显卡、显示器等; -/lib:linux运行的时候需要加载的一些动态库 -/mnt:用户收到挂载 阅读全文
posted @ 2021-02-05 13:10 さくらむすび 阅读(90) 评论(0) 推荐(0)
摘要:shell是Linux下的命令解析器,其作用为:解释用户输入的命令,并执行对应的操作。步骤: ①到指定路径(环境变量)搜索用户输入的命令; ②找到输入的命令并运行程序,将运行结果输出到终端上。 一些快捷键 1、命令或目录补齐 快捷键:tab 2、遍历历史记录 快捷键:history 上 == ctr 阅读全文
posted @ 2021-02-05 12:53 さくらむすび 阅读(301) 评论(0) 推荐(0)