这里写了一个简单的例子来说明这种模式,其实写这个例子主要是自己想熟悉一下 jdk5 的 concurrency 包中 futuretask 的用法了。例子模拟的是一个会计算账的过程,主线程中已经获得其他帐户的总额了,为了不让主线程等待 privateaccount 返回而启用新的线程去处理,并使用 futuretask 对象来监控,最后需要计算总额的时候再尝试去获得 privateaccount 的信息。
代码如下:
既然得到了好书就要分享一下,这里不多做介绍了,赶紧把电子版传上来跟大家分享一下。
========================
我的头好晕。
好像烧更高了,我不知道,一直昏昏沉沉的。
我从山上跌下来的时候,天佑试图拉住我腰间的绳索,可惯性太大
天佑只是轻微的擦伤,他一直照顾着我,偶尔清醒的时候
"天佑,你说其他人会找到我们吗? "
他疲惫的笑笑: "慧慧,别想那么多,还疼吗? "
"脚还是没知觉,就是觉得好冷。 "
天佑往上爬了一点,把我抱在他怀里。
"好点吗? "
"嗯。 "也许只是心理作用,但我还是感觉到一丝温暖。
"慧慧,我有一个好消息和一个坏消息,你想先听哪个? "
"坏消息。 "
"我们的食物快吃完了,还剩下一版巧克力。 "
"那好消息呢? "
"雪崩了,洞口被雪封了大半,空气还能进来,我们大概勉强还能爬出
"这算什么好消息!我们要死在这里了! " 我的眼泪难过得一下子
"傻瓜,这是老天在让我们享受二人世界呢。 " 天佑笑了。
"你还有心情开玩笑。 " 我被他逗乐了,咳嗽起来。
天佑轻轻拍着我的背,把我搂在怀里。
"慧慧,等我们回去了,答应我嫁给我好吗? "
"我们还回的去吗? "
"当然可以!我们在一起这么长时间了,我都没有正式向你求过婚
我哭了,但这次是幸福的眼泪。
"好的,天佑,我答应你。 "
"乖孩子,为了那一天,你一定不要轻言放弃,好好活下去,答应我
"好的。 "我拼命的点头,可又一下子头晕了。
"好了,乖乖的睡一下,我会叫醒你的。 "
"天佑,我的脚还是没有知觉。 "
天佑爬到我脚边。 "感觉到我在掐你吗? "
"没有 "。
"这样呢? "
"还是没有。 "
"这样? "
"没有。 "
天佑笑笑: "呵呵,慧慧,你的脚爬山累了,它想好好休息一下。
"要!不管你变成什么样我都要! "
"天佑 ……"
"好了,慧慧,好好睡,来,闭上眼睛。 "
我睡了过去。
再次被摇醒的时候,头晕得更厉害了。天佑拿着巧克力在我面前晃着
"慧慧,吃饭咯。 "
"你吃吧,我不饿。 "
"不行,好孩子听话。 "
"可我喉咙干的咽不下东西。 "
天佑想了想,把巧克力掰下一小块放进嘴里含了一会儿,吻住了我。
融化的热巧克力顺着他的嘴唇流进我干涸的嘴里,虽然我的味蕾已经麻
我鼓起最后的力气掀开盖着我下半身的睡袋。 膝盖以下只剩一堆挂着
======================================================================
======================================================================
“倘若有一天我死了,你会再娶其它女人么?”我记得问这话是在我与君的结婚一周年纪念日上。那时,他正忙着与锅里的鲜鱼对战,根本无暇理睬我。 “啊
?哦,也许会吧!这得等你真死了才能说。”“什么?”我佯怒,从他身后抱住他:“你就这么讨厌我啊?”
君笑,关上火转身抱我:“傻丫头,我答应过你不骗你。如果我说不娶可我后来娶了,不就骗了你么?”
我也笑,躲在他怀里,快乐得像只小鸟“好吧,准你娶她。不过,不许她碰我那些漂亮娃娃。”“为什么?”
“因为,那是你送我的爱的信物,死后啊,我要在那儿看着你!”“哇!好恐怖啊!”君大笑地抱紧我“傻孩子,你的命啊,长着呢!”
现在,我就活在这堆娃娃里,我想象不到短短十天,我便真的与君阴阳相隔。
我是死于车祸的。一切来的那么突然。那时,我正盘算着周末我们要去哪儿旅行,那车就飞速冲来了。其实,没什么很大的痛楚,清醒时,我看到人们七手八脚的把我抬上救护车,只觉得好笑,因为我知道那是多余的。意识到自己的死亡,我一点也不难过。我一向没什么朋友,只有君。现在仍可以陪着君,看着君就行了。管他是什么样的形态呢。想到这儿,我便大步走回家。
家门前,我犹豫了。我记得以前听说魂是可以越墙而入的。我试了试,居然成功了!这令我兴奋不已,又来回再试了几次。嘿,做魂也没什么不好的。起码钥匙省了!
进到屋内,我逛了一圈,君还没有回来。突然想起,这是上班时间。于是又在屋内不停的溜弯儿。欣赏我们的房子是我生前最爱做的事儿。当然,死后也不例外。虽然,这间屋子,我已再熟悉不过。因为,在这儿,我渡过了我一生中最幸福最快乐的375日。至今,我还记得结婚那天,君在家门前望着我的表情。他说:“丫头,以后这就是我们的家了!我们的!”是啊,我和君的。从那天起,我便不停装扮它,直至今天,我再也无法为它效力为止。
我看到屋内的粉红色窗帘,卡通的大地毯和那堆了大半个卧室的娃娃。突然想起君每每抚摸我头发轻声说:“你真是个孩子。”时,那无奈又怜爱的样子。是啊,能把家弄像个玩具店,我不是孩子又是什么呢?只可惜再也看不到君在说这话时的表情了。
我叹了口气,回到娃娃堆坐下。不知不觉中竟睡着了。
醒来时,已是天黑。我感到了一丝寒气。使抱怨起君竟然忘了把我抱回暖烘烘的被窝。这才猛然想起,我已从君的生命中消失了,而且是很彻底的。我起身,开始绕着屋子找他,最后是在卫生间里找到我心爱的君的。
他趴在浴缸上,旁边摆着许多空酒瓶,地上被吐得乱七八糟,一股刺鼻的味儿飘散在空气中。我不悦地捏着鼻子,蹲下来看他。竟发现他脸上挂着泪痕。天!我的君会哭?!那个坚强无比的他竟然哭了!多不可思议啊!我试图拉起他,可手却穿越了他的身体!我试了一次又一次,在筋疲力尽后,我决定放弃。头一次,我知道自己是这么无能的。在我的君如此近时,我连拉他一把的能力都没有。这样的妻子要来何用呢?
我轻轻吻了吻他的嘴唇,在他的身边坐下。除了这样陪他,我想不到还有什么其它的办法。
“丫头,不要走,不要……”我听见君在叫我。我知道他是说醉话了。我笑:“傻瓜,我这么爱你,怎会舍得离你而去呢?”
一个月后,日子渐渐恢复正常。我的君仍旧准时准点的上下班,只是不再爱笑;而我,也依旧是那个快乐的小主妇,乖乖的呆在家陪我的娃娃们,只是君不曾发觉;我们还是那样过着属于我们两个人的日子,屋内的一切都没有改变过。直到有一天,玲的出现。
玲按门铃时,君正在书房里加班做他的计划书,我则在一旁傻呵呵的陪他。我想不出在夜里这个时候会有什么人来访?走到客厅,便看到性感的玲和呆呆的君。
这是我第一次见玲。她留着长长的卷发,穿着黑色的性感套装,化了很浓的妆。四周全是她身上散发出的香水味儿。我不禁低头看了看自己身上的娃娃裙和兔兔拖鞋。和她比,我是名符其实的孩子。
“我搬来了。”听到玲这样说,我才注意到她身边的行李袋。搬来?住哪儿?我和君的家么?我奇怪的望着她。
“别胡闹,你给我回去”君似乎在发火。我头一次看到君发火的样子,很凶。我害怕。
“凭什么?你老婆都死了,难道我们现在不应该正大光明了吗?”玲笑得很灿烂,可我觉得很冷“瞧!你老婆死得多好啊。多会挑时间啊。连离婚都省得你和她说了……”“啪!”我看见君打了玲一巴掌。我惊呆了!君怎么会打人呢?他平时连骂一声都不曾有过的。如此温柔的君竟然会打人?他还有多少是我不曾知道的??
“哼!现在打我?!以前在我床上对我甜言蜜语的日子,你忘记了是吧!你可别忘了,你是答应过我和你老婆离婚娶我的!……”离婚?!君想和我离婚么?他不爱我?他竟要娶玲?我怎么一点也不曾发觉?玲再说的话,我已一个字都听不进去。我跌跌撞撞的走回我的娃娃堆。抱着它们。我觉得鼻子酸酸的,一股热浪从眼里涌了出来。
原来,灵魂也会流泪啊!
玲就这样搬进了我和君的家,像个女主人一样睡在我和君的床上,不同的只是君搬去了客厅。她换掉我的卡通地毯和粉红窗帘。拿走我衣橱里的娃娃裙和鞋架上的兔兔鞋。她把它们通通扔到垃圾箱里。
君什么也不说,只默默地把它们捡回来,洗干净,再放进我深爱的娃娃堆里。然后连续不断的对我说:“丫头,对不起,我对不起你啊!”我望着君,心疼的掉泪。可我不愿原谅他!我无法接受我和君的生活中,出现一个莫明其妙的玲。她像个女皇一样在我和君的屋子里指手划脚,把我一点点挤出去;把我曾精心装扮的小屋变成她的家。尤其让我无法忍受的是,君的欺骗。他为了玲欺骗我!他说过不会骗我的,连我死后的事儿都不愿意欺骗的君,为什么会在我还在人世时,就和玲在一块儿呢?一瞬间,我与君有过的幸福日子显得那么苍白无力。
“这堆垃圾给我扔了!”玲指着我的鼻尖对君说。我看了看四周,明白了,她指的是我的宝贝娃娃。这些都是君送我的。是我们每一次快乐的纪念。第一次约会,第一次做饭,第一次接吻……我们都异常珍惜。还说以后要留给孩子看,告诉他们爸爸妈妈有多么幸福,可如今……天!我看到了什么?君在收拾它们!他要扔掉它们么?他忘了我说过我活在娃娃堆里么?他真的不要我了?一点也再想念他的丫头?我拼命的摇头,却阻止不了他的动作。
君把娃娃收做一堆时,玲很满意地笑了:“快点,扔了它们,我们得忘了过去,开始新的生活了。”君看了看玲,并不理睬她。只很温柔的在每个娃娃的脸上都亲上一口,像以前亲吻我那样。“玲,你走吧!我求你了!离开我和丫头的家!我不会扔了它们,也不能扔了它们!我的丫头活在里面,她在看着我啊!”玲愤怒的望着君:“你说过,你爱我,你是我的!”“不是,不是!对不起,我骗了你,骗了丫头,更骗了我自己!”君失声痛哭“我只爱丫头,只爱她一个啊!任何人都代替不了她,可是,我明白的太晚了……”我奔上前,像以前一样抱住他的后背。泪水横飞,我不能不原谅他啊!
不久,玲搬走了。像来时那样匆忙。连声再见都没和君说。我想她是伤心的,我看着她忧郁的背影想为她做些什么,可有心无力。我不恨她,只希望她以后一切都可以很好。就像我不恨君一样,我知道爱一旦深入骨髓,就不懂怎么会恨了。
玲走后,又恢复以前宁静而冷清的日子。君把我们的屋子恢复原样。没事儿时便捧着我的照片发呆。要不就一夜接一夜的不停工作。他把自己封闭起来。看着他日渐清瘦的脸庞,我心里说不出是什么滋味儿。
欣便是在那时候闯入了君的生活。
欣与君的相识平淡无奇。那日,欣刚搬到隔壁的空屋,可保险丝断了,便来向君借。
我知道君看到欣时愣住了,因为我也愣住了。欣与我长得出奇的像。只是眉宇间多了份成熟。我看到君抱紧欣叫她丫头时,欣莫名又尴尬的表情。忍不住大笑。我的君竟然也有此等愚笨的时候!从此,欣和君便开始了似有似无的交往。
欣是个很温柔的女人。与创造性幼稚的我是完全不同的。她常在我和君的小屋出入,为君收拾房子,做出可口的饭菜,但从不过夜。我就那么每天坐在娃娃堆里,看着她擦拭我的照片,打扫娃娃身上的灰尘,看她不厌其烦的听君讲我和他的故事……
我打了个很大的哈欠,我想我呆乏了,或许应该换个地方。
君和欣的婚礼是那么自然。我甚至没有一丝嫉妒。婚后的欣像以前一样,她没改变房中任何一点小摆设,包括我那堆曾被玲称为垃圾的娃娃们。望着她每日奔波忙碌的样子,我觉得像是一幅温馨而美丽的画。突然间发现我已是那么多余了。可是,我不愿离开君。
欣怀孕了。这令君兴奋不已。初为人父的喜悦是无法言语的。他像当初娇惯我一般宠着欣,甚至有过之而无不及。
我想欣是幸福的。可我又该如何呢?这个的问题一直困惑着我,直到那日。
那天,君外出了。我看到欣站在娃娃堆前摸着肚子自言自语“宝宝,你会很幸福的,因为你有两个妈妈疼。”然后,她摸了摸娃娃的脸蛋:“丫头,你也很疼我们的宝宝的。对么?”我明白了,欣不是自言自语,而是在对我说。
我释然了。站起来,伸了个大懒腰。窗外明媚的阳光透过玻璃照在我的身上,暖洋洋的。我知道,宝宝只会有一个妈妈疼。便起身离开我心爱的娃娃们,我相信,很快会再见的。
数月后,君与欣生下一漂亮的女儿,取名叫丫头。
部署过程描述如下:
1. 在需要监测的机器(我这里是 linux 机器)部署相关应用:
a) 在你需要进行监测的机器上安装 jdk1.5 (狂晕一阵子),别倒下(这个部分就不多说了,因为如果这里还要解释的话,那我就晕了)。
b) 正确设置 java 的运行环境。
c) 启动 jstatd 进程。
命令如下: ./jstatd -j-djava.security.policy=all.policy
一般来说呢,这里是会出现问题的,那就是 permission 的问题了,还好, sun 的网站上给了相关的解决方法,方法如下,在 jdk/…/security/ java.policy 文件中添加下面的代码:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.allpermission;
};
然后重新启动 jstatd 进程。
d) 完了,别让人乱动就好了,我经常是不小心就按 ctrl c 把程序关闭了。
2. 在客户端(监控者使用的机器)的操作:
a) 使用 jps 查看远端机器有哪些 jvm 进程在使用当中,命令如下:
jps 172.25.1.24 // 远端机器的 ip 地址或名称
屏幕输入如下:
13686 jstatd
14115 xxxjavaserver
15117 jserver
b) 从上面可以看到远端机器的 jstatd 进程已经启动起来了。我们就可以使用 jstat 对相关进程的具体情况进行查看。
jstat 命令用法如下:
jstat -
解释如下:
option 包括以下选项:
-class
-compiler
-gc
-gccapacity
-gccause
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-printcompilation
vmid 就是 jps 查看到的进程 id ,如上 jserver 的进程 id 是 15117 。
interval 是时间间隔,单位为毫秒, 1000 就是一秒。
count 就是需要查看的次数。
例子假设我们需要查看 172.25.1.24 机器 vmid 为 15117 的 gc 的情况,可以输入下面的命令:
jstat -gc 15117@172.25.1.24 1000 3
然后你能看到四行信息(一行为 title ,剩下的就是你要的信息了),仔细看看就可以发现很多信息的了(如果不明白,可以问我, 6-6 )。
c) 那么下面就开始配置可视化的监控包, jvmstat ,下载好了后,解压到任意目录。
执行 visualgc ,然后就可以看到可视化的监控窗口。不过,好像现在只提供 linux 下的 visualgc 的启动脚本,所以在 windows 下或者 linux 最好使用我下面提供的方式:
在 linux 下:
/usr/java/jdk1.5/bin/java –xbootclasspath/p:” /usr/java/jdk1.5/lib/tools.jar” –jar jvmstat/jars/visualgc.jar vmid@server
在 windows 下也一样,就是改改 jdk 的路径就好了。
成功执行后你就能看见一个 java 的监视窗口(样子还蛮专业的),这个时候就 可以开始监视了。
我们从mysql downloads page上下载了mysql 5.1 beta版,安装到xp上,启动mysql服务,用root用户打开mysql客户端:
mysql> use test;
database changed
mysql> create table test.t (s1 timestamp);
query ok, 0 rows affected (0.11 sec)
mysql> create event e on schedule every 1 second do
insert into test.t values (current_timestamp);
query ok, 1 row affected (0.00 sec)
mysql> set global event_scheduler = 1;
query ok, 0 rows affected (0.00 sec)
/* 3-second delay */
mysql> select * from test.t;
---------------------
| s1 |
---------------------
| 2006-04-05 15:44:26 |
| 2006-04-05 15:44:27 |
| 2006-04-05 15:44:28 |
---------------------
上面是mysql “事件”特性的“hello world”例子,给大家演示的是每隔一秒钟向行内插入一条时间的记录。
我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的。那么在
mysql
中有那些方式是可以避免全表扫面的呢?除了我们大家很熟悉的通过使用索引列或分区等方式来进行查询的优化之外还有那些呢?
前些天看了一个老外写的程序,在
mysql
查询中使用了很多
limit
关键字,这就让我很感兴趣了,因为在我印象中,
limit
关键字似乎更多被使用
mysql
数据库的程序员用来做查询分页(当然这也是一种很好的查询优化),那在这里举个例子,假设我们需要一个分页的查询
,oracle中一般来说都是用以下
sql
句子实现:
select * from
( select a1.*, rownum rownum_
from testtable a1
where rownum > 20)
where rownum_ <= 1000
这个语句就能查询到
testtable
表中的
20
到
1000
记录,而且还需要嵌套查询,效率不会太高,看看
mysql
的实现:
select * from testtable a1 limit 20,980;
这样就能返回
testtable
表中的
21
条到(
20
+
980
=)
1000
条的记录。
实现语法确实简单,但如果要说这里两个
sql
语句的效率,那就很难做比较了,因为在
mysql
中
limit
选项有多种不同的解释方式,不同方式下的速度差异是很大的,因此我们不能从这语句的简洁程度就说谁的效率高。
不过对程序员来说,够简单就好,因为维护成本低,呵呵。
下面讲讲这个
limit
的语法吧:
select ……. --select
语句的其他参数
[limit {[offset,] row_count | row_count offset offset}]
这里
offset
是偏移量(这个偏移量的起始地址是
0
,而不是
1
,这点很容易搞错的)顾名思义就是离开起始点的位置,而
row-count
也是很简单的,就是返回的记录的数量限制。
eg. select * from testtable a limit 10,20 where ….
这样就能使结果返回
10
行以后(包括
10
行自身)的符合
where
条件的
20
条记录。
那么如果没有约束条件就返回
10
到
29
行的记录。
那这跟避免全表扫描有什么关系呢?
下面是
mysql
手册对
limit
参数优化扫描的一些说明:
在一些情况中,当你使用
limit
选项而不是使用
having
时,
mysql
将以不同方式处理查询。
l
如果你用
limit
只选择其中一部分行,当
mysql
一般会做完整的表扫描时,但在某些情况下会使用索引(跟
ipart
有关)。
l
如果你将
limit n
与
order by
同时使用,在
mysql
找到了第一个符合条件的记录后,将结束排序而不是排序整个表。
l
当
limit n
和
distinct
同时使用时,
mysql
在找到一个记录后将停止查询。
l
某些情况下,
group by
能通过顺序读取键
(
或在键上做排序
)
来解决,并然后计算摘要直到键值改变。在这种情况下,
limit n
将不计算任何不必要的
group
。
l
当
mysql
完成发送第
n
行到客户端,它将放弃余下的查询。
l
而
limit 0
选项总是快速返回一个空记录。这对检查查询并且得到结果列的列类型是有用的。
l
临时表的大小使用
limit #
计算需要多少空间来解决查询。
而最近, mysql 开发者网络突然传出信息, mysql 在上个月的 27 号在伦敦加入了微软的 visual studio 的产业凯发k8网页登录的合作伙伴计划,当然我们知道这些 so-called “凯发k8网页登录的合作伙伴计划”不代表什么,也并不意味着从此 mysql 就专注于与 ms visual studio 之间的合作而减少与开源社区的合作。 mysql 放弃开源社区肯定是不会的,因为 mysql 是依靠着开源社区发展起来的,不可能因为 ms 的强大就放弃了自己的本行,同时由于 ms 有自己的强大的数据库产品—— sql server 2005 , mysql ab 是不会放弃自己的本行转投微软门下的。(我也看到了在国外的论坛上有某些程序员也有担心微软会变相收购 mysql 的说法,我想暂时是不可能了,因为 mysql 现在的投资者都是微软的死对头)
所以我觉得这绝对不是对微软的妥协或是求和,无论对开源社区或是使用 ms visual studio 系列产品的 isvs 都是好事,但对微软而言,就不会是好事了。因为现在 ms sql server 系列产品的用户大部分是中小企业(说得不好听点,在国内大部分使用的都是 d 版的),而且很多小型企业没有购买 oracle 和 db2 的意愿(什么原因?贵呗),为了减少企业的 tco (总拥有成本),选择 visual studio 作为开发工具还是很正确的, visual studio 虽然是需要购买的,但一次成本、短期支出而已,但 visual studio 开发人员的成本低,维护费用也低,这是长期的指出减少,也就是企业的收益,把这两个算起来,选择 visual studio 就是肯定的了(这点希望大家就别跟我争了,看看 asp 程序员的薪水,再看看 java 程序员薪水,然后看看 asp 程序和 jsp 程序维护难度)。但是在 visual studio 平台上一直没有一个跟开发平台整合得比较好的开源 database (也许有,但我还不知道),所以很多 vs 开发平台上的人只好无奈的选择 access 或 sql server 了。
但如果 .net 开发人员能跟 mysql 和顺利的打上交道,然后可以很方便的使用 mysql 进行数据库开发,我想这些 .net 的开发人员也就不会再高价使用 ms 的产品了。虽然能看到现在的现实是 mysql 的易用性还是不足,但自 5.0 版本以来,它的改变也是相当大的,从数据库性能和数据库特性提升,到方便开发人员开发调试的 mysql query browser ,再到提升数据库管理效率的 mysql administrator ,我们已经看得到 mysql 的进步了,这个时候它再宣布进入微软的开发者领域,无疑就是希望从微软口中分一杯羹,把这部分非 ms 忠实 fans 的用户抢过来,它进入微软开发者领域对 sql server 来说无疑是一场冲击。
十分期待它能从 ms 口中抢来更多的 sql server 的市场份额。同时 mysql 也新推出了支持 .net 的编程的 connector ,专门为 .net framework 开发的数据库连接桥, .net 开发的用户可以去试试看,是不是比以前的 odbc driver 快捷稳定。
方法
1
:
通过
vpn
网络,让自己在美国或加拿大的朋友为自己建立一个
vpn
的网络,然后拨号过去,再启动一个
skype
,就可以实现。够简单吧,呵呵,我说起来当然简单了,但做起来就不一定了。
这里最难的就是如何架设
vpn
网络了,首先讲怎么建立
vpn
服务器,其实这个在
xp
中就自带了,大家可以根据我的教程试试看。不过这里的
vpn
服务器一定要是美国加拿大本地的,你可以跟那里的朋友说好,让他
24
小时开机就可以了。
建立
vpn
网络服务器的连接教程如下:
微软的
vpn
教学如下:
而如何让客户端拨号到
vpn
网络的方法也很简单,步骤如下:
开始
-->
连接到
-->
显示所有连接或者是控制面板
-->
网络连接
-->
新建连接
-->
选择连接到我的工作场所的网络
-->
虚拟专用网络连接
-->
输入一个你想要工作场所的名字(随意输入)
-->
如果你是拨号上网的用户,最好选择自动的初始连接为你的拨号连接,其他的就无所谓的
-->
然后输入你的主机的
ip
地址就
ok
了。
最后就是双击这个新的连接,输入你设置的用户名和密码就好了。
这里我补充一点,很多人想过使用代理服务器来实现,但必须保证你的
skype
的通向外网的连接都通过这个服务器实现。
方法
2
:
更简单,不需要设置什么
skype
专用的
vpn
,那就是使用
skype
的三方通话,首先让美加本地的一台电脑拨打你需要的那个号码,然后在邀请你的
skype
加入三方通话,这样你就可以实现拨打美加的电话了。其实这样也是很方便的,让对方的电脑给你开一个远程用户,你需要的时候只要登陆他的电脑,然后用
skype
拨打本地号码,接通后邀请国内的
skype
就可以了。
方法
3
:
还有很多灵活的方法,大家也可以提供讨论一下,最后的方法就是找我咯, ^_^ ,写信或者留言给我都行。
老头还未作答,年青人就开始了工作:用笔记本电脑无线上网,链接上nasa的内部网,调动低轨道卫星,把卫星遥感成像的图片再通过软件分析。数十分钟后,年轻人再次走到老头面前:“老先生,共有763只。”说完后他抱起一只羊就要走。
老头叫住了年轻人:“年轻人,如果我能猜出你就职的公司,你可不可以把酬劳还给我?”
“可以。”年轻人答。老头:“你是麦肯锡公司的。”
年轻人:“您怎么知道?”老头笑了:“因为你具有该公司咨询人员的所有特点:
第一,你不请自来;
第二,你告诉我的分析结果是我本就知道的;
第三,你抱走的不是羊,而是我的牧羊犬。”
到我说话了:
由于是移动 139.com 邮箱的使用者,所以也比较早收到了关于这个“飞魔还是飞馍(最好是肉夹馍,其实它的任务栏图标还确实有点像肉夹馍)” femoo 的广告,既然已经把手机跟中国移动的邮箱绑定了,也就不在乎再绑定一个了。而且广告上还有更诱人的:给 femoo 上的好友发送手机短信免费!也就是说我们只要在这个 femoo 上添加了朋友,然后就可以在电脑上给这个人的手机(必须是中国移动的)发短信就是免费的了。大学生朋友和打工的朋友们,单看这点就应该去注册一个了吧。
那就注册吧。注册界面很简洁,三个页面就完了,但奇怪的就是怎么注册界面是 bokee 提供的?难道移动连自己的服务器也没有?不去思考,反正这里的响应速度是一流的,刚点完验证码就发过来了。注册完毕后,就开始自动下载了。
咦?怎么用了老半天还没下载完毕呢?按理来说这移动的服务器不该这么慢,看了一下下载速度,还可以的。一看大小才发现,天啊!整整
下载完了,图标是一个很普通的 msi 的文件安装图标,没有自己的风格。点击安装后,看到了一个使用 windows install wizard 软件制作出来的普通界面,并且没有任何修改,连公司的宣传图片和 logo 都懒得打上去,用的都是,第一时间想起我们公司赶工应付出来的那些软件(做完就直接让网管拿一个最简单的程序安装制作工具打包然后发给顾客,那界面也是如此)。说老实话,这样的界面真的有点糊弄人的感觉。
不过无所谓了,还是很期待这个产品的,至少这里还有华为人的技术,也许安装部分是移动网管做的,程序是华为人做的。一直点 yes 就好了,但出来的是一个需要输入用户名的界面,不理解中……直到看到下面的程序权限设定(仅限此用户使用或所有使用计算机的人选项)才理解了一点,上面的注册用户就是我 windows 的注册用户,但这个 im 跟我的 windows 注册用户有什么关系?即使是因为权限有了关系,但给出的是一个可以供修改的文本框,什么意思?从来没有见到哪个 im 还要人输入 windows 注册用户名的,这么高深,真的不懂。
还是算了,一直点 yes 吧。最后终于 ok ,大功告成了。
在程序组里面找到了飞信程序组,这里不错,够简洁,没有那么多废话。点击后……自动升级启动了,升级咯,升级了老半天,看见那个升级的窗口还在那里,在等了老半天,还是一样的。郁闷了,不是下载的最新的吗?怎么刚下来就要重新升级啊?细细看了升级窗口,才发现这个窗口升级完毕居然连提示都没有,只是进度栏走到了尽头和旁边一个确定按钮,老天,这个窗口的设计者是否“秀豆”了?在一边升级一边做其他事情的人根本就不会知道这个程序完成升级了。
好了,算了,咱们继续,为了那些免费的短信。升级中……完成了,可以进入了,这次的错误真的是不能理解了——“登陆失败,请检查网络是否连通,如有疑问,请拨打 1860 或访问飞信自服务网站 ”。
首先我确信我的网络是连通的,因为这个时候 qq 上和 msn 上还有很多好友在给我发搞怪图片。同时刚才下载和升级的时候不好好的吗?第二,怀疑这个 sp (这个应该算是 icp 了)与移动的关系,这几天才说的 1860 和 1861 合并为 10086 ,作为这么密切的中国移动凯发k8网页登录的合作伙伴,难道还不知道这个消息?倘若知道,我们唯一能怀疑的就是这些做程序的人把程序做的太儿戏了。第三,打开 页面,网页界面制作很精美,可是没有故障通告,也没有所谓的自服务网站内容。由此我认定这不是华为的作品,因为华为作品中即使有些 bug ,但相关网站上基本都会有 bug 和故障说明。
连接了几次都是如此,终于在尝试了 6 分钟后成功了。谢天谢地!
进入界面后发现,这界面和功能似乎比 gtalk 还简洁,但想到体积( 12mb vs 890kb )。呵呵,高水平啊。点了一个条件速配,居然还要开通服务,想到移动 sp 的收费,我想还是不开通的好,免得无端每个月少了几十块大洋。到这里对这个软件一点感觉都没有了,算了,以后有空再看看吧,这里总结一下:
1. 这个产品有点拙劣(这里的拙劣跟程序员能力无关,相信做这个程序的人员都是不错的,问题出在经营者身上),容易看出是赶工做出来的粗制品,它长得丑我们不怪它,但还没有实现功能就大张旗鼓的吹起来了就是它的不对了。
2. 不正当竞争,利用中国移动自身的垄断资源牟取暴利,意图通过不正当竞争扼杀其他 im 软件(如 tencent )以实现另一个行业垄断。这其实比微软无耻多了,至少微软的 windows 是市场竞争后出来的产品,但我们绝对相信中国移动的强大只是垄断经营的结果。
3. 没有一个很好的设想和策划就开始干活,网络和 im 的经营都没有很清晰的思路。也许这个公司的思路是纯粹依靠移动的垄断地位去实现盈利(没看到吗?免费发短信啊,哪个 im 敢这样写?),所以也就没想如何讨好顾客了。
这不是什么分析文章,只是用完这个产品的感觉而已,没有去抨击任何企业或个人的意思。大家如果对这个产品有什么不爽的地方可以在 femoo 上跟我谈(我的馍号是: 443152595 ),有帮它做广告的嫌疑,嘿嘿。
相信凭借其老夫jboss与hibernate的暧昧关系在orm上一点都不会比其他开发工具弱。同时得益与其对jboss服务器的完美支持,估计今后信徒一定不少,只是现在感觉国内好像信徒并不是很多的样子。
需要的运行环境是jboss eclipse ide,也就是jems development tools for eclipse,jems是jboss enterprise middleware system的简写,它有如下特性(从jboss抄来的):
开源不要钱的产品许可
与eclipse3整合的开发环境
支持ejb 3.0项目的向导
hibernate工具支持
aop切向编程工具支持
jboss jbpm图形化流程设计
简化j2ee开发向导
与jboss应用服务器整合调试、监测以及生命周期控制
jsp、html以及xml语法高亮的编辑器
简化了档案包的发布和配置
可以从以下地址下载:
呵呵,大家去试试做一个自己的jboss seam吧。
号称世界上最轻巧的java ide —— gel,不仅能够自动(有点智能了……)完成,而且还支持jsp语法。看到过国外一个猛人的博客中说高手最喜欢用的java ide就是gel了,虽然不是特别相信,但gel确实是很有特色的,就像很多喜欢用jc的人一样,明明很多功能eclipse和netbeans做得很好,还是喜欢用这些小巧的软件。
大家试试使用吧,不过推荐大家用一下1.5以下版本的java sdk吧,不然容易出错。
version 1.0 rc 4.0版 (zip 文件包共4.2mb,够小吧)
下载地址:127.0.01/(自己电脑上有,但没有空间上传,要的留e-mail地址)
version 1.0 rc 3.9版 (估计跟4.0没多大区别,4.3mb)
下载地址:
教程下载:
gel-ref.rar
有看csdn的人一定知道这个世界上最轻量级的java ide了,其支持的功能跟jc不相上下,但体积和速度却大不相同。以前用过,感觉还可以,但最近使用了java sdk 1.42以上版本的sdk后就发现使用不太正常,不知道是什么问题。知道的兄弟希望可以给点解决方法,谢谢啦。
我听得都有点惊呆了.本来,他已经有了三套房子,每套价值百万,都是好地点的,部里的房子地点不会差.光出租其它两套房就每月至少5千元,天啊,他们也太厉害了,难怪全国人民努力工作还是工资无法上涨,纳税了那么多钱还是每年有财政赤字,教育也严重投入不足,结果是都花在养活这些退休的官员身上了.大家知道,北京的局级干部才称得上高干,可是局级干部在北京多如牛毛,一个副局级干部的退休生活尚且如此,估计局级干部就更牛了.
还不止这些,据老先生讲,他们单位一个初级干部退休,每月退休工资5000多,加上各种补贴,也要将近1万了.
想到辛辛苦苦工作了一辈子,退休了只有1000多的北京众多的老工人,我真想哭.我自己每个月上的员工老保险,据说二十多年退休后,每月只有1000多的退休金.可是现在我好歹也是个白领啊.
难怪现在很多人考公务员,准备当官,现在看来这条路是对的,大家赶快去吧,千万别做什么技术,去什么公司,当官在中国才是正路,有权才有钱啊.老百姓只有苦命啊
命苦的人啊……呵呵,现在确实有点变质的社会主义的感觉。仇富心理已经比较厉害了,中层阶级数量太少,然而现有的中层阶级还是一个排挤性相当强的中层,没有家族背景不让进入。不过,俺不关心,做自己的小打工仔就好了。
大家都在拷问:为什么?这个社会怎么了?
受助者李某:被人知道会没面子
受丛飞资助的李某大学毕业已经工作了,毕业后与丛飞没有任何联系,只是有一次接受媒体采访时,“不小心”说出了受丛飞资助上大学的事实。几天后,他从网上看到记者写的文章中提到了自己的名字,很不高兴,感到没面子,要求丛飞想办法删去文章中他的名字。
丛飞的朋友林燕打通了李某的电话“我很平静地问他为什么要删去名字,他说他现在是大学老师,这事让学生知道了会很没面子。我说贫困受助是你一生 中的重大机遇,再说贫困又不是罪恶,学生知道了还能怎么想?他说我就是不想让学生知道我过去的状况。我问,受助是耻辱吗?他说,我没说是耻辱,但我希望永 远不再提起这段往事。”听到这里,林燕气不打一处来,“当天晚上,我一整夜没有睡着,第二天见到丛飞,他告诉我,他也失眠了一夜。”林燕说:“现在,喜欢 上网的李某一定从网上看到了关于丛飞的报道,但至今连一声问候都没有!”说这话的时候,林燕一脸怆然。
受助者小a:他帮我肯定另有所图
受助者小a,大学毕业前夕,她还与丛飞保持联系,丛飞一直通过电话对她进行辅导,并在她即将大学毕业时为她找工作,但后来,只是丛飞为她找的学校音乐教师的岗位她不满意,才失去联系。记者得到小a的电话后与小a有一次通话,下面是对话的主要内容:
“我只是想问一下你是否记得自己接受过丛飞的资助?”
“我是接受过他的资助,当然记得,当时丛飞同意帮助我也是出于一种自愿,他有他的想法,我从来没有强迫过他。”
“他资助你时会有什么样的想法呢?”
“至于有什么样的想法,我也说不太清楚,但有一点是肯定的:任何人做事情都是有所图的,至于他图什么,我不说你也应该能猜到。”
“我猜不到,你猜到了吗?”
“我没时间去猜别人的想法。但你作为一名记者今天来给我打电话,核实丛飞是否资助我读了大学,不是也在一定程度上说明了他的想法吗?”
“他胃出血了,医生说如果不及时治疗,会有生命危险。可他现在陷入了没钱治病的困境,你想没想过应该向他伸出援手?”
“向他伸援手?怎么伸呢?给他治病?可我现在每月不过三四千元钱,还没这个能力。再说,他也从来没向我提过这个要求。”
“你无力帮助他,可也应该去看看他,让他知道你还没有忘记他呀。”
“我太忙了,没有时间。”
一受助学生家长:何时病好出来挣钱
丛飞住院后,许多受助学生的爱长打来电话“要钱”,有些没有及时收到学费的家长们对丛飞产生了怀疑,认为他反悔自己先前的承诺了。但在知道丛飞 生病住院后,许多家长都非常理解,劝丛飞安心养病,他们再想办法解决孩子的学费,有的甚至希望来深圳看望丛飞,但都被丛飞拒绝。
丛飞住院后,手机放在林燕处,林燕接到这类电话最多,感慨也最多。
有一天,林燕刚打开丛飞的手机,一个催款电话打了进来:“你不是说好要将我的孩子供到大学毕业吗?他现在正在读初中,你就不肯出钱了?你这不是坑人吗?”
林燕急忙解释:“丛飞病了,已经几个月不能演出了,现在暂时没钱给孩子们交学费,等他身体好了一定想办法寄钱过去。”对方听罢,半信半疑地盘问 起来:“他得的是什么病啊?”林燕告诉对方是胃的问题,可能比较严重,对方听了,问:“那你问问他什么时候治好病出来挣钱啊?”
受助者阿珍:能否帮我买个md
丛飞过去曾和林燕说起一个叫阿珍的女孩。
1998年,丛飞到山东演出时,一个十七八岁的女孩阿珍在演出结束时找到丛飞想拜师。面对这个陌生的女孩,丛飞拒绝说,他不收女学生。阿珍临走时要去了他的电话,说以后有问题时向他请教。但此后很长时间,这个女孩一直没有和他联系过。
两年后的一天,丛飞忽然接到了阿珍的求助电话:“丛老师,听说您是个有爱心的慈善家,资助很多贫困学生读书。现在我也遇到了经济上的困难,搞不 好也有失学的危险,您能不能资助我一些生活费?”丛飞二话没说,很快就给她寄去了2000元钱。此后,每学期开学前后,丛飞总是接到阿珍要求帮助的电话, 丛飞也总是有求必应。
大学三年级时,阿珍的要求开始升级了,不但要生活费,还要课外补习费以及高档物品。有一次,她这样给丛飞打电话说:“我们班的同学都用上了md 听音乐,对我们的学习有帮助,可我的父母买不起,您能否也给我买一个?”丛飞到天虹商场花2800元买了一台md,给阿珍邮去。不久,丛飞收到一条短信: “md已收到。”
大学毕业后,阿珍也当上歌手挣钱了,再也没有与丛飞联系过。不久前,林燕将丛飞住院的情况电话告诉阿珍,阿珍听罢,回答非常流畅:“请转达我的问候,让他安心养病。”从此,丛飞再也没有阿珍的音讯。
类型 | 估计价格 |
全包装产品 |
32000元 |
类型 | 估计价格 |
全包装产品 |
24000元 |
类型 | 估计价格 |
全包装产品 |
13000元 |
2004 年 6 月 01 日
在这一节中,我们简要地描述了面向服务的体系结构的发展。然后,我们探究了面向组件的开发与面向服务的体系结构之间的关系,并且说明了如何将组件作为实现服务的基础设施。
虽然 it 经理一直面临着削减成本和最大限度地利用现有技术的难题,但是与此同时,他们还必须不断地努力,以期更好地服务客户,更快地响应企业战略重点,从而赢得更大的竞争力。
在所有这些压力之下,有两个基本的主题:异构和改变。现在,大多数企业都有各种各样的系统、应用程序以及不同时期和技术的体系结构。集成来自多个厂商跨不同平台的产品简直就像一场噩梦。但是我们也不能单单使用一家厂商的产品,因为改变应用程序套件和支持基础设施是如此之难。
在当今 it 经理面临的问题之中,改变是第二个主题。全球化和电子商务加快了改变的步伐。全球化带来了激烈的竞争,产品周期缩短了,每个公司都想赢得超过竞争对手的优势。在竞争产品和可以从 internet 上获得的大量产品信息的推动下,客户要求更快速地进行改变。因而,在改进产品和服务方面展开的竞争进一步加剧了。
为了满足客户提出的越来越多的新要求,技术方面的改进也在不断地加快。企业必须快速地适应这种改变,否则就难以生存,更别提在这个动荡不安竞争激烈的环境中取得成功了,而 it 基础设施必须支持企业提高适应能力。
因此,企业组织正在从上世纪八十年代或更早的时期的相互隔离的垂直业务部门,到上世纪八十年代和九十年代关注业务流程的水平结构,向新的生态系统业务范例发展。重点是扩展供应链,支持客户和凯发k8网页登录的合作伙伴访问业务服务。第 19 页的图 2-1 展示了企业的这种发展。
我如何使我的 it 环境更灵活且更快地响应不断改变的业务需求呢? 我们如何使这些异构系统和应用程序尽可能无缝地进行通信呢?我们如何达到企业目标而不使企业走向破产的深渊呢?
it 响应者/支持者是随着企业的这种发展而并行发展的,如图 2-2 所示。现在,许多 it 经理和专业人员都同样相信,我们真的快找到了一种满意的答案——面向服务的体系结构。
图 2-2 体系结构的发展
为了减少异构性、互操作性和不断改变的要求的问题,这样的体系结构应该提供平台来构建具有下列特征的应用程序服务:
基于这样的面向服务的体系结构,服务使用者甚至不必关心与之通信的特定服务,因为底层基础设施或服务“总线”将代表使用者做出适当的选择。基础设施对请求者隐藏了尽可能多的技术。特别地,来自不同实现技术(如 j2ee 或 .net)的技术规范不应该影响 soa 用户。如果已经存在一个服务实现,我们就还应该重新考虑用一个“更好”的服务实现来代替,新的服务实现必须具有更好的服务质量。
|
|
自从“软件危机”促进软件工程的开创以来,it 界一直在努力寻求解决上述问题的方案。在过去几年里,下面简要概述的核心技术进展使我们走到了今天。我们将简要讨论这些核心技术,而我们重点关注的将是这些技术如何帮助解决 it 问题。
在“applying uml and patterns - an introduction to object-oriented analysis and design”中,larman 将面向对象的分析和设计的本质描述为“从对象(物体、概念或实体)的角度考虑问题域和逻辑凯发天生赢家一触即发官网的解决方案”。在“object-oriented softwareengineering: a use case driven approach”中,jacobson 等将这些对象定义为“特点在于具有许多操作和状态(记忆这些操作的影响)的物体”。
在面向对象的分析中,这样的对象是用问题域来标识和描述的,而在面向对象的设计中,它们转变成逻辑软件对象,这些对象最终将用面向对象的编程语言进行实现。
通过面向对象的分析和设计,可以封装对象(或对象组)的某些方面,以简化复杂业务场景的分析。为了降低复杂性,也可以抽象对象的某些特征,这样就可以只捕获重要或本质的方面。
基于组件的设计并不是一种新技术。它是从对象范例中自然发展而来的。在面向对象的分析和设计的早期,细粒度的对象被标榜为提供“重用”的机制,但是这样的对象的粒度级别太低了,没有适当的标准可以用来使重用广泛应用于实践之中。在应用程序开发和系统集成中,粗粒度组件越来越成为重用的目标。这些粗粒度对象通过内聚一些更细粒度的对象来提供定义良好的功能。通过这种方式,还可以将打包的凯发天生赢家一触即发官网的解决方案套件封装成这样的“组件”。
一旦组织在更高层次上实现了基于完全独立的功能组件的完备体系结构,就可以将支持企业的应用程序划分成一组粒度越来越大的组件。可以将组件看作是打包、管理和公开服务的机制。它们可以共同使用一组技术:实现企业级用况的大粒度企业组件可以通过更新的面向对象的软件开发与遗留系统相结合来实现
在“component-based development for enterprise systems”中,allen 涉及了服务的概念,“它是将组件描述成提供相关服务的物理黑盒封装的可执行代码单元。它的服务只能通过一致的已发布接口(它包括交互标准)进行访问。组件必须能够连接到其他组件(通过通信接口)以构成一个更大的组”。服务通常实现为粗粒度的可发现软件实体,它作为单个实例存在,并且通过松散耦合的基于消息通信模型来与应用程序和其他服务交互。第 22 页的图 2-3 展示了重要的面向服务术语:
在组件和服务开发中,都需要进行接口设计,这样软件实体就可以实现和公开其定义的关键部分。因此,在基于组件和面向服务的系统中,“接口”的概念对于成功的设计非常关键。下面是一些与接口有关的重要定义:
第 23 页的图 2-4 定义了客户关系管理 (crm) 服务的 uml 定义,它表示为一个 uml 组件,实现接口 accountmanagement、contactmanagement 和 systemsmanagement。在这些接口中只有头两个接口是已发布接口,不过,后者是公共接口。注意,systemsmanagement 接口和 managementservice 接口构成了双接口。crmservice 可以实现许多这样的接口,但是它以多种方式行为的能力取决于客户端在行为的实现方面是否允许有大的灵活性。甚至有可能给特定类型的客户端提供不同或附加的服务。在一些运行时环境中,这样的功能也用于在单个组件或服务上支持相同接口的不同版本。
如前所述,面向对象的技术和语言是实现组件的极好方式。虽然组件是实现服务的最好方法,但是您必须理解的一点是,好的基于组件的应用程序未必就构成好的面向服务的应用程序。一旦理解了服务在应用程序体系结构中所起的作用,组件开发人员就很有可能会利用现有的组件。进行这种转变的关键是认识到面向服务的方法意味着附加的应用程序体系结构层。第 24 页中的图 2-5 演示了如何将技术层应用于程序体系结构以提供粒度更粗的实现(它更靠近应用程序的使用者)。为称呼系统的这一部分而创造的术语是“应用程序边界”,它反映了服务是公开系统的外部视图的极好方法的事实(通过内部重用并结合使用传统组件设计)。
|
|
面向服务的体系结构提供了一种方法,通过这种方法,可以构建分布式系统来将应用程序功能作为服务提供给终端用户应用程序或其他服务。其组成元素可以分成功能元素和服务质量元素。第 25 页的图 2-6 展示了体系结构堆栈以及在一个面向服务的体系结构可能观察到的元素。
注意:面向服务的体系结构堆栈可能是一个容易引起争议的问题,因为各方面的支持者已经提出了几种不同的堆栈。我们的堆栈不是作为服务堆栈提出的。我们之所以在此提出它,是因为我们想要搭建一个有用的框架,在本书的剩余章节中,我们将通过这个框架来组织对 soa 的讨论。
体系结构堆栈分成两半,左边的一半集中于体系结构的功能性方面,而右边的一半集中于体系结构的服务质量方面。这些元素详细描述如下:
功能性方面包括:
服务质量方面包括:
图 2-7 展示了面向服务的体系结构中的协作。这些协作遵循“查找、绑定和调用”范例,其中,服务使用者执行动态服务定位,方法是查询服务注册中心来查找与其标准匹配的服务。如果服务存在,注册中心就给使用者提供接口契约和服务的端点地址。下图展示了面向服务的体系结构中协作支持“查找、绑定和调用”范例的实体。
面向服务的体系结构中的角色包括:
面向服务的体系结构中的每个实体都扮演着服务提供者、使用者和注册中心这三种角色中的某一种(或多种)。面向服务的体系结构中的操作包括:
面向服务的体系结构中的构件包括:
除了动态服务发现和服务接口契约的定义之外,面向服务的体系结构还具有以下特征:
这些特征也是满足电子商务按需操作环境的要求的主要特征,如第 301 页“e-business on demand and service-oriented architecture”所定义的。
最后,我们需要说明的是,面向服务的体系结构并不是一个新的概念。如图 2-8 所示,面向服务的体系结构所涉及的技术至少包括 corba、dcom 和 j2ee。面向服务的体系结构的早期采用者还曾成功地基于消息传递系统(如 ibm websphere mq)创建过他们自己的面向服务企业体系结构。最近,soa 的活动舞台已经扩展到包括 world wide web (www) 和 web 服务。
在面向服务的体系结构中,映射到业务功能的服务是在业务流程分析的过程中确定的。服务可以是细粒度的,也可以是粗粒度的,这取决于业务流程。每个服务都有定义良好的接口,通过该接口就可以发现、发布和调用服务。 企业可以选择将自己的服务向外发布到业务凯发k8网页登录的合作伙伴,也可以选择在组织内部发布服务。服务还可以由其他服务组合而成。
服务是粗粒度的处理单元,它使用和产生由值传送的对象集。它与编程语言术语中的对象不同。相反,它可能更接近于业务事务(如 cics 或 ims 事务)的概念而不是远程 corba 对象的概念。
服务是由一些组件组成的,这些组件一起工作,共同提供服务所请求的业务功能。因此,相比之下,组件比服务的粒度更细。另外,虽然服务映射到业务功能,但是组件通常映射到业务实体和操作它们的业务规则。作为一个示例,让我们看一看 ws-i 供应链管理(ws-i supply chain management)样本的定购单(purchaseorder)组件模型,如图 2-9 所示。
在基于组件的设计中,可以创建组件来严格匹配业务实体(如顾客(customer)、定购单(purchase order)、定购项(order item)),并且封装匹配这些实体所期望的行为的行为。
例如,定购单(purchase order)组件提供获取关于已定购的产品列表和定购的总额的信息的功能;定购项(order item)组件提供获取关于已定购的产品的数量和价格的信息的功能。每个组件的实现都封装在接口的后面。因此,定购单(purchase order)组件的用户不知道定购单(purchase order)表的模式、计算税金的算法、以及定单总额中的回扣和/或折扣。
在面向服务的设计中,不能基于业务实体设计服务。相反,每个服务都是管理一组业务实体中的操作的完整单元。例如,顾客服务将响应来自任何其他系统或需要访问顾客信息的服务的请求。顾客服务可以处理更新顾客信息的请求;添加、更新、删除投资组合;以及查询顾客的定单历史。顾客服务拥有所有与它管理的顾客有关的数据,并且能够代表调用方进行其他服务查询,以提供统一的顾客服务视图。这意味着服务是一个管理器对象,它创建和管理它的一组组件。
|
|
如前所述,企业正在处理两个问题:迅速地改变的能力和降低成本的要求。为了保持竞争力,企业必须快速地适应内部因素(如兼并和重组)或外部因素(如竞争能力和顾客要求)。需要经济而灵活的 it 基础设施来支持企业。
我们可以认识到,采用面向服务的体系结构将给我们带来几方面的好处,有助于我们在今天这个动荡的商业环境中取得成功:
soa 提供了一个抽象层,通过这个抽象层,企业可以继续利用它在 it 方面的投资,方法是将这些现有的资产包装成提供企业功能的服务。组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。
在面向服务的体系结构中,集成点是规范而不是实现。这提供了实现透明性,并将基础设施和实现发生的改变所带来的影响降到最低限度。通过提供针对基于完全不同的系统构建的现有资源和资产的服务规范,集成变得更加易于管理,因为复杂性是隔离的。当更多的企业一起协作提供价值链时,这会变得更加重要。
从现有的服务中组合新的服务的能力为需要灵活地响应苛刻的商业要求的组织提供了独特的优势。通过利用现有的组件和服务,可以减少完成软件开发生命周期(包括收集需求、进行设计、开发和测试)所需的时间。这使得可以快速地开发新的业务服务,并允许组织迅速地对改变做出响应和减少上市准备时间。
通过以松散耦合的方式公开的业务服务,企业可以根据业务要求更轻松地使用和组合服务。这意味资源副本的减少、以及重用和降低成本的可能性的增加。
通过 soa,企业可以未雨绸缪,为未来做好充分的准备。soa 业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。
soa 提供了灵活性和响应能力,这对于企业的生存和发展来说是至关重要的。但是面向服务的体系结构决不是灵丹妙药,而迁移到 soa 也并非一件可以轻而易举就完成的事情。请别指望一个晚上就将整个企业系统迁移到面向服务的体系结构,我们推荐的方法是,在业务要求出现或露出苗头时迁移企业功能的适当部分。
domain name: caishow.com {caishow.com }
registration date : 2003-5-29
expiration date : 2009-5-29
last update :2005-08-03 21:43:20
domain name server:
ns1.dns-diy.com
ns2.dns-diy.com
administrator:
shenzhen caixiu tech co.ltd soft_way@163.com 86.75525456120
caishow
7c rm w build yihai nanshan shenzhen
shenzhen guangdong cn 518000
technical contact:
shenzhen caixiu tech co.ltd soft_way@163.com 86.75525456120
caishow
7c rm w build yihai nanshan shenzhen
shenzhen guangdong cn 518000
billing contact:
shenzhen caixiu tech co.ltd soft_way@163.com 86.75525456120
caishow
7c rm w build yihai nanshan shenzhen
shenzhen guangdong cn 518000
原来是深圳南山的一个高科技公司……了得,能跟google搞上关系。但这样明目张胆的通过电信的服务器去插入广告是否算犯法呢?google的口号不是没有弹出广告吗?这样被人栽赃,google的名誉已经受到了损害,google是不知道呢?还是慑于电信的淫威装不知道呢?我们一介平民是不能参透的了,但这个所谓的高科技公司打着google的名义去招摇撞骗牟取自己的利益是否算是侵犯了法律呢?
而且这个彩铃也确实不是什么好东西,骗钱的东西啊(这只是个人观点了)。传媒和运营商利用彩铃已经挣了不少黑心钱了,什么“草女”、“草男”的事情闹得沸沸扬扬的,最后不就是为了挣劳苦大众兜里本来就紧巴巴的几分钱吗?现在更厉害了,都把主意打到这个深受大众喜欢的搜索引擎上来了,这让我想到一句话,做人不能太“电信”了……
期待着google对电信的起诉。
原始 url:
这两天看到了一篇不错的关于 soa 的文章,不敢独享,只可惜是 e 文,所以抽空翻译了一下,跟大家分享。
以下为本博客使用说明
我们的
blogjava
博客特别为大家的方便阅读提供了以下快捷功能:
需要查找关键字―――――――――――――――――请按
ctrl
+
f
想以后还能看(添加到收藏夹)――――――――――请按
ctrl
+
d
想刷新一下网页内容―――――――――――――――请按
f5
(应该不需要的,因为
blogjava
已经完全实现了
ajax
)
想保存到硬盘上―――――――――――――――――请按
ctrl
+
s
需要调用本地(
jini
)服务查看源代码――――――――在网页空白处点击鼠标右键+
v
不想看了――――――――――――――――――――请按
alt
+
f4
如果是标签页浏览器―――――――――――――――请按
ctrl
+
w
实话说,我们比
google
的
gmail
还早实现方便的快捷方式,厉害吧。这里不需要对我表示敬意,只需要对博客的建设者
dudu
老兄留言表示一下感谢就好了。
在开始的时候先介绍一下 soa 的概念。
什么是 soa ?
soa 的全称是 service oriented architecture ,面向服务架构。
她是指为了解决在 internet 环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。这句话的意思就是 soa 不是一门语言或具体的技术,而是一种软件的系统架构,应该说更像一种模式,是一种为了解决复杂的 internet 业务应用而提出的一种体系结构(在我感觉里,这种架构的提出更像 mvc 模式的提出,不过我们总喜欢用模式啊,架构啊的话来体现自己是行业内专业的人,但其实无论说是模式还是架构,这都只是一些名词,如果组合现拥有的技术去实现自己的应用才是最有用的,就不用多谈所谓的架构还是模式了)。
译文 ( 翻译:陈朋奕,如果有错误请来我的博客指出 ) :
在做软件开发的人,架构这个词经常被用在三种不同的场合中:应用体系架构( application architecture ),基础体系架构 (infrastructure architecture) 以及企业架构体系 (enterprise architecture) 。而 soa 的概念横跨了这三种体系,然而很多人在谈到 soa 的时候总喜欢不自觉的把 soa 跟其中的一种混为一谈。
譬如开发者大多对如何建立 soa 应用感兴趣,因此他们关注的趋向更多是 soa 中的应用程序的体系架构方面。而 web serivces 管理工具的卖主一般认为 soa 主要是关于基础组件体系结构的,同样的,用户群体会认为 soa 是用于企业业务应用结构的。
这三种观点都是有意义的,因为这映射了 soa 的三个应用层面。下面是关于这三个方面的一些简单的讲解:
―――― soa 应用体系架构:是建立 soa 服务的指导、模式以及实现的方法。关注面向服务软件平台和个体应用的开发者会特别强调这个方面。如 microsoft’s windows communication foundation ( wcf 微软视窗通讯基础组件)以及最近提出的 service component architecture (sca 服务构件体系 ) 就是跟 soa 这个方面的应用实现。
―――― soa 基础体系架构:是管理和操作 soa 服务的指导、模式以及实现的方法。 soa 的大思想家们有时也会承认自己在这个方面有不足,但真正去实现这些功能的人却知道这些方面的重要性。一般来说,卖主会特别喜欢把关注点和行动实现集中在这里。
―――― soa 业务体系架构:利用 soa 并从 soa 中获得商业利益的指导、模式以及实现的方法。而关于技术的讨论仍然会在这里出现,但更多的关注点已经转移到了人的身上(以人为本?事实上,我对 soa 面临的最大挑战是人的观点——人通常比技术更多问题——有一些自己的看法)。不过,来自 zapthink 的分析家们通常对 soa 提出的建议都是在强调这个方面。
我看到过很多人关于 soa 的意义(甚至是价值)的争论,其实他们的争论只是关于应用程序体系架构主导还是企业体系架构主导而已。这些专业术语仅仅是在我们都认同的情况下才会体现其价值的,因此当别人在讨论这个被过度使用的术语的时候我们应该保持清晰的思路,清楚我们到底讲的是什么才是我们应该把握的方向。
swt
是很多人都推崇的窗体界面开发组件,有很多喜欢
eclipse
的人都说,
swt
的效率比
java
自身所带的
awt
和
swing
无论是开发效率还是运行速度上都快。确实如此,
swt
在
java
世界来说确实是
awt
和
swing
的强大竞争对手。这里引用一段
eclipse
开发者的话,“
swt
本身仅仅是
eclipse
组织为了开发
eclipse ide
环境所编写的一组底层图形界面
api
。或许是无心插柳,或是有意为之,至今为止,
swt
无论是在性能和外观上,都超越了
sun
公司提供的
awt
和
swing
”。
当然,这个观点是我并不是很同意,但鉴于自己前面一篇文章的“白痴”观点挨到不少高人的批评,呵呵,咱只是一个懂点
oracle
和
mysql
,听说过
java
和
ruby
,见过
eclipse
的人(具体这些是什么东西还真的是不知道),还是不要乱提意见的好(玩笑而已)。自己不提,但
java
世界的英雄
james gosling
的意见总可以上台了吧?当然还是那句话,仅仅是我认为
james gosling
是
java
世界的英雄而已(因为他缔造了
java
,而且还一直为
java
维护,抨击其他语言(嘿嘿,他的这个特点俺喜欢啊))。
james gosling
的照片:
/*偶像吧,帅就一个字*/
这是他回答记者关于
swt
的问题:
问:一个曾经徘徊在
java
和
.net
技术平台之间的开发者因为
java
语言的分裂提出过下面的问题:
eclipse
的
swt
(
standard widget toolkit
)比
awt
和
swing
都好(性能和开发效率)。
jbuilder
的
gui
却漂亮一点,但用的不是
swt
。
hibernate
?
jdo
?还是
beans
?他想知道下一版本的
java
怎么做到方便开发,让应用程序好看点,容易部署一点,同时又能提供更优秀的数据库使用技术,使开发人员能在最短的时间内开发出更快、更稳定、更漂亮的程序,让那些
.net
的教徒们活在绝望中。
答:嗯,我肯定会推荐大家使用
java
基础类库
jfc/swing
的,因为只要使用得当,他们会比
swt
的性能和速度更快。只是因为
swing
比
swt
拥有更多的特性,所以很容易用错,这是个问题。
而关于数据库方面,每一种情况都有不同,你不得不去了解更多的情形。在某些情况下,关系数据库会是好的选择,但有些情况下,面向对象的数据库才是好的选择。这也是技术让人讨厌的一面。
james 大哥在 csdn 上聊天室对 swt 的说法:
问: swt 将来是不是有可能加入到 java se 里面?
答:我们刚开始推出 java 的时候,有一个 awt 。刚才说到 swt 它的架构基本上重复和照搬了 awt 。而且它出现的问题基本上和 awt 是完全一样。
最后说点自己的意见吧, swt 的速度和效能确实不错,但是它并不符合 java 的结构标准,不能做到“ write once, run anywhere ”。而且在内存和垃圾回收上并没有继承 java 的 gc ,所以也是比较麻烦的。很多人说 awt 和 swing 的速度和性能都慢,那是因为他们并不是真正的懂 java 的人(其实大多数评价 swt 和 awt/swing 的人都是做 java web 开发的人员,对 java 的桌面开发也许只是浅尝辄止,随便尝试了几下就给出了洋洋洒洒上万字的评语),想象一下 jbuilder 和 net beans 是用什么做出来的?速度也不是一样很快,而且这些开发人员的开发速度绝对不慢,比起 swt 开发,他们还不用去手动回收 dispose 的窗体呢(罪过啦,又说了些偏激的话)。我个人相信,随着 java 6.0 的出现, java 对桌面应用的支持得到了前所未有的提升,慢慢的就会有一套完善而成熟的 java 桌面程序开发框架和开发模式,那时候也许大家就不用争论了。
也许这正是 java 无奈现状的体现吧,本来是大户人家的宝贝,现在变成沦落荒野的野马,要跟荒原的狐狗抢食 …… 在桌面程序上面,出了 ibm 那么热心的开发了 eclipse 之外,似乎 java 毫无建树,而 web 上, java 更是被 .net 和其他带脚本性质的语言蚕食领地, .net 当然是没话说的,因为这可是大户人家的孩子,身上带着微软皇族的血统,背靠如此雄厚的资本,自然不会弱,而 php/python 等语言也以其灵活的结构和多年积累的成熟的多样的开发框架一步一步的侵食 java 的领地,我想让 java 世界最痛心的也许不是这些,而是由 ruby 语言引起的 java 世界的内讧 ……
对 ruby 这门语言,说实话,我真的不以为然,甚至觉得这不算语言。当初学习 java 的时候,是从 c 语言转过来的, java 给我的印象真的太美丽了,那么美妙的结构,竟然能如此完美的用程序语言去体现世界。而接触 ruby ,一点也没有接触 java 时候的那种感觉,但是我不得不承认 ruby on rails 真的是快捷而且方便的 web 开发平台。那么轻松的几百行代码就能够完成 java ( jsp servlet )上千行代码(有个朋友跟我说,他尝试过将一个 java 的简单 web 程序,据说好像是网上商城,改到 ruby 平台,上 4 ~ 5 千行的 java 代码,仅仅用了 800 行 ruby 代码)。这样的结果难道还不够震撼吗?
java 语言的优美是大家公认的,但如果是为了仅有的优美而付出大量的劳动,真的必要吗?也许正如 lansa 公司的高级程序设计师 roc.chen 说的那样, java 更适合在学校里进行 oo 软件的教学,因为他真的很美丽。当年 smalltalk 也是很优美的语言,为什么还是没有流行呢?语言的流行程度也许真的跟优美有否没有直接关系,想来 vb 真的是一门很烂的语言,但如此流行,也不能不承认这个道理的正确性了。
也许改名是因为要将 java 这个重量级的语言从吃遍四方的笨重的老虎变成可以轻松跑跳的野马吧,现在 java 的世界太笨重了,有复杂的 ejb ,多种不互相兼容开发模式( tomcat/sunj2ee 等下各有各的开发模式),多个巨头在做自己不同的ide(eclipse /net beans/ idea/ j builders/ workshop等),多个企业在做自己的j2ee服务器(geronimo /web sphere/ weblogic等)……意见经常不能统一,在这点上我真的认同微软的方式,这样至少使用的人能很快的上手,能更快更好的完善自己的开发模式和开发平台。
我觉得 java 已经在让自己变得轻量级,变得灵巧了,让自己在各个方面都能适应快速开发,就像现在的 ruby 一样,而 spring 的受欢迎程度和《 j2ee without ejb 》的热卖也说明了这点。也许 ruby 语言的出现对 java 来说是好事,因为至少这打击不是致命的,能让 java 的设计者痛定思痛,寻求变革。
这 java 6 mustang 的出现也许正是为了这个目的吧。那下面就说说 java 6 的特点吧:
l 支持 web service ( java web 的开发心头之痛啊,终于搞定了)
l 提高 jvm 性能,对比 java 5.0 , mustang hotspot jvm 有 58 %的性能提升(早该如此了, java 的诟病就是慢,但我还没尝试过)
l 直接嵌入 jsr-223 规定的脚本语言
l 增加对 javascript 的支持,嵌入了 rhino (即 javascript )解释器(好东西来的,也许是因为 ruby 内置的 ajax 对其的影响吧)
l 支持 jdbc 4 规范
l 扩展 java.io.file ,充分利用磁盘空间
l 安全上新增了对 xml 数字签名的支持,整合 java generic security services 及 kerberos ,支持国际域名和资源标识符和网络参数标题访问
l 还有好多,不过就没前面的那么重要了
sun
已经提供了演示版本的下载,我已经下载了,同时也下载了
sun
的
net beans ide
,准备对这个新的
jdk
进行测试,测试结果会以最快的速度向同志们报告。
===============================================================================
/听了白痴兄弟的话,想说几句话/
上面只是我一个人的看法,也只是随便说说而已,犯不着大家这么生气的。况且这仅仅是晚上涂鸦写写,告诉大家一些消息,评论只是个人观点。