《被讨厌的勇气》读后感
很多人推这本书,看了之后感觉挺不错的,特此写读后感。
第一章
我们的不幸是谁造成的?其实是自己。很多时候并不是因为曾经怎么怎么样,或者说现在怎么怎么样我们无法改变命运带来的结果,其实很多时候我们是可以改变的,只不过我们不愿意改变。
这里使用了乍一听非常难以接受的理论——目的论,我们的不幸是因为我们选择了不幸,阿德勒心理学主张人是可以改变的,你可以选择,但是没有足够的勇气!因为你知道你一旦做出改变,你可能要面对很多未知的问题,或者可能是要接受失败的结果,所以你选择了不成功。并因为你选择了不成功,你选择放大自己的缺点并会解释,如果自己没有这些缺点就好了。那只是你不愿意做出改变罢了,没有这样的勇气。
书中举了一个例子来佐证你以为的原因论,实际是目的驱使的:
家长在训斥自己的孩子的时候发怒,一般理解就是是因为女儿成绩不理想,所以家长才那么生气,家长的怒气完全是因为女儿的这个问题。如果说此时是因为家长想发怒而制造出来怒气可能有点诡辩论了,但是实际上在这个情景下,如果家长接到女儿班主任的电话,父母马上就会和颜悦色地去跟老师沟通,完全没有了之前的愤怒情绪。这里想要证明的一个观点是: ...
数据结构复习(3)
第三章——线性数据结构
栈
身为
ACMer,其它基本也不用花太多时间记,只需要记一些没有见过的概念就差不多了。基本特性就是先进后出,常见应用就是函数调用,深度优先搜索(迷宫算法),递归函数,括号匹配,表达式扫描。
卡特兰数
n 个不同的元素入栈,得到不同出栈结果的个数。
结论:\(\frac{1}{n+1}C_{2n}^n\)
共享栈
指两个栈共用一个大数组,其中一个栈顺序增长,另一个栈反方向增长,更大程度避免上溢出,两个栈顶重叠的时候,栈满。
队列
只允许从一端插入,另一端删除,先进先出。
有两种情况需要细致考虑:一个是头指针指向队尾元素,一个是头指针指向队尾的后一个位置,这两个情况略微有差别,此时队列判空判满的条件也有差别。
队头一般使用 head 或者 front,队尾一般使用 tail 或者 rear
变量。为了防止假溢出,出现了循环队列,但是要注意,循环队列需要牺牲一个单元,否则无法判断队满或者队空,因为它们的指针指向一模一样。
双端队列
开放了其中一端插入或者删除,或者都开放。
做这个题目的时候,一般会出现输入限制或者输出限制的双端队列 ...
数据结构复习(2)
线性表章节。
线性表的定义和操作
线性表的定义
线性表是具有相同数据类型的 n 个数据元素的有限序列。
线性表是逻辑结构,表示了元素之间一对一的相邻关系。而顺序表(顺序存取表)和链表(链式存储表)是指存储结构。
线性表具有先后顺序。
线性表每个元素具有相同大小的存储空间。
线性表的操作
有以下操作:
初始化分配内存空间。
求表长。
按值查找。
读取某个元素。
插入操作。
删除操作
顺序输出所有元素。
判断元素个数是否为 0。
销毁线性表。
线性表的顺序实现
概念
顺序表是指,逻辑上相邻的数据元素在物理地址上也相邻。
结论就是:
随机存取方便,插入删除困难,顺序表是一种随机存取的数据结构。
例题遇到的概念
没什么好说的,连续多次删除元素的话不一定要重复 k
次的移动,可以一次移动完。具体算法思路是这样的:
定义一个下表 index=0 和循环变量 i=0。
循环遍历:
如果该元素要被删除,则不作任何操作。
如果该元素不会被删除,把它存入下标为 index 的数组,并使得
index++。
结束循环
最 ...
计算机网络复习(2)
物理层
通信基础
概念
数据、信号、码元
数据:传送信息的实体,传输方式有串行和并行
信号:数据的物理表现,如电信号和磁信号。
码元:在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形。
通信上的概念
信道按照传输信号形式的不同,可分为模拟信道和数字信道。按照传输介质划分可以分为有线信道和无线信道。
信号有基带信号(数字信号)和宽带信号(模拟信号)。
基带信号(即基本频带信号)——
来自信源的信号。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进行调制
(modulation)。
基带调制:仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码
(coding)。
带通调制:使用载波
(carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道)
...
计算机网络复习(1)
计算机网络体系结构
计算机网络概述
这一章比较多的是概念,记一下主要的就好了。
计算机网络的概念
将分散的,具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。计算机网络就是一些互联的、自治的计算机系统的集合。
广义观点
只要能实现远程信息处理的系统,或者资源共享就是计算机网络。
资源共享观点
跟开头差不多,包含三层涵义:
目的——资源共享
组成单元——分布在不同地理位置的多台独立的自治计算机
计算机必须遵守的统一规则——网络协议
计算机网络的组成
组成部分上来看
完整的计算机网络上包括硬件、软件、协议三大部分组成。
硬件主要由端系统,链路,交换设备,网卡等组成。
软件主要由一些应用程序实现。
协议是计算机网络的核心。
工作方式上来看
计算机网络可分为边缘网络和核心网络。
从功能上来看
计算机网络由通信子网和资源子网组成。
计算机网络的功能
数据通信:最基本最重要的功能
资源共享
分布式处理
提高可靠性
负载均衡
计算机网络的分类
分布范围分类
广 ...
高等数学复习(8)
高等数学复习(8)——一元积分学概念
概念
原函数存在定理:
当函数 \(f(x)\) 在任意一点上都具有
\(\int f(x)=F(x)+C\) ,则称 \(F(x)\) 是 \(f(x)\) 的一个原函数。
只有含有有界震荡间断点的函数具有原函数,其余情况没有原函数。
定积分概念:
即是黎曼积分的定义 \(\int _a ^b
f(x)dx=\sum^{n}_{i=1}\lim\limits _{n\to \infty}
f(a+\frac{b-a}{n}i)\frac{b-a}{n}\)
特别的,当 a=0,b=1 的时候,式子退化成 \(\int _0 ^1 f(x)dx=\sum^{n}_{i=1}\lim\limits _{n\to
\infty} f(\frac{i}{n})\frac{1}{n}\)
所以做数列极限题的时候,可以尝试化成这样的式子,转而求定积分。
定积分存在定理:
\(f(x)\) 在 \([a,b]\) 上连续,则 \(\int _a ^b f(x)dx\) 存在。
\(f(x)\) 在 \([a,b]\ ...
Windows驱动开发(10)
在内核中保护特定进程
本来想着掌握一种方法差不多就够了,后面想想还是一步一步走过来吧。
获取进程名
在回调中,每有一个进程相关事件,就会触发这个回调。一般我们很多跨进程的操作第一步都是
OpenProcess
去获得进程句柄,后续操作都通过句柄操作。在回调函数中我们可以使用
OperationInformation->Object
这个对象拿到当前被操作进程的结构体指针。
这样子我们获得了一个 EProcess
的指针,可以用这个所指向的结构来取得进程名,通过访问使用API
PsGetProcessImageFileName 来获得进程名。
最后我们使用 _stricmp((char *)processName, "msedge.exe")
进行一波判断即可。
通过进程ID保护进程
同样,还有一个 API 是 PsGetCurrentProcessId
用来获取当前进程的 pid 的,同样我们可以使用这个 API 来和预期的进程 id
进行比较,相同就保护起来,因为我们很可能不确定要保护的进程 ID
是多少,因此不能再 sys 中写死,我们可 ...
考研周报(11)
第11篇周报
本周小结
英语每天都背了 200 个单词,check。
专业课没动
数学进了一点。
windows驱动学了挺多,高产简直。
下周目标
英语:每天背单词至少 300。
数学:看完第九章。
专业课:
计算机网络:开第二轮吧,但是物理层自顶向下是没有的,所以预计先看看物理层。
数据结构:不知道,大概给三个星期看完吧(目前:第二个星期)。
windows 内核基础:同样先等上面完成目标吧。
Windows驱动开发(9)
今天具体学习一下双机调试。
前言
肯定主要就是这个调试器怎么去用了,这里我贴一下 VirtualKD
的项目地址——(https://github.com/4d61726b/VirtualKD-Redux)。也由衷地感谢这些开发者给我们开发了这么好用的工具,让我们环境搭建这一步走了很大的捷径,上一篇博客中遇到的问题,当时因为比较急直接去提了
issue,而作者也给出了很耐心的解释,应该是照顾我这个萌新吧。
真的是非常感谢。
Windbg的使用
我是实在用不来那个纯命令行的调试器,因为根本不知道跑起来之后怎么加断点,所以我使用了
Windbg preview,这个据说是要在微软商店下载的,如果停用了 windows
更新的话,好像就直接用不了了,为了这个我重新打开了我 windows
的更新。
初始布局大概是这样:
当提示 Debuggee is running 的时候,是没办法在 KD
命令行输入指令的,断点也打不了。
最开始的情况应该是:这里根本就不知道在哪的,左边的反汇编窗口应该也不是指向了自己想要的位置,此时不知道在哪里断就可以先放着,然后 ...
Windows驱动开发(8)
今天还有学习一下双机调试。
环境准备
先添加一个串行端口,使用命名管道。
然后开启虚拟机,运行命令
1bcdedit /copy {current} /d "win10 x64 debug for windbg"
这个命令的意思是把当前启动项复制一份命名为
win10 x64 debug for windbg
然后再运行
msconfig,选择刚复制的一份启动项,打开高级选项,勾选调试,选择
COM1。
然后重启之后就完事了,选择第三个选项即可。
这里用一下 VirtualDK 这个软件,非常好用,直接在虚拟机运行 target64 的
exe 文件,然后注意,最重要的一点:
F8 选择禁用驱动签名
F8 选择禁用驱动签名
F8 选择禁用驱动签名
重要的事情说三遍,不然根本连不上,后面 Windbg
再慢慢学吧,今天因为这个环境搞了很久。