Thursday, July 30, 2009
俞敏洪:背完100个句子记下7000个单词
俞敏洪:100个句子记完的7000单词(1)
俞敏洪从100套真题中提炼而出的100个经典句子
1. Typical of the grassland dwellers of the continent is the American antelope, or pronghorn.
1.美洲羚羊,或称叉角羚,是该大陆典型的草原动物。
2. Of the millions who saw Haley’s comet in 1986, how many people will live long enough to see it return in the twenty-first century.
2. 1986年看见哈雷慧星的千百万人当中,有多少人能够长寿到足以目睹它在二十一世纪的回归呢?
3. Anthropologists have discovered that fear, happiness, sadness, and surprise are universally reflected in facial expressions.
3.人类学家们已经发现,恐惧,快乐,悲伤和惊奇都会行之于色,这在全人类是共通的。
4. Because of its irritating effect on humans, the use of phenol as a general antiseptic has been largely discontinued.
4.由于苯酚对人体带有刺激性作用,它基本上已不再被当作常用的防腐剂了。
5. In group to remain in existence, a profit-making organization must, in the long run, produce something consumers consider useful or desirable.
5.任何盈利组织若要生存,最终都必须生产出消费者可用或需要的产品。
6. The greater the population there is in a locality, the greater the need there is for water, transportation, and disposal of refuse.
6.一个地方的人口越多,其对水,交通和垃圾处理的需求就会越大。
7. It is more difficult to write simply, directly, and effectively than to employ flowery but vague expressions that only obscure one’s meaning.
7.简明,直接,有力的写作难于花哨,含混而意义模糊的表达。
8. With modern offices becoming more mechanized, designers are attempting to personalize them with warmer, less severe interiors.
8.随着现代办公室的日益自动化,设计师们正试图利用较为温暖而不太严肃的内部装饰来使其具有亲切感。
9. The difference between libel and slander is that libel is printed while slander is spoken.
9.诽谤和流言的区别在于前者是书面的,而后者是口头的。
10. The knee is the joints where the thigh bone meets the large bone of the lower leg.
10.膝盖是大腿骨和小腿胫的连接处。
11. Acids are chemical compounds that, in water solution, have a sharp taste, a corrosive action on metals, and the ability to turn certain blue vegetable dyes red.
11.酸是一种化合物,它在溶于水时具有强烈的气味和对金属的腐蚀性,并且能够使某些蓝色植物染料变红。
12. Billie Holiday’s reputation as a great jazz-blues singer rests on her ability to give emotional depth to her songs.
12. Billie Holiday’s作为一个爵士布鲁斯乐杰出歌手的名声建立在能够赋予歌曲感情深度的能力。
13. Essentially, a theory is an abstract, symbolic representation of what is conceived to be reality.
13.理论在本质上是对认识了的现实的一种抽象和符号化的表达。
14. Long before children are able to speak or understand a language, they communicate through facial expressions and by making noises.
14.儿童在能说或能听懂语言之前,很久就会通过面部表情和靠发出噪声来与人交流了。
15. Thanks to modern irrigation, crops now grow abundantly in areas where once nothing but cacti and sagebrush could live.
15.受当代灌溉(技术设施)之赐,农作物在原来只有仙人掌和荞属科植物才能生存的地方旺盛的生长。
16. The development of mechanical timepieces spurred the search for more accurate sundials with which to regulate them.
16.机械计时器的发展促使人们寻求更精确的日晷,以便校准机械计时器。
17. Anthropology is a science in that anthropologists use a rigorous set of methods and techniques to document observations that can be checked by others.
17.人类学是一门科学,因为人类学家采用一整套强有力的方法和技术来记录观测结果,而这样记录下来的观测结果是供他人核查的。
18. Fungi are important in the process of decay, which returns ingredients to the soil, enhances soil fertility, and decomposes animal debris.
18.真菌在腐化过程中十分重要,而腐化过程将化学物质回馈于土壤,提高其肥力,并分解动物粪便。
19. When it is struck, a tuning fork produces an almost pure tone, retaining its pitch over a long period of time.
19.音叉被敲击时,产生几乎纯质的音调,其音量经久不衰。
20. Although pecans are most plentiful in the southeastern part of the United States, they are found as far north as Ohio and Illinois.
20.虽然美洲山河桃树最集中于美国的东南部但是在北至俄亥俄州及伊利诺州也能看见它们。
21. Eliminating problems by transferring the blame to others is often called scape-goating.
21.用怪罪别人的办法来解决问题通常被称为寻找替罪羊。
22. The chief foods eaten in any country depend largely on what grows best in its climate and soil.
22.一个国家的主要食物是什么,大体取决于什么作物在其天气和土壤条件下生长得最好。
23. Over a very large number of trials, the probability of an event’s occurring is equal to the probability that it will not occur.
23.在大量的实验中,某一事件发生的几率等于它不发生的几率。
24. Most substance contract when they freeze so that the density of a substance’s solid is higher than the density of its liquid.
24.大多数物质遇冷收缩,所以他们的密度在固态时高于液态。
25. The mechanism by which brain cells store memories is not clearly understood.
25.大脑细胞储存记忆的机理并不为人明白。
26. By the middle of the twentieth century, painters and sculptors in the United States had begun to exert a great worldwide influence over art.
26.到了二十一世纪中叶,美国画家和雕塑家开始在世界范围内对艺术产生重大影响。
27. In the eastern part of New Jersey lies the city of Elizabeth, a major shipping and manufacturing center.
27.伊丽莎白市,一个重要的航运和制造业中心,坐落于新泽西州的东部。
28. Elizabeth Blackwell, the first woman medical doctor in the United States, founded the New York Infirmary, an institution that has always had a completely female medical staff.
28. Elizabeth Blackwell,美国第一个女医生,创建了员工一直为女性纽约诊所。
29. Alexander Graham Bell once told his family that he would rather be remembered as a teacher of the deaf than as the inventor of the telephone.
29. Alexander Graham Bell曾告诉家人,他更愿意让后人记住他是聋子的老师,而非电话的发明者。
30. Because its leaves remain green long after being picked, rosemary became associated with the idea of remembrance.
30.采摘下的迷迭香树叶常绿不衰,因此人们把迷迭香树与怀念联系在一起。
31. Although apparently rigid, bones exhibit a degree of elasticity that enables the skeleton to withstand considerable impact.
31.骨头看起来是脆硬的,但它也有一定的弹性,使得骨骼能够承受相当的打击。
32. That xenon could not FORM chemical compounds was once believed by scientists.
32.科学家曾相信:氙气是不能形成化合物的。
33. Research into the dynamics of storms is directed toward improving the ability to predict these events and thus to minimize damage and avoid loss of life. 33.对风暴动力学的研究是为了提高风暴预测从而减少损失,避免人员伤亡。
34. The elimination of inflation would ensure that the amount of money used in repaying a loan would have the same value as the amount of money borrowed. 34. 消除通货膨胀应确保还贷的钱应与所贷款的价值相同。
35. Futurism, an early twentieth-century movement in art, rejected all traditions and attempted to glorify contemporary life by emphasizing the machine and motion.
35.未来主义,二十世纪早期的一个艺术思潮。拒绝一切传统,试图通过强调机械和动态来美化生活。
36. One of the wildest and most inaccessible parts of the United States is the Everglades where wildlife is abundant and largely protected.
36. Everglades是美国境内最为荒凉和人迹罕至的地区之一,此处有大量的野生动植物而且大多受(法律)保护。
37. Lucretia Mott’s influence was so significant that she has been credited by some authorities as the originator of feminism in the United States.
37. Lucretia Mott’s的影响巨大,所以一些权威部门认定她为美国女权运动的创始人。
38. The activities of the international marketing researcher are frequently much broader than those of the domestic marketer.
38.国际市场研究者的活动范围常常较国内市场研究者广阔。
39. The continental divide refers to an imaginary line in the North American Rockies that divides the waters flowing into the Atlantic Ocean from those flowing into the Pacific.
39.大陆分水岭是指北美洛矶山脉上的一道想象线,该线把大西洋流域和太平洋流域区分开来。
40. Studies of the gravity field of the Earth indicate that its crust and mantle yield when unusual weight is placed on them.
40.对地球引力的研究表明,在不寻常的负荷之下地壳和地幔会发生位移。
41. The annual worth of Utah’s manufacturing is greater than that of its mining and farming combined.
41.尤它州制造业的年产值大于其工业和农业的总和。
42. The wallflower is so called because its weak stems often grow on walls and along stony cliffs for support.
42.墙花之所以叫墙花,是因为其脆弱的枝干经常要靠墙壁或顺石崖生长,以便有所依附。
43. It is the interaction between people, rather than the events that occur in their lives, that is the main focus of social psychology.
43.社会心理学的主要焦点是人与人之间的交往,而不是他们各自生活中的事件。
44. No social crusade aroused Elizabeth Williams’ enthusiasm more than the expansion of educational facilities for immigrants to the United States.
44.给美国的新移民增加教育设施比任何社会运动都更多的激发了Elizabeth Williams的热情。
45. Quails typically have short rounded wings that enable them to spring into full flight instantly when disturbed in their hiding places.
45.典型的鹌鹑都长有短而圆的翅膀,凭此他们可以在受惊时一跃而起,飞离它们的躲藏地。
46. According to anthropologists, the earliest ancestors of humans that stood upright resembled chimpanzees facially, with sloping foreheads and protruding brows.
46.根据人类学家的说法,直立行走的人的鼻祖面部轮廓与黑猩猩相似,额头后倾,眉毛突出。
47. Not until 1866 was the fully successful transatlantic cable finally laid.
47.直到1866年第一条横跨大西洋的电缆才完全成功的架通。
48. In his writing, John Crowe Ransom describes what he considers the spiritual barrenness of society brought about by science and technology.
48. John Crowe Ransom在他的著作中描述了他认为是由科学技术给社会带来的精神贫困。
49. Children with parents whose guidance is firm, consistent, and rational are inclined to possess high levels of self-confidence.
49.父母的教导如果坚定,始终如一和理性,孩子就有可能充满自信。
50. The ancient Hopewell people of North America probably cultivated corn and other crops, but hunting and gathering were still of critical importance in their economy.
50.北美远古的Hopewell人很可能种植了玉米和其他农作物,但打猎和采集对他们的经济贸易仍是至关重要的。
俞敏洪:100个句子记完的7000单词(2)
俞敏洪从100套真题中提炼而出的100个经典句子
51. Using many symbols makes it possible to put a large amount of inFORMation on a single map.
51.使用多种多样的符号可以在一张地图里放进大量的信息
52. Anarchism is a term describing a cluster of doctrines and attitudes whose principal uniting feature is the belief that government is both harmful and unnecessary.
52.无政府主义这个词描述的是一堆理论和态度,它们的主要共同点在于相信政府是有害的,没有必要的。
53. Probably no man had more effect on the daily lives of most people in the Untied States than did Henry Ford a pioneer in automobile production.
53.恐怕没有谁对大多数美国人的日常生活影响能超过汽车生产的先驱亨利.福特。
54. The use of well-chosen nonsense words makes possible the testing of many basic hypotheses in the field of language learning.
54.使用精心挑选的无意义词汇,可以检验语言学科里许多基本的假定。
55. The history of painting is a fascinating chain of events that probably began with the very first pictures ever made.
55.优化历史是由一连串的迷人事件组成,其源头大概可以上溯到最早的图画。
56. Perfectly matched pearls, strung into a necklace, bring a far higher price than the same pearls told individually.
56.相互般配的珍珠,串成一条项链,就能卖到比单独售出好得多的价钱。
57. During the eighteenth century, Little Turtle was chief of the Miami tribe whose territory became what is now Indiana and Ohio.
57.十八世纪时,“小乌龟”是迈阿密部落的酋长,该部落的地盘就是今天的印第安那州和俄亥俄州。
58. Among almost seven hundred species of bamboo, some are fully grown at less than a foot high, while others can grow three feet in twenty-four hours.
58.在竹子的近七百个品种中,有的全长成还不到一英尺,有的却能在二十四小时内长出三英尺。
59. Before staring on a sea voyage, prudent navigators learn the sea charts, study the sailing directions, and memorize lighthouse locations to prepare themselves for any conditions they might encounter.
59.谨慎的航海员在出航前,会研究航向,记录的灯塔的位置,以便对各种可能出现的情况做到有备无患。
60. Of all the economically important plants, palms have been the least studied.
60.在所有的经济作物中,棕榈树得到的研究最少。
61. Buyers and sellers should be aware of new developments in technology can and does affect marketing activities.
61.购买者和销售者都应该留意技术的新发展,原因很简单,因为技术能够并且已经影响着营销活动。
62. The application of electronic controls made possible by the microprocessor and computer storage have multiplied the uses of the modern typewriter.
62.电脑储存和由于电子微处理机得以实现的电控运用成倍的增加了现代打字机的功能。
63. The human skeleton consists of more than two hundred bones bound together by tough and relatively inelastic connective tissues called ligaments.
63.人类骨骼有二百多块骨头组成,住些骨头石油坚韧而相对缺乏弹性的,被称为韧带的结蒂组连在一起。
64. The pigmentation of a pearl is influenced by the type of oyster in which it develops and by the depth, temperature, and the salt content of the water in which the oyster lives.
64.珍珠的色泽受到作为其母体牡蛎种类及牡蛎生活水域的深度,温度和含盐度的制约。
65. Although mockingbirds superbly mimic the songs and calls of many birds, they can nonetheless be quickly identified as mockingbirds by certain aural clues.
65.尽管模仿鸟学很多种鸟的鸣叫声惟妙惟肖,但人类还是能够依其声音上的线索很快识别它们。
66. Not only can walking fish live out of water, but they can also travel short distances over land.
66.鲇鱼不仅可以离开水存活,还可以在岸上短距离移动。
67. Scientists do not know why dinosaurs became extinct, but some theories postulate that changers in geography, climate, and sea levels were responsible.
67.科学家不知道恐龙为何绝种了,但是一些理论推断是地理,气候和海平面的变化造成的。
68. The science of horticulture, in which the primary concerns are maximum yield and superior quality, utilizes inFORMation derived from other sciences.
68.主要目的在于丰富和优质的农艺学利用了其他科学的知识。
69. Snow aids farmers by keeping heart in the lower ground levels, thereby saving the seeds from freezing.
69.雪对农民是一种帮助,因为它保持地层土壤的温度,使种子不致冻死。
70. Even though the precise qualities of hero in literary words may vary over time, the basic exemplary function of the hero seems to remain constant.
70.历代文学作品中的英雄本色虽各有千秋,但其昭世功力却是恒古不变的。
71. People in prehistoric times created paints by grinding materials such as plants and clay into power and then adding water.
71.史前的人们制造颜料是将植物和泥土等原料磨成粉末,然后加水。
72. Often very annoying weeds, goldenrods crowd out less hardy plants and act as hosts to many insect pests.
72.***花通常令人生厌,它挤走不那么顽强的植物,并找来很多害虫。
73. Starting around 7000 B.C., and for the next four thousand years, much of the Northern Hemisphere experienced temperatures warmer than at present.
73.大约从公元前七千年开始,在四千年当中,北半球的温度比现在高。
74. When Henry Ford first sought financial backing for making cars, the very notion of farmers and clerks owning automobiles was considered ridiculous.
74.当亨利.福特最初制造汽车为寻求资金支持时,农民和一般职员也能拥有汽车的想法被认为是可笑的。
75. Though once quite large, the population of the bald eagle across North America has drastically declined in the past forty years.
75.北美秃头鹰的数量一度很多,但在近四十年中全北美的秃头鹰数量急剧下降。
76. The beaver chews down trees to get food and material with which to build its home.
76.水獭啃倒树木,以便取食物并获得造窝的材料。
77. Poodles were once used as retrievers in duck hunting, but the American Kennel Club does not consider them sporting dogs because they are now primarily kept as pets.
77.长卷毛狗曾被用作猎鸭时叼回猎物的猎犬,但是美国Kennel Club却不承认它们为猎犬,因为它们现在大多数作为宠物饲养。
78. As a result of what is now know in physics and chemistry, scientists have been able to make important discoveries in biology and medicine.
78.物理学和化学的一个成果是使得科学家们能在生物学和医学上获得重大发现。
79. The practice of making excellent films based on rather obscure novels has been going on so long in the United States as to constitute a tradition.
79.根据默默无闻的小说制作优秀影片在美国由来已久,已经成为传统。
80. Since the consumer considers the best fruit to be that which is the most attractive, the grower must provide products that satisfy the discerning eye.
80.因为顾客认为最好的水果应该看起来也是最漂亮的,所以种植者必须提供能满足挑剔眼光的产品。
81. Television the most pervasive and persuasive of modern technologies, marked by rapid change and growth, is moving into a new era, an era of extraordinary sophistication and versatility, which promises to reshape our lives and our world.
81.电视,这项从迅速变化和成长为标志的最普及和最有影响力的现代技术,正在步入一个新时代,一个极为成熟和多样化的时代,这将重塑我们的生活和世界。
82. Television is more than just an electronics; it is a means of expression, as well as a vehicle for communication, and as such becomes a powerful tool for reaching other human beings.
82.电视不仅仅是一件电器;它是表达的手段和交流的载体并因此成为联系他人的有力工具。
83. Even more shocking is the fact that the number and rate of imprisonment have more than doubled over the past twenty years, and recidivism------that is the rate for re-arrest------is more than 60 percent.
83.更让人吃惊的事实是监禁的数目和比例在过去的二十年中翻了一番还有余,以及累犯率——即再次拘押的比例——为百分之六十强。
84.William Rainey Harper lured him to the new university of Chicago, where he remained officially for exactly a generation and where his students in advanced composition found him terrifyingly frigid in the classroom but sympathetic and understanding in their personal conferences.
84.他的教书生涯始于麻省理工学院,但是William Rainey Harper把他吸引到了新成立的芝加哥大学。他在那里正式任职长达整整一代人的时间。他的高级作文课上的学生觉得他在课上古板得可怕,但私下交流却富有同情和理解。
85. The sloth pays such little attention to its personal hygiene that green algae grow on its coarse hair and communities of a parasitic moth live in the depths of its coat producing caterpillars which graze on its mouldy hair. Its muscles are such that it is quits incapable of moving at a speed of over a kilometer an hour even over the shortest distances and the swiftest movement it can make is a sweep of its hooked arm.
85.树獭即不讲究卫生,以至于它粗糙的毛发上生出绿苔,成群的寄生蛾生长在它的皮毛深处,变成毛毛虫,并以它的脏毛为食。她的肌肉不能让他哪怕在很短的距离以内以每小时一公里的速度移动。它能做的最敏捷的动作就是挥一挥它弯曲的胳膊。
86. Artificial flowers are used for scientific as well as for decorative purposes. They are made from a variety of materials, such as way and glass, so skillfully that they can scarcely be distinguished from natural flowers.
86.人造花卉即可用于科学目的,也可用于装饰目的,它们可以用各种各样的材料制成,臂如蜡和玻璃;其制作如此精巧,几乎可以以假乱真。
87. Three years of research at an abandoned coal mine in Argonne, Illinois, have resulted in findings that scientists believe can help reclaim thousands of mine disposal sites that scar the coal-rich regions of the United States.
87.在伊利诺州Angonne市的一个废弃煤矿的三年研究取得了成果,科学家们相信这些成果可以帮助改造把美国产煤区弄得伤痕累累的数千个旧煤场。
88. When the persuading and the planning for the western railroads had finally been completed, the really challenging task remained: the dangerous, sweaty, backbreaking, brawling business of actually building the lines.
88.当有关西部铁路的说服和规划工作终于完成后,真正艰难的任务还没有开始;即危险,吃力,需要伤筋动骨和吵吵嚷嚷的建造这些铁路的实际工作。
89. Because of the space crunch, the Art Museum has become increasingly cautious in considering acquisitions and donations of art, in some cases passing up opportunities to strengthen is collections.
89.由于空间不足,艺术博物馆在考虑购买和接受捐赠的艺术品是越来越慎重,有些情况下放弃其进一步改善收藏的机会。
90. The United States Constitution requires that President be a natural-born citizen, thirty-five years of age or older, who has lived in the United States for a minimum of fourteen years.
90.美国宪法要求总统是生于美国本土的公民,三十五岁以上,并且在美国居住了至少十四年。
91. Arid regions in the southwestern United States have become increasingly inviting playgrounds for the growing number of recreation seekers who own vehicles such as motorcycles or powered trail bikes and indulge in hill-climbing contests or in caving new trails in the desert.
91.美国西部的不毛之地正成为玩耍的地方,对越来越多拥有摩托车或越野单车类车辆的,喜欢放纵于爬坡比赛或开辟新的沙漠通道的寻欢作乐者具有不断增长的吸引力。
92. Stone does decay, and so tools of long ago have remained when even the bones of the man who made them have disappeared without trace.
92.石头不会腐烂,所以以前的(石器)工具能保存下来,虽然它们的制造者已经消失的无影无踪。
93. Insects would make it impossible for us to live in the world; they would devour all our crops and kill our flocks and herds, if it were not for the protection we get from insect-eating animals.
93.昆虫就将会使我们无法在这个世界上居住;如果我们没有受到以昆虫为食的动物的保护,昆虫就会吞嚼掉我们所有的庄稼并杀死我们饲养的禽兽。
94. It is true that during their explorations they often faced difficulties and dangers of the most perilous nature, equipped in a manner which would make a modern climber shudder at the thought, but they did not go out of their way to court such excitement.
94.确实,他们在探险中遇到了极具威胁性的困难和危险,而他们的装备会让一个现代登山者想一想都会浑身颤栗。不过他们并不是刻意去追求刺激的。
95. There is only one difference between an old man and a young one: the young man has a glorious future before him and old one has a splendid future behind him: and maybe that is where the rub is.
95.老人和年轻人之间只有一个区别:年轻人的前面有辉煌的未来,老年人灿烂的未来却已在它们身后。这也许就是困难之所在。
96. I find young people exciting. They have an air of freedom, and they have not a dreary commitment to mean ambitions or love comfort. They are not anxious social climbers, and they have no devotion to material things.
96.我们位年强人振奋。它们带有自由的气息,他们不会为狭隘的野心和贪婪享受而孜孜以求。他们不是焦虑的向上爬的人,他们不会对物质性的东西难舍难分。
97. I am always amazed when I hear people saying that sport creates goodwill between the nations, and that if only the common peoples of the world could meet one another at football or cricket, they would have no inclination to meet on the battlefield.
97.每次我听说体育运动能够在国家间建立起友好感情,说世界各地的普通人只要能在足球场或板球场上相遇就会没有兴趣在战场上相遇的话,我都倍感诧异。
98. It is impossible to say simply for the fun and exercise: as soon as the question of prestige arises, as soon as you feel that you and some larger unit will be disgraced if you lose, the most savage combative instincts are around.
98.没有可能仅仅为了娱乐或锻炼而运动:一旦有了问题,一旦你觉得你输了你和你所属团体会有失体面时,你最野蛮的好斗本能就会被激发出来。
99. It has been found that certain bats emit squeaks and by receiving the echoes, they can locate and steer clear of obstacles------or locate flying insects on which they feed. This echo-location in bats is often compared with radar, the principle of which is similar.
99.人们已经发现,某些蝙蝠发出尖叫声并靠接受回响来锁定和避免障碍物——或者找到它们赖以为生的昆虫。蝙蝠这种回响定位法常拿来和原理与之很相近似的雷达相比。
100. As the time and cost of making a clip drop to a few days and a few hundred dollars, engineers may soon be free to let their imaginations soar without being penalized by expensive failure.
100.随着芯片制造时间和费用降低到了几天和几百美元,工程师们可能很快可以任他们的想象驰骋而不会被昂贵的失败所惩罚。
Wednesday, July 29, 2009
mq经验总结
转自 : http://www.betalog.cn/post/247.html
mq经验总结
首先了解什么是mq?mq的作用是什么?
mq是通讯中间件。他的作用是省去开发人员开发通讯工具的时间,节省开发成本,提高开发效率。
mq的使用,如何安装mq?
根据以往的经验,win版的mq比较容易安装,傻瓜式,一路next就可以。
aix版本的用smitty安装。
linux版本用rpm -ivh 安装
mq中一些名称的概念:
队列管理器:简单的说就是一个大容器的管理员,这个大容器里放了很多东西。
队列:大容器里的东西,存放消息的盒子。
通道:大容器和大容器之间,程序和容器之间进行通讯的途径。
mq是如何实现通讯的?
mq的通讯方式有两种,通俗的说就是mq之间进行通讯,开发的程序和mq之间的通讯。
mq之间进行通讯:通过发送接收通道建立tcp连接进行消息传输,称为server对server
开发的程序和mq之间的通讯:通过服务器连接通道进行传输,client对server
如何配置两台mq使之相互进行通讯?
首先要规划好两个队列管理器之间使用的ip和端口,假设我们使用
ip 端口
192.168.0.1 1414
192.168.0.2 1415
第一步 建立队列管理器
crtmqm -lc -lf 100 -lp 3 -ls 3 QM1
解释下:
-lc 是采用循环日志
-lf 是每块日志的大小,4k为单位的,100就是100*4k
-lp 是主逻辑日志的数量
-ls 是辅逻辑日志的数量
QM1 是队列管理器名称
第二步 启动队列管理器
strmqm QM1
第三步 定义队列管理器中的队列和通道等
先运行runmqsc QM1首先要保证运行该命令的用户属于mqm组
运行完后进入mq命令窗口
定义本地队列 def ql(QL1)
先解释什么是本地队列,然后解释命令的含义(以下同)
本地队列是存储信息的盒子,用户可以从本地队列里取消息,对方发送消息的目的地也是本地
队列。
def是 define的缩写,mq支持一些命令的缩写。
ql是queue local的缩写,表示本地队列,括号内是本地队列名
定义远程队列 def qr(QR1) rname(QL2) rqname(QM2) xmitq(QT1)
远程队列是相对于本地队列的,当用户希望往另一个队列管理器发消息的时候,配置好远程队
列,用户直接放消息到该队列就可以,mq会传输到另一方的本地队列中。
以上面的例子说明,当我们把消息放入该远程队列后,消息会传输到QM2队列管理器中的QL2队
列中。
qr queue remote的缩写
rname 指定的远程队列管理器上的队列名
rqname 远程队列管理器
xmitq 所要用的传输队列
定义传输队列 def ql(QT1) usage(xmitq) trigger trigtype(first) initq
(system.channel.initq) trigdata(QM1.QM2)
传输队列是传输的介质,消息是通过传输队列进行传输的。
usage 用途xmitq是传输队列
trigger 消息触发开关
trigtype 触发类型第一条消息触发
initq 初始队列
trigdata 触发数据
定义发送通道 def chl(QM1.QM2) chltype(sdr) conname('192.168.0.2(1415)') trptype
(tcp) xmitq(QT1)
发送通道就相当于建立一个tcp的连接
chl channel的缩写
chltype 通道类型sdr是发送通道
conname 连接名包括对方的ip和端口
trptype 通讯类型tcp通讯
xmitq 使用的传输队列
定义接受通道 def chl(QM2.QM1)
接收通道是被动的,只定义名字就可以。大家注意,接收通道的名字一定要和发送通道名一致
,他们是靠名字来匹配。
第四步 配置监听器
是对方mq管理器来探测,本地要给对方一个回应,监听器就是起这个作用的。
如果是5.3版本 只能在命令行里运行 runmqlsr -m QM1 -t tcp -p 1414
如果是6.0版本 可以runmqsc QM1里运行 def listener(LSR.QM1) trptype(tcp) port(1414)
control(qmgr)
解释下 trptype 监听类型
port 监听端口
control 监听控制,如果是qmgr则在队列管理器启动的时候监听也自动启动。
第五步 配置另外一个队列管理器
简单的说一下,和上面的差不多,只不过名字不一样。大家自己尝试下:)
写的手累了,下次补充!
继续
上面我们说完了如何建队列管理器,接下来我们说说建完以后如何测试两边是不是正常传输,
我们可以用命令行方式向远程队列中放入测试消息,以aix为例,
用/usr/mqm/samp/bin/amqsput命令就可以放入消息,格式为:
amqsput QR1 QM1
解释下:QR1是你要放入的队列名,QM1是你要放入的队列管理器名。
输入以上命令后就可以写入消息了,一下回车就是发送一条消息,两次回车就是退出。
用/usr/mqm/samp/bin/amqsget命令就可以取消息,格式为
amqsget QL2 QM2
解释下:QL1是你要取消息的队列名,QM2是你要取消息的队列管理器名。
输入完命令后就会显示所有消息。
不过要注意一点,命令行方式的输入和取消息有字节限制。
如果只是简单的浏览一下消息可以使用
/usr/mqm/samp/bin/amqsbcg命令
格式和取消息一样,但是该命令不会把消息取出来,运行完该命令后消息还是保存在队列中。
正常情况下消息的传输流程(只说正常的,排错一会再说)
QR1 -> QT1 -> QL2
消息被放入到远程队列中,远程队列通过传输队列传输,最后传输到QM2中的本地队列。
出现问题,我们怎么办?
1 不能放入消息。
一般这种情况应该大部分是远程队列中的传输队列那个参数配置的不正确。
还有可能是队列的允许放入这个参数设置成了禁止。基本上就这两种情况。
2 发送通道和接收通道的状态不是running
首先说明,如果长时间没有消息传输,通道的状态会变成不活动状态,这是正常现象。
如果你手动启动通道后,通道状态还不是running,那先查看错误日志(两边的队列管理器都要查看)
/var/mqm/qmgrs/QM1/errors中的错误日志,通常编号01的日志是最新日志。
常见情况是网络不通导致的通道不通!所以首先要保证网络是正常的,我们可以同过telnet对方的IP加监听端口的方法来查看是不是正常。
telnet 192.168.0.2 1415
再有的情况是两边的配置属性有问题,如两边发送和接收通道名不一致,发送通道的连接名配置错误,发送通道中的传输队列配置错误。
我们也可以执行mq中的一个命令来查看通道是不是正常
runmqsc QM1
ping chl(QM1.QM2)
ping操作来查看两边的通道是不是正常,如果正常会返回ping完成。
3 放入的消息没有到QM2的队列中
注意:消息一定要放入远程队列中,如果放入传输队列中消息会被放入死信队列中。(上面忘记定义死信队列了,晕)
再有看看远程队列中的属性是不是配置错误,如rname,rqname,xmitq等属性。
也有可能是发送接收队列的消息序列号不一致。如果不一致做一下reset操作。
还有可能是上一批消息没有提交。可以做一个resolve操作。
也是要先看错误日志
4 消息到达QM2队列QL2中,但是取不出来
QL2的允许取出属性是不是被禁止了。
这样再查看以下QM2到QM1的传输是不是正常。都正常就OK了。
消息中间件及WebSphere MQ入门
转自 : http://download.zdnet.com.cn/software_zone/2007/1005/536602.shtml
消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。
消息中间件概述
消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。
在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的。
设计分布式应用的方法主要有:远程过程调用(PRC)--分布式计算环境(DCE)的基础标准成分之一;对象事务监控(OTM)--基于CORBA的面向对象工业标准与事务处理(TP)监控技术的组合;消息队列(MessageQueue)--构造分布式应用的松耦合方法。
(a) 分布计算环境/远程过程调用 (DCE/RPC)
RPC是DCE的成分,是一个由开放软件基金会(OSF)发布的应用集成的软件标准。RPC模仿一个程序用函数引用来引用另一程序的传统程序设计方法,此引用是过程调用的形式,一旦被调用,程序的控制则转向被调用程序。
在RPC实现时,被调用过程可在本地或远地的另一系统中驻留并在执行。当被调用程序完成处理输入数据,结果放在过程调用的返回变量中返回到调用程序。RPC完成后程序控制则立即返回到调用程序。因此RPC模仿子程序的调用/返回结构,它仅提供了Client(调用程序)和Server(被调用过程)间的同步数据交换。
(b) 对象事务监控 (OTM)
基于CORBA的面向对象工业标准与事务处理(TP)监控技术的组合,在CORBA规范中定义了:使用面向对象技术和方法的体系结构;公共的Client/Server程序设计接口;多平台间传输和翻译数据的指导方针;开发分布式应用接口的语言(IDL)等,并为构造分布的Client/Server应用提供了广泛及一致的模式。
(c) 消息队列 (Message Queue)
消息队列为构造以同步或异步方式实现的分布式应用提供了松耦合方法。消息队列的API调用被嵌入到新的或现存的应用中,通过消息发送到内存或基于磁盘的队列或从它读出而提供信息交换。消息队列可用在应用中以执行多种功能,比如要求服务、交换信息或异步处理等。
中间件是一种独立的系统软件或服务程序,分布式应用系统借助这种软件在不同的技术之间共享资源,管理计算资源和网络通讯。它在计算机系统中是一个关键软件,它能实现应用的互连和互操作性,能保证系统的安全、可靠、高效的运行。中间件位于用户应用和操作系统及网络软件之间,它为应用提供了公用的通信手段,并且独立于网络和操作系统。中间件为开发者提供了公用于所有环境的应用程序接口,当应用程序中嵌入其函数调用,它便可利用其运行的特定操作系统和网络环境的功能,为应用执行通信功能。
如果没有消息中间件完成信息交换,应用开发者为了传输数据,必须要学会如何用网络和操作系统软件的功能,编写相应的应用程序来发送和接收信息,且交换信息没有标准方法,每个应用必须进行特定的编程从而和多平台、不同环境下的一个或多个应用通信。例如,为了实现网络上不同主机系统间的通信,将要求具备在网络上如何交换信息的知识(比如用TCP/IP的socket程序设计);为了实现同一主机内不同进程之间的通讯,将要求具备操作系统的消息队列或命名管道(Pipes)等知识。
目前中间件的种类很多,如交易管理中间件(如IBM的CICS)、面向Java应用的Web应用服务器中间件(如IBM的Websphere Application Server)等,而消息传输中间件(MOM) 是其中的一种。它简化了应用之间数据的传输,屏蔽底层异构操作系统和网络平台,提供一致的通讯标准和应用开发,确保分布式计算网络环境下可靠的、跨平台的信息传输和数据交换。它基于消息队列的存储-转发机制,并提供特有的异步传输机制,能够基于消息传输和异步事务处理实现应用整合与数据交换。
IBM 消息中间件MQ以其独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性和跨平台性,以及强大的事务处理能力和消息通讯能力,成为业界市场占有率最高的消息中间件产品。
MQ具有强大的跨平台性,它支持的平台数多达35种。它支持各种主流Unix操作系统平台,如:HP-UX、AIX、SUN Solaris、Digital UNIX、Open VMX、SUNOS、NCR UNIX;支持各种主机平台,如:OS/390、MVS/ESA、VSE/ESA;同样支持Windows NT服务器。在PC平台上支持Windows9X/Windows NT/Windows 2000和UNIX (UnixWare、Solaris)以及主要的Linux版本(Redhat、TurboLinux等)。此外,MQ还支持其他各种操作系统平台,如:OS/2、AS/400、Sequent DYNIX、SCO OpenServer、SCO UnixWare、Tandem等。
MQ的基本概念:
1) 队列管理器
队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务。
2) 消息
在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并对消息进行广义的理解,比如:用户的各种类型的数据文件,某个应用向其它应用发出的处理请求等都可以作为消息。消息有两部分组成:
消息描述符(Message Discription或Message Header),描述消息的特征,如:消息的优先级、生命周期、消息Id等;
消息体(Message Body),即用户数据部分。在MQ中,消息分为两种类型,非永久性(non-persistent)消息和永久性(persistent)消息,非永久性消息是存储在内存中的,它是为了提高性能而设计的,当系统掉电或MQ队列管理器重新启动时,将不可恢复。当用户对消息的可靠性要求不高,而侧重系统的性能表现时,可以采用该种类型的消息,如:当发布股票信息时,由于股票信息是不断更新的,我们可能每若干秒就会发布一次,新的消息会不断覆盖旧的消息。永久性消息是存储在硬盘上,并且纪录数据日志的,它具有高可靠性,在网络和系统发生故障等情况下都能确保消息不丢、不重。
此外,在MQ中,还有逻辑消息和物理消息的概念。利用逻辑消息和物理消息,我们可以将大消息进行分段处理,也可以将若干个本身完整的消息在应用逻辑上归为一组进行处理。
3) 队列
队列是消息的安全存放地,队列存储消息直到它被应用程序处理。
消息队列以下述方式工作:
a) 程序A形成对消息队列系统的调用,此调用告知消息队列系统,消息准备好了投向程序B;
b) 消息队列系统发送此消息到程序B驻留处的系统,并将它放到程序B的队列中;
c) 适当时间后,程序B从它的队列中读此消息,并处理此信息。
由于采用了先进的程序设计思想以及内部工作机制,MQ能够在各种网络条件下保证消息的可靠传递,可以克服网络线路质量差或不稳定的现状,在传输过程中,如果通信线路出现故障或远端的主机发生故障,本地的应用程序都不会受到影响,可以继续发送数据,而无需等待网络故障恢复或远端主机正常后再重新运行。
在MQ中,队列分为很多种类型,其中包括:本地队列、远程队列、模板队列、动态队列、别名队列等。
本地队列又分为普通本地队列和传输队列,普通本地队列是应用程序通过API对其进行读写操作的队列;传输队列可以理解为存储-转发队列,比如:我们将某个消息交给MQ系统发送到远程主机,而此时网络发生故障,MQ将把消息放在传输队列中暂存,当网络恢复时,再发往远端目的地。
远程队列是目的队列在本地的定义,它类似一个地址指针,指向远程主机上的某个目的队列,它仅仅是个定义,不真正占用磁盘存储空间。
模板队列和动态队列是MQ的一个特色,它的一个典型用途是用作系统的可扩展性考虑。我们可以创建一个模板队列,当今后需要新增队列时,每打开一个模板队列,MQ便会自动生成一个动态队列,我们还可以指定该动态队列为临时队列或者是永久队列,若为临时队列我们可以在关闭它的同时将它删除,相反,若为永久队列,我们可以将它永久保留,为我所用。
4) 通道
通道是MQ系统中队列管理器之间传递消息的管道,它是建立在物理的网络连接之上的一个逻辑概念,也是MQ产品的精华。
在MQ中,主要有三大类通道类型,即消息通道,MQI通道和Cluster通道。消息通道是用于在MQ的服务器和服务器之间传输消息的,需要强调指出的是,该通道是单向的,它又有发送(sender), 接收(receive), 请求者(requestor), 服务者(server)等不同类型,供用户在不同情况下使用。MQI通道是MQ Client和MQ Server之间通讯和传输消息用的,与消息通道不同,它的传输是双向的。群集(Cluster)通道是位于同一个MQ 群集内部的队列管理器之间通讯使用的。
MQ的工作原理
如图所示:
首先来看本地通讯的情况,应用程序A和应用程序B运行于同一系统A,它们之间可以借助消息队列技术进行彼此的通讯:应用程序A向队列1发送一条信息,而当应用程序B需要时就可以得到该信息。
其次是远程通讯的情况,如果信息传输的目标改为在系统B上的应用程序C,这种变化不会对应用程序A产生影响,应用程序A向队列2发送一条信息,系统A的MQ发现Q2所指向的目的队列实际上位于系统B,它将信息放到本地的一个特殊队列-传输队列(Transmission Queue)。我们建立一条从系统A到系统B的消息通道,消息通道代理将从传输队列中读取消息,并传递这条信息到系统B,然后等待确认。只有MQ接到系统 B成功收到信息的确认之后,它才从传输队列中真正将该信息删除。如果通讯线路不通,或系统B不在运行,信息会留在传输队列中,直到被成功地传送到目的地。这是MQ最基本而最重要的技术--确保信息传输,并且是一次且仅一次(once-and-only-once)的传递。
MQ提供了用于应用集成的松耦合的连接方法,因为共享信息的应用不需要知道彼此物理位置(网络地址);不需要知道彼此间怎样建立通信;不需要同时处于运行状态;不需要在同样的操作系统或网络环境下运行。
MQ的基本配置举例
在上图中,要实现网络上两台主机上的通讯,若采用点对点的通讯方式,我们至少要建立如下MQ的对象:
在发送方A:
1) 建立队列管理器QMA: crtmqm -q QMA
2) 定义本地传输队列: define qlocal (QMB) usage (xmitq) defpsist(yes)
3) 创建远程队列: define qremote (QR.TOB) rname (LQB) rqmname (QMB) xmitq (QMB)
4) 定义发送通道: define channel (A.TO.B) chltype (sdr) conname ('IP of B') xmitq (QMB) + trptype (tcp)
在接收方B:
1) 建立队列管理器QMB: crtmqm -q QMB
2) 定义本地队列QLB: define qlocal (LQB)
3) 创建接收通道: define channel (A.TO.B) chltype (rcvr) trptype (tcp)
经过上述配置,我们就可以实现从主机A到B的单向通讯,若要实现二者之间的双向通讯,可参考此例创建所需要的MQ对象。
MQ的通讯模式
1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。
2) 多点广播:MQ适用于不同类型的应用。其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点(Destination List)。可以使用一条MQ指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息。MQ不仅提供了多点广播的功能,而且还拥有智能消息分发功能,在将一条消息发送到同一系统上的多个用户时,MQ将消息的一个复制版本和该系统上接收者的名单发送到目标MQ系统。目标MQ系统在本地复制这些消息,并将它们发送到名单上的队列,从而尽可能减少网络的传输量。
3) 发布/订阅(Publish/Subscribe)模式:发布/订阅功能使消息的分发可以突破目的队列地理指向的限制,使消息按照特定的主题甚至内容进行分发,用户或应用程序可以根据主题或内容接收到所需要的消息。发布/订阅功能使得发送者和接收者之间的耦合关系变得更为松散,发送者不必关心接收者的目的地址,而接收者也不必关心消息的发送地址,而只是根据消息的主题进行消息的收发。在MQ家族产品中,MQ Event Broker是专门用于使用发布/订阅技术进行数据通讯的产品,它支持基于队列和直接基于TCP/IP两种方式的发布和订阅。
4) 群集(Cluster):为了简化点对点通讯模式中的系统配置,MQ提供Cluster(群集)的解决方案。群集类似于一个域(Domain),群集内部的队列管理器之间通讯时,不需要两两之间建立消息通道,而是采用群集(Cluster)通道与其它成员通讯,从而大大简化了系统配置。此外,群集中的队列管理器之间能够自动进行负载均衡,当某一队列管理器出现故障时,其它队列管理器可以接管它的工作,从而大大提高系统的高可靠性。
MQ Server和MQ Client
MQ产品分为Server和Client 两种版本,在MQ服务器的运行环境下,有队列管理器、队列、消息通道等对象,它提供全面的消息服务;MQ Client为我们提供了一个MQ应用程序的开发和运行环境,它是MQ API的Client实现。在客户端环境下,没有队列管理器、队列等对象,它通过MQI通道与服务器之间建立通讯,并将消息从客户端发往服务器端的队列,或从Server端的队列中取得消息,它比较适合于网络条件较好或实时通讯的情况。同时要指出的是:采用MQ Client并不会导致数据的丢失或不完整性。MQ Client提供下列好处:适合同步处理的工作模式;减少系统负担;减少系统管理开销;减少磁盘空间要求等。
MQ的API
MQ支持多种编程语言,其中包括:C、C++、Java、VisualBasic、COBOL、PL/1、RPG等,同时也支持多种流行的开发工具,如:Websphere Studio Application Developer, PowerBuiler、Microsoft Visual C++、Visual Basic、Delphi等。并且,MQ在不同平台上提供统一的编程接口,仅需重新编译就可完成不同平台间程序的移植。MQ的API接口十分简单易学,用户仅需利用MQ的13个常用而又功能强大的函数调用,便可以以最快的速度,写出各种复杂的应用程序。用户可以将主要精力集中于应用业务逻辑的实现,而不是底层通讯、例外处理等方面。
以C语言为例,一个MQ应用的开发流程如下:
MQCONN() /*建立与队列管理器的连接*/
MQOPEN() /*打开要进行读写操作的队列*/
MQPUT() /*将消息放入队列*/
MQGET() /*从队列中读取消息*/
MQINQ() /*查询队列的属性*/
MQSET() /*设置队列的属性*/
MQCLOSE() /*在读写等操作进行完之后,将队列关闭*/
MQDISC() /*断开与队列管理器的连接,释放相关的资源*/
IBM MQSeries使用指南
转自 : http://download.zdnet.com.cn/software_zone/2007/1005/536606.shtml
随着计算机网络和分布式应用的不断发展,远程消息传递越来越成为应用系统中不可缺少的组成部分。商业消息中间件的出现保证了消息传输的可*性,高效率和安全性,同时也减少了系统的开发周期。目前应用最多的消息中间件产品为IBM MQSeries。本文就针对MQ的基本操作与配置进行详细的阐述,希望对读者有所帮助。
一.MQ基本操作
MQ中有几个很重要的组件:队列管理器(QueueManager)、队列(Queue)和通道(Channel)。其基本的操作方法如下:
创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器
删除队列管理器
dltmqm QmgrName
启动队列管理器
strmqm QmgrName
如果是启动默认的队列管理器,可以不带其名字
停止队列管理器
endmqm QmgrName 受控停止
endmqm –i QmgrName 立即停止
endmqm –p QmgrName 强制停止
显示队列管理器
dspmq –m QmgrName
运行MQSeries命令
runmqsc QmgrName
如果是默认队列管理器,可以不带其名字
往队列中放消息
amqsput QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
从队列中取出消息
amqsget QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
启动通道
runmqchl –c ChlName –m QmgrName
启动侦听
runmqlsr –t TYPE –p PORT –m QMgrName
停止侦听
endmqlsr -m QmgrName
MQSeries命令
定义死信队列
DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE
设定队列管理器的死信队列
ALTER QMGR DEADQ(QNAME)
定义本地队列
DEFINE QL(QNAME) REPLACE
定义别名队列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)
远程队列定义
DEFINE QREMOTE(QRNAME) +
RNAME(AAA) RQMNAME(QMGRNAME) +
XMITQ(QTNAME)
定义模型队列
DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)
定义本地传输队列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +
INITQ(SYSTEM.CHANNEL.INITQ)+
PROCESS(PROCESSNAME) REPLACE
创建进程定义
DEFINE PROCESS(PRONAME) +
DESCR(‘STRING’)+
APPLTYPE(WINDOWSNT)+
APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)
其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等
创建发送方通道
DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR)+
CONNAME(‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE
其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。
创建接收方通道
DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE
创建服务器连接通道
DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE
显示队列的所有属性
DISPLAY QUEUE(QNAME) [ALL]
显示队列的所选属性
DISPLAY QUEUE(QNAME) DESCR GET PUT
DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH
显示队列管理器的所有属性
DISPLAY QMGR [ALL]
显示进程定义
DISPLAY PROCESS(PRONAME)
更改属性
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
ALTER QLOCAL(QNAME) PUT(DISABLED)
ALTER QALIAS(QNAME) TARGQ(TARGQNAME)
删除队列
DELETE QLOCAL(QNAME)
DELETE QREMOTE(QRNAME)
清除队列中的所有消息
CLEAR QLOCAL(QNAME)
二.配置一个能够通信的远程连接
以上讲述了MQ的基本命令操作,但只知道这些是没有实际意义的。MQ的最终目的是实现远程通信,所以下面就以一个具体的例子来说明如何实现远程连接。这个例子的目的是建立可以实现消息传递的一对MQ服务器,它们分别基于NT和UNIX平台。
首先在NT端建一队列管理器
crtmqm –q QM_NT
启动队列管理器
strmqm QM_NT
运行MQ控制台命令
runmqsc QM_NT
创建死信队列
DEFINE QL(NT.DEADQ) DEFPSIST(YES) REPLACE
更改队列管理器属性,设置其死信队列
ALTER QMGR DEADQ(NT.DEADQ)
创建进程定义
DEFINE PROCESS(P_NT)+
APPLTYPE(WINDOWSNT)+
APPLICID(’ runmqchl -c SDR_NT -m QM_NT’)
创建本地传输队列
DEFINE QL(QT_NT) USAGE(XMITQ) DEFPSIST(YES) +
INITQ(SYSTEM.CHANNEL.INITQ)+
PROCESS(P_NT) REPLACE
创建远程队列定义,对应于UNIX机器上的本地队列Q_UNIX,传输队列为QT_NT
DEFINE QREMOTE(QR_NT)+
RNAME(Q_UNIX) RQMNAME(QM_UNIX)+
XMITQ(QT_NT)
创建发送方通道,其传输队列为QT_NT,远程主机地址为10.10.10.2,侦听端口为1414
DEFINE CHANNEL(SDR_NT) CHLTYPE(SDR)+
CONNAME(‘10.10.10.2(1414)’) XMITQ(QT_NT) REPLACE
创建服务器连接通道
DEFINE CHANNEL(S_NT) CHLTYPE(SVRCONN) REPLACE
在UNIX端创建队列管理器
crtmqm –q QM_UNIX
启动队列管理器
strmqm QM_UNIX
添加侦听程序
修改/etc/services文件,加入一行:
MQSeries 1414/tcp #MQSeries channel listener
修改/etc/inetd.conf文件,加入一行(启动侦听程序)
MQSeries stream tcp nowait mqm /usr/lpp/mqm/bin/amqcrsta amqcrsta –m QM_UNIX
运行以下命令,以使修改起作用
refresh –s inetd
运行MQ控制台命令
runmqsc QM_UNIX
创建死信队列
DEFINE QL(UNIX.DEADQ) DEFPSIST(YES) REPLACE
更改队列管理器属性,设置其死信队列
ALTER QMGR DEADQ(UNIX.DEADQ)
创建接收方通道,其名字必须与远程发送方相同
DEFINE CHANNEL(SDR_NT) CHLTYPE(RCVR) REPLACE
创建本地队列
DEFINE QL(Q_UNIX) DEFPSIST(YES) REPLACE
创建服务器连接通道
DEFINE CHANNEL(S_UNIX) CHLTYPE(SVRCONN) REPLACE
经过以上操作之后,远程连接的配置工作完成。接下来需要验证配置是否正确。
在NT端启动发送方通道
runmqchl –c SDR_NT –m QM_NT 或 start chl(SDR_NT)
从NT端发送消息到UNIX端
amqsput QR_NT QM_NT
在UNIX端接收消息
/usr/mqm/samp/bin/amqsget Q_UNIX QM_UNIX
若能收到消息,说明配置成功。
三.配置JNDI
用JMS实现消息的发送和接收时,经常会用到JNDI。因为JNDI这种方式比较灵活,对于编程也比较简单。
在安装了MQSeries Client for Java之后,在javabin目录下找到JMSAdmin.config文件。该文件主要用来说明Context的存储方式及存储地址,对应于文件中的两个参数INITIAL_CONTEXT_FACTORY和PROVIDER_URL。典型的JMSAdmin.config文件内容如下:
#INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactory
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
#INITIAL_CONTEXT_FACTORY=com.IBM.ejs.ns.jndi.CNInitialContextFactory
#
#PROVIDER_URL=ldap://polaris/o=IBM,c=us
PROVIDER_URL=file:/d:/temp
#PROVIDER_URL=iiop://localhost/
#
SECURITY_AUTHENTICATION=none
INITIAL_CONTEXT_FACTORY 表示JMSAdmin Tool使用的服务提供商。当前有三种受支持的值。com.sun.jndi.ldap.LdapCtxFactory用于LDAP,如果使用它就必须安装一个LDAP服务器。com.sun.jndi.fscontext.RefFSContextFactory用于文件系统上下文,它只需要使用者提供存放上下文的文件路径。com.IBM.ejs.ns.jndi.CNInitialContextFactory是专门为websphere提供的,它需要和websphere的CosNaming资源库一起使用。
PROVIDER_URL表示会话初始上下文的URL,由JMSAdmin tool实现的所有JNDI操作的根。它和INITIAL_CONTEXT_FACTORY一一对应。
ldap://hostname/contextname 用于LDAP
file:[drive:]/pathname 用于文件系统上下文
iiop://hostname[:port]/[?TargetContext=ctx] 用于访问websphere CosNaming名称空间
最后还有一个参数SECURITY_AUTHENTICATION,用于说明JNDI是否把安全性凭证传递给了您使用的服务供应商。只有当使用了LDAP服务供应商时,才使用此参数。此参数有三个值,none(匿名认证)、simple(简单认证)和CRAM-MD5认证机制。如果没有提供有效值,缺省值为none。
确认配置文件之后,可以在javabin目录下启动JMSAdmin控制台。也可以在任何目录下用下面的命令来启动控制台:
JMSAdmin –cfg MQ_JAVA_INSTALL_PATHjavabinJMSAdmin.config
其中MQ_JAVA_INSTALL_PATH为MQSeries Client for Java安装的根目录。
若启动失败,则好好检查一下您的环境变量是否设置正确。根据我个人的经验,除了把com.IBM.mq.jar和com.IBM.mqjms.jar加入到环境变量外,还要把fscontext.jar和providerutil.jar加入到环境变量。
进入JMSAdmin控制台后,您可以自由定义sub context。对于子上下文的操作,主要有一下命令:
display ctx
define ctx(ctxname)
change ctx(ctxname)
change ctx(=up)
change ctx(=init)
delete ctx(ctxname)
当然,在这里的主要任务并非是用来定义sub context,而是用来定义以下几个对象:
MQQueueConnectionFactory
MQTopicConnectionFactory
MQQueue
MQTopic
(还有其它的一些对象,如MQXAQueueConnectionFactory等,不常用到,在此不作说明。)
可以使用很多动词来操纵目录名称空间中的受管理对象。ALTER、DEFINE、DISPLAY、DELETE、COPY和MOVE,它们的用法都算比较简单,这里只列举一二以作说明。
例一:定义一QueueConnectionFactory,连接主机10.10.10.18,端口1414
DEFINE QCF(EXAMPLEQCF)+
DESC(Example Queue Connection Factory)+
TRAN(CLIENT)+
HOST(10.10.10.1+
QMGR(QM_EXAMPLE)+
CHAN(S_EXAMPLE)+
PORT(1414)+
CCSID(1381)
例二:定义一Queue,其对应于MQ中的Q_EXAMPLE
DEFINE Q(EXAMPLEQL)+
DESC(Local queue)+
QMGR(QM_EXAMPLE)+
QUEUE(Q_EXAMPLE)+
CCSID(1381)
四.用JMS实现MQ编程
上面我们说明了怎样用JMSAdmin Tool定义MQ对象的上下文。我们的最终目的是要用JMS来实现MQ编程,以实现在程序中对MQ队列进行收、发消息。所以,下面我们将重点讨论一下MQ的JMS实现。
如果您对JMS编程很熟悉,那么您也就会用JMS来实现MQ编程,因为用JMS来编写MQ程序与编写一般的JMS程序没有太大的差别。举个例子,当我们想发送一条消息到MQ的队列中,再从该队列中取回消息时,我们编程时主要有四个步骤。首先我们要初始化在程序中要用到的对象,然后才可以发送消息到队列中去,再就是收取消息了,最后要清除那些永久对象。这些都和普通的JMS程序相当。程序的源代码如下:
代码:
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
import javax.naming.directory.*;
public class sample {
protected QueueConnectionFactory factory=null;
protected QueueConnection connection;
protected QueueSession queueSession;
protected TextMessage outMessage;
protected QueueSender queueSender;
protected QueueReceiver queueReceiver;
public static final String qcfLookup="EXAMPLEQCF";
public static final String qLookup="EXAMPLEQL";
public static final String icf = "com.sun.jndi.fscontext.RefFSContextFactory";
public String url ="file:/d:/temp";
public void sampleInit() throws Exception {
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);
environment.put(Context.PROVIDER_URL, url);
environment.put(Context.REFERRAL, "throw");
Context ctx=new InitialDirContext(environment);
factory = (QueueConnectionFactory)ctx.lookup(qcfLookup);
Queue q1=null;
q1=(Queue)ctx.lookup(qLookup);
connection = factory.createQueueConnection();
queueSession = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queueSender = queueSession.createSender(q1);
queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
outMessage = queueSession.createTextMessage();
queueReceiver = queueSession.createReceiver(q1);
connection.start();
}
public void sendMessageOut(String message) throws JMSException {
outMessage.setText(message);
queueSender.send(outMessage);
}
public String receiveMessage() throws Exception{
return ((TextMessage)queueReceiver.receive()).getText();
}
public void sampleClose() throws JMSException {
queueSession.close();
connection.close();
}
public static void main(String[] args){
String rec;
sample sp = new sample();
try {
sp.sampleInit();
sp.sendMessageOut("Hello World!");
java.lang.Thread.sleep(4000);
rec=sp.receiveMessage();
System.out.println("Receive text is : "+rec);
sp.sampleClose();
}catch(Exception e) {
e.printStackTrace();
}
}
}
五.远程管理
MQ在WINDOWS平台下具有图形化管理界面,但在UNIX平台下却只能通过命令行来进行操作。这样就给使用者带来很大的不便。我们都希望能通过图形界面来进行管理配置。为了实现我们的想法,我们就必须建立远程管理。
实现远程管理有以下几个步骤:
1.被管理队列管理器上的命令队列SYSTEM.ADMIN.COMMAND.QUEUE存在并可用。对于MQ 2版本应执行 amqscoma.tst 脚本来创建。
2.使用strmqcsv命令来启动被管理队列管理器上的命令服务器。
3.确定被管理队列管理器上的服务器连接通道SYSTEM.ADMIN.SVRCONN是否存在,如果不存在则创建它。
4.一般Unix、Linux平台中MQ默认的字符集为819,而Windows平台为1381,所以你必须改变其字符集,使两边的字符集相同。一般改被管理的字符集。
5.如果被管理队列管理器上的操作用户与管理队列管理器上的操作用户不同,那么你首先要确认管理队列管理器上的操作用户在被管理队列管理器上存在并且有管理 MQ的权限,再者,你需要修改服务器连接通道SYSTEM.ADMIN.SVRCONN的MCAUSER属性为管理队列管理器上的操作用户。
6.启动被管理队列管理器上的侦听器。
做完这些工作之后,直接在管理队列管理器的MQ管理工具中显示被管理队列管理器即可。然后你就可以象操作本地队列管理器一样,在被管理队列管理器上定义你需要的MQ对象。
六.通道维护
在配置远程连接的时候,我们曾经创建过进程定义。那我们为什么要去创建进程定义呢?这就涉及MQ通道维护的概念。
通道长时间没有消息触发就会自动断开连接,不再保持运行状态。时间的长短可以由自己设定,默认值为6000秒。消息请求再次来临的时候,就必须再次启动通道。有些通道,如服务器连接通道、接收方通道等是自动触发启动的。当消息请求发送到通道后,通道立即启动,进入运行状态。但也有一些通道不会自动启动,最典型的就是发送方通道。当有消息请求需要使用通道进行消息传递的时候,发送方通道也不会自动启动并把消息发送到远程队列,而是把消息留在了与其相关联的传输队列中。
但是,在实际应用中我们又不可能每过一段时间去启动一次通道,或当有消息来再去启动通道。那应该怎么办?首先我们创建一个进程定义,这个进程定义的目的就是用来启动发送方通道。然后我们在传输队列的进程名称属性栏指定刚才定义的进程定义名称,再把触发器控制开关打开。这样,当有消息进入传输队列后,传输队列的触发器会启动触发执行指定的进程,从而启动发送方通道,把消息传输到远程队列中去。
七.总结
也许你会说你已经理解了MQ,包括基本概念、配置、管理以及程序的编写,那么恭喜你。我也希望如此。不过MQ也许并非如此简单,因本人水平有限,也只能到此为止,希望大家再接再厉。顺便说一句,如果有什么好想法,千万别忘了告诉我一声。
Monday, July 27, 2009
Friday, July 24, 2009
MQ --- IBM developer works
Linux 上的 WebSphere MQ 开发快速入门 : http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0705_salkosuo/0705_salkosuo.html
快速启动 Linux 应用: 安装和使用 IBM WebSphere MQ for Linux : http://www.ibm.com/developerworks/cn/linux/linux-speed-start/l-ss-mq/
Thursday, July 16, 2009
圈复杂度(Cyclomatic Complexity)
一种代码复杂度的衡量标准,中文名称叫做圈复杂度。 在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度 大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。
控制流图是McCabe复杂度计算的基础,McCabe度量标准是将软件的流程图转化为有向图,然后以图论的知识和计算方法来衡量软件的质量。 McCabe复杂度包括圈复杂度(Cyclomatic complexity)、基本复杂度、模块涉及复杂度、设计复杂度和集成复杂度等。控制流程图分析是一个静态的分析过程,它提供静态的度量标准技术,一般主要运用在白盒测试的方法中。
控制流图的一个重要性质是它的可规约性(reducibility)。如果程序中不存在从循环外跳到循环内的goto语句,那么这个程序对应的控制流图是 可规约的(reducible),反之这个控制流图就是不可规约的(irreducible)。因此,模块符合结构化程序设计的准则是控制流图可规约的基 础。
程序环路复杂性也即为McCabe复杂性度量,它一般常用圈复杂度来描述,记录为V(G)。它用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表 现为独立路径的条数,即合理地预防错误所需测试的最少路径条数,圈复杂度大的程序,说明其代码可能质量低且难于测试和维护。经验表明,程序的可能存在的 Bug数和圈复杂度有着很大的相关性
圈复杂度的计算方法很简单,计算公式为:V(G)=e-n+2。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量。其实,圈复杂度的计算还有 更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数,对应的计算公式 为:V(G)=区域数=判定节点数+1。
对于多分支的CASE结构或IF-ELSEIF-ELSE结构,统计判定节点的个数时需要特别注意一点,要求必须统计全部实际的判定节点数,也即每个 ELSEIF语句,以及每个CASE语句,都应该算为一个判定节点。判定节点在模块的控制流图中很容易被识别出来,所以,针对程序的控制流图计算圈复杂度 V(G)时,最好还是采用第一个公式,也即V(G)=e-n+2;而针对模块的控制流图时,可以直接统计判定节点数,这样更为简单。
Wednesday, July 15, 2009
一道面试思考题
一道面试思考题
题目:
总共有3000只香蕉,有一只骆驼每一次只能带1000只香蕉,每1公里吃1只香蕉,没有香蕉吃它是不肯走的,A-B 点距离1000公里,如果这个骆驼要从A点到B点有什么办法可以让更多的香蕉剩下来?如何做到?如何最有效率的运最多的香蕉到B点?
已有的解答:
1、第一次带上1000根,走300公里后,放下400根,这样还剩300根,刚好能返回A点, 再带上1000根,再走到300公里处,放下400根....反复这样走三次, 这样300公里处能有1500根,然后重复上一种方法再走300公里,最后到终点后能生200根香蕉,当然'300'这个数可以设成未知数,列出方程,求出极值。
2、第一次的回头是必须的,但是如果还做第二次回头的话数量就减少啦,应该是第一次就走400公里,然后回头再装一次,第二次也是重复,每一次可以放下 200根香蕉,就是400根了。。然后第三次是不用回头的,装上1000根后走到400公里时还剩600根香蕉,就把原来剩下的400根给装上,刚好 1000根走完剩下的600公里,到了终点还剩400根,这样应该是最多的了。
3、尽量减少往返,在300米处放下400颗,往返3次,300米处此刻有1200颗,350米处放下500颗,往返两次,350米处有1000颗,一口气走到底,还剩350颗。
4、排除法,1000米设置一个回头点,是不可行的。1000米设置两个回头点A,B,也就是将1000米分成3段。设每段长度为从起点到A点X1,A点到B点X2,B点到终点X3,
X1+X2+X3=1000
在A点需要来回5次才能将3000的香蕉运到A点。那么A点有3000-5*X1的香蕉,
通过推理(细节省略),3000-5*X1小于等于2000,
这样到B点 3000-5*X1-3*X2,这个值小于等于1000,
终点剩下3000-5*X1-3*X2-X3,根据上面的判断,如果都取等于的话:
X1=200;X2=334
最终剩下532。
5、首先:0~200km 每往返2.5次,依次把所有的香蕉运动到下1公里,共消耗1000个,剩2000个,
其次:200~533km 每1km往返1.5次,依次把所有的香蕉运送到下1公里,共消耗999个,剩1001个,
最后:533~1000km,满载1000个香蕉去终点(留一个在533处),路上吃掉467个,还剩1000-467=533个。
6、分三个阶段,1、三次运2000个到200公里处;再用两次运1000个前进333公里;最后拿上1000个香蕉走完剩下的467公里,共节余533个。
7、第一次:带1000根香蕉走到250公里,留下500跟香蕉,返回吃完剩余的250根,走了500公里
第二次:再带1000根香蕉走到500公里处,留下250根香蕉,返回到250公里处从留在这里的500根中取250根,返回,走了1000公里
第三次,带上最后的1000根香蕉走到250公里处,带上这里的250根,继续走到500公里处再带上这里的250根,继续走剩余的500公里,最后剩余500根香蕉,走了1000公里
总计走了2500公里,剩余500根香蕉。
8、每次最多带1000根,所以2001到3000根之间需要跑5趟(加上两个回去的趟数),如果2000或以内的根数也跑5趟的话就不合算。2000及以内需要跑3趟,1000及以内需要跑1趟,所以第一次跑可以一口气跑200(3000-5*200=2000),如果跑的比200少也无所谓,多跑几次,一样的效果。第二次跑333(2000-3*333=1000)(多余的一根不要了)。第三次可以带上1000根只跑一趟。到终点可以剩下 1000-(1000-200-333)=533。
9、刚刚只考虑了来回走五遍,但没有考虑一次最多带1000根。就是说如果只有2000根,只要来回走3遍。
(1)带上1000根走到200公里处,放下600根,回到A点只剩0根;带上1000根走到200公里处,放下600根,回到A点只剩0根;再带上最后1000根走到200公里处,放下800根。在200公里处共有2000根。
(2)带上1000根从200公里处走到533公里处,放下334根,回到200公里处剩0根;带上最后1000根从200公里处走到533公里处,放下667根。现在在533公里处共有1001根,带上1000根,从533公里处走到B点,剩533根。
10、前面要尽量多带香蕉,后面到了只剩1000了就一直往前,这样消耗最少。前面多带时,设立回头点,其实是具体点不重要,只要不太大,每公里回一次和两公里回是基本一样的。就按每公里每公里的前进把香蕉多带,刚开始是每前进一公里把所有的都搬运要回头两次消耗5只香蕉,200公里后剩下2000,前进每公里只需要回头一次消耗3只,再前进333公里,就只剩下1001只(多了1只,我们应该在出发时就给骆驼),就再也不回头到最后,能搬运1000-533,就是467只。
11、我是这么想,先不管AB中间到底需要几个停留点才能得到最佳答案,最关键的一点是:
*********骆驼无论从哪个停留点出发,满载(或者越接近)跑到下一个停留点是效率最高的。而效率越高越能省下更多的香蕉*********
设, x = A至停留点1
1, 有3000根香蕉,就意味着在第一个停留点上骆驼必须跑三次(第三次不用返回)即,第停留点1的香蕉剩余值一定为:(1000-2x)*2 (1000-x)=3000-5x
2.1, 假设只有1个停留点,根据刚才说的,x=400的时候效率最高(因为在停留点1能剩下1000根),即在只有一个停留点的情况下,跑到终点可以剩下400根香蕉
假设有2个停留点, 并设y = 停留点1 至 停留点2
2.2, x=200效率最高,此时在停留点1能剩下2000根(即2000),这个时候问题就变成了2000根香蕉跑完800米。那在停留点2剩下的香蕉数就变成了:(1000-2y) (1000-y)=2000-3y
2.2.1, 按照从A点到停留点1的结论,y=333的时候效率最高,因为这个时候在停留点2剩下了1001根香蕉。(即带了1000根香蕉跑完467米,最终省下533根)
Tuesday, July 7, 2009
Monday, July 6, 2009
Top Ten Open Source PHP Apps
http://www.moon-blog.com/2009/07/top-ten-open-source-php-apps.html
Top Ten Open Source PHP Apps
Filed Under development | 55
Blog
Wordpress - is a state-of-the-art semantic personal publishing platform with a focus on aesthetics, web standards, and usability.
BBS
phpBB -is a high powered, fully scalable, and highly customizable open-source bulletin board package. phpBB has a user-friendly interface, simple and straightforward administration panel, and helpful FAQ. Based on the powerful PHP server language and your choice of MySQL, MS-SQL, PostgreSQL or Access/ODBC database servers, phpBB is the ideal free community solution for all web sites. Features include: Unlimited forums and posts; Multiple language interface; Private or public forums; Powerful search utility; Private messaging system; Templates.
CMS
Drupal - an open source content management platform. Equipped with a powerful blend of features, Drupal supports a variety of websites ranging from personal weblogs to large community-driven websites.
Wikis
MediaWiki - is a free software wiki package originally written for Wikipedia. It allows collaborative editing on documents within a familiar interface. It was designed to be run on a large server farm and requires Apache, PHP, and MySQL.
Database Tools
phpMyAdmin - handles the administration of MySQL over the Web. phpMyAdmin performs many database administration tasks like running SQL statements, adding and dropping databases, and adding, editing or deleting tables or fields.
Photo Tools
Gallery - is an open source project with the goal to develop and support leading photo sharing web application solutions. It allow some basic photo manipulation, such as resizing, rotating, and altering image quality, but does not include advanced photo editing.
Advertising Tools
OpenX - OpenX is a hugely popular, free ad server for web publishers. Take control, manage your advertising and make more money from online advertising today.
DIGG
Pligg - Pligg CMS provides free software to create your own social networking website. Start a site in minutes using Pligg Content Management System and save time and money on your next website.
RSS
Gregarius–Gregarius is a web-based RSS/RDF/ATOM feed aggregator, designed to run on your web server, allowing you to access your news sources from wherever you want.
E-Commerce
osCommerce - osCommerce(”open source Commerce”) is an e-commerce and online store-management software program. It can be used on any web server that has PHP and MySQL installed. osCommerce provides a basic set of functionality that meets the common needs of online businesses.