hxndg Blog

Thinking will not overcome fear but action will.

数论笔记

初等数论基础知识

2021-03-29-数论笔记 参考的基本资料为《数论讲义》上下册+《初等数论》,最后群环域的部分打算看《代数》(《Algebra》by Michael Artin). 《数论讲义》上册笔记 第一章 整数的唯一分解定理 1 整除性 定理1:设a,b是两个整数,其中b>0,则存在两个唯一的整数q和r,使得$a=bq+r,0<= r<b$,我们一般称q为不完全商,r为...

2021-02-23-基本的算法和数据结构(包含多线程)

算法?不,数学

2021-02-23-基本的算法和数据结构(包含多线程) 为什么写这个?通用的方法常常隐藏常见的方法。 1 抽象,实现和STL 1.1 STL 数据结构VECTOR O(1)时间的快速访问 顺序存储,所以插入到非尾结点位置所需时间复杂度为O(n),删除也一样 当我们新建一个vector的时候,会首先分配给他一片连续的内存空间,如std::vector<int>...

2023-02-12-安全零信任

量子计算快来吧,废了现代密码学?

2023-02-12-安全零信任 零信任概述(不用仔细看) 零信任包含以下几个方面: 现在展开讲: 由于1 身份认证并不可靠,内网不等于可信网络,内网用户不一定是可信用户。2 网络边界越来越难以划分 因此需要展开零信任,零信任包含以下几个要求: 信任最小化:任何访问主体(人/设备/应用等),在访问被允许之前,都必须要经过身份认证和授权,默认不信任;换言之1.端到端加密确...

2021-02-22-安全方面的基础知识(数学+协议篇)

量子计算快来吧,废了现代密码学?

2021-02-22-安全方面的基础知识(数学篇+协议篇) 1 分组密码 1.1 分组密码是啥? 从本质来说,分组密码实际上是将明文分组后,和秘钥做X乘,得到的密文分组的流程。需要注意,加密前的分组数量n和加密后的分组数量m不一定相等(但一般实现都是相等的)。总之这种加密实际上就是数字序列的代换。这种加密方式要满足以下几个方面: 分组长度n要足够大,从而保证分组代换字母表里的元...

汇编笔记

对汇编的学习就是对操作系统的学习?

汇编笔记 几本书一起看,笔记互相添加,嗯,真是个糟糕的主意。目前实际上是《X86_64组织结构及汇编入门》的笔记,还没有王爽汇编的部分。 第一章-第三章 前面几章实际上没啥好说的,也就补码,反码那部分有点意思,不过原先上学的时候都学过。 第四章-第五章 逻辑门与逻辑电路 4.1-4.2 布尔逻辑基础 literal有两个含义 In computer science, a ...

代码整洁之道

关于代码的一些通用规则

代码整洁之道 行百里者半九十,但是到五十的时候就发现,有很多的地方是要提前注意到的。 大狗的代码规范: 命名规则1,函数/变量命名应当名副其实,在提供尽量短,尽量精确的同时,避免使用任何的混义词。对于函数,动作最好保持在最前面,且使用和老代码一致的含义。 函数规则1,函数的应当提供流程上相同层面的抽象,不同层面的抽象应当隐藏到函数里面的函数去。每个函数应当尽量短于100行。除...

多处理编程的艺术第二版笔记

不能不学习啊

多处理编程的艺术 这本书我估计得看两遍,第一遍看算法/理论,第二遍看一遍证明。 锁/同步常用检测思维: 如何保证互斥? 如何保证公平性?简单来说,锁的先后顺序保证就是公平 如何保证不会饿死? 如何保证不会出现唤醒丢失/虚假唤醒?如果检测是否需要睡眠,和正式进入睡眠不是一步,一般就需要防备唤醒丢失。防备唤醒丢失的方法还是,使用锁来保证“同步”的线程不会出现同时执行交互的...

内存学习(4)-理解linux虚拟内存管理

重新开始

内存学习(4)-理解linux虚拟内存管理 这部分流程我看了两个版本,一个是linux 2.6.34,另一个是linux 5.0的版本,大同小异。书翻了《深入理解Linux虚拟内存管理》,《笨叔的奔跑吧linux内核》和各种各样自的博客。出于对于大神Mel gorman的敬意,我下面的内容会尽量和《深入理解Linux虚拟内存管理》保持一致。我这里写的东西,都是针对5.0的内核代码。但是有一...

整理复习SQL

活跃思想

整理复习SQL 1 具体的数据 本质就是三个连接: [上篇:介绍SQL的语法顺序和执行顺序](https://www.zhihu.com/question/20116482/answer/615313891) [中篇:介绍条件子句、分组查询和排序的细节](https://www.zhihu.com/question/20116482/answer/615313891) [下篇:表的...

Redis开发与运维笔记

活跃思想

Redis开发与运维笔记 第一章 可靠,可拓展和可维护性 1.1 为什么?考虑什么? 由于数据库,消息队列,缓存等工具虽然差异巨大,可是目前他们的功能越来越混淆。因此它们被统称为“数据系统”。那么我们如何考察一个数据系统?: 可靠性:系统在困境(硬件故障,软件故障,人为错误)中仍可正常工作(正确完成工作,并能达到期望水平) 可拓展性:有合理的方法面对系统的增长(数据量,流量...