香港大学推荐的50本经典书籍

book

1、《追寻生命的意义》

  作者:弗兰克尔

  弗兰克尔是20世纪著名的心理学家,纳粹时期,作为犹太人,他的全家都被关进了奥斯威辛集中营,他的父母、妻子、哥哥,全都死于毒气室中,只有他和妹妹幸存。弗兰克尔不但超越了这炼狱般的痛苦,更将自己的经验与学术结合,开创了意义疗法,替人们找到绝处再生的意义。本书第一部分叙述了弗兰克尔的集中营经历,第二部分阐述了他的“意义疗法”。本书不仅适合于心理学爱好者,也适合面临挑战希望寻找生活意义的人们。

  2、《拖延心理学》

  作者:[美]简·博克/[美]莱诺拉·袁

  你想要向拖延的恶习开刀吗?这两位加利福尼亚心理学家在她们治疗拖延者的实践中精准地捕捉到了拖延的根本原因。这本书可以帮助读者减轻拖延,更好地享受生活。

  3、《梦的解析》

  作者:[奥地利]弗洛伊德

  弗洛伊德的《梦的解析》被誉为精神分析的第一名著。它通过对梦境的科学探索和解释,找破了几千年来人类对梦的无知、迷信和秘感,同时揭示了左右人们思想和行为的潜意识的奥秘。不管你是否对心理学感兴趣,这本书都会带给你看待人的精神世界的一个新的视角。

  4、《宽容》

  作者:[美]房龙

  在宽容与不宽容之间,宗教以血腥和仁慈维护着它几千年的统治,更迭变幻、不滞不流。从众神的黄昏到好奇的人,从宗教裁判所到新天堂,从耶稣基督到布鲁诺……历史席卷一切,也记忆一切。而在这一切之后,始终不离其左右,是利益抑或是人性?这是一部宗教的历史,一部宽容与不宽容的历史,也是一郜人性血腥与进步的历史。文图之间,《宽容》生动地再现了这一历史。

  5、《如何阅读一本书》

  作者:[美]莫提默·艾德勒/查尔斯·范多

  你会阅读吗?莫提默·艾德勒告诉你,阅读并非那么简单。不懂阅读的人,初探阅读的人,读这本书可以少走冤枉路。对阅读有所体会的人,读这本书可以有更深的印证和领悟。本书介绍了阅读的三个层次,对每个层次都进行了细致的指导,是一本非常实用的读书用手册。

  6、《影响力》

  [美]罗伯特·B·西奥迪尼

  影响力是改变他人思想和行动的能力。政治家运用影响力来赢得选举,商人运用影响力来兜售商品,推销员运用影响力诱惑你乖乖地把金钱捧上…人们对影响力的运用存在于社会的每个角落,当一个要求用不同的方式提出来时,你的反应就会不知不觉地从负面抵抗变成积极合作,你为什么会说“是”,这一转变中究竟蕴涵着怎样的心理策略?《影响力》这本妙趣横生的书可以告诉你。

  7、《政府论》

  作者:[英]洛克

  《政府论》英国约翰·洛克的政治著作,出版于1690年。本书可视为政治学的研究范畴,但对法学研究而言,此书亦属必读之列。《政府论》汇集了洛克的主要政治哲学思想,不仅使洛克成为古典自由主义思想的集大成者,而且对于后世的现实政治产生了深远的影响.

  8、《人的潜能和价值》

  作者:[美]马斯洛等

  一个广为人知的理论认为,人脑有上千亿个细胞,其中98.5%-99%的细胞处于休眠状态,大约有1%-1.5%的细胞参加脑的神经功能活动,这说明人的潜能有极大的发挥空间。《人的潜能和价值》是人本主义心理学有关“人的潜能和价值”讨论的论文集。主要选录了马斯洛等有关人心理学价值观点的文章。这本书中收录了著名的马斯洛需求层次理论,该理论在心理学、管理学等众多领域影响很大。本书是希望开发自身潜能和价值的同学所必读的一本好书。

  9、《设计心理学》

  作者:[美]唐纳德·A·诺曼

  本书是对产品设计感兴趣同学的必读书。诺曼博士本书中强调以使用者为中心的设计哲学,提醒消费者在挑选的物品,必须要方便好用,易于理解,希望设计师在注重设计美感的同时,不要忽略设计的一些必要因素,因为对于产品设计来说,安全好用永远是竞争的关键。虽然本书讨论的是日常用品的设计,但是其思想同样适合于互联网产品的设计,建议计算机相关专业的同学阅读。

  10、《小王子》

  作者:[法]圣埃克苏佩里

  圣埃克苏佩里是一个传奇飞行家,他的书中以一位飞行员作为故事叙述者,讲述了小王子从自己星球出发前往地球的过程中,所经历的各种历险。小王子的孩子式的眼光,看到了成人的空虚、盲目和愚妄,记下了人类的孤独寂寞、没有根基随风流浪的命运。本质的言语、本真的视角,也带给许许多多人感动和向往。

  11、《策略思维》

  作者:迪克西特/奈尔伯夫

  耶鲁大学教授奈尔伯夫和普林斯顿大学教授迪克西特的这本著作,用许多活生生的例子,向没有经济学基础的读者展示了博弈论策略思维的道理。人生是一个永不停息的决策过程。从事什么样的工作,怎样打理一宗生意,该和谁结婚,怎样将孩子抚养成人,要不要竞争总裁的位置,都是这类决策的例子。这本书不仅适合对博弈论感兴趣的同学,也同样适合所有希望让生活决策更有条理的同学。

  12、《无价》

  作者:[美]威廉·庞德斯通

  为什么免费的巧克力让我们疯狂?为什么百老汇剧场里价格越高的位置卖得越火?为什么100万美元带来的愉悦感,400万美元才能让它翻倍?为什么议价时,一定要抢先报价,而且一定要狮子大开口?威廉·庞德斯通告诉我们答案:价格只是一场集体幻觉。如果你想了解价格的奥秘,就来读这本书吧!

  13、《浅薄》

  作者:[美]尼古拉斯·卡尔

  “谷歌在把我们变傻吗?”当尼古拉斯卡尔在发表于《大西洋月刊》上赫赫有名的那篇封面文章中提出这个问题的时候,他就开启了人们热切渴望的期盼源泉,让人急于弄清楚互联网是在如何改变我们的。卡尔在本书中阐述了他对互联网时代的看法:互联网会在现代人的心智中打下深深的烙印。这本书会让你看到互联网对我们的影响的另一面。

  14、《定位》

  作者:[美]艾·里斯/杰克·特劳特

  20多年前,美国《广告时代》杂志约请年轻的营销专家里斯和特劳特撰写一系列有关营销和广告新思维的文章,总标题就是“定位的时代”。系列文章刊载之后,引起全行业的轰动,定位成了营销界人人谈论的热闹话题,经作者之手送出的文章就达12万份之多,由此开创了营销理论全面创新的时代。20年过去,定位思想已经深入人心,成为营销中必须考虑的要素。本书适合所有对商业感兴趣的同学阅读。

  15、《麦肯锡方法》

  作者:[美]埃森M拉塞尔

  《麦肯锡方法》披露了麦肯锡小心守护的一系列管理技巧——那些可以帮助任何水平的任何人像麦肯锡顾问一样思考的工具。这是一套你可以应用在任何社工、实习、团队管理中的方法,像你的咨询顾问一样,为你指出通向成功的解决方案。这是从事咨询行业的必读书,也是希望丰富管理素养、提升自身领导力的同学的良好参考。
16、《社会契约论》

  作者:[法]卢梭

  《社会契约论》是法国思想家让雅克卢梭于1762年写成的一本书。《社会契约论》中主权在民的思想,是现代民主制度的基石,深刻地影响了逐步废除欧洲君主绝对权力的运动,和18世纪末北美殖民地摆脱英帝国统治、建立民主制度的斗争。美国的《独立宣言》和法国的《人权宣言》及两国的宪法均体现了《社会契约论》的民主思想。

  17、《人月神话》

  作者:[美]弗雷德里克·布鲁克斯

  本书是软件工程领域的名著,为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。如果你有志从事技术领域的管理工作,或者面临领导团队的工作,本书是你的必读之书。

  18、《伦理学》

  作者:斯宾诺莎

  《伦理学》一书是斯宾诺莎一生哲学思想的结晶。该书所阐述的实体、属性和样式的学说,是17世纪西欧先进的唯物主义哲学思想发展的总结。它肯定了唯一独立存在的自然物质实体是各种物体相互联系的整体,更精彩分享请加扣扣:七六三一二八三九二!坚持了从世界本身来说明世界的唯物主义观点。斯宾诺莎《伦理学》一书所阐发的哲学思想在近现代欧洲哲学史上产生了多方面的影响。黑格尔就曾经明确地提出,要研究哲学,就必须首先作一个斯宾诺莎主义者。马克思在他的哲学著作中,也经常把斯宾诺莎作为近代哲学史上唯物主义和辩证法的杰出代表。

  19、《目送》

  作者:龙应台

  《目送》共由七十四篇散文组成,是为一本极具亲情、感人至深的文集。由父亲的逝世、母亲的苍老、儿子的离开、朋友的牵挂、兄弟的携手共行,写出失败和脆弱、失落和放手,写出缠绵不舍和绝然的虚无。作者平淡朴实的文笔、真诚深挚的情感和传统现代的思考,都让人感觉身心放松、恍若相通,值得一读。

  20、《欢乐的经济学》

  作者:戴维·亨德森

  这是一本通过对作者亲身经历进行生动有趣的分析,向读者普及经济学思维、传达自由至上理念的书。本书的作者是一名专业经济学家,致力于传播自由经济与市场经济的理念。

  21、《一九八四》

  作者:[英]乔治·奥威尔

  这一部奥威尔的传世之作,堪称世界文坛上最著名的政治讽喻小说。他在小说中他创造的“老大哥”、“双重思想”、“新话”等词汇都已收入权威的英语词典,甚至由他的姓衍生了一个形容词“奥威尔式”不断出现在报道国际新闻的记者笔下,足见其在英语国家影响之深远。

  22、《雪国》

  作者:[日]川端康成

  年轻的少年在多雪的岛国与两个女子,发生了平淡的故事,然而川端康成笔下唯美的情景与诗意的语言,让这本书打动无数人心灵。空灵境界,遥远人物,哀伤故事,是川端康成的永恒主题。《雪国》中东方式的虚无充满了日本古典文学传统,而人物的描绘又带给人强烈的真实感。

  23、《自私的基因》

  作者:[英]里查德·道金斯

  这是一本关于进化论的书,但是从这本书中读者可以获得关于人类行为的许多启发。道金斯使用“自私的基因”来表达基因中心的进化论观点。这种观点和基于物种或生物体的进化论观点不同,能够解释生物体之间的各种利他行为。

  24、《Facebook效应》

  作者:[美]大卫·柯克帕特里克

  本书叙述了Facebook如何从哈佛的宿舍里萌发,创始人的内讧,权力之争,如何放弃华盛顿邮报的投资,怎样争取到第一个广告客户,而第一轮融资又如何获得一亿美元的估值……作者近距离地采访了与Facebook相关的人士,更精彩分享请加扣扣:七六三一二八三九二!其中包括Facebook的创始人、员工、投资人、意向投资人以及合作伙伴,加起来超过了130人。这是真切详实的访谈,更是超级精彩的故事。Facebook作为一个传奇企业,值得所有希望了解互联网和新媒体的同学深入了解。

  25、《历史研究》

  作者:汤因比

  汤因比在本书中将人类史作为一个整体来加以考察,以极其宏大的视角展现了诸多文明的成长、碰撞、融合的历程,在这一令人着迷的历史画卷中,作者以其博大精深的历史学知识和哲学睿智为读者带来了吸收知识和进行思考的快乐——这本书或许言辞难懂,但并不晦涩,对于一个想借上帝之眼来看人类古今历史的人,这本书是最合适的选择之一

