- 博客(40)
- 收藏
- 关注
原创 IPhone的处理器芯片
已知的超微处理器芯片的生产厂家有ARM(最大)、英特尔、高通(智能机最青睐)和德州仪器(山寨机最青睐)。 苹果的A系列处理器芯片似乎都是他们自己设计,但是交给高通生产的。不过目前看来有转给三星的趋势。...
2012-08-03 16:47:33
227
编程语言的模式以及背后的思想
命令式编程语言,对于冯诺依曼体系结构中机器命令的一种抽象,我们常见的机器语言、汇编语言、早期的高级程序设计语言、C、Pascal以及Ada都属于这类程序设计语言。 OOL,将问题空间进行抽象和建模的一种程序设计语言,更加自然和简单。 FOL。函数式编程将一切的运算归结为数学函数的计算。有些人将它理解为函数的变换,总算捉到一些皮毛。因为函数式编程中,对象的定义...
2012-08-01 10:49:36
195
原创 重读TIJ中对象导论一章
关于面向对象,一直都没有静下心来做一个好好的总结。读过很多书,对于OO的说法有很多的共同点,也有一些差异性。现在试着总结这些共同点。 一、抽象过程。 OO的优点是,可以把问题空间很自然的描述出来,然后基于这个问题空间编织成解空间。因为太简单了,习惯用语言来直接描述解空间的程序员都觉得难以适应。 Smalltalk的作者Alan Kay...
2012-07-22 20:23:44
126
原创 为什么Java在因特网时代那么地流行?
我以前读《计算机网络-自顶向下的方法与特色》一书时见到作者一段话,认为Java编程即将成为或者事实上成为了网络编程的标准。但是没有很仔细地进行深入解释。后来写了不少socket编程的程序,我才明白传统的C/C++语言协议栈中通信非常麻烦,Java使用面向对象类库将这些繁琐的操作非常优雅地封装了起来。 在互联网时代,RIA成为一种趋势,但是标准的通讯语言HTML只能做...
2012-07-22 14:14:38
171
原创 MYSQL手册阅读读书笔记
前言 SQL以前学得马马虎虎。算是基本记得它们的原理,但是好久不写还是会经常写错。特别是遇到SQL Server与MYSQL与标准SQL都不兼容的情况下,还要去查不同的手册,查不同的语法。所以决定用BLOG的形式重述一下基本的语句结构,以后没事常看看。 常见的语法标记,"[]"代表可选项,“|”代表多选一,"{}"代表强制选择的一组之一。一、MYSQ...
2012-07-17 21:03:46
110
原创 用C#写出高效的代码
总结以下目前看到的例子。1 对于for循环,(int i = 0,h = arr.length; i < h ; i++)的效率在容器中比(int i; i < arr.length; i++)要高,因为涉及取容器长度是非常花费时间的。但是对于数组,则效率差不多。2 拼接字符串时,值类型一定要加上ToString()。3 字符串比较或查找,请加上StringCopariso...
2012-07-17 16:51:43
215
原创 完全面向对象的.NET平台
Java正在逐渐转向完全面向对象,但是目前看来MS的.NET架构又走得更靠前。真正意义的.NET平台下的MSIL中所有基本类型都被映射成为System.类型的对象。我们常见的string类型在C#中虽然是小写开头,但它依然和在Java中一样是个引用类型。如果可以就最好不要使用String。因为String有可能是其它重新定义的class、struct、enum等等(我觉得这一点C#做得...
2012-07-17 12:17:38
123
原创 Java中的集合框架
Java的集合类库中的迭代器与其他类库(其实是其他语言中)中的迭代器有着重要的差别。在传统的类库中,例如C++的标准模板库中,迭代器是根据数组索引建模的。【不需要查找指定元素,就可以任意移动迭代器】。Java中的迭代器,则把迭代器的移动与查找工作严格绑定在一起。要移动迭代器,就必须先检查hasNext(),免得出异常。如果移动迭代器--next(),就必然返回一个element。要删...
2012-06-19 21:54:13
107
原创 Java中的异常处理
一、 基本概念 Java的基本理念是“结构不佳的代码不能运行”。Java属于强类型、强检查语言,即编译器会处理大量的的安全和基本的语法错误问题。但还是有一些错误巧妙地隐藏了起来,只有在运行时才被发现。 老式的程序设计语言,例如C的多重错误处理模式,往往建立在约定俗成的基础上,并不是语言的一部分。大致上,通过一个函数返回某个特殊值或设置某个标志来通知接收者,出错...
2012-06-18 13:39:09
185
原创 C++ 智能指针详解
本文转载于:http://blog.youkuaiyun.com/xt_xiaotian/article/details/5714477 C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并...
2012-06-18 13:09:11
118
原创 Java中的输入输出流
1 FileInputStream f = new FileInputStream("a.txt"); FileOutputStream f = new FileOutputStream("a.txt");2 ObjectOutputStream o = new ObjectOutputstream(f); ObjectInputStream o = new ObjectIn...
2012-04-25 15:24:33
119
原创 收集到的有趣的面试题与答案
1class Something { final int i; public void doSomething() { System.out.println("i = " + i); }} 和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗? 答案: 错。final int i是个final...
2012-04-25 15:19:03
308
Java中的泛型与C++中的模板
以前都没有注意到Java中的泛型有那么复杂!功能还比C++中的模板差那么多。这绝对是Java中最失败的一个地方。改天要专门写一写这方面的东西,现在先挖个坑。 C++中的混型允许直接继承类型而不是具体的类,这是Java做不到的。 template <typename T>class A : public T{}; 这样A类就...
2012-04-20 16:29:26
185
原创 Groovy语言
1 它源于Java,可以说是一种JVM实现 2 它拥有了很多例如Ruby一样的动态语言上的特性。 Java可以几乎无缝地域Groovy融合,Groovy也几乎可以无缝地与Java融合。到底哪个在上哪个在下我已经分不清楚了。...
2012-04-18 15:27:51
120
原创 转:开源应用架构之SeleniumWebDriver
前不久,InfoQ向大家推荐了几本有关软件架构的新书,引起了国内读者的广泛兴趣。其中一本是《开源应用架构(The Architecture of Open Source Applications)》,来自知名开源项目的各位作者对软件的设计进行了说明。通过对这些成功的系统架构进行概览,让软件工程师可以彻底了解最佳实践和陷阱。InfoQ中文站响应读者的需求,整理了该书有关知名开源软件...
2012-04-18 14:56:49
135
原创 关于ant与maven
Ant是一个赫赫有名的工具,但我从没有专门用过。因为现成的IDE似乎都集成了Ant的功能,可以自动地把Java项目打包起来生成一个项目。 从Ant的历史来看,Ant源于Unix的make工具是没有错的。但是make工具有很多缺陷,而且又与Unix耦合起来。对于跨平台的Java项目,要如何组织呢?Ant诞生了。 Ane本身就是这样一个流程脚本引擎,用于自动化...
2012-04-18 14:29:28
109
原创 一篇很好的在eclipse中使用junit4教程
jUnit4概述 jUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在Java里面可以用来和pu...
2012-04-18 13:28:24
108
原创 学习Selenium
我从IBM社区中转载来一篇文章,有意思的地方我专门标记出来了。 原文地址为:http://www.ibm.com/developerworks/cn/java/wa-selenium-ajax/#resources Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作。但是手工执行的任务容易出现操作人员人为的错误,也比较费时间...
2012-04-18 11:31:04
111
原创 (转发)关于IT行业人员吃的都是青春饭?
国内一个很著名的企业老板曾经说过:在IT行业超过35岁的技术人员将被淘汰,所以不要35岁以后的技术人员。导致整个业界尤其是在软件开发行业都在排斥年龄超过35岁的人员,也导致很多工程师为自己35岁以后的前途发愁而转行。因为很多人都认为IT行业是年轻人的行业,而软件开发就是吃青春饭,过了35岁就没用了。 很多企业也在自己的企业宣传中吹嘘:我们企业XX学历以上的占百分比的多少,平均年龄在25...
2012-04-12 16:06:34
102
原创 递归还是迭代?
在一个算法中,使用递归还是迭代是一件很头痛的事情。总的来说,递归的优点很多,适合一些分治算法的实现,而缺点也很多,比如消耗很多的临时空间,有时候还会因为重叠子问题的存在而降低算法的性能。迭代拥有记忆的功能,不仅能够节省一部分临时空间,而且还可以省去很多子问题求解的麻烦。 值得注意的地方有: 1 一般在树形结构中往下走的话,最好使用迭代,比如堆中的...
2012-04-12 13:31:46
102
原创 为什么现在我不喜欢C++而喜欢Java
1 C++为了兼容C的语法,保留了很多破坏面向对象特性的关键字。简而言之,C++在OO上不够纯正。 2 C++里随时都存在一个sliced object的陷阱,我个人还没有找到一个明确的编码原则来避免这些错误。 3 Java能够在一片连续的内存中安置各式各样的对象,而C++总是力图做到精简的布局,抹杀了多样性--比如C++ 不支持不规则的多维数组、不规...
2012-04-12 13:01:39
344
原创 (转载)栈的一个应用 ---中缀表达式转化为后缀表达式
理论:表达式的表示形式有中缀、前缀和后缀3中形式。中缀表达式按操作符的优先级进行计算(后面代码实现只包括+、-、*、\,小括号),即数学运算。后缀表达式中只有操作数和操作符。操作符在两个操作数之后。它的计算规则非常简单,严格按照从左到右的次序依次执行每一个操作。每遇到一个操作符,就将前面的两个数执行相应的操作。 由后缀表达式计算中缀表达式原理:计算机处理后缀表达式求值问题是比...
2012-04-11 15:39:06
157
提出一个问题,如何管理文件差异性?
超级编辑器自带一个超级比较器功能,我目前还不会用。 SVN的different还算不错。 但是Linux下的diff命令真是吓我一跳的强大。
2012-04-10 17:23:36
82
正则表达式
严格来说,正则表达式不是一种语言,它是一种很多语言都已经实现了的一种特化的功能。它是对于某些字符串进行模式匹配的依据。实际上每一种语言中正则表达式的实现都有细节上的差异,足以令人发狂。Java上的正则表达式与Perl上相同。 Linux中的正则表达式似乎也是Perl实现的,待查。 ...
2012-04-10 16:22:37
81
浅谈Unix、linux和自由软件运动
1 最初的OS不能满足足够多的终端同时使用,于是贝尔实验室、通用和MIT发起了一个Multics计划。希望能够制造一个足够强大的多任务、多用户系统。2 Multics项目搁浅,贝尔实验室退出。但是贝尔实验室的工程师汤普森得到了一个灵感,恰巧手边有一台PDP-7计算机而老婆出去探亲一个月。于是他奋战四个星期,用汇编写了一个File Server System。这个汇编的OS革命性...
2012-04-10 16:02:50
685
反射中若干问题
一 获取类引用的方法 (1) getClass() 获取已经初始化的对象的一个Class引用。 (2) Class.forName() 告诉编译器,如果类没有加载,就加载它。 (3) .class 字面常量 这个性能会更好,第一它增加了编译时的类型强制检查,第二它没有做对forName()方法的调用。 二 巧妙地利用编译器为我们做一些Class引用的类型检查...
2012-04-10 15:55:45
100
原创 数据结构之线性表
LinearList.h注意使用 #pragma once 命令 #pragma once#include <iostream>using namespace std;//陈刚的课件里注释有很多的问题,千万不要引入注释。template <class T>class LinearList{ public: LinearLis...
2012-04-09 20:36:45
114
原创 三种表达式
表达式:主要由操作数、操作符组成。 中缀表达式:操作符在两个操作数之间的表达式 如:a/(b-c)+d*e前缀表达式:操作符放在两个操作数之前的表达式 从后往前求值 如:+/a-bc*de后缀表达式:操作符放在两个操作数之后的表达式(逆波兰表达式)从前往后求值 如:abc-/de*+非中缀表达式的求值过程...
2012-04-09 20:06:29
463
原创 编写算法与数据结构中存在的小技巧和一些陷阱
1 链表中前驱的重要性。 在链表中,删除一个结点而不导致链表断裂,一个必要条件就是这个结点的前驱和后继能够相连。 然而不是每种数据结构上都保存有前驱指针。 在这种情况下我们可以使用的一个小技巧就是在起点之前再增加一个结点(比如有些链表中的head)。然后把head与head->next一起推进,当head->next正好到达指定结点时,我们想要...
2012-04-09 15:22:31
99
原创 我眼中比较有意思的Java语言问题
1 说说&和&&的区别。 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。 &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于i...
2012-04-09 14:43:38
113
原创 与虚拟机加载器有关,对象的加载与销毁
一 Java和C++的一个显著不同之处在于,它的对象是动态加载的,C++无法模仿。 JVM有一个组成部分--原生类加载器。它只加载可信类(比如Java API类库)。如果有WebStart类型的应用需求,或者企业级应用(RMI通信等等),则可能会在加载器链条上放上一些别的加载器。 二 什么时候类会被加载呢? 当一个类第一次被使用的时候,它最早可以...
2012-04-09 08:46:48
81
原创 空对象、模拟对象和桩
一个空对象,指的是一个没有赋值过,但是却在内存中存在,为了在逻辑上表示“没有这个对象但是却为这个对象准备了一个位置”,在物理上代替null所准备的对象。 在任何一个使用引用的地方,都有可能出现空指针异常,所以在没有办法确认是否一定可以得到引用的地方,就一定要做null检查,这本身是枯燥乏味,没有任何意义的。空对象因为在内存中存在,所以即使它在逻辑上没有任何意义,也可以在物...
2012-04-08 20:03:12
546
原创 实现RTTI的很多种方式(Java版本)
一、Java中的RTTI种类: 1 隐式的自动的上转型 2 显式的强制的下转型 3 instanceof 额外的方式 4 反射 二、RTTI的优点: 在C++这样的程序设计语言中,做动态类型检查是一件非常危险的事情,可以说是一种hacked的行为。它只能使用一些强制类型转换的操作符来做一些类型...
2012-04-08 19:40:06
122
总结一下反射的一个应用--动态代理
把《Java核心技术》与《Java编程思想》翻过去。反射一部分讲的大同小异。总体来说《Java核心技术》讲得比较拖沓,但是比较全面,《Java编程思想》讲得比较简略,第一遍看可能看不懂。 因为之前有仔细研究过几个框架中XML配置文件的语法,发现反射中代理类的应用在框架中虽然是透明的,但是我依然能够感受它的存在。我甚至怀疑AOP的对象不是由编译器生成合成对象实现的,而是由代...
2012-04-08 17:46:42
73
原创 踏出第一步
以前都是在自己的电脑上整理技术文档,这样太慢了。而且容易丢失掉很多细节。在不同的计算机上的内容也不尽相同。 看了李开复的一篇演讲很有感触。要把所有的文字资料、数据都尽可能搬到互联网上来。...
2012-04-08 17:08:52
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人