CS:APP Attack Lab记录 前置知识 缓冲区溢出 将栈指针作为输入,则若缓冲区溢出,整个栈帧都会受影响。而栈需要保存返回的断点,若栈帧相邻,则可以改变返回函数的断点,从而返回到我们指定的一个函数。针对溢出,有三种处理方式 设置段寻址的,每次的值不同的canary值,通过gdb可以知道单次的值 每次的stack地址随机,不一定能跳装到字符串的地址运行。但全局变量和代码的位置不变。 设置栈区的值为不可执行代码 ROP 2023-02-19 CS
CS:APP Bomb Lab记录 前置知识 objdump objdump -d可将二进制文件转换为汇编代码(反汇编) GDB 类似于图形界面的debugger,通过命令行执行。这里针对汇编进行debug。使用tui进行查看。 基本流程 1234567891011121314151617181920# 确保debug with source codegcc -g -ggdb csim.c -o csim.out# 进入汇编调试# 2023-02-17 CS
Git基础 Start 基本结构 Working Directory当前使用的branch,与Repo区分,更新比对操作都要指定Repo中的一个Branch进行。 其中Repo中保存了多个branch的版本信息,可以任意切换到Working Directory. image source 可以借助stash暂存一部分内容 注意事项 注意每次使用前先同步,否则可能出现冲突。 基本命令 1234567891 2023-02-07 Git
算法基本模板 模板 位置关系 相对位置 1234567891011121314151617181920212223242526vi id(n), rid(n);// 当前数组的id对应的变换数组的id// id[x] = T_x;// id[x]返回当前id对应的原id 1. 可用于改变原数列的值 2. 访问原序列的值 rep (i, 0, n) id[i] = i;// 变换数组当前的id对应的原数组的id/ 2022-07-04 Algorithm
算法练习记录 Codeforces Round 885 (Div. 2) 1848-c 1234567891011121314151617181920212223242526272829303132333435363738394041424344// TLEint gett(int a, int b) { int ans = 0; if (a == 0) return 0; if ( 2022-06-29 Algorith
机器学习基础 实验概述 基于帖子[1]的代码与框架,通过python numpy库构建基本的神经网络模型,在基本结构的基础上增加了mini-batch梯度下降,针对多标签问题,使用softmax作为输出层的激活函数,cross entropy定义损失函数。 使用MNIST数据集检验建立的模型,设立合适的神经网络层数,batch个数,学习率,epoch等参数,限于算力,只尝试了较为小的模型,并通过训练测试准确率 2022-05-03 Machine Learning
基本算法思路 algorithm 基本思路 广搜 猜想(重构问题) 深搜 推理(基于性质,选择工具) 启发式搜索 根据当前推理的流程,但往往无法得到一个正确的全局函数(Intuition) 数据结构 允许存在待处理的元素,添加一个标记位,最后再处理(懒更新) 其中包括线段树的懒更新,保存index的单调队列,存在冗余项的优先队列 数组结构 双向链表 + 哈希表 hashmap O(1) 寻址(!性能可能退化) 2022-01-30 Algorithm
preprocess Preprocess read_file 123456789base_path = os.path.abspath(__file__ + "/../")path = os.path.join(base_path,'data')train_path = os.path.join(path,'train.csv')test_path = os 2022-01-07 Machine Learning
pandas basic Pandas 1import pandas as pd cat basic 123456789101112131415161718192021222324252627282930313233343536373839404142434445df.loc['a'], df['a'], df.at() ,df[['a']](as datafra 2021-12-12 Machine Learning