代码改变世界

随笔分类 - 学习笔记

初探单点登录 SSO

2014-04-03 19:39 by 捣乱小子, 14373 阅读, 收藏, 编辑
摘要:单点登录单点登录(Single sign-on,SSO)是一种访问控制,在多个软件应用中,用户只需登录其中一个应用,就可以成功访问其他应用;同样,用户只需注销其中一个应用,就可以成功注销其他应用。当一个公司产品线越来越复杂,做的东西越来越多,考虑到用户的便利性和业务的交集,单点登录也就变得越来越必然。譬如,阿里巴巴中的淘宝网,天猫,聚划算和一淘,考虑下面的场景:我们用户登录淘宝网购物,紧接着朋友打电话说出去玩,于是打开聚划算的时候你会发现,你已经登了聚划算!可能这些细节都被大多数人忽略了(被谁给惯坏了),但如果要让用户再次手动登录聚划算,用户体验可想而知。这种便利性就是单点登录所带来的。在单点 阅读全文

Django 源码小剖: Django ORM 查询管理器

2013-11-12 23:59 by 捣乱小子, 3849 阅读, 收藏, 编辑
摘要:ORM 查询管理器对于 ORM 定义: 对象关系映射,Object Relational Mapping, ORM,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。ORM 能大大简化并抽象数据库的操作.假设 django 的一个工程中包含一个名为 Book 的模块(model), 在 views.py 的函数中可能会写出查询语句:# views.pydef index(request): book_set = Book.objects.filter(id=1) 或者 book_s... 阅读全文

CSRF 攻击

2013-07-24 18:15 by 捣乱小子, 1103 阅读, 收藏, 编辑
摘要:在 Django 的表单中硬性添加{% csrf_token %}标记如下,否则在提交表单的时候会出错,目的就是为了防止 CSRF 攻击: 。。。。。。Forbidden (403)CSRF verification failed. Request aborted.CSRF 全称是Cross-site request forgery,即跨站点请求伪造。当恶意的网站被访问时,会产生伪造的请求发送给服务器,伪造请求中可能存留了用户的 cookie,服务器也无法区分请求真伪,因此数据被提交甚至修改,给用户带来损失。小明如果遭受 CSRF 攻击严重的有如下现象,情景假设:小明早上起来登录了 shopp 阅读全文

最长回文子串(Longest Palindromic Substring)

2013-07-05 15:39 by 捣乱小子, 12463 阅读, 收藏, 编辑
摘要:一个「对称」的序列,就可称为回文序列,譬如:aba,abba 等。详细介绍参看:http://zh.wikipedia.org/wiki/%E5%9B%9E%E6%96%87%E6%95%B0最长回文子串问题是要求在给出的一个序列中,找到最长的回文字串。譬如:一个序列 cabccba,它的最长回文子串是 abccba。暴力暴力穷举可以解决问题。三个循环穷举所有可能的序列。for i in range(0,len(str)) for j in range(i,len(str) is_palindromic_number(i,j)//这里有个循环但算法的复杂度是... 阅读全文

【译】Simple MySQL ORM for C

2013-03-22 12:54 by 捣乱小子, 1693 阅读, 收藏, 编辑
摘要:原文链接:http://daoluan.net/blog/?p=1613一直不知道有ORM这种东西,直到和 @海坡 交流后才接触。在项目中,需要将数据存储到数据库中,首先想到的是生成各种raw SQL的解决方法。但随着项目的进展,发现它很不灵活。譬如可能因为有新的需求,在数据库student表中添加dept_no字段,那在各种raw SQ中就需要进行修改了,工程浩大。如果操作(插入\修改\删除)数据库表中的数据,和操作数据对象一样,可以简化很多的操作,便于数据层的变更,而不必修改逻辑层代码。//项目随手摘录的一个构造插入指定对象数据的INSERT语句的方法。int gtd_genInsertS 阅读全文

数据结构利器之私房STL(下)

