后高知特时代

其实早想写点关于公司的事情,算是给自己留点回忆的东西。
在高知特的这两年多,还是学到了很多东西,做了很多事情。认识了很多好朋友,创办了羽毛球协会,去香港onsite,学到了很多关于项目管理方面的东西,更深入的认识了印度这个民族,看到了很多为人处事的方法。
高知特中国是2005年下半年才到中国的,而自己算是比较早的一批员工,和很多初创公司一样,最不缺少的就是激情,无论是外表平和的亨哥还是不知天高地厚的elt,大家都想通过这平台做出点成就。但渐渐的,印度那边的影响力逐渐渗透到这里,渐渐的激情在也看不到,取而代之的是有点官僚的体制。也许是见过的公司太少,“其实家家公司都是这样”。

当激情被制度和policy取代后,高知特进入了后高知特时代。冲着激情来高知特的人最终只能失望离开,并不是亨哥没有尽力只是印度人的影响力太大,而我们这边资源实在太少。

前高知特时代和后高知特时代的分水岭应该是小丽的离开。小丽是中国这边的第一个员工,无论离开的原因是什么,有一点可以知道的就是,高知特变得越来越“轻”了。已经变成“比起xxx”不值得继续待下去。为什么?作为一个离职的人,我不便评论。当激情对一个公司变得越来越不重要的时候,自然不需要这些需要激情才能生存的人。passion to make  a difference,这句公司口号,当我问一个印度的高级经理“中国团队和其他地方团队的不同在哪里”时,他说他“看不到任何不一样”的时候。我就知道,并非我们真没有激情,而是印度人根本不是用激情做事,而是用嘴的。

每每看到印度同事port过来的半成品时,我经常是无奈 – 这些shit总有一天要有人重新再做一遍,但绝对不再是印度人了。都说高知特是cmmi5,iso9001….我看到的是audit会问问你怎么做的,但从来不会帮你解决问题或者给出更好的建议。看着那一张张臭脸,真的很无语。

这就是后高知特,需要的只是你的ass print和copy&paste。我走了。

金牌榜

今天在飞机上无意中看到残奥会的金牌榜,中国仍然排在奖牌榜的第一位,第一感觉自然良好,即便网上有很多人提及什么金牌含金量,数量并不代表就是体育强国。。。但毕竟中国的成绩就是在那里,不需要和别人去比较,而是和自己去比较。我们一直都是在前进的。

但很快,我发现排在第二位的英国19块金牌,比中国多一块。旋即奥运会的奖牌榜就出现在我脑海里,中国仍然排到第一位 – 但是靠金牌的数量。而为什么残奥会就又是以奖牌总数来排名呢?可能是我无知,也许奥委会有他自己的理由去解释这两种不同的排行方法。

也许有时候不是我们是越来越强,是可以说我们只和自己比赛,但,奖牌榜确实所有人的。你可以永远把自己排在“自己奖牌榜”的第一,但别人心中的呢?
倒希望我是小人之心了!

摘一些关于线程和进程

线程和进程
一个程序至少有一个进程,一个进程至少有一个线程

进程在执行过程中拥有独立的内存单元,而多个线程共享内存

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。

线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
==
从用户角度来看,进程是应用程序的一个执行过程。从操作系统核心角度来看,进程代表的是操作系统分配的内存、CPU时间片等资源的基本单位,是为正在运行的程序提供的运行环境。

关于SOA

今天被一位兄台问起什么是SOA,虽然知道这个名词,但还是很老实的说不了解。既然不了解,那就再去尝试了解一下。SOA是针对企业架构(EA)或者整个IT系统网络。Webservice只是一个工具去把这些服务连接起来。另一个重要的工具是message,或者说的牛x一点 – message-oriented middleware,面向消息的中间件。message体现在哪里呢?

举个简单的例子,平时在写程序的时候常常说方法调用,这方法调用有两种形式,主动和被动。主动调用很简单就是A.call(B),这种调用很常见,但是有一个问题 – 它是同步调用,也就是在这个调用过程中程序不能做其他事情,直到调用结束。另一种被动调用,有点像是事件监听响应的意思(设计模式里的观察者),调用形式如: A.notifyListeners->[queue]->B.onEvent,或者也说异步调用,解决常见的并发问题。

