根据必也正名的思想,写出你处理父子合集经争国的处理方案,并思考现实生活中如何正确处理

出版日期:2011 年1月 开本:16开 页码:336 蝂次:3-1 编辑本段 编辑推荐 传承大师智慧 领悟技术本真 经典名著 翻译良品 典藏不二之选 编辑本段 内容简介 有人说c++程序员可以分为两类读过effective c++嘚和没读过的。世界顶级c++大师scott meyers成名之作的第三版的确当得起这样的评价当您读过这本书之后,就获得了迅速提升自己c++功力的一个契机 茬国际上,本书所引起的反响波及整个计算机技术的出版领域,余音至今未绝几乎在所有c++书籍的推荐名单上,本书都会位于前三名莋者高超的技术把握力、独特的视角、诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效这种奇特的现象,只能解釋为人们对这本书衷心的赞美和推崇 这本书不是读完一遍就可以束之高阁的快餐读物,也不是用以解决手边问题的参考手册而是需要您去反复阅读体会的,c++是真正程序员的语言背后有着精深的思想与无以伦比的表达能力,这使得它具有类似宗教般的魅力希望这本书能够帮您跨越c++的重重险阻,领略高处才有的壮美风光做一个成功而快乐的c++程序员。 编辑本段 作译者 Scott Series”顾问编辑以及《Software Development》杂志咨询板成員。他也为若干新公司的技术咨询板提供服务Meyers于1993年自Brown大学获得计算机博士学位。侯捷是计算机技术书籍的作家、译者、书评人 编辑本段 目录 译序 vii 中英简繁术语对照 ix 目录 xvii 序言 xxi 致谢 xxiii 导读 1 1 让自己习惯c++ 11 accustoming 按孙中山先生的说法这个世界依聪明才智的先天高下得三种人:先知先觉得发奣家,后知后觉得宣传家不知不觉得实践家。三者之中发明家最少最稀珍最具创造力。正是匠心独具的发明家创造了这个花花绿绿的計算机世界 以文字、图书、授课形式来讲解、宣扬、引导技术的人,一般被视为宣传家而非发明家然而,有一类最高等级的技术作家不但能将精辟独到的见解诉诸文字,又能创造新的教学形式引领风骚,对技术的影响和对产业的贡献不亚于技术或开发工具的创造者这种人当之发明家亦无愧矣。 Scott Meyers就是这一等级的技术作家! 自从1991年出版《Effective STL》让他更上高楼Meyers擅长探索编程语言的极限,穷尽其理再以一支生花妙笔将复杂的探索过程和前因后果写成环环相扣故事性甚强的文字。他的幽默文风也让读者在高张力的技术学习过程中犹能享受“閱读的乐趣”——这是我对技术作家的最高礼赞 Java》纷纷在书名或形式上“向大师致敬”。 睽违8年之后《Effective C++》第三版面世了我很开心继第②版再次受邀翻译。Meyers在自序中对新版已有介绍此处不待赘言。在此我适度修改第二版部分译序援引于下,协助读者迅速认识本书定位 C++ 是一个难学易用的语言! C++ 世上没有白吃的午餐!又要有效率,又要有弹性又要前瞻望远,又要回溯相容又要治大国,又要烹小鲜學习起来当然就不可能太简单。在庞大复杂的机制下万千使用者前仆后继的动力是:一旦学成,妙用无穷 C++ 相关书籍车载斗量,如天上繁星如过江之鲫。广博如四库全书者有之(The C++ Programming Language、C++ Primer、Thinking in 相当基础的程序员有着立竿见影的帮助其特色是轻薄短小,高密度纳入作者浸淫C++/OOP多年嘚广泛经验它们不但开展读者的视野,也为读者提供各种C++/OOP常见问题的解决模型某些主题虽然在百科型C++ 语言书中也可能提过,但此类书籍以深度探索的方式让我们了解问题背后的成因、最佳解法以及其他可能的牵扯。这些都是经验的累积和心血的结晶十分珍贵。 《Effective C++》僦是这样一本轻薄短小高密度的“专家经验累积” 本中译版与英文版页页对译,保留索引偶尔加上小量译注;愿能提供您一个愉快的學习。千里之行始于足下祝愿您从声名崇隆的本书展开一段新里程。同时我也向您推荐本书之兄弟《More Effective C++》,那是Meyers的另一本同样盛名远播嘚书籍 侯捷 于台湾新竹 编辑本段 序言 1991年我写下《Effective C++》第一版。1997年撰写第二版时我更新了许多重要内容但为了不让熟悉第一版的读者感到困惑,我竭尽所能保留原始结构:原先50个条款中的48个标题基本没变如果把书籍视为一栋房屋,第二版只是更换地毯灯饰重新粉刷一遍洏已。 到了第三版修缮工作进一步深入壁骨墙筋(好几次我甚至希望能够翻新地基)。1991年起C++ 世界经历了巨大变革而本书目标——在一夲小而有趣的书中确认最重要的一些C++ 编程准则——却已不再能够由15年前建立的那些条款体现出来。“C++ 程序员拥有C背景”这句话在1991年是个合悝假设如今C++ 程序员却很可能来自Java或C# 阵营。继承(inheritance)和面向对象编程(object-oriented programming)在1991年对大多数程序员都很新鲜如今程序员已经建立良好概念,異常(exceptions)、模板(templates)和泛型编程(generic programming)才是需要更多引导的领域1991年没人听过所谓设计模式(design patterns),如今少了它很难讨论软件系统1991年C++ 正式标准才刚要上路,如今C++ 标准规范已经8岁新版规范蓄势待发。 为了对付这些改变我把所有条款抹得一干二净,然后问自己“2005年什么是对C++ 程序员最重要的忠告”答案便是第三版中的这些条款。本书有两个新章一个是资源管理(resource management),一个是模板编程(programming with templates)实际上template(模板)这東西遍布全书,因为它们几乎影响了C++ 的每个角落本书新素材还包括在exceptions(异常)概念下编程、套用设计模式、 以及运用新的TR1程序库设施(TR1於条款54描述)。本书也告诉大家在单线程系统(single-threaded systems)中运作良好但可能不适用于多线程系统(multithreaded systems)的某些技术和做法本书半数以上内容是新嘚。在此同时第二版大部分基础信息仍然很重要所以我找出一个保留它们的办法:你可以在附录B找到第二、第三两版的条款对应表。 我努力让本书达到我所能够达到的最佳状态但这并不表示它已臻完美。如果你认为某些条款不适合作为一般性忠告或你有更好的办法完荿本书所谈的某件工作,或书中某些技术讨论不够清楚不够完全甚或有所误导,请告诉我如果你找出任何错误——技术上的、文法上嘚、排版印刷上的,不论哪一种——也请告诉我我很乐意将第一位提出问题并吸引我注意的朋友加入下次印刷的致谢名单中。 即使本书條款个数扩充为55这一整组编程准则还谈不上完备。然而毕竟整理出优良准则——几乎任何时间适用于任何应用程序的准则——比想象中困难得多如果你有其他编程准则的想法或建议,我将乐以与闻 我手上维护本书第一刷以来的变化清单,其中包括错误修订、进一步说奣和技术更新致 谢 《Effective C++》已经面世15年了,我开始学习C++ 则是在书写此书的前5年也就是说 "Effective C++项目" 已经发展两个年代了。此期间我得益于数百(數千)人的深刻知识、对我的建议与修正,以及偶发的一些目瞪口呆的事绩这些人帮助我更加完善《Effective C++》,我要对他们全体表示感谢 峩已经放弃追踪“在哪儿学到什么”的历史,但永远记得有个公众信息来源不断带给我帮助:Usenet C++ newsgroups特别是comp lang c++ moderated和comp std c++。本书许多——也许是大多数——条款得益于这些讨论群所突出的若干技术想法和后续调查与诊疗 关于第三版新内容,Steve Dewhurst和我一起讨论了最初的条款名单条款11中关于“藉由copy and-swap实现operator=”的构想来自Herb Sutter在此主题的作品,像是《Exceptional Abrahams身上更多了解了Boost的检评过程(条款55有一份摘要) 上面所说关于我向谁或从某处学习某一技术,并不必然表示谁或某处就是该技术的发明人或发表处我的笔记还告诉我,我也使用了来自Steve Clamage, Antoine Trux, Timothy Knox和Mike Kaelbling的信息可惜这份笔记没有提到如何鉯及在哪儿学到什么。 第一版草稿由Tom 检阅一份不够洗炼(而且可能尚未完成)的手稿是件吃力的工作在时间压力之下进行只会使得它更困难。我要感谢这么多人愿意为我做这件事 如果对讨论素材缺乏背景,而又期望捕捉手稿中的每一个问题检阅工作将更加困难。令人驚讶的是还是有人选择成为文字编辑Chrysta Meadowbrooke是本书的文字编辑,她的周密工作揭露出许多逃过其他每一双眼睛的问题 Leor Zolman在正式检阅前先以多种編译器检验所有代码,在我校订手稿之后又做一次如果书中仍然存在任何错误,全是我的责任Karl Wiegers和(特别是)Tim Johnson提供我快速而有帮助的反饋。

内容营销策略简单有简单的好處


小编发现,无论是在最近的数字

趋势里还是在一次行业活动的主题演讲中,如果我们想在线上的

中脱颖而出就会一直被灌输“内容為王”以及“务必要像出版商一样思考”这些无往不胜的大道理。


  听到这些我们很容易点头附和,然后撸起袖子准备一头扎进内嫆营销业务中大干一场。当然一开始你会感觉非常棒,会忍不住放声大喊:“我们正在创造内容!”然后不停地发布博客、视频、播客、电子书以及大数据图标各种形式的内容最后你发现有些事儿就在那摆着,并不是我们努力后的结果根据内容营销协会最近的一项数據显示,88%的

者都会使用内容营销手段而 76%的营销人员表示,今年预计要比去年制作更多的内容


  但是有个问题:仅仅从内容的生产量來考虑是远远不够的。产量更多并不意味着更好也不意味着能够超出预期效果。在如今内容生产水平不断飙升之际内容营销协会的另┅组数据可以说明些什么:仅有30%的 B2B市场营销者认为,公司实行的内容营销手段是有效的这个数据比去年下降了 8个百分点。这可能是因为虽然我们正在生产比以往更多的内容,但真正掌握文件化(即证据充分的)内容营销策略的营销人员却在减少(今年32% VS 去年35%)即使同样嘚研究一再显示,在几乎所有的内容营销领域那些将自己的策略进行规范化的营销者,取得成功的几率更高


总之,将一个被充分验证過的策略(documented strategy)运用到你的工作中会帮你创建更加有效的营销内容。

同时内容策略也不需要被整得很复杂,因为根本没有必要


  为叻能够说明这个观点,咱们需要回到英国诗人吉普林1902年创造的诗歌《大象的孩子》(The Elephant’s Child)中寻找启发:


  “我有 6个忠实的男仆(我知道嘚所有事都是他们教的);


  他们的名字分别是:

What(是什么)、Why(为什么)、When(什么时候)、How(怎么办)、Where(哪里)以及 Who(是谁)

  峩们也可以利用吉卜林的“6个男仆”理论(也称为5W1H问题诊断法;此方法为头脑风暴法的一种更注重挖掘问题而不是寻找答案)来起草一項内容策略。


  尽管这5个W和1个H都值得我们注意但将重点关注Why、Who以及What却可以建立牢固的基础。它们也可以帮助我们确认内容是否集“企業效益最大化”与“用户识别”于一体


1、Why((为什么)

——就像美国作家SimonSinek说的,我们不得不“带着为什么出发”即你做一件事情的理由。当这个说法运用到内容策略中时“Why” 就是你的业务目标——你为什么正在这样做。没错这就是优质内容创建过程中关于“企业效益朂大化”的部分。


  公司在发展过程中一般有6个业务目标——品牌创建、社区建设、公共关系、客户服务以及销售指标和潜在客户开发而运用内容营销可以帮助我们实现6个业务目标中的一个。只是你现在需任意选择其中一个作为一个定项(固定的 “锚”)的同时来回答吉卜林的其他问题。

——在“企业效益最大化”已经确认的情况下我们现在需要确认生产的内容是可以被用户识别的,即是否满足用戶需求好内容必须能够解决用户的问题。


  首先问问自己哪些人是你正在服务的?在目标已经确认的情况下请用最基本、最直接嘚方法来检验这个问题。还有定位够明确吗?证据更充分吗是否需要再深入一些?这些问题敲定后再对“他们是谁”“什么对他们佷重要”这些内容进行充实,方法包括定量统计以及关于定性消费心理的调查


3、What(是什么)

——最后,基于你的业务目标及目标用户伱需要思考的是“如何生产出能满足这两个条件的内容”。什么样的内容形式传播效果最好这将上很大程度上影响用户心中的品牌形象。


  此外我们需要让那些与“双标”相符的内容策略更具焦点化。如果你将业务目标设定为“品牌建设”那么请忽略其他所有同行囸在做的事情,只集中于一个问题:对你的品牌来说什么是最好的,最有利的最适合的?


  这种流程看似简单但却很少有营销者對自己做的事有这样简单而清晰的系统概念。Why(为什么)、Who(是谁)以及 What(怎么办)为你塑造策略框架提供了一个看似简单却无比牢固的基础这个框架将会助你创造出同时满足用户与企业需求的合适内容。


  好了从这里开始,你可以利用吉卜林的其他“男仆”来更进┅步充实自己的内容策略——When(这个发生了吗频率是多少?)Where(在哪里发生的?内部还是外部)以及 How(我们要把这个搞定吗?将如哬衡量是否成功)


  如果想进行更加有效的内容营销,我们必须利用明晰的策略来斗智斗勇当下没有人能够掌握无限的市场资源,吔没有能力做到面面俱到因为用户面对

的信息轰炸已经变得不知所措。如果继续在一片本来就喧嚣混乱的网络市场盲目地创建内容除叻不见成效外,也是一种对公司不负责任的表现


  总之,如果想生产更好的内容就需要让营销手段更具有战略性,即使这可能意味著我们不再是高产


平台,我们有各种营销推广服务

等等,均有专业团队为您量身打造适合您企业的营销方案

标签:

你知道吗?微信标题决定了文章打开率的80%


前阵子做了一个关于微信公众号的调查调查显示的结果非常出人意料:微信公众号一般的咑开率仅为十分之一,而且实际上保守估计要在此基础上再减少


  然而另一项调查却表明:标题决定了文章打开率的80%!


  虽然不一萣非常精准,不过可以反映的一点是:新媒体时代标题真的非常重要。


都探讨过文章该如何取标题今天小编在整合海量信息的基础上,做了一个系统的梳理从如何取标题、标题的常用句式、修改方法、

等四个方面进行详细阐述。(还有些是基于实践过程中得出的反馈忣测试)

  一、提取主要信息  

  一篇文章出来以后一定是有一个主线在讲一件事情。第一步要做的是中学阅读题第一题这篇攵章主要讲了什么,中心思想是什么


  放到现在,提取出文章所讲


  比如咪蒙最近一篇文章《世上所有的婆媳问题都是因为这5句話》。


  概括一下本文主要讲了现代社会婆媳为什么会出现问题。表达了现代人迫切想解决婆媳关系的心情


  好的,这样一问主要信息是,婆媳问题如何解决。


  咪蒙大师直击痛点直接告诉你这个问题的根源,因此阅读量非常庞大

  二、标题的几种句式  

  强调了基础的内容要点以后,我们来研究什么形式的标题更加吸引普罗大众呢以下总结了目前来说受欢迎标题所涵盖的元素。




  3、开放式(有悬念)




  6、知名(有名的人





  我们来举几个例子具体:


  《王兴:我最近正在读1本书,思考3个问题》

  这個标题的组合元素:名人+数字+悬念(读什么书思考什么问题?)


  《朋友我最为什么不帮你做logo?》

  反问+用户痛点(各个領域的人都会在自己专业领域遇到类似的事情而设计师最为典型)


  《一辆自行车卖39999元,李克强竟然还自愿给它打广告什么情况?》

  数字+名人+反问+开放式悬念


  《别TM再让我给你娃投票了!》

  直击痛点引起用户共鸣


  《我有10个职场经验,价值100万泹今天免费》

  数字+价值体现(今天免费,加深价值体现)


  《闺蜜这两个字怎么就成了贬义词了呢?》

  痛点内容(闺蜜越來越多的被推上社会热点部分代表很能引起大家的情感共鸣)


  《别人公司开的是年会,你开的只是会》

  代表性的一类职场人的玳表性现状直击痛点


  《Uber在和滴滴缠斗,跟它混的小弟公司却以20亿美刀上市了》

  热点+知名公司+数字


  不同类型的账号使用適合自己的不同元素组合比如猎掌门强调新媒体方法论,新媒体圈职场干活标题首先强调实用,在讲一个什么事情要说点什么有用嘚东西,另外是加上数字来强调价值另外一个基本原则是开放式结尾,切忌闭合式给用户留有更多空间,点进来看具体的内容

  彡、修改标题的几种方法  

  1、自我审查,反复读  

  脑海里拟定初稿标题时一定要自己发出声音地读出来,才能感受是否通暢无论新媒体在内容上有多么的宽容,但也一定是符合基本事实且没有语法错误的反复多读几遍通常就可以感受标题的感觉好不好,通不通畅

  拆解的意思是,当你拟定了好几个标题的时候把主谓宾和定语的词汇单拿出来,看哪个的


  比如《黄晓明钦点罗永浩点赞转发,滴滴顺风车发布会作者:如何从小白到职场PPT高手》

  关键词:黄晓明、罗永浩、滴滴顺丰发布会、小白、ppt高手


  《黄曉明钦点ppt作者教你如何从职场小白到ppt高手》

  关键词:黄晓明、ppt高手、职场小白


  一个词一个词提取出来就能看到所包含信息吸引人嘚程度。

  一个人提取的标题是根据经验对主要信息的提取把标题丢给同事、朋友和微信群的小伙伴们看看,当有好几种形式或者元素无法取舍的时候看大家对哪种更感兴趣。


  比如小编有个朋友有次写了两个标题


  《一篇价值5万的微信排版技巧今天免费送给伱》


  《3年新媒体排版经验,我用一篇文章告诉你》


  朋友怎么看怎么觉得别扭了点后来扔到了自媒体作者群里,问大家觉得哪个哽合适其中一个小伙伴提出:


  《3年新媒体排版经验,价值5万今儿免费送你!》


  这个不仅get到了点,而且解决了无法取舍的问题


  于是朋友欣喜若狂,稍作口语化调整得出的标题是《3年微信排版经验,价值5万今天免费送给你!》(因为写的就是微信排版,所以新媒体排版不够准确并有欺骗嫌疑)


  这就是人民群众的力量有的时候自己一个人想容易陷入死局,看不到最本源的东西这种時候不如找朋友帮忙看看,旁观者清

  4、测试(预览)  

  当少数人通过了1-2个比较满意的标题的时候,怎么测试到底哪个打开率哽好呢可以做出两篇预览来直接丢进自己的读者群,默不作声的情况下过十几二十分钟,看两篇阅读量这是最直接的测试。


  当嘫测试完了记得删除并稍作解释,避免文章还未发布就被传播或者标记原创所以这个群的要求一定是种子用户群,值得信任并且熟悉公号调性代表了大多数粉丝。另外在时间上可以是大家相对活跃的时候不能选在群里静寂无声大家都去吃饭或者睡觉了,这样抽样也鈈准确

  四、起标题注意事项  

  1、标题不宜过长。  

  第一点是标题过长微信排版呈现的效果不够好


  第二点是太长读起来太费劲

  2、标题切忌和文章内容无关  

  任何一篇文章都可以提取出元素做成爆款式标题,切忌文章内容和标题不相符或者差别太大


  第一种,内容名不副实


  比如,《ppt排版教程价值5万,今天免费送给你》当读者点进去以后,内容的确讲了ppt排版内嫆可是相对基础,是应届大学生都可基础掌握的这样读者容易判定账号原创内容制造能力不够,缺乏价值随手就取关了。


  第二種内容与标题无关。


  在大家都在说标题决定打开率的年代很多作者会提取文章中劲爆的元素作为标题,当读者点进去以后发现和攵章内容相关度非常低文章质量也达不到内心期待。这种行为叫做伤用户出现一次掉一次粉。

  3、标题不能低俗污秽  

  幽默囷低俗之间的微妙区分只能在人的感受里体现在取文章标题时,无伤大雅的幽默大家会心一笑刻意博眼球的低俗是无法持续生产优质內容的。


  以上是琢磨标题时候小编总结出来的一些经验,步骤看起来复杂实际上养成习惯的话这样思考处理下来并不会花太多时間,并且随着自身的积累对于文题的把握也会越来越好。


  关于微信公众号的问题不知道您有没有觉得不得其门而入呢?点击

服务为您的企业提供微信管理、运营、推广、销售一条龙服务。

标签:

互联网时代的五大媒体营销策略

  人类社会的開展假如要贯穿一条主线的话那么财富无疑即是其间之一,它一向伴随着历史并且一直在行进当中任何一种景象你都可以从财富这个視点去解读,而这其间自然也包含了


小编觉得无论什么样的营销,说白了都是为

经济而效劳的下面我们来分析分营销的策略。


一、古時的招牌本来即是一种营销它的功用与作用就是告诉大家这里有啥。

  而今日这种招牌的作用已经有了局限性需要在更高一个层面仩去给大家诠释

以及产品的特性与形象,这种广度与深度已经远远逾越了传统意义上的广告甚至可以说是到达了一种水银泄地无孔不入嘚状况。


二、互联网年代下的媒体营销有很多种方法或明或暗,或深或浅或奇妙或直白,不同的方法与不同的内容再凭借不同的手法从全方位的视点来为产品经济而效劳着。

  包含一些公司商家或是安排都在这个年代之下运用媒体营销树立着本身的形象与效劳,包含一些明星在微博上宣布一个对于驾车不喝酒的图文马上就有相关的交 警大众号跟风而上进行一种媒体营销,这不得不令人叹服互联網力气


三、事实上,公司商家或安排在运用这些媒体来传达并进步知名度的一起它本身即是一种媒体营销的直接参加方法。

  你可鉯将其解读变成一种声响而当很多声响交错在一起时,这种讨论的氛围就构成网友们的参加以时一些互联网大伽的参 加,终究让大家嘚认知层面得到了必定进步很多声响渐渐的影响同化构成一种合声,或许这也是媒体营销的一种能量所及


四、不管是何种声响,也不管以何种方法来进行媒体营销其终究都是到达一个方针,那即是为了产品或是效劳而宣扬推行

  让更多的人来认同并提出定见,对於商家而言他所介意的即是品牌的商场形象及出售额度提升的百分点,对于一些机关安排即是形象的包装以及社会大众对其效劳的监督这本身即是一种良性的措施与方案。

  五、重视互联网年代下的媒体营销这即是一种趋势,更是一种与时俱进的建议  

  很哆商家重视本身实体运营的一起,也进军网络当中其意图也是积极参加这种互联网的大趋势,由于互联网现已变成一种全人类共同认同嘚发音渠道!


让您甩掉琐事,专注于核心事业的发展

标签:

自媒体突破瓶颈的四大方法


成为营销的一个重要的分支,自媒体人主要通过优质内容吸引用户、多渠道

用户、投放广点通有钱任性砸用户、频繁活动沉淀用户这四种方式来运维公众号但是,优质的内容不等于粉丝必定能够快速增长多平台拓展需要运营团队齐心协力,广点通投放带来的粉丝质量没有保障频繁的活动并不昰长久之计,怎么突破运营瓶颈成为自媒体人前进中的一大难题!


  在某次活动中,针对自媒体的运营困境几位知名自媒体人分别表述了自己的看法。


“为什么做不好自媒体”——流量思维绑架

  自媒体运营主体分为个人与企业但各自都有两个维度的运营模式:個体(原创、草根),企业(服务、品牌)作为千万级公号“移动

”的运营者契约认为,不该被流量思维绑架应做好用户沉淀。并分析了几点你做不好自媒体的原因:

无论你是原创还是搬运工如果摊上懒、兴趣之外、积累尚浅、内容无价值、追求无聚焦点、过快追求賬号商业化……这些毛病,无法让喜欢的人更喜欢你你就只能坐等取关了;

没搞清楚服务谁?是做营销还是做服务你会要团队1月涨10万粉,还是要他懂互联网玩法某红包活动一天暴涨400万粉丝,流量思维见效快可抓不到有效用户,更无精细化运营、互动这样无存活率,被淘汰是显而易见的


“企业如何做好自媒体?”——做营不做销

  据说很多企业自媒体运营者是这样的:惨!每月4K,别人一篇广告费=小编一年工资但是,却有人完成:牛!180天培养百万级阅读,400万以上微信矩阵粉丝


  老套路=找死!传统企业如何取互联网流量海中一瓢饮?要懂得生态、敢为人先自媒体绝对不是销售工具,而是品牌发声器某运营总监毛先生分享了五大法则“气、法、术、道、势”:看到去并效法去做为气;通过大量的气转化为动力,去实践为法;把冷冰冰的账号品牌形象化为术;通达人性之上无穷尽的答案為道;势则为长期的积累与认可,坚持并认可它的有价值


视频自媒体如何实现商业化?—— 生产能力

  视频自媒体抓住了一个风口随着移动互联网WiFi、4G的普及、资费下调,流量在未来是无需担心的问题视频自媒体化也应该是未来很好的创业空间。


在传统媒体待了20哆年的丁先生给出了这样的回答:首先团队要有生产能力,从作品中就可以看到正向的投入产出(该团队共发布105条腾讯平台播放量已达1700W ),视频传达会成为一个趋势;其次将广告创意,转诉成一种美好的生活态度你会拒绝发现美吗?


  面对自媒体内容沙漠传统媒體账号那些令人心生畏惧的头条

,丁先生更希望用镜头记录身边美好、自由的故事


微信提升线下活动转化?——做自己

  “网友不见媔中间可能永远隔着一层纸”,对很多运营者来说“我线上吸引了很多关注,可线下就是转化不出来”又是这个屡问不爽的问题。


  某市场总监佟先生给出了造成这个问题的几点原因:


  时间成本:是否值得花一两个小时的路程赶去听分享;


  费用问题:收費的会估量成本,免费的得不到珍惜;


  主题受众面窄:太小众无受众活动质量难以判定。


  那么具体该怎么做?提升转化率离鈈开这5个关键点:

地域、性别、年龄、职业


2、建立线上交流平台:
3、线下活动主题垂直:

避免大而全的活动主题要小而美


4、线上线下相互导流:

通过各种形式加强与粉丝的交流互动。


  在愈加开放也愈加成熟的微信平台上简单粗暴的涨粉方式并不是长久之计,自媒体唯有深耕运营之道才能杀出重围摸索出适合自身的长足发展之路。


  自媒体是这几年的大势所趋也是一种非常好的营销方式,如果您一时觉得不得其门而入的话可以点击

服务,有专业的团队可以为您的

为企业提供管理、运营、推广、销售一条龙服务。

标签:

  微场景有多好用包括

/功能介绍、游戏互动、邀请函……图文并茂、轻松有趣,简单的一个链接分享就能刷爆


  然洏理想很丰满现实很骨感,你绞尽脑汁策划的微场景可能并不受用户待见到底问题出在哪?什么样的微场景才会让用户欲罢不能呢

  一、不要考验用户的耐心  

  用户打开微场景的耐心多有限?腾讯TGideas曾对此进行用户行为调查数据显示,加载时间超过5秒就会囿74%的用户选择关闭页面,而且只有近半的用户会阅读完整个H5的内容页面层级越深入用户流失的越多,且前两页的流失率最高84.22%的用户在苐一个页面就会选择去留。因此记住以下几个Tips:


  1、在不影响内容展示的前提下,尽可能缩短首页加载时间;


  (1)页面设计时注意图片的尺寸


  (2)复杂多变的动效不一定是好的首页的操作和选择越简单越好


  2、加载页可以适当增加一些互动、或有趣的小动畫,以减少用户在等待过程中的失去耐心;


  3、好的设计要放在最前面先发制人夺取用户注意;


  4、减少页面层级设置(页数不要呔多),对商家来说根据微场景的功能用途进行调整,一般控制住6-12页尽可能简洁、清晰地表达全部内容有利于提高页面转化率。

  ②、把用户当宝宝尽量满足+尽量简单  

  许多运营人员在策划微场景时总是会想:用户会不会对我的微场景感兴趣、如何让他们自願分享、这里加个特效简直炫酷、如何结合营销内容比较自然……然而,事实证明这些设想——


  用户只关注与自己相关的东西(这种楿关一般包括内容上的兴趣感互动上的参与感,形式上的

以及结束后的分享欲)


  因此,在策划微场景内容时你更应该关注:


  1、你的用户是什么的群体,思考什么样的内容最能引发他们的共鸣如U品生活馆人人店的粉丝/分销商多为妈妈群体,亲情、温情、女性視角的内容较能引起她们的兴趣


  2、充分考虑用户的操作习惯,如翻页、点击等细节了解什么样的页面布局和设置让用户操作起来哽便捷舒适。


  3、考虑到用户使用场景的多样性如果要加背景音乐,尽量不要太粗暴有一点循序渐进最好,给用户留时间在骚扰别囚之前可以关闭


  4、如果你实在无法把握用户的口味,结合时下的热点利用话题效应,也是一个省事又讨巧的好方法如前段时间,一点资讯推出“定制我与宋仲基的专属频道”H5页面深受女性用户欢迎,还在微博平台上发起#我是宋夫人#热门话题引发了一场百万粉絲抢老公的年度大戏。

  三、给用户一个分享的理由  

  不管是转发给朋友还是分享到朋友圈让用户主动去分享你的带有广告意菋的信息在自己的社交群体中当然是最理想的。用户为什么要分享什么样的内容能够刺激用户分享?一般有以下几种:


  1、最直接的利益驱动分享有奖或者需要众筹等,多用于商家活动;


  2、内容有趣且具备社交属性如朋友圈曾流行一个微场景“猜猜哪个字是你萠友写的”,设计这类微场景时可以在字中展现品牌,此类微场景多用于吸粉;


  3、自己参与游戏或者测试得到的结果让人有展现給别人的欲望。


  运营和营销从来都是一门很深的学问,或者您可以点击

服务从平台搭建到运营维护,为企业提供专业的一条龙服務

标签:

互联网不是万金油,五大痛点分析


现在似乎成为了大小行业都不能缺少的必然手段但实际上并非每个人嘟能跨过那些看似简单的门槛,甚至有些人连门都未摸得着


  归根究底,是对于自身经营行业的核心价值缺乏深刻认识认为互联网昰万能药,认为电商是万金油


  无论是互联网还是移动互联网,所有

的要求并非永恒不变的价廉物美而是参差多态应该找准自己的目标客户,而非毫无目标地引入互联网营销


已经红海一片,但我们可以从传统产业寻求一个突破点再利用互联网工具和互联网的营销掱段让这个点不断放大,这样的创业就有章有法了


  雷军在前几天的一次采访中说:“互联网是一种思维,是一种考虑问题的方法鼡这种思维武装传统产业将获得的成绩可能也是颠覆性的,因而“互联网+传统产业”会极大地推进中国传统经济的转型升级会巨大的提高整个运作效率,会进一步增强中国的全球化竞争力”


  然而,对于很多创业者来说选择一个怎样的切入口,并如何避开创业过程Φ的各种坑这是至关重要的问题。互联网创业已经红海一片但我们可以从传统产业寻求一个突破点,再利用互联网工具和互联网的营銷手段让这个点不断放大这样的创业就有章有法了。


  下面企办小编就列举一下互联网与传统行业结合的“几大痛点”,希望这些痛点能够帮助刚踏入互联网创业的朋友们

  痛点一:做好产品  

  明白自己到底在做什么样的产品,产品在互联网上又是怎样的萣位具体点说,就是它要让用户知道你的产品相较于传统产业的产品有什么不同其次,是产品质量互联网产品不同于传统产业的产品,只有做极致的产品才有可能在互联网中制胜


  就像现在的小米,不要忘了它再怎么牛,也是基于他过硬的产品质量试想如果囿一天,小米手机做得和国内三流手机一样的时候还会有这么多米粉继续追随小米吗?在产品的生产上我们可以用互联网思维,考虑讓用户提供建议和参与产品的设计将大大提高用户对传统产业转变成互联网产品的一种亲切感。


  除了你企业力推的产品之外还有┅款产品你不要忘了,那就是你的网站它也是一款至关重要的产品,一定要做出一个高质量的网站无论是在网站运行速度、页面设计、产品展示上都要下足功夫,要让用户一用这个网站就知道你的产品对他是有意义、有帮助的   怎么让这么多人记住你?我们想一想人们是怎么记住魅族的、是怎么记住乐视超级电视的?答案就只有一个做互联网品牌,传统产业转型做互联网首先一定要做自己的品牌而且是做互联网品牌。我们来看传统产业的品牌路径是:先砸知名度,再做美誉度最后是维护忠诚度。互联网是产品即品牌它嘚路径是先做美誉度,然后再做知名度而忠诚度往往却很难建立。


  所以我们首先应当考虑的是如何去做产品的忠诚度让产品走进鼡户的内心,到一定程度的时候我们再去做知名度做品牌,这样才能在用户心中形成很强的品牌印象最终要的一点是,在这个互联网時代要让别人记住你的话,那就是做储你自己的互联网品牌

  痛点三:做好自媒体  

  互联网产品是以互联网为主要渠道,用互联网与用户保持交流所以一定要利用好社会化媒体,为自己的产品在互联网上做好营销下面我们来看一张社会化媒体图,看我们做互联网产品时可以利用哪些社会化媒体而这些,在传统产业一般是不使用的


  笔者认为,在众多社会化媒体中最重要的是要用互聯网思维做好自媒体,我们可以依托微博、微信、QQ空间、论坛等社会化媒体平台建立起自己产品的自媒体矩阵微博和QQ空间都有很强的媒體属性,传播是一对多很适合做事件传播;微信是基于通讯录的好友关系,是一对一的传播适合做客服平台。


  但是建立起来后的洎媒体切记不要发布广告,一定要切记因为没有任何一个用户关注你的自媒体,是为了看你广告的我们要做内容,可以做产品的内嫆做自媒体运营的内容,同样也可以让用户产生内容。久而久之自媒体的建立可以让产品口碑得到扩散。


  我们来看国内一家将傳统产业转型成互联网产品的公司在其产品在互联网首发的前一个月时间,借助微博、微信、QQ空间等新媒体进行营销在上面做了大量笁作,“这个时代最好的卫生巾”、“一万盒午后卫生巾即将开抢”、“国内最贵的卫生巾是怎么诞生的”等消息在其官网和这些新媒体仩频频出现不断造势,并成功借助社交网络实现病毒式口碑传播在其首发当天,一万盒午后卫生巾便在3 分17秒之内宣告售罄可见社会囮媒体所带来的传播力量之大。

  痛点四:做好口碑  

  互联网产品口碑的重要程度不言而喻好的口碑可以成就一个品牌,而不恏的口碑则无法让一个产品形成品牌传统产业的产品如果在互联网上形成口碑后,其口碑的传播速度不亚于朝廷台广告的传播速度我們知道,口碑是互联网思维的核心而口碑的本质是用户思维。


  在传统商业时期商家和消费者之间的关系是以信息不对称为前提的,买的没有卖的精以前你只要把东西忽悠出去,让客户购买就行了但在互联网时代,环境变了规则变了,再用原来跟客户打交道这套方法搬到互联网上发现已经没用了。所以一定要形成用户的概念,当传统产业进军互联网的时候要想想谁是你的用户,因为你的ロ碑永远是你的用户在帮你传播只有抓住你的用户,才能做好你的口碑现在更流行的一种说法是做用户更要做粉丝,让用户做你产品嘚粉丝他们对于你产品的传播效果将会更好。

  痛点五:做好服务  

  第一次购买很重要第一次购物的好坏决定着用户对你的購买印象。传统行业卖产品一般是把产品卖了就没什么事了,但是在互联网时代当你在卖东西的时候,你需要为其提供一些列相关的垺务我们可以称其为互联网服务,诸如像:便捷的物流服务热情的客服服务,有保障的售后服务等等因为在互联网时代中,用户在關心产品、价格的同时也会关心你可以提供怎样优质的服务而这些服务会直接影响到他们对你整体的印象,从而间接影响产品的口碑所以在做互联网产品时,切记做好你的服务体验而不是仅仅完善你的服务体验。


小编的一家之见但希望能对刚踏入互联网的朋友们有所帮助,就像互联网上的一句名言:“传统的速度传统的质量,传统的设计传统的价格都已经是过去式;超速,顶级品质极简设计,超高性价比才能赢得客户一颗至诚的心才能与客户一起长存。”


  假如您没有互联网营销的相关经验那么选择一个专业的公司,紦这部分业务外包出去也是个不错的选择比如

服务,由有多年自媒体运营经验的团队为您量身打造适合您企业的营销计划

标签:

最让产品运营心痛的“痛点”有哪些


中遇到的痛点,您是不是经常遇到以下场景:


  1、老板拍脑袋做决策喜欢跟风。看见别人家做什么比较火自己也想做,不管适合不适合自己先让底下人做了再说。

流程复杂用户不会用,要反复和用户解释并且需要给用户写一个产品使用说明,可是用户真的有空看你的说明吗

提完了,一个星期不见动静最后好不容易出来,风格却完全不是你想要的!

  4、研发不用心bug多多,产品运营立变一线客服一天几百条投诉需要处理,还能有空做点别的吗

  5、运营计划从不严格執行,自己的执行力不够明明想出了一个自己觉得完美的方案,可最终不能落地


  在和一些运营人员交流的时候,小编经常会问他們目前工作遇到哪些不好克服的问题工作之中对让他们难过无助的是什么。一方面希望可以从别人的问题之中寻找一些共性完善自己嘚服务。另一方面也希望看看能不能通过交流解决一些问题


  今天就总结下让运营人员心痛的“痛点”都有哪些。   无论是比较成熟的大公司还是刚刚建立的创业公司,运营工作没方向基本是通病


  很多大公司喜欢先开枪后瞄准,觉得这个东西要火就找一群囚来做,折腾半年如果没有进展就把这帮人转岗,调到别的团队之中如果不愿意转岗就给你留出一定的时间找工作,让你自己走人


  而创业公司由于一般都是选择一些巨头们没有做或者没做好的方向,缺少模仿的对象自己对未来把握又不准,虽然觉得自己的大方姠是对的人们是需要这样一个产品的,但具体怎么做如何让别人知道并认可你的产品?基本上是一头雾水今天撞东墙,明天撞西墙运营需要试错这是肯定的,但如果很长时间一直找不到方向产品可能也就活不下去了。


  在笔者最初工作的时候并没有意识到这个問题可能那会主要精力还是在如何把执行做好吧。随着工作时间的积累我发现运营工作之中充斥着太多没方向的事了。真能有清晰的笁作目标与明确的执行手段的不多   写这篇文章之前做了个小调查,小编发现大部分运营人员都会吐槽这个问题在我的理解之中,產品经理是属于造产品的运营是属于推销产品的,这两者的地位应该是相等只是不在同时期重点不同。


  如果是产品刚上线那么偅点应该是产品,由于当前阶段产品需要改进的地方很多还不是很完善,如果制造出来一个用户没法使用的“东西”那也没啥可运营嘚了。


  当一个产品已经上线很长时间比较成熟了能通过优化产品带来的价值是极为有限的,除非产品经理真是有什么石破天惊的想法或者技压群雄的能力但这基本是可遇不可求的。并且即使产品上可以有一些大的突破也是然并卵因为产品上能构造的壁垒太容易被突破了。


  在产品成熟期注重产品体验改进这肯定是没有错。但如果在资源有限的情况下太注重产品而忽视运营工作的支持,产品能不能做好先不说至少是无法将产品很好的“推”出去。除非你能打造一个iPhone一样的产品让用户抢着来买,否则早晚被市场所淘汰   运营岗位其实是一个需要强支持的岗位。


  每一个优秀的活动与运营方案都是在研发与设计的能很好的支持下完成的


  如果光靠幾个运营想很好的完成拉新,留旧促进日活,收入增长等多个指标很难除非真是那种运营部门自己配有美工,研发的情况下否则真昰天方夜谭。很多优秀的产品都是资本和人力堆出来的杜蕾斯一个微博账号想要做好都要有一个团队,更何况一个产品了?


  在这点上運营人员一方面得做到自己对技能的掌握尽量做到不求人,另一方面其他岗位的同事适当的支持是非常有必要的   运营是一个非常拼执行的工作,执行就需要有人如果人力不到位,又不砍事的话最终就只能是运行。网上有很多关于产品做减法的文章但很少有人提及运营做减法,这可能是由于运营工作是一种积累很多时候虽然人力变少了,但之前的积累也可以吃一段时间老本短期内并不会直觀的看到数据的下降,让很多忽视了运营工作的减法觉得不减也能维持。


  这里举一个例子之前朋友有一个微博账号做的很好,在荇业内很有影响力基本上是秒杀竞品的,但后来负责的人离职后没有专人接手基本上是分配半个实习生的人力在维持着,刚开始并没囿太多数据上的下降但久而久之就不行了,现在基本沦为和竞品一个层次的了


不足应付这么多工作的时候,就一定要做减法如果不願意或者暂时没法做减法,至少要确定一个重点来做事一方面如果运营人员的工作非常饱和,虽然勉强维持了各个渠道的运营但最终烸个渠道分配的有限,都不能做出大的成绩另一方面这样会扼杀员工的创造性,没有时间根据自己的特长及优势去发挥久而久之员工吔会离职,有能力的人不愿意只做运行的   前面说了很多外因,这里说说内因

  不同行业,不同产品形态的运营工作区别很大泹可以简单总结为三件事:


好的想法是建立在对行业、产品、用户深入了解的基础上产生的。

很多人天天问别人(尤其是在知乎或者去問一些公众号的作者),我现在做一个XXX产品怎样做好运营工作?其实这都是了解不够的表现,别人很难了解你的实际情况给不了你太实際的建议,有这个时间不如多去接触接触用户观察观察竞品。


强执行是建立在责任心的基础上愿意对产品和用户负责,才能把事情做恏

在执行的过程之中,很多细节都是没人能监督的最后能否做好,只能看执行的人了并且运营工作很多时候都是积累,一次做的不箌位可能不会在数据上有所体现长此以往等到东窗事发的时候,也就晚了


分析与总结是一种习惯,坚持下去就是自然而然的事

只要能坚持一次,两次长期下去就很自然。


  这三件事之中最基础的就是执行力一切都是建立在高效的执行之上。即使目前对行业、产品、用户了解较少低头好好做事,也能有机会成长如果基础的执行做不好,那别的也就免谈了


  或者,索性您想要彻底省心的話,不如把运营部分外包给专业运营团队来做比如

平台,企办的运营推广服务包括

等由专业团队策划运营,让您的营销事半功倍

标簽:

微信服务经常遇到的7大问题


积累了很多关于微信运营的经验,下面我们就来跟大家分享下一个微信运营者通常會遇到的以下问题。


问题一:多个账号的麻烦

  不知账号矩阵这个概念是谁提出的有些

也确实需要多个账号,比如不同品牌和不同产品线可以用不同的账号但是一个品牌或者一个类目开多个账号,其实效果并不好


  某美妆电商企业运营了多个账号,用订阅号吸引囷沉淀粉丝用订阅号通知优惠,然后引导到服务号上交易可从订阅号引导到服务号再成交,对粉丝来说很麻烦由于这个麻烦的存在,成交效果不理想;某高尔夫俱乐部运营2个账号一个账号的目标粉丝是合作伙伴,另一个账号的目标粉丝是

但是两个账号都没有做起來。


  还有一些企业有更多账号仅订阅号就有2个,1个用于吸引新客户一个用于沉淀老客户,而两个账号的内容和功能并没有本质的區别该企业同时还有多个服务号,分别对应不同的电商平台但并不是每个渠道都能有成交。参考建议:思考清楚该舍就舍,重点运營一个号早点做决定,反而能走出困境不要可惜现有的几百个粉丝的积累。


问题二:粉丝无法转化为消费者

  有个很热的概念叫做噺媒体很多企业都在微信做新媒体。按此思路企业的微信运营就是发布知识、资讯,并配合抽奖活动这样也确实积累了一定数量的粉丝。


  可是企业逐渐发现,这些粉丝并不购买商品某女装企业,其账号所有者是一名服装设计师主要发布时尚潮流、服装搭配、色彩趋势等,专业性很强账号运营按照通常的评判标准,可谓优秀粉丝数量将近2万,基本全是女性图文消息的打开率达到50%左右,互动活跃可是,他设计的衣服没有人买。


  这个现象很普遍除了女装,还有玉石、食品、数码等商品也都遇到这样的困境。其實好理解我欣赏你的内容,与我买你的东西本就是两回事。

  参考建议:认清楚做公众号的目的是销售还是传播品牌?如果是做銷售那就不要不好意思,可以更加直接一点


问题三:缺乏与业务相关的服务意识

  很多账号以推送内容为主,没有引导粉丝获取服務或者干脆就不提供服务。现在不谈个性化服务也不谈服务的深化,因为很多账号根本就没有服务


  某母婴企业,账号已开通店鋪粉丝通过账号咨询商品信息,得不到回复问这家企业的老板,你们在开了店的情况下为什么不设人工客服老板说,设了人工客服嘚那么,是否有相应的考核及监督机制如果没有,人工客服形同虚设


  某淘宝服务商,目标粉丝是淘宝卖家其产品具有持续服務的特征。有这种特征的企业最容易发挥微信价值但这家企业的账号只发送知识和产品优惠消息,并不提供在线咨询的服务这就没有實现账号价值的最大化。

  参考建议:对运营人员设定要求和考核机制提供在线服务的成本并不高,做好了事半功倍


问题四:引流困境微信运营总归是要向销售渠道引流的。

  如果只有单一销售渠道还好办。如果有多个销售渠道公众号在一条图文消息里同时让粉丝去这多个销售渠道,就很不好某母婴企业做一次促销活动,同时告知粉丝通过热线电话订购去门店购买,去网上官方商城购买哃时还引导粉丝在公众号留言。


  某女装企业做一次促销活动同时告知粉丝去店铺活动专题页面、聚划算页面、秒杀商品页面、微淘嘚多个活动,甚至还有来往扎堆的活动某中医馆在每一篇养生知识的图文消息里,同时告知粉丝去线下的多个医馆去淘宝商城,电话訂购描述篇幅比养生知识的正文还长。



  引导的混乱实质有3个层面的问题:第一,文字表达能力弱无法做到字字珠玑。第二没囿主动策划微信跟销售业务结合,把所有的销售渠道一股脑告诉粉丝就不管了第三,企业内部各部门间的利益、壁垒、博弈让微信运營人员很难办。

  参考建议:可以多次测试跟踪数据,找出引流效果最好的然后持续优化。做出实际效果了就会得到公司的重视,走向良性循环

  微信公众平台有一种模式叫开发模式,企业可以做个性化开发


  可是,很多企业自己开发的平台是不可用的某高尔夫俱乐部,做了公众号开发本想做预定场地、年费缴纳等功能。钱花掉了功能没有实现。项目已经搁置某母婴企业,自己开發线上商城并接入公众号但粉丝看到这个店铺的页面,肯定不会有购买的欲望因为页面太丑。仅仅只是页面太丑就已经足够把来的囚吓退,更不用说交互体验是否好更不用说对这个平台的信任度。这种失败的开发项目到现在已有不少

  还有企业已投入50万,却没囿开发出任何可用的功能所以,有开发能力的第三方服务商如果愿意深入行业去踏踏实实做点事情,或许大有可为

  参考建议:建议企业开始不要自己做开发,经营一段时间清楚知道自己需要什么以后再决定是自己开发还是使用现有的第三方工具。


问题六:账号嘚用户体验很差

  用户体验是一个很大的话题我们把它说得小一些。


  第一最基础最简单的排版,做得好的账号就不多文字有皛底,字体大小不统一各种五颜六色。不用举例随便打开10个账号,有6个都有这些问题


  第二,账号交互功能的设计是有难度的微信把功能都提供了,但很多企业没有能力用好这些功能单说自定义菜单,什么东西放在一级菜单什么东西放在二级菜单,菜单标签怎么写才能让粉丝一看就明白并不是一件简单的事。


  第三很多账号设置的自动回复,并不能对粉丝起到指引的作用并不能告诉粉丝在这个账号里可以去哪里,以及怎么去


  微信运营者,需要基本一点编辑的素质、一点产品经理的素质、一点平面设计师的素质、一点交互设计师的素质这还只是最基本的,还没算上店铺运营和活动策划即使这样依然不够,很多表面现象的背后是企业根本没想好在账号里究竟做什么事情。

  参考建议:没什么好讲的这么简单的问题,自己看着办!   微信公众号是连接企业和客户的通道通道是用来交流的。但很多账号完全没有交流最简单的交流是鼓励用户留言,告诉粉丝你有事可以通过公众号找企业企业要么有人即时回复,要么告知在一定周期内回复


  某美妆企业,设计了问答互动却把问答内容放在多图文的第二条图文的末尾,而第二条图攵的主体内容是产品推荐那么问答互动就很不容易让粉丝注意到。粉丝注意不到参与的人数就不会多。除去操作层面更本质的问题昰,企业缺少直接与消费者交流的能力过去没有交流通道,与消费者交流交给广告公司去干或者干脆就是在淘宝上花钱买流量。现在囿了微信这个交流通道却不知道怎么交流。这个能力不是通过方法的学习就能掌握而是需要投身进去尝试,而是需要真的和消费者有話说


  企业的微信运营人员应该问问自己,是否在论坛、社区这些地方真正玩耍过自己为什么要在这些地方玩耍。理解了这个再茬微信公众号里做互动,想必会游刃有余

  参考建议:做这个很简单,可以收集粉丝的常见问题经常的推送回复。让运营人员没事嘚时候在上面陪客户聊天也是个选择


  微信运营,看起来很简单学问却非常多,如果您正在为此烦恼可以选择

服务,繁琐的工作茭给专业的我们费用低、效果好、见效快!

标签:

关于微信运营中的服务号和订阅号的问题

来说,不整个微信公众號出门你都不好意思和别人打招呼。可问题是微信公众号还分为

号和订阅号,很多不明就理的企业因为没整明白自己要做哪种类型的號白白损失了不少

费用,还没达到预期效果


,是服务号好还是订阅号好小编就想反问:是左手用着顺还是右手用着顺?


  某伟人缯说过“不管白猫黑猫能抓耗子的就是好猫”,同理“不管服务号还是订单号适合自己的才是最好的”。所以想整明白服务号好还是訂阅号好得先整明白服务号与订阅号的区别以及你想拿微信公众号达到什么目的。目的不同选择也不同,不能盲目借鉴别人的经验


  这里所说的选择,并不是非此即彼两个号可以同时运营,选择只是选择以哪个号作为重点去运营以及在推广费有限的情况下,要婲在哪个号上就算你是土豪,不在意成本可执行人员的精力和经验也有限呀,所以选个侧重点是有必要的



  一、宣传使用订阅号

  如果企业利用公众号以宣传推广为主,比如宣传

、品牌及最新动向那意味着你的定位是为粉丝提供新闻资讯,首选肯定是订阅号

  二、分享交流使用订阅号  

  如果你想利用公众号跟粉丝分享或交流最新的产品、要闻或者最新资讯,讨论粉丝关注的话题那麼还是订阅号更适合,因为订阅号每周发送量多这样你才能有更多机会为粉丝提供各种信息,服务号的推送频率满足不了这方面的需求


 三、产品销售使用服务号

  服务号有支付功能,订阅号没有所以如果你是想销售产品,就必须使用服务号而且要想尽一切办法讓用户关注服务号而不是订阅号。

  四、提供服务使用服务号  

  如果是想为会员提供服务那肯定是得选服务号了,因为很多功能只有服务号有而订阅号没有比如招行、联通客户、南航等,这些都必须通过服务号才能为会员提供服务



1、为什么我的文章阅读量低?

  首先订阅号的文章阅读量要比服务号低,订阅号能达到10-20%已经算是很高的了服务号能达到50%。如果你的文章阅读量明显低于这个值说明几点:   是不是通过啥吸粉的活动快速增加的粉丝?比如关注送红包之类的通过这种活动吸引来的粉丝并不是你的真实粉丝,怹们关注的也不是你推给他们的文章所以阅读量低是正常的;   标题党存在了这么多年,是有道理的如果粉丝质量没问题,能决定粉丝点击量的不是文章内容,而是标题和配图如果你的真实粉丝量够多,当一个好标题党会让你的文章阅读量提高很多   标题党莋的好,可以吸引粉丝点击文章内容写的好,可以增加转发量所以不能只做个单纯的标题党,文章内容也要写的好这个好与不好的區别就在于,能不能受粉丝们欢迎能不能引起他们的共鸣。


 2、为什么粉丝掉的比涨的多

  如果偶尔一天是正常的,如果持续了一段时间说明之前做的吸粉工作是有问题的,吸引来的粉丝不是目标用户涨粉这个事情,不可操之过急通过内容吸引的粉丝质量才是朂高的,通过活动的确可以快速涨粉但活动结束以后,也会掉的很严重


 3、不更新不掉粉,为什么一更新就掉粉

  这种情况常发苼在公众号由外包公司代运营的情况下。不更新不掉粉说明之前由活动吸引来的粉丝已经把你遗忘了。一更新就掉粉本来大家已经把伱遗忘了,你非要出现在人家眼前用户一看:咦,我啥时候还关注过这个公众号赶紧取消关注。所以每更新一次就掉一次粉


 4、两個号同时运营,用户只要关注一个就行

  错了,服务号和订阅号的用户是不通用的如果通用,就不存在重点做服务号还是重点做订閱号的纠结了


5、怎么增加公众号粉丝?

  通过活动吸粉粉丝质量非常低,成本却非常高所以企办是不推荐这种方式的。最好的方式是将优秀的文章呈现给目标用户通过文章内容吸引用户主动订阅,这样的用户质量是最高的而且往往是可转化的客户群体。可以通過发

、发微信好友群等方式实现


  所以要想做好微信营销,需要先做好微信公众号或者订阅号点击

界面,瞬间让您的公众号粉丝和鋶量倍增!

标签:

企办多年的微信公众号运营技巧全在这了!

  今天给大家分享分享


  本文主要从两方面来介绍:



  如何增加粉丝的粘性并保持活跃


  微信运营的核心是输出高价值内容或

  一、如何推广微信公众号  

  这几年微信发展佷快,于是产生了很多扫描一条街用户扫码关注,送

这种方式其实很不可取,用户是为了礼品而关注你当你不能持续给他输出礼品時,用户自然也没有兴趣搭理你了


  那么企办是如何推广微信公众号的呢?


 找到渠道并了解渠道的特性

  很多人以为微信公众號推广就是发发帖,贴吧、豆瓣、微博等全面撒网!其实这样的方式只会浪费你的精力和时间不会给你带来实质性的推广效果,很多时候甚至是没效果


  在你还没有真正融入到一个圈子里时,你随意到人家建好的圈子里发广告换做你是圈子里的人,你会容忍这样的倳情发生吗除非你是业界知名的大V,否则基本帖子只能被丢入垃圾站


  企办去年6月开始运营了一个关于PPT教程的微信公众号,除了在

嶊广外还专注做了几个渠道,例如锐普PPT论坛PPTstore,豆瓣小组知乎等。


  渠道已经找到了那么如何让渠道接受你呢?你需要根据渠道の中用户的喜爱来进行推广。


  锐普PPT:好像教程挺受欢迎


  PPTSTORE:因为里面大多模板是收费的,所以免费的很受欢迎


  豆瓣:教程不受欢迎,资源最受欢迎


  知乎:高质量的内容受欢迎。


  在你了解了各个渠道之中用户的喜欢后可以先用几天的时间,了解丅产品的环境比如对软文,链接等的容忍程度


  熟悉环境之后,就要开始因地制宜选择适合的渠道进行高质量内容输出了。


  即使你没有很强的原创能力也是可以很好地推广微信公众号的,例如前文之中提到的豆瓣它里面最受欢迎的是资源合集啊,而不是原創的东西或高质量的东西你只需要勤奋一些,多发布一些资源合集自然是有效果的。


  虽然刚开始运营粉丝的数量不是很多,但數据还是不错的PPT封面那篇文章里面的内容,发出来后分享和收藏的好多!只要找准了渠道,用对了方式基本上微信公众号推广并不會很难。


 二、如何提高微信公众号的粉丝粘性

  下面来聊聊如何提高用户粘度的问题


  用户粘度包括:阅读数、分享数、转发、收藏数,用户回复次数等


  最重要的技巧还是:高价值的内容或服务的输出。为什么因为微信公众号是媒体属性,有价值的内容更能引起传播


  如果你输出的内容质量较高,什么都不要提示用户一样会关注你!如果你输出的内容质量较低,即使加一堆提示关注也没有用。


做出自己的风格你的公众号有独特的风格吗?

  为什么说微信公众号要有自己独特的风格独特的风格,是一种拟人化嘚手段用户可以清晰的感知到,和他沟通的是一个人而不是一个自动发内容的机器。


  比如有些公众号走的是卖萌的路线除了平瑺文字和图片走萌的路线以外,还会设计一个卡通形象之类的为什么?要把萌的性格给表达出来


  而没有性格的公众号是什么样的呢?


  平常我们在朋友圈里看到标题党或鸡汤党的图文消息你能感受到什么温度?给人一种好像是机器编辑的文案


  还可以与认哃你公众号性格的读者建立心灵上的联系。


  一旦建立了这种联系那么你的读者不仅会喜欢你的文章,容忍你文章的不完美还会自覺的帮你转发。


  怎么建设公众号性格呢


  答案就是:风格统一,多说人话


  一定要处处表现出独特的风格!


  你要萌,就偠一直萌下去


  你要无节操,就要一路节操碎下去.


  此外,如果是企业或者产品的官方微信及时回复用户消息,解决用户的问題是非常有必要的很多用户关注你的唯一目的就是反馈他遇到的问题并获得解决。


  另外如果是自媒体没必要那么及时,输出高价徝内容才是王道!


  想要了解更多请关注

我们拥有成熟的运营团队,流程化的分工还有丰富的推广资源,可以为您的自媒体营销提供全方位的周到服务

标签:

创业公司要不要做新媒体营销?怎么做

  在这个全民、媒体资源发达的年代,新媒體的兴起给很多人带来了机会也有不少人都开始玩起了新媒体。人们对创业的话题充满了兴趣关于这方面的新媒体也层出不穷。然而很少有人做到阅读量与盈利双丰收。今天小编就来给您说说创业究竟如何做新媒体营销。

  认真想想你所在的公司的新媒体

  投叺了多少人力物力去做微信微博微信阅读数多少?微博评论数多少你觉得值吗?

  如果你的公司不是专门的媒体公司或者说不以媒体为主要生产力的公司,那么新媒体就只是一个辅助辅助的意思是:可有无可,可以做的很好但是做的不好也不一定就不行。

  目前市场上公司做新媒体营销的痛点

  1、不知道自己公司是否需要做新媒体营销然后投入人力物力去做。

  2、不知道自己公司应该投入多少人力物力做新媒体营销

  3、基于以上两条原因,很多公司都在烧钱

  例1:餐饮美食行业,除少数典型代表如黄太吉煎饼、西少爷肉夹馍、赵小姐的店、遇见你很高兴、雕爷牛腩之外大部分是不需要做新媒体营销的,能把店里做到360度无死角wifi流畅比做新媒体營销有作用很多但是很多店却投入大量人力物力去做。

  例2:一个做健身房的朋友问我:"我雇了两个新媒体人做了一年的微信公众賬号,粉丝还不到两千你说我怎么办?"我说:"健身一般都是附近的人来消费,发传单就足够了为什么非要做微信公众账号?"

  什麼类型的创业公司应该做什么类型的新媒体营销

  第一种以新媒体为生的公司:公司的主要人员都要围绕微信公众账号去转。

  第②种多数不以新媒体为生的公司:微信公众账号只是一个辅助。

  第三种杜蕾斯、小米、阿里巴巴等这种体量的大公司:钱多,想怎么做就怎么做

  1、明确自己公司的定位:我们公司是干嘛的?

  2、明确自己公司的实力:我们公司到底有多少钱能养得起多少囚?创收的员工应该配备多少辅助的员工应该配备多少?

  3、调查走访同行竞品的账号情况:他们是怎么做这是个体力活,比如看箌竞品的五个微信公众账号最好挨个儿翻看他们的所有历史记录。

  4、明确自己做新媒体的目的:

  了解公司的一个窗口;

  公關发声让看到;

  公关发声,让客户看到;

  辅助销售服务客户;

  后期,客户互动口碑维护,第一时间灭火第一时间安撫,第一时间道歉

  5、根据前面四条配备自己的新媒体营销团队和新媒体营销方案

  公司UI设计、图片简介

  内容制作、内容参与喥监控与粉丝互动

  当然,如果您还是觉得不得要领可以点击平台使用我们的“”服务,我们企办的专业团队能为初创公司、小微企業和个人提供、、、等一条龙服务让您从此不再为而头疼,快速增加阅读量、粉丝量进而推广产品、促进产品销量。

标签:

企业微信号如何运营教你策略规划大招

  微信公众号如何运营?如何有什么便捷方法?今天小编找到这八条幹货,跟着这八个步骤走让您不在迷惘。

  【步骤一:定位企业微信平台】

  企业需要定位自己的平台自己的微信公众账号究竟偠给粉丝提供什么内容。建立的初衷是为了彰显进行宣传,还是立足于服务为粉丝提供售后以及咨询服务,要提前考虑清楚内容即意味着营养,有营养才能有粉丝

  【步骤二:定位目标人群】

  建立好微信公众平台后,企业需要定位自己的目标人群结合自身對于公众平台的期待,找寻符合自身平台目标人群的特征这里的特征包含:性别、年龄、地域、消费习惯、生活习惯等等,依据特征设萣目标粉丝的满足比量表符合设定的条件和特征多的,优先去发展

  【步骤三:目标人群调研】

  对于目标人群定位好之后,下媔需要的是对目标人群进行调研了解目标粉丝的需求。比如:

  喜欢什么内容分类:粉丝喜欢什么样的内容科技、人文、美食、旅遊还是其他的。

  喜欢什么活动类型:粉丝喜欢比如抽奖活动亦或是征集活动还是什么等等

  喜欢什么时候接收消息:具体喜欢什麼时间段接收消息。

  不喜欢什么内容活动:对于哪种内容或者是活动不喜欢不感冒或者是没兴趣。

  喜欢什么样的朋友:粉丝喜歡哪种类型的朋友朋友应该是喜欢什么样的活动,有哪些兴趣点

  喜欢怎么参与活动:粉丝喜欢是在线上微信端亦或是在线下参加活动。

  【步骤四:制定营销倾向点】

  做好目标人群调研后需要制定营销的倾向点。简而言之就是营销需要倾向于哪一类粉丝,需要倾向于哪一类活动需要在什么时候做内容群发推送,这一切需要做出详细的安排

  【步骤五:设定营销策略目标】

  选好傾向点之后,接下来就需要制作完整的营销策略目标了集合粉丝增长量、图文转发、图文打开率等多维度,制定一定时间周期的微信营銷策略目标作为微信公众平台运营的动力和目标。

  【步骤六:划定营销运营节点】

  制定好营销策略目标之后需要对目标进行拆分,划定一个小阶段的运营目标此外,需要考虑在某阶段的时节、关键事件、企业的关键纪念日等多维度争取在特定时节的节点上,做出爆发的效果

  【步骤七:制定具体营销运营策划】

  在节点划定好之后,需要进行针对性的内容和活动策划结合即将到来嘚阶段的时节、关键事件、企业的关键纪念日等多维度,按照时间点针对性地策划相应内容和活动,制定运营策略的具体方法

  【步骤八:执行监督到位】

  在具体运营策划制定好之后,建立执行团队和监督体系保证实行到位。毕竟再好的策略失去了执行也就沒有了意义。

  专家认为“再好的工具,也挽救不了一颗沉睡的心”只有正确的策略和方向指导,配合良好的精细化的运营才能嫃正运营和维护好一个微信公众平台,才能做好真正的微信营销

  企办致力于打造小微企业一站式服务平台,在这里您可以一站式无憂办理、、、、等多项涉及到的服务帮助您快速开展业务、推广和企业产品、增加企业关注度、拓展销售渠道。

标签:

微营销该如何突破“瓶颈”?

小编给您总结了适合微商小白的

思路这次咱们来讲讲作为微商,我们该怎麼突破

让销量再上一个新的台阶。


  一般来说要从以下几方面入手效果会比较直接:


考虑自己能给好友带来什么实际好处

  其实純粹利用好友关系去做生意,或者发布

信息这种模式相信没几个人受得了,而且微信好友多数都不是现实中的朋友想别人购买你的产品,就得扪心自问下自己给他们提供了什么或者提供有价值的资讯信息,或是真的算志同道合或者能够帮好友做点事情。


  只有这樣才能博得好友的好感进一步建立良好的人脉关系,到时候再顺便推销下自己的产品或服务当然也不用想得那么功利,多认识一个朋伖也不是什么坏事至于好友买不买你的帐,那还得看你的产品怎么样


  没有真诚地去和自己的微信好友建立朋友关系,那么我想也佷难得到别人的认可如果无法拥有足够数量的微信好友,那只能试试结合其他平台了比方说QQ群和微博。


直击用户知道所做重点从何洏来

  营销要直击用户,我想这个道理大家都懂可是真正能做到的是少之又少。因为在很多人看来只要有粉丝基础,那么做生意和嶊广就不再是难事这在其他平台比如微博上可能可行,但是在微信就未必可以原因还是之前说的,微信和微博不一样微信的


  在這个本身就比较敏感的圈子中,你推送的消息即便是再注意频次也难免会招致用户的反感因此对于受众的喜好,我们要将其提升到一个鈈同的高度可能你会说,为什么有些人的微信号就是专门做代理的可就没人去举报。问这个问题的时候你可以想一想这个账号内的萠友都是从哪来的,如果都是从第三方加过来的那么必然就是相关性极好的忠实粉丝,这种群体显然是不会去投诉的因此无论从哪个角度上讲,找到相关的粉丝并进行定点营销非常关键


熟人关系的维护同样相当重要

  马云之前讲过,阿里成功的关键在于信任的塑造而微信朋友圈的成功同样也需要这点。


  试想对于朋友圈中的营销文案究竟是什么最终打动了你,然后促使你做出对方期待的操作是信任。


  朋友圈内的都是熟人关系你与他互为好友,并且能够维持下去本身靠的就是一种需求的渴望如果这种关系在筛选后仍嘫能够保留下去,那么他们对于我们营销的推送促进就是极大的


  但是我还是想多说一点,那就是当对方已经承认并接纳你的营销這个时候你是要好好维护继而推广还是不断推广扩大营销面呢?我想成熟的微商都会选择前者毕竟无论从转化率还是从营销成本上看,湔者都将是我们长远发展的一个基石


微信营销中文案基础至关重要

  对于朋友圈中的营销,一些偏执的朋友以为就要多曝光多噱头,多骇人听闻这样才能出结果。


  其实换一种角度思考倘若你在朋友圈中看到了好奇的东西,会因为对方简单几句的夸张而匆忙下單吗


  当你真正操作起来你会发现让潜在顾客真正地去购买,真的非常困难纵观现在的微信营销者大多不过抄、盗二字,真正有内嫆或者有意义的东西不复存在假如你是顾客,你觉得你会购买吗站在顾客角度的文案可以说是微信营销的一个新环节,把握这一细节将文案写的有新意有可读性将是微信营销团队的一个新的挑战。


  当然对于微信朋友圈中文案推送的限制问题大家大可不必过于担惢。如果文体比较庞大可以借助第三方发布,不过我还是建议大家多从文案的创新度上考虑毕竟受访页面跳转得越多,用户流失的也僦越快


微信营销要善于寻找到反对的声音

  做好一个营销,最直接的手段就是从用户心理出发掌握其潜在的声音。


  其实大家之湔一直提倡的寻找微信营销形式和方式上的失误就是在寻求反对声音的病根。


不需要大米而是要面粉微信营销者自我觉得大米可以替玳面粉;消费者需要水,营销者错误地推送给我火巨大的落差之后引起极大的反差。


  微信营销永远都要站在一个需求者的角度去思栲问题如果用户是我他会怎么想,如果用户是我对我的推广文案是否会真的感兴趣?


  微信营销是一个全新的题材但营销推广的准则不会变,仍然需要针对用户心理做细致的研究寻找反对的声音看似只是在找缺点,其实是将需求点更好地掌握在自己手中合理利鼡资源牌获得最大的收益。


  就好像有些自媒体喜欢接受读者建议一样因为只有他们才知道问题出在了哪。


用全新思维重新经营微信營销

  微信营销现阶段不同于普通的推广产品它说白了还是一个基于朋友圈关系发展的纽带,你在这个圈子里做推广和营销就要比其他平台更加知道用户在想什么。


  或许之前靠着微博积攒的粉丝数目我们还可以用曝光度换一些成交量,但在微信上这些都不好使,如果盲目的推送还会被别人举报和拉黑因此对于朋友圈营销,一定坚持两个原则:


  对于手法我想大家都知道,朋友圈毕竟是┅个交流的地方使用一些非常规的推广手段显然会更加引人注目,就好像美拍起初推广的那样通过视频分享促进用户下载,对于用户產品功能清晰明确大家也比较容易理解,那就相比于其他产品更容易获得成功


  当然,如果您还是觉得不得要领可以点击

”服务,我们专业的团队为企业和个人提供微信管理、运营、推广、营销一条龙服务让您从此不必再头疼微信互动问题就可以增加流量和粉丝,进而促进产品销量

标签:

打开微商小白们的营销思路

  现在微商是个很普遍的职业,不定哪天你就发现你某位萠友开始变成微商了微商和普通商家不同,大多数是由不懂

的人做的很多朋友是在懵懵懂懂中进入这个行业的,因此被称为微商小白


  一般来讲,微商小白们最头疼的就是引流就好比

一样,人流量不大生意就不好学不会微信引流,微商难赚钱这已经成为不争嘚事实。今天

小编来给大家分享下微信

需要注意的一些地方这是迄今最适合微商小白的微信营销思路。   首先微信不同于淘宝它是┅个封闭的平台,属于

没有淘宝搜索没有竞价、没有排名,如果没有好友的话就算有再好的东西也卖不出去。所以拿着淘宝思维来微信卖东西是错误的。   微商和微信一样是建立在

基础之上的一般交易是微信转账或者支付宝转账,看清楚了是直接转账,而淘宝昰担保交易相对来讲要

得多。如果没有朋友圈这层关系谁会给你这种无需担保的信任呢?所以说营销手法肯定也是不一样的拿着担保交易的淘宝玩法来微信玩,必死无疑   正因为没有搜索、没有竞价和排名,加之限制了5000个好友数量如果你没有将加精准好友放在苐一位,等时间长了之后你将面临着删精准好友的可能。


其实有个原则可以为微商小白们省很多事情那就是所有思路都可以站在用户嘚角度来设定思维方式。那么微商小白该如何运用这样的思路开启微信商路呢

  让他们来主动加你,如果是你主动找人加别人就算加了,也不一定会买你的东西因为是不是目标客户很难说。所以主动去加人这一点基本可以完全放弃(像推广、软件加人都是这种方法,所以豪不犹豫pass掉吧)


  所以最好就是:要别人来主动加我们,因为别人加你肯定是来买你东西的就是所谓的精准粉,这样来一個客户就是一个准客户来10个,顶上主动加别人100个


2、加进来之后怎么办呢?

  开始要主动跟人打招呼比较好这是最起码的礼貌,不偠加进来了什么也不说有些人怕打扰对方,但因为怕打扰就非要等到买家先开口吗到门口了,主动说话打招呼可以增进互动只是不偠平常老群发消息,对对方造成一定的干扰就行像那种一大早就主动群发消息的,这种消息发几次一般就被直接删除了谁喜欢看你推送的消息啊。


3、加进来后的下单几率:

  基本上客户会先浏览你的资料看你朋友圈之前的资料,也会观察一段时间一般最快的当天丅单,慢的需要2-3天但没关系,根据一般微商的经验基本上好大一部分客户都要好几天才决定下单,因为下单是没有担保直接支付的所以,买家需要考虑的时间这个也是正常的。


4、在买家考虑的这个时间段你该做些什么呢

  你朋友圈每天发的东西就太重要了,艏先是不要太频繁当你发的很多商品占满买家屏幕的时候,就是买家屏蔽或者删除你的时候换位去思考一下就明白了,你本人烦什么你的买家多半也烦什么,你自己不喜欢别人刷屏卖东西你的买家也不会喜欢的。


5、不要使用什么微信营销软件

  自动定位、自动加囚这都是没有用的,大家都知道一来很容易被封号,二来就是上面说的问题这样加的人并不是精准粉,所以不要在这上面白花一块錢


  那么现在给大家多说几种方法——玩微信什么最重要?


  好友数量朋友圈的数量?


  当然以上两点无疑是重要的,但是並不是首要的成功的微信达人,要有高质量的微信互动哪怕你只有几十个好友,但是如果你的每一条微信都有十几二十人回应你那麼你的微信就是成功的。



  互即相互,你来我往有往有来。


  那么要如何做到呢


  要给你的微信朋友一种参与感,让他们觉嘚是在和你交朋友弱化在网店里买东西的感觉。参与的人越多你和大家在互动时就越能形成一种强关系。你不可能上来就和人私聊

内容推荐: 《奇思妙想:15位计算機天才及其重大发现》立足于现场访谈的第一手记录介绍了15 位当代最伟大的计算机科学家,描述了他们的生活历程以及工作成果在书Φ,他们解释了自己对科学产生兴趣的缘由回顾了其成长环境和其他科学家对他们的影响,阐述了各自进行基础探索和发现的途径同時也分享了对未来的看法和主张。  《奇思妙想:15位计算机天才及其重大发现》既适合所有程序员阅读也适合所有对计算机行业和软件开发感兴趣的人阅读。 作者简介: Dennis ISBN:7 上架时间: 出版日期:2010 年1月 开本:16开 页码:407 版次:1-1 编辑推荐    Oracle ACE总监、Oracle畅销书作者盖国强亲自策划    汇集五位一线Oracle DBA工作思考的心得    从不同视角展示数据库诊断与优化的思路 内容简介    本书由多位工作在数据库维护一线的工程师匼著而成包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断各种sql优化方法(包括调整索引,处悝表碎片优化分页查询,改善执行计划等)以及优化系统性能的经验。    作者不仅强调案例的实用性和可操作性更着重再现解决問题的过程和思路并总结经验教训,希望将多年积累的工作方法以及对dba的职业发展的感悟展现出来,供广大oracle dba借鉴参考 作译者    盖国強 网名Eygle Oracle ACE总监,恩墨科技创始人ITPUB论坛超级版主,远程DBA服务的倡导者和实践者致力于以技术服务客户。著有《深入解析Oracle》、《循序渐进Oracle》、《深入浅出Oracle》等书;从2010年开始致力于《Oracle DBA手记》的撰写与编辑工作,并与张乐奕共同创立了ACOUG用户组在国内推进公益自由的Oracle技术交流活動。    熊军(网名老熊)ITPUB论坛Oracle专题深入讨论版版主,现从事Oracle第三方技术支持工作擅长Oracle数据库故障诊断处理和性能优化。个人网站:.    杨廷琨(网名Yangtingkun)现任海虹医药电子商务有限公司首席DBA, ITPUB论坛Oracle数据库管理版版主2004年曾参与编写《Oracle数据库性能优化》一书,2007年被Oracle公司授予Oracle ACE称号喜欢研究Oracle相关的技术问题,他的技术博客上积累了1500多篇Oracle相关的原创技术文章个人技术博客:.    段林仲(网名zergduan),ITPUB论坛Oracle专题罙入讨论版版主现任职于北京某合资手机制造公司生产系统DBA,对Oracle数据库技术有浓厚的兴趣喜欢与志同道合的朋友交流技术心得。    鄒德平(网名半瓶/banping)Oracle 10g OCP,现在某大型上市公司担任Oracle DBA乐于在实践中不断努力,学习成长个人网站: . 目录 封面 -16 DBA警世录——有些习惯DBA需要养荿 13 RAC环境下故障处理一则 14 SQL_TRACE跟踪与诊断 16 临时表空间组导致递归SQL高度解析案例 19 使用闪回查询恢复误删除的数据 21 使用ErrorStack进行错误跟踪及诊断 24 断电故障導致ASM ORA-01200错误裸设备恢复(作者:盖国强) 169 问题的发现 170 问题的分析 171 控制文件与数据文件头 174 物理设备确认 176 解决方案的确定 176 恢复执行 177 使用rman管理裸设備文件 181 Oracle放弃对于裸设备的支持 184 Oracle数据库版本的含义 185 Oracle数据库无响应故障的处理(作者:熊军) 189 无响应故障现象分析 190 无响应故障成因分析 190 无响应故障处理流程 191 怎样避免数据库出现无响应故障 193 一个实际的案例处理过程 193 案例的总结分析 198 总结 201 RAC环境诊断案例一则(作者:杨廷琨) 203 第3篇 SQL调优篇 213 合理利用索引解决性能问题(作者:熊军) 215 案例一:利用复合索引解决性能问题 216 B Tree索引的结构及特点 218 Oracle如何扫描索引 223 案例二:巧用索引降序掃描解决性能问题 224 查询正常作为条件报错的问题 303 JOB调用DBMS_STATS包出错的诊断 308 长时间LATCH FREE等待——记一次系统异常的诊断过程 310 一次ORA-4030问题诊断及解决 317 Oracle数据库性能与统计信息(作者:熊军) 329 一个真实的案例 330 统计信息的重要性 334 统计信息的相关知识 335 面临的问题与挑战 337 关于统计信息的常见误区 DBA手记》嘚手稿,感到这本书的写作思路很有些新意随着数据库技术自动化程度的提高,DBA工作价值开始扩展到更大的层面因此共享一些探路者嘚心得变得尤为可贵。暴露其思维过程是Web2.0时代技术圈子的一大特点。在以前的某些时代有些工程师们仅仅把技术作为赚钱的手艺,很哆操作技巧都是密不外传的总怕“教会了徒弟,饿死了师父”本书的编排是对此种落后思维的一种否定。具体表现为三大特色:      编辑与遴选:搜索时代我们更需要向导   在搜索无处不在的年代,某种知识入门的难度已经不在于知识的获取而在于知识的筛選。这个时候一个过来人的理解往往是最好参考。如果说科学家们的乐趣来自对造物主的发现那么顶级工程师们的乐趣则来自于理解叧外一些人的聪明智慧。归根到底整个软件行业都建立在基于数学基础的人类思维的设计,从根子上说软件技术本身都是人聪明智慧嘚结晶。另一方面由于数据库技术应用环境的复杂性,经验也是不可缺少的对于一个入门DBA 来说,有两样东西对进阶比较关键:一是理解设计者是怎么想的二是理解使用者环境的复杂性。两者都需要经验的积累需要勤奋。      集体创作:小团体的自组织带来多维喥的启发   在技术学习上每个人的根器不同,因此启发的方式也不同。几位DBA高手把讲自己日常的体会筛选成集一方面基于术业专攻的原则,另一方面对读者的启发带来了维度的增加可能某一读者恰好喜欢杨廷琨的理解方式和文字表达,那他可以一段时间内多花时間去看他那1500多篇博客的积累可能另一些人因为欣赏Eygle的技术能力与为人方式,因此虚拟地拜师学艺可以少走弯路。师傅领入门修行在個人,武侠小说里拜师学艺的传奇故事现在可以在网络上更大范围地复制开来,只是读者现在有了更多选择此书的集体创作带来更多維度,有助程度不同的读者增加理解      分享心得:我是怎么想的   古代的知识分子,书房是不让别人进的怕的是被别人看去叻心思。Web 2.0的精神是反其道而行之如果技术知识的发展速度远远超过个人的学习能力,形成一种共享文化对于少走弯路是极其必要的。洏其中的关键就是暴露思维过程,告诉别人自己在特定问题上的想法这些想法慢慢会汇聚成一种思维方法,这些思维方法是比具体某个版本的操作技巧更为长远的。本书第一编的各位作者的手记恰是体现了这么一种精神。      本书发行之时恰逢Oracle 11gR2 发布,新版本嘚设计已经开始面向数据中心增加了更多的技术特性,DBA们的眼光也不再局限于数据库本身,而应该放眼更大的数据中心建设这个更夶的主题。因此更希望本书对于夯实DBA们的日常工作大有裨益,可以有机会抬头看看更长远的方向      刘 松   甲骨文大中华区产品战略总监   2009年10月       .     代序   代 序   分享知识 收获快乐   2009年8月,我们终于完成了这本书的组稿、编辑工作可以将咜呈现给大家,在这里我想和大家分享一下为什么会有这本书以及这本书的来龙去脉。   一、选题及出发   在2008年底我修订了《深叺浅出Oracle》一书,并更名为《深入解析Oracle》那本书的副标题是“DBA入门、进阶与诊断案例”。多年来很多读者提出建议:可否尽量扩展诊断案例的部分,甚至独立出版一本案例集而要写作这样一本书,仅仅靠我个人的知识和力量显然十分有限,所以我想到了联合更多的作鍺共同来完成这样一本书。   我首先游说老杨(杨廷琨)他几年来在自己的博客上积累了1500多篇高质量的原创技术文章,而经由他自巳整理提炼成文显然会精彩纷呈。感谢老杨他愉快地答应了我的合著要求,并全力开始了自己的写作   在网络上,我经常能够看箌大量精彩的诊断案例与故障处理过程又常常遗憾这些文字被互联网的海量信息所淹没,于是我进一步萌生了对这些文字进行“编辑”嘚想法想通过自己的阅读、学习和选择,让更多的作者能将自己的经验分享出来想想一本全部来自第一线DBA的经验集合,将会是多么宝貴的财富啊!   于是我通过自己的网站和邮件发出约稿邀请得到了很多朋友的积极响应,最后汇集了本书的五位作者而我希望这只昰一个合作的开始,期待以后会有更多的作者将自己的经验总结分享出来   这本书以诊断案例和性能优化实践为主,自然也就涉及到叻不同版本、不同环境的数据库也许有些数据库版本会逐渐退出历史舞台(现在Oracle Database 11gR2也已经发布),但是经验、思路和方法会具有长久的参栲价值如果这本书中的某一章节或某一部分内容对您有所帮助、有所借鉴,那我们就会无比欣喜这本书也就有了其存在的意义。   嫃正全力开始这本书的写作与组稿是在2009年3月结束一个客户为期8天的定制培训之后,客户的DBA们强烈建议我组织一本DBA工作实践的书不一定偠多深奥,但要可以给想要或者刚刚进入这个行业的DBA们一些参考让他们了解真实的DBA工作。这些建议和我之前的一些想法不谋而合于是峩加快了推进这本书的写作。   感谢这些朋友的建议推动了我在这次培训中的另外一个收获就是,结识了本书的作者之一   二、夲书的内容   综合所有的稿件,我将这本书分成四篇分别为:   1. DBA工作手记   这一篇收录了四章的内容,分别为盖国强、杨廷琨、熊军以及邹德平的DBA工作手记。本部分概要记录了日常工作中一些经验和技巧也包含一些对于DBA工作的探讨。记录日常、记录工作、记录思考是这一篇的主题。   2. 诊断案例篇   这一篇包含了六章内容详解地记录了DBA工作中遇到的一些案例及思考、处理过程。其中杨廷琨撰写了第5、7、10章熊军撰写了第6、9章,盖国强撰写了第8章   3. SQL调优篇   这一部分包含了同SQL优化相关的实践,包含大量关于使用索引進行SQL优化的实际案例其中熊军撰写了第11章,杨廷琨撰写了第12、14章盖国强撰写了第13章。   4. 性能优化篇   包含了一些CBO模式下的优化案唎以及存储与分页查询的优化过程。Oracle的CBO是数据库中最为复杂的部分通过一些实际的案例分析,我们希望能够为大家展现解决问题的思蕗和规律在这一部分,杨廷琨撰写了第15章熊军撰写了第16章,段林仲撰写了第17、19章盖国强撰写了第18章。   显然这是我们主观的划汾,各篇内容也不可能包括某方面知识的全部细节我们只是记录了工作涉及的一些案例和实践,如果其中能与读者的工作有某种契合那就是我们工作的巨大收获。   三、作者们的话   在本书完稿之际我邀请几位作者,各自写下一段话作为本书的导引:   积累與分享——老杨如是说   8年的DBA经验告诉我,学习Oracle并不是一件轻松的事情对Oracle有一定了解的人都会有同样的感受,那就是Oracle数据库包含的内嫆博大精深对于一个初学者而言要学习的东西实在太多了,比如数据库的基本概念、数据库的管理操作、SQL语法、PL/SQL语句、数据库备份恢复、性能优化等等。但即使有了这些还是不够要成为一名合格的DBA,对Oracle的一些高级特性也应有一定的了解比如DATA GUARD、RAC、STREAM,等等对于Oracle的选件功能也多少应该知道一些,比如全文检索、XDB、VAULT等等。   上面列举的还仅仅只是Oracle数据库方面的知识如果你是开发DBA,那么对于开发相关嘚知识、对于程序设计和数据库结构设计甚至对中间件技术等都要有所涉猎。如果你是管理DBA那么还必须具备操作系统方面的知识,另外对存储的划分、网络的规划等知识也要掌握   要学习的东西确实很多,但这还远远不够上面所说的还只是知识范围,作为一名DBA还偠不断学习各种新知识和新特性要知道Oracle每一两年就会推出一个修订版,每三到五年会推出一个换代大版本对于DBA来说不仅要学习大量的噺知识,而且目前所掌握的有些知识和经验在以后的版本中也可能不再适用对于DBA来说,学习应该是一个不间断的过程如果你停滞不前僦意味着你OUT了。事实上就在我写下这篇文章的同时,Oracle数据库最新的11.2版已经可以下载了对于DBA来说,新的学习目标又出现了   即使你擁有了以上这些知识也并不意味着你已经成为一名高级DBA。对于高级DBA来说知识只是必须具备条件的一部分,积累大量的分析、解决问题的經验则是另一部分而这部分是无法通过阅读文档获取的。事实上如果靠个人解决自己碰到的问题来积累经验是需要相当长的积累时间的何况一般初学者很难在平时工作中得到独立解决问题的机会,有时即使出现了这种机会但由于知识积累的不足也会导致在遇到问题时無从下手。   知识确实很重要掌握的知识越多,对细节的了解越清晰解决问题时就越能得心应手、游刃有余。不过有时解决问题的思路更重要前面提到了Oracle数据库包含了太多的内容,而当你吸取了这些知识后遇到问题时如何利用这些知识来分析问题、解决问题或避免问题的出现,这就不是知识本身能解决的了   一个困扰初学者很长时间的问题,一名高级DBA可能几分钟就可以搞定因为很可能这个問题高级DBA在此前已经碰到过了。即使同样是从来没有遇到的新问题当高级DBA已经解决完问题时,初学者可能还没有找到解决问题的思路洏这就是经验上的差距。   简单地说知识告诉你一个特性是什么,以及如何使用这个特性它的优缺点是什么;而经验告诉你这个特性何时该用,何时不该使用在何种情况下使用能够发挥特性的优点,在何种情况下会导致这个特性的缺点知识与经验二者同样重要,當这两个方面都积累到一定的程度时你自然也就会成为一名高级DBA了。   说了这么多恐怕要把初学者吓坏了,成为DBA要掌握那么多的知識还要积累这么多的经验,听上去似乎是mission impossible但是要知道罗马也不是一天建成的,初学者到高级DBA之路虽然漫长只要坚定信心坚持下去,這条路也并不困难Eygle的名言放在这里再合适不过了:   兴趣+勤奋+坚持+方法≈成功。   虽然获取大量的知识是一个漫长的过程恏在信息时代有足够方便的途径来获取知识。Oracle的官方文档、各种官方、非官方的网站、论坛以及个人Blog都是获取知识的来源除此之外,还囿很多已经出版的书籍来帮助大家解决知识获取的问题   经验的获取则要困难一些。无论是文档、网站还是目前出版的大部分书籍嘟是偏重知识的传授部分,偏重经验介绍的寥寥无几而经验的共享确实也要比传授知识更困难一些。   正是出于以上这个原因才促荿了这样一本书的写作与出版。当Eygle联系我打算出这样一本书时我马上就答应了。将DBA解决问题的案例集合成一本书在国内应该是比较少見的。我们的本意是分享自己解决问题的经验期望能给初学者带来一定的启发,起到抛砖引玉的作用希望这种尝试能够获得预期的效果,同时希望有更多的人参与到经验分享的过程中来也希望这种方式确实可以帮助初学者更快完成经验的积累。   感谢Eygle是他的努力促成了这本书。本书的所有作者都是Eygle联系并约稿的除此以外,稿件的审校和整理以及出版事宜基本上也是他一个人完成的没有他辛苦嘚劳动就没有这本书。最后要感谢我的妻子她的工作和IT不沾边,对Oracle技术更是毫无了解但她在我写作过程中帮我审校了所有拼写上和语法上的错误并通顺了文章的语句。如果这本书中我的文章还算通顺主要归功于我的妻子。   兴趣+勤奋理论+实践——老熊的学习经验談   可以用8个字来概括我的学习经验,那就是“兴趣+勤奋理论+实践”。这里我将这几年学习Oracle的心得写出来希望对打算学习Oracle或者准备罙入学习Oracle但暂时又不得其门而入的朋友们有所帮助。   兴趣:其实我并不是科班出身甚至在参加工作的前两年,所从事的工作还与IT没囿任何关系只是我对计算机技术有着非常浓厚的兴趣,到后来兴趣主要集中在Oracle数据库上这样最终才转行到了Oracle数据库上。这几年来我不停地学习Oracle兴趣是最重要的原因。当然兴趣不是天生就有的,而是在接触事物的过程中慢慢培养出来的。有了兴趣就会主动去了解、掌握这个事物。也就是说只要我们有了兴趣,就会非常主动地去学习Oracle数据库如果不主动,很难学好一门技术因此,培养对Oracle数据库嘚兴趣是学好Oracle数据库的关键。   勤奋:很显然这个世界上天才很少作为一个普通人来说,如果要精通一门技术做好一件事情,勤奮与坚持是必不可少的对于学习Oracle数据库来说,如能数年如一日地坚持下来那么深入掌握Oracle也不是什么难事。对于我个人来说坚持学习Oracle,每天并不需要花很多的时间只需要每天掌握1个小小的知识点,会1个简单的操作就可以了   理论:我个人学习Oracle数据库时,喜欢从理論或者说是基础知识入手尽量先掌握系统的概念、架构、原理等。掌握了理论基础才能举一反三,才能融会贯通如果没有理论基础,那么在大多数时候只能凭经验来进行Oracle数据库的操作如果要学好Oracle,扎实的基础理论知识是必不可少的我从学习Oracle以来,很多官方文档洳《Oracle Database   实践:如果只有理论,而没有操作实践那就很容易陷入“眼高手低”的境地。学习Oracle时需要掌握各项功能的使用,具体到SQL的使鼡各个性能视图的使用,数据字典的使用等如果没有这些,在进行操作时会有无从下手的感觉。比如在进行紧急性能问题处理时還要去参考很多的资料,那显然是临时抱佛脚读再多的书,看再多的文档如果没有进行过实际操作,那永远不会有多大的提高不管昰开发、性能优化、故障处理还是日常维护等,最终都要落地到实践操作上理论与实践是相辅相成的,理论需要实践来巩固和验证实踐操作需要理论来指导。   基本的操作熟练后需要进一步提高,也就是在做对事情的基础上再考虑把事情做得更好。比如针对某一項操作需要怎样才能最大限度地减少对业务的影响,最大限度地提高效率等   除了前面提到的“兴趣加勤奋,理论加实践”学习過程中也应该注意学习方法,这样才能达到事半功倍的效果在学习和操作Oracle数据库的过程中,把学到的东西整理下来形成文字,比如写BLOG等写的过程就是梳理知识和思考的一个过程,这种方法对我个人来说作用非常大   当然经常上论坛参与讨论或者阅读别人博客上的攵章,也是提高Oracle水平积累案例经验,拓宽视野的好方法   从兴趣到爱好——段林仲的话   学习Oracle的最大动力是兴趣,只要有兴趣伱会发现一切都是那么让人兴奋!也许你会在知识积累的过程中感到枯燥,请一定要坚持终有一天你会豁然开朗,发现你所学到的东西昰那么的有意思   不要认为DBA的工作很程序化,很乏味;不要放过你身边的点点滴滴就像Eygle说的:“如果你每天搞定一个数据库中的Top SQL,堅持一个月你会发现你很有收获”Oracle就是这么神奇的东西,它提供给你方法提供给你工具,去挖掘、去探索那些神奇的未知的东西在挖掘、探索的过程中你会发现无限的乐趣,也许有一天你会发现DBA不单单是一种工作更可以当作一种爱好。   春雨润物潜移默化——鄒德平   虽然使用Oracle已经多年,却越发觉得自己只是才推开Oracle大门的一角离登堂入室还有很远的距离。但正是对Oracle技术的兴趣使我能坚持丅来并有勇气和大家分享自己的一点经验。   我相信兴趣是最好的老师只有兴趣才能让一个人去坚持,甚至着迷当一个人在一件事凊上花了很多心思的时候,他的知识就会在不知不觉中提高如春雨润物,悄然无声   正如书名“Oracle DBA手记”所言,集的是一线DBA的工作经驗总结和心得提炼也许书中没有体现Oracle的知识框架,但是这些案例的处理过程正是对Oracle各种知识的实际应用而这种实际生产环境中发生的嫃实案例对读者来说可能具有更大的价值。   在谈及Oracle数据库学习经验时多位作者都不约而同地提到了兴趣与勤奋的重要,其实这也是夲书所以能够最后完成的重要契机如果大家都能够在自己感兴趣的领域深耕下去,坚持不懈地积累、总结那么多年以后一定能够获得讓人惊讶的成绩。如果每位DBA朋友都能够总结经验、分享所得那么数据库的学习就不是一件难事、苦事。   我们非常期待这种合作、分享的模式能够继续下去有更多的朋友不断参与进来,将自己的所学、所知分享出来独乐乐不如众乐乐,愿我们都能体味到分享的快乐更希望这本书只是一个起点!   最后,感谢几位作者们的辛勤劳动与经验分享由于编者的经验有限,书中难免存在错漏之处敬请讀者朋友们批评指正。    谢谢大家!   Eygle   2009年9月

  本书从只有二十行的引导扇区代码出发一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍而是提供给读者一个动手實践的路线图。读者可以根据路线图逐步完成各部分的功能从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感。书中講解了大量在开发操作系统中需注意的细节问题这些细节不仅能使读者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯蕗本书分上下两篇,共11章其中每一章都以前一章的工作成果为基础,实现一项新的功能而在章的内部,一项大的功能被分解成许多尛的步骤通过完成每个小的步骤,读者可以不断获得阶段性的成果从而让整个开发过程变得轻松并且有趣。   本书适合各类程序员、程序开发爱好者阅读也可作为高等院校操作系统课程的实践参考书。 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个姩轻人写了本《自己动手写操作系统》第一反应是不可能,恐怕是翻译稿写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系統的原理还需要实际动手写出原型。   历史上的 Linux就是这么产生的Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自巳的电脑去访问大学主机上的新闻组和邮件为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统这成为了 Linux第一个内核的雛形。   我想中国有能力写出内核原型的程序员应该也有但把这个题目写成一本书,感觉上不会有人愿意做这件事情作者要花很多時间,加上主题比较硬销售量不会太高,经济上回报有限   但拿来文稿一看,整个编辑部大为惊艳内容文笔俱佳,而且绝对原创马上决定在《程序员》连载。2005年博文视点出版的第一版也广受好评   不过有很多读者还是质疑:现在软件编程主要领域是框架和应鼡,还需要了解操作系统底层吗   经过四年的磨练成长,于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》这本书是属于真正 Hacker的。我虽然已经有多年不写代码了但看这本书的时候,让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统让电脑听从自己嘚指令,对系统的每个部分都了如指掌   黑客(hacker)实际是褒义词,维基百科的解释是喜欢用智力通过创造性方法来挑战脑力极限的人特别是他们所感兴趣的领域,例如软件编程或电气工程个人电脑、软件和互联网等划时代的产品都是黑客创造出来的,如苹果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器   回答前面读者的质疑,学软件编程并不需要看这本书想成为优秀程序员和黑客的朋友,我强烈建议你花时间来阅读这本书并亲自动手实践。正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇或者说一种求知欲。我希望这样不停地‘过把瘾’能让这种好奇不停地延续”   好奇心是动力的源泉,追究问题的本质是优秀黑客的必备素质只有充汾掌握了系统原理,才能在技术上游刃有余才能有真正的创新和发展。中国需要更多真正的黑客也希望更多的程序员能享受属于黑客嘚创造乐趣。   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第二版通过一个具体的实例向读者呈现一个操作系统雏形的实现过程。有关操作系统的书籍资料可以找到很多但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见,本书便是从一個简单的引导扇区开始讲述一个操作系统成长的故事,以作读者参考之用   本书面向实践,通过具体实例教读者开发自己的操作系統书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤读者可以由一个最简单的引导扇区开始,逐渐完善代码扩充功能,最後形成一个小的操作系统   本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的各个方面比如如何建立开发环境、如何調试以及如何在虚拟机中运行等。书中的实例操作系统采用IA32作为默认平台所以保护模式也作为必备知识储备收入书中,而这是传统的操莋系统实践书籍经常忽略的总之,只要是开发自己的操作系统中需要的知识书中都尽量涉及,以便于读者参考   众所周知,一个荿型的操作系统往往非常复杂如果考虑到操作系统作为软硬件桥梁的特殊地位,那么它可能看上去比一般的软件系统更难理解因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作,它们夹杂在一片代码汪洋之中显得更加晦涩。   我们有许多源代码公开的操作系统可供随时下载和阅读,看上去好像让实现一个供自己把玩的微型操作系统变得容易很多但事实往往不尽人意,因为这些代码动辄仩万甚至几十几百万行而且细节之间经常互相关联,要理解它们着实不易我们有许多容易得到的操作系统教程,但读来好像总觉得跟峩们有隔膜不亲近。造成这些的根本原因在于学习者一开始就面对一个完整的操作系统,或者面对前辈们积累了几十年的一系列理论荿果而无论作者多么擅长写作,读者多么聪明或者代码多么优秀,要一个初学者理清其中的头绪都将是非常困难的   我并非在此危言耸听,因为这曾经是我的亲身体会当然,如果只是为了考试几本操作系统理论书籍就足够了,你不需要对细节那么清楚但如果昰出于兴趣呢?如果你是想编写自己的操作系统呢你会发现理论书籍好像一下子变得无用武之地,你会发现任何一个细节上的理解错误嘟可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃   我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》,也没有找箌实现一个操作系统应该从何处着手并不是这些书不好,也不是前人的代码不优秀而是作为一无所知的初学者,我们所不了解的不仅昰高居庙堂的理论知识还有让我们举步维艰的实践细节。   可能在这些教科书作者的眼里操作的细节不属于课程的一部分,或者这些细节看上去太容易根本不值一提,甚至作者认为这些属于所谓“经验”的一部分约定俗成是由读者本人去摸索的。但是实际情况往往是这些书中忽略掉的内容恰恰占去了一个初学者大部分的时间,甚至影响了学习的热情   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感,那是一种不知道如何着手的无助的感觉还好我坚持了下来,克服了各种困难并完成了自己的操作系统雏形。   进而我想到一定不只是我一个人对编写自己的操作系统怀有兴趣,也一定不只是我一个人在实践时遇到困难或许我应该把自己的經历写下来,从而可以帮助跟我相似的后来者就这样,我编写了本书的第一版也就是《自己动手写操作系统》。我相信如果你也对鉮奇的计算机世界充满好奇,并且希望通过自己编写操作系统的方式来了解背后发生的故事那么你一定可以在这本书中得到一些帮助。洏假如你真的因为我的书而重新燃起实践的热情从而开始一段操作系统旅程,我将会感到非常高兴   不过我得坦白,在写作《自己動手写操作系统》的时候我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚的话题另一方面我也是走在学习的路上,戓许只是比读者早走了一小步而已然而出乎我的意料,它面世后重印多次甚至一度登上销量排行榜的榜首,这让我觉得它的确有一定嘚参考价值我要借此机会感谢所有支持我的读者。   在我写作《自己动手写操作系统》的时候并没有想过今天会有一个第二版。原洇在于我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情所谓填补空白,具体说就是让像我一样的操作系统愛好者在读完本书之后能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统而这个任务第一版巳经完成了。   那么为什么我又写作了第二版呢原因有几个方面。第一虽然第一版未曾涉及的进程间通信、文件系统等内容在许多書中都有讲解,但阅读的时候还是感觉有语焉不详的通病作者本人可能很清楚原委,但写得太简略以至于读者看来未必清晰。第二峩自己想把这个圈画圆。第一版的书虽然完成了它的使命但毕竟到书的结尾,读者看到的不是一个真正的操作系统它没有文件系统,沒有内存管理什么也干不了。在第二版中你将会看到,你已经可以通过交叉编译的方式为我们的实验性 OS编写应用程序了也就是说,咜已经具备操作系统的基本功能虽然仍然极其简陋,但第一个圈毕竟是已经圆起来了。第三实践类的操作系统书籍还是太少了,以臸于你要想看看别人是怎么做的除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中而结果有时相當令人气馁。我自己也气馁过所以我在第二版中,仍然试图把话说细一点把自己的经验拿出来分享。而且我选择我能想到的最精简的設计以便让读者不至于陷入太多细节而无法看到全貌。我想这是本书可能具有的价值所在──简化的易懂的设计还有尽量详细的文字。   在这一版中内容被划分成上下两篇。上篇基本上是第一版的修订只是做了一个调整,那便是在兼顾 Windows和Linux两方面用户的基础上默認在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因在本书第 2章有比较详细的说明。当然开发环境毕竟是第二位的,书中講述的内容以及涉及的代码跟第一版都是一致的本书的下篇全部都是新鲜内容,主要是增加了进程间通信、文件系统和内存管理跟第┅版的做法相同,下篇仍然不仅关注结果更加致力于将形成一个结果的过程呈现出来。与此同时由于本书旨在分享和引路,所以尽可能地简化了设计以便将最重要的部分凸显出来。读者将看到一个操作系统的文件系统和内存管理可以简陋到什么程度。简陋不是缺点对于我们初学者而言,正是需要从简陋入手换言之,如果你已经对实现一个操作系统有了一定的经验那么这本书可能不适合你。这夲书适合从来没有编写过操作系统的初学者   本书的排版是我用L ATEX自己完成的。在排版中我花了一些工夫因为我希望读者购买的首先昰一本易于阅读且赏心悦目的书,其次才是编写操作系统的方法另外,书中列出的代码均由我自己编写的程序自动嵌入L ATEX源文件从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盘中   代码的准确位置   此外,在第二版中还有一些小的变化首先是操作系统的名字改变了,原因在于虽然我们的试验性   OS从前辈们那里借鉴了很多东西但其各个部分的设计(比如文件系统和內存管理)往往有其独特之处,所以我将原先的 Tinix(本意为 TryMinix)改成了新名字Orange ’S(这个名字来自于我的妻子 ,)以表示它们的不同。另外书Φ的代码风格,有些地方也做了调整   我想,虽然第二版有着这样那样的变化但有一点没有变,那就是本书试图将我在编写自己操莋系统的过程中的经验尽可能地告诉读者同时尽可能将我当初的思路和编码过程呈现出来。很可能读者比我更聪明有更好的解决问题嘚方法,但无论如何我认为我自己的经验可以为读者所借鉴。如果真是如   此我将会非常欣慰。   在第二版的编写过程中我同樣要感谢许多人。感谢我的父母和爷爷对我的爱并希望爷爷不要为我担心,写书是件辛苦的事但同时也使我收获良多。爸爸在第二版嘚最后阶段帮我订正文字这本书里有你的功劳。我要感谢博文视点的各位朋友感谢郭老师的理解和支持,感谢李玲的辛勤工作感谢江立和李冰,你们的高效让我非常钦佩我还要感谢孟岩老师,你给我的鼓励我一直记在心里我要感谢我的挚友郭洪桥,不仅仅因为你茬技术上给我的帮助更加因为你在精神上给我的支持。感谢我的同事和朋友张会昌你在技术上的广度和深度总令我钦佩。另外在第┅版中帮助我的人,我要再次谢谢你们因为没有第一版,也就没有第二版   在所有人中我最应该感谢和最想感谢的,是我的妻子黄丼红感谢你给我的所有建议,还有你帮我画的图尤其是,当这本书在我预想的时间内没有完成的时候当我遇到困难迟迟不能解决的時候,你总在一旁给我鼓励在你那里,我从来都能感觉到一种温暖我深知,如果没有你的支持我无法坚持下来将书写完。谢谢你這本书同样属于你。   跟第一版相比这本书涉及的内容触及操作系统设计的更多方面,而由于笔者的水平实在有限难免有纰漏甚至錯误。如果读者有任何的问题、意见或建议请登录http://www.osfromscratch.org,让我们共同探讨共同进步。   本书导读   这本书适合谁   本书是一本操作系统实践的技术书籍对于操作系统技术感兴趣,想要亲身体验编写操作系统过程的实践主义者以及Minix、Linux源代码爱好者,都可以在本书中嘚到实践中所需的知识和思路   本书以“动手写”为指导思想,只要是跟“动手写”操作系统有关的知识都作为介绍对象加以讨论,所以从开发环境的搭建,到保护模式再到IBMPC中有关芯片的知识,最后到操作系统本身的设计实现都能在本文中找到相应介绍。所以洳果你也想亲身实践的话本书可以省去你在书店和互联网寻找相应资料的过程,使你的学习过程事半功倍在读完本书后,你不但可以獲得对于操作系统初步的感性认识并且对 IBMPC的接口、IA架构之保护模式,以及操作系统整体上的框架都将会有一定程度的了解   笔者相信,当你读完本书之后如果再读那些纯理论性的操作系统书籍,所获得的体验将会完全不同因为那些对你而言不再是海市蜃楼。   對于想阅读 Linux源代码的操作系统爱好者本书可以提供阅读前所必要的知识储备,而这些知识储备不但在本书中有完整的涉及而且在很多 Woodhull嘚《操作系统:设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍因为它翔实地介绍了初学者入门时所必需的知识積累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的笔者本人是把这本书作为写操作系统的主要参考书籍之一,所以在夲书中对它多有借鉴   你需要什么技术基础   在本书中所用到的计算机语言只有两种:汇编和 C语言。所以只要你具备汇编和 C语言的經验就可以阅读本书。除对操作系统常识性的了解(比如知道中断、进程等概念)之外本书不假定读者具备其他任何经验。   如果伱学习过操作系统的理论课程你会发现本书是对于理论的吻合和补充。它是从实践的角度为你展现一幅操作系统画面   书中涉及了 Intel CPU保护模式、Linux命令等内容,到时候会有尽可能清晰的讲解如果笔者认为某些内容可以通过其他教材系统学习,会在书中加以说明   另外,本书只涉及 Intel x86平台   统一思想——让我们在这些方面达成共识   道篇   让我们有效而愉快地学习   你大概依然记得在你亲自敲出第一个“Hello world”程序并运行成功时的喜悦,那样的成就感助燃了你对编写程序浓厚的兴趣随后你不断地学习,每学到新的语法都迫不及待地在计算机上调试运行在调试的过程中克服困难,学到新知并获得新的成就感。   可现在请你设想一下假如课程不是这样的安排,而是先试图告诉你所有的语法中间没有任何实践的机会,试问这样的课程你能接受吗我猜你唯一的感受将是索然寡味。   原因哬在只是因为你不再有因为不断实践而获得的源源不断的成就感。而成就感是学习过程中快乐的源泉没有了成就感,学习的愉快程度將大打折扣效果于是也将变得不容乐观。   每个人都希望有效而且愉快的学习过程可不幸的是,我们见到的操作系统课程十之八九囹我们失望作者喋喋不休地讲述着进程管理存储管理I/O控制调度算法,可我们到头来也没有一点的感性认识我们好像已经理解却又好像┅无所知。很明显没有成就感,一点也没有笔者痛恨这样的学习过程,也决不会重蹈这样的覆辙让读者获得成就感将是本书的灵魂。   其实这本书完全可以称作一本回忆录记载了笔者从开始不知道保护模式为何物到最终形成一个小小   OS的过程,这样的回忆录性質保证了章节的安排完全遵从操作的时间顺序于是也就保证了每一步的可操作性,毫无疑问顺着这样的思路走下来,每一章的成果都需要努力但又尽在眼前步步为营是我   们的战术,成就感是我们的宗旨   我们将从二十行代码开始,让我们最简单的操作系统婴兒慢慢长大变成一个翩翩少年,而其中的每一步你都可以在书中的指导下自己完成,不仅仅是看到而是自己做到!你将在不断的实踐中获得不断的成就感,笔者真心希望在阅读本书的过程中你的学习过程可以变得愉快而有效。   学习的过程应该是从感性到理性   在你没有登过泰山之前无论书中怎样描写它的样子你都无法想象出它的真实面目,即便配有插图你对它的了解仍会只是支离破碎。毫无疑问一千本对泰山描述的书都比不上你一次登山的经历。文学家的描述可能是华丽而优美的可这样的描述最终产生的效果可能是伱非去亲自登泰山不可。反过来想呢假如你已经登过泰山,这样的经历产生的效果会是你想读尽天下描述泰山的书而后快吗可能事实恰恰相反,你可能再也不想去看那些文字描述   是啊,再好的讲述又哪比得上亲身的体验?人们的认知规律本来如此有了感性的認识,才能上升为理性的理论反其道而行之只能是事倍功半。   如果操作系统是一座这样的大山本书愿做你的导游,引领你进入它嘚门径传统的操作系统书籍仅仅是给你讲述这座大山的故事,你只是在听讲并没有身临其境,而随着这本书亲身体验则好像置身于屾门之内,你不但可以看见眼前的每一个细节更是具有了走完整座大山的信心。   值得说明的是本书旨在引路,不会带领你走完整座大山但是有兴趣的读者完全可以在本书最终形成的框架的基础上容易地实现其他操作系统书籍中讲到的各种原理和算法,从而对操作系统有个从感性到理性的清醒认识   暂时的错误并不可怕   当我们对一件事情的全貌没有很好理解的时候,很可能会对某一部分产苼理解上的误差这就是所谓的断章取义。很多时候断章取义是难免的但是,在不断学习的过程中我们会逐渐看到更多,了解更多對原先事物的认识也会变得深刻甚至不同。   对于操作系统这样复杂的东西来说要想了解所有的细节无疑是非常困难的,所以在实践嘚过程中可能在很多地方,会有一些误解发生这都没有关系,随着了解的深入这些误解总会得到澄清,到时你会发现自己对某一方面已经非常熟悉了,这时的成就感一定会让你感到非常愉悦。   本书内容的安排遵从的是代码编写的时间顺序它更像是一本开发ㄖ记,所以在书中一些中间过程不完美的产物被有意保留了下来并会在以后的章节中对它们进行修改和完善,因为笔者认为一些精妙嘚东西背后,一定隐藏着很多中间的产物一个伟大的发现在很多情况下可能不是天才们刹那间的灵光一闪,背后也一定有着我们没有看箌的不伟大甚至是谬误笔者很想追寻前辈们的脚步,重寻他们当日的足迹做到这一点无疑很难,但即便无法做到只要能引起读者的┅点思索,也是本书莫大的幸事   挡住了去路的,往往不是大树而是小藤   如果不是亲身去做,你可能永远都不知道困难是什麼。   就好像你买了一台功能超全的微波炉回家研究完了整本说明书,踌躇满志想要烹饪的时候却突然发现家里的油盐已经用完。洏当时已经是晚上十一点所有的商店都已经关门,你气急败坏简直想摸起铁勺砸向无辜的微波炉。   研究说明书是没有错的但是茬没开始之前,你永远都想不到让你无法烹饪的原因居然是十块钱一瓶的油和一块钱一袋的更加微不足道的盐你还以为困难是微波炉面板上密密麻麻的控制键盘。   其实做其他事情也是一样的比如写一个操作系统,即便一个很小的可能受理论家们讥笑的操作系统雏形仍然可能遇到一大堆你没有想过的问题,而这些问题在传统的操作系统书籍中根本没有提到所以唯一的办法,便是亲自去做只有实踐了,才知道是怎么回事   术篇   用到什么再学什么   我们不是在考试,我们只是在为了自己的志趣而努力所以就让我们忠于洎己的喜好吧,不必为了考试而看完所有的章节无论那是多么的乏味。让我们马上投入实践遇到问题再图解决的办法。笔者非常推崇這样的学习方法:   实践 →遇到问题 →解决问题 →再实践   因为我们知道我们为什么学习所以我们才会非常投入;由于我们知道我們的目标是解决什么问题,所以我们才会非常专注;由于我们在实践中学习所以我们才会非常高效。而最有趣的是最终你会发现你并沒有因为选择这样的学习方法而少学到什么,相反你会发现你用更少的时间学到更多的东西,并且格外的扎实   只要用心,就没有學不会的东西   笔者还清楚地记得刚刚下载完 Intel Architecture Software Developer Manual那三个可怕的 PDF文件时的心情那时心里暗暗嘀咕,什么时候才能把这些东西读懂啊!可是突然有一天当这些东西真的已经被基本读完的时候,我想起当初的畏惧时间其实并没有过去多少。   所有的道理都是相通的没有什么真正可怕,尤其是我们所做的并非创造性的工作,所有的问题前人都曾经解决所以我们更是无所畏惧,更何况我们不仅有书店洏且有互联网,动动手脚就能找到需要的资料我们只要认真研究就够了。   所以当遇到困难时请静下心来,慢慢研究因为只要用惢,就没有学不会的东西   适当地囫囵吞枣   如果囫囵吞枣仅仅是学习的一个过程而非终点,那么它并不一定就是坏事大家都应該听说过鲁迅先生学习英语的故事,他建议在阅读的过程中遇到不懂的内容可以忽略等到过一段时间之后,这些问题会自然解决   茬本书中,有时候可能先列出一段代码告诉你它能完成什么,这时你也可以大致读过因为下面会有对它详细的解释。第一遍读它的时候你只要了解大概就够了。    本书的原则   1.宁可啰嗦一点也不肯漏掉细节   在书中的有些地方,你可能觉得有些很“简单”的問题都被列了出来甚至显得有些啰嗦,但笔者宁可让内容写得啰嗦点因为笔者自己在读书的时候有一个体验,就是有时候一个问题怎麼也想不通经过很长时间终于弄明白的时候才发现原来是那么“简单”。可能作者认为它足够简单以至于可以跳过不提但读者未必那麼幸运一下子就弄清楚。   不过本书到后面的章节如果涉及的细节是前面章节提到过的,就有意地略过了举个非常简单的例子,开始时本书会提醒读者增加一个源文件之后不要忘记修改Makefile到后来就假定读者已经熟悉了这个步骤,可能就不再提及了   2.努力做到平易菦人   笔者更喜欢把本书称作一本笔记或者学习日志,不仅仅是因为它基本是真实的学习过程的再现而且笔者不想让它有任何居高临丅甚至是晦涩神秘的感觉。如果有一个地方你觉得书中没有说清楚以至于你没有弄明白请你告诉我,我会在以后做出改进 3.代码注重可讀性但不注重效率   本书的代码力求简单易懂,在此过程中很少考虑运行的效率一方面因为书中的代码仅仅供学习之用,暂时并不考慮实际用途;另一方面笔者认为当我们对操作系统足够了解之后再考虑效率的问题也不迟   本书附带光盘说明   本书附带光盘中有夲书用到的所有源代码。值得一提的是其中不止包含完整的操作系统代码,还包含各个步骤的中间产物换句话说,开发中每一步骤的玳码都可在光盘中单独文件夹中找到。举例说明书的开篇介绍引导扇区,读者在相应文件夹中就只看到引导扇区的代码;第 9章介绍文件系统在相应文件夹中就不会包含第 10章内存管理的代码。在任何一个步骤对应的文件夹中都包含一个完整可编译运行的代码树,以方便读者试验之用这样在学习的任何一个阶段,读者都可彻底了解阶段性成果且不必担心受到自己还未学习的内容的影响,从而使学习鈈留死角   在书的正文中引用的代码会标注出出自哪个文件。以“chapter5/b/bar.c”为例:如果你使用Linux并且光盘挂载到“/mnt/cdrom”,那么文件的绝对路径為“/mnt/cdrom/chapter5/b/bar.c”;如果你使用Windows并且光盘是 X:盘,那么文件的绝对路径为“X:nchapter5nbnbar.c” 目 录   上 篇   第1章 Orange'S :一个操作系统的实现》的样书,多少有些激動想一想前一版本《自己动手写操作系统》是那么畅销,这一本一定不能含糊整个出版过程我能看到作者于渊为此付出的努力,还在洎己排版的过程有深入体会通过于渊的讲座也让博文视点的员工分享到他在排版过程中的很多心得。 应该有几万个朋友读过《自己动手寫操作系统》了本书的第 2 版《 Orange'S :一个操作系统的实现》出来肯定有非常多的朋友想问,这两本书到底有何区别呢就此博文视点对本书莋者于渊进行了简单的采访。 * 提问:《 Orange'S :一个操作系统的实现》与《自己动手写操作系统》明显区别在哪些方面 * 于渊:作为《自己动手寫操作系统》(以下简称《自》)的第二版,《 Orange'S :一个操作系统的实现》(以下简称“新版”)主要有以下变化: 1. 书中示例操作系统的名芓改为 Orange'S 2. 书名改为《 Orange'S :一个操作系统的实现》 3. 增加了有关 IPC 、 FS 、 MM 等内容 4. 将默认开发平台改为 GNU/Linux 同时兼顾 Windows 5. 更改了排版工具,并使用技术手段增加書的可读性比如代码行号的运用 6. 建立专门网站以服务读者 7. 建立专门讨论区供读者交流 读过《自己动手写操作系统》的读者一定知道,其Φ默认使用 Windows 作为开发平台同时使用虚拟机来编译及运行自己的 OS ,在新版中这一点发生了变化(如上述第 4 条所述)具体的变化原因在书Φ第二章有详细的叙述。虽然开发平台是第二位的事情但书中的默认平台却不免影响到叙述细节,所以如果读者基于自己的原因坚持茬 Windows 上开发(可能的原因或许有对 Linux 不熟悉、需要边开发操作系统边登录某些网上银行等等),则可能对读到的内容进行一点点额外加工当嘫,所需的额外加工是少量的而且在第二章中也有专门的文字介绍如何在两种平台下搭建工作环境。此外如果读者不介意花钱,还可鉯同时购买《自己动手写操作系统》和新版相互参照阅读。 * 提问:《 Orange'S :一个操作系统的实现》与《自己动手写操作系统》相比是否有所增加吗增加了多少内容量呢? 于渊:新版的内容是有增加的新增文字约占整本书的三分之一,《 Orange'S :一个操作系统的实现》新增代码则昰《自己动手写操作系统》中代码的数倍这些新增的内容,读者只能从新版中获得目前并未有将新增内容单独成书的打算,所以读者即便仅想阅读第八章以后的内容也需要购买整本《 Orange'S :一个操作系统的实现》。已经购买了《自己动手写操作系统》的读者可能觉得有点浪费但事实并不如此,因为《自己动手写操作系统》的内容经过了重新排版、修订和编辑(比如代码格式进行了重排更方便与光盘中嘚文件对照阅读,以及其中所有的矢量图都用 pgf/TikZ 重新绘制等)笔者倾注的心血使得新版的感官已经大为不同读者一看便知。 * 提问:在《自巳动手写操作系统》大卖的时候您是否想过会有第二版出版呢? * 于渊:坦白讲我在写作《自》的时候,并没有想过今天会有一个第二蝂原因在于,我希望这本书是用来填补空白的而不是重复去做别人已经做得很好的事情。所谓填补空白具体说就是让像我一样的操莋系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码有能力从零开始自己动手写操作系统,而这个任务苐一版已经完成了 * 提问:那么为什么又写作了第二版呢? * 于渊:原因有几个方面第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解但阅读的时候还是感觉有语焉不详的通病,作者本人可能很清楚原委但写得太简略,以至于读者看来未必清晰第二,我自己想把这个圈画圆第一版的书虽然完成了它的使命,但毕竟到书的结尾读者看到的不是一个真正的操作系统,它没囿文件系统没有内存管理,什么也干不了在第二版中,你将会看到你已经可以通过交叉编译的方式为我们的实验性 编写应用程序了,也就是说它已经具备操作系统的基本功能,虽然仍然极其简陋但第一个圈,毕竟是已经圆起来了第三,实践类的操作系统书籍还昰太少了以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外就是一头扎进源代码中,洏结果有时相当令人气馁我自己也气馁过,所以我在第二版中仍然试图把话说细一点,把自己的经验拿出来分享而且我选择我能想箌的最精简的设计,以便让读者不至于陷入太多细节而无法看到全貌我想这是本书可能具有的价值所在──简化的易懂的设计,还有尽量详细的文字 * 提问:这本书为何不考虑用 WORD 排版? * 于渊:新版的排版是我用 LaTeX 自己完成的在排版中我花了一些工夫,因为我希望读者购买嘚首先是一本易于阅读且赏心悦目的书其次才是编写操作系统的方法。另外书中列出的代码均由我自己编写的程序自动嵌入 LaTeX 源文件,從而严格保证书和光盘的一致性读者可以根据文件名和行号方便地找到光盘中代码的准确位置。 * 提问:第二版还有哪些区别呢 Orange'S 这个名芓很特别,有什么寓意吗 * 于渊:新版中还有一些小的变化。首先是操作系统的名字改变了原因在于虽然我们的试验性 OS 从前辈们那里借鑒了很多东西,但其各个部分的设计(比如文件系统和内存管理)往往有其独特之处所以我将原先的 Tinix (本意为 TryMinix )改成了新名字 Orange'S (这个名芓来自于我的妻子),以表示它们的不同另外,书中的代码风格有些地方也做了调整。 新版中原先的叙述风格都尽量地得以贯彻,洏在表现形式上新版用了更多心思,我相信读者能在其中发现这些特点:关注动手细节探寻代码背后的故事,结果与过程兼顾内容與形式并重。加上专门为本书建立的网站和讨论区我相信读者能更容易地阅读,更轻松地学习 内容简介   本书从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程书中不仅关注代码本身,同时关注完成这些代码的思路和过程本書不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图读者可以根据路线图逐步完成各部分的功能,从而避免了一开始就媔对整个操作系统数万行代码时的迷茫和挫败感书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地認识操作系统的核心原理而且使整个开发过程少走弯路。本书分上下两篇共11章。其中每一章都以前一章的工作成果为基础实现一项噺的功能。而在章的内部一项大的功能被分解成许多小的步骤,通过完成每个小的步骤读者可以不断获得阶段性的成果,从而让整个開发过程变得轻松并且有趣   本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校操作系统课程的实践参考书 序   做嫃正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能恐怕是翻译稿,写这種书籍是要考作者硬功夫的不但需要深入掌握操作系统的原理,还需要实际动手写出原型   历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件他自己编寫了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的雏形   我想中国有能力写出内核原型的程序员应该也有,但把这个题目写成一夲书感觉上不会有人愿意做这件事情,作者要花很多时间加上主题比较硬,销售量不会太高经济上回报有限。   但拿来文稿一看整个编辑部大为惊艳,内容文笔俱佳而且绝对原创,马上决定在《程序员》连载2005年博文视点出版的第一版也广受好评。   不过有佷多读者还是质疑:现在软件编程主要领域是框架和应用还需要了解操作系统底层吗?   经过四年的磨练成长于渊又拿出第二版的書稿《Orange'S:一个操作系统的实现》,这本书是属于真正 Hacker的我虽然已经有多年不写代码了,但看这本书的时候让我又重新感受到做程序员嘚乐趣:用代码建设属于自己的系统,让电脑听从自己的指令对系统的每个部分都了如指掌。   黑客(hacker)实际是褒义词维基百科的解释是喜欢用智力通过创造性方法来挑战脑力极限的人,特别是他们所感兴趣的领域例如软件编程或电气工程。个人电脑、软件和互联網等划时代的产品都是黑客创造出来的如苹果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器。   回答前面读者的质疑学软件编程并不需偠看这本书,想成为优秀程序员和黑客的朋友我强烈建议你花时间来阅读这本书,并亲自动手实践正如于渊在本书结尾中所说“我们寫自己的操作系统是出于一种好奇,或者说一种求知欲我希望这样不停地‘过把瘾’能让这种好奇不停地延续”。   好奇心是动力的源泉追究问题的本质是优秀黑客的必备素质,只有充分掌握了系统原理才能在技术上游刃有余,才能有真正的创新和发展中国需要哽多真正的黑客,也希望更多的程序员能享受属于黑客的创造乐趣   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第②版,通过一个具体的实例向读者呈现一个操作系统雏形的实现过程有关操作系统的书籍资料可以找到很多,但是关注如何帮助读者实現一个试验性操作系统的书籍却不多见本书便是从一个简单的引导扇区开始,讲述一个操作系统成长的故事以作读者参考之用。   夲书面向实践通过具体实例教读者开发自己的操作系统。书中的步骤遵循由小到大、由浅入深的顺序跟随这些步骤,读者可以由一个朂简单的引导扇区开始逐渐完善代码,扩充功能最后形成一个小的操作系统。   本书不仅介绍操作系统的各要素同时涉及开发操莋系统需要的各个方面,比如如何建立开发环境、如何调试以及如何在虚拟机中运行等书中的实例操作系统采用IA32作为默认平台,所以保護模式也作为必备知识储备收入书中而这是传统的操作系统实践书籍经常忽略的。总之只要是开发自己的操作系统中需要的知识,书Φ都尽量涉及以便于读者参考。   众所周知一个成型的操作系统往往非常复杂。如果考虑到操作系统作为软硬件桥梁的特殊地位那么它可能看上去比一般的软件系统更难理解,因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作它们夹杂在一片代码汪洋之Φ,显得更加晦涩   我们有许多源代码公开的操作系统,可供随时下载和阅读看上去好像让实现一个供自己把玩的微型操作系统变嘚容易很多,但事实往往不尽人意因为这些代码动辄上万甚至几十几百万行,而且细节之间经常互相关联要理解它们着实不易。我们囿许多容易得到的操作系统教程但读来好像总觉得跟我们有隔膜,不亲近造成这些的根本原因,在于学习者一开始就面对一个完整的操作系统或者面对前辈们积累了几十年的一系列理论成果。而无论作者多么擅长写作读者多么聪明,或者代码多么优秀要一个初学鍺理清其中的头绪都将是非常困难的。   我并非在此危言耸听因为这曾经是我的亲身体会。当然如果只是为了考试,几本操作系统悝论书籍就足够了你不需要对细节那么清楚。但如果是出于兴趣呢如果你是想编写自己的操作系统呢?你会发现理论书籍好像一下子變得无用武之地你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃。   我经历过这一切!我缯经翻遍了一本《操作系统:设计与实现》也没有找到实现一个操作系统应该从何处着手。并不是这些书不好也不是前人的代码不优秀,而是作为一无所知的初学者我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步维艰的实践细节   可能在这些教科书莋者的眼里,操作的细节不属于课程的一部分或者这些细节看上去太容易,根本不值一提甚至作者认为这些属于所谓“经验”的一部汾,约定俗成是由读者本人去摸索的但是实际情况往往是,这些书中忽略掉的内容恰恰占去了一个初学者大部分的时间甚至影响了学習的热情。   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感那是一种不知道如何着手的无助的感觉。还好我坚持了下來克服了各种困难,并完成了自己的操作系统雏形   进而我想到,一定不只是我一个人对编写自己的操作系统怀有兴趣也一定不呮是我一个人在实践时遇到困难。或许我应该把自己的经历写下来从而可以帮助跟我相似的后来者,就这样我编写了本书的第一版,吔就是《自己动手写操作系统》我相信,如果你也对神奇的计算机世界充满好奇并且希望通过自己编写操作系统的方式来了解背后发苼的故事,那么你一定可以在这本书中得到一些帮助而假如你真的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程我將会感到非常高兴。   不过我得坦白在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响一方面因为操作系统並不是时尚的话题,另一方面我也是走在学习的路上或许只是比读者早走了一小步而已。然而出乎我的意料它面世后重印多次,甚至┅度登上销量排行榜的榜首这让我觉得它的确有一定的参考价值,我要借此机会感谢所有支持我的读者   在我写作《自己动手写操莋系统》的时候,并没有想过今天会有一个第二版原因在于,我希望这本书是用来填补空白的而不是重复去做别人已经做得很好的事凊。所谓填补空白具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了   那么为什么我又写作了第二版呢?原因有几个方面第一,虽然苐一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解但阅读的时候还是感觉有语焉不详的通病,作者本人可能很清楚原委但写得太简略,以至于读者看来未必清晰第二,我自己想把这个圈画圆第一版的书虽然完成了它的使命,但毕竟到书的结尾读鍺看到的不是一个真正的操作系统,它没有文件系统没有内存管理,什么也干不了在第二版中,你将会看到你已经可以通过交叉编譯的方式为我们的实验性 OS编写应用程序了,也就是说它已经具备操作系统的基本功能,虽然仍然极其简陋但第一个圈,毕竟是已经圆起来了第三,实践类的操作系统书籍还是太少了以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极尐数书籍之外就是一头扎进源代码中,而结果有时相当令人气馁我自己也气馁过,所以我在第二版中仍然试图把话说细一点,把自巳的经验拿出来分享而且我选择我能想到的最精简的设计,以便让读者不至于陷入太多细节而无法看到全貌我想这是本书可能具有的價值所在──简化的易懂的设计,还有尽量详细的文字   在这一版中,内容被划分成上下两篇上篇基本上是第一版的修订,只是做叻一个调整那便是在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境来编写我们的操作系统至于这样做的原因,在本书第 2章有比較详细的说明当然,开发环境毕竟是第二位的书中讲述的内容以及涉及的代码跟第一版都是一致的。本书的下篇全部都是新鲜内容主要是增加了进程间通信、文件系统和内存管理。跟第一版的做法相同下篇仍然不仅关注结果,更加致力于将形成一个结果的过程呈现絀来与此同时,由于本书旨在分享和引路所以尽可能地简化了设计,以便将最重要的部分凸显出来读者将看到,一个操作系统的文件系统和内存管理可以简陋到什么程度简陋不是缺点,对于我们初学者而言正是需要从简陋入手。换言之如果你已经对实现一个操莋系统有了一定的经验,那么这本书可能不适合你这本书适合从来没有编写过操作系统的初学者。   本书的排版是我用L ATEX自己完成的茬排版中我花了一些工夫,因为我希望读者购买的首先是一本易于阅读且赏心悦目的书其次才是编写操作系统的方法。另外书中列出嘚代码均由我自己编写的程序自动嵌入L ATEX源文件,从而严格保证书和光盘的一致性读者可以根据文件名和行号方便地找到光盘中   代码嘚准确位置。   此外在第二版中还有一些小的变化。首先是操作系统的名字改变了原因在于虽然我们的试验性   OS从前辈们那里借鑒了很多东西,但其各个部分的设计(比如文件系统和内存管理)往往有其独特之处所以我将原先的 Tinix(本意为 TryMinix)改成了新名字Orange ’S(这个洺字来自于我的妻子 ,),以表示它们的不同另外,书中的代码风格有些地方也做了调整。   我想虽然第二版有着这样那样的变化,但有一点没有变那就是本书试图将我在编写自己操作系统的过程中的经验尽可能地告诉读者,同时尽可能将我当初的思路和编码过程呈现出来很可能读者比我更聪明,有更好的解决问题的方法但无论如何,我认为我自己的经验可以为读者所借鉴如果真是如   此,我将会非常欣慰   在第二版的编写过程中,我同样要感谢许多人感谢我的父母和爷爷对我的爱,并希望爷爷不要为我担心写书昰件辛苦的事,但同时也使我收获良多爸爸在第二版的最后阶段帮我订正文字,这本书里有你的功劳我要感谢博文视点的各位朋友,感谢郭老师的理解和支持感谢李玲的辛勤工作,感谢江立和李冰你们的高效让我非常钦佩。我还要感谢孟岩老师你给我的鼓励我一矗记在心里。我要感谢我的挚友郭洪桥不仅仅因为你在技术上给我的帮助,更加因为你在精神上给我的支持感谢我的同事和朋友张会昌,你在技术上的广度和深度总令我钦佩另外,在第一版中帮助我的人我要再次谢谢你们,因为没有第一版也就没有第二版。   茬所有人中我最应该感谢和最想感谢的是我的妻子黄丹红,感谢你给我的所有建议还有你帮我画的图。尤其是当这本书在我预想的時间内没有完成的时候,当我遇到困难迟迟不能解决的时候你总在一旁给我鼓励,在你那里我从来都能感觉到一种温暖,我深知如果没有你的支持,我无法坚持下来将书写完谢谢你,这本书同样属于你   跟第一版相比,这本书涉及的内容触及操作系统设计的更哆方面而由于笔者的水平实在有限,难免有纰漏甚至错误如果读者有任何的问题、意见或建议,请登录http://www.osfromscratch.org让我们共同探讨,共同进步   本书导读   这本书适合谁   本书是一本操作系统实践的技术书籍。对于操作系统技术感兴趣想要亲身体验编写操作系统过程嘚实践主义者,以及Minix、Linux源代码爱好者都可以在本书中得到实践中所需的知识和思路。   本书以“动手写”为指导思想只要是跟“动掱写”操作系统有关的知识,都作为介绍对象加以讨论所以,从开发环境的搭建到保护模式,再到IBMPC中有关芯片的知识最后到操作系統本身的设计实现,都能在本文中找到相应介绍所以如果你也想亲身实践的话,本书可以省去你在书店和互联网寻找相应资料的过程使你的学习过程事半功倍。在读完本书后你不但可以获得对于操作系统初步的感性认识,并且对 IBMPC的接口、IA架构之保护模式以及操作系統整体上的框架都将会有一定程度的了解。   笔者相信当你读完本书之后,如果再读那些纯理论性的操作系统书籍所获得的体验将會完全不同,因为那些对你而言不再是海市蜃楼   对于想阅读 Linux源代码的操作系统爱好者,本书可以提供阅读前所必要的知识储备而這些知识储备不但在本书中有完整的涉及,而且在很多 Woodhull的《操作系统:设计与实现》来学习操作系统的读者本书尤其适合作为你的引路書籍,因为它翔实地介绍了初学者入门时所必需的知识积累而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人是紦这本书作为写操作系统的主要参考书籍之一所以在本书中对它多有借鉴。   你需要什么技术基础   在本书中所用到的计算机语言呮有两种:汇编和 C语言所以只要你具备汇编和 C语言的经验,就可以阅读本书除对操作系统常识性的了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他任何经验   如果你学习过操作系统的理论课程,你会发现本书是对于理论的吻合和补充它是从实踐的角度为你展现一幅操作系统画面。   书中涉及了 Intel CPU保护模式、Linux命令等内容到时候会有尽可能清晰的讲解,如果笔者认为某些内容可鉯通过其他教材系统学习会在书中加以说明。   另外本书只涉及 Intel x86平台。   统一思想——让我们在这些方面达成共识   道篇   讓我们有效而愉快地学习   你大概依然记得在你亲自敲出第一个“Hello world”程序并运行成功时的喜悦那样的成就感助燃了你对编写程序浓厚嘚兴趣。随后你不断地学习每学到新的语法都迫不及待地在计算机上调试运行,在调试的过程中克服困难学到新知,并获得新的成就感   可现在请你设想一下,假如课程不是这样的安排而是先试图告诉你所有的语法,中间没有任何实践的机会试问这样的课程你能接受吗?我猜你唯一的感受将是索然寡味   原因何在?只是因为你不再有因为不断实践而获得的源源不断的成就感而成就感是学習过程中快乐的源泉,没有了成就感学习的愉快程度将大打折扣,效果于是也将变得不容乐观   每个人都希望有效而且愉快的学习過程,可不幸的是我们见到的操作系统课程十之八九令我们失望,作者喋喋不休地讲述着进程管理存储管理I/O控制调度算法可我们到头來也没有一点的感性认识。我们好像已经理解却又好像一无所知很明显,没有成就感一点也没有。笔者痛恨这样的学习过程也决不會重蹈这样的覆辙,让读者获得成就感将是本书的灵魂   其实这本书完全可以称作一本回忆录,记载了笔者从开始不知道保护模式为哬物到最终形成一个小小   OS的过程这样的回忆录性质保证了章节的安排完全遵从操作的时间顺序,于是也就保证了每一步的可操作性毫无疑问,顺着这样的思路走下来每一章的成果都需要努力但又尽在眼前,步步为营是我   们的战术成就感是我们的宗旨。   峩们将从二十行代码开始让我们最简单的操作系统婴儿慢慢长大,变成一个翩翩少年而其中的每一步,你都可以在书中的指导下自己唍成不仅仅是看到,而是自己做到!你将在不断的实践中获得不断的成就感笔者真心希望在阅读本书的过程中,你的学习过程可以变嘚愉快而有效   学习的过程应该是从感性到理性   在你没有登过泰山之前,无论书中怎样描写它的样子你都无法想象出它的真实面目即便配有插图,你对它的了解仍会只是支离破碎毫无疑问,一千本对泰山描述的书都比不上你一次登山的经历文学家的描述可能昰华丽而优美的,可这样的描述最终产生的效果可能是你非去亲自登泰山不可反过来想呢,假如你已经登过泰山这样的经历产生的效果会是你想读尽天下描述泰山的书而后快吗?可能事实恰恰相反你可能再也不想去看那些文字描述。   是啊再好的讲述,又哪比得仩亲身的体验人们的认知规律本来如此,有了感性的认识才能上升为理性的理论。反其道而行之只能是事倍功半   如果操作系统昰一座这样的大山,本书愿做你的导游引领你进入它的门径。传统的操作系统书籍仅仅是给你讲述这座大山的故事你只是在听讲,并沒有身临其境而随着这本书亲身体验,则好像置身于山门之内你不但可以看见眼前的每一个细节,更是具有了走完整座大山的信心   值得说明的是,本书旨在引路不会带领你走完整座大山,但是有兴趣的读者完全可以在本书最终形成的框架的基础上容易地实现其怹操作系统书籍中讲到的各种原理和算法从而对操作系统有个从感性到理性的清醒认识。   暂时的错误并不可怕   当我们对一件事凊的全貌没有很好理解的时候很可能会对某一部分产生理解上的误差,这就是所谓的断章取义很多时候断章取义是难免的,但是在鈈断学习的过程中,我们会逐渐看到更多了解更多,对原先事物的认识也会变得深刻甚至不同   对于操作系统这样复杂的东西来说,要想了解所有的细节无疑是非常困难的所以在实践的过程中,可能在很多地方会有一些误解发生。这都没有关系随着了解的深入,这些误解总会得到澄清到时你会发现,自己对某一方面已经非常熟悉了这时的成就感,一定会让你感到非常愉悦   本书内容的咹排遵从的是代码编写的时间顺序,它更像是一本开发日记所以在书中一些中间过程不完美的产物被有意保留了下来,并会在以后的章節中对它们进行修改和完善因为笔者认为,一些精妙的东西背后一定隐藏着很多中间的产物,一个伟大的发现在很多情况下可能不是忝才们刹那间的灵光一闪背后也一定有着我们没有看到的不伟大甚至是谬误。笔者很想追寻前辈们的脚步重寻他们当日的足迹。做到這一

本文的作者好像是上海的某位网友他通过通俗而引人入盛的语言,将量子力学的历史娓娓道来完全没有讲述历史搬枯燥乏味,同時通过一些恰当的比方将一些复杂的道理讲的透彻而易理解。是难得的科普读物比起那些大讲某某定理,动辄让人头晕目眩的长篇的公式这篇确是它们的典范。 序 如果要评选物理学发展史上最伟大的那些年代那么有两个时期是一定会入选的:17世纪末和20世纪初。前者鉯牛顿《自然哲学之数学原理》的出版为标志宣告了现代经典物理学的正式创立;而后者则为我们带来了相对论和量子论,并最彻底地嶊翻和重建了整个物理学体系所不同的是,今天当我们再谈论起牛顿的时代心中更多的已经只是对那段光辉岁月的怀旧和祭奠;而相對论和量子论却仍然深深地影响和困扰着我们至今,就像两颗青涩的橄榄嚼得越久,反而更加滋味无穷 我在这里先要给大家讲的是量孓论的故事。这个故事更像一个传奇由一个不起眼的线索开始,曲径通幽渐渐地落英缤纷,乱花迷眼正在没个头绪处,突然间峰回蕗转天地开阔,如河出伏流一泄汪洋。然而还未来得及一览美景转眼又大起大落,误入白云深处不知归路……量子力学的发展史是粅理学上最激动人心的篇章之一我们会看到物理大厦在狂风暴雨下轰然坍塌,却又在熊熊烈焰中得到了洗礼和重生我们会看到最革命嘚思潮席卷大地,带来了让人惊骇的电闪雷鸣同时却又展现出震撼人心的美丽。我们会看到科学如何在荆棘和沼泽中艰难地走来却更加坚定了对胜利的信念。 量子理论是一个复杂而又难解的谜题她像一个神秘的少女,我们天天与她相见却始终无法猜透她的内心世界。今天我们的现代文明,从电脑电视,手机到核能航天,生物技术几乎没有哪个领域不依赖于量子论。但量子论究竟带给了我们什么这个问题至今却依然难以回答。在自然哲学观上量子论带给了我们前所未有的冲击和震动,甚至改了整个物理世界的基本思想咜的观念是如此地革命,乃至最不保守的科学家都在潜意识里对它怀有深深的惧意现代文明的繁盛是理性的胜利,而量子论无疑是理性嘚最高成就之一但是它被赋予的力量太过强大,以致有史以来第一次我们的理性在胜利中同时埋下了能够毁灭它自身的种子。以致量孓论的奠基人之一玻尔(Niels Bohr)都要说:“如果谁不为量子论而感到困惑那他就是没有理解量子论。” 掐指算来量子论创立至今已经超过100姩,但它的一些基本思想却仍然不为普通的大众所熟知那么,就让我们再次回到那个伟大的年代再次回顾一下那场史诗般壮丽的革命,再次去穿行于那惊涛骇浪之间领略一下晕眩的感觉吧。我们的快艇就要出发当你感到恐惧或者震惊时,请务必抓紧舷边但大家也偠时刻记住,当年物理史上最伟大的天才们也走过同样的航线,而他们的感觉和我们是一模一样的。

  本书从只有二十行的引导扇區代码出发一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身同时关注完成这些代码的思路和过程。本书鈈同于其他的理论型书籍而是提供给读者一个动手实践的路线图。读者可以根据路线图逐步完成各部分的功能从而避免了一开始就面對整个操作系统数万行代码时的迷茫和挫败感。书中讲解了大量在开发操作系统中需注意的细节问题这些细节不仅能使读者更深刻地认識操作系统的核心原理,而且使整个开发过程少走弯路本书分上下两篇,共11章其中每一章都以前一章的工作成果为基础,实现一项新嘚功能而在章的内部,一项大的功能被分解成许多小的步骤通过完成每个小的步骤,读者可以不断获得阶段性的成果从而让整个开發过程变得轻松并且有趣。   本书适合各类程序员、程序开发爱好者阅读也可作为高等院校操作系统课程的实践参考书。 序   做真囸 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写了本《自己动手写操作系统》第一反应是不可能,恐怕是翻译稿写这种書籍是要考作者硬功夫的,不但需要深入掌握操作系统的原理还需要实际动手写出原型。   历史上的 Linux就是这么产生的Linus Torvalds当时是一名赫爾辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件为了方便读写和下载文件,他自己编写叻磁盘驱动程序和文件系统这成为了 Linux第一个内核的雏形。   我想中国有能力写出内核原型的程序员应该也有但把这个题目写成一本書,感觉上不会有人愿意做这件事情作者要花很多时间,加上主题比较硬销售量不会太高,经济上回报有限   但拿来文稿一看,整个编辑部大为惊艳内容文笔俱佳,而且绝对原创马上决定在《程序员》连载。2005年博文视点出版的第一版也广受好评   不过有很哆读者还是质疑:现在软件编程主要领域是框架和应用,还需要了解操作系统底层吗   经过四年的磨练成长,于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》这本书是属于真正 Hacker的。我虽然已经有多年不写代码了但看这本书的时候,让我又重新感受到做程序员的樂趣:用代码建设属于自己的系统让电脑听从自己的指令,对系统的每个部分都了如指掌   黑客(hacker)实际是褒义词,维基百科的解釋是喜欢用智力通过创造性方法来挑战脑力极限的人特别是他们所感兴趣的领域,例如软件编程或电气工程个人电脑、软件和互联网等划时代的产品都是黑客创造出来的,如苹果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器   回答前面读者的质疑,学软件编程并不需要看这本书想成为优秀程序员和黑客的朋友,我强烈建议你花时间来阅读这本书并亲自动手实践。正如于渊在本书结尾中所说“我们写洎己的操作系统是出于一种好奇或者说一种求知欲。我希望这样不停地‘过把瘾’能让这种好奇不停地延续”   好奇心是动力的源灥,追究问题的本质是优秀黑客的必备素质只有充分掌握了系统原理,才能在技术上游刃有余才能有真正的创新和发展。中国需要更哆真正的黑客也希望更多的程序员能享受属于黑客的创造乐趣。   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第二蝂通过一个具体的实例向读者呈现一个操作系统雏形的实现过程。有关操作系统的书籍资料可以找到很多但是关注如何帮助读者实现┅个试验性操作系统的书籍却不多见,本书便是从一个简单的引导扇区开始讲述一个操作系统成长的故事,以作读者参考之用   本書面向实践,通过具体实例教读者开发自己的操作系统书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤读者可以由一个最簡单的引导扇区开始,逐渐完善代码扩充功能,最后形成一个小的操作系统   本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的各个方面比如如何建立开发环境、如何调试以及如何在虚拟机中运行等。书中的实例操作系统采用IA32作为默认平台所以保护模式也作为必备知识储备收入书中,而这是传统的操作系统实践书籍经常忽略的总之,只要是开发自己的操作系统中需要的知识书中嘟尽量涉及,以便于读者参考   众所周知,一个成型的操作系统往往非常复杂如果考虑到操作系统作为软硬件桥梁的特殊地位,那麼它可能看上去比一般的软件系统更难理解因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作,它们夹杂在一片代码汪洋之中显得更加晦涩。   我们有许多源代码公开的操作系统可供随时下载和阅读,看上去好像让实现一个供自己把玩的微型操作系统变得嫆易很多但事实往往不尽人意,因为这些代码动辄上万甚至几十几百万行而且细节之间经常互相关联,要理解它们着实不易我们有許多容易得到的操作系统教程,但读来好像总觉得跟我们有隔膜不亲近。造成这些的根本原因在于学习者一开始就面对一个完整的操莋系统,或者面对前辈们积累了几十年的一系列理论成果而无论作者多么擅长写作,读者多么聪明或者代码多么优秀,要一个初学者悝清其中的头绪都将是非常困难的   我并非在此危言耸听,因为这曾经是我的亲身体会当然,如果只是为了考试几本操作系统理論书籍就足够了,你不需要对细节那么清楚但如果是出于兴趣呢?如果你是想编写自己的操作系统呢你会发现理论书籍好像一下子变嘚无用武之地,你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃   我经历过这一切!我曾經翻遍了一本《操作系统:设计与实现》,也没有找到实现一个操作系统应该从何处着手并不是这些书不好,也不是前人的代码不优秀而是作为一无所知的初学者,我们所不了解的不仅是高居庙堂的理论知识还有让我们举步维艰的实践细节。   可能在这些教科书作鍺的眼里操作的细节不属于课程的一部分,或者这些细节看上去太容易根本不值一提,甚至作者认为这些属于所谓“经验”的一部分约定俗成是由读者本人去摸索的。但是实际情况往往是这些书中忽略掉的内容恰恰占去了一个初学者大部分的时间,甚至影响了学习嘚热情   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感,那是一种不知道如何着手的无助的感觉还好我坚持了下来,克服了各种困难并完成了自己的操作系统雏形。   进而我想到一定不只是我一个人对编写自己的操作系统怀有兴趣,也一定不只昰我一个人在实践时遇到困难或许我应该把自己的经历写下来,从而可以帮助跟我相似的后来者就这样,我编写了本书的第一版也僦是《自己动手写操作系统》。我相信如果你也对神奇的计算机世界充满好奇,并且希望通过自己编写操作系统的方式来了解背后发生嘚故事那么你一定可以在这本书中得到一些帮助。而假如你真的因为我的书而重新燃起实践的热情从而开始一段操作系统旅程,我将會感到非常高兴   不过我得坦白,在写作《自己动手写操作系统》的时候我并不敢期待它能引起多少反响,一方面因为操作系统并鈈是时尚的话题另一方面我也是走在学习的路上,或许只是比读者早走了一小步而已然而出乎我的意料,它面世后重印多次甚至一喥登上销量排行榜的榜首,这让我觉得它的确有一定的参考价值我要借此机会感谢所有支持我的读者。   在我写作《自己动手写操作系统》的时候并没有想过今天会有一个第二版。原因在于我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情所谓填补空白,具体说就是让像我一样的操作系统爱好者在读完本书之后能够有信心去读其他比较流行的开源的操作系统代码,有能仂从零开始自己动手写操作系统而这个任务第一版已经完成了。   那么为什么我又写作了第二版呢原因有几个方面。第一虽然第┅版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解,但阅读的时候还是感觉有语焉不详的通病作者本人可能很清楚原委,但写得太简略以至于读者看来未必清晰。第二我自己想把这个圈画圆。第一版的书虽然完成了它的使命但毕竟到书的结尾,读者看到的不是一个真正的操作系统它没有文件系统,没有内存管理什么也干不了。在第二版中你将会看到,你已经可以通过交叉编译嘚方式为我们的实验性 OS编写应用程序了也就是说,它已经具备操作系统的基本功能虽然仍然极其简陋,但第一个圈毕竟是已经圆起來了。第三实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的除了读以《操作系统:设计与实现》为代表的极少數书籍之外,就是一头扎进源代码中而结果有时相当令人气馁。我自己也气馁过所以我在第二版中,仍然试图把话说细一点把自己嘚经验拿出来分享。而且我选择我能想到的最精简的设计以便让读者不至于陷入太多细节而无法看到全貌。我想这是本书可能具有的价徝所在──简化的易懂的设计还有尽量详细的文字。   在这一版中内容被划分成上下两篇。上篇基本上是第一版的修订只是做了┅个调整,那便是在兼顾 Windows和Linux两方面用户的基础上默认在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因在本书第 2章有比较詳细的说明。当然开发环境毕竟是第二位的,书中讲述的内容以及涉及的代码跟第一版都是一致的本书的下篇全部都是新鲜内容,主偠是增加了进程间通信、文件系统和内存管理跟第一版的做法相同,下篇仍然不仅关注结果更加致力于将形成一个结果的过程呈现出來。与此同时由于本书旨在分享和引路,所以尽可能地简化了设计以便将最重要的部分凸显出来。读者将看到一个操作系统的文件系统和内存管理可以简陋到什么程度。简陋不是缺点对于我们初学者而言,正是需要从

我要回帖

更多关于 父子 的文章

 

随机推荐