2012-12-08 23:24 by 捣乱小子, 1220 阅读, 收藏, 编辑
摘要:索引数据结构利器之私房STL(上)数据结构利器之私房STL(中)数据结构利器之私房STL(下)这篇文章http://www.cnblogs.com/daoluanxiaozi/archive/2012/12/02/confidential-stl.html由于严重违反了『博客园首页』的相关规则,因此笔者改将《私房STL》系列的每一篇都整合到博客园中,取消外链的做法。另,考虑篇幅的问题,此系列文章将分为上、中、下。此篇为《数据结构利器之私房STL(下)》,最后一篇。喜欢就顶下:-)此系列的文章适合初学有意剖析STL和欲复习STL的同学们。私房STL之左值和右值私房STL之函数对象私房STL之函数 阅读全文

数据结构利器之私房STL(中)

2012-12-06 23:34 by 捣乱小子, 2271 阅读, 收藏, 编辑
摘要:索引数据结构利器之私房STL(上)数据结构利器之私房STL(中)数据结构利器之私房STL(下)这篇文章http://www.cnblogs.com/daoluanxiaozi/archive/2012/12/02/confidential-stl.html由于严重违反了『博客园首页』的相关规则,因此笔者改将《私房STL》系列的每一篇都整合到博客园中,取消外链的做法。另,考虑篇幅的问题,此系列文章将分为上、中、下。此篇为《数据结构利器之私房STL(中)》。喜欢就顶下:-)此系列的文章适合初学有意剖析STL和欲复习STL的同学们。私房STL之map和set私房STL之Hashtable私房STL算 阅读全文

数据结构利器之私房STL(上)

2012-12-02 16:13 by 捣乱小子, 2089 阅读, 收藏, 编辑
摘要:索引数据结构利器之私房STL(上)数据结构利器之私房STL(中)数据结构利器之私房STL(下)这篇文章http://www.cnblogs.com/daoluanxiaozi/archive/2012/12/02/confidential-stl.html由于严重违反了『博客园首页』的相关规则,因此笔者改将《私房STL》系列的每一篇都整合到博客园中,取消外链的做法。另,考虑篇幅的问题,此系列文章将分为上、中、下。此篇为《数据结构利器之私房STL(上)》,中篇和下篇将陆续发布。喜欢就顶下吧:-)此系列的文章适合初学有意剖析STL和欲复习STL的同学们。学过c++的同学相信都有或多或少接触过STL 阅读全文

数据结构利器之私房STL

2012-12-02 00:11 by 捣乱小子, 1645 阅读, 收藏, 编辑
摘要:此系列的文章适合初学有意剖析STL和欲复习STL的同学们。都是原创!学过c++的同学相信都有或多或少接触过STL。STL不仅仅是c++中很好的编程工具(这个词可能有点歧义,用类库更恰当),还是学习数据结构的好教材。它实现了包括可边长数组,链表,栈,队列,散列,映射等等,这些都是计算机专业同学在数据结构这门核心课程当中需要学习的。在深入一个工具之前,首先要熟练使用它。STL也一样。在剖析STL之前,可以先动手使用STL,比如其中的vector,list,stack等,热热身,而使用比剖析简单的多,何乐而不为呢。网上很多仁人志士都推荐《C++标准程序库》,这本书好!但如果是新手,又急于了解如何使用 阅读全文

写代码之前要做什么?

