代码改变世界

Objective-C Message

2011-10-06 13:22 by curer, 5237 阅读, 2 推荐, 收藏, 编辑
摘要:object c 里面有一个非常有趣的设计,如果之前了解过c++的家伙们,对object c 中的把传统的调用函数变成了向这个类发送消息,这个过程总是令人琢磨不透,在实际过程中遇到的crash也很难调试清楚。这篇就要详细的解释消息这个家伙。当然,消息这个涉及的东西实在是太多了。这篇先简单介绍一下。上一篇,我们了解了什么是类http://www.cnblogs.com/studentdeng/archive/2011/10/01/2197194.html。同理这一篇,我们首先需要了解什么是message。message(消息):message的具体定义很难说,因为并没有真正的代码描述,简单的讲m 阅读全文

Objective-C 什么是类

2011-10-05 22:04 by curer, 2965 阅读, 2 推荐, 收藏, 编辑
摘要:之前一直做C++开发,最近2个多月转Objective-C, 入门的时候,遇到了很多的困惑。现在过节,正是解决他们的好时机。主要参考来自http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.htmlObjective-C 也是面向对象的语言,那么,首先需要知道的就是什么是class。C++ 的class相对Objective-C 中的class,就简单明了很多了。C++ 中class简单的说,就是一个大的struct, 绝大部分的class可以在编译时决定好class 阅读全文

hash 知多少

2011-08-26 17:34 by curer, 942 阅读, 1 推荐, 收藏, 编辑
摘要:在应用程序中,常常需要将一个集合U(键值集合)和另一个集合T(数据集合)建立关系构造dictionary结构,来达到增删查改的需求。如果键值集合很小,那么可以直接采用Direct-address tables的方式实现。假如我们的集合 U = {0, 1, ..., m - 1}, 而且m并不大。如果我们的键和值对应唯一,那么我们可以通过构造一个大的数组来保存集合U,如下结构。显然,当集合U增大,那么直接存储集合U变的不那么明智起来,而且,如果使用键的集合K变小是,我们浪费的空间也越来越大。当集合K比集合U小很多的时候,就是hash粉墨登场的时候了。hash将保存空间压缩到集合K的大小,并且控 阅读全文

为什么没有SendThreadMessage呢?

2011-03-31 22:00 by curer, 4074 阅读, 1 推荐, 收藏, 编辑
摘要:最近忙公司的项目(或是毕设吧),发现很长时间没有总结了。是该换换脑子了。“为什么没有SendThreadMessage呢?”这个问题,就来自自己平时实现的一些程序逻辑中。在一些具体的场景中,对像我这样的初学者来说,往往喜欢通过windwos的消息机制来完成UI线程和worker线程之间的同步,而不是去通过信号量或其他的去做。所以,这个问题一直困惑了自己很久。而现在,就来搞明白这个、google一下,这个问题,在一个大牛(Raymond Chen)http://blogs.msdn.com/b/oldnewthing/archive/2008/12/23/9248851.aspx)的博客中提到了 阅读全文

胡言乱语计算机二

2011-02-27 19:36 by curer, 14032 阅读, 4 推荐, 收藏, 编辑
摘要:中断和异常处理是OS中非常重要的组成部分,当然windows也不例外,他们是我们理解OS一些概念、机制的基础。中断和异常简单的来说,就是在程序正常执行流程中,突发一个事件,导致程序的执行流程转向另外的执行流程中。而我们绝大多数编写的程序都是顺序执行的,我们的确体会不到这样的机制能够给我们带来多少好处。但是这个在OS的设计中,确实深入到各个方面,以至于没有中断异常处理,现代OS根本无法构建。为了简单理解,我们可以看看这个例子。比如我们准备带我们的宠物狗狗出去散步,但是由于狗狗非常淘气,经常单独行动(这里,我们是无法预知狗狗会在什么时候跑掉的),在没有任何其他道具的帮助下,我们只能每隔一段时间去看 阅读全文