26、《论美国的民主》

  作者:[法]托克维尔

  《论美国的民主》这本书是世界学术界第一部对美国社会、政治制度和民情进行社会学研究的著作,也是第一部论述民主制度的专著,19世纪最著名的社会学著作之一,同时,它也是当代青年不可不读的经典名著之一。

  27、《西方美学史》

  作者:朱光潜

  一部美学史并不单一的只是纯粹美学理论的历史,而且还是人类心灵自我展现的历史,或者说,在那些看似抽象的理论背后,我们所感受到的乃是各个时代人类精神脉博的跳动,这是一种精神的还乡历程——请跟随朱光潜先生来一次西方美学的精神漫游吧。

  28、《长尾理论》

  作者:[美]克里斯·安德森

  本书讲述了互联网时代如何改变了长尾的经济价值。本书中阐述,商业和文化的未来不在于传统需求曲线上那个代表“畅销商品”(hits)的头部;而是那条代表“冷门商品”(misses)经常为人遗忘的长尾。比如,亚马逊网络书店的销售额有四分之一来自于排名10万之后的书籍。本书适合所有希望了解产品与市场的同学阅读。

  29、《理想国》

  作者:[古希腊]柏拉图

  柏拉图认为,正义的城邦城理想国必须具备三个条件。第一,统治者应从有才能的人中挑选出来,可以是男人,也可以是女人。第地一,统治者阶层应过公社生活。第三,国王应该是哲学家,或应该让哲学家做国王。

  30、《菊花与刀》

  作者:[美]鲁斯·本尼迪克特

  《菊花与刀》的前身是一份研究报告——作者受美国战时情报局委托写的有关日本的研究报告。后来在原报告基础上加上前后两章,即成此书。此书于1946年发表后反响巨大,亦成为日本最畅销的图书之一,因其学术价值和借鉴意义,60多年后依然长销不衰,成为文化人类学的典范之作,是了解我们一衣带水的近邻——日本民族的绕不过的经典读本。

  31、《激荡三十年》

  作者:吴晓波

  本书记载了1978-2008年间中国的企业变革,作者没有用传统的教科书或历史书的方式来写作这部作品,而是站在民间的角度,以真切而激扬的写作手法描绘了中国企业在改革开放年代走向市场、走向世界的成长、发展之路。

  32、《经济学原理》

  作者:[美]N.格里高利·曼昆

  曼昆的《经济学原理》是世界上最流行的经济学教材。现代社会中经济与每个人的生活都密切相关,所有的大学生都该懂点经济学,而这本书无疑是最受欢迎的经济学入门经典。

  33、《悲惨世界》

  作者:[法]雨果

  故事的主线围绕主人公获释罪犯冉阿让试图赎罪的历程,融进了法国的历史、建筑、政治、道德哲学、法律、正义、宗教信仰。文中真实的故事,丰富的人物内心和故事包涵的深刻意义,使读者们都体会到作品有一种深远的分量感,也让一代代的人深深感动。

  34、《芙蓉镇》

  作者:古华

  古华借位于湘、粤、桂三省交界处的芙蓉镇上,一个人称“芙蓉姐”的漂亮女人胡玉音在“四清运动”及“文化大革命”中的坎坷遭遇,向我们展示了特定历史时期人民生活的升迁沉浮。数十年间整个国家的人所承受的痛苦和欢乐,更重要的是后来人对这些事情痛苦和欢乐的思考,教会我们不要忘记。

  35、《平凡的世界》

  作者:路遥

  这一本呕心沥血写成的百万字的长篇巨著全景式地表现中国当代城乡社会生活。路遥在中国70年代中期到80年代中期近十年间的广阔背景上,通过复杂的矛盾纠葛,以孙少安和孙少平两兄弟为代表展开了劳动与爱情、挫折与追求、痛苦与欢乐、日常生活与巨大社会冲突纷繁地交织在一起,深刻地展示了普通人在大时代历史进程中所走过的艰难曲折的道路,故事的广阔和深刻可谓是改革开放以来最可读的书之一。

36、《老人与海》

  作者:[美]海明威

  《老人与海》是海明威最著名的作品之一,它围绕一位老年古巴渔夫,与一条巨大的马林鱼在离岸很远的湾流中搏斗的故事。海明威电报式的简洁有力的写作风格,“冰山”原则指导下的荡人心魄描写,都在这片文章中得到了淋漓尽致的展现。海上捕鱼老人的拼搏、勇毅、不屈服,让每个人心中都波涛汹涌。

  37、《乌合之众:大众心理研究》

  作者:[法]古斯塔夫·勒庞

  这本书是社会心理学领域的经典著作,至今已被翻译成近20种语言出版。在书中,作者以十分简约的方式,考察了群体的特殊心理与思维方式,尤其对个人与群体的迥异心理进行了精辟分析。二战中日本普通民众如何变成丧尽天良的战争机器,更精彩分享请加扣扣:七六三一二八三九二!“文革”中的单纯学生又为何会作出那许多丧心病狂的举动?个人到群体的变化总是叫人难以理解、难以置信,此书的解释,或能稍解你的困惑。

  38、《红与黑》

  作者:[法]司汤达

  年轻人于连一步步向上爬却最终跌落谷底,法国批判现实主义之父司汤达借此批判法国封建贵族与新兴资产阶级的赤裸裸的斗争。与此同时,小说以深刻细腻的笔调充分展示了主人公的心灵空间,广泛运用了独白和自由联想等多种艺术手法挖掘出了于连深层意识的活动,开创了现代小说的写作风格。

  39、《人间词话》

  作者:王国维

  清末文史学和考证学的大师王国维先生留给了我们的《人间词话》是晚清以来最有影响的著作之一。这是一部接受了西洋美学思想之洗礼后,以崭新的眼光对中国旧文学所作的文学批评著作,在旧日诗词论著中,称得上一部屈指可数的作品。在以往词论界里,许多人把它奉为圭臬,把它的论点作为词学、美学的根据,影响很是深远。

  40、《战争论》

  作者:[德]克劳塞维茨

  本书作者亲身参加过普法战争和法俄战争,积累了丰富的作战经验。他的思想还受到德国古典哲学的很大影响,这为他研究战争理论和写作此书提供了有利的主客观条件。作为西方军事史上的理论名著,它甚至受到过恩格斯和列宁的好评。正是这部著作最早提出了“战争是政治通过另一种手段(即暴力)的继续”这一著名的公理。

  41、《惠普之道》

  作者:[美]戴维·帕卡德

  《惠普之道》是惠普公司创始人戴维·帕卡德所写的创立惠普公司的故事,本书文笔通俗简练,前半部分叙述惠普公司的创业经历,后半部分阐释惠普公司的价值观、宗旨与做法。惠普公司是硅谷的纪念碑和常春藤,惠普公司以其健康的绩效、良好的企业环境得到了长足的发展。本书阐释的“惠普之道”被许多卓越的企业所效仿,本书是所有对创业和企业管理感兴趣的同学的必读书。

  42、《非暴力沟通》

  作者:[美]马歇尔·卢森堡

  良言一句三冬暖,恶语伤人二月寒。不正确的沟通方式不仅会导致对他人的伤害,也会导致无法进行有效的沟通。卢森堡博士在本书中揭示了那些长久被人忽视的沟通障碍,并总结了和谐有效的沟通方式。无论是同学之间、恋人之间、师生之间、同事之间,非暴力沟通方式都能帮助你进行有效的沟通。本书的内容非常易懂和实用,穿插出现的沟通练习帮助你随时演练书中的沟通原则,对于困扰于沟通的同学们,本书是不可不读的好书。

  43、《人性的弱点》

  作者:[美]戴尔·卡内基

  “世界成功学第一书”,戴尔·卡耐基被称为美国“成人教育之父”,他运用社会学和心理学知识,对人性进行了深刻的探讨和分析。他讲述的许多普通人通过奋斗获得成功的真实故事,激励了无数陷入迷茫和困境的人,帮助他们重新找到了自己的人生。不管成功学有怎样的缺陷,这些故事对于处于迷茫中的同学无疑是一种指引和帮助。

  44、《爱的艺术》

  [美]弗洛姆

  爱情是大学期间一门重要的必修课,心理学家弗洛姆这本著名的《爱的艺术》一定能够对你有所帮助。弗洛姆认为,不成熟的、幼稚的爱是“我爱你,因为我需要你。”,而成熟的爱是“我需要你,因为我爱你。”。希望从这本书中得到追求攻略的同学往往会失望,但是如果你静下心,就可以从本书中读出爱的艺术的真谛。

  45、《正义论》

  作者:[美]约翰·罗尔斯

  罗尔斯在《正义论》当中提出了关于正义的两条原则:第一条是所谓平等的自由原则,即每个人应该在社会中享有平等的自由权利;第二条原则包括差别原则与机会平等原则。前者要求在进行分配的时候,如果不得不产生某种不平等的话,这种不平等应该有利于境遇最差的人们的最大利益,就是说,利益分配应该像处于不利地位的人们倾斜;后者要求将机会平等的原则应用于社会经济的不平等,使具有同等能力、技术与动机的人们享有平等的获得职位的机会。

  46、《心理学与生活》

  作者:[美]理查德·格里格

  本书是心理学的入门经典,是美国斯坦福大学多年来使用的教材,也是在美国许多大学里推广使用的经典教材,被ETS推荐为GRE心理学专项考试的主要参考用书。这本书写作流畅,通俗易懂,深入生活,把心理学理论与知识联系人们的日常生活与工作,使它同样也成为一般人了解心理学与自己的极好的读物。

  47、《玩偶之家》

  作者:[挪威]易卜生

  娜拉是个具有资产阶级个性解放思想的叛逆女性,伴随着一系列事件,她与丈夫海尔茂的矛盾逐渐激化直至两个人分手。她对社会的背叛和弃家出走,被誉为妇女解放的“独立宣言”,易卜生高超的戏剧创作手法也在这部著作中得到体现。

  48、《生命是什么》

  [奥]埃尔温·薛定谔

  理工科学生大概都对薛定谔耳熟能详,这位诺贝尔奖获得者撰写的《生命是什么》更是一本伟大的科学人文经典。这本书专为生命科学的门外汉书写,内容通俗易懂,历史证明这本书成为了推动分子生物学诞生的激励者和推动者。本书适合于任何希望增进科学素养的同学阅读。

  49.《西方的没落》

  作者:[德]奥斯瓦尔德·斯宾格勒

  《西方的没落》是著名史学家斯宾格勒上世纪初创作的一部史学巨著,素有“历史博物馆”之称。在书中斯宾格勒从宏大的文化比较形态学的角度以生物生长过程的观念进行历史研究,把世界历史分成八个完全发展的文化,细致考察其各个时期的不同现象,揭示其共同具有的产生、发展、衰亡及毁灭的过程,通过对西方文化的精神逻辑和时代症状的描述,预言西方文化终将走向没落。

  50.《论法的精神》

  作者:[法]孟德斯鸠

  公认的十八世纪最伟大的、最深远地影响了历史的作品是哪几部?人们可以很轻易地说出亚当施密的《国富论》、卢梭的《社会契约论》和孟德斯鸠的《论法的精神》。《论法的精神》以法律为中心,又遍涉经济、政治、宗教、历史、地理等领域,内容极为丰富。《论法的精神》中提出的“追求自由”、“主张法制”、“三权分立”等理论,极大地影响了人类社会的发展进程,成为了美、英、法等国的立国之本。