2012-11-18 22:22 by 捣乱小子, 2556 阅读, 收藏, 编辑
摘要:在想到这个问题的时候,很多童鞋都会笃定回答:我会先构思程序大体的框架,接着就开始写代码。A:难道你就不将你的构思巨细文档下?B:一般的编程任务不会太难的话,我觉得YY也很可靠,可能更高效。A:为什么这么急的写代码?B:手痒~~先小说下YY。YY即意淫,这里意即写代码时,不草稿不文档,脑瓜里天马行空,心猿意马。我不确定是不是大多数的Coder都这么做?!但我周遭的许多同学确实是这么说的做的。首先,很可能是程序猿对自己的YY思维太过自信,再者就是急功近利——想要一睹自己在写完代码后『F7』+『Ctrl+F5』(注:VS2008 C++的生成解决方案和运行的快捷键,笔者经常在写完代码后,习惯这样快速 阅读全文

『AA』AutoAnchor自动猫

2012-09-17 19:38 by 捣乱小子, 969 阅读, 收藏, 编辑
摘要:2012-09-1719:40:31:嘿嘿,给自己出了道编程题,难度不大(YY都可以), 大家有兴趣可以自己去实现下。文章目录引子思路用法bug源代码 & 可执行文件引子一篇博文如果太长的话,为博文标题添加锚链接可以给众多的读者导航,提高文章的易读性。我也喜欢上了锚链接。但博客后台编辑器的“锚链接工具”我不会用,于是AutoAnchor 自动猫的灵感就来了。思路这道编程题不难,YY都可以得到一个解决方法。每次搜寻到<h3>标签就自动在其前面添加<a name="%d"></a>,处理好html文件之后,再在文章的头部添加:< 阅读全文

漫谈界面和数据

2012-09-15 00:16 by 捣乱小子, 1388 阅读, 收藏, 编辑
摘要:2012-09-15 00:18:瞅着要不要发?!求指导,欢迎斧正。以下是原文。下面的文字是关于界面和数据的,是在做了项目之中之后的心得体会。求指导,欢迎斧正。刚开始接触界面编程的时候,还不能意识到界面和数据的概念。所以代码的思路纯粹是跟着感觉走的,和搭积木一样。这时候,我更倾向于按照习惯——按事物的功能分类,把界面和数据代码放到同一个地方,这样让我对界面和数据(当时还没有清晰的概念)有满意的控制优越感。正是初学者,一开始都动手做自己YY的小软件,数据和界面的问题并不是很突出。这时候做到界面元素和业务逻辑的结合显然意义不大——后来发现句话说的有点早。原因是往后我又YY了下,想升级下上次小软件的 阅读全文

C++ 一不小心被delete两次

2012-09-11 12:10 by 捣乱小子, 3761 阅读, 收藏, 编辑
摘要:2012-09-11 18:04:看到园里朋友们这么热心,有那么一会心里好兴奋。:)2012-09-11 下午:本文曾出现很严重的错误,但不要紧,感谢园友们的即使指正。不喜欢程序语言的C++类中,有时候使用到传值调用(对象实体做参数),遇到这种情况,可要小心了!特别是当你所传值的对象生命周期较长,而... 阅读全文

UIButton 简易的UI

2012-09-10 12:34 by 捣乱小子, 2278 阅读, 收藏, 编辑
摘要:前些阵子,听说有个DirectUI的源码,很有兴致的去Google code上下载下来阅读,但后来没有坚持下来,DirectUI所看重的是窗口的安全性:只要能得到窗口的句柄,你几乎可以为所欲为了;但DirectUI显然没有这个问题,因为其所支持的控件都是windowless,没有句柄的,所有控件都是画出来的。接下来折腾XPButton,总算能看懂。但按钮依旧没有摆脱窗口,只是简单基础基础类库CButton,通过自绘实现DIYbutton。通过绘图的方式可以实现UIButton(画出来的按钮)。但在MFC下如果有多个按钮,那么代码会变得比较凌乱,所以可以把这部分抽象出来得到UIButton类。下 阅读全文

基于TCP的C/S初级网络编程2

2012-08-06 20:40 by 捣乱小子, 1274 阅读, 收藏, 编辑
摘要:导读本篇文章对http://www.daoluan.net/blog/?p=774中的“计算器”进行改进,与大家分享。上面那篇中的服务端属重复型,即一个时刻只处理一客户的请求,处理期间不搭理其他客户。此篇对上篇的“计算器”进行小小的改进——能够接受多个客户的请求。改进细则:独立bind,listen,accept,serve(即calc过程)功能模块;所有错误成功提示提取至各功能模块(函数)之外,错误/成功根据各函数的返回值判断(这更符合UNIX编程风范);客户的服务过程由产生的子进程负责。缺陷:由子进程来负责serve的部分。服务器主进程(父进程)不负责等待子进程结束,资源由内核回收(这一要 阅读全文

基于TCP的C/S初级网络编程1

