代码改变世界

随笔档案-2012年02月

Android学习笔记(一) - 如果我们来设计Android

2012-02-25 12:12 by CreateLight, 1622 阅读, 收藏, 编辑
摘要: 大家应该都背过公式,对于背公式,大体上有这么几种做法: 1,死背。 2,看公式的证明,并看懂。 3,尝试自己证明公式,而后对照“标准”证明。一般来说,对公式的记忆和使用:3 > 2 > 1。这里只是说明这样一个事实,不打算探究其原因,有兴趣者可以自行翻阅记忆和认知心理学相关书籍。对Android最熟悉的人是谁?自然是设计并实现它们的工程师。那么,如果我们自己来设计Android,会是怎样的结果呢?1, 我们的需求移动计算火了,我们要做移动计算平台。这个平台应该尽可能支持各种设备,无论是平板电脑、手机、机顶盒还是电冰箱。这个平台应该尽可能支持各种体系结构,无论是X86、ARM还是MI 阅读全文

再读《人件》(二) - 首先,要有人

2012-02-25 00:50 by CreateLight, 1597 阅读, 收藏, 编辑
摘要: Bingo! 正如你所猜测的那样,这篇文章是讲人员招聘的。感谢计算机,正因为有了它,我们不需要真的有水果,就能玩切水果的游戏。如果你是一个水果罐头制造商,那么你需要操心的是从哪里购买水果原料、怎样运输、怎样建造厂房、购买机器、怎样推广销售你的罐头以及最后的 —— 招人,通过培训使他们成为流水线上合格的标准的零件。如果你是水果软件开发商,和罐头商不同,你很可能一开始就为人忧虑,而不是原料和机器。这样的事实暗示了这样一个道理:对于软件开发公司,人是最重要的资产。招聘软件开发人员是很困难的,最困难的大概就是如何确定他就是你要找的The One。在确定这件事之前,还有一件事要确定:你真的知道你要找什么 阅读全文

什么是好代码?

2012-02-24 21:19 by CreateLight, 2394 阅读, 收藏, 编辑
摘要: 1,定义 让我们来谈谈代码。 代码重要吗?当然,代码就是设计(Jack W.Reeves, 1992);代码是最有价值的交付物。 我们需要好代码吗?在给“好代码”下个定义之前,这个问题无法回答。 那么,究竟什么是好代码? 闻到硝烟味了吗?哦不,战争从来不是好东西。 对我而言,好代码就是 “整洁可用” 的代码。 好代码首先必须是“可用”的代码,“可用” 是指代码做了它应该做的事情,而且做得不错。如果让你写求绝对值的代码,你就不能写成求平方根的;如果让你做一个文本编辑器,OK,你做出来了,它不是一个图片编辑器,它确确实实就是一个文本编辑器,但是用户输入一个字要一分钟,这也不能称之为“... 阅读全文

再读《人件》(一) - 源于创业

2012-02-21 11:02 by CreateLight, 332 阅读, 收藏, 编辑
摘要: 在软件工程领域,《人件》(《PeopleWare》)是一本赫赫有名、饱受赞誉的书。这本书强调是:对软件开发公司,人永远是是第一要素,因此所有的活动都应该围绕人来进行,简单来说就是选择合适的人,并采取一切措施来让人(员工)各方面都“爽”,这样他们会以高效、高质的工作来回报你(及他们自己)。 大约2年前,我刚进入管理岗位,毫无经验,被项目中的高员工流动率、进度延期、质量不足等各种问题搞得焦头烂额,恶补了一堆管理方面的书籍,其中就包括这本《人件》。当年简单的翻阅了一下,了解了大致内容,对此嗤之以鼻,认为书中描述的内容太乌托邦,对于天朝的***民们是不适用的,理想是美好的,但我们还是先回到现实吧。所... 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(十) - java基础 - 多线程(待续)

2012-02-13 21:21 by CreateLight, 503 阅读, 收藏, 编辑
摘要: 1,多线程和多进程区别 多进程中的每个进程都有自己独立的进程空间。 多线程中的每个线程有自己独立的栈空间,但是共享其它数据(堆、方法区等)。 一般而言,多线程拥有更小的创建开销、更快的速度,更麻烦的编码。2, 为什么要并发? 分时系统,增强用户响应。 因为外设(典型的如IO)阻塞时,可以让CPU处理其他任务。 充分利用多核或多CPU架构提升性能。3,创建线程 class MyRunnable implements Runnable { void run(){ //do sth...} } Runnable r = new MyRunnable(); Thread t = new T... 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(九) - java基础 - 异常

2012-02-12 17:51 by CreateLight, 351 阅读, 收藏, 编辑
摘要: 1,概述 异常是错误处理的一种手段,相比传统的返回错误值的做法,java更推荐异常处理,因为这可以分离正常代码和错误处理代码,让代码看起来更清晰。错误一般可分为两类: a, 逻辑错误,这种错误都是由于程序员错误的思考造成的。 b, 外界错误,比如用户进行错误的输入、内存用尽、硬盘空间不足、网络无链接、服务器无法访问等。 当遇到一个错误并决定抛出异常时,首先会构建一个异常对象(在堆上,如同构建其他任何对象),然后停止当前方法的执行路径,立刻退出当前方法,并且不会返回任何值,接着异常处理机制会开始搜索这个异常的处理器,继续执行程序。2,分类: 2.1,所有异常类都继承于Throwable类或其子孙 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)

2012-02-02 16:04 by CreateLight, 539 阅读, 收藏, 编辑
摘要: 1,继承使用extends从一个现有类(super类)继承一个子类。可以用final修饰一个类,使其不能被继承。子类不继承super类的构造器。子类继承super类的方法和域变量。java是单根继承体系,Object类是所有类(包括接口和抽象类)的最根部(super)的类。Object类没有super类。1.1 方法继承 所有的非构造器方法默认都是可被继承的;子类可访问父类中除了private修饰的任何方法。 子类可覆盖(override)super类中继承的方法。使用final关键字修饰,可令相应的方法不允许被子类覆盖。 子类覆盖super类的方法时,方法的可见性只能增加(变宽)或不变... 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(七) - java基础 - 类和对象的清除(待续)

2012-02-02 12:07 by CreateLight, 539 阅读, 收藏, 编辑
摘要: 1,局部变量的清除 方法内的局部变量,在栈上进行内存分配,当离开局部变量所位于的作用域块后,栈会自动回卷,清除所有此类型的变量。2,对象的清除 和C++不同,java没有提供析构函数。原因如下: a, C++中的对象可以在栈上分配空间,当离开所出作用域时,清除栈对象,此时会调用对象的析构函数;而java中所有对象都在堆上分配空间,没有栈对象。 b,java有垃圾回收机制,所有对象会(在某个时刻)自动进行内存回收,因此不需要显式的在析构函数中回收内存。 尽管如此,java的这些机制并不能完全替代C++析构函数所表现出来的语义和作用。 java提供了finalize方法,垃圾回收器... 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(六) - java基础 - 类和对象的初始化

2012-02-01 18:13 by CreateLight, 520 阅读, 收藏, 编辑
摘要: 1,定义一个类class A{ A(){ this(3); m = 5; i = 6;} A(int k){i = k;} void f(){ } private int i; private int j = 3; static int m; static int n = 6; static final int k = 11; static final int k2; { i = 7; j = 8; m = 6; } static { m = 9; n = 10; k2 = 15; }}2,new一个实例对象A a = new A();初始化过程:2.1 类加载和初始化 ... 阅读全文
点击右上角即可分享
微信分享提示