算法学习二三事

2011-02-03 17:00 by curer, 23918 阅读, 21 推荐, 收藏, 编辑
摘要:不得不说,有时候无知是福,看到一点有趣而深刻的东东,就能感觉到神奇。越是我们熟悉的东西,往往却是我们进一步理解深刻的障碍,而之所以是障碍是我们并不知道这个是我们理解问题的障碍。困惑中的每一次豁然开朗往往是从一点一滴的我们已经成为惯性思维中开始。越是深刻的原理,往往越是简单强大。就像爱因斯坦打破牛顿给我们原有的世界观一样。对于一个打破常规,让你重新理解问题的最简单的方法就是把你整个思考的前提否定。而... 阅读全文

胡言乱语计算机一

2011-01-22 22:26 by curer, 6123 阅读, 15 推荐, 收藏, 编辑
摘要:操作系统是连接硬件和应用软件之间的纽带。至少目前是这样的。而操作系统这门课也是计算机专业的必修课之一。无奈当时混沌。并没有真正的上好这一门课,之所以叫胡言乱语。是因为这里面的水对我来说实在是太深了。任何一个小的问题背后都是一个深渊。所以第一篇,从最初的(大学课程最初)开始讲起。8086,应该是学计算机最开始的地方。可以说是我们现在x86系列的最简单,最基础的实现。里面的设计都或多或少的影响到了后面系列的实现。所以,学校从这里开始,的确是非常明智的,虽然当时我不这么认为。但是想要了解或是明白8086的设计,那么也就要带出另外的那些更为底层的,计算机指令集,机器语言,引脚,门,电压等等。当然我不是 阅读全文

SGI STL 学习笔记四 内存管理

2011-01-17 20:56 by curer, 989 阅读, 0 推荐, 收藏, 编辑
摘要:SGI STL 在g++中默认的编译选项是构造2个分配器。 第一级分配器__malloc_alloc_template 这个一级分配器设计比较简单。由于SGI STL中分配内存没有使用C++推荐的 operator new/delete 而是使用malloc/delete。所以,并没有set_new_handler()。当面对内存不足的情况,这里模仿了c++的做法。 二级分配器 __default_alloc_template二级配置器多了很多机制,在分配小的内存上做了优化。 粗略的分配策略。 分配大小超过 _MAX_BYTES = 128bytes,使用一级分配器处理。当分配器大小小于128 阅读全文

SGI STL 学习笔记三 heap

2011-01-08 22:18 by curer, 1925 阅读, 0 推荐, 收藏, 编辑
摘要:heap,大家都非常了解。大学学的时候必须会的内容,要不考试很难过关。只是当时并没有学习明白。只是被老师和考试强了。完全是机械的记忆。觉得真是太对不起自己这个专业了。最近再看STL,也就有了这一篇老生重弹。 在很多情况下,我们非常关心一个集合中的最大元素。并希望能够从集合中最快速度找到并删除。为了整体的效率,我们需要在这个集合中插入元素,查找最大元素,删除最大元素能够综合最快。使用binary heap便是一种不错的选择之一。而且能够在O(logN)插入,删除元素,查找最大元素在常数时间下。   Binary heap 是一种complete binary tree(完全二叉树)。所以我们可以 阅读全文

SGI STL 学习笔记二 vector

2011-01-01 11:06 by curer, 945 阅读, 0 推荐, 收藏, 编辑
摘要:sequence containersArrayVectorHeapPriority_queueListsList(not in standard)DequeStackQueueSequence Containers 其中的元素 都是可序的(ordered),但并不一定有序(sorted)。STL 中有vector ,list ,deque,stack,queue,priority_queue等序列容器。Stack queue 由于只是将deque重新封装而成,在技术上被归类为一种配接器(adapter)。 VectorVector 的数据为动态空间,随着元素的加入。内部会通过机制自行扩充空间 阅读全文