2012-08-02 21:29 by 捣乱小子, 2219 阅读, 收藏, 编辑
摘要:导读本篇实现C/S架构的“计算器”,与大家分享。看了会网络编程,便不自觉YY了下:实现一个简单的计算器,客户端给出简单的运算,服务端负责运算。这一小项目做起来很有意思,而且难度不大,所以推荐初学者试着去做做。下面分享在实现上述“计算器”的过程。简单的基于tcp协议的 C/S编程都离不开这几个函数:服务端:socket,bind,listen,accept,recv,send客户端:socket,connect,recv,send因为“计算器”还设计涉及客户端的阻塞(因为客户端提交了运算要求过后,服务端可能要等会才能回送计算结果,这时要求客户端阻塞等候),所以涉及select函数。select函 阅读全文

Unix/Linux 那些系统启动后的进程

2012-07-13 14:47 by 捣乱小子, 1934 阅读, 收藏, 编辑
摘要:闲扯什么时候开始有“UNIX/LINIX”这一词汇,我忘了?只知道它是一个操作系统,跟dos一个级别的?!也就停留在这个概念的层次上,所以很多对我来说都是迷。UNIX也走过了40多个年头的路程,而它的每一个组织不断得到改进;21世纪开源势头正猛,前进的步伐更快了!正文眼过千边,不如收过一遍!以下结论来自apue、互联网或者些许自己的理解,实践环境:Linux 2.6。当内核加载完成之后,会创建init进程,它是系统的第一个进程init。init进程ID为1,也因此它是之后所有进程的“祖宗”!init进程是系统进入了多用户的状态,允许多个终端设备登录(tty1,tty2...)。对于每一个终端设 阅读全文

有趣的位运算

2012-07-10 15:36 by 捣乱小子, 452 阅读, 收藏, 编辑
摘要:看了会《c程序设计语言》的位运算一节,重温了下“位运算”的巧妙与高效。与操作可以用来判断一个整数的奇偶性,依据二进制的性质可以很容易得到这样的结论,因此:if a&1 a is odd; else a is even;左移右移的应用应该更熟悉,可以方便进行*2和/2操作。之前遇到的应用有快速幂之类的。学习程序设计的时候一般都会遇到这个问题:设计一个程序,统计整数中值为1的二进制位进行统计。一般的做法无非是:遍历所有的位,测试每一位是否为1,为1则进行统计。#include<iostream> using namespace std; int main() { int c.. 阅读全文

【字符串匹配】KMP算法之道

2012-06-14 00:58 by 捣乱小子, 2090 阅读, 收藏, 编辑
摘要:修订于2012-06-18,心急的读者可以着重看“有趣的字符串匹配提示”,这个例子看懂了,KMP也就差不多了。闲话上午算法考试的时候,感觉OK,前一两星期幸好把图算法都吃透了一遍,复习的时候节省了时间:)。前一半考题不理解背书的都可以,有几题没记过,不靠谱地照着理解写下来。最后的吹水题让我想起了之前的比赛,有一题是曹老师给的实验题,刚好比赛上出现了,而且相似度极高。要是高考,曹老师可就红了:)。这也让我捡了便宜。我们校区2012的招生计划出来了,结果我们校区悲催到只招30个法语本科生,也就是说2012的本科孩子只有30人。不知道法语的怎么看,但对这个校区的未来,我是看不到什么希望。“坑爹啊.. 阅读全文

【图论】信手拈来的Prim,Kruskal和Dijkstra

2012-05-30 23:53 by 捣乱小子, 7048 阅读, 收藏, 编辑
摘要:关于三个简单的图论算法 prim,dijkstra和kruskal三个图论的算法,初学者容易将他们搞混,所以放在一起了。 prim和kruskal是最小生成树(MST)的算法,dijkstra是单源最短路径的算法。 prim 最小生成树prim算法采用了贪心策略:把点分成两个集合,A为已被处理(已经在最小生成树中)的顶点,B为待处理的顶点,(A,B)也就是一个割。若边(u,v)满足u∈A,v∈B,那么(u,v)就是通过割(A,B)的一条边。 很自然的,会有一定数量的边会通过该割,其中权重最小的边就是轻边。 什么是轻边? 左边集合和右边集合就组成一个割,其中边... 阅读全文

