07 2017 档案
摘要:● VirtualQueryEx 函数 功能:检索在指定进程的虚拟地址空间内的一系列页面的信息。 函数参数 参数1:hProcess [in] 进程句柄 参数2:lpAddress [in, optional] 查询虚拟内存地址 参数3:lpBuffer [out] MEMORY_BASIC_INF
阅读全文
摘要:# Python 爬虫项目1 ● Python 网页请求 requests POST GET 网页状态码 通过标签匹配内容 通过浏览器复制 copy selector title 的类型还是 标签 Tag soup.body.div.div.a 方式获取 python 使用代理发送网页请求
阅读全文
摘要:# Python 爬虫基础知识 ● Python 爬虫基础知识 安装爬虫库 beautifulsoup4 pip install beautifulsoup4 lxml HTML 解析器 pip install html5lib html5lib pip install html5lib ● 使用库
阅读全文
摘要:# Python 类的高级特性 ● 静态成员 ● 异常处理 通用异常类型表 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。 当Python脚本发生异常时我们需要捕获处理它,
阅读全文
摘要:# Python 类 ● class 类名(object): ● 简单类的创建 ● __init__() 的特殊方法(构造方法)初始化类 ● def 定义类函数 ● 类的继承 class 子类(父类): ● 类的继承 class 子类(父类1,父类2,父类3): ● 子类函数(方法的重写) 父类方法
阅读全文
摘要:# Python ● Python 内库 Python并不鼓励使用内置库进行编程 Python鼓励使用别人编写好的开源库进行开发 ○ help()函数 查看内部函数定义,帮助文档 ○ dir() 文件内部生成的全局变量 ○ vars() __name__的值为模块名 当文件被执行时,__name__
阅读全文
摘要:# Python ● 别人写好的东西(库) A:*foo1 foo2 foo3 foo4 B:*foo2 foo1 foo3 foo4 from XX import XX from XX 就是 包的东西 ● __XX__.py 不对外公开的 ● 作业讲解 新建 Shop.py 新建 Login.py
阅读全文
摘要:● 空函数生成 ● 函数print print的本质就是一个变量 如果我们直接给 print 赋值,函数就无法调用了 感觉好牛X哦 ● 函数可以当作变量来使用 map 里面的每一个元素都调用一次。 ● 模块导入 import functoolsx #导入模块内所有的函数 form functools
阅读全文
摘要:● 上一课作业讲解 新建一个111.111 以写的方式 向文件写入一行字符串 关闭文件,才会写入,不关闭不会把缓冲区内容写入 ● 判断登陆代码 ● 字符串的分割 split() 如果给split()不传递参数 也会使用空格分割的 ● 实现方式1: ● 实现方式2: ● 切片生成 s[i] 从i项目s
阅读全文
摘要:# 64位及内存对其 ● 内存对齐 ○ 内存取%页面大小 ○ 如果内存没有对齐 CPU无法正常读取数据 CPU会使用错位的方式读取数据 延缓我们对数据的操作性 ● 获取页面大小 ○ AMD INTER CPU x64 x86 的CPU 页面大小 4kb ○ IA64 英特尔 的服务器平台 至强CPU
阅读全文
摘要:# Python 3 文件操作 字典 自定义函数 ● python 文档 官方英文文档 https://docs.python.org/3/ 汉化版文档 http://python.usyiyi.cn/ ● open() 返回一个文件句柄 参数1:文件地址,绝对地址,或者相对地址 参数2:文件打开的
阅读全文
摘要:# Python 3 基础语法 ● list 索引 ○ -1代表最后一个 ○ list可以放置各种各样的类型 ● list 嵌套使用 ● list append[] 末尾加入 ● list insert[] 指定位置插入 参数1:位置 参数2:插入的值 ● list clear() 清空索引 ● l
阅读全文
摘要:用户地址空间 ● 内存的分配 ○ 当进程被创建并赋予它的地址空间时,该可用地址空间的主体是空闲的,即未被分配的。 若要使用该地址空间的各个部分,必须通过调用 VirtualAlloc函数来分配它里边的各个区域。 每当你保留地址空间的一个区域时,系统要确保该区域从一个分配颗度的边界开始。 当你保留地址
阅读全文
摘要:# 内存 ● 物理内存 ○ 电脑上面的内存条 ○ 4G 8G 16G 32G 物理内存是死的,不会增长的 ○ 物理内存可以跟CPU进行通信,所以电脑上面必须有物理内存 ○ 应用程序开发的时候,我们根本无法接触到物理内存。 ● 虚拟内存 ○ 多个进程 每个都分配虚拟地址空间 ○ 模拟所有物理内存的功能
阅读全文
摘要:实现限制程序多开 测试代码 创建第一个程序ProcessMutexDemo.exe 创建第二个程序ProcessMutexDemoB.exe 测试结果 单个的实现方法
阅读全文
摘要:# Pyton 基础数据类型 # 整数 Python可以处理任意的整数,当然包括负整数,在程序中的表示方法和教学上的写法一模一样 例如: 1,100,-8080,0等等 计算机由于使用二进制,所以有时候十六进制表示的整数比较方便,十六进制用0x前缀和0-9,a-f表示 0xff00, 0xa6b4c
阅读全文
摘要:● CreateMutex 函数原型 ○ 参数1:lpMutexAttributes [in, optional] 指向SECURITY_ATTRIBUTES结构的指针。如果此参数为NULL,则处理不能由子进程继承。 ○ 参数2:bInitialOwner [in] 如果此值为真,且调用者创建互斥对
阅读全文
摘要:信号量 ● CreateSemaphore 函数原型 ○ 参数1:lpSemaphoreAttributes [in, optional] 指向SECURITY_ATTRIBUTES结构的指针。如果此参数为NULL,则处理不能由子进程继承。 ○ 参数2:llInitialCount [in] 这个信
阅读全文
摘要:Python简介● Python特点 ○ Python 是著名的 “龟叔” Guido van Rossum在1989年圣诞期间,位了打发无聊的圣诞节而编写的一个编程语言 ○ C语言 适合开发那些最求速度,充分发挥硬件性能的程序 ○ Python 用来编写小应用程序的高级编程语言 ● 优点 ○ Py
阅读全文
摘要:可等待计时器对象. ● CreateWaitableTimer 函数原型 ○ 参数1:lpSemaphoreAttributes SECURITY_ATTRIBUTES,指定一个结构,用于设置对象的安全特性。如将参数声明为ByVal As Long,并传递零值,就可使用对象的默认安全设置。 ○ 参数
阅读全文
摘要:小项目 ● 拖拽控件 ● 设置编辑框属性 ● 程序逻辑 ● 获取焦点的事件 ● 启动以后会不停的弹 下消息框 ● 解决办法多拖动一个按钮即可 初始化代码 实现代码
阅读全文
摘要:示例 无法正常显示 使用事件内核对象 ● CreateEvent ○ CreateEvent是一个Windows API函数。它用来创建或打开一个命名的或无名的事件对象。如果想为对象指定一个访问掩码,应当使用CreateEventEx函数。 ● 函数原型 ○ 参数1:lpEventAttribute
阅读全文
摘要:Signal ● Signal = FALSE 相当于标志 ● 进程 初始化FALSE 运行完成 设置位 TURE ● 线程 ● 标准输入输出流 ● 互斥体 ● 信号 ● 可等待计时器 ● 作业 ● WaitForSingleObject() 句柄,时间 ○ 当前正在执行的线程,变成不可调度的状态,
阅读全文
摘要:● 句柄 ● 句柄内核对象递增数值 ● 进程内核对象 ○ 句柄表 ○ 索引 ○ 指向内核对象的指针 ○ 内存空间 ○ 标志位 ● 句柄是不能够跨进程存在的 ○ File Obj -> 地址 ○ 生成索引 ○ A索引表 R3 -> 拿到索引 -> ● closehandle 可以关闭进程句柄 ○ 改变
阅读全文
摘要:内核对象 ● 内核对象 ● 句柄的本质 ● 下载 WinObj ○ https://technet.microsoft.com/en-us/sysinternals/bb896657/ ● WinObj 主要是用来参看我们系统中的内核对象 ○ 必须用管理员权限启动程序 ○ 内核对象是属于我的系统的内
阅读全文
摘要:● Slim锁: ○ 可区分读写操作, 可上共享锁 ○ 效率比临界区高 ● Slim的劣势: ○ 一旦上了独占锁, 共享锁的线程会被阻塞 ● 线程状态 ○ 线程的挂起, 休眠, 阻塞, 等待状态都会使线程不可调度 ○ 当收到操作系统发送的通知说线程可以恢复运行的时候, 线程就又变成了可调度状态
阅读全文
摘要:● EnterCriticalSection() ○ 多个线程操作相同的数据时,一般是需要按顺序访问的,否则会引导数据错乱,无法控制数据, 变成随机变量。为解决这个问题,就需要引入互斥变量,让每个线程都按顺序地访问变量。 这样就需要使用EnterCriticalSection和LeaveCritic
阅读全文
摘要:线程优先级 ● 线程优先级 ○ Windows的每一个可调度的线程分配了一个优先级(0-31),当系统准备去执行一条线程时,会首先看优先级为31的行程,并以循环的方式来进行 调度,只要有优先级为31的线程,操作系统将永远不会调用30以下的线程,这样看起来好像优先级较低的线 程永远得不到被执行的机会,
阅读全文