那么webservice就用来定义一个统一的接口,主要是主动调用,而message queue则是用来被动调用时发送消息。SOA的目标(猜得):所有的应用系统都被设计为对外提供服务的一个个节点,节点之间要么通过主动调用发布消息(webservice),要么通过message queue发送相应来自其他节点的消息。

SOA是从整个IT系统网络的角度去考虑分布式系统的整合,重用,优化。另一点要提到,通常的应用系统之间的webservice调用都是无状态,因为“有没有状态”不是SOA要解决的问题,而是工作流来解决的吧(也是猜得)!

面向服务架构SOA(Service-Oriented
Architecture)是一种架构模型和一套设计方法学,其目的是最大限度地重用应用程序中立型的服务以提高IT适应性和效率。它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA的关键是“服务”的概念,W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。

apache-derby连接jdbc连接url的解析

来自http://db.apache.org/derby/docs/10.4/devguide/devguide-single.htm。我这里只是翻译一下,其实最关键要搞清楚的就是系统文件夹(通常是C:/databases)和类路径(从类路径开始或者从jar文件中开始查找)的区别。

jdbc:derby:db1
•打开系统文件夹中的db1

jdbc:derby:london/sales
•打开数据库lodon/sales,london位于系统文件夹下,sales是london的子目录

jdbc:derby:/reference/phrases/french

•打开数据库 /reference/phrases/french。 unix下,就是从根目录开始的路径。windows下则是C:referencephrasesfrench(如果当前驱动器是C.如果一个包含数据库的jar文件在用户的类路径下,则这个路径是jar文件内的路径。

jdbc:derby:a:/demo/sample
•打开驱动器A中的数据库,路径是demosample

jdbc:derby:c:/databases/salesdb jdbc:derby:salesdb
•这两个连接到相同的数据库 – salesdb.在windows下derby默认的系统路径是C:databases.

jdbc:derby:support/bugsdb;create=true
•在系统路径下创建一个新的数据库 – support/bugsdb。如果不存在,则自动产生相应的文件夹。

jdbc:derby:sample;shutdown=true
•关闭sample数据库。(如果没有启用验证,则不需要提供用户密码)

jdbc:derby:/myDB
•以只读方式连接myDB(位于类路径下)

jdbc:derby:classpath:/myDB
•同样以只读方式连接myDB数据库。使用classpath的原因是,路径下可能存在和数据库同名的文件夹。

jdbc:derby:jar:(C:/dbs.jar)products/boiledfood
•访问只读数据库boiledfood, 位于C:dbs.jar中的products文件夹。

jdbc:derby:directory:myDB
•访问myDB(位于系统文件夹)。使用directory是类路径下可能存在同名文件夹(myDB)

XML-RPC是什么东西?

XML-RPC是什么东西?
在Java的世界里,我们听说了JAX-RPC其实就是XML-RPC的一个Java的实现方法。Apache也有相应的xmlrpc实现 – ws-xmlrpc。还有基于kxml上的kxmlrpc
简单的说Web Service就是http+xml,http说明他的传输媒介,xml则是传输协议的格式。所以我们有时候会说Webservice有两种:SOAP和XML-RPC.
这两者都不和任何一种语言或者服务器有关系,你完全可以用不同的服务器端和客户端实现。区别仅仅在于:
SOAP是一个完整的XML DOCUMENT,也是为什么有的人说SOAP是Document Style.有WSDL来作为描述语言,同时又完备的对象xml映射的定义。而XMLRPC则是XML但未必是一个完备的DOCUEMNT,他的主要目标就是 – 简单。可以看看他的spec

所以这么看Webservice不是什么神乎其神的东西,可以说涉及到http和xml的远程调用都可以称作Webservice。当然有可能你没有使用SOAP和XML-RPC而发明了自己的协议。但,它仍然是Webservice。

–2009-3-3
在web端xml有可能被json取代哟。json的表达更简单(不过有人觉得有点抽象),而且现在也有xml->json的工具。看得出来在轻量级的web调用上,json会携手php, “ajax”s的各种框架成为主流。