【图论】拓扑排序应用

2012-05-22 23:52 by 捣乱小子, 4254 阅读, 收藏, 编辑
摘要:拓扑排序虽是一种排序,但是它跟平时所接触的sort或者qsort不同,排序的意义不同。拓扑排序针对有向无回路图(DAG)而言的,不应用与存在回路的有向图。【图论】广度优先搜索和深度优先搜索 有说到了BFS和DFS,拓扑排序是DFS的一个应用。有向无回路图能说明事件的发生的先后的顺序。比如穿衣服,士兵排队等。一个具体的例子,有N个物体,下面给出物体的重量比较,比如(a,b)表示a比b重等等,问已给出的条件是否会矛盾?其实就是判断用所给条件所组织的一个图中是否会存在环?在DFS中加入时间戳,完成DFS后让节点按第二时间戳排序,就得到了DAG的拓扑排序结果。【图论】有向图是否存在环 拓扑排序还可以解 阅读全文

【图论】广度优先搜索和深度优先搜索

2012-05-18 09:23 by 捣乱小子, 35964 阅读, 收藏, 编辑
摘要:写在最前面的两种图的遍历算法在其他图的算法当中都有应用,并且是基本的图论算法。广度优先搜索广度优先搜索(BFS),可以被形象的描述为“浅尝辄止”,具体一点就是每个顶点只访问它的邻接节点(如果它的邻接节点没有被访问)并且记录这个邻接节点,当访问完它的邻接节点之后就结束这个顶点的访问。广度优先用到了“先进先出”队列,通过这个队列来存储第一次发现的节点,以便下一次的处理;而对于再次发现的节点,我们不予理会——不放入队列,因为再次发现的节点:无非是已经处理完的了;或者是存储在队列中尚未处理的。《算法导轮》对两种搜索都采用了很聪明的做法,用白色WHITE来标志未发现的节点,用灰色GRAY来标志第一次被发 阅读全文

背包问题(01背包,完全背包,多重背包)

2012-05-06 18:27 by 捣乱小子, 43967 阅读, 收藏, 编辑
摘要:写在最前面的近日为以下琐事烦身: 差不多要向学院提交项目申请了,本来是想做个多模式的IM系统的,可是跟往届通过审核的项目比起来,缺乏创新和研究价值,所以在文档上要多做手脚,花点心思。 一大堆的作业,每每期中都是这样。 一直想读的DirectUI开源代码一直没有进展下去。 准备五月底的软件设计比赛。魔... 阅读全文

《编程珠玑,字字珠玑》读书笔记完结篇——AVL树

2012-04-26 14:34 by 捣乱小子, 11859 阅读, 收藏, 编辑
摘要:写在最前面的 手贱翻开了《珠玑》的最后几章,所以这一篇更多是关于13、14、15章的内容。这篇文章的主要内容是“AVL树”,即平衡树,比红黑树低一个等次。捣乱真惹不起红黑树,情况很复杂;而AVL思路比较清晰。《编程珠玑,字字珠玑》910读书笔记——代码优化更新了,做了点关于“哨兵”的笔记。在这篇文章的末尾,笔者还加了对引用调用的“大彻大悟”。 4篇读书笔记:全在这里 AVL树 学习数据结构... 阅读全文

《编程珠玑,字字珠玑》910读书笔记——代码优化

2012-04-15 13:39 by 捣乱小子, 4413 阅读, 收藏, 编辑
摘要:写在最前面的 再庞大复杂的代码编译器都能接受,编译器会变得越来越聪明,让我们原本的代码更加高效。但是代码执行的多变与不可预测性,如果编译器大肆“优化”,偶尔或者大胆的说“在大多数情况下”,会得到“聪明反被聪明误”的后果,所以编译器非常小心谨慎,一遇到不可预测后果的优化,它就会立即折返,停止这一步的优化工作,因为它不知道程序员的本意是什么,“它怕得罪你”。 程序员要编写容易优化的代码,以帮助编译器扫清障碍。关于代码优化,笔者特别喜欢《深入理解计算机系统》一书中的第五章,有兴趣的可以阅读一下。代码优化小剖代码优化的方法总结了5种。 将函数展开,即内敛函数,以优化函数的调用。 《从简单的算法初探过. 阅读全文