Posted in 其他 | 香港大学推荐的50本经典书籍已关闭评论

《黄帝阴符经》

《黄帝阴符经》

hd
上篇

观天之道,执天之行,尽矣。天有五贼,见之者昌。五贼在心,施行于天。宇宙在乎手,万化生乎身。

译文:“只要发现自然之规律,掌握自然之运行,就能尽得其妙了。自然包含着五行(金、木、水、火、土)之相胜,懂得它们才会兴旺。五行相胜之气融于心,施行于自然,宇宙就会象在手中一样易于掌控,万物之变化也就能随心所欲。”

天性,人也;人心,机也。立天之道,以定人也。

译文:“自然之性是人之本性(即‘虚静’),人心却是诈伪的。所以要以自然之道来确定人性之道。”

天发杀机,移星易宿;地发杀机,龙蛇起陆;人发杀机,天地反覆;天人合发,万化定基。

译文:“上天若出现五行相胜,就会使星宿移位;大地若出现五行相胜,就会使龙蛇飞腾;人体内若出现五行相胜,就能使天地颠倒。倘若人能顺应自然而同时发生五行相胜,就能使万物稳定下来。”

性有巧拙,可以伏藏。九窍之邪,在乎三要,可以动静。火生于木,祸发必克;奸生于国,时动必溃。知之修炼,谓之圣人。

译文:“人性虽有巧有拙,却可以弃之不用。九窍是否沾惹外邪,关键在于耳、目、口三窍之动静。三窍动则犹如木头着火,必生灾祸;国有奸邪,必致溃亡。懂得如此修炼,称为圣人。”!

中篇

天生天杀,道之理也。

译文:“阴阳循环,是道的规律。”

 天地,万物之盗;万物,人之盗;人,万物之盗。三盗既宜,三才既安。故曰:食其时,百骸理;动其机,万化安。人知其神而神,不知其不神之所以神。日月有数,大小有定,圣功生焉,神明出焉。其盗机也,天下莫能见,莫能知。君子得之固躬,小人得之轻命。”

译文:“万物顺应天地之规律而自然生长;人利用万物而富足;万物依靠人而昌盛。只要天地、万物与人之间各得其宜,那么它们就会安定下来。所以说:休养要遵循时令,身体才会得到调理;行动要把握时机,万物才会变得安定。人们只懂得“盗”的神妙莫测而以为神(世人只知偷盗不被查觉,谓之‘神’),却不知“盗”不神妙莫测才是最神妙莫测的(却不知顺天地、万物之规律而公开盗之,方为‘神’)。要知道,太阳与月亮各有规律,大与小都有定规,只有懂得这些道理,才会有大功产生,才会有神明护佑。这些“盗”的机巧是天下之人所不能见、所不能知的。有悟性的人得到它,就会躬行(能顺应自然);无悟性的人得到它,却会丧命(因违法偷盗)。”
下篇

瞽者善听,聋者善视。绝利一源,用师十倍;三返昼夜,用师万倍。心生于物,死于物,机在目。天之无恩,而大恩生。迅雷烈风,莫不蠢然
译文:“眼盲者耳聪,耳聋者眼明。因此,如果能闭塞其一(或眼或耳),就会增强十倍之能力;如果能每天闭塞其耳、目、口(勿听、勿视、勿言),就会增强万倍之能力。心因物而动,因物而静,关键在于眼。要知道,上天不施恩德(无声无言),因而能产生大恩德;而响雷暴风(指外物也)只会使万物发生骚动。”

至乐性余,至静性廉。天之至私,用之至公。禽之制在气。

译文:“至乐之本在于知足,至静之本在于无私。上天因无恩而至私,故能大恩而至公(即施惠于万物)。统摄的法式在于调和其气。”

生者死之根,死者生之根。恩生于害,害生于恩。

译文:“生为死之终结,死为生之终结,故生死为一。利因害而生,害亦因利而生,故利害相生。”

愚人以天地文理圣,我以时物文理哲;人以愚虞圣,我以不愚虞圣;人以奇期圣,我以不奇期圣。故曰: 沉水入火,自取灭亡。

译文:“愚昧之人常以懂得天地之准则为智慧,我却以遵循时令、洞悉外物为聪明。俗人以欺诈为智慧,我却以诚信为聪明;俗人以奇异为智慧,我却以自然为聪明。所以说:进入水火之中还自以为是智慧,那就是自取灭亡。”

自然之道静,故天地万物生。天地之道浸,故阴阳胜。阴阳相推,而变化顺矣。

译文:“因为自然之道虚、静,所以能生天地、万物。因为天地的运行遵循自然,所以能使阴阳相胜。阴阳相胜相生,则变化和谐。”

是故圣人知自然之道不可违,因而制之。至静之道,律历所不能契。爰有奇器,是生万象,八卦甲子,神机鬼藏。阴阳相胜之术,昭昭乎进乎象矣。

译文:“所以,圣人懂得自然之道不可违背,因而制订了各种法则。然而,至静无形之道(普遍)是各种法则(特殊)所不能完全契合的。于是就有了奇妙的《易》,它产生了各种象征,是以八种卦象为本,并贯以六十甲子,来演化种种玄机的。这样一来,阴阳循环相生也就能很清楚地蕴涵于各种象征之中了。”

Posted in 国学 | 《黄帝阴符经》已关闭评论

黄石公《素书》

前言:

《素书》相传为秦朝末年黄石公所著,之后又经过三试而传于张良,张良凭借此书,辅佐刘邦建立汉室基业。
hsg
宋代 张商英 为 《素书》写序如下:

《黄石公素书》六篇,按《前汉列传》黄石公圯桥所受子房《素书》,世人多以“三略”为是,盖传之者误也。
晋乱,有盗发子房冢,于玉枕中获此书,凡一千三百三十六言,上有秘戒:“不传于不道不神不圣不贤之人;若非其人,必受其殃;得人不传,亦受其殃。”呜呼!其慎重如此。黄石公得子房而传之,子房不得其传而葬之。后五百余年而盗获之,自是《素书》始传于人间。然其传者,特黄石公之言耳,而公之意,其可以言尽哉。

