APC机制APC机制使耗时操作可以异步回调处理
线程是不能被“杀死”,“挂起”,“恢复”的,线程在执行的时候自己占据着CPU,别人怎么可能控制它呢?
如果说线程如果想“死”,一定是自己执行代码把自己杀死,不存在”他杀”这种情况!
如果要改变一个线程的行为该怎么办呢?
可以给他提供一个函数,让它自己去调用,这个函数就是APC(Asyncroneus Procedure Call),即异步过程调用
_KAPC_STATE123456789101112kd> dt _KTHREADnt!_KTHREAD ... +0x034 ApcState : _KAPC_STATE ...kd> dt _KAPC_STATEnt!_KAPC_STATE +0x000 ApcListHead : [2] _LIST_ENTRY//两个APC队列(分别是内核APC和用户APC),存储着要给他提供的APC函数,在某个时刻线程会检查自己的APC链表执行。链表中的内容与当前地址一样则说明该链表为空 +0x010 Process : Ptr3 ...
编译原理相关知识点
编译器具有非常模块化的高层结构,可以看成多个阶段构成的”流水线”结构
编译器主要包含五个部分
词法分析 字符序列 -> 记号序列
语法分析 记号序列 -> 抽象语法树(AST)
语义分析 抽象语法树 -> 中间表示(intermediate representation)
优化
代码生成 中间表示(IR) -> 目标代码
词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成
目前进度:https://www.bilibili.com/video/BV1m7411d7iS?p=11&vd_source=f235f2108c2a3afdf8d1609bde0b4591 2.4.1继续,有限状态自动机
词法分析任务:从字符流到记号流
字符流:和被编译的语言密切相关(ASCII,Unicode,or …)
记号流:编译器内部定义的数据结构,编码所识别出的词法单元
词法分析例子如下:
1234if (x>5) y="hello";els ...
python相关知识点
python入门python入门
安装指导
注释
1234#这里是注释内容"""这里是注释内容"""
多行文本一并打印:
1234print("""你好世界""")#python中的每个print都会自动另起一行
变量不需要定义类型
次方
123**5#表示3的5次方9**#9的平方
导入库和使用库
12import mathmath.函数名([参数])
字符串 str
整数 int
浮点数 float
布尔类型 bool
空值类型 NoneType
…
1234s = "hello world"len(s)#返回字符串的长度,这里是11s[0]#取字符串第一个字符type(变量名)#返回该变量的类型名
python的交互模式
区别与命令行模式,命令行模式是保存整个文件然后一行一行执行
交互模式是输入一行执行一行,关闭后代码全部消失。
交互模式可以不用print直接看到执行结果。
可以在下图位置打开py ...
此文是针对Google开源项目风格指南的笔记
风格 (style, 亦称作可读性 (readability)) 是用于管理 C++ 代码的惯例. “风格” 这一术语略有不准确, 因为这些惯例并非仅仅囊括代码格式.
为读者优化, 而非为作者优化
和现有代码保持一致
避免使用奇特或危险的语法结构
避免使用那些正常水平的 C++ 程序员认为棘手或难以维护的语法结构
需要注意我们的规模
举例来说, 一定要避免污染全局命名空间 (global namespace): 如果所有人都往全局命名空间里塞东西, 就很难避免上亿行代码之间的符号冲突 (name collision), 也难以修复冲突.
在必要时为优化让路
目前代码的目标版本是 C++20
针对C++谷歌代码规范的vscode拓展cpplint
头文件相关自给自足的头文件
通常每个 .cc/ .cpp 文件应该有一个配套的 .h 文件. 常见的例外情况包括单元测试和仅有 main() 函数的 .cc 文件.
头文件应该自给自足 (self-contained, 也就是可以独立编译), 并以 .h 为扩展名 ...
imgui开发记录
环境配置imgui库下载
detours库下载
imgui的使用需要提前安装dx库:安装执行文件:DXSDK_jun10.exe,安装好后文件夹名称:Microsoft DirectX SDK(June 2010)
imgui环境配置配置DX库在配置-VC++目录-包含目录加入DX安装路径根目录的include文件夹,$(DXSDK_DIR)是表示DX安装目录的宏
配置-链接器-常规-附加库目录加入DX安装路径根目录Lib文件夹,$(PlatformTarget)是表示当前项目是x86或x64,因为Lib文件夹下分x86和x64文件夹要针对性选择库文件,因此使用该宏
配置-链接器-输入-附加依赖项中添加库的名字
项目中导入头文件#include <d3d9.h>,根据引入的d3d版本来导入头文件
配置imgui下图可以取到对应版本的DX实例:用于实验imgui
新建项目后,将imgui-master文件夹中的所有.h和.cpp文件拖拽到项目文件夹中(可以新建一个文件夹存放),然后还要将backends文件夹中的选对应的文件(根据需要DX9还是 ...
包含虚拟机和docker相关知识点
虚拟化网络设置docker网络Docker网络剖析
官方文档给出了5种网络驱动模型,如下:
bridge:网桥类型网络;其实就是五大虚拟化网络模型中的NAT网络,只不过这里叫做bridge网桥类型.需要映射接口才能让外部访问到容器
默认bridge不支持容器名dns
自定义bridge支持容器名dns
host:该模式仅在linux可用,理解成容器变成了宿主的一个应用了.其原理是容器使用宿主机的网络空间,因此会直接看到并使用宿主机所有网络功能
None:啥网络都没有
虚拟机网络(以virtualBox为例)
NAT模式 相当于虚拟了一层NAT,但是各个虚拟机之间隔离
NAT网络模式 虚拟了一层NAT,各个虚拟机之间不隔离
VMware等虚拟机的NAT模式不太一样 虚拟了一层NAT,各个虚拟机之间可以互相访问,虚拟机与宿主机之间也可以互访
桥接 相当于虚拟机放到了宿主机局域网里(适配器选项需要和宿主当前联网使用的适配器一致).结果是虚拟机和宿主处于同一网段,由路由器统一分配ip
内部网络模式 相当于仅仅用交换机网线把虚 ...
记录一些简单的运维知识
国内注册域名后要先实名认证后,使用国内的服务器时,网站还需要在工信部,网安备案
在国内域名商购买了域名,解析的主机或服务器也在国内时,则必须备案通过后才能访问
海外域名,就只能用国外或香港主机/服务器,不能解析到国内的服务器
运维相关好用工具iperf3iPerf是一个支持跨平台部署使用的网络性能测量工具。它可以创建数据流测量两端之间单向或双向的网络吞吐量。
安装官网下载链接
windows版下载链接
linux: apt install iperf3
安卓: Magic iPerf net.he下载地址,内含iperf3功能
IOS: iPerf 3 Wifi Speed Test/HE.NET Network Tools
威联通 参考安装方式
mac: brew install iperf3
威联通安装方式
网络环境新增一个 TCP 端口,主机和容器都选择 5201,一般 iperf3 默认的端口也是 5201
在命令行里输入-s,这个是开启5201 监听端口的命令,这样其他设备才能通过命令访问 NAS 的 iperf3 ...
盘点常用的硬件通信技术
硬件通信技术有
有线通信技术:包括以太网、USB、HDMI、VGA、串口等有线通信接口。
无线通信技术:包括Wi-Fi、蓝牙、Zigbee、LoRa等无线通信技术。
射频通信技术:包括RFID、NFC、GPS等射频通信技术。
光通信技术:包括光纤通信、激光通信等光通信技术。
传感器技术:包括温度传感器、湿度传感器、加速度传感器等传感器技术。
相关工具盘点硬件通信全能工具RWEverything是一款强大的硬件级调试工具,可以直接读取和写入硬件的I/O端口,内存地址,PCI配置空间,SMBus,SPD等
官网下载地址
p.s. 实测,在x64系统下,无法运行起来
盘点一些使用方式如下:
查看I/O端口映射
在顶部的菜单中,点击Access → I/O Space。
在I/O Space窗口中,您可以输入设备的端口地址范围,例如0x300到0x31F(假设您的ISA设备地址在此范围内)。
点击Read按钮,您会看到这些地址的值。
查看物理内存映射
在菜单中,点击Access → Memory。
在Memory窗 ...
c语言入门学习
C语言基础C语言特点作用
所有大学理工科必修课
名企,外企,高薪程序员面试必考
写外挂,做黑客必须掌握的语言
学习[[数据结构]]和C++的基石
绝对重要的基石语言,Unix,Linux,Windows,JAVA,C++,C#底层实现都靠C
1)优点
代码量效
执行速度快
功能强大
编程自由
2)缺点
写代码实现周期长
可移植性较差
过于自由,经验不足易出错
对于平台依赖较多
中央处理器(CPU)的主要模块
运算器
控制器
寄存器
内存—-(内)存储器
外部设备
输入设备
输出设备
外存—-(外)存储器
C语言关键字
C语言仅有32个关键字,9种控制语句,34种运算符
32个关键字1auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,unsigned,union,void,v ...