摘要: 今天主要学习到的是静态变量(static)、寄存器变量(register)、初始化、递归、预处理器。 比较容易混淆的是关于静态变量的,而静态变量分为:静态局部变量和静态全局变量。 静态局部变量: (1)、静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。 (2)、允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。 (3)、对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 ...阅读全文
posted @ 2012-05-29 08:02 ahl5esoft 阅读(12) 评论(0) 编辑
摘要: 每天一点点,不知不觉已经到了第4章了。 首先是对于函数的基础知识的说明,以等同于C#的IndexOf的函数为例子,对于一些C#的程序员,C/C++中的字符串是一个char的数组,但是数组的书写方式也是不一样的,C#中都是类型[],而C/C++中的确实类型 变量名[],虽然一开始都是有点不习惯,但是几次练习实践后,还是可以适应的。函数的具体实现如下: 1 int strindex(char s[], char t[]) 2 { 3 int i, j, k; 4 5 for( i = 0; '\0' != s[i]; i++) 6 { 7 fo...阅读全文
posted @ 2012-05-28 21:45 ahl5esoft 阅读(4) 评论(0) 编辑
摘要: c/c++的控制流跟C#的差不多,分别有if-else、else-if、while、for、do-while、break、continue以及goto. 对于if-else的习题为对于一下折半查找的例子,用while循环语句共执行2次测试,其实可以只用一次,于是要求改写,原代码如下: int binsearch(int x, int v[], int n) { int low, mid, high; low = 0; high = n - 1; while ( low <= high ) { mid = (low+high) / 2; ...阅读全文
posted @ 2012-05-27 20:58 ahl5esoft 阅读(3) 评论(0) 编辑
摘要: 这次的章节主要是对于按位运算符的掌握,如:~、&、|、>>、<<,看到这几个运算符,让我想起了以前突然有一次在网上看到一个算法(C#)写的,里面就有很多这样的按位运算符,当时我就懵了,于是便到网上找资料,当时用具体的按位运算符去搜索,没找到什么资料,后来就发了博文,记录了自己一些理解,现在回想起来,终于把这几个问题搞明白了,呵呵。 由于刚刚掌握没多久,怕自己隔段时间就会生疏,于是拿一道练习题来做解析,以后自己再来看便能更好的熟悉起来。 例题:将x中从第p位开始的n个(二进制)位设置为y中最右边的n位的值。 实现: View Code 1 unsigned set阅读全文
posted @ 2012-05-26 13:20 ahl5esoft 阅读(5) 评论(0) 编辑
摘要: 可能是因为不是计算机专业出身的原因吧,对于一些类型的取值范围都是模模糊糊的,这次学习c语言又再次温习了一遍,对于有符号无符号的类型,也让我的脑袋一时间都变成了浆糊,long类型的常量以字母l或L结尾,无符号的long类型常量则以ul或UL结尾,后缀为f或者F则为float类型,这里又再次出现了一个以l或L结尾的常量,但是表示的却是浮点类型的long double。 接下来便是关于运算过程中的转换原则,通常都是将“比较窄的“类型转化为”比较宽的“类型,这样可以保证不会因为转型而导致信息丢失,但是如果将”比较宽的“类型转化为”比较窄的“也是可以的,只是会造成信息的丢失,会将超出的高位部分丢弃...阅读全文
posted @ 2012-05-24 21:47 ahl5esoft 阅读(3) 评论(0) 编辑
摘要: 经过一番努力以后,终于给自己定下了学习c/c++的目标,学习一门新的语言,对于编程思想可能也要有所转换,毕竟c是面向过程语言而c++则是在此基础上添加了面向对象的特征,从语法的角度来讲,跟C#也是有很多的不同的地方。此系列文章便是我在学习c/c++的过程当中遇到的一些问题的记录。 此番计划中第一本书便是《C程序设计语言(第二版)》,从最简单的“Hello, World”开始,前面的几个练习也都是为了能更好的熟悉这门语言而设立的。 可能是编码习惯的原因,对于各种编码练习,总是不习惯将它们全部放在一个函数内,于是想将其重构成额外的练习函数,于是我便在没有了解的情况下,想将练习的内容放入...阅读全文
posted @ 2012-05-24 04:59 ahl5esoft 阅读(13) 评论(0) 编辑
摘要: 虽然本书所提供的实例、代码均源于java,但是不管我们是使用什么编程语言,编写出"好代码"对于一个想成为优秀的程序员都应该是最基本的。 良好的方法命名、适宜的注释、短小的方法、各种环境下的变量命名等等,这都是大师在多年编程中总结下来的经验之谈。 在网上经常会看到很多牛人是这么说的:“项目要注意可扩展、灵活性”、“要为以后的需求变更提供好的接口”、“要灵活使用设计模式”等等,仿佛各种各样的项目功能,在设计之初就已经是如此完备,能应付各种各样突如其来的需求变更,能一下子构建出如此完备的功能,更是我们这些新手所不能及,所崇拜的。 然而通读本书之后,我得到的体会则是一开始编写完成的阅读全文
posted @ 2012-04-07 22:28 ahl5esoft 阅读(1194) 评论(6) 编辑
摘要: 突然觉得应该记录一下自己今年开始准备执行的计划,也就是我从计划开始读过的书以及自己将来会阅读的书籍。每隔一段时间总结一下,自己学习到的知识,忘记的知识,对于经典的书籍应该多读几次把基础牢牢的打好。因为本人的英文其实是很差的,所以阅读的都是中文版本的书籍,呵呵。尽管有些书已经读过,且不记得读过的时间,但是经典的书籍是应该多多咀嚼几遍的,温故而知新,呵呵。 1、CLR via C#(第三版) --2011.12.05到2012.02.29 一直都听说这本书是经典中的经典 所以读的非常慢 读完之后收获甚丰 2、你必须知道的.NET(第二版) --2012.03.09到20...阅读全文
posted @ 2012-03-26 22:22 ahl5esoft 阅读(41) 评论(1) 编辑
摘要: 由于以前平时上班、业余大部分的时间都是在开发上,每次需要更改一些模块、功能,往往都是需要做相当大的调整,于是乎我便有了计划要来一个长期的恶补,静下心来好好的阅读一些经典的书籍。虽然很多人会有这样的感受,那就是读了几本书,但是能从书里面学到、记下的知识根本不多,很多的知识点都只是停留在朦朦胧胧的状态(别人问起来并不能很完整的、准确的回答,但是自己心里面却有着点点滴滴的见解)。 古人有云:“读书百变,其义自见。”。我也有着自己的见解,读了前面几本书,也许有着一些朦胧,但是在以后的阅读当中,也可能会因为其他作者的不同见解,让自己突然开窍呢。 在我读完《CLR》的时候,我就有一些这样、那样的疑...阅读全文
posted @ 2012-03-26 20:43 ahl5esoft 阅读(26) 评论(0) 编辑
摘要: 自从选择购入港版Lumia800以后,一直想尝试制作一款自己的手机软件,但是寻觅了很久一直不知道从哪个方面下手(一直挣扎到底要不要做,总是找理由拖延)。终于在一个偶然的机会,我在公司查找到了一些资料,希望把它存储到手机上,然后回到家以后再详细查看,结果发现手机没有安装笔记软件,于是便有了想自己做一个笔记软件的想法,借着上个周末的休闲时间,构思了一下软件大概的功能,便开始了我第一个windows phone软件的设计。 能完成该软件的设计,要感谢Allen Lee提供的WP7有约文章,让我有对于Windows Phone有了一些了解。 该笔记软件主要适用于记录的,也提供了一些分类。软件部...阅读全文
posted @ 2012-03-20 23:39 ahl5esoft 阅读(1168) 评论(7) 编辑
摘要: 花了将近2个星期的时间将本书大致的读了一遍,虽然本书只有250页(这个数字的确不好>_<),但是讲述了程序员应该如何从一个普通程序员成长为成熟程序员,再由成熟程序员成长为优秀程序员的一些过程和要点,对边编程技巧、客户需求、面向过程思想、面向对象思想等,需要掌握的范围和实践的范围给出了一些建议,的确让我在当前的迷茫理清了一条路线。 读完本书之后(关于EOM的解释,我个人是直接略读的,呵呵),让我感觉作者对于以兴趣而成为一个程序员的看法不是很赞同,作者认为以兴趣为主的程序员,不容易成为一个优秀的程序员,因为在作者的眼中,优秀程序员必须具备:1、心怀理想;2、充满激情;3、市场意识(文章阅读全文
posted @ 2012-03-09 07:11 ahl5esoft 阅读(39) 评论(0) 编辑
摘要: 这本《CLR via C#(第三版)》洋洋洒洒763页,我也仅仅是精读了第三版,略过了前面2个版本,此书涵盖了C#的许多方面,从开头的CLR的基础部分到后期关于线程的方方面面,在长达4个月的品读当中,给了我不少C#上基础的补充也给我带来了不少的挑战,许许多多的知识点在我的脑袋里面仍然是迷迷糊糊的,甚至是一些很基础的知识,到我读完的这个时刻,也是被我忘得干干净净。 在开始阅读本书之前,我有一次在看老赵的文章,文章中出现的一句关于CLR编译过程的话,我起初在看到之时,对于CLR编译的过程也是完全不知道,看了老赵一番讲解之后,我便有了想阅读此书的想法(这本书在我的书架上已经呆了很长时间了,我硬...阅读全文
posted @ 2012-03-06 22:32 ahl5esoft 阅读(25) 评论(0) 编辑
摘要: 因为个人在业余有尝试在做一个游戏项目,所有的功能都是使用ajax的,因此要使用JSON作为媒介,然而如果是使用集成的类库进行JSON的转化,带来的影响就是一个类在传输到页面上的时候,其实仅仅只是需要其中的几个属性而已,如果嵌套的层数比较多,例如:一个类中包含其他的类或泛型或数组,这样子,数据加起来以后多出了不少。也许有人会创建一些额外的类去来处理,那的确是可以解决这种问题,但是不同的功能所使用到的数据要是个有差别的话,那么增加类则就变成了一个无底的深渊了。 很早就有这个想法要把文章写出来,可能是自己比较懒吧,总是因为公司的工作、业余游戏的开发或是其他问题没能完成这个事情,今天终于下定决心...阅读全文
posted @ 2012-02-29 14:54 ahl5esoft 阅读(2664) 评论(20) 编辑
摘要: 昨天跟朋友聊天,发现他们的项目数据层使用的是最基础的纯SQL语句+SqlParameter进行数据交互的,大家知道SELECT、UPDATE、CREATE对于表的依赖性比较大,然后删除语句却不一样,它的语法比较简单,大致有以下几种: 1、DELETE FROM TableName 2、DELETE FROM TableName WHERE ID = idValue 3、DELETE FROM TableName WHERE ID IN (id1, id2, id3, id4....) 于是我们要实现这个简单的功能来简化比较常用的删除就比较容易了,主要保留2个数据,1个是TableN...阅读全文
posted @ 2012-02-07 10:25 ahl5esoft 阅读(1280) 评论(2) 编辑
摘要: 距离上一篇文章过去了很久,因为要将模拟键盘鼠标的模块移植到公司项目里面去,在此过程中遇到了不少问题,主要的问题有如下三个: 1、由于Timer对于每个事件都是引发一个新线程,由于模拟是连续性的,这样会引发事件之间的相互干扰。 2、模拟过程中需要有一些业务数据的支持,以及在模拟结束之后需要返回模拟结果 3、模拟过程当中,如果用户操作键盘鼠标怎么办 首先我先分享一下解决以上问题,那我们先从1开始吧。 因为Timer对于每一个定时间隔的事件都是新起一个线程,这种情况下,我们的每一个步骤就没办法变成连续性的,有一些步骤可能会变成异步执行或者在某些步骤执行时间过长的情况下,又会变成颠倒顺序...阅读全文
posted @ 2011-12-21 10:56 ahl5esoft 阅读(1091) 评论(3) 编辑
摘要: 上一次我们利用windows API以及xml配置来模拟键盘鼠标,但是并没有对模拟中出现的逻辑错误或者异常进行处理(例如:模拟开启之后,当前程序的部分窗体或者业务逻辑上出现错误,这时我们不只要提示相应的错误,而且必须要让模拟程序将当前正常退出,以保证数据安全。),而且在窗体内部类似Label的控件也没有办法通过抓取窗体句柄或者遍历子窗体句柄来获取相应的信息,因此在一段时间的研究和整改之后,对于一些配置节点增加了ErrorTo属性以及新增Error节点,在出现逻辑错误或者异常的时候,直接跳转到对应的节点运行对应的正常退出步骤。 我设定是可将ErrorTo的属性设置在所有节点之上,但是如果子...阅读全文
posted @ 2011-11-23 10:23 ahl5esoft 阅读(1307) 评论(3) 编辑
摘要: 由于工作当中有部分任务需要使用到模拟键盘鼠标来完成业务的自动调用,虽然原来的同事有做了一些共用方法以及使用XML配置档来配置模拟动作流程,但是公用的方法和XML配置组合起来用的时候还是有不少的麻烦。 配置如下: 光从一些配置上,是比较难以理解的,个人觉得除了编写这个配置的本人或者使用一段时间的开发人员以外,其他开发人员需要介入修改或者重新制作配置是有一定难度的。也许大家会对业务处理有所期待,业务判断如下: 基本上就是属于对每个节点的Switch判断,通用的节点无非就那几个,但是涉及额外业务的时候,那就必须要设定一些其他的节点作为判断的依据,甚是复杂。 于是乎,在我进入公...阅读全文
posted @ 2011-11-21 10:23 ahl5esoft 阅读(1542) 评论(8) 编辑
摘要: 最近在研究利用api模拟键盘鼠标的动作,类似于按键精灵,然后发现只要是标签存储的值,都没办法用api抓取窗体句柄。于是乎便有了操作内存取值的想法,这就用到了另外一个api了。 因为内存寻值,有一个区间段,我们设定的是从0x00400000到0x7FFFFFFF(这些值是根据CE的区间得来的),然而如果利用for循环去遍历,代码如下:1 Stopwatch watch = new Stopwatch();2 watch.Start();3 int start = 0x00400000, end = 0x7FFFFFFF;4 for (int i = start; i < end; i++)阅读全文
posted @ 2011-11-17 13:48 ahl5esoft 阅读(2549) 评论(37) 编辑
摘要: 相信各位编码一段时间UI界面的朋友们,都会跟我这个新手有着一样的想法,每次界面布局控件可能不是我们在做,但是这些控件的值是需要验证的,每新增一个新的页面,页面需要验证的控件代码我们都要一一去书写,实在是很费劲,很让人烦躁啊,而且那一串串长得不得了的If/Else实在让我们难受,情何以堪啊。于是每个人都有了跃跃欲试的想法,那我们就一起来做一个简单的验证模块吧。 可能有些朋友对于微软的控件印象不好,但是我个人觉得它还是有很大的潜力的,不然也不会有那么多收费的控件,介于用户控件的基础上加上基础控件我们可以做出很理想的一套框架哦,需要一步步的往下扩展,呵呵。 首先验证嘛,其实就是对于当前控件输...阅读全文
posted @ 2011-09-30 12:58 ahl5esoft 阅读(1585) 评论(8) 编辑
摘要: 做开发也有将近2年的时间了,但是经验其实也不多。经历过几个小公司,数据处理层使用过基本的SQL,也有NHibernate框架。框架确实好用,省去了不少代码量,但是业务复杂的情况下,也就难以依托了,仍然需要自己手动书写SQL。业余开发项目的时候数据层使用了框架,后来改回了基础的SQL底层,原因嘛,也想说自己在重复造轮子的情况下,能有其他的收获。 原本使用泛型版本的底层基类,无法使用多态,因此也就无法使用工厂模式创建对应的SQL接口了。 原数据库基类: 1 /// <summary> 2 /// 数据库连接基类 3 /// </summary> 4 /// <type阅读全文
posted @ 2011-09-27 11:18 ahl5esoft 阅读(3128) 评论(20) 编辑