自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

GUI好一些还是CLI更好一些?

我相信很多设计者、开发者和用户们,对CLI会藐视地说“太丑了,而且不好使用!”,于是乎大家似乎设计一个APP时最先想到的使用GUI(桌面的GUI或者Web),似乎用起来更加简单和方便!我的想法是,这对一些任务(比如编辑文档或者观看视频)是比较适合GUI的,因为所见即所得!但是某些情况下,我们会认为CLI会更有优势,比如一个经常性的任务:清理日志,或者备份等等,如果需要你每次都需要点击各种菜单进入一...

2011-05-09 10:21:39 584

你对API和依赖关系做好规划了吗?

不知道大家如何认为的,一个编译好的组件,或者模块,仅仅是给其他程序调用使用的吗?这个不是这个问题的本质面,我认为是这个API或者模块是给人设计的,一般而言,每一个组件或者模块都包含很多文档(也可能是XML注释的形式出现),真至于作者还是写了Demo,但是很多方面,人们并没有按照读者的角度来或者说没有按照API是人在使用的观点来组织这些说明性文件,想当然地会加入很多阅读者不可以理解的部分或者不需...

2011-05-09 09:44:56 333

混合型Object容器

我的一篇《一个简单的基于约定优于配置(Coc)的对象工厂实现》(http://leospace.iteye.com/blog/973744)已经对单纯使用Coc的方式实现DI进行了讨论,并且实现了一个最简的实现,目的是排除其他约束干扰以便于验证可行性。但是这个实现并不能应用于实际的开发,因为它并不能更加适应于实际的情况。实际的情况是有很多接口依赖(比如一个属性的类型就是一个接口),...

2011-03-29 10:24:15 175

原创 机制胜于策略

在历史上对Unix之失的讨论中,谈到过X系统的设计者在设计中的基本抉择是实行“机制,而不是策略”这种做法——使X成为一个通用图形引擎,而将用户界面风格留给工具包或者系统的其它层次来决定。这一点得以证明是正确的,因为策略和机制是按照不同的时间尺度变化的,策略的变化要远远快于机制。GUI工具包的观感时尚来去匆匆,而光栅操作和组合却是永恒的。所以,把策略同机制揉成一团有两个负面影响:一来会使...

2011-03-24 15:29:48 150

有关改进传统IOC和AOP的概要-1

头站我一篇《一个简单的基于约定优于配置的对象工厂实现》,想对其陆续做如下拓展:1)增加针对接口类型或者值类型DI的处理逻辑:      拟用XML的并且模式匹配的方式解决接口DI的问题,值类型的DI准备采用注入注出的方式实现(参考Seam,并试图改进其概念)2)增加基于代理的AOP支持,目标对象非侵入性设计,不需要继承框架或者Remoting基础结构提供的接口或者基类。3)增加...

2011-03-24 11:59:06 129

一个简单的基于约定优于配置(Coc)的对象工厂实现

Baidu 写道约定优于配置(Convention Over Configuration)约定优于配置是一个简单的概念。 系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置。 流行的框架如 Ruby on Rails 和 EJB3 已经开始坚持这些原则,以对像原始的 EJB 2.1 规范那样的框架的配置复杂度做出反应。 一个约定优于配置的例子就像 EJB3 持久化,将一个 特殊...

2011-03-24 11:14:48 360

原创 Mysql&NoSQL

