精华内容
下载资源
问答
  • 某保险公司新人成长手册以企业理财为核心,以财务管理为内容,需要某保险公司新人成长手册朋友千万不要错...该文档为某保险公司新人成长手册,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 优秀PPT作品欣赏:培训师成长手册幻灯片下载。 本PPT为读书笔记PowerPoint,设计风格以简洁简约风格,幻灯片采用红色主题背景色。 PPT主要内容为教你怎样成为一名优秀的培训师; 培训师成长手册 困惑篇 培训师职业...
  • 优秀PPT作品欣赏:培训师成长手册幻灯片下载。 本PPT为读书笔记PowerPoint,设计风格以简洁简约风格,幻灯片采用红色主题背景色。 PPT主要内容为教你怎样成为一名优秀的培训师; 培训师成长手册 困惑篇 ...
  • 具体的问题,有个人发展空间上的,有工作内容上的,有时间精力安排的,有对外合作配合的,笔者仅以自己过去的经历和对leader工作的理解,分享一下对成为一个成功的研发leader的视角、观点。 研发leader的工作内容...

       

          近来和一些担任研发leader的同事和朋友交流中,发现部分同学,在研发leader的岗位工作上遇到了瓶颈。具体的问题,有个人发展空间上的,有工作内容上的,有时间精力安排的,有对外合作配合的,笔者仅以自己过去的经历和对leader工作的理解,分享一下对成为一个成功的研发leader的视角、观点。

     

           研发leader的工作内容,可以分为以下几个方向:

            1.  技术方向工作 

            2. 规划方向工作(目标、计划、执行、制度等)

            3. 协调方向工作(跨部门沟通、跨部门项目协作)

            4. 团队方向工作(招聘、培养、沟通、团建、宣传等)

     

     

    在这几个方向上,分4个主题,逐个来分析、探讨。这4点交融在leader的工作中,因此每个方向探讨时,会有互相交叉的部分。

     

    技术方向篇

    -------------------------------------------------

    在技术工作方向上,容易出现的三个误区:

    1.  技术leader是团队的产出核心,其他人辅助工作

    2. “我”是做技术的,产品、运营做的好不好,不关我事

    3. “他们”技术不行,培养太花时间,等他们做完,我早做完了

    下面我们来刨析这三个误区,看看这么做leader工作会带来什么问题。

     

     01.技术leader是团队的产出核心,其他人辅助工作

     

    作为研发团队的leader,首先要做好技术方向的工作,这是这个岗位的最基本职责;大部分研发团队的leader,都是因为技术工作做的比较好,而被提拔为leader,给予晋升空间和发展空间。但是技术leader的职责不仅仅是技术方向的工作,还要承接更多的岗位职责,大部分leader感到工作瓶颈,都是在非技术工作上面。

     

    在技术方向的工作职责之外,其他的职责,是初晋升研发leader所不了解、不擅长的,此时如果没有得到很好的帮助或自己思考想清楚,工作便会出现一个迷茫期,不仅影响自己的发展,也影响团队的整体产出。笔者也未幸免,曾经在非技术方面折腾过一段时间,深为苦恼,甚至怀疑自己是不是应该回去做技术专家,而不是去带技术团队。

     

    我从这个坑里爬出来,最直接、最重要的一个因素,是意识到了研发leader的岗位职责变化。研发Leader的岗位职责是要看团队整体的产出效率,而不是看个人的产出效率。作为曾经的研发好手,在技术问题攻关、代码编写质量、速度方面,是自己的长项,晋升leader也是因为这些方面的强项,被公司、上级所认可。这会给晋升的leader们一种错觉,技术能力和项目产出是自己的主要贡献。

     

    在这种“leader观”下,会不幸的形成以自己为技术中心、其他团队成员协助工作的模式;项目里最难、最重要的部分,由leader攻关、实施;leader成为团队最忙、负载最大的同学。这种情况在早期阶段,依然可以运转一段时间,但是随着时间的推移,因为leader其它工作职责的加入,把leader已经被技术工作占满的时间、精力,轻易的给“引爆”。

     

    团队成员遇到了工作的问题、招聘面试量的增加、和PM沟通讨论产品方案、和业务方开会讨论需求、开展晋升绩效的沟通、团队工作汇报的准备等等,会迅速的开始消耗leader的时间精力,使得leader主导的技术攻关、项目攻关,出现延期、失败,而团队其他人由于技术能力问题、分工安排问题,不能有效支持项目推进。此时,Leader不得不面对这个现状,为了摆脱这个“陷阱”,做出选择。

    1. 拒绝技术工作外的管理工作,来保障技术工作的完成;

    2. 投入时间做好管理工作,但技术工作陷入混乱;

    3. 对管理工作敷衍,依然把主要精力放在技术工作上,保障技术工作的完成。

     

      笔者当年走过由A到C,再到B的过程,所以在今天的工作里,对团队里的技术leader,非常能够理解他们遇到的工作上的问题。下面我说一下我自己的经历。

     

      刚开始,我对自己被提拔为技术leader非常兴奋。作为一个疯狂的技术爱好者,这种晋升,我认为是对技术能力和产出的一个认可,非常有成就感。我把这次晋升,当成了一个奖励,丝毫没有意识到随岗位的变化,我的职责也变了(当然也没有人真正严肃的对我说,我的职责变了,要求的能力模型变了)。也丝毫没有意识到,除了技术能力,其他方面我都没有达到一个leader的能力要求,处于“不知道自己不知道”的状态。于是更以加倍的热情,投入到开发工作里,绝大部分时间都是在做开发,少部分时间分下任务给团队其他人。

     

     由于是团队leader,HR开始安排更多的面试工作,自己部门的、其他部门的,在面试工作的时间上,基本增加了一倍以上;项目经理、客户(内部需求方和外部客户)开始找我沟通项目的安排、进度,会议的量开始增加…… 是的,各位leader今天遇到的问题,我也没意外的遇到了。我热爱技术工作,我是技术极客,干嘛让我把时间花到这些“虚”(不是写代码,都是虚的)的事情上呢?I reject!

     

      但是拒绝不了多久,就被我的老板谈话了。这些事我不参加、不做,对应的伙伴们,自然就要找我的老板投诉了。当然这也不难沟通,作为leader那些事是要做的,只是我不喜欢,那如果还要做leader的话,就得改变自己啊!价值观是杠杠的,调整自己认真对待技术以外应该承担的工作。但是我的精力客观上是有限的,白天用了40%-50%的时间在这些问题上,技术工作就只能继续用自己的夜晚时间来补充。熬夜到12点后,成为一个常态。【曾经有一回,在公司加班到1点,开车回家的路上,我睡着了…着了…了,以60KMPH的速度,撞在了前面一辆现代SUV上,还好相对速度不那么大,车损人未损。阿弥陀佛,如果不撞上这辆车,我撞上的,将是50米前方的两个水泥路障,当时在施工建设地铁,阿弥陀佛,救命之恩!】

     

      好吧,知道不能这么下去了,我在认认真真的想,我是不是该回去做程序员?我是不是根本就不适合做管理?在这种不坚定、不明确的状态下,对非技术类的工作,进入一种敷衍的状态,开会时经常两个耳朵听着,两只手在看着屏幕敲代码…… 不知道当时的同事们有多想骂我,在此对你们说声sorry!然而我一直没有下定决心往回撤。因为人都要上进,没干好的情况下往回撤退,我岂不是懦夫。隐隐的感觉到,我自己遇到了“瓶颈”,我需要突破自己。也就是说,进入了“知道自己不知道”的状态。

     

      转机出现在一次去广州出差的路上,在机场买了一本《领导阶梯》,完全是偶然的在机场买了一本。里面明确说明了一点,作为首次晋升的leader,根本的转变,是我从个人贡献者,转变为一个管理者。两者的差异,在于职责上,Leader要对团队的结果负责,而不是对Leader自己在其中的比例负责。进一步,我做了以下的思考。

     

      假如我们团队有6个人,我个人超强,一个人贡献团队40%的产出;其他人平均每人贡献12%的产出(合计算100%);假如我通过管理工作,让团队的外部环境井然有序、任务明确,并致力于指导、提高团队成员的能力,让每个人的产出,提升一倍,我自己的个人贡献因精力转移降低60%,降到16%;此时我们相对以前,整体的产出是 (16% + 24%*5)= 136%。这样,我做为leader的杠杆效用,就出现了:通过我的工作,团队的整体产出增加了。

     

      懂得这个逻辑无比的重要,能让自己下定决心转型,做好外部工作,做好内部指导、培养工作,通过自己的工作提高团队的整体产出,给团队每个人带来成长。对leader的考核,应该是团队的整体产出情况,而不是leader个人做了那些具体的事。

     

      因此,技术leader在技术工作上,应该把精力转移到那些体现leader价值、高杠杆率的事情上。包括:

    1.  和产品经理或项目经理沟通、明确项目需求,让团队的技术工作不乱

    2. 系统架构设计、核心算法设计、主要性能攻关

    3. 提高团队成员能力、引进合适人才

     

    02. “我”是做技术的,产品、运营做的好不好,不关我事

     

      这个观点虽然我们一看就知道不合价值观,但是在实际的工作里,却是一个挺常见的现象。作为技术leader,保障在技术上把产品、运营的需求,用代码给做出来,变成产品、服务。

     

      一般来说,我们都清楚产品经理对自己的产品目标负责、运营经理对自己的运营方案效果负责;那么作为研发的负责人,我们可以独身于事外、对产品和服务的实际结果,不加关注嘛?

     

      很抱歉的说一句,笔者也曾经有过这样的思维。我负责技术团队,确保技术团队的战斗力,把交给我们实施的需求,都给实现了,就起到了研发这个环节的责任、体现了研发的价值。直到有一次和高德的总裁董振宁先生请教,他对我说:从公司角度看,无论是做技术的、产品的还是做管理的,负责人们都是业务干部,业务做没做好,是考核干部合不合格的标准。

     

      一席话激起千重浪,深刻的击中我自己的认知盲点。对于干部,公司的期望是完成业务目标,拿到业务结果;我们不能在业务结果不好的情况下,说我们产品设计是没问题的、我们开发交付是没问题的,这不叫责权明确,对于干部来讲,这叫甩锅,而且锅只能是给老板来接。

     

    03.“他们”技术不行,培养太花时间,等他们做完,我早做完了

     

      我不知道有多少leader们,有没有心里想过、嘴里说过这句话。笔者心里想过,嘴里没有说过。作为因技术能力强、技术产出高而在team里被提拔起来的人,有实力说这句话。客观的实际工作里,也有这样的情况,我们要不要自己动手,取代团队成员应该完成的工作?

     

      我认为是不行的。

     

      首先,精力是不允许的。Leader还有很多其他方向的工作,在写代码这个非常耗时间精力的事情上投入,会严重影响其他工作的展开。一个团队,如果leader不能打理好内外环境,很快就会进入效率降低的阶段。取代他们的职责,是拆东墙补西墙,团队整体的产出依然下降。

     

      其次,对成员的发展不利。遇到困难不能克服,就让leader来做,那成员是很难成长起来的。我们的成长,70%来自于工作。遇到困难时,也是他们成长的最好机会。此时做为leader,应该是花时间帮助他,指导他。这也花时间,但是和直接自己取代来做不一样的,团队成员的能力会因此提高,给将来团队的整体实力、产出提高打下了伏笔。这样既推动了项目的完成进度,也提高了团队的成长。

     

      笔者曾经经历过这个阶段,当时公司成本控制,招聘的同学的技术能力在行业里偏低,水平一般。大部分的工作也是我在做。后来我改变了策略,不管如何,把任务分给他们,约定完成时间。到项目周期的1/3时,我会review下所有人工作的进展情况,分情况进行不同处理:

    1. 进展符合预期,不管他了,让他继续往前做。

    2. 进展高于预期50%以内,给予指导,在这个项目上,给他建议,提高效率。

    3. 进展低于预期50%以内,拿过来我做,追赶上项目工期。

     

      真正落到C选项的,实际很少,大部分在A和B里分流了。对于A种情况,对应的工程师会给予更多的项目和职责,快速成长起来;对于B种情况,对应的工程师能够有效得到帮助,能实实在在的提高自己的工作水平;对于C情况,如果不能带起来,就只能优化了。

     

      最后,如果用这样的思维思考,团队内的氛围会比较差。成员不能承接自己本应该承接的工作,得不到成长锻炼的机会,没有有效的产出,会很容易产生不安全感;人在不安全感的情况下,容易会去互相推脱责任,互相指责、力求自保,诉求最基础的“我没错”的安全需要。

     

      这种氛围下,团队就带散了,有能力的人会离职、转岗,没能力的人会力求不犯错,做为leader的老板,不得不出来解决这个团队的稳定性问题。还好,笔者没有这么干过:)

     

      综上所述,我给研发leader们三个建议:

    1. 在技术工作上,当退则退,保持30%的精力,在某个技术方向上做深,利用业余时间提高技术广度。保持技术深度和广度的同时,留出精力去做管理性的工作。充分挖掘团队资源,去完成团队任务。

    2. 作为技术leader,身在技术,心在业务,始终站在业务成功的角度思考问题。

    3. 为团队培养人才、引进人才,优化不合适的人才;是团队建设永远正确的真理。

     

    感谢各位阅读,欢迎留言,一起交流学习;并敬请期待下篇,一起来探讨规划方面的工作。

     

    本文以笔者工作经历为素材,进行思考、总结,肯定有不足、不对之处,欢迎各位读者斧正,请加我的微信(windows2000d)或关注公众号,共同学习、提高。

    展开全文
  • 本节书摘来异步社区《管好团队做对事——软件企业成长手册》一书中的第1章,作者: 【美】Louis Testa 译者: 郭稚晖 责编: 傅道坤, 更多章节内容可以访问云栖社区“异步社区”公众号查看。 第1部分 开发团队 管好...

    本节书摘来异步社区《管好团队做对事——软件企业成长手册》一书中的第1章,作者: 【美】Louis Testa 译者: 郭稚晖 责编: 傅道坤, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

    第1部分 开发团队

    管好团队做对事——软件企业成长手册
    开发经理们往往只关注公司的技术。虽然技术非常有趣,但优秀的经理人必须首先了解和他一起工作的同事。只着眼于技术而忽略人的作用,就如同在训练一个棒球队时将所有的时间花费在测试最新、最大的球上一样。

    本部分包含了启动新的工作,和开发组织一起工作,以及成功扩展你的团队。不要担心,我们也会谈论技术,后面会讲到的。

    展开全文
  • 软件内容: 软件里鼠标指针类型:四向箭头表示标签可以移动,手性表示可以双击截图和滚轮缩放。 背景底图就不留了,自己用ps弄个就行了 生成的图片会以课程和时间在桌面创建一个文件夹,然后把生成的图片保存到...
  • 笔者凭借自身的知识沉淀,尽最大努力为爱好技术的读者架设一坐能通向深层核心的桥梁,为大家揭开路由器的神秘面纱,剖开其核心...为使读者能清晰明白的理解掌握,笔者尽量将专业的技术内容转化为容易接受的知识讲解。

    宽带上网已经不是什么新鲜事情,人们对相关的网络器件已经不再陌生,比如说常见的路由器,见图1。对于一般的网络用户,他们能知道怎样使用路由器来上网、玩游戏等就已经感到很满足了,通常情况下对路由器的深层技术很少去过问研究,但做为兴趣广泛的技术爱好者,对这方面的知识是非常感兴趣的。    但限于各种条件的制约,这些爱好者都非开发者,很大程度上无法深入了解真正的技术实现过程以及相关的核心内幕。
        正是基于此点,笔者凭借自身的知识沉淀,尽最大努力为爱好技术的读者架设一坐能通向深层核心的桥梁,为大家揭开路由器的神秘面纱,剖开其核心内脏。为使读者能清晰明白的理解掌握,笔者尽量将专业的技术内容转化为容易接受的知识讲解,其中可能有不足偏颇之处,还请大家多见谅。
      概述
      什么是路由器?
    春秋中文社区http://bbs.cqzg.cn

    图1

      互联网是依靠路由器连接起来的,路由器是互联网或者说IP网络的核心设备。宽带接入的不断增长,带动了路由器的需求不断增加。
      路由器究竟是什么样的技术产物?
      谈到路由器的开发,我们就不免要谈到“嵌入式”设备的开发,没错,通俗的说,路由器就是一种嵌入式产品。那么究竟什么是嵌入式设备呢?春秋中文社区http://bbs.cqzg.cn
      其实就目前而言,嵌入式设备已经不断深入我们的日常生活方方面面。通俗的讲,嵌入式设备是指具有计算机功能,但又不称为计算机的设备或器材,它几乎包括了我们周围的所有电器设备:PDA、手机、机顶盒、汽车、微波炉、电梯、安全系统、自动售货机、医疗仪器、立体音响、自动取款机等。
    春秋中文社区http://bbs.cqzg.cn  用较为专业的话来表述的话,嵌入式设备就是使用微处理器或微控制器芯片(MCU)加上外围电路再加上内部的程序部分来实现特定功能的嵌入设备。比如8位的单片机、32的ARM以及DSP芯片等都属于嵌入式核心芯片的范畴。8位MCU市场已逐步趋向稳定,32位MPU代表着嵌入式技术的发展方向,正在加速发展。在32位嵌入式微处理器市场上,基于ARM内核的微处理器在市场上处于绝对的领导地位,因此追踪ARM技术的发展趋势显得尤为重要。
      路由器的开发通常都是基于32位处理器的,就通常的中低端路由器而言,在开发的配置上有多种选择,比如有ARM9核心芯片+Wince操作系统、ARM7核心芯片+uClinux操作系统、DSP芯片+Vxworks操作系统等等各种各样的选择。本文针对常用的SOHO路由器来介绍,选择ARM7核心芯片+uClinux操作系统开发模式,以完整形象的实例为大家清晰讲解路由器的技术实现过程。
      我们为什么以SOHO路由器为介绍对象呢?什么是SOHO路由器?前很多家庭中有不止一台电脑,需要上网获取信息、收发邮件等。这些小型公司和家庭网络用户计算机的数目一般不多,网络结构不复杂。功能和带宽的要求不高。出于提高网络性能、共享有限IP地址或节省上网费用等原因,这些用户迫切需要具有较高性价比的小型路由器。我们把这种小型路由器称为SOHO路由器。目前市场上已经充斥了大量的这类低端路由器.由于ARM7系列芯片价格便宜,非常适合嵌入式系统使用。目前市场上的SOHO路由器大多采用ARM7系列处理器。不过由于技术的发展,ARM9系列的专用路由芯片的路由器也逐渐普及。

     

    路由器宏观介绍

    嵌入式设备的开发三层模式

      我们可以形象的把嵌入式设备的开发简单的理解成三层模式,最底层的是微控制器芯片加外围器件组成的硬件系统,比如我们介绍的开发小型SOHO路由器所使用的ARM7TDMI芯片等硬件环境,它是设备功能实现的硬件基础,要实现上层的应用肯定离不开最底层硬件的支持。中间层是操作系统,比如我们所选择的uClinux操作系统,它是衔接硬件部分和应用程序的过渡层,它既可以完成对底层硬件的基本操作,又能为上层应用程序提供运行环境支持。最上层自然就是应用程序层了,它是实现针对性应用的程序代码部分,比如路由设置等功能程序部分。
      那对与SOHO路由器来说,它当然也脱离不了这样的技术框架,它的更为具体的实现过程简单的汇总的话,莫过于如下内容:
      首先先要知道SOHO实现的网络功能,典型路由器应该具备以下功能:

    •   支持PPPoE,固定IP上网;
    •   DHCP动态主机配置协议;
    •   网络地址转换(NAT)技术;
    •   根据TCP,UDP的端口号(port number),IP 的(协议号)protocol number,对IP地址进行简单过滤的防火墙;
    •   虚拟服务主机/端口映射(Port Forwarding)技术;
    •   支持一定数量的特殊应用程序;

      然后针对于上边的功能要求,相应地要通过硬件和软件的构造来实现:春秋中文社区http://bbs.cqzg.cn
      硬件方面:
      1、要明确家用小型路由器(一个WAN接口,四个LAN接口)的硬件原理。
      2、实现硬件电路板设计,完成电路布线设计,并对元件焊接,通过硬件板的调试。
      软件方面:
      1、在分析 uClinux内核源代码的基础上,对uClinux操作系统的内核裁剪。
      2、完成BoaWeb服务器的配置,并对CGI脚本进行设计,完成动态网页的功能。
      3、对PPPOE的拨号进行配置实现。春秋中文社区http://bbs.cqzg.cn
      4、针对Linux内核防火墙部分,运用IPtable工具进行防火墙规则操作。
      通过如上的基本构造,一个路由器就基本成型了。说起来简单,但其中包含了很多很多的技术细节,要有大量的实践经验才能真正实现。做为门外观奇的好学读者,现在肯定有些不耐烦了吧,想要了解更多的更详细的构造内容吧?那好,现在就可以开始我们真正的技术之旅了。

     

    路由器工作原理  1、基本原理
      要实 现 网 络中通信节点彼此之间的通信,首先必须给每个节点分配一个唯一的IP地址。路由器应该至少有两个网络端口,分别连接LAN或者WAN子网上,每个端口必须具有一个唯一的IP地址,并且要求与所连接IP子网的网络号相同。不同的端口有不同的网络号,对应不同的IP子网,这样各子网中的主机才能通过自己子网的IP地址把要求发出去的IP数据报送到路由器上。
      当路由器收到一份IP数据报后,首先要对该报文进行判断,然后根据判断的结果做进一步的处理。如果数据报是有效或正确的,路由器就根据数据报的目的IP地址转发该报文:否则就把报文丢弃。如果这个数据报的目的IP地址与路由器直接相连的一个子网上,路由器会通过相应的接口把报文转发到目的子网上去;否则会把它转发到下一跳(Hop)路由器。为了完成上述的操作,每台路由器必须维护一个路由表。把对应不同目的地的最佳路径存放在路由表中,这就是路由策略(Routing Policy)问题。路由表反映网络的拓扑结构,一般一条表项应该包含数据报的目的IP地址(通常是目的主机所在网络的地址)、下一跳路由器的地址和相应的网络接口等,在网络拓扑发生变化的时候,路由表也应该做相应的变动。所以路由器必须能够生成并更新路由表。
    春秋中文社区http://bbs.cqzg.cn  选路机制实际上就是如何查找路由表,通过查询路由表来决定向哪个方向转发数据。一般来说,路由器首先搜索匹配的主机地址:如果没有,再搜索匹配的网络地址:最后搜索默认路由。一旦查到匹配的表项,路由器就会把数据从相应的接口发送出去。
      路由器具备了上述各要素后,就可以完成数据转发任务了。另外,路由器不仅负责对IP包的转发,还要负责与别的路由器进行联络,共同确定互联网的路由选择和路由表的更新维护。
      2、SOHO路由器原理
    春秋中文社区http://bbs.cqzg.cn

    SOHO路由器

      当内部计算机要与外部Internet网络进行通信时,各内部间通过私有IP地址进行通信的计算机必须把私有IP地址转换成合法IP。这种网络地址转换技术称为NAT(Network Address Translation,网络地址转换)。在一个实际的私有网络中,NAT功能通常内建在路由器、防火墙或独立的NAT设备之上,网络中的主机将这些设备作为自己的默认网关。通过这样的配置,每一台内部主机发送往Internet的数据报就会送到具有NAT功能的设备中进行转换。NAT是SOHO路由器的必备功能,它是为解决IPv4地址不够分配的矛盾而产生的一个简单高效的解决方案。它能将任何两个地址域的地址进行转换,使私有网络中多台主机共享一个合法IP地址访问Internet。

     

    嵌入式路由器硬件系统介绍  1、硬件系统总体结构
      硬件结构是非常重要的部分,因为我们拆开一个路由器后首先看到的、所能看到的也就是硬件结构,我们就举例简单介绍一下硬件设计的各个部位的细节内容。

    交换式宽带路由器的硬件设计实例图

      为了宏观查看,我们给出交换式宽带路由器的硬件设计实例图一张。图中主要分为两部分:
      ARM4510B部分和交换芯片RTL8305部分,前者主要见上半图,后者为下半图。还有电源及各自的复位电路。
      ARM4510B部分中,中央处理芯片为带有网络接口的S3C4510B--16/32位RISC微控制器,根据嵌入式操作系统的运行需要,扩展了SDRAM存储器和Flash存储器。SDRAM存储器由两片4X1MX16位的HY57V641620HGT
      组成,作为嵌入式操作系统内核及应该程序运行的内存空间。Flash存储器由一片1MX16位的SS139VF160组成,作为内核映像的存储,并在嵌入式操作系统启动时加载系统内核及程序。根据调试程序及烧写Flash存储器的需要,引出JTAG接口。根据显示调试和运行信息的需要,提供了RS232接口。交换芯片 RTL8305部分中,提供4个LAN口(PORTO--PORT3)通过一四口的网络隔离变压器连接一个四口RJ45口,每个口可连接到10/10013aseT以太网,各端口之间有交换功能:还有一个WAN接口(CPO RT4)通过一单口的隔离变压器连接RJ45口。根据显示连接速度、状态和电源等需要,接出LED灯进行显示。根据交换芯片的管理需要,提供一串行EEPROM 24C01电路接口。根据交换芯片的主电源为2.5V.提供一个3.3V到2.5V的转换器。
    春秋中文社区http://bbs.cqzg.cn  中央处理芯片通过MR(独立媒体接口)接口与交换芯片RTL8035SB的PORT4的Mil接口相联,将交换芯片的PORT4配置为物理层接收器。
      当各部分电路设计完成后,形成硬件连接图,进而焊接之后,就可以作为开发用的实验硬件板了。下面就简要介绍一下个硬件电路部分。
      2、硬件系统的简要设计介绍
      ⑴ARM处理器系统设计介绍
      ①S304510B概述
      Samsung公司的S34510B是基于以太网应用系统的高 性价比的16/32位RISC微控制器,内含一个由ARM公司设计的16/32位的ARM7TDMI RISC处理器核。ARM7TDMI为低功耗,高性能的16/32位核。
      除了ARM7TDMI外,该芯片还有一些片内外围功能模块,主要为: 内部RAM (8Kbyte unified cache/SRAM),I2 C接口电路(I2C interface)、以太网控件器(Ethernetco ntroller),HDLC,GDMA、串口(UART),时钟(Timers)、可编程1/O口(Programmable I/O ports)及中断控件器(Interrupt controller)等。

    S3C4510B结构框图

      S3C4510B结构框图所示。在实际运行过程中最主要用到的部分为:以太网接口及串口部分,前者用于收发以太包,后者主要作为操作系统调试接口。
      ②ARM 处理器系统电源电路和复位电路
      主要是实现供电和复位功能,电路部分不做详细讲解,有深入研究需要的爱好者可以查看相关的电子相关参考资料进行深入学习。为使文章通俗易懂,以下各电路部分也是做一宏观介绍,细节部分包括电路布线等不再深入讲解。
      ③ARM处理器与Flash存储器接口电路春秋中文社区http://bbs.cqzg.cn
      读者只要知道这部分的电路连接是为实现能在Flash存储器编写程序即可。
      ④ARM处理器与SDRAM接口电路设计介绍
      与 Flash存储器相比,SDRAM不具有掉电保持数据的特性,但其存储速度大大高于Flash存储器,且具有读/写属性。因此SDRAM在系统中主要用于程序的运于空间、数据及堆栈。当系统启动时,CPU首先从复位地址0x0片读取启动代码,在完成系统的初始化后,程序代码调入SDRAM中运行,以提高系统的运行速度。春秋中文社区http://bbs.cqzg.cn
      SDRAM 具有单位空间存储量大和价格便宜的特点,广泛用于各种嵌入式系统中。SDRAM 的存储单元可以理解为一个电容,总是倾向于放电,为了避免数据丢失,必须定时刷新(充电)。因此,在系统中使用SDRAM,就要求微处理器有刷新的控制逻辑或者在系统中另外加刷新控制逻辑电路。S3C4510B在片内具有独立的SDRAM刷新控制逻辑,可以方便的与SDRAM接口。
      ⑤ARM处理器串行接口电路设计介绍
      几乎所有的微控件器、PC都提供串行接口,使用美国电子工业协会(EIA)推荐的RS-232-C接口标准,这是一个很常用的串行数据传输总线接口标准。早期被用于计算机和终端通过电话线和MODEM进行远距离的数据传输,随着微型计算机和微控制器的发展,不仅在远距离,近距离也采用了该通信方式。在近距离的通信中不采用电话线和MODEM,而是直接进行端到端的连接。
      RS-232-C标准采用的是9芯或是25芯的D型插头。
      ⑥ARM处理器JTAG接口电路设计介绍
      JTAG(JointTe stAc tionG roup,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及系统进行仿真、调试。JTAG是一种嵌入式调试技术,它在芯片内部封装了TAP(Test Access Port,测试访问接口),通过专用的JTAG测试工具对内部节点进行测试.标准的JTAG接口是四线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入、测试数据输出。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现以各个器件分别测试。JTAG接口还常用于ISP(In System Programmable)功能,如对Flash器件进行编程。
      ⑵以太网交换电路设计介绍
      以太网交换电路主要是采用五口交换芯片RTL8305SB来实现。RTL8305SB是一个集成了片内存储器,五个MAC层接口,五个物理层(PHY)接口的l0M/l00M自适应的五口交换芯片,该集成芯片具有低功耗,可灵活配置为五口小型办公及家用(SOHO)交换机,家用网关,xDSL路由器及其它智能应用。要实现必要的网络功能,这部分的电路是关键中的关键。

     

    操作系统介绍  1、Linux春秋中文社区http://bbs.cqzg.cn
      Linux是一个诞生于网络,成长于网络且成熟于网络的奇特的操作系统。1991年,芬兰大学生Linus Torvalds萌发开发了一个自由的UNIX操作系统的想法,并将Linux通过Internet进行发布。从此一大批编程人员加入到开发过程中来,Linux逐渐成长起来。Linux一开始要求所有的源代码必须公开,后来转向GPL( GNUG eneral Public Licence),成为GUN的阵营的主要一员。只要遵守GPL的规定,就可以免费获得复制,因此Linux是一个免费软件。同样,Linux下遵循GPL规定的C, C++, Java等一系列的工具开发包,从功能的角度上看并不亚于商用的开发包,但却可以极大的降低开发成本,这一优势是其它商用操作系统无法比拟的。
      Linux 操作系统最突出的是网络部分,基本上所有的网络协议和网络接口都可以在Linux上找到,Linux的内核比标准的UNIX处理网络协议更加高效,系统的网络吞吐性能更好,这也是Linux网络服务器市场上占据较大的市场分额的重要原因。对于一般的小型的SOHO路由器,Linux的网络技术无疑是其开发运行的最佳选择,Linux完全能对给其提供全方位的网络技术支持。Linux作为互联网的产物,许多关于Linux的文档可以在Internet上下载到。
      2、uClinux操作系统
      uclinux是嵌入式Linux的一个分支,在uClinux这个英文单词中u表示Micro,小的意思,C表示Control,控制的意思,所以uclinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。同标准的Linux相比,由于uClinux自身不支持MMU,多任务的实现就需要技巧了。但是,在uClinux上运行的绝大多数的用户程序并不需要多任务。另外,针对uclinux内核的二进制代码和源代码都是经过了重新编写,以紧缩和裁剪基本的代码。这就使得uClinux的内核同标准的Linux内核相比非常之小,但是它仍保持了Linux操作系统的主要的优点,如稳定性、强大的网络功能和出色的文件系统支持等。uclinux包含Linux常用的API、小于512K的内核和相关的工具。操作系统所有的代码加起来小于900KB。
      uClinux简介

    uClinux的基本架构

      在PC机上开发应用程序的用户都会有这样的感觉,PC机有完善的操作系统并提供应用程序接口(API),开发好的应用程序可以直接在操作系统上运行。虽然嵌入式系统的应用程序完全可以在裸板上运行,但为了使系统具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统(Embedded Operating System,以下简称EOS)。由于本文实例中的硬件平台是以不含MMU (Memory Management Unit,内存管理单)的S3C4510B为核心的,因此采用不带MMU的ARM 微处理器的嵌入式操作系统uclinux。uclinux 是一个完全符合GNUIGPL公约的操作系统,完全开放代码,现在由Line。公司支持维护。uClinux从Linux 2.0(2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作.适用于没有虚拟内存或内存管理单元(MMU )的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。uclinux是为了支持没有MMU的处理器而对标准Linux作出的修正。它保留了操作系统的所有特性,为硬件平台更好的运行各种程序提供了保证。在GNU通用公共许可证(GNU GPL)的保证下,运行uClinux操作系统的用户可以使用几乎所有的Linux API函数,不会因为没有MMU而受到影响。由于uClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux,虽然它的体积很小,uClinux仍然保留了Linux的大多数的优点:稳定、良好的裁剪性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。
      BootLoader:负责uCLinux内核的启动,它用于初始化系统资源,包括SDRAM。这部分代码用于建立uCLinux内核运行环境和从Flash中装载初始化内核镜象。
      内核初始化:uCLinux内核的入口点是start kernel() 函数。它初始化内核的其他部分,包括捕获,IRQ通道,调度,设备驱动,标定延迟循环,最重要的是能够fork "init"进程,以启动整个多任务环境。春秋中文社区http://bbs.cqzg.cn
      系统调用函数/捕获函数:在执行完“init”程序后,内核对程序流不再有直接的控制权,此后,它的作用仅仅是处理异步事件(例如硬件中断)和为系统调用提供进程。
      设备驱动 :设备驱动占据了uCLinux内核很大部分。同其他操作系统一样,设备驱动为它们所控制的硬件设备和操作系统提供接口。
      文件系统 :uCLinux最重要的特性之一就是对多种文件系统的支持。这种特性使得uCLinux很容易地同其他操作系统共存。文件系统的概念使得用户能够查看存储设备上的文件和路径而无须考虑实际物理设备的文件系统类型。ucLinux透明的支持许多不同的文件系统,将各种安装的文件和文件系统以一个完整的虚拟文件系统的形式呈现给用户。uClinux带有一个完整的TCP/IP协议,同时它还支持许多其他网络协议。uclinux对于嵌入式系统来说是一个网络完备的操作系统。
      3、uClinux开发环境
      ⑴GNU开发套件
      GNU软件包括C编译器GCC,C ++编译器G++,汇编器AS,链接器LD,二进制转换工具(OBJCOPY,OBJDUMP),调试工具(GDB.GD BSERVER,KGDB)和基于不同硬件平台的开发库。在GNU GCC支持下用户可以使用流行的C/C++语言开发应用程序,满足生成高效率运行代码、易掌握的编程语言的用户需求,这些工具都是按GPL版权声明发布,任何人可以从网上获取全部的源代码,无需任何费用。关于GNU和公共许可证协议的详细资料,读者可以参看GNU网站的介绍,http://www,gnu.oTgfhDmc.html。GNU开发套件作为通用的Linux开放套件,包括一系列的开发调试工具。GNU开发工具都是采用命令行的方式,用户掌握起来相对比较困难,不如基于Windows系统的开发工具好用,但是GNU工具的复杂性是由于它更贴近编译器和操作系统的底层,并提供了更大的灵活性。一旦学习和掌握了相关工具后,就了解了系统设计的基础知识。运行于Linux操作系统下的自由软件GNU gcc编译器,不仅可以编译Llnux操作系统下运行的应用程序,还可以编译Linux内核本身,甚至可以作交叉编译,编译运行于其它CPU上的程序。所以,在进行嵌入式系统应用程序开发时,这些工具得到了日益广泛的应用。
      ⑵uCIinux的打印终端
      通常情况下,uClinux的默认终端是串口,内核在启动时所有的信息都打印到串口终端(使用printk函数打印),同时也可以通过串口终端与系统交互。uClinux在启动时启动了telnetd(远程登录服务),操作者可以远程登录上系统,从而控制系统的运行。至于是否允许远程登录可以通过烧写romfs文件系统时由用户决定是否启动远程登录服务。
      ⑶交叉编译调试工具
      支持一种新的处理器,必须具备一些编译,汇编工具,使用这些工具可以形成可运行于这种处理器的二进制文件。对于内核使用的编译工具同应用程序使用的有所不同。

     

    路由器软件系统的设计过程



     

    内核编译核心部分  1、文件系统分析
      文件系统是uClinux操作系统的重要组成部分,uClinux文件系统是操作运行的基础。许多嵌入式系统在不存在磁盘的情况下也可以运行。文件系统可以随同内核一起被打包并在启动时作为一个文件系统的映像被加载。对一个简单的应用系统来说,这己足够了。文件系统可以存放在一个传统磁盘中,但也可以存放在非易失性的存储介质— 闪存中。闪存有一个引导块,它存放了CPU上电后运行的第一个软件,这个软件可以是uclinux的引导程序,也可以是自己编的bootloader。uClinux的内核可以被引导程序从闪存中拷贝到RAM中全速运行。闪存也可以作为文件的存储介质,必要时写入一些需要保存的数据。
      uClinux支持NFS(Network File System),它允许通过网络加载各种应用程序。由于用在每一个嵌入式系统上的软件可以从一个公用的服务器上加载,这在控制软件的修订或升级中是很重要的.在系统运行的过程中,导入和导出数据、配置、状态信息的备份也很重要。对用户监控而言,这是一个非常强大的功能。例如,一个嵌入式系统可能装配了一个RAM DISK,它包含着与系统当前状态的更新维持一致的(状态)文件。那么别的嵌入式系统仅需通过网络把这个RAM DISK作为远程磁盘mount过来便可以访问那些位于远端RAM DISK中的状态文件。这也允许在另一台机器上的WEB服务器借助简单的CGI脚本来访问那些状态信息。运行在其他机器上的应用程序包能够很容易地访问这些数据。uClinux操作系统根据不同的安装选择可以生成不同的文件系统。系统中提供了十分丰富的文件系统以供不同需要的用户选择。每种类型的文件系统的基本块大小、优化分配策略、一次传送的数据长度等等都是相互匹配的,使得本类文件系统均有相应的最佳性能。
      2、嵌入式Web服务器
      对uClinux操作系统下嵌入式Web技术的实现主要用于用户可以通过网
      页方式来管理路由器。
      ⑴uClinux下Web Server的实现
    春秋中文社区http://bbs.cqzg.cn  uClinux下,主要有三个WebServer:htpd,thttpd和Boa。Httpd是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI。Thttpd和Boa都支持认证、CGI等,功能都比较全。为了实现动态Web技术,这里我们选择实现一个支持CGI的、非常适合于嵌入式系统的Boa Web Server。Boa是一个单任务的http服务器,源代码开放、性能高。目前,uClinux的代码中已经包含boa的源代码,在uClinux下实现Boa,需要对Boa做一些配置和修改。这主要通过对boa.conf和mime.types文件进行修改来实现,需要改动的配置有以下几项:
      ①建目录
      由于uClinux默认的根文件系统romfs是只读的,不能用mkdir等命令来新建目录,故应在编译内核前先建好要用到的目录,这通过修改
      /uclinux-samsung/vendors/Samsung/4510b/makefile文件来实现。在ROWFS_DIRS=bin dev etc home lib mnt proc usr var的后边增加home/webhome/web/cgi-bin,这样修改后编译内核,编译好的根文件系统romfs中就包含这些目录了。
      ②指定Web 服务器的根目录路径(SERVER ROOT)
      进入 /uclinux-samsung/user/boa/src/目录,通过修改define.h文件中#define ERVER ROOT "/home”语句来指定SERVER ROOT。另外,还可以通过命令行来指定,例如:boa-c/home/&。而且命令行指定的SERVER ROOT可以覆盖define.h文件所指定的。春秋中文社区http://bbs.cqzg.cn
      ③修改boa.conf文件
      在. /uclinux-samsung/user/boa/src/boa.conf里修改:
      *将 user obody和Group ogroup改为User0 和Group0 ;
      *将 DocumentRoot/var/www改为DocumentRoot/home/web,这样web服务器的文档根目录为/home/web;
      *将 MimeTypes/eWmime.types改为MimeTypes/home/web/mime.types;
      定义默认首页和CGI程序所在目录,即
      DirectoyIndex index.html
      ScriptAlias/cgi-bin//home/web/cgi-bin/
      这样指定后,.index.htm为远程浏览客户访问WebServer所看到的首页默认值,用C编写的CGI程序编译成二进制文件,放到/cgi-bin/目录下,CGI程序能被正确地执行。
      Boa.conf文件和mime.types文件必须放到Web服务器根目录下,所以把修改后的bao.conf和mime.types拷贝到“./uclinux-samsung/romfs/home/”目录下。然后在/uclinux- samsung/Vendors/Samsung/4510b/initab里修改,在:inet:unknown:/bin/inetd后加入: boa:unknown:/bin/boac/homeo
      配置过程后,重新编译内核,编译时选中Boa选项。把编译好的内核下载到硬件板,启动uclinux,完成IP配置,启动Boa Web Server,然后就可以通过lE访问你的网页了。如果想启动uclinux时自动启动Boa Web Server,可以修改re文件,进入uclinux-samsung/vendors/Samsung/4510B目录,在运行脚本rc中增加两行:
      ifconfig eth0 192.168.0.101 up
      boa-c/home/&春秋中文社区http://bbs.cqzg.cn
      修改后重新编译内核,再下载到硬件板运行.运行uclinux后,不需要配置就可以直接通过IE来访问http://192.168.0.101,看到你的网页了。
      ⑵uclinux下实现动态Web页面的CGI技术
      到目前为止,实现动态Web页面有4种技术可供选择:CGI(Common Gateway Interface), ASP(ActiveXServerPage),PHP(PersonalHomePage)和JSP(JavaServerPage).在uclinux下如果要实现动态网页,只能采用CGI,因此目前uclinux还不支持ASP, PHP等动态Web页面技术。CGI(通用网关接口)提供Web服务器一个执行外部程序的通道,这种服务端技术使得浏览器和服务器之间具有交互性。CGI程序属于一个外部程序,需要编译成可执行文件,以便在服务端运行。浏览器将用户输入的数据送到Web服务器,Web服务器将数据使用STDIN送给CGI程序,在执行CGI程序后,可能会访问存储数据的一些文档,最后使用STDOUT输出HTML形式的结构文件,经Web服务器送回浏览器显示给用户。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl,Fortran, Pascal, C语言等。但目前uclinux不支持Pert, Fortran等语言,而且C语言在平台无关性上表示不错,所以我们选择用C来编写CGI程序。另外,uClinux也不支持数据库,所以需要保存的数据只能保存到文件中,CGI查询数据时也是查询这些文件,而不是访问数据库。
      ⑶uClinux下动态Web页面的实现
      下面通过一个例子来说明如何实现uClinux下的动态Web页面技术。此例子的目的是使用户能够通过Web页面内嵌表单提交数据,并能把用户提交的数据通过Web浏览器正确地返回给用户。实现动态Web页面的第一步是用HTML语言编写Web页及内建表单。编写Web页面时,要由ACTION属性来指定相关的CGI程序,如ACTION=cgi-bin/demo;由MOTHOD属性来指明所用的提交数据的方法,即MOTHOD=POST(GET)。
      实现动态 Web页面的第二步是用C编写CGI程序,CGI程序分为以下几部分:①根据POST方法或GET方法从提交的表单中接收数据;②URL编码的解码;③用printf() 函数来产生HTML源代码,并将经过解码后的数据正确地返回给浏览器。包括demo.c, cgivars.h和cgivars.c三个文件。将编写好的CGI程序编译成二进制文件放在cgi-bin/目录下,CGI程序能被正确地执行,最终CGI程序就可以对上述表单数据的进行处理了。
      下面对程序稍加说明。若以GET方法提交数据,表单中的数据被保存在QUERY_STRING环境变量中,通过调用函数getenv("QUERY_STRING")来读取数据;若以POST方法提交数据,则程序先从CONTENT LENGTH环境量得到数据的字长,然后从标准输入中读取相应长度的字符串即可得到提交的数据。数组postinput 中保存的就是从表单中提取的数据。
      
    URL编码的解码过程较为复杂,URL编码的规则下:①变量之间用“&”分开;② 变量与其对应值之间用“=”连接;③空格符用“+”代替;④特殊意义的字符用%接相应的十六进制ASCI码代替。解码即为编码的逆过程。在程序中,对于从表单中提取过来的postinput中的数据,当发现字符为“+”时,将它转换成空格;当发现字符为“&”时,意味着个名字2值对的结束,在此处将字符中切成几个字符串;当再现字符为“=”时,意味着一个名字/值对的名字部分的结束,在此再将名字/值对分开。最后通过调用unescape_url(char *url)子函数将十六进制ASCII码值表示的特殊字符转换成相应的ASCII字符。
      3、PPPOE拨号实现
      PPPOE主要针对ADSL宽带接入方式,实现用户的的认证上网方式就是采用这种方式接入。
      ⑴PPPOE简介春秋中文社区http://bbs.cqzg.cn
      1998年后期问世的以太网上点对点协议(PPP over Ethernet)技术是由Redback网络公司、客户端软件开发商RouterWare公司以及Worldcom子公司UUNET Technologies公司在IETF RFC制的基础上联合开发的。通过把最经济的局域网技术以太网和点对点协议的可扩展性及管理控制功能结合在一起,网络服务提供商和电信运营商便可利用可靠和熟悉的技术来加速部署高速互联网业务。它使服务提供商在通过数字用户线、电缆调制解调器或无线连接等方式,提供支持多用户的宽带接入服务时更加简便易行.同时该技术亦简化了最终用户在动态地选择这些服务时的操作.
    春秋中文社区http://bbs.cqzg.cn  ⑵PPPOE实现
      实现步骤 :
      pppoe的实现有两种方式,一种是作为一个用户态的应用程序运行,就是rp-pppoe这个程序;另一种是选择在kernel ppp里支持pppoe功能,这同时也需要pppd支持pppoe。
      具体的细节实现步骤本文不做详述,有兴趣的读者可以查阅相关的Linux资料进行更深一步的学习研究。
      4、基于IPTable过滤式防火墙
      网络防火墙用来保护一个网络不受来自另一个网络的攻击,是网络安全环节中进行的一个防御步骤。在路由器中配置IPTable过滤式防火墙,可以对IP数据封包进行规则检查和过滤,保证内网安全。
      ⑴防火墙概述
    春秋中文社区http://bbs.cqzg.cn  防火墙是一套能够在两个或两个以上的网络之间,明显区隔出实体线路联机的软硬件设备组合。被区隔开来的网络,可以透过封包转送技术来相互通讯,透过防火墙的安全管理机制,可以决定哪些数据可以流通,哪些资料无法流通,藉此达到网络安全保护的目的。
      防火墙产品可以概略归类为硬件式防火墙和软件式防火墙,但实际上无论是硬件式或软件式防火墙,它们都需要使用硬件来作为联机介接,也需要使用软件来设定安全政策,严格说两者间的差别并不太大。我们只能从使用的硬件与操作系统来加以区分,硬件式防火墙是使用专有的硬件,而软件式防火墙则使用一般的计算机硬件,硬件式防火墙使用专有的操作系统,而软件式防火墙则使用一般的操作系统。
      防火墙依照其运作方式来分类,可以区分为封包过滤式防火墙(Packet Filter)、应用层网关式防火墙(Application-Level Gateway,也有人把它称为Proxy防火墙)、电路层网关式防火墙(Circuit-Level Gateway).其中被广为采用的是封包过滤式防火墙,本文要介绍的iptables防火墙就是属于这一种。
      封包过滤是最早被实作出来的防火墙技术,它是在TCP/IP四层架构下的IP层中运作.封包过滤器的功能主要是检查通过的每一个IP数据封包,如果其标头中所含的数据内容符合过滤条件的设定就进行进一步的处理,主要的处理方式包含:放行(accept)、丢弃(drop)或拒绝(reject)。要进行封包过滤,防火墙必须要能分析通过封包的来源IP与目的地IP,,还必须能检查封包类型、来源端口号与目的端口号、封包流向、封包进入防火墙的网卡接口、TCP的联机状态等数据。
      ⑵IPtable的原理及实现
      IPTables是Linux操作系统中的一个管理内核包过滤的工具,它可以添加、插入或删除核心包过滤表(1)中的规则,以实现防火墙功能。
      一个iptables命令基本上包含如下五部分:希望工作在哪个表上、希望使用该表的哪个链、进行的操作(M入,添加,删除,修改)、对特定规则的目标动作、匹配数据报条件。
      基本的语法为:
      iptables -t table -Operation chain -target match(es)
      例如,希望添加一个规则,允许所有从任何地方到本地smtp端口的连接:
      iptables -t filter -A INPUT -ACCEPT -p tcp --dport smtp
      当然 ,还有其他的对规则进行操作的命令如:清空链表,设置链缺省策略,添加一个用户自定义的链...
      经过一系列深入的配置后,基本的路由功能器就这样诞生了,当然实际中路由器还有相当多的应用功能,这些都是通过软件开发来逐步深层次实现的,如果你想成为一个嵌入式工程师的话,那这篇文章就算是一个引路人吧,要达到更高的境界,还需要自己刻苦学习研究,一步一步在魔幻般的技术殿堂中自由遨游。

     

    转载春秋中文社区

    http://bbs.cqzg.cn/thread-554789-1-1.html

    展开全文
  • 思科成长型企业网络解决方案手册内容详尽,图文并貌。
  • 前言 在做android项目开发时,大家都知道如果程序出错了,会弹出来一...将内容整理成了五个章节、计算机基础面试题、数据结构和算法面试题、Java面试题、Android面试题、其他扩展面试题、非技术面试题总共五个章节354页

    前言

    在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹 出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连 我们自己本身可能都接受不了。虽然我们在发布程序时总会经过仔细的测试,但是 难免会碰到预料不到的错误。

    收集反馈的面经资料比较乱,最近终于空出时间,我们进行了分类,循序渐进,由基础到深入,由易到简。

    将内容整理成了五个章节、计算机基础面试题、数据结构和算法面试题、Java面试题、Android面试题、其他扩展面试题、非技术面试题总共五个章节354页。

    阿里Android面试题集(含答案解析):

    第一章计算机基础面试题

    • 第一节、网络面试题

    • 第二节、操作系统面试题

    • 第三节、数据库面试题

    第二章 数据结构和算法面试题

    • 数据结构与算法

    第三章Java面试题

    • 第一节Java基础面试题

    • 第二节 Java并发面试题

    • 第三节Java虚拟机面试题

    第四章 Android面试题

    • 第一节 Android基础面试题
    • 第二节Android高级面试题

    第五章 其他扩展面试题

    • Kotlin

    • 大前端

    • 脚本语言

    第六章 非技术面试题

    • 高频题集

    • 次高频题集

    每个问题我们都尽量附上1个标准参考答案,都是我们反复摸索消化(真心花了很多时间),觉得写的比较好的文章作为答案。这样就可以节省大家自己去搜索的时间,把时间用在正确的东西上。

    其实我们也可以直接以简易的、群友分享的答案写出来,但是这并帮助不了同学们去深刻理解,三思之下还是采用标准答案作为参考。不明白或者想通俗了解的,可以加入我们技术群一起交流讨论。下面是我们每章知识点的概述:

    第一章 计算机基础面试题

    阿里面试也会考察计算机基础,主要考察我们是否系统的学习了操作系统和计算机组成原理,因为只有我们看完操作系统后才能系统的认识计算机的原理。

    第二章 数据结构和算法面试题

    对于算法面试准备,无疑就是刷《剑指Offer》+ LeetCode 效果最佳。刷《剑指Offer》是为了建立全面的算法面试思维,打下坚实的基础,刷LeetCode则是为了不断强化与开阔我们自己的算法思想。这两块 CS-Notes 中已经实现地很完美了,建议大家将《剑指Offer》刷完,然后再至少刷100道LeetCode题目以上。

    第三章 Java面试题
    Java 是 Android App 开发默认的语言, Android Framework 也是默认使用 Java 语言,熟练掌握 Java 语言是 Android 开发者的必备技能。当然也是我们字节跳动青睐的考题选择方向!

    第四章 Android面试题
    Android面试分为基础面试题+高级面试题两个部分。其中高级面试题部分的性能优化、Framework、三方源码属于我们考察的重点、难点方向!

    第五章、第六章 其他扩展面试题+非技术面试题
    面试重点;项目中web的交互

    最后

    希望本文对你有所启发,有任何面试上的建议也欢迎留言分享给大家。

    好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以加一下下面的技术群来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

    这里放一下资料获取方式:GitHub

    好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

    ~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

    [外链图片转存中…(img-YzANMOqG-1614429652905)]

    为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

    展开全文
  • MFC,微软基础类(Microsoft Foundation Classes),实际上是...是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的..
  • 随着我们作为组织的成长,所有内容都在不断发展和变化。 我们希望在这里记录现状,但有时情况可能会发生变化。 这项工作是根据。 在阅读有关许可证的更多信息 主要分为四个部分: 维基 CorrelAid在内部如何运作?...
  • 所以持续学习的脚步自然是不能停下,那么小编这里就来分享一份阿里内部Java开发成长手册(2021版)内容涵盖p5-p8技术栈,非常全满。 内容总览: 因为要控制文章篇幅,所以都是以截图方式展示内容。关于完整版...
  • 《阿里巴巴 Java 开发手册》主要提炼了阿里巴巴集团技术团队的集体编程经验和软件设计智慧,可全面、立体地帮助开发者的成长和团队代码文化形成。嵩山版首次新增前后端规约等内容,可帮助开发者码出规范,码出质量。
  • 本资料为王健老师Patroni系列课程第1讲:安装部署的讲义资料第三部分Patroni使用维护手册 点击观看视频课程 课程介绍:主讲人:王健,社区昵称canno目前在神州飞象做pg相关的运维工作,热爱pg,正在学习pg内核的相关...
  • 作者:小傅哥 ...很多人面试不理想多半也是来自于自我学习能力的不足和工作内容的单一以及业务体量小导致。所以我想从全局培养人才的角度出发,也算是技术成长的经历中提取学习框架,帮助小伙伴们提升
  • 在面经手册的前两篇介绍了《面试官都问我啥》和《认知自己的技术栈盲区》,这两篇内容主要为了说明面试过程的考查范围,包括个人的自我介绍、技术栈积累、项目经验等,以及在技术栈盲区篇章中介绍了一个整套技术栈在...
  • 所以持续学习的脚步自然是不能停下,那么这里就来分享一份阿里P9手写的内部Java核心开发成长手册(2021版)内容涵盖p5-p8技术栈,非常全面。 JVM 内容太多就不一一展示了,关于完整版Java核心开发成长手册,...
  • 《阿里巴巴 Java 开发手册》主要提炼了阿里巴巴集团技术团队的集体编程经验和软件设计智慧,可全面、立体地帮助开发者的成长和团队代码文化形成。嵩山版首次新增前后端规约等内容,可帮助开发者码出规范,码出质量。
  • 本书是《图表细说电子技师速成手册》一书的超值版,通过精细的版面设计,以最节省版面的方式再现了原书的内容。本书全面讲解电子技师所必备的知识和技能,内容包括电子技术基础知识、万用表的使用方法、通用电子元...
  • 如果您对本手册内容有任何意见或建议,请告诉 Leary 博士 ()。 实验室成员的期望和责任 每个人 大图 做你引以为豪的工作。 不要急于工作。 如果您需要帮助或需要帮助,请仔细检查您的工作,并让其他人查看您的代码...
  • Micro公司手册,产品路线图,团队和贡献指南。 概述 微型是在云及其他环境中构建,共享和协作服务的最快方法。 我们的目标是以团队和社区的形式,以开放和协作的方式继续执行这一使命。 到目前为止,我们的大多数...
  • 所以持续学习的脚步自然是不能停下,那么这里就来分享一份阿里P9手写的内部Java核心开发成长手册(2021版)内容涵盖p5-p8技术栈,非常全面。 JVM 内容太多就不一一展示了,关于完整版Java核心开发...
  • 导读最近重温了阿里的《码出高效Java开发手册》,感觉最后一页“聊聊成长”这一小块的内容写的很棒,特意把它复制出来,送给每一个技术人,愿你做一个有技术情怀的人。正文成长并没有直线式的捷径...
  • 前段时间有集成商给我看过了思科成长型企业解决方案手册以及相关设备及产品的咨询。总体来说该解决方案能够为企业带来:1、确保持续的高生产率2、保持竞争优势3、高投资回报和低总拥有成本4、通过有效管理更好地进行...
  • 点击上方 "程序员小乐"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!关注订阅号「程序员小乐」,收看更多精彩内容每日英文Be good to yourself...
  • 最近,忙里偷闲,看了一篇名为《不止代码,职业发展黄金手册》的文章。看完之后,有了一些新的启发,并记录了一些个人认为比较有参考意义的结论和观念。 今天在此做一个记录,勉励自己努力前进。也做一个分享,希望...
  • 这份手册分为分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5 大块内容。基础和应用篇讲解对读者来说有价值的内容,可以直接应用到实际工作中;原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界...
  • 《阿里巴巴 Java 开发手册》主要提炼了阿里巴巴集团技术团队的集体编程经验和软件设计智慧,可全面、立体地帮助开发者的成长和团队代码文化形成。嵩山版首次新增前后端规约等内容,可帮助开发者码出规范,码出质.
  • 内容丰富、实用便查。 ■这是一部机械设计史上的功勋图书,历时五十载,对我国机械工业发展的贡献手册本身。 ■这是一部引起轰动的工具书,1969年的初版是新中国首部大型机械设计工具书。目前修订至第四版,受到无数...
  • 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 我膨胀了???? ,在看了大部分以面试讲解的 Java 文章后,发现很多内容的讲解都偏向于翻译、抄书、说理论的给答案式讲解,最终把知识弄的云里雾里。 就...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 138
精华内容 55
关键字:

成长手册内容