
一步一步学编程
CodingHeart
程序员
展开
-
unix 环境高级编程6- 进程的管理
一、进程ID每个进程都有一个非负整型的唯一进程ID0是调度进程 也被称为叫唤进程,它不执行磁盘上的任何程序,是内核的一部分因此也被称为系统进程。1是init进程 在自举过程结束时由内核调用,init通常读一些与系统相关的文件并将系统引导到一个状态,init绝不会终止,它是一个普通用户进程但是会以特殊超级用户权限运行,他是所有孤儿进程的父进程2是页精灵进程 支持虚存系统的请页操作原创 2017-05-05 15:10:45 · 358 阅读 · 0 评论 -
Win32 Windows编程 十
一 Windows绘图1原创 2014-07-18 13:47:38 · 912 阅读 · 0 评论 -
Win32 Windows编程 六
WM_PAINT消息1 WM_PAINT 由于窗口的互相覆盖等,产生需要绘制的区域, 那么会产生WM_PAINT消息。一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘制区域来产生WM_PAINT消息例如可以使用 InvalidateRect 声明一个需要重新绘制的区域BOOL InvalidateRect( HWND hWnd, // h原创 2014-06-27 10:04:43 · 1107 阅读 · 3 评论 -
Win32 Windows编程 一
1 Windows 编程基础2 文字的编码3 窗口 程序4 消息循环5 菜单和加速键6 绘图7 对话框8 基本控件一、 Windows 编程基础 1.1 控制台程序不需要完善的Windows窗口,可以使用Dos窗口的方式显示 1.2 Win32窗口程序包含窗口的程序,通过窗口和程序进行交互 1.3 Win32库程序 提供已有的原创 2014-06-10 17:15:44 · 1039 阅读 · 0 评论 -
Win32 Windows编程 九
资源的使用1 资源文件图标 光标 字符串 菜单 加速键 对话框资源位图等等资源脚本文件 - 扩展名为RC文件 定义了资源和相关文件等信息资源编译器 - RC.exe2 图标资源 ICON2.1 常用的几种大小: 16x16 ,32x32, 48x482.2 使用 HICON LoadIcon( HINSTANCE hInstance, // handl原创 2014-07-16 14:22:27 · 997 阅读 · 0 评论 -
Win32 Windows编程 五
一 Win32消息机制1 消息机制过程驱动:程序是按照我们预先定义好的顺序执行,每执行一步,下一步都已经按照预定的顺序继续执行,直到程序结束 事件驱动: 程序的执行顺序是无序的。某个事件点所执行的代码,是由外界通知。由于我们无法决定用户执行顺序,所以代码的执行也是无序Win32的消息机制 - 事件驱动2 Win32消息程序2.1 Win32 窗口注册2.原创 2014-06-25 16:35:53 · 899 阅读 · 0 评论 -
Win32 Windows编程 四
一 窗口注册和窗口创建的过程1 Win32窗口程序创建步骤1.1 WinMain入口函数的定义1.2 WindowsProc 函数的定义1.3注册窗口RegisterClass/RegisterClassEx 1.4创建窗口CreateWindow /CreateWindowEx1.5 显示刷新窗口ShowWindow/UpdateWindow1原创 2014-06-23 17:31:38 · 952 阅读 · 0 评论 -
log4cpp - 使用
#pragma once#include "ThreadLock.h"#include #include #include #include #include #include #include #include class QuoteLog{public:static QuoteLog* getInstance();void log原创 2014-05-20 17:39:32 · 1093 阅读 · 0 评论 -
MFC-day01
学习MFC的四大技术障碍面向对象观念与C++语言Windows程序基本观念Microsoft Foundation Classes 集成开发环境与开发工具需要的硬件环境windows操作系统Virsual C++(32位)能运行上述操作系统的主机常见名词:API:应用程序接口,系统开放出来给用户使用的接口SDK: windows开发工具MFC: w原创 2014-05-03 22:00:08 · 891 阅读 · 0 评论 -
令人作呕的错误
在window下编程的时候#include “StdAfx.h” 必须添加在所有头文件的第一个原创 2014-06-07 11:31:44 · 768 阅读 · 0 评论 -
Win32 Windows编程 二
一、第一个窗口程序1 入口函数 WinMain2 窗口处理函数LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ){return DefWindowProc( hWnd, nMsg, wParam, lParam );}当窗口处理消息事件时 调用该函数原创 2014-06-13 11:58:51 · 920 阅读 · 0 评论 -
unix 环境高级编程5 - 进程的环境
一、main函数在内核启动c程序的时候,在调用main函数之前会调用一个特殊的起动历程,可执行程序会将次起动历程指定为程序的起始地址-这是由连接编辑程序设置的,而连接编辑程序由C编译程序调用,起动例程从内核取得命令行参数和环境变量值,然后调用main函数调安排二、进程终止1.从main函数返回2.调用exit()3.调用_exit()4.调用abort5.由一个信号终止原创 2017-05-05 11:58:26 · 304 阅读 · 0 评论 -
北京c++技术交流 235760268
北京c++技术交流群 235760268,集技术交流,招聘求职于一体原创 2015-06-16 12:48:43 · 854 阅读 · 0 评论 -
把exe程序配置成服务
srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行。也就是说srvany只是其注册程序的服务外壳,这个特性对于我们来说非常实用,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗转载 2014-10-09 13:25:36 · 1729 阅读 · 0 评论 -
Win32 Windows编程 十二
一、对话框1、对话框的分类2、对话框的基本使用方式3、对话框资源4、有模式对话框的使用5、 无模式对话框的使用5.1 添加对话框资源5.2 定义窗口处理函数BOOL CALLBACK DialogProc(HWND hWnd,UINT UMsg,WPARAM wParam,LPARAM lParam)5.3 创建对话框 HWND原创 2014-07-25 09:14:00 · 960 阅读 · 0 评论 -
Win32 Windows编程 八
一、系统菜单1 执行从系统提供的窗口命令,例如最大化、关闭等命令。本质上和普通菜单一样,所以我们也可以在程序中使用这个菜单2 系统菜单的使用2.1 获取系统菜单GetSystemMenuHMENU GetSystemMenu(HWND hWnd, //要获取的窗口句柄BOOL bRevert; //获取重置标识);bRevert: TRUE 重置 FALSE 不原创 2014-07-10 11:42:53 · 1089 阅读 · 0 评论 -
Win32 Windows编程 三
一、NMAKE 和 Makefile1.1 NMAKE - 命令解释器, 根据Makefile文件中定义的脚本,完成项目的编译等操作1.2 Makefile - 定义编译、连接等脚本语言1.3 Makefile 文件的使用1.3.1 基本语法规则window.exe:window.obj //依赖行 cl.exe window.c /c原创 2014-06-17 10:18:38 · 1062 阅读 · 0 评论 -
Win32 Windows编程 七
定时器消息1、 WM_TIMER按照定时器设置的时间段,自动向窗口发送一个定时器消息WM_TIMER。优先级比较低定时器精度比较低,毫秒级别,消息产生时间也精度比较低2 、消息和函数WM_TIMER : 消息IDwParam 定时器的IDlParam 定时器的处理函数SetTimer :设置一个定时器 UINT_PTR SetTimer(原创 2014-07-07 17:27:09 · 781 阅读 · 0 评论 -
Win32 Windows编程 十一
一、位图的使用1 位图 - 通过保存图像上每个点的颜色,生成相应的位图文件光栅图 - 可以理解为图像点阵的保存矢量图 - 可以理解为绘图命令的保存2 位图的使用2.1 加载位图LoadBitmap2.2 创建放置位图的DCCreateCompatibleDC2.3 将位图放入创建的DC中SelectObject2.4 绘制位图到当前DC中BitBlt原创 2014-07-22 16:50:30 · 877 阅读 · 0 评论 -
linux环境下C编程(七)
数组代表内存中多个连续的存储位置数组要求每个存储位置对应的数据类型一样数组有一个名称数组对应的每一个存储位置都有编号 从0开始 依次递增 这个编号叫做下标下标的有效范围是从0开始到存储位置的个数减一 超过范围的下标不能使用使用循环操作数组中的每个存储位置可以最大限度体现数组的优势避免随着数据量的增加而导致语句量的增加数组的优势源于数组对应的内存是连续的数组可原创 2014-02-09 18:40:05 · 969 阅读 · 0 评论 -
linux环境下C编程(十一)
程序在内存中是分段保存的。代码段: 用来保存所有语句 不可修改全局段: 用来保存全局变量和静态变量 大小不随程序的运行而改变栈:先进后出 大小随程序运行变化 栈里为每个函数每次运行分配一个私有区域每次函数运行结束后他的私有区域被收回 局部变量放在栈里堆:动态分配的数据 就是在程序运行中临时决定是否使用ASCII码为0 的字符用’\0‘ 表示 他用来表示一段文字的结束位置。这原创 2014-02-09 18:43:08 · 869 阅读 · 0 评论 -
linux环境下C编程(九)
形式参数实在函数调用的时候临时创建出来的 在函数运行期间形式参数一直是可以使用的在函数结束的时候形式参数被销毁实际参数和形式参数在内存中占不同的存储位置 任何一个变化不会影响另一个变化形式参数列表为空表示参数个数任意,参数类型任意形式参数列表为void表示没有任何形式参数数组可以作为函数形式参数使用数组形参可以用来代表一组个数位置的数字数组做形参需要另外的形参用来表原创 2014-02-09 18:41:29 · 1045 阅读 · 0 评论 -
linux环境下C编程(三)
不同数据类型的数字可能有重叠字符类型是一种数据类型字符类型名称是char字符类型由256个不同的字符构成每个字符对应一个整数数字(不同字符对应的数字不同)每个字符数据有两个不同的身份 分别是字符和数字ASCII码表列出字符和数字之间的关系所有的字符数据分成两组 每组128个其中一组两个身份间的对应关系在所有计算机上都一样 这足字符的数字身份是0到127另外一组两原创 2014-02-08 21:04:29 · 1136 阅读 · 0 评论 -
一步一步学UC(三) - 文件和目录
stat fstat和lstat函数#include int stat(const char* restrict pathname,struct stat *restrict buf);stat函数返回路径上此文件有关的信息结构int fstat(int filedes,struct stat* buf);在描述符上打开文件的有关信息int lstat(const char原创 2014-01-15 21:13:36 · 825 阅读 · 0 评论 -
一步一步学UC(二) - 文件IO
可用的文件I/O函数:打开文件open,读文件read、写文件write,以及lseek,close等文件描述符:非负整数,0标准输入,1标准输出,2标准出错open函数:可以打开或者创建一个文件#include int open ( const char* pathname,int oflag,......);pathname 要打开或创建的文件名。oflag原创 2014-01-14 20:38:55 · 818 阅读 · 0 评论 -
一步一步学UC(一) - 内存分配
一、目标1、亲手完成练习2、达到5000到20000行代码量二、过程体系语言C语言C++算法 算法数据结构基础(系统核心(kernel)编程)平台:linux/unix window MacOSXPC机 服务器 ARM操作系统应该具备如下能力设备驱动 进程管理 内存管理 文件目录 系统管理 IO基础学习过程:内原创 2014-01-13 22:15:24 · 901 阅读 · 0 评论 -
一步一步学python(七) - 更加抽象
1、面向对象面向对象程序设计中的术语对象基本上可以看做数据以及由一系列可以存取这些数据方法所组成的集合。2、多态对不同的类的对象使用同样的操作2.1 多态和方法程序得到了对象可能有多种形状,绑定到对象特性上面的函数称为方法2.2 多态的多种形式任何不知道对象是什么类型,但是又要对对象做点什么的时候都会用到多态,3、封装对外部世界隐藏对象的工作细节4、继承原创 2013-12-21 16:02:04 · 790 阅读 · 0 评论 -
一步一步学python(六) - 抽象
1、string转数字import localelocale . atoi( str )2、创建函数函数是可以调用(可能包含参数),执行某种行为并返回一个值>>>import math>>>x = 1>>>y = math.sqrt>>>cllable( x )false>>>callable( y )True使用def定义一个函数原创 2013-12-20 15:56:22 · 722 阅读 · 0 评论 -
一步一步学python(五) -条件 循环和其他语句
1、print使用逗号输出 - 打印多个表达式也是可行的,但要用逗号隔开>>> print 'chentongxin',23SyntaxError: invalid syntaxpython3.0以后,print不再是语句,而是函数,函数要加上括号>>> print('chentongxin',23)chentongxin 23>>> 1,2,3(1, 2, 3)原创 2013-12-13 16:54:33 · 1435 阅读 · 0 评论 -
一步一步学python(四) - 字典
1、字典的使用 创建字典:phonebook = {'Alice': '1234' , 'Beth':'9120'}2、dict函数 >>>items = [('name','Gumby'), ('age',42)] >>>d = dict(items) >>>d { ' age ' : 42, ' name ' : ' Gumby ' }3原创 2013-12-12 16:43:36 · 951 阅读 · 0 评论 -
linux环境下C编程(二)
c语言中的提供了一组标准函数来解决常见的问题每个标准函数都有自己的名字printf标准函数把数据打印在屏幕上为了使用这个标准函数需要包含stdio.h文件使用标准函数需要写出函数名\n表示换行可以采用占位符打印编写程序时还不知道的数字 字符。%d占位符和整型数字匹配占位符的个数必须和数字的个数一样程序中所有相关数据都放置在内存里变量对应了内存中的某个原创 2014-02-08 21:03:09 · 1243 阅读 · 0 评论 -
linux环境下C编程(四)
不可以在二进制表示形式中使用负号负数二进制的计算方法是把整数的二进制按位求反再加一采用上述方法计算出的二进制就是补码每个有负号数据类型中首位为1其他位为0表示这个数据类型的最小数采用刚才的方法同样可以根据负数的二进制补码计算出相反数的二进制补码任何有负号的二进制数字最左边的数位叫做符号位 可以根据它得到数字的正负情况 符号位是1表示负数 符号位为0表原创 2014-02-08 21:05:43 · 963 阅读 · 0 评论 -
linux环境下C编程(五)
移位操作可以把一个数据中的所有二进制位向左或者向右移动n个位置左移 右移 >>符号的左边是要操作的数据右边是希望移动的位数移位操作不会改变参与计算的数字左移操作右边的空位置上一定补0有符号数据右移左边空位置上补符号位如果移位操作过程没有丢失数据 则左移相当于乘以2的n次方 右移相当于除以2的n次方~是一个单目位操作符 可以对二进制按位取反& 获得一个原创 2014-02-09 18:37:43 · 1108 阅读 · 0 评论 -
linux环境下C编程(十三)
结构体可以用来生成新的数据类型 结构体所生成的新的数据类型中可以包含多个不同的部分 每个部分可以使用不同的数据类型表示结构体仅仅是一种数据类型不在内存中占据存储位置,它仅仅描述了多个数据之间的关系使用结构体声明变量叫做结构体变量 他们才是真正占据存储位置声明关键字struct 通常放在头文件中 声明语句不会分配位置 所以不能呢过初始化可以使用如下语句声明结构体 stru原创 2014-02-09 18:44:44 · 636 阅读 · 0 评论 -
linux环境下C编程(十二)
文件操作中使用一个整数记录西一次读写操作的位置 这个位置叫位置指针这个位置记录从文件头到文件某个位置的距离 ,位置指针会随文件的读写操作而改变ftell函数可以i获得位置指针的数值long ftell(FILE *stream);rewind 把指针调整到文件开头void rewind(FILE *stream);fseek函数把位置调到任何原创 2014-02-09 18:43:48 · 586 阅读 · 0 评论 -
linux环境下C编程(八)
程序中可以对语句进行分组 分组是可以多个层次上进行的最低层次的分组结果叫做函数一个函数包含多条语句所有C语言程序都是由函数构成的每个函数都有一个名字使用名字区分不同函数每次C语言中必须包含一个主函数函数之间会互相协作 他们的协作关系是随时间变化 两个函数之间的一次协作关系叫函数调用任何一次函数调用是在两个函数之间发生的发起调用过程的函数叫调用函数原创 2014-02-09 18:40:46 · 795 阅读 · 0 评论 -
linux环境下C编程(六)
break;语句可以随时终止整个循环的执行continue;语句可以跳过循环中的大括号直接进入下一次循环假设有如下循环for(1;2;3){4;}以上执行顺序是【1 2】【4 3 2】【4 3 2】后面每组都都一样 第一组特殊 正常情况下for在两组之间结束 标号为2的逻辑表达式决定是否要开始下一组 如果是真则开始下一组如果循环正常结束编号2原创 2014-02-09 18:39:18 · 1043 阅读 · 0 评论 -
linux环境下C编程(十)
变量有两个重要特征:生命周期和作用域变量的作用域指可以使用变量名称的所有语句的总和根据作用域把变量分成三组:全局变量 局部变量 块变量声明在所有函数外面的变量叫做全局变量 全局变量的作用域是所有语句自动初始化成0声明在函数内部的变量叫做局部变量 局部变量的作用域只包含函数内部的所有语句声明在语句块内部的变量叫做块变量 块变量的作用域只包含在语句块内部的语句原创 2014-02-09 18:42:16 · 836 阅读 · 0 评论 -
linux环境下C编程(一)
程序就是i一个可执行文件 程序不会随时间变化 它是静态的在使用一个程序的时候必须由计算机传见一个对应的进程 用户使用的是这个进程而不是程序文件进程是所有和程序运行期间有关数据的总和进程是随时间变化的 它是动态的ps :察看当前进程 -aux 察看系统中的所有进程linux系统为每个进程分配一个数字(进程ID) 不同进程ID不同kill命令可以结束一个进程原创 2014-02-07 22:16:14 · 1529 阅读 · 0 评论 -
linux编程基本知识
终端窗口:使用linux操作系统的中重要工具linux系统是一个多用户的操作系统linux系统中每个用户都有一个自己的帐号计算机通过帐号区分不同的用户必须掌握的命令:whoami命令可以察看当前用户的帐号clear 清屏linux的重要组成部分:文件同,它是用来保存文件的文件系统采用分组的方式来进行文件保存(可以是逐层分组)文件系统中用文件夹表示一个分组li原创 2014-02-07 22:14:29 · 1004 阅读 · 0 评论