从InfoQ得来一篇文章[怎么样把NoSQL引入到我们的系统架构设计中,需要根据我们系统的业务场景来分析,什么样类型的数据适合存储在NoSQL数据库 中,什么样类型的数据必须使用关系数据库存储。明确引入的NoSQL数据库带给系统的作用,它能解决什么问题,以及可能带来的新的问 题。下面我们分析几种常见的N...

2011-03-21 10:39:46 143

约定优于配置的一个思考

   为什么必须用IOC(DI),实际上是出于在设计上的一种关注分离观念,使得系统各部分独立演化,不相互影响,使得系统能够适应环境变化的要求。   但是问题是:A:依赖的判定,现在依赖于XML配置文件的事先说明,大量的XML造成加载变慢,测试时虽然只关注涉及到的对象,但是全部加载了定义数据,使得速度很慢,另外XML臃肿带来的问题也不小。本来是为了简化系统的构建,但是我们除了在开发Bean的...

2011-03-21 10:29:00 132

原创 Java的范型

http://www.infoq.com/cn/articles/cf-java-generics Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型...

2011-03-12 10:48:47 99

原创 吾父马达加斯加之旅-3

昨夜电闪雷鸣。雷似耳边炸响,闪电似要把木屋点燃。耀眼的闪电近在咫尺。感到人在天地相连的旷野人之中,人不如蚁微不足道。这是我有生以来最令人头皮发麻的一次经历。睁大眼睛神经高度紧张,滚滚雷声犹如大炮轰鸣,接连不断的闪电我怕把眼睛刺盲。紧闭双眼天地间只有雷声和闪电。河里的水涨起3米多。  河水落下去了。用混浊的河水洗脸,洗后白毛巾上全是黄土。打一碗水给“阿勇”,它...

2011-03-11 11:40:48 165

原创 吾父马达加斯加之旅-2

 人蚁大战。“华夫饼”花生米上蚂蚁成千上万。我一个人力战群雄,最后还是我赢了。把吃食抢回来一半。先别高兴蚂蚁可不在乎失败,后援多着呢!说不定小蚂蚁搬来大蚂蚁。这地方大蚂蚁可厉害。山上到处是它们的巢穴。远看一座座相连的近米高的黄土塔,内部白花花的犹如蜂巢的分格居住着上万的大蚂蚁。它们要上来我只好挂起免战牌或者开溜。  大病一场,汗寖透了衣服,毛巾被。拿到外...

2011-03-11 11:39:27 132

原创 吾父马达加斯加之旅-1

 卧病在床,周围死寂一般。只能听到苍蝇嗡嗡,4.5CM长的黑色细腰蜂在我的床头对应的天棚下筑巢。这种细腰蜂真是天才的建筑师和雕塑大师它筑的巢外形犹如我小时候抓的生长在大树上胖胖的绿绿的大虫子,巢长约1.2M,粗20CM。现在它正飞来飞去忙着哺育后代。  举目远眺,荒山连绵。偶见星星点点的绿色植物才略感这里还有生机。忽然想起国内的一首歌——我是一只来自北方...

2011-03-11 11:37:47 155

基本的方法论

对于事物的看法,决定了其方法论,也就是做事或者作事的方法论,沿着一种指导原则而去发掘其内部规律并达到内外的一致性。先打个比方,一把直尺插进水里,你的眼睛看见那把直尺是弯的。但是,你关于直尺的知识与你的光学知识告诉你:直尺不是弯的,是直的,你之所以看见它是弯的,是因为光的折射现象。 从一个这样研究问题的思想为基本点,可以衍生出来:学习的方法,探索新知识的方法,发明的思维方法以及最普通的做事的...

2011-03-01 13:07:36 239

Windows Service开发的一个经典问题

很多人这样设计Windows Service,希望在某种条件下,比如某个事件发生后,希望Windows Service弹出一个窗体!其实这非常不正确,不管是C#,VB.net还是C++创建的Windows Service是被OS windows子系统调用的和维护的,恰恰它没有桌面站,OS在启动Windows子系统的时候,会默认创建两类东西,就是有窗口站的桌面(其实也是一个窗口以及窗口树结构...

2011-02-24 11:22:04 123

进程和线程管理在Windows和Linux的不同之处初探

进程是一个执行环境,包含了私有的进程内存空间、句柄表和其他的一些东西,为线程的存活提供了一个环境,这句话其中的含义是当创建进程时往往要创建一个默认的线程,线程是具体干活的,当一个进程中的最后一个线程被CPU执行完毕后,进程也就消亡了。这些事情都是OS内核的进程和线程管理干的事情。了解这些对使用一些高层语言来做多进程或者多线程的程序时就能在了解其底层原理的基础上发挥更大的创作空间(对于线程的竞争,同...

2011-02-24 09:29:19 486

原创 有关视频播放类软件和游戏软件是选择GDI开发好还是DirectX开发好

发现不少人用GDI开发一些图形程序,它位于Windows图形子系统中,是设备无关的图形引擎,所以很多人认为游戏开发也可以使用GDI,这种观点看起来没有错,实际上GDI也确实可以用来开发游戏,但是它必须依赖于HAL(硬件抽象层)中的视频端口驱动程序以及视频设备(显卡)驱动程序通信才能通知具体设备渲染出画面,效能上比较差,如果一个大型程序用GDI做运行起来就比较吃力(我的观点),所以微软还提供了Dir...

2011-02-23 16:41:11 333

原创 原来有关Spring核心部分的源代码分析

原来有关Spring核心部分的源代码分析,比较乱,而且没有整理AOP的内容,近期找个时间好好整理一下。

2011-02-23 09:19:36 136

原创 Mono兼容性列表(记录)

Here is a slightly more detailed view, by .NET framework version: Implemented Partially Implemented Not Implemented.NET 4.0 C# 4.0 ASP.Net 4.0 ASP.Net MVC 1 and M...

2010-12-01 12:50:20 251

.Net 4.0新特性和改进浅谈

About .Net 4.0 1. 兼容性一直是个令人很头疼的问题,在.NET 4.0中,在同一个进程中,不同运行时(CLR)上的组件可以同时运行,我们称之为In process Side by Side。    在Win32时代,我们一般开发一种叫做动态连接库或者COM的组件,为了减少私有安装带来的体积臃肿(也就是将被调用的组件部署到和自己同一个目录体系下,并且每个应用都会这样做,那...

2010-11-28 19:39:04 563

Spring框架核心源代码的分析及其感受-IOC篇-4

从上一篇,我知道了我们想get的 Bean是怎么实例化出来的,也知道了依赖注入实际是发生在BeanWrapperImpl这个类里面的,接下来我们来看看这个类的实现(也就是applyPropertyValues(beanName, mbd, bw, pvs)  方法里面干的事情):....if (propValue.getClass().isArray()) {.........

2010-11-13 16:34:29 117

Spring框架核心源代码的分析及其感受-IOC篇-3

在上一篇中,我们找到了doCreateBean方法,我绕了半圈才找到create bean的实际入口:BeanWrapper instanceWrapper = null;........if (instanceWrapper == null) { //只创建Bean,但是没有注入 instanceWrapper = createBeanInstance(beanNam...

2010-11-13 16:09:21 117

Spring框架核心源代码的分析及其感受-IOC篇-2

在上一篇,我们看到这样的代码:  DefaultListableBeanFactory beanFactory = createBeanFactory(); .... synchronized (this.beanFactoryMonitor) { this.beanFactory = beanFactory; } 知道Application将getBean方法的实现委托给了D...

2010-11-13 15:51:58 146

Spring框架核心源代码的分析及其感受-IOC篇-1

首先,必须先在[/size]Spring源代码中,找到IOC的入口点,也就是IOC的启动点,我们经常用Spring框架,知道ApplicationContext和BeanFactory启动的方式,有很多种,我们先排除Spring Web框架或者Struts2 框架的方式,而是寻找最简单的方式,以便能排除环境的因素而找到最纯的一个实现,而我们在使用Spring最简单的方式是:假设所有的需要配置的类都...

2010-11-13 15:29:46 98

Spring框架核心源代码的分析及其感受-6

}              else {                  if (this.logger.isInfoEnabled()) {                     this.logger.info("Overriding bean definiti...

2010-11-12 15:53:53 99

Spring框架核心源代码的分析及其感受-5

this.readerContext.getRegistry(), true);                  }                  else {                     //如果Bean为空,就在这里注册一个Class全局限定名             ...

2010-11-12 15:50:35 104

Spring框架核心源代码的分析及其感受-4

好了!这里又出现了新的类型BeanDefinitionParserDelegate干什么用的?不过我知道这肯定和XML解析有关,所以不容错过!于是乎,简单浏览了一下它的实现(怕进入代码丛林!),我的天啊,我找到正题了:public class BeanDefinitionParserDelegate {     public...

2010-11-12 15:47:33 102

Spring框架核心源代码的分析及其感受-3

protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws BeansException, IOException {  XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(bean...

2010-11-12 15:44:12 121

Spring框架核心源代码的分析及其感受-2

呵呵,无论从调用关系、方法名称和注释都能敏感的感觉到找对地方了,prepareRefresh的注释写“refreshing”,真搞不清这个概念,先进去看看:protected void prepareRefresh() { this.startupDate = System.currentTimeMillis(); sync...

2010-11-12 15:38:52 89

Spring框架核心源代码的分析及其感受-1

(事先用Word写好的,再贴上来,格式有点...,有时间再调整,如果看不清楚,请直接下载我写的Word文档,在-6第六篇文章中,有错别字就别怪我了,没有时间检查) 对于 Java 开发者来说,经常会用到一个框架 —Spring, 但是从用的角度来讲,很多人已经认为比较“复杂”了,但是我认为这个和思维方式有关,当人看到一个电视机,然后看完说明书(相当于 S...

2010-11-12 15:29:28 207

实践Scrum的感受

我曾经为之服务的一家公司,由于新项目的特点,也为了在公司的方法论资产做一个积累和提高,并且在详细调研了Scrum方法之后,公司老板作出决定,在E-Notebook项目中,开始采用敏捷开发方法,最近有空将其整理出来,做个留念:和一开始接触任何事情一样,我先是有个了理论认识,在InfoQ上查阅了很多资料,知道了敏捷的宣言,如何来作,我也在理论上做了很多准备。知道了敏捷会议、敏捷例会、backlog...

2010-11-09 16:13:16 176

原创 Linux核心的三个文件

可能需要根据特定的硬件及需求重新编译Linux内核。编译Linux内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux(每个发行版放置的目录可能不同),在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls -l。编译过RedHat Linux内核的人对其中的System.map 、vmlinuz、initrd-2...

2010-11-09 15:14:55 183

原创 Linux的文件系统<转>

文件系统是一个操作系统的重要组成部分,是操作系统在计算机硬盘存储和检索数据的逻辑方法。Linux通过VFS(虚拟文件系统)支持多种文件格式。Linux支持的各种常用的文件系统有以下几种。Table 1.1. Linux文件系统类型文件系统类型名称用途Second Extended filesystemext2最常用的Linux文件系统...

2010-11-09 15:04:16 103

原创 Linux上安装MYSQL

MySQL是最著名的开源数据库,现在正在开发的5.0版将具有大量的新特性,如存储过程和事务处理等。MySQL的性能正一步步地迫近Oracle、DB2等商业大型数据库,给这些产品造成了很大的压力。在Debian中安装MySQL服务器是很方便的,使用apt-get命令即可完成。debian:~# apt-get install mysql-server mysql-clientmysq...

2010-11-09 15:01:45 74

原创 Linux上安装Emacs

Emacs无疑是编辑器的王者,历史悠久,功能强大,我这篇笔记就是使用emacs加psgml-mode完成的。现在Emacs对中文的支持已很好了,完全可以用于中文的生产环境。本章主要介绍Emacs在Debian下的安装和配置过程。具体的使用可参考我的Emacs学习笔记。安装软件包:debian:~# apt-get install emacs21 mule-ucsmul...

2010-11-09 15:00:17 449

原创 Linux启动过程[转]

机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被配置成首先检查软驱或者光驱(或两者都检查),然后再尝试从硬盘引导。如果在这些可移动的设备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区,寻找用于装载操作系统的指令。装载操作系统的这个程序就是boot loader.  lin...

2010-11-09 14:53:27 89

请不要被五花八门的技术所吓倒

在我不断地从一种技术玩到另外在一种的时候,总是觉得时曾相识,原因很简单,无论你是用C在Linux上搞开发,还是用java/.net等等,都是建立在一个理论体系上,对于JavaEE和.Net则是面对企业级应用市场的时候,它们的共同点就更加多了,比如:在表现层:.Net有ASP.Net,Java有JSP. 但是ASP.net更加”厚“一些,我们可以开发各种服务器端控件,使用和JSP类似的Session...

2010-11-08 17:12:17 94

原创 在ThinkPad上安装Ubuntu 10.10

我的笔记本是Thinkpad T410,配置如下:CPU i5 540  2.83 GHZMem:6GBDisk:320G 7200 RPMDisplay:NVS 3100m 下载了一个ubuntu 64bit DVD iso http://www.ubuntu.com/desktop刻录成光盘,然后用此光盘启动Thinkpad.进入画面后,选择中文,然后按提示操作...

2010-11-08 16:26:19 332

有关Java 5.0+ 并发包的探讨-3-0

锁锁是用来锁东西的,让别人打不开也看不到!在线程中,用这个“锁”隐喻来说明一个线程在“操作”一个目标(如一个变量)的时候,如果变量是被锁住的,那么其他线程就对这个目标既“操作”不了(挂起)也无法看到目标的内容!对Java并发包,锁的实现基本在java.util.concurrent.locks包中,说“基本”是因为,在java.util.concurrent中还有CountDownLatch(...

2010-11-07 18:50:15 78

有关Java 5.0+ 并发包的探讨-2 section -补充-2

ExchangerExchanger 类方便了两个共同操作线程之间的双向交换; Exchanger 通常用于一个线程填充缓冲,而另一个线程清空缓冲的情况。当两个线程在屏障处集合时(交换点),它们交换缓冲,为了解释Exchanger的使用方法,先看看其实现原理,在Exchanger中最核心的方法是exchange, 其JDK的实现是: public V exchange(V x) throw...

2010-11-07 13:41:30 94

有关Java 5.0+ 并发包的探讨-2 section -补充-1

我们现在来看看CompletionService :package ExecutorDemos;import java.util.concurrent.Callable;import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutionException;import jav...

2010-11-05 14:40:41 85

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除