余窃尝评之:“天人之道,未尝不相为用,古之圣贤皆尽心焉。尧钦若昊天,舜齐七政,禹叙九畴,傅说陈天道,文王重八卦,周公设天地四时之官,又立三公以理阴阳。孔子欲无言,老聃建之以常无有”《阴符经》曰:“宇宙在乎手,万物生乎身。道至于此,则鬼神变化,皆不逃吾之术,而况于刑名度数之间者欤!”
黄石公,秦之隐君子也。其书简,其意深;虽尧、舜、禹、文、傅说、周公、孔、老,亦无以出此矣。
然则,黄石公知秦之将亡,汉之将兴,故以此书授子房。而子房者,岂能尽知其书哉!凡子房之所以为子房者,仅能

用其一二耳。
《书》曰:“阴计外泄者败。”子房用之,尝劝高帝王韩信矣;《书》曰:“小怨不赦,大怨必生。”子房用之,尝劝高帝侯雍齿矣;:“决策于不仁者险。”子房用之,尝劝高帝罢封六国矣;:“设变致权,所以解结。”子房用之,尝致四皓而立惠帝矣;:“吉莫吉于知足。”子房用之,尝择留自封矣;:“绝嗜禁欲,所以除累。”自封用之,尝弃人间事,从赤松子游矣。
嗟乎!遗糟弃滓,犹足以亡秦、项而帝沛公,况纯而用之,深而造之者乎!
自汉以来,章句文辞之学炽,而知道之士极少。如诸葛亮、王猛、房乔、裴度等辈,虽号为一时贤相,至于先王大道,曾未足以知仿佛。此书所以不传于不道、不神、不圣、不贤之人也。离有离无之谓“道”,非有非无之谓“神”,有而无之之谓“圣”,无而有之之谓“贤”。非此四者,虽口诵此书,亦不能身行之矣。

《素书》原文如下:

 

原始章第一

夫道、德、仁、义、礼五者一体也。道者,人之所蹈,使万物不知其所由。德者,人之所得,使万物各得其所欲。仁者,人之所亲,有慈惠恻隐之心,以遂其生成。义者,人之所宜,赏善罚恶,以立功立事。礼者,人之所履,夙兴夜寐,以成人伦之序。夫欲为人之本,不可无一焉。
贤人君子,明于盛衰之道,通乎成败之数,审乎治乱之势,达乎去就之理。故潜居抱道,以待其时。若时至而行,则能极人臣之位;得机而动,则能成绝代之功。如其不遇,没身而已。是以其道足高,而名重于后代。

 

正道章第二

德足以怀远,信足以一异,义足以得众,才足以鉴古,明足以照下,此人之俊也!
行足以为仪表,智足以决嫌疑,信可以使守约,廉可以使分财,此人之豪也!
守职而不废,处义而不回,见嫌而不茍免,见利而不茍得,此人之杰也!

 

求人之志章第三

绝嗜禁欲,所以除累。抑非损恶,所以让过。贬酒阙色,所以无污。
避嫌远疑,所以不误。博学切问,所以广知。高行微言,所以修身。
恭俭谦约,所以自守。谋计远虑,所以不穷。亲仁友直,所以扶颠。
近恕笃行,所以接人。任材使能,所以济物。殚恶斥谗,所以止乱。
推古验今,所以不惑。先揆后度,所以应卒。设变致权,所以解结。
括囊顺会,所以无咎。橛橛梗梗,所以立功。孜孜淑淑,所以保终。

 

本德宗道章第四

夫志心笃行之术。长莫长于博谋,安莫安于忍辱,先莫先于修德,乐莫乐于好善,神莫神于至诚,明莫明于体物,苦莫苦于多愿,吉莫吉于知足,悲莫悲于精散,病莫病于无常,幽莫幽于贪鄙,孤莫孤于自恃,危莫危于任疑,败莫败于多私,短莫短于苟得。

 

遵义章第五

以明示下者暗,有过不知者蔽,迷而不返者惑,以言取怨者祸,令与心乖者废,后令谬前者毁,怒而无威者犯,好直辱人者殃,戮辱所任者危,慢其所敬者凶,貌合心离者孤,亲谗远忠者亡,近色远贤者昏,女谒公行者乱,私人以官者浮,凌下取胜者侵,名不胜实者耗。略己而责人者不治,自厚而薄人者弃之。以过弃功者损群,下外异者沦亡,既用不任者疏,行赏吝色者沮,多许少与者怨,既迎而拒者乖。薄施厚望者不报,贵而忘贱者不久。念旧而弃新功者凶,用人不正者殆,强用人者不畜,为人择官者乱,失其所强者弱,决策于不仁者险,阴计外泄者败,厚敛薄施者凋。战士贫游士富者衰;货赂公行者昧;闻善忽略,记过不忘者暴;所任不可信,所信不可任者浊。牧人以德者集,绳人以刑者散。小功不赏,则大功不立;小怨不赦,则大怨必生。赏不服人,罚不甘心者叛。赏及无功,罚及无罪者酷。听谗而美,闻谏而仇者亡。能有其有者安,贪人之有者残。

 

安礼章第六

福在积善,祸在积恶。怨在不舍小过,患在不预定谋。饥在贱农,寒在堕织。安在得人,危在失士。富在迎来,贫在弃时。上无常操,下多疑心。轻上生罪,侮下无亲。近臣不重,远臣轻之。自疑不信人,自信不疑人。枉士无正友,曲上无直下。危国无贤人,乱政无善人。爱人深者求贤急,乐得贤者养人厚。国将霸者士皆归,邦将亡者贤先避。地薄者大物不产,水浅者大鱼不游,树秃者大禽不栖,林疏者大兽不居。山峭者崩,泽满者溢。弃玉取石者盲,羊质虎皮者饰。衣不举领者倒,走不视地者颠。柱弱者屋坏,辅弱者国倾。足寒伤心,人怨伤国。山将崩者下先隳,国将衰者人先毙。根枯枝朽,人困国残。与覆车同轨者倾,与亡国同辙者灭。见已失者慎将失,恶其迹者须避之。畏危者安,畏亡者存。夫人之所行,有道则吉,无道则凶。吉者百福所归;凶者百祸所攻。非其神圣,自然所钟。务善策者无恶事,无远虑者有近忧。同志相得,同仁相忧,同智相谋,同恶相党,同爱相求,同美相妒,同贵相害,同利相忌,同类相依,同义相亲,同难相济,同道相成,同艺相规,同巧相胜,同声相应,同气相感:此乃数之所得,不可与理违。释己而教人者逆,正己而化人者顺。逆者难从,顺者易行,难从则乱,易行则理。如此理身、理家、理国,可也!

Posted in 国学 | 黄石公《素书》已关闭评论

netlink socket 编程之why & how


原作者: Kevin Kaichuan He@2005-1-5
翻译整理:duanjigang @2008-9-15
原文: http://www.linuxjournal.com/article/7356
本文最早发布于chinaunix的内核板块,地址为:http://bbs.chinaunix.net/thread-1274437-1-1.html

开发和维护内核是一件很繁杂的工作,因此,只有那些最重要或者与系统性能息息相关的代码才将其安排在内核中。其它程序,比如GUI,管理以及控制部分的代码,一般都会作为用户态程序。在linux系统中,把系统的某个特性分割成在内核中和在用户空间中分别实现一部分的做法是很常见的(比如linux系统的防火墙就分成了内核态的Netfilter和用户态的iptables)。然而,内核程序与用户态的程序又是怎样行通讯的呢?
答案就是通过各种各样的用户态和内核态的IPC(interprocess communication )机制来实现。比如系统调用,ioctl接口,proc文件系统以及netlink

socket,本文就是要讨论netlink socekt并向读者展示这种用网络
通讯接口方式实现的IPC机制的优点。

介绍

netlink socekt是一种用于在内核态和用户态进程之间进行数据传输的特殊的IPC。它通过为内核模块提
供一组特殊的API,并为用户程序提供了一组标准的socket 接口的方式,实现了一种全双工的通讯连接。类似于TCP/IP中使用AF_INET地址族一样,netlink

socket使用地址族AF_NETLINK。每一个netlink
socket在内核头文件

include/linux/netlink.h

中定义自己的协议类型。
下面是netlink socket 目前的特性集合以及它支持的协议类型:

NETLINK_ROUTE 用户空间的路由守护程序之间的通讯通道,比如BGP,OSPF,RIP以及内核数据转发模块。用户态的路由守护程序通过此类型的协议来更新内核中的

路由表。
NETLINK_FIREWALL:接收IPV4防火墙代码发送的数据包。
NETLINK_NFLOG:用户态的iptables管理工具和内核中的netfilter模块之间通讯的通道。
NETLINK_ARPD:用来从用户空间管理内核中的ARP表。

为什么以上的功能在实现用户程序和内核程序通讯时,都使用netlink方法而不是系统调用,ioctls
或者proc文件系统呢?原因在于:为新的特性添加一个新的系统调用,ioctls或者一个proc文件的做法并不是很容易的一件事情,因为我们要冒着污染内核代码

并且可能破坏系统稳定性的风险去完成这件事情。
然而,netlink socket却是如此的简单,你只需要在文件netlink.h中添加一个常量来标识你的协议类型,然后,内核模块和用户程序就可以立刻使用socket风

格的API进行通讯了!
Netlink提供了一种异步通讯方式,与其他socket API一样,它提供了一个socket队列来缓冲或者平滑
瞬时的消息高峰。发送netlink消息的系统调用在把消息加入到接收者的消息对列后,会触发接收者的接收处理函数。接收者在接收处理函数上下文中,可以决定

立即处理消息还是把消息放在队列中,在以后其它上下文去处理它(因为我们希望接收处理函数执行的尽可能快)。系统调用与netlink不同,它需要一个同步的

处理,因此,当我们使用一个系统调用来从用户态传递消息到内核时,如果处理这个消息的时间很长的话,内核调度的粒度就会受到影响。
内核中实现系统调用的代码都是在编译时静态链接到内核的,因此,在动态加载模块中去包含一个系统调用的做法是不合适的,那是大多数设备驱动的