《编程珠玑,字字珠玑》45678读书笔记——编程技巧

2012-04-06 21:03 by 捣乱小子, 2515 阅读, 收藏, 编辑
摘要:写在最前面的 就像上一篇文章说的,“编程永远是后话”!在有了可靠的问题分析过程和数据结构的选择,能正确运行的“二分搜索”代码出现之前,把其主要的思路先在草稿上实现,即伪代码。但由于伪代码执行结果的不确定性,需要有一个验证的过程。笔者非常不喜欢这个过程,因为这个过程很繁琐,而且推出的结论不一定是正确的(毕竟没有实实在在在机器上运行得到正确的结果),在笔者看来,给一个算法题,知道用什么算法,数据结构,如果能用伪代码实现,离成功已经不远了。 但后来我又反驳了自己的观点(矛盾体啊),理由:至少到目前为止,写的都是小程序、小算法题,验证过程可能已经被潜移默化解决了。实战演练:动态规划矩阵连乘... 阅读全文

《编程珠玑,字字珠玑》1234读书笔记——多路归并排序

2012-03-29 12:49 by 捣乱小子, 4726 阅读, 收藏, 编辑
摘要:写在前面的2012年3月25日买下《编程珠玑》,很期待但不知道它能给我带来什么! 编程珠玑,字字珠玑。但是翻译有点拗口,有时候整句话读下来都不知道在讲什么,多少有点掩饰了珠玑的魅力,真怀疑是不是直接有道翻译了。位图数据结构法在“开篇”的里,讲述了排序的一个问题,大意就是,对一个“最多占n位的(就是n位的整数),随机的,无重复的(互异无序)”的整数序列进行排序,那么这个序列的总长度len#include#include#include#includeusingnamespacestd;#defineMAX10000//总数据量,可修改#defineMAX_ONCE2500//内存排序MAX_ON 阅读全文

关于读书的流水账

2012-03-14 22:56 by 捣乱小子, 2218 阅读, 收藏, 编辑
摘要:写在前面的下面是流水账,有闲情的看看,读书感受来到;等不及的打开传送门吧。《妙趣横生的虚拟存储器》流水账 计算机要处理的数据大多会先暂存到高速缓冲区或者内存中,如果内存的容量都无法满足要求的时候,就会把额外的代码数据存储到硬盘当中(硬盘容量很大)。所以cpu是以高速缓冲区作为缓存,而高速缓存又以内存作为缓存,内存又以硬盘做为缓存,这里所说的“作为缓存”是指当层次的存储容量超额的情况下,把多余的代码数据先存放到下一级层次的存储器中,也就是当前层次以下一层次的存储器作为缓存。 比如:CPU中的最高速的存储器就是寄存器了,寄存器的数量有限吧,存储的容量也是非常有限,所以寄存器中的数据可能会... 阅读全文

妙趣横生的虚拟存储器

2012-03-12 19:42 by 捣乱小子, 5569 阅读, 收藏, 编辑
摘要:写在前面的阅读这篇文章需要计算机组成原理的基础.在这里外链上一篇文章《关于读书的流水账》,有读书感受。虚拟存储器的核心思想很独到,在看了前一篇文章中提到的书中才领略到了它的魅力,硬件的东西比较多,但是也绝对可以提高你的软件功力,而且毫无疑问。这篇文章算是读书笔记。PS:发现文中有很多的英文简写,为了方便阅读在这里总结一下。------------------------------------------------------------------------中文 | 英文,英文简写 ----------------------------------------------------- 阅读全文

简单的外壳(shell)

