Linux下基本的线程同步方法 线程同步问题引入: 2个线程同时修改一个变量x = 1时,如果不进行同步会怎么样? 假设进行增加操作,增量操作通常分解为3步 从内存将变量读入寄存器(cpu) 在寄存器中对变量做增量操作 写回内存 那么在线程A对x进行增量操作时,如果不加锁,那么最终结果取决与线程B开始增量操作时获取的值, 比如: 线程A中cpu对寄存器中变量做完增量操作还没有写回内存,此时线程B获取到的值还是1,最 2020-02-28 Linux学习
APUE习题8.7 exec在执行前会关闭所有打开的目录流(DIR) 检查文件描述符状态标志, dirfd(DIR *)得到目录的文件描述符 重要的fcntl()函数,得到文件描述符状态 忽略了exec族函数的第一个参数的作用导致调用exec一直成功 exec的第一个参数一般是可执行文件的文件名, The first argument, by convention, should point t 2020-02-08 操作系统
编译期实现排序 编译期间实现排序 在b站上看到的,凭借一点c++ 的知识勉强读懂 思路 Values实现将基类对象类型放在(展开在)tuple中,std::tuple<>是个聚合类,能将参数包中不同元素类型糅合成一种类型,排序就是在tuple上进行的 模板类实现判断, template<bool,typename Then,typename Else> If 封装成Compa 2020-02-05 C++primer读书笔记
对C语言标准IO的理解 对标准IO的理解: 个人理解,如果有错误请指出 c语言标准IO通过一个FILE结构来封装了read和write系统调用,并且标准IO缓冲区的分配也是通过修改FILE的元素来改变, 由于常用stdin,stdout,就认为缓冲区是分为输入缓冲区和输出缓冲区的,这只是因为缓冲区承担一项工作(输入or输出) 如果用文件流以O_RDWR状态打开一个文件,那么缓冲区将会同时作为输入和输出的缓冲区 2020-01-29 操作系统
APUE第四章文件和目录 与进程相关联的ID 1.实际用户ID+实际组ID2.有效用户ID+有效组ID+附属组ID3.保存的设置用户ID+保存的设置组ID 执行一个程序文件时,进程的有效用户ID=实际用户ID,有效组ID=实际组ID, 当我执行./a.out文件时,如果a.out此文件权限是root root,但是我以非root用户来执行的(实际用户是非root用户,此时进程的有效用户id变成实际用户id,那么 2020-01-28 操作系统
APUE第三章文件IO笔记+习题 3 文件IO 非缓冲IO,属于POSIX,非IOS C标准 stdin stdou stderr与STDIN_FILENO STDOUT_FILENO STDERR_FILENO的关系 stdin等属于FILE *类型,在<stdio.h>中 STDIN_FILENO等是无符号整数,表示描述符,在<unistd.h>中 3.1 常用函数 open123 2020-01-23 操作系统
KMP 前缀表 + kmp 求前缀表的核心就是 知道在 字符串‘’A B …. C D‘’中 求 最长公共前后缀长度 已知 A B互相相同,C D 互相相同, (A + B)和(C+D)互相相同 得到A和D互相相同 prefix_table右移一下, 扫描文本串时,pattern串,根据prefix_table的下标位置来改变指向pattern串的指针 123456789101112131 2020-01-16 算法
计算机网络概述 持续更新一、网络概述 OSI参考模型(数据通信 应用层: 所有能产生网络流量的程序 表示层: 传输之前是否进行加密or压缩处理 会话层: 区分来的数据是属于哪一个窗口的(会话),访问网站建立会话 * 查看是否存在木马: netstat -n -b 传输层: 可靠传输 流量控制 可靠传输:在网络中丢包了,只要server没有收到client的包,则server一直发包,直到确定 2020-01-16 计算机网络
const int* 和 const int * const 和 int const * 的区别 const int*和const int * const和 int const *的区别原文地址 int const *是一个指向常量整数的指针 指向了一个不能被修改的值但是指针指向的地址可以改变 const 在数据类型的一侧,所以可以放在int的前面const int *,(从c++ prime了解到) 123456789101112#include <stdio.h>i 2019-12-18 C++primer读书笔记 const pointer
线段树区间加法+乘法 区间加法+区间乘法(2标记 Luogu 一开始只想到了开2个标记,但是看了题解才知道标记下传是有优先级的 按题目数据来如果是 先+后x: $val = (val + b) * k = valk+bk$ 先x后+ : $val = val * k + b$ 如何处理2个标记? 假设给数组[1,2,3]中1~3加上2,然后乘3,然后加4 式子: $sum=(a[1]+2 2019-12-15 算法