做法。使用netlink socket时,动态加载模块中的netlink程序不会和linux内核中的netlink部分产生任何编译时依赖关系。
Netlink优于系统调用,ioctls和proc文件系统的另外一个特点就是它支持多点传送。一个进程可以把消息传输给一个netlink组地址,然后任意多个进程都可以

监听那个组地址(并且接收消息)。这种机制为内核到用户态的事件分发提供了一种近乎完美的解决方案。
系统调用和ioctl都属于单工方式的IPC,也就是说,这种IPC会话的发起者只能是用户态程序。但是,如果内核有一个紧急的消息想要通知给用户态程序时,该

怎么办呢?如果直接使用这些IPC的话,是没办法做到这点的。通常情况下,应用程序会周期性的轮询内核以获取状态的改变,然而,高频度的轮询势必会增加系

统的负载。Netlink 通过允许内核初始化会话的方式完美的解决了此问题,我们称之为netlink socket的双工特性。
最后,netlink socket提供了一组开发者熟悉的BSD风格的API函数,因此,相对于使用神秘的系统调用API或者ioctl而言,netlink开发培训的费用会

更低些。
与BSD的Routing socket的关系
在BSD TCP/IP的协议栈实现中,有一种特殊的socket叫做Routing socket.它的地址族为AF_ROUTE, 协议族为PF_ROUTE, socket类型为SOCK_RAW. 这种

Routing socket是用户态进程用来向内核中的路由表增加或者删除路由信息用的。在Linux系统中,netlink socket通过协议类型NETLINK_ROUTE实现了与

Routing socket相同的功能,可以说,netlink socket提供了BSD Routing socket功能的超集。

Netlink Socket 的API

标准的socket API函数-

socket(), sendmsg(), recvmsg()和close()

– 都能够被用户态程序直接调用来访问netlink socket.你可以访问man手册来获取这些函数的详细定义。在本文,我们只讨论怎样在netlink socket的上下文

中为这些函数选择参数。这些API对于使用TCP/IP socket写过一些简单网络程序的读者来说应该很熟悉了。
使用socket()函数创建一个socket,输入:

int socket(int domain, int type, int protocol)

socket域(地址族)是AF_NETLINK,socket的类型是SOCK_RAW或者SOCK_DGRAM,因为netlink是一种面向数据包的服务。
协议类型选择netlink要使用的类型即可。下面是一些预定义的netlink协议类型:


NETLINK_ROUTE, NETLINK_FIREWALL, NETLINK_ARPD, NETLINK_ROUTE6
和 NETLINK_IP6_FW.

你同样可以很轻松的在netlink.h中添加自定义的协议类型。

每个netlink协议类型可以定义高达32个多点传输的组。每个组用一个比特位来表示,1<
struct sockaddr_nl
{
sa_family_t nl_family; /* AF_NETLINK */
unsigned short nl_pad; /* zero */
__u32 nl_pid; /* process pid */
__u32 nl_groups; /* mcast groups mask */
} nladdr;


当上面的结构体被bind()函数调用时,sockaddr_nl的nl_pid属性的值可以设置为访问netlink socket的当前进程的PID,nl_pid作为这个netlink socket的本

地地址。应用程序应该选择一个唯一的32位整数来填充nl_pid的值。


NL_PID 公式 1: nl_pid = getpid();

公式一使用进程的PID作为nl_pid的值,如果这个进程只需要一个该类型协议的netlink socket的话,选用进程pid作为nl_pid是一个很自然的做法。
换一种情形,如果一个进程的多个线程想要创建属于各个线程的相同协议类型的netlink socket的话,公式二可以用来为每个线程的netlink socket产生

nl_pid值。

NL_PID 公式 2: pthread_self() << 16 | getpid();

采用这种方法,同一进程的不同线程都能获取属于它们的相同协议类型的不同netlink socket。事实上,即便是在一个单独的线程里,也可能需要创建同一协议

类型的多个netlink socket。所以开发人员需要更多聪明才智去创建不同的nl_pid值,然而本文中不会就如何创建多个不同的nl_pid的值进行过多的讨论
如果应用程序想要接收特定协议类型的发往指定多播组的netlink消息的话,所有接收组的比特位应该进行与运算,形成sockaddr_nl的 nl_groups域的值。否

则的话,nl_groups应该设置为0,以便应用程序只能够收到发送给它的netlink消息。在填充完结构体 nladdr后,作如下的绑定工作:

bind(fd, (struct sockaddr*)&nladdr, sizeof(nladdr));

发送netlink 消息

为了能够把一个netlink消息发送给内核或者别的用户进程,类似于UDP数据包发送的sendmsg()函数一样,我们需要另外一个结构体 struct sockaddr_nl

nladdr作为目的地址。如果这个netlink消息是发往内核的话,nl_pid属性和nl_groups属性都应该设置为0。
如果这个消息是发往另外一个进程的单点传输消息,nl_pid应该设置为接收者进程的PID,nl_groups应该设置为0,假设系统中使用了公式1。
如果消息是发往一个或者多个多播组的话,应该用所有目的多播组的比特位与运算形成nl_groups的值。然后我们就可以将netlink地址应用到结构体struct

msghdr msg中,供函数sendmsg()来调用:

struct msghdr msg;
msg.msg_name = (void *)&(nladdr);
msg.msg_namelen = sizeof(nladdr);

netlink消息同样也需要它自身的消息头,这样做是为了给所有协议类型的netlink消息提供一个通用的背景。
由于linux内核的netlink部分总是认为在每个netlink消息体中已经包含了下面的消息头,所以每个应用程序在发送netlink消息之前需要提供这个头信息:

struct nlmsghdr
{
__u32 nlmsg_len; /* Length of message */
__u16 nlmsg_type; /* Message type*/
__u16 nlmsg_flags; /* Additional flags */
__u32 nlmsg_seq; /* Sequence number */
__u32 nlmsg_pid; /* Sending process PID */
};

nlmsg_len 需要用netlink 消息体的总长度来填充,包含头信息在内,这个是netlink核心需要的信息。mlmsg_type可以被应用程序所用,它对于netlink核心

来说是一个透明的值。Nsmsg_flags 用来该对消息体进行另外的控制,会被netlink核心代码读取并更新。Nlmsg_seq和nlmsg_pid同样对于netlink核心部分来

说是透明的,应用程序用它们来跟踪消息。
因此,一个netlink消息体由nlmsghdr和消息的payload部分组成。一旦输入一个消息,它就会进入一个被nlh指针指向的缓冲区。我们同样可以把消息发送个结

构体struct msghdr msg:

struct iovec iov;
iov.iov_base = (void *)nlh;
iov.iov_len = nlh->nlmsg_len;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;

在完成了以上步骤后,调用一次sendmsg()函数就能把netlink消息发送出去:

sendmsg(fd, &msg, 0);

接收netlink消息

接收程序需要申请足够大的空间来存储netlink消息头和消息的payload部分。它会用如下的方式填充结构体 struct msghdr msg,然后使用标准函数接口

recvmsg()来接收netlink消息,假设nlh指向缓冲区:

struct sockaddr_nl nladdr;
struct msghdr msg;
struct iovec iov;

iov.iov_base = (void *)nlh;
iov.iov_len = MAX_NL_MSG_LEN;
msg.msg_name = (void *)&(nladdr);
msg.msg_namelen = sizeof(nladdr);

msg.msg_iov = &iov;
msg.msg_iovlen = 1;
recvmsg(fd, &msg, 0);

当消息正确接收后,nlh应该指向刚刚接收到的netlink消息的头部分。Nladdr应该包含接收到消息体的目的地信息,这个目的地信息由pid和消息将要发往的多

播组的值组成。Netlink.h中的宏定义NLMSG_DATA(nlh)返回指向netlink消息体的payload的指针。调用

close(fd)

就可以关闭掉fd描述符代表的netlink socket.

内核空间的netlink API接口

内核空间的netlink API是由内核中的netlink核心代码支持的,在net/core/af_netlink.c中实现。从内核的角度来说,API接口与用户空间的 API是不一

样的。内核模块通过这些API访问netlink socket并且与用户空间的程序进行通讯。如果你不想使用netlink预定义好的协议类型的话,可以在netlink.h中添加

一个自定义的协议类型。例如,我们可以通过在netlink.h中插入下面的代码行,添加一个测试用的协议类型:

#define NETLINK_TEST 17

然后,就可以在linux内核的任何部分访问这个协议类型了。
在用户空间,我们通过socket()调用来创建一个netlink socket,但是在内核空间,我们调用如下的API:

struct sock * netlink_kernel_create(int unit, void (*input)(struct sock *sk, int len));

参数uint是netlink协议类型,例如NETLINK_TEST。函数指针,input,是netlink socket在收到消息时调用的处理消息的回调函数指针。
在内核创建了一个NETLINK_TEST类型的netlink socket后,无论什么时候,只要用户程序发送一个NETLINK_TEST类型的netlink消息到内核的话,通过

netlink_kernel_create()函数注册的回调函数input()都会被调用。下面是一个实现了消息处理函数input的例子。


void input (struct sock *sk, int len)
{
struct sk_buff *skb;
struct nlmsghdr *nlh = NULL;
u8 *payload = NULL;

while ((skb = skb_dequeue(&sk->receive_queue))!= NULL)
{
/* process netlink message pointed by skb->data */
nlh = (struct nlmsghdr *)skb->data;
payload = NLMSG_DATA(nlh);
/* process netlink message with header pointed by
* nlh and payload pointed by payload
*/
}
}

回调函数input()是在发送进程的系统调用sendmsg()的上下文被调用的。如果input函数中处理消息很快的话,一切都没有问题。但是如果处理netlink消息花