2012-02-23 22:23 by 捣乱小子, 3299 阅读, 收藏, 编辑
摘要:写在前面的很多人在csdn上分享了自己的面试经验,其中笔试值得一提。公司笔试的题目有些比较基础但是又是比较核心的概念。就比如,什么是线程,什么是多线程,什么是进程,什么是多进程,线程和进程有什么区别!!这题目一上眼,脑子中一晃就一个印象:看过很多次了,但是就是说不明白他是什么东西了。线程是进程中的一个单一控制流;一个进程可能完成很大的任务,多线程即一个进程中有多个线程,每个线程完成不同的工作,这样就提高了程序运行的速度。进程是运行中的程序,它是与线程的区别是进程有独立的代码,数据和存储空间,但是线程可以共享数据空间,而每个线程有独立的执行堆栈和程序计数器。概念是很清楚的,非得理解并记住不可,不 阅读全文

从简单的算法初探过程汇编

2012-02-08 17:44 by 捣乱小子, 2870 阅读, 收藏, 编辑
摘要:不忽视汇编 较于我们日常接触的高级语言,诸如c语言,c++,java等等,汇编语言是更接近机器的语言,它的常用操作简单到把一个数值(立即数,寄存器数或者存储器数据)加载到寄存器,正是这样,所以让汇编完成一个程序任务,过程会比较晦涩;高级语言隐藏了很多的机器细节(比如过程(函数)栈帧的初始化,以及过程结束时栈帧的恢复),代码清晰易懂。 真佩服六七十年代那些大牛们,都是怎么过来的...膜拜膜拜。写一个100以内整数的和,即使有充分的汇编文档,这也足够折腾我一阵子,太恶心了。但是了解汇编的行为方式和其中的一些重要细节,有助于理解计算机软件和硬件的工作方式。我就一个简单的算法来认识一下汇编。过程汇.. 阅读全文

MFC DLEdit 设计属于自己的编辑框

2012-02-04 13:00 by 捣乱小子, 12080 阅读, 收藏, 编辑
摘要:起因 无意间看到了大牛们写的自定义编辑框控件,于是找了个时间自己写了一个,加深了对MFC消息机制和一些功能的了解。分析 先来看一张QQ2011的登录窗口,发现当鼠标悬停在编辑框上的时候,会有悬停边框高亮,这样给用户一种很绚丽的视觉享受,但我相信大家每天都上q,从而都忽略了这些美丽,细心分析一下,QQ的每一个器官甚至一根毛都是经过精心设计的。当编辑框失去输入焦点,而编辑框内文本为空的时候,会有灰色提示文本,提示用户输入。 还可以有好多的自定编辑框功能,美化我们的编辑框。具体实现和细节 在之前《MFC自动隐藏》这篇文章中的技术细节有与DLEdit相似的地方,那就是鼠标悬停的判断。当鼠标悬停... 阅读全文

MFC 鼠标去留

2012-02-04 11:48 by 捣乱小子, 1223 阅读, 收藏, 编辑
摘要:题目不醒目,特解 win32编程中,有两个消息比较特别,WM_MOUSEHOVER和WM_MOUSELEAVE。系统不会想应用程序发送这两个消息,MSDN中规定要用到TrackMouseEvent方法来向程序投递这两个消息。去留分析 去WM_MOUSELEAVE,留WM_MOUSEHOVER。打个比方,调用TrackMouseEvent就向在消息队列中设置了一个哨兵,当发现WM_MOUSEHOVER或者WM_MOUSELEAVE的时候,就将其放入消息队列,而此时如果这个消息是WM_MOUSELEAVE这个哨兵会消失,而如果这个消息是WM_MOUSEHOVER,这个哨兵会暂留,但是他只能检测.. 阅读全文

C++对析构函数的误解

2011-12-09 11:56 by 捣乱小子, 13727 阅读, 收藏, 编辑
摘要:C++析构前言 析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正。 C++析构误解正文 对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化或者赋值;一个良好的class需要有资源回收的机制,而这一操作便落在了析构函数的头上,析构函数来负责类内的资源的free。来看一段代码: class myclass{ public: ... 阅读全文

sizeof运算符和strlen函数 ZeroMemory函数和memset函数

2011-11-10 22:53 by 捣乱小子, 638 阅读, 收藏, 编辑
摘要:strlen和sizeof在之前一直把两个东西在某种意义上混淆了,对它们的功能不是很熟悉。在逛了下谷歌之后,发现自己误解的东西很多。strlen与sizeof的区别1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序在编译的时候就把 阅读全文