Fork me on GitHub

07 2018 档案

摘要:被忽略的过程 对于C这种编译性语言,我们平时编译时,不管是通过IDE图形界面,还是通过命令行,总感觉编译一下就完成了,然后就得到了针对某OS和某CPU的二进制可执行文件(机器指令的文件)。但是实际上在源码到可执行文件中间隐藏了四个过程,这四个过程被OS默默的处理了。 编译四个过程:预处理、编译、汇编 阅读全文
posted @ 2018-07-31 16:11 克拉默与矩阵 阅读(5780) 评论(3) 推荐(7) 编辑
摘要:系统API里面也会有简单的指令,类似于a++这种,我们认为的简单指令对应到汇编可能很多条。执行在其中某一条汇编的时候可能就切换进程了。切换进程可能发生在用户态(虚拟内存的用户空间),也可能发生在内核态(虚拟内存的内核空间)。不管在哪,切换之前做好记录工作,保护现场,将来切换回来的时候继续执行。这样的 阅读全文
posted @ 2018-07-31 11:33 克拉默与矩阵 阅读(244) 评论(0) 推荐(0) 编辑
摘要:信号量作用 当多个进程/线程进行共享操作时,用于资源保护,以防止出现相互干扰的情况。再间简洁一点,信号量用于“资源的保护“。 进程信号量:实现的是进程所操作资源的保护。 线程信号量:实现的是线程所操作资源的保护。 疑问:资源保护,这个“资源”到底指的是谁? 答:这个资源指的就是你操作的数据,保护的目 阅读全文
posted @ 2018-07-31 11:15 克拉默与矩阵 阅读(842) 评论(0) 推荐(0) 编辑
摘要:概述 管道是OS在物理内存上开辟一段缓存空间,当进程通过read、write等API来共享读写这段空间时,就实现了进程间通信。 消息队列是OS创建的链表,链表的所有节点都是保存在物理内存上的,所以消息队列这个链表其实也是OS在物理内存上所开辟的缓存,当进程调用msgsnd、msgrcv等API来共享 阅读全文
posted @ 2018-07-30 21:14 克拉默与矩阵 阅读(524) 评论(0) 推荐(0) 编辑
摘要:概述 System V IPC引入了3中通信方式,本文主要介绍消息队列 System V IPC不再以文件的形式存在,因此没有文件描述符这个东西,但是它有类似的“标识符”。完全可以认为这个“标识符”就是文件描述符的替代者,但是它是专门给System V IPC使用的,所以我们不能使用文件IO函数来操 阅读全文
posted @ 2018-07-30 19:54 克拉默与矩阵 阅读(1287) 评论(0) 推荐(0) 编辑
摘要:概述 管道通信分为无名管道、有名管道 管道通信的本质 不管是有名管道,还是无名管道,它们的本质其实都是一样的,它们都是内核所开辟的一段缓存空间。进程间通过管道通信时,本质上就是通过共享操作这段缓存来实现,只不过操作这段缓存的方式,是以读写文件的形式来操作的。 无名管道 如何操作无名管道 以读写文件的 阅读全文
posted @ 2018-07-30 10:27 克拉默与矩阵 阅读(819) 评论(0) 推荐(0) 编辑
摘要:延伸阅读:Linux命令——trap Linux命令——killall 、kill 、pkill、xkill 什么是信号 信号是一种通知进程某件事情发生了的一种通信机制,通过向进程发送某个信号,可以告诉进程发生了什么事情,进程收到这个信号后,就知道某事情发生了,进程可以做出相应的响应(处理)。与IP 阅读全文
posted @ 2018-07-29 21:26 克拉默与矩阵 阅读(2156) 评论(0) 推荐(1) 编辑
摘要:现代操作系统下的内存 现在的OS都引入了虚拟内存机制。我们说的内存空间,实际上虚拟内存空间,CPU执行PC指向的命令,PC指向的就是虚拟内存空间地址。虚拟内存机制只不过是OS为我们做了一层虚拟内存地址到物理内存地址的映射,我们不需要管具体是怎么映射的,直接用就完了。每个进程的虚拟地址空间都是一样的, 阅读全文
posted @ 2018-07-29 19:17 克拉默与矩阵 阅读(410) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-07-28 19:33 克拉默与矩阵 阅读(34) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-07-25 16:28 克拉默与矩阵 阅读(41) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-07-23 19:33 克拉默与矩阵 阅读(60) 评论(0) 推荐(0) 编辑
摘要:综述 strlen()求的是长度,针对的对象是字符串. sizeof()求的是大小,针对的是类型。 首先要明确的一个概念是,strlen()是函数,而sizeof()表面看起来是函数,其本质是关键字。 函数必须有() 我们在写代码的时候,对于没有参数的函数,再调用的时候还是要写成fun(),为啥必须 阅读全文
posted @ 2018-07-22 22:08 克拉默与矩阵 阅读(237) 评论(0) 推荐(0) 编辑
摘要:右左法则 首先从最里面的圆括号看起,然后往右看,再往左看,每当遇到圆括号时,就应该调转阅读方向,一旦解析完圆括号里面的所有东西,就跳出圆括号,重复这个过程直到整个声明解析完毕。 举例:int * (* (*fun) (int *)) [10] 首先,fun是一个指针,因为他先跟*(绿色色)结合。fu 阅读全文
posted @ 2018-07-22 21:20 克拉默与矩阵 阅读(462) 评论(0) 推荐(0) 编辑
摘要:一个存在已久的谣言 源码 运行结果: 根据运行结果,很多人就会得出“数组名就是首元素的地址”这样错误的结论。见代码 运行结果: 如果 “数组名就是首元素的地址” 结论属实,那么数组名的大小就是一个指针的大小。事实上,数组名代表整个数组空间。 数组名(ar)本身的确是个地址,在数值上等于数组首元素取地 阅读全文
posted @ 2018-07-22 20:19 克拉默与矩阵 阅读(3509) 评论(0) 推荐(2) 编辑
摘要:转载注明出处:https://www.cnblogs.com/kelamoyujuzhen/p/9349963.html 指针变量的大小 什么样的类型变量就是用来存储什么样的类型数据。整形,整形指针类型等等都是变量类型。 源码 1 #include <stdio.h> 2 int main() 3 阅读全文
posted @ 2018-07-22 13:56 克拉默与矩阵 阅读(269) 评论(0) 推荐(0) 编辑
摘要:edit类型的子窗口 ES_MULTILINE:多行输入文本框 窗口的消息: WL_COMMAND: EN_CHANGE:当edit窗口内的文本内容改变的时候,edit子窗口给父窗口发送一个WL_COMMAND消息,其通知码是EN_CHANGE。 WM_GETTEXT: 用SendMessage函数 阅读全文
posted @ 2018-07-20 21:41 克拉默与矩阵 阅读(600) 评论(0) 推荐(0) 编辑
摘要:button子类型BS_3STATE、BS_AUTO3STATE、BS_AUTOCHECKBOX 源码 1 #include<Windows.h> 2 #include<Windowsx.h> 3 4 LRESULT CALLBACK WindProc(HWND hwnd, UINT message 阅读全文
posted @ 2018-07-20 19:23 克拉默与矩阵 阅读(745) 评论(0) 推荐(0) 编辑
摘要:使用默认窗口处理函数,源码 1 #include<Windows.h> 2 #include<Windowsx.h> 3 4 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 5 LRE 阅读全文
posted @ 2018-07-20 11:29 克拉默与矩阵 阅读(709) 评论(0) 推荐(0) 编辑
摘要:静态子窗口类型 wndclass:static 源码 1 #include<Windows.h> 2 #include<Windowsx.h> 3 4 HINSTANCE G_h; 5 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM 阅读全文
posted @ 2018-07-19 21:20 克拉默与矩阵 阅读(265) 评论(0) 推荐(0) 编辑
摘要:源码 1 #include<afxwin.h> 2 3 class MyApp :public CWinApp 4 { 5 public: 6 virtual BOOL InitInstance(); 7 }; 8 9 MyApp theApp; 10 11 BOOL MyApp::InitInst 阅读全文
posted @ 2018-07-17 21:14 克拉默与矩阵 阅读(224) 评论(0) 推荐(0) 编辑
摘要:创建子窗口类,使得子窗口有自己的处理过程。 子窗口类型WS_CHILD不能和WS_POPUP一起使用!为什么子窗口要有自己的处理过程?如果使用主窗口类来创建子窗口,那么子窗口和主窗口将公用窗口处理过程,此时,窗口处理过程在进行消息处理的时候,必须判断是哪个窗口的消息,非常不方便。子窗口必须有自己的窗 阅读全文
posted @ 2018-07-17 19:07 克拉默与矩阵 阅读(1644) 评论(0) 推荐(0) 编辑
摘要:周期性的发送WWL_TIMER消息的一个东西,这个周期可以由程序员自己设定。设定周期的数是SetTimer,停止定时器消息发送的函数是:Killximer; 定时器消息的特点: 1.不准确(也就是说,你设定的周期是1秒,那么有可能在980毫秒的时候,这个WM_TIMER消息就来了,也有可能1010毫 阅读全文
posted @ 2018-07-17 15:48 克拉默与矩阵 阅读(1713) 评论(0) 推荐(0) 编辑
摘要:和鼠标相关的三个属于:click,double-click,drag 鼠标消息和键盘消息不同:只要鼠标跨越某个窗口,或者在某个窗口中按键,消息。 客户去鼠标消息 WM_MOUSEMOVE WM_[L,M,R] BUTTONDOWN WM_[L,M,R] BUTTONUP WM_[L,M,R] BUT 阅读全文
posted @ 2018-07-17 11:04 克拉默与矩阵 阅读(342) 评论(0) 推荐(0) 编辑
摘要:焦点窗口:接收到这个键盘事件的窗口称为有输入焦点的窗口。具有输入焦点的窗口要么是活动窗口,要么是活动窗口的子孙窗口。 活动窗口:活动窗口通常是很好鉴别的。它总是最上层的窗口——也就是说,它的父窗口句柄是NULL。 系统消息队列 & 应用程序消息队列 当用户按下和释放键盘上的一个键时,Windows和 阅读全文
posted @ 2018-07-16 21:48 克拉默与矩阵 阅读(1330) 评论(0) 推荐(0) 编辑
摘要:源码 1 #include<Windows.h> 2 #include<tchar.h> 3 #include<stdio.h> 4 #define NUM 1000 5 6 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wPar 阅读全文
posted @ 2018-07-15 21:54 克拉默与矩阵 阅读(464) 评论(0) 推荐(0) 编辑
摘要:Windows工作原理中心思想 Windows工作原理的中心思想就是“动态链接”概念。Windows自身带有一大套函数,应用程序就是通过调用这些函数来实现它的用户界面和在屏幕上显示文本与图形的。这些函数都是在动态链接库里实现的。这些文件的名称都带有后缀.DLL,或有时带有后缀.EXE。 这些文件通常 阅读全文
posted @ 2018-07-15 17:26 克拉默与矩阵 阅读(1337) 评论(0) 推荐(0) 编辑
摘要:两个函数:GetScrolnfo和SetScrollnfo一个结构:SCROLLINFO两个消息:WM_CREATE和WM_SIZE 滚动条结构体 cbSize:以字节为单位,结构体大小。就调用者这个参数设置为 sizeof(SCROLLINFO) fMask:指定要设置或检索的滚动条参数。该成员可 阅读全文
posted @ 2018-07-13 21:48 克拉默与矩阵 阅读(663) 评论(0) 推荐(0) 编辑
摘要:常用快捷方式 Ctrl + KK插入书签 取消书签Ctrl + KP 上一个书签Ctrl + KN 下一个数千Ctrl + F3 先一个关键词Shift + F3 上一个关键词 Ctrl + KC 添加注释 Ctrl + KU 取消注释 Ctrl + L 删除一行 Ctrl + C 复制一行 Ctr 阅读全文
posted @ 2018-07-13 17:10 克拉默与矩阵 阅读(1583) 评论(0) 推荐(0) 编辑
摘要:windows程序在现实方式上属于图形方式,和文字方式的显示,有显著的不同。 什么是设备句柄,如何获取 使用统一的数据结构表示某一设备,这个结构就是设备句柄。 源码 1 #include<Windows.h> 2 3 LRESULT CALLBACK WindProc(HWND hwnd, UINT 阅读全文
posted @ 2018-07-12 21:44 克拉默与矩阵 阅读(976) 评论(0) 推荐(0) 编辑
摘要:源码 1 #include<Windows.h> 2 3 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 4 5 int WinMain(HINSTANCE hInst, HINSTA 阅读全文
posted @ 2018-07-12 17:02 克拉默与矩阵 阅读(307) 评论(0) 推荐(0) 编辑
摘要:VS 2017下源码 1 #include<stdio.h> 2 3 int main() 4 { 5 char ASC_a = 'a'; 6 char *ASC_str = "hello"; 7 wchar_t W_a = 'a'; 8 wchar_t *W_str = "hello"; 9 pr 阅读全文
posted @ 2018-07-12 11:25 克拉默与矩阵 阅读(311) 评论(0) 推荐(0) 编辑
摘要:源码 1 #include<Windows.h> 2 #include<stdio.h> 3 4 int MessageBoxPrint(char *szFormat, ...); 5 6 int WinMain(HINSTANCE hInst, HINSTANCE tmp, LPSTR strCm 阅读全文
posted @ 2018-07-12 11:00 克拉默与矩阵 阅读(313) 评论(0) 推荐(0) 编辑
摘要:C语言中,对 sizeof() 的处理都是在编译阶段进行。 下面代码,注意可变参数是怎么使用的 #include<Windows.h> #include<stdio.h> int MessageBoxPrint(char *szFormat, ...); int fun(char ch[]); in 阅读全文
posted @ 2018-07-12 10:37 克拉默与矩阵 阅读(307) 评论(0) 推荐(0) 编辑
摘要:源码 #include "stdafx.h" #include<Windows.h> int WINAPI WinMain(HINSTANCE hInst,HINSTANCE tmp,LPSTR strCmd,int nShow) { MessageBox(NULL, "Hello World!", 阅读全文
posted @ 2018-07-11 21:29 克拉默与矩阵 阅读(340) 评论(0) 推荐(0) 编辑
摘要:数字图像类型 静态图像可分为矢量(Vector)图和位图(Bitmap)。 矢量图 用数学公式描述的图像,用一系列绘图指令表示图像:图像中每个形状都用一个完整的公式描述,称为一个对象。 优点: a、文件数据量很小: b、图像质量与分辨率无关: 无论图像放大或缩小多少倍,总是以显示设备允许的最大清晰度 阅读全文
posted @ 2018-07-10 11:33 克拉默与矩阵 阅读(1484) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示