费很长时间的话,我们则希望把消息的处理部分放在input()函数的外面,因为长时间的消息处理过程可能会阻止其它系统调用进入内核。取而代之,我们可以牺

牲一个内核线程来完成后续的无限的的处理动作。
使用

skb = skb_recv_datagram(nl_sk)

来接收消息。nl_sk是netlink_kernel_create()函数返回的netlink socket,然后,只需要处理skb->data指针指向的netlink消息就可以了。
这个内核线程会在nl_sk中没有消息的时候睡眠。因此,在回调函数input()中我们要做的事情就是唤醒睡眠的内核线程,像这样的方式:

void input (struct sock *sk, int len)
{
wake_up_interruptible(sk->sleep);
}

这就是一个升级版的内核与用户空间的通讯模型,它提高了上下文切换的粒度。
从内核中发送netlink消息
就像从用户空间发送消息一样,内核在发送netlink消息时也需要设置源netlink地址和目的netlink地址。假设结构体struct sk_buff * skb指向存储着要发送

的netlink消息的缓冲区,源地址可以这样设置:

NETLINK_CB(skb).groups = local_groups;
NETLINK_CB(skb).pid = 0; /* from kernel */
目的地址可以这样设置:
NETLINK_CB(skb).dst_groups = dst_groups;
NETLINK_CB(skb).dst_pid = dst_pid;

这些信息并不存储在 skb->data中,相反,它们存储在socket缓冲区的netlink控制块skb中.
发送一个单播消息,使用:

int netlink_unicast(struct sock *ssk, struct sk_buff *skb, u32 pid, int nonblock);

ssk是by netlink_kernel_create()函数返回的netlink socket, skb->data指向需要发送的netlink消息体,如果使用公式一的话,pid是接收程序的pid,

noblock表明当接收缓冲区不可用时是否应该阻塞还是立即返回一个失败信息。
你同样可以从内核发送一个多播消息。下面的函数同时把一个netlink消息发送给pid指定的进程和group标识的多个组。

void netlink_broadcast(struct sock *ssk, struct sk_buff *skb, u32 pid, u32 group, int allocation);

group的值是接收消息的各个组的比特位进行与运算的结果。Allocation是内核内存的申请类型。通常情况下在中断上下文使用 GFP_ATOMIC,否则使用

GFP_KERNEL。这是由于发送多播消息时,API可能需要申请一个或者多个socket缓冲区并进行拷贝所引起的。
从内核空间关闭netlink socket
netlink_kernel_create()函数返回的netlink socket为struct sock *nl_sk,我们可以通过访问下面的API来从内核空间关闭这个netlink socket:
sock_release(nl_sk->socket);
到目前为止,我们已经演示了netlink编程概念的最小代码框架。接着我们会使用NETLINK_TEST协议类型,并且假设它已经被添加到内核头文件中了。这里列举

的内核模块代码只是与netlink相关的,所以,你应该把它插入到一个完整的内核模块代码当中去,这样的完整代码在其它代码中可以找到很多。

内核与用户空间的单工通讯

在这个例子中,一个用户态进程发送一个netlink消息给内核模块,内核模块把消息回送给发送进程,下面是用户态的代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include #include

#define NETLINK_TEST 17
#define MAX_PAYLOAD 1024 /* maximum payload size*/
struct sockaddr_nl src_addr, dest_addr;
struct nlmsghdr *nlh = NULL;
struct iovec iov;
int sock_fd;
struct msghdr msg;

int main(int argc, char* argv[])
{
sock_fd = socket(PF_NETLINK, SOCK_RAW,NETLINK_TEST);
memset(&msg, 0, sizeof(msg));
memset(&src_addr, 0, sizeof(src_addr));
src_addr.nl_family = AF_NETLINK;
src_addr.nl_pid = getpid(); /* self pid */
src_addr.nl_groups = 0; /* not in mcast groups */
bind(sock_fd, (struct sockaddr*)&src_addr, sizeof(src_addr));
memset(&dest_addr, 0, sizeof(dest_addr));
dest_addr.nl_family = AF_NETLINK;
dest_addr.nl_pid = 0; /* For Linux Kernel */
dest_addr.nl_groups = 0; /* unicast */

nlh=(struct nlmsghdr *)malloc(NLMSG_SPACE(MAX_PAYLOAD));
/* Fill the netlink message header */
nlh->nlmsg_len = NLMSG_SPACE(MAX_PAYLOAD);
nlh->nlmsg_pid = getpid(); /* self pid */
nlh->nlmsg_flags = 0;
/* Fill in the netlink message payload */
strcpy(NLMSG_DATA(nlh), “Hello you!”);

iov.iov_base = (void *)nlh;
iov.iov_len = nlh->nlmsg_len;
msg.msg_name = (void *)&dest_addr;
msg.msg_namelen = sizeof(dest_addr);
msg.msg_iov = &iov;
msg.msg_iovlen = 1;

sendmsg(sock_fd, &msg, 0);

/* Read message from kernel */
memset(nlh, 0, NLMSG_SPACE(MAX_PAYLOAD));
recvmsg(sock_fd, &msg, 0);
printf(” Received message payload: %s\n”,
NLMSG_DATA(nlh));

/* Close Netlink Socket */
close(sock_fd);
}

下面是内核代码:

#include #include #include #include #include
#include

#define NETLINK_TEST 17
struct sock *nl_sk = NULL;
void nl_data_ready (struct sock *sk, int len)
{
wake_up_interruptible(sk->sk_sleep);
}

void test_netlink(void)
{
struct sk_buff * skb = NULL;
struct nlmsghdr * nlh = NULL;
int err;
u32 pid;

nl_sk = netlink_kernel_create(NETLINK_TEST, nl_data_ready);
/* wait for message coming down from user-space */
skb = skb_recv_datagram(nl_sk, 0, 0, &err);

nlh = (struct nlmsghdr *)skb->data;
printk(“%s: received netlink message payload:%s\n”, __FUNCTION__, (char*)NLMSG_DATA(nlh));

pid = nlh->nlmsg_pid; /*pid of sending process */
NETLINK_CB(skb).groups = 0; /* not in mcast group */
NETLINK_CB(skb).pid = 0; /* from kernel */
NETLINK_CB(skb).dst_pid = pid;
NETLINK_CB(skb).dst_groups = 0; /* unicast */
netlink_unicast(nl_sk, skb, pid, MSG_DONTWAIT);
sock_release(nl_sk->sk_socket);
}

int init_module()
{
test_netlink();
return 0;
}
void cleanup_module( )
{
}
MODULE_LICENSE(“GPL”);
MODULE_AUTHOR(“duanjigang”);

在加载完上面的内核代码生成的模块以后,运行用户态程序,可以看到下面输出:

Received message payload: Hello you!

并且,下面的信息会在dmesg中输出:

netlink_test: received netlink message payload:
Hello you!

内核与用户空间之间的多点传输通讯

在这个例子中,两个用户空间程序监听相同的netlink多播组。内核模块通过netlink socket向这个组发送一个消息,所有的应用程序都收到了这个消息,下面

是用户态的代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include #include

#define NETLINK_TEST 17
#define MAX_PAYLOAD 1024 /* maximum payload size*/
struct sockaddr_nl src_addr, dest_addr;
struct nlmsghdr *nlh = NULL;
struct iovec iov;
int sock_fd;
struct msghdr msg;

int main(int argc, char* argv[])
{

sock_fd=socket(PF_NETLINK, SOCK_RAW, NETLINK_TEST);
memset(&src_addr, 0, sizeof(src_addr));
memset(&msg, 0, sizeof(msg));

src_addr.nl_family = AF_NETLINK;
src_addr.nl_pid = getpid(); /* self pid */
/* interested in group 1<<0 */ src_addr.nl_groups = 1; bind(sock_fd, (struct sockaddr*)&src_addr, sizeof(src_addr)); memset(&dest_addr, 0, sizeof(dest_addr)); nlh = (struct nlmsghdr *)malloc(NLMSG_SPACE(MAX_PAYLOAD)); memset(nlh, 0, NLMSG_SPACE(MAX_PAYLOAD)); iov.iov_base = (void *)nlh; iov.iov_len = NLMSG_SPACE(MAX_PAYLOAD); msg.msg_name = (void *)&dest_addr; msg.msg_namelen = sizeof(dest_addr); msg.msg_iov = &iov; msg.msg_iovlen = 1; printf("Waiting for message from kernel\n"); /* Read message from kernel */ recvmsg(sock_fd, &msg, 0); printf("Received message payload: %s\n", NLMSG_DATA(nlh)); close(sock_fd); }
下面是内核态的代码:

#include #include #include #include #include
#include

#define MAX_PAYLOAD 1024
#define NETLINK_TEST 17

struct sock *nl_sk = NULL;

void nl_data_ready (struct sock *sk, int len)
{
wake_up_interruptible(sk->sk_sleep);
}

void test_netlink(void)
{
struct sk_buff *skb = NULL;
struct nlmsghdr *nlh;

nl_sk = netlink_kernel_create(NETLINK_TEST, nl_data_ready);
skb = alloc_skb(NLMSG_SPACE(MAX_PAYLOAD),GFP_KERNEL);
nlh = (struct nlmsghdr *)skb->data;
nlh->nlmsg_len = NLMSG_SPACE(MAX_PAYLOAD);
nlh->nlmsg_pid = 0; /* from kernel */
nlh->nlmsg_flags = 0;
nlh = (struct nlmsghdr *) skb_put(skb, NLMSG_SPACE(MAX_PAYLOAD));
strcpy(NLMSG_DATA(nlh), “Greeting from kernel!”);
/* sender is in group 1<<0 */ NETLINK_CB(skb).groups = 1; NETLINK_CB(skb).pid = 0; /* from kernel */ NETLINK_CB(skb).dst_pid = 0; /* multicast */ /* to mcast group 1<<0 */ NETLINK_CB(skb).dst_groups = 1; /*multicast the message to all listening processes*/ netlink_broadcast(nl_sk, skb, 0, 1, GFP_KERNEL); //printk("%s\n", NLMSG_DATA(nlh)); sock_release(nl_sk->sk_socket);
}

int init_module()
{
test_netlink();
return 0;
}
void cleanup_module( )
{

}
MODULE_LICENSE(“GPL”);
MODULE_AUTHOR(“duanjigang”);

假设用户态的代码编译后生成的可执行程序为nl_recv,我们可以运行nl_recv的两个实例:

./nl_recv &

输出如下:

Waiting for message from kernel

运行另外一个实例:
./nl_recv &
输出如下:

Waiting for message from kernel

然后,当我们加载了内核模块后,两个nl_recv的实例都应该会输出如下的消息:

Received message payload: Greeting from kernel!
Received message payload: Greeting from kernel!

总结: Netlink socket是用户空间程序和内核模块之间一种很灵活的通讯接口。它为应用程序和内核程序都提供了一个方便使用的API。它还提供了高级的通讯

特性,比如全双工,缓冲I/O,多点传送和异步通讯,这些都是其他内核/用户态的IPC所不具有的功能。

附件代码

本文示例代码

Posted in linux内核 | netlink socket 编程之why & how已关闭评论

一个不看书的国家

近日,一名印度工程师所写《令人忧虑,不阅读的中国人》红遍网络。他说,或许不应过分苛责。但我只是忧虑,如果就此疏远了灵魂,未来的中国可能会为此付出代价。文如下:我在从飞往上海的飞机上。正是长途飞行中的睡眠时间,机舱已熄灯,我吃惊地发现,不睡觉玩iPad的,基本上都是中国人,而且他们基本上都是在打游戏或看电影,没见有人读书。这一幕情景一直停留在我的脑海里。其实在法兰克福机场候机时,我就注意到,德国乘客大部分是在安静地阅读或工作。中国乘客大部分人要么在穿梭购物,要么在大声谈笑和比较价格。

现在的中国人似乎有些不耐烦坐下来安静地读一本书。一次我和一位法国朋友一起在虹桥火车站候车,这位第一次来中国的朋友突然问我:“为什么中国人都在打电话或玩手机,没有人看书?”我一看,确实如此。人们都在打电话(大声谈话)、低头发短信、刷微博或打游戏。或喧嚣地忙碌,或孤独地忙碌,唯独缺少一种满足的安宁。据媒体报道,中国人年均读书0.7本,与韩国的人均7本,日本的40本,俄罗斯的55本相比,中国人的阅读量少得可怜。 在中国各地中小城镇最繁荣的娱乐业就算麻将馆和网吧了,一个万多人的小镇,有几十个麻将馆五六家网吧是常事。中老年人参与到麻将,青年人上网,少年儿童看电视。中国人的娱乐生活几乎就浓缩为麻将、上网和看电视。不管是在网吧,还是在大学的电脑室,我们可以看到,大多数都在玩游戏,少部分在聊天。在网上和图书馆查阅资料或读书的学生少之又少。再看看各部门领导,一天忙于应付各种检查、应酬、饭局。读书已经变成了学者的专利,也许很多学者也不看书了。这确实让人担忧。

中国人不爱读书有四个方面的原因:一是国民文化素质偏低。二是从小没有养成阅读的良好习惯;三是”应试教育,让孩子们没有时间和精力去读课外书;四是好书越来越少。日本管理大师大前研一的著作《低智商社会》意外地触动了中国人的敏感神经。他在书中说:在中国旅行时发现,城市遍街都是按摩店,而书店却寥寥无几,中国人均每天读书不足15分钟,人均阅读量只有日本的几十分之一,中国是典型的”低智商国家”,未来毫无希望成为发达国家!在这个世界上有两个国家的人最爱读书,一个是以色列,另一个是匈牙利。以色列人均每年读书64本。当孩子稍稍懂事时,几乎每一个母亲都会严肃地告诉他:书里藏着的是智慧,这要比钱或钻石贵重得多,而智慧是任何人都抢不走的。犹太人是世界上唯一一个没有文盲的民族,就连犹太人的乞丐也是离不开书的。在犹太人眼里,爱好读书看报不仅是一种习惯,更是人所具有的一种美德。这里说一个最典型的例子,在“安息日”,所有的犹太人都要停止所有商业和娱乐活动,商店、饭店、娱乐等场所都得关门停业,公共汽车要停运,就连航空公司的班机都要停飞,人们只能待在家中“安息”祈祷。但有一件事是特许的,那就是全国所有的书店都可以开门营业。而这一天光顾书店的人也最多,大家都在这里静悄悄地读书。另一个国家匈牙利,它的国土面积和人口都不足中国的百分之一,但却拥有近两万家图书馆,平均每500人就有一座图书馆,而我国平均45.9万人才拥有一所图书馆。匈牙利也是世界上读书风气最浓的国家,常年读书的人数达500万以上,占人口的1/4还多。知识就是力量,知识就是财富。一个崇尚读书学习的国家,当然会得到丰厚的回报。以色列人口稀少,但人才济济。建国虽短,但诺贝尔奖获得者就有8个。以色列环境恶劣,国土大部分是沙漠,而以色列却把自己的国土变成了绿洲,生产的粮食不但自己吃不完,还源源不断地出口到其他国家。而匈牙利,诺贝尔奖得主就有14位,涉及物理、化学、医学、经济、文学、和平等众多领域,若按人口比例计算,匈牙利是当之无愧的“诺奖大国”。他们的发明也非常多,可谓数不胜数,有小物件,也有尖端产品。一个区区小国,因爱读书而获得智慧和力量,靠着智慧和力量,将自己变成了让人不得不服的“大国”。

记得有一位学者说过:一个人的精神发育史,应该是一个人的阅读史,而一个民族的精神境界,在很大程度上取决于全民族的阅读水平;一个社会到底是向上提升还是向下沉沦,就看阅读能植根多深,一个国家谁在看书,看哪些书,就决定了这个国家的未来。读书不仅仅影响到个人,还影响到整个民族,整个社会。要知道:一个不爱读书的民族,是可怕的民族;一个不爱读书的民族,是没有希望的民族。

24

Posted in 劝训 | 一个不看书的国家已关闭评论

细节决定成败

引言

曾经的同窗好友,起初有着相同的人生经历,然而命运却将两人早就的如此不同,一个是管理现代企业、搏击商海的亿万富翁,一个是公司小职员,究竟在人生的道路上他们走过怎么样的心路历程,他们之间的差距是如何造成的,读完本文相信会使很多青年朋友豁然开朗。

故事主角

刘立荣,湖南益阳人,金立通讯集团董事长兼总裁,身家15亿,手机月均销量45万部,年销售量超500万部,集团年利润超3亿。

李盛,湖南新化人,刘立荣的大学同窗,现为上海一电子公司的技术员,月收入5000元。

同窗好友

李盛与刘立荣原本是最要好的大学同窗,也是一对当初同闯广东,同住一间宿舍,没钱时一同挨饿的患难兄弟。然而,10多年过去,这两个兴趣相投、爱好相近的患难兄弟,其命运为什么会产生如此大的落差呢?近日,笔者专访了李盛,从他的反思中找到了一个令人感悟犹深的原因……

4年同窗,最烦就是他喜欢“小题大做”,李盛曾经十分看不惯大学同学刘立荣在小事上总是太较真,但他万万没有想到,正是这种差别,使得刘立荣如今成了身家15亿的大老板,而自己却仍然是月薪不过5000元的普通职员!

李盛是湖南省新化县人。1990年9月,他考取了校址在长沙市的中南工业大学。那天办完报到手续回到宿舍时,看到一个同学正埋头独自下围棋,他便说:“兄弟,我们来两盘行吗?”同学答应了,与他一边下棋一边聊天。通过交谈,李盛得知这位新同学叫刘立荣,来自益阳市农村。那天下午,他俩共下了3盘,李盛轻松地全赢了。

此后,同宿舍的他俩经常在课余下棋、聊天。刚开始,李盛棋艺占优,刘立荣从没赢过。但是,刘立荣每次下棋时都认真思考,李盛却认为下棋就是打发时间,总漫不经心。这样一个学期下来,刘立荣的棋艺居然反过来比李盛高出一大截,能让他3子了。李盛很纳闷地问:“你怎么提高得这么快?”刘立荣说:“你下棋根本不思考,怎么能有进步……”

大二第二学期,为了赚取生活费用,刘立荣提出利用晚自习后的时间,到各个男生宿舍去卖牛奶和面包。两人进行了分工,李盛负责去三、四栋男生宿舍推销,刘立荣则负责五、六栋宿舍。刚开始,两人每晚都能赚六七元钱,可不久刘立荣的钱越赚越多,李盛却越赚越少。李盛不服气,可两人调换推销宿舍后,刘立荣每晚还是能多赚七八元钱,而李盛依然越赚越少。一天,刘立荣看到李盛穿着一身汗透了的球衣,抱着食物箱就准备出门,他才恍然大悟地说:“你太不注意细节了。像你这样脏兮兮的,谁敢买你的食品呀?”李盛此后听从了刘立荣的建议,每晚出门前将自己收拾得干干净净,一段时间后,他的“生意”果然渐渐好了起来。

这件事后,李盛有些佩服刘立荣注意细节的优点了。此后,李盛学习很用功,大三时还拿到了800元的一等奖学金,而刘立荣却因为平时爱钻研围棋,又喜欢看经济管理类的课外书籍,学习成绩不过中等。但令李盛想不到的是,大学毕业分配时,尽管刘立荣专业成绩并不出色,但却有3家单位争着要连学生推荐表都填得一丝不苟的刘立荣。最后,刘立荣选择了去天津有色金属研究所,而学习成绩好的李盛好不容易才将工作落实在长沙前动力机车厂。

虽然分隔两地,但他俩经常联系。李盛觉得刘立荣分配到了研究单位,一定非常满意。哪想到1995年3的一天,刘立荣来到长沙找到李盛,说:“兄弟,我已经停薪留职,准备去广东了。你和我一起去吧!不然,年龄一大,岁月就冲淡了创业激情,到时就没有闯劲了……”李盛听了,也热血沸腾,当即答应一起闯广东。

南下淘金

第二天,李盛便办理了停薪留职手续。1995年3月30日,两个同窗好友坐上了南下的火车……

郁闷:做事“差不多”的我只能当下属

两人到了广州后,半个月过去,却没找到合适的工作,刘立荣建议去中山市。谁知到了中山市一个星期,两人身上仅剩下两元钱了,还是没找到工作。

他俩去中山小霸王电子智能科技公司应聘技术员。出门前,李盛不慎碰翻水杯,将两人的简历浸湿了。他们将简历放在电风扇前吹吹后,李盛把简历和其他一些东西放进了包里,就连连催刘立荣快走。可刘立荣却将简历夹进一本书里,又认真地压平整,才双手将书捧在胸前出门。李盛不由埋怨说:“你真磨蹭!”

到了小霸王公司的招聘现场,负责招聘的副总经过交谈,对他俩良好的专业知识很满意。然而,当他们递上简历时,李盛的简历不仅有一片水渍,且放在包里一揉,加上钥匙的划痕,已经不成样子了。那位副总不由皱了皱眉头。到了下午,刘立荣被通知去面试,并且应聘成功。没得到面试机会的李盛急得快哭了!刘立荣便说:“我们去问问吧!”当他们询问时,那位副总马上反问李盛:“你连自己的简历都没能力保管好,我怎能相信你工作上的能力?”一旁的刘立荣斗胆说:“他是我同学,专业如识比我过硬,既然你相信我,也应该相信他……”李盛这才得到了面试的机会。好在面试时表现不错,李盛最终也和刘立荣一样被小霸王公司聘为技术员。

上班后,两人又同住一间宿舍,一同上下班,一起吃饭,一起抽7元钱一包的红双喜香烟,甚至凑钱买了一套罗蒙西服轮流穿,工作上也互相帮忙。1995年6月底,技术主管让他俩各自设计一套程序。李盛凭着过硬的专业知识,一个晚上就完成了。次日上午,他在宿舍里美美地睡了一觉,下午一进办公室,发现双眼充满血丝的刘立荣仍在埋头查资料,他便说:“你还爱磨蹭!我来帮帮你吧!”在他的帮助下,刘立荣下午也完成了设计。李盛说:“差不多了,休息吧。”说完,他便又回到宿舍睡觉去了。

李盛离开后,已经两天一夜没睡觉的刘立荣又将程序检查了好几遍,即便觉得没有瑕疵了,他还是将图重新誊写了一遍,直到自己满意才罢休。第二天,技术主管看了图纸后,说:“从你们交上来的图纸看,小李的专业基础很扎实,可图纸潦草、脏乱,对工作太毛躁了;小刘的图纸一丝不苟,做事踏实,令人放心……”李盛不服气地想:图纸你看得懂不就行了,干吗非要清洁干净不可?真是吹毛求疵!

不久,为了制图方便,技术部准备更换一台新电脑,需要由他们在报告上签名。报告写好后,李盛大笔一挥,将自己的名字签得老大。刘立荣提醒说:“你的签名这么大,领导的名字往哪里写?再重新写一份报告吧。”李盛却说:“你太小题大做了吧?他们随便签在哪不行吗?”

1995年10月底,技术部一台车床起动时,起落架无法收回,导致无法运转。主管技术的副总检查后,发现原来是起落架上的插销没有拔出。故障排除后,刘立荣写了一份标准操作规范贴在机器上,不但写清不要忘记拔插销,而且对插销要怎么拔,拔出后后退几步,放在何处,都写得清清楚楚。李盛不屑地说:“你这不是多此一举吗?大家有了教训,应该已经记在心里了。”然而,副总来检查工作时,看到这张注意事项,高兴地说:“写得好,如果都像你一样,留下注意事项,新员工就会避免犯同样的错误了。”

差距初现

看到刘立荣对工作如此细心,李盛还是不屑地认为:你将自己累得要死,还不是和我领着同样的工资,何苦呢?然而,1996年11月,技术部主管辞职后,公司领导认为刘立荣办事认真细致,经手的事很少出错,于是将专业知识不如李盛的刘立荣提拔为技术主管,而给李盛只是象征性地涨了200元工资。

1997年10月,公司为了鼓励刘立荣,分给他一套两室一厅的房子。为他搬家的那天,李盛心里很失落:才进公司两年,他怎么就成了我的上司了呢?

如今他身家15亿,我月薪5000元

1998年4月,小霸王公司副总裁杨明贵准备去东莞,自己组建金立数码科技有限公司。他将自己一直赏识的刘立荣带到了东莞,担任副总。在刘立荣的推荐下,杨明贵也将李盛带到了东莞,担任技术部主管。

在新公司做了技术主管后,李盛工作轻松了很多。因此,他晚上常去当地的酒吧、洗脚城娱乐。有一个周六下班后,刘立荣叫住了他,说:“老弟,好久没下棋了,我们来几盘吧?”晚上9点多钟,他们下棋正在兴头时,刘立荣接到了一个客户的电话,他马上就说:“今晚到此为止了,我得去广州接一个重要的客户……”李盛不解地说:“这么晚了还去广州接人?没必要吧!”刘立荣却说:“如果接他,在这个小细节上让客户满意,能给公司带来效益,我有什么理由不去做呢?”

2000年3月,刘立荣在审查由李盛写的生产流程报告时,发现报告上居然将200元写成了200万元。他生气地说:“你怎么能这样不小心呢?如果我没检查出来,谁负得起这个责任?工作不能马虎啊,你换位思考一下,如果你是老总,你能将工作放心地交给出现这样错误的员工吗?”

尽管李盛对刘立荣的话点头称是,但心里仍不以为然。2000年5月的一天晚上,刘立荣一边与李盛下棋时,一边打电话对公司文员再三叮嘱:“从东莞去广州,你一定要给他买靠右边窗口的车票,这样他坐在车上就可以看到凤凰山;如果他去深圳,你就要给他买左边靠窗的票……”李盛不解地问:“到底接待谁呀,你这样婆婆妈妈?”刘立荣说:“台湾顺翔公司的杨总,他出门时不喜欢坐汽车而喜欢坐火车。这样,他一路可以欣赏凤凰山的风景。”李盛笑道:“这些小事你也装在心里,累不?”可令他没有想到的是,这件小事竞给公司带来了2000万元的业务。

原来,4个月后,台湾的杨总在和刘立荣聊天时,无意中问起这个问题。刘立荣说:“车去广州时,凤凰山在您的右边。车去深圳时,凤凰山在您的左边。我想,您在路上一定喜欢看凤凰山的景色,所以替您买了不同的票。”杨总听了大受感动,说:“真想不到,你们居然这么注重细节,和你们合作,可以让我放心了!”杨总当即将本已决定交给别的公司的2000万元订货单,改交给了刘立荣。李盛听说此事后,心里也很震撼!

2001年10月,金正数码公司发展为集团公司,刘立荣也升任集团公司副总裁。可不久,李盛却给公司带来了莫大的损失:生产部按技术部新开发的模具生产出样品后,才发现模具设计居然出了问题,本该在右边的零件被设计到了左边,一条价值400多万元的生产线全报废了。董事长得知后大发雷霆,做出了取消技术部所有员工年终奖、直接开除事故责任人李盛的处分决定。刘立荣忙向董事长求情,董事长最后虽然收回成命,但还是撤了李盛的职务,让他当普通的技术员。

几天后,李盛找到刘立荣,说:“我知道你对我好,但我不能拖累你,我还是离开公司……”刘立荣不好强加挽留。离开金正数码公司后,李盛在东莞市虎门镇兴利电子公司找到了一份做技术开发的工作。

不同的命运

2002年7月的一天,李盛与刘立荣在虎门镇相遇。刘立荣告诉李盛,自己准备辞职,筹资成立一家属于自己的通讯设备公司,并邀李盛和他一起干,可李盛摇了摇头,说:“我已经买了房子,不想再奔波了……”

此后,刘立荣招兵买马,创建了金立通讯有限公司。一晃7年过去,李盛仍只是一个技术员,依然抽着7元钱一包的红双喜香烟,挤公交车上下班;而刘立荣贵为金立集团的总裁,开着奔驰600轿车,成了亿万富翁。

2009年3月,兴利电子公司由于受金融风暴的影响破产了,李盛只得到深圳另找工作。此时,刘立荣的金立集团已成为国内手机企业的重要品牌,他自己身家15亿。李盛想过请昔日的哥们刘立荣帮助自己谋一份职位,却又觉得没脸相求。2009年9月,他在上海的一家电子公司重新找到了工作,月薪5000元。

接受采访时,李盛反省说:“以前,我总觉得刘立荣职务扶摇直上,事业飞黄腾达,是一种偶然和幸运;我现在才明白,他是因凡事注意细节,不断进步。细节决定命运啊!”

细节决定命运,李盛的反思确实有道理!无论在生活中,还是在工作上,是否能够注重细节,绝对影响着我们每个人的命运。年少时同样高矮的伙伴,每个月可能只会比自己高一毫米,差距毫不起眼,可十年八年后,他可能就会长成巨人,而自己却形同侏儒。刘立荣的成功,肯定是因为他有很多优点,但他在职场从起步到成为老总这个人生最重要的跨越阶段,注意细节,绝对是他赢取人生每一步的重要原因。因为,注重细节不仅仅是一种习惯,更是一种高级职业精神,它能引领你不断完善自己的人格和能力,一步步走向成功!刘立荣的成功经验,值得我们每个职场新人学习和深思!

Posted in 劝训 | 细节决定成败已关闭评论