精华内容
下载资源
问答
  • 网络技术文档
    千次阅读
    2019-09-12 22:57:52

    本文是对专栏文章架构设计文档模板的学习记录,可以购买以支持原作者

    首先是备选方案模板

    需求介绍

    主要介绍需求的背景,目标与范围

    随着xxx业务不断发展,业务拆分的子系统越来越多(阐述现有系统的问题),由此带来几个明显的系统问题

    eg:
    性能问题:
    耦合问题:
    效率问题:

    基于以上背景,我们需要引入xxx,将目前的xxx功能改为xxx

    需求分析

    需要全方位描述相关的信息

    5W

    • Who
      需求的利益关系人:包括开发者,产品使用者,决策者等

    eg: 消息队列系统主要是业务的子系统来使用,子系统发送消息或者接收消息

    • When
      需求使用时间,包括时间,里程碑等

    eg:当子系统需要发送异步通知的时候,需要使用消息队列系统

    • What
      需求的产出,包括系统,数据,文件,开发库,平台等
      eg: 需要开发消息队列系统

    • Where
      需求的应用场景
      eg: 开发,测试与生产环境的部署

    • Why
      需求需要解决的问题,通常与需求背景有关
      eg:消息队列系统要把子系统解耦,把同步调用改为异步

    1H

    这部分主要是关键业务流程,复杂的业务系统可以独立成用例文档.

    8C

    8个Constraints

    性能: 需要达到xxx的水平

    成本: 参考 xx 公司的设计方案,不超过 x台服务器

    时间: 期望x个月内上线版本x,并且在两个业务中尝试使用.

    可靠性: 按照业务需求,可靠性要求达到xxx.xx%

    安全性: 网络安全,加密等问题

    合规性: 需要按照公司目前的DevOps规范进行开发

    技术性: 目前团队主要研发人员是xxx,最好用xxx开发

    兼容性:之前没有类似系统,无需考虑兼容性

    复杂度分析

    常见的可以从高可用,高性能,可扩展这几个角度来说

    而且实际操作中每个约束与限制都要有详细的逻辑推导,尽量给出数值的推导

    备选方案

    每个备选方案都需要描述关键的实现,不需要描述具体的实现细节.

    • 方案1…
      方案描述

    etc

    备选方案评估

    会根据评估会议的结果进行修改,也就是说架构师先给出自己的备选方案评估,然后举行备选方案评估会议,再根据会议结论修改备选方案文档

    然后接下来介绍架构设计模板

    架构设计模板

    评估完备选方案之后,架构设计文档用来详细描述细化方案的.

    总体方案

    核心内容就是架构图,以及针对架构图的描述,包括各个模块与子系统的职责描述,核心流程

    架构纵览

    架构总览给出架构图以及架构的描述

    核心流程

    • 流程1
    • 流程2

    详细设计

    这里需要具体描述具体的实现细节

    例如高可用设计,高性能设计,可扩赞设计,安全设计其他设计等

    当然最后还要说明部署方案,即主要的硬件要求,服务器部署方式,组网方式等等

    架构演进规划

    如果项目周期很长的话,可以考虑分阶段实施,如第一期做什么,第二期做什么等等

    更多相关内容
  • 网络技术文档

    2013-04-03 20:41:45
    思科路由交换技术网络七层协议介绍等等网络基础
  • 网络技术方面的文档

    2012-11-15 18:29:36
    网络技术方面的文档
  • 网络工程技术文档编写规范
  • 爬虫讲义,不是技术文档,是给客户讲的
  • 计算机网络实验报告IP网络技术基础文档下载
  • 分类算法技术文档

    2017-01-07 23:10:15
    介绍常用的机器学习算法,贝叶斯分类器,决策树,神经网络
  • 本文档为某个知名网站技术大牛整理的网络开发类的技术文档,文档中 详细列举网络类、开发类中经常用到的技术点。看完该文档绝对可以让您受益匪浅,欢迎大家下载学习。
  • drds最佳技术文档实践文档,drds最佳技术文档实践文档
  • 本文的记录与总结依照于FISCO BCOS 技术文档学习联盟链搭建的相关知识,详细搭建过程见文档,本文仅作参考 本文通过在单机上部署一条4节点的FISCO BCOS联盟链,掌握FISCO BCOS部署流程。 搭建 需要使用已经封装...

    前言

    • 本文的记录与总结依照于FISCO BCOS 技术文档学习联盟链搭建的相关知识,详细搭建过程见文档,本文仅作参考

    • 本文通过在单机上部署一条4节点的FISCO BCOS联盟链,掌握FISCO BCOS部署流程。

    搭建

    需要使用已经封装好的脚本程序build_chain.sh,由于该脚本依赖于openssl, curl

    需要先安装相关依赖openssl, curl

    下载脚本(可以新建一个文件夹管理)

    curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.8.0/build_chain.sh && chmod u+x build_chain.sh
    

    启动脚本,生成一条单群组4节点的FISCO链,注意确保机器端口占用情况

    bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
    

    其中-p选项指定起始端口,分别是p2p_port,channel_port,jsonrpc_port

    命令执行成功会输出All completed

    启动

    启动所有节点

    bash nodes/127.0.0.1/start_all.sh
    

    启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的30300~30303,20200~20203,8545~8548端口是否被占用。

    try to start node0
    try to start node1
    try to start node2
    try to start node3
     node1 start successfully
     node2 start successfully
     node0 start successfully
     node3 start successfully
    

    检测

    检查进程是否启动

    ps -ef | grep -v grep | grep fisco-bcos
    

    正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般是端口被占用导致的)

    fisco       5453     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
    fisco       5459     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
    fisco       5464     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
    fisco       5476     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini
    

    如下,查看节点node0链接的节点数

    tail -f nodes/127.0.0.1/node0/log/log*  | grep connected
    

    正常情况会不停地输出连接信息,从输出可以看出node0与另外3个节点有连接。

    info|2019-01-21 17:30:58.316769| [P2P][Service] heartBeat,connected count=3
    info|2019-01-21 17:31:08.316922| [P2P][Service] heartBeat,connected count=3
    info|2019-01-21 17:31:18.317105| [P2P][Service] heartBeat,connected count=3
    

    执行下面指令,检查是否在共识

    tail -f nodes/127.0.0.1/node0/log/log*  | grep +++
    

    正常情况会不停输出++++Generating seal,表示共识正常。

    配置及使用控制台

    在控制台链接FISCO BCOS节点,实现查询区块链状态、部署调用合约等功能,能够快速获取到所需要的信息。

    本质上控制台也是使用命令调用的sdk

    • 需要依赖
      • Java
    • 下载控制台脚本
    cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.8.0/download_console.sh && bash download_console.sh
    
    • 拷贝控制台配置文件并配置控制台证书
    cp -n console/conf/config-example.toml console/conf/config.toml
    
    cp -r nodes/127.0.0.1/sdk/* console/conf/
    
    • 使用控制台
    cd ~/fisco/console && bash start.sh
    
    # 获取客户端版本
    [group:1]> getNodeVersion
    ClientVersion{
        version='2.6.0',
        supportedVersion='2.6.0',
        chainId='1',
        buildTime='20200819 15:47:59',
        buildType='Darwin/appleclang/RelWithDebInfo',
        gitBranch='HEAD',
        gitCommitHash='e4a5ef2ef64d1943fccc4ebc61467a91779fb1c0'
    }
    # 获取节点信息
    [group:1]> getPeers
    [
        PeerInfo{
            nodeID='c1bd77e188cd0783256ee06838020f24a697f9af785438403d3620967a4a3612e3abc4bbe986d1e9dddf62d4236bff0b7d19a935a3cd44889f681409d5bf8692',
            ipAndPort='127.0.0.1:30302',
            agency='agency',
            topic=[
    
            ],
            node='node2'
        },
        PeerInfo{
            nodeID='7f27f5d67f104eacf689790f09313e4343e7887a1a7b79c31cd151be33c7c8dd57c895a66086c3c8e0b54d2fa493407e0d9646b2bd9fc29a94fd3663a5332e6a',
            ipAndPort='127.0.0.1:57266',
            agency='agency',
            topic=[
                _block_notify_1
            ],
            node='node1'
        },
        PeerInfo{
            nodeID='862f26d9681ed4c12681bf81a50d0b8c66dd5b6ee7b0b42a4af12bb37b1ad2442f7dcfe8dac4e737ce9fa46aa94d904e8c474659eabf575d6715995553245be5',
            ipAndPort='127.0.0.1:30303',
            agency='agency',
            topic=[
    
            ],
            node='node3'
        }
    ]
    

    总结

    本过程本质上包含两个部分,搭建一个联盟链和使用联盟链的控制台。核心自然是下载了其GitHub上的两个脚本(fisco搭建脚本与fisco控制台脚本)实现区块链搭建,当然在脚本的bash前需要安装脚本依赖环境,控制台在bash前还需要进行一定的配置

    补充:部署及调用简单合约

    简单合约编写

    pragma solidity ^0.4.24;
    
    contract HelloWorld {
        string name;
    
        function HelloWorld() {
            name = "Hello, World!";
        }
    
        function get()constant returns(string) {
            return name;
        }
    
        function set(string n) {
            name = n;
        }
    }
    

    HelloWorld合约提供两个接口,分别是get()set(),用于获取/设置合约变量name

    部署

    为了方便用户快速体验,HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol,参考下面命令部署即可。

    # 在控制台输入以下指令 部署成功则返回合约地址
    [group:1]> deploy HelloWorld
    transaction hash: 0xd0305411e36d2ca9c1a4df93e761c820f0a464367b8feb9e3fa40b0f68eb23fa
    contract address:0xb3c223fc0bf6646959f254ac4e4a7e355b50a344
    

    调用

    # 查看当前块高
    [group:1]> getBlockNumber
    1
    
    # 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址
    [group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
    ---------------------------------------------------------------------------------------------
    Return code: 0
    description: transaction executed successfully
    Return message: Success
    ---------------------------------------------------------------------------------------------
    Return values:
    [
        "Hello,World!"
    ]
    ---------------------------------------------------------------------------------------------
    
    # 查看当前块高,块高不变,因为get接口不更改账本状态
    [group:1]> getBlockNumber
    1
    
    # 调用set设置name
    [group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
    transaction hash: 0x7e742c44091e0d6e4e1df666d957d123116622ab90b718699ce50f54ed791f6e
    ---------------------------------------------------------------------------------------------
    transaction status: 0x0
    description: transaction executed successfully
    ---------------------------------------------------------------------------------------------
    Output
    Receipt message: Success
    Return message: Success
    ---------------------------------------------------------------------------------------------
    Event logs
    Event: {}
    
    # 再次查看当前块高,块高增加表示已出块,账本状态已更改
    [group:1]> getBlockNumber
    2
    
    # 调用get接口获取name变量,检查设置是否生效
    [group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
    ---------------------------------------------------------------------------------------------
    Return code: 0
    description: transaction executed successfully
    Return message: Success
    ---------------------------------------------------------------------------------------------
    Return values:
    [
        "Hello,FISCO BCOS"
    ]
    ---------------------------------------------------------------------------------------------
    
    # 退出控制台
    [group:1]> quit
    
    展开全文
  • 参加工作时间久一点的工程师应该有这样一个体会:自己平时代码写得再多再好,可一旦要用文档去描述或者表达某一个事情或者问题时,都感觉非常困难,无从下手,不知道自己该写什么不该写什么;或者费了九牛二虎之力写...

    怎么才能写好技术文档——这是我的全部经验

    参加工作时间久一点的工程师应该有这样一个体会:自己平时代码写得再多再好,可一旦要用文档去描述或者表达某一个事情或者问题时,都感觉非常困难,无从下手,不知道自己该写什么不该写什么;或者费了九牛二虎之力写出来的东西没法满足要求,需要再三去修改调整。这其中的主要原因我归纳有两点:

    1. 思维方式固化。大部分人平时代码写得太多,文字类型的表述又写得太少。而代码和文字明显是两种不同的思维方式,在代码里陷得太深,不容易跳出来;
    2. 本身文字表达能力有限。这个跟写代码一样,有人代码质量高、bug少;有人水平低、bug自然就多。

    以上两点其实都可以通过平时多练、多写、多梳理的方式去弥补,比如周期性的博客总结和记录。但是,如果你能刻意系统性地去补充一些关于“技术型写作”的理论知识,一定能够事半功倍。这就像我们刚学编程时,一顿学、一顿模仿,但是总感觉缺了点什么,自己再努力发现深度还是不够。

    这时候,我们需要做的是看一本高质量的经典书籍,书籍能帮我们梳理知识点、总结各种碰到过的问题,从理论上解答我们心中各种疑惑,将之前的野路子“正规化”。

    下面我根据平时的一些积累,将技术型写作的理论知识归纳成10个要点。

    1 搞清楚主谓宾

    文档主要由段落组成,段落由句子组成,而大部分句子又由“主谓宾”组成(可能有些场合省略了,但是读者可以通过上下文轻松get到)。主谓宾是主干骨架,其他内容可以看作是句子的修饰,主干骨架是决定句子是否垮掉的主要原因。

    现在很多人可能已经忘记了句子的基本构成,毕竟以汉语为母语的人,大概率是不太会关心这些“细节”,就像说英语的国家可能不太关心am、is、are一样,你说哪个人家都理解。

    但是,文档中的一句话读起来是否别扭,大多数时候是由句子构成决定的。在不考虑文档上下文的情况下,如果一个句子能包含正确的主语、谓语和宾语(可选),那么它读起来至少是很顺口的。下面举一个明显搞不清主谓宾的例子:

    传统图像处理算法,通过计算烟火颜色特征,极易受烟火周围环境相近颜色干扰而造成误检。

    尽管你能读懂作者想要表达的意思,但是这句话读起来还是太别扭。“传统图像处理算法”应该算是主语,后面的“通过……”这句不完整,“极易受……干扰”这句还可以,“……造成误检”算是谓语宾语,但是这里用错了动词,为什么是“算法造成误检”,难道不是“周围环境相近颜色干扰造成误检”吗?

    这句话的主干内容是:算法极易受……影响而……。正确的表述应该类似下面这样:

    因为传统图像处理算法通过计算烟火颜色特征去识别烟火,所以它极易受烟火周围环境相近颜色干扰而出现误检。

    我们用过渡词(因为……所以……)将原来的句子拆成了前后两个部分,前面部分的主语是“传统图像处理算法”,谓宾是“识别烟火”;后半部分的主语是“它”,谓宾是“出现误检”。经过调整后,前后两个部分的主语是同一个:传统图像处理算法。下面再直观看一下修改之后的句子主干骨架:

    <因为><传统图像处理算法>通过计算烟火颜色特征去<识别烟火>, <所以><它>极易受烟火周围环境相近颜色干扰而<出现误检>。

    如果你觉得用“因为……所以……”不太好,那么可以再换一种表述:

    传统图像处理算法通过计算烟火颜色特征去识别烟火,烟火周围环境相近颜色的干扰极易造成误检。

    第一句还是跟之前一样,主语是“传统图像处理算法”,第二句主语变成了“干扰”,谓宾是“造成误检”。下面我们直观地看一下修改之后的句子主干骨架:

    <传统图像处理算法>通过计算烟火颜色特征去<识别烟火>, 烟火周围环境相近颜色的<干扰>极易<造成误检>。

    最后再举一个错误的例子:

    由于误报率与漏报率很高,因此不管是否有真实事件发生都会去留意,也会有规定的日程定点巡查视频任务。

    上面这个句子的作者完全没搞懂谁是主语,谁是谓语。感兴趣的童鞋可以试着修改一下,改成你认为正确的表述。

    2 不滥用代词、过渡词和标点符号

    不滥用代词和过渡词

    中文文档中的代词主要有:你、我、他、她、它、其、前者、后者、这样、那样、如此等等,过渡词主要有:因为/所以、不但/而且、首先/然后等等。下面这张表格列举了一些常见的代词和过渡词及其常用场合:

    序号类型名称常用场合举例
    1代词C语言中引入了“指针”的概念, 作用是为了能够提升内存访问速度。
    2代词后者C语言发明于1970年代,C++语言发明于1980年代,后者 主要引入了面向对象思想。
    3代词指针能够提升程序访问内存的速度,但 特点仍存在一些缺陷。
    4代词C语言的一大特性是指针,这就像C++语言和 的面向对象思想一样。
    5过渡词因为/所以因为 神经网络可以自动提取数据特征,所以 基于神经网络的深度学习技术中不再有传统意义上的“特征工程”这一概念。
    6过渡词首先/然后首先 我们要保证有足够多的训练数据,然后 我们再选择一个适合该问题的神经网络模型。

    表2-1 代词和过渡词举例

    代词和过渡词就像标点符号一样,容易被滥用。代词滥用主要体现在作者在使用它们的时候并没有搞清楚它们代表的究竟是谁,是前一句的主语、还是前一句的宾语或者干脆是前一整句话?

    过渡词滥用主要体现在作者在使用它们的时候并没有搞清楚前后两句话的逻辑关系,是递进还是转折或者是因果?(过渡词滥用频率要低很多,毕竟搞清楚前后句子逻辑的难度要小)接下来举几个滥用代词和过渡词的例子:

    C++语言发明于1980年代,它支持“指针”和“面向对象(Object-Oriented)”两个特性,其价值在计算机编程语言历史上数一数二。

    上面这个句子中出现了两个代词“它”和“其”,抛开句子内容本身对错不论,第二个代词指向的对象其实并不明确,“其”指的是“指针”、“面向对象”还是“C++语言”?或者是指“C++语言同时支持……两个特性”这个陈述?像这种有歧义的场合,我们应该少用代词,尽量用具体的主语去代替:

    C++语言发明于1980年代,它支持“指针”和“面向对象(Object-Oriented)”两个特性,C++的价值在计算机编程语言历史上数一数二。

    如果你一定要用代词,那么调整一下可能更好:

    C++语言发明于1980年代,它同时支持“指针”和“面向对象(Object-Oriented)”两个特性,这个价值在计算机编程语言历史上数一数二。

    再读一读,你是不是没有感觉到歧义了?我们在“支持”前面增加了一个“同时”,然后将代词换成了“这个”,现在这个代词指的是“C++语言同时支持…两个特性”这个陈述,修改后整个句子的意思更明确。

    我们再来看另外一个滥用代词的例子:

    该模块主要负责对视频进行解码,输出单张YUV格式的图片,并对输出的图片进行压缩和裁剪,前者基于Resize方法来完成,后者基于Crop()方法完成。

    对于大部分人来讲,上面这段没什么问题。代词“前者”指的是压缩、“后者”指的是裁剪,原因很简单,因为单词Resize对应的是压缩、单词Crop对应的是裁剪。

    但是这段话如果拿给没有任何知识背景的人去读(大概率可能是找不到这种人),恐怕会存在歧义,主要原因是代词前面提到了很多东西,“前者”和“后者”指向不明确,到底是指“解码”、“输出单张图片”还是后面的“压缩”和“裁剪”?下面这样调整后,整段话的意思更加明确:

    该模块主要负责对视频进行解码,输出单张YUV格式的图片,并对输出的图片进行压缩和裁剪,压缩基于Resize方法来完成,裁剪基于Crop()方法完成。

    我们去掉了代词,直接用具体的主语来代替,句子意思非常明确。如果你一定要使用代词,那么也可以这样调整:

    该模块主要负责对视频进行解码,输出单张YUV格式的图片。同时,它还对输出的图片进行压缩和裁剪,前者基于Resize()方法完成,后者基于Crop()方法完成。

    上面这段话还是使用了代词“前者”/“后者”,但是我们修改了标点符号,并且增加了一个过渡词“同时……”,这样做的目的是让读者知道虽然整段话说的是同一个东西,但是前后的句子已经分开了,为我们后面使用代词做好准备。

    好的,现在我们来总结一下在技术型文档编写过程中使用代词时的一些有价值经验:

    1. 代词可以指它前面出现过的名词、短语甚至整个句子,但是一定是前面出现过的;
    2. 代词的位置和它要指向的目标最好不要隔得太远,1~3句话之内,超过就不要用了;
    3. 代词的作用是减少小范围内某些词汇或句子重复出现的频率,要用到恰到好处;
    4. 代词前面出现的混淆目标如果太多,一定要重新调整句子,确保代词指向无歧义。

    不滥用标点符号

    接下来我们再看另一个,标点符号的滥用要普遍很多,其主要原因是:标点符号的使用并没有非常明确的对错之分。至少对大部分人而言,使用句号还是逗号其实并没有什么严格的评判标准,只要不出现“一逗到底”的极端情况,其余大概率都OK。下面这张表格是我根据以往经验,总结出来的应用于技术型写作时中文标点符号使用规则:

    序号符号写法使用场合
    1逗号前后两句话关联性比较大,阅读时停顿时间短。
    2句号前后两句话关联性比较小,阅读时停顿时间稍长。
    3分号前后两句话地位相对平等,句子的内容和格式基本保持一致。比如列表中,如果每项是一个句子或者短语,那么第1至第N-1项结尾使用分号,第N项结尾使用句号。
    4冒号技术型文档中,冒号一般用在需要引入重要内容的场合。比如当你需要插入一张表格或者一张图片时,需要提前做一个提醒(下表列举了常见的代词和过渡词:),提醒结束时补充一个冒号。
    5括号()、【】()一般用于解释性的场合,负责对名词或者句子的补充解释。【】用得比较少,我一般用于需要增加醒目标记的名词或短语中。
    6顿号一般可以用在枚举名词或者短语的场合。
    7问号不用多解释。
    8引号“”、‘’一般用于标记特殊名词、专用名词、短语,或需要重点突出的名词或短语。
    9分隔号/一般用于成对出现的名词(举例:因为/所以、首先/然后等等都是过渡词),或者根据文档上下文来判断地位差不多的相近词(举例:算法的好坏直接影响最终报表中误报/误报率那一栏)。
    10破折号——用得不多。
    11省略号……不用多解释。
    12感叹号技术型文档不是写小说,用得不多。
    13书名号《》、<>不用多解释。

    表2-2 常用标点符号

    上面这张表格基本涵盖了常用的中文标点符号,其中有一小部分在技术型文档中不太常见,比如感叹号、破折号,这些符号多多少少带有某种感情色彩,不太适合用于技术型文档编写。前面已经简单概括了一下各个符号的使用场合,下面挑几个容易出错的再一一详细说明:

    C++语言发明于1980年代,它衍生自C语言,主要引入了“面向对象(Object-Oriented)”思想,面向对象思想强调对数据的封装和对功能的复用,此特性有利于开发者对代码的维护和扩展,目前,大部分计算机编程语言已经支持了面向对象特性。

    上面这段话属于典型的“一逗到底”的例子。作者从C++语言说到了面向对象思想,最后总结大部分计算机编程语言都支持面向对象。我们如果将整段话拆开来看,其实它想表述的是3个内容,每个内容之间最好使用句号,停顿时间稍长一些。我们调整之后的效果是:

    C++语言发明于1980年代,它衍生自C语言,主要引入了“面向对象(Object-Oriented)”思想。面向对象思想强调对数据的封装和对功能的复用,此特性有利于开发者对代码的维护和扩展。目前,大部分计算机编程语言已经支持了面向对象特性。

    接下来我们再看看分号的使用。根据我个人经验,分号常用在列表场合,下面举一个例子说明:

    下面是“将大象装入冰箱”的具体步骤:

    1. 打开冰箱门;
    2. 将大象装进冰箱;
    3. 关上冰箱门。

    上面是一个有序列表,列表中的各项内容是一个短语。当列表中各项内容是短语或者句子的时候,除最后一项之外其余项目结尾一般都使用分号(注意,同一个列表中各项的格式最好都保持一致,要么都是短语,要么都是单个的名词,这个后面专门讲列表的时候会提到)。如果列表中各项内容只是一个名词时,那么结尾就可以不用标点符号:

    下面是“可以被装进冰箱”的动物:

    • 狗子
    • 大象
    • 猴子
    • 鹦鹉

    上面是一个无序列表,列表中的各项内容是一个名词,这时候名词结尾处不需要添加任何标点符号。

    我们最后再来看一下小括号的使用场合。在技术型文档中,小括号主要用于对前面的名词、短语或者句子进行补充说明,比如当文档中出现缩写词汇时,我们会在它的后面增加一个小括号,在括号里面注明该缩写词汇的全称。下面举一个使用小括号对缩写词汇解释说明的例子:

    API(Application Program Interface)是系统对外提供的访问接口,使用者可以按照API文档中的接口定义去访问系统中的数据,并与它做一些交互。

    上面这段话主要讲API是什么、可以干什么。它是Application Program Interface三个单词的简称,为了让读者更清楚该术语的定义,作者可以选择在第一个“API”出现的位置增加一个小括号,并将术语全称补充进来,之后的整个文档无需再重复该操作(后面会单独提到术语全称和简称的运用规则)。

    除了能对缩写词汇进行解释说明之外,小括号还可以用于对前面整个句子进行补充说明,再看下面这个例子:

    它是Application Program Interface三个单词的简称,为了让读者更清楚该术语的定义,作者可以选择在第一个“API”出现的位置增加一个小括号,并将术语全称补充进来,之后的整个文档无需再重复该操作(后面会单独提到术语全称和简称的运用规则)。

    上面这段话其实前面已经出现过,最后小括号里面的内容主要是为了对它前面一句话进行补充。如果补充性说明内容太长,比如要好几句话才能起到补充的作用,那么这个时候我们就不应该再使用小括号了,可以考虑调整句子结构,然后将补充性的内容当作段落主体的一部分。

    关于代词、过渡词以及标点符号滥用的内容就讲到这里,其中有一些内容是我个人的写作喜好,其实并没有非常明确的对错之分,比如前面讲到列表中分号的使用,很多人这时候可能选择使用句号。

    大家可以根据自己的判断去处理这种模棱两可的场景,当然一些比较确定的规则,比如当列表项只有名词的时候,列表项结尾不要使用任何标点符号,这一点还是比较确定的。

    3 多用强势动词,少用形容词和副词

    强势动词和主动语句

    很多人可能第一次听到“强势动词”这个说法,陌生还难以理解。如果将它翻译成英文,对应的单词应该是“Strong Verbs”,意思是强有力的动词,你可以理解为:听起来动作幅度大、冲击力强的那一类动词。打个比方,假如“走”是弱势动词,那么“跳”就是强势动词;假如拿刀“切”是弱势动词,那么拿刀“砍”就是强势动词。下面这张表格列举了一些强势/弱势动词的例子:

    序号弱势动词(可考虑)强势动词
    1走过去跳过去
    2切肉砍肉
    3出现异常抛出异常
    4程序退出程序崩溃
    5内存增长内存泄漏
    6找不到日志文件日志文件丢失
    7客户提出质疑客户投诉
    8任务未完成任务延期
    9角色权限是由管理员设置的管理员控制角色权限
    10系统无法正常使用API返回的结果系统无法正常解析API返回的结果

    表3-1 强势/弱势动词对比

    上面列出了10对强势/弱势动词,我们观察可以发现:弱势动词一般无法正确表达问题/事情的真实情况。在技术型文档编写过程中,虽然我们不能借助词汇使用、句子构成以及标点符号等手段去传递感情倾向,但是也不能掩盖真实准确的内容表达。

    在提到强势动词时,我们还要注意“主动语句”和“被动语句”的区别。在技术型文档编写过程中,应该尽量少使用被动语句。下面这张表格列举了一些主动/被动语句的例子:

    序号被动语句(可考虑)主动语句
    1角色权限是由管理员控制的管理员控制角色权限
    2API结果无法被系统正常解析系统无法正常解析API结果
    3图像特征是通过CNN逐步降维的方式提取的CNN通过逐步降维的方式提取图像特征
    4这种检测效果无法被客户接受客户无法接受这种检测效果
    5经过研发排查发现,这个现象是正常的(*)经过研发排查发现,这个属于正常现象

    表3-2 主动/被动语句对比

    上面表中第5项(带*号)严格来讲不算被动语句,但是在技术型写作过程中,我们应该避免使用“……是……的。”这种句式,该句式太过口语化。尽量少用被动语句的原因有以下三个:

    1. 读起来麻烦。读者读到被动语句时,需要先在脑子里将其转换一下再去理解;
    2. 难以理解。读者有时候很难分清被动语句中的真实主语(甚至可能省略了主语);
    3. 字数多。被动语句一般更长、字数更多。

    那么被动语句是不是完全不让用了呢?当然不是。仔细的读者可能已经观察到了前面在举例的时候我们有这样一段话:

    C++语言**<发明于>** 1980年代,它支持“指针”和“面向对象(Object-Oriented)”两个特性,C++的价值在计算机编程语言历史上数一数二。

    上面第一句中的“……于”其实就是被动语句,像“C++语言发明于……”、“该文档编辑于……”这些都算被动语句,由于宾语(这里是C++语言)更重要,所以默认省略了真实主语(某某发明C++语言,可是某某在这里不太重要)。这类句子结构有一个特点就是:宾语比真实主语重要,所以放到句子的开头位置。

    少用形容词和副词

    技术型文档讲究的是一个“准”字,它不像小说、散文之类的文学作品带有很强的感情色彩,也不同于网络博客可以掺杂一些非正式词汇,更不能跟Marketing Speech(营销话语)一样常常夸大其词。为了做好前面说的“准”,技术型文档应该尽量少用形容词和副词,因为这些词语大部分都属于“主观”表达。下面举几个使用形容词和副词的例子:

    为了保证系统运行更高效,他们尝试尽可能压缩图片尺寸,事实证明这个尝试非常成功。这样的工作看似简单,却蕴含着高技术含量。

    上面这段话使用了好几个副词和形容词,比如“尽可能”、“非常”、“高”。如果是技术型文档,这段话建议调整为:

    为了提高系统运行效率,他们将图片尺寸压缩到原来的1/3,系统响应速度提升2倍。

    我们用具体的数值替换了原来的形容词和副词,并且直接删掉了最后一句话,最后一句话在技术型文档中起不到任何作用。下面这张表格列举了部分形容词和副词使用不恰当的场合:

    序号形容词/副词(可考虑)调整为
    1经过优化,接口响应速度提升明显经过优化,接口响应速度提升2倍
    2很多人反应现场误报很多数据统计发现,现场误报率为11%
    3大部分客户投诉说系统很不好用最近一个月有超过50个客户投诉说系统不好用
    4升级依赖库后,该函数运行很快将依赖库升级到2.3.1版本后,该函数执行时间缩短到100ms以内
    5研发同事很辛苦,每天加班很晚研发同事很辛苦,每天23:00之后才下班

    表3-3 形容词/副词使用不恰当举例

    最后,我们来总结一下:

    1. 优先使用方便读者阅读理解的动词和句式(强势动词和主动语句);
    2. 尽量少用形容词和副词,用具体数值代替、或者调整句子表述。

    4 正确使用术语

    这里提到的术语分两种:一种是计算机领域通用的专业术语,像SDK、面向对象、TCP/IP、微服务等等这些名词,它们基本已经被大众接受和理解,我们在编写文档的时候不能随意再重新去命名、调整或者改变拼写(将“TCP/IP”写成“Tcp/ip”)。

    另外一种是当前文档需要定义的术语,这种术语只有在当前文档上下文中才有效。我们在编写技术型文档时,通过自己的判断,如果认为文档读者缺乏对相关术语(不管是前面哪一种)的理解,我们都应该在文档靠前位置给出对术语的解释说明,也就是我们平时文档中常见的“名词解释”。

    序号名词说明
    1SDKSoftware Development Kit,软件开发包,开发者基于该工具包开发更丰富的高层应用。
    2内存泄漏通过new/malloc等方法申请的内存在使用完后未被及时释放,程序运行内存占用越来越高。
    3面向对象强调对数据和功能的封装,提升代码的可复用性、可扩展性以及灵活性。
    4FVM(*)Front Video Manager,前端视频管理服务,负责视频接入、分发等业务。
    5视频大数据标签服务(*)对视频进行结构化处理,生成结构化标签,并对外提供标签检索等功能。

    表4-1 名词解释举例(*为自定义术语)

    有些文档可能篇幅比较短,并不是传统意义上的需求设计类文档,比如对某个线上问题分析的结果汇报、对某个模型检测效果的验证报告、或者研发阶段性的工作总结。这些文档由于本身内容就不多,大部分可能直接进入主题,这时候如果还要在文档中专门增加一块名词解释的版块(并且总共也就一两个术语),就显得比较突兀。

    另外一种对术语进行解释说明的方式是用我们前面提到的小括号,我们可以在术语后面增加一个小括号,然后在括号里添加补充说明。这种方式很便捷,但是只适合简单的场景,比如在小括号里面补充术语的全称或者简称,或者只做简单的解释说明。如果对一个术语的解释内容很长,就不太适合用这个方法,下面举一个错误的例子:

    当视频离线时,FVM(Front Video Manager,前端视频管理服务,负责视频接入、分发等业务。)会产生一条告警记录,并存入节点数据库。

    上面这个术语解释内容太长,不太适合使用小括号的方式,这种情况要么在文档正文中专门对FVM进行解释,要么在小括号中只给出FVM的英文全称即可:

    当视频离线时,FVM(Front Video Manager)会产生一条告警记录,并存入节点数据库。

    使用小括号去做术语解释还需要注意一点的是:只需要在术语第一次出现的时候做一次解释即可,不需要重复多次。下面举一个重复的错误例子:

    当视频离线时,FVM(Front Video Manager)会产生一条告警记录,并存入节点数据库。之后节点数据库会将该条告警记录同步到平台数据库,平台FVM(Front Video Manager)检测到有新的告警记录时,会通过消息中间件通知业务系统,业务系统随后将告警信息以短信(或钉钉)的方式通知到用户。

    上面对术语FVM的解释重复了两次,这种做法是错误的,第二次我们可以直接去掉。

    有些术语存在全称和简称,我们熟悉的SDK全称是“Software Development Kit”,但是现在基本没有人再去使用它的全称。像这种简称已经被大众熟知的术语,我们就不能再标新立异的去用它的全称。

    另外一些在文档中自定义的术语,文档作者为了便于阅读可能也会提供一个简写的版本,在这种情况下,文档前后应该保持一致,即:要么整篇文档都用全称,要么都用简称,尽量做到一致。下面举一个全称简称使用不一致的例子:

    IVA(Intelligent Video Analytics,智能视频分析)服务主要负责视频解码、模型推理、目标跟踪以及目标行为分析,该服务是整个系统中最复杂的一个模块。智能视频分析服务由张三团队开发完成,一共耗时6个月,人力成本开销120万。

    上面这段话中,前半部分作者使用“IVA”简称(小括号中做了全称说明),但是在后面一句话中作者又使用了全称“智能视频分析”,这种做法没有遵循统一原则。不仅同一段落应该保持统一,整篇文档也应该做到统一,术语在文档中第一次出现时是简称,那么整篇文档都应该用简称,反之亦然。

    最后我们来总结一下,在技术型文档中使用术语时需要注意的一些事项:

    1. 文档读者不熟悉的术语(包括通用术语和文档自定义术语)都应该有解释说明;
    2. 小括号只适合简短的术语解释场合,括号里的内容不能太长(一两句短语之内);
    3. 任何方式的术语解释只需要有一次即可(术语第一次出现时),不要解释多次;
    4. 术语的全称和简称要保持使用一致,要么整篇文档都用全称、要么都用简称;
    5. 对于计算机领域的通用专业术语,需要沿用主流用法,不要随意再去调整。

    5 正确使用段落

    单一职责

    与面向对象编程中“类的单一职责原则”一样,文档中的句子(特指以句号结尾的一句话)、段落也应该遵循“单一职责原则”。前面讲标点符号的时候已经提到过,同一段话中前后关联性不大的两句话之间用句号,这样可以保证每句话想要表达的是相对独立的内容。

    段落也一样,一个段落只陈述一个主题,可以保证段落的句子不会太多、内容不会太长,便于读者阅读和理解。下面举一个段落使用错误的例子:

    Excel提供一个组织数据的高效方法。我们可以将Excel想象成一个有行和列的二维表格,每一行代表一个独立的实体,每一列代表该实体的不同属性。Excel还具备数学功能,比如计算平均值和方差等数学操作。如果你想使用Excel来记录图书信息,那么每一行代表不同的书本,每一列代表书本的属性,比如书的名称、价格以及出版社等等信息。

    上面这段话的第一句已经明确了段落主题:Excel能高效地组织数据。可是,这段话中间却穿插了一个不相干的句子,说Excel具备数学功能,能够做一些数学操作,这句话显然跟本段主题不一致,我们需要将其去掉:

    Excel提供一个组织数据的高效方法。我们可以将Excel想象成一个有行和列的二维表格,每一行代表一个独立的实体,每一列代表该实体的不同属性。如果你想使用Excel来记录图书信息,那么每一行代表不同的书本,每一列代表书本的属性,比如书的名称、价格以及出版社等等信息。

    好的开头语

    除了要保证段落的“单一职责”之外,我们还需要给每个段落一句“好的”开头语。那么什么是好的开头语呢?好的开头语要能让读者读完之后就能猜到文档作者在本段中想要陈述的主题,其实就是概括性的句子。

    还是以上面那段话为例子,它的第一句话“Excel提供一个组织数据的高效方法”其实就是很好的开头语,它提示本段内容主要讲Excel如何高效地组织数据。如果我们将上面那段话的开头调整一下,那么效果明显就差了很多:

    Excel由许许多多的单元格组成,每个单元格可以包含不同的内容。我们可以将Excel想象成一个有行和列的二维表格,每一行代表一个独立的实体,每一列代表该实体的不同属性。如果你想使用Excel来记录图书信息,那么每一行代表不同的书本,每一列代表书本的属性,比如书的名称、价格以及出版社等等信息。

    读者读完上面第一句话后,可能还是很懵,需要读完整段话才能明白文档作者在本段中想要表达的意思。段落的开头语可以通过提炼段落内容得到,我们可以在段落写完之后回过头提炼一句话作为本段的开头语,下面这段话描述代码中循环语句的作用:

    目前几乎所有的计算机编程语言都支持循环语句,例如,我们可以编写代码来判断一个用户命令行输入是否等于“quit”(退出命令),如果需要判断100万次,那就创建一个循环,让判断逻辑代码运行100万次。

    上面的这段话本身没什么问题,主要介绍循环语句的功能和应用场合。但是如果我们提炼一下,在段落开头增加一个更好的开头语,效果可能会提升很多:

    循环语句会多次运行同一个代码块,直到不再满足循环条件为止。目前几乎所有的计算机编程语言都支持循环语句,例如,我们可以编写代码来判断一个用户命令行输入是否等于“quit”(退出命令),如果需要判断100万次,那就创建一个循环,让判断逻辑代码运行100万次。

    上面开头第一句话就说清楚了循环结构的特点,读者读完第一句话基本就知道整段内容要讲什么。一个好的开头语能够节省读者的时间,因为并不是每个读者都有兴趣去阅读整段的内容,开头语可以给读者“是否继续读下去”一个参考。

    控制段落长度

    控制段落长度并没有一个明确的标准,它只是一个非常主观的说法。如果文档中某个段落内容太长(比如那种一段话就占半页Word),作者自己应该反复阅读几次再对段落做一些精简,这样既可以节省读者的时间,大概率也能提升意思表达的准确性。

    同样,也不太建议文档频繁出现小段落,比如整段内容只有一两句话那种,这个时候可以考虑段落合并或者稍微扩充一下内容。

    最后我们来总结一下,在技术型文档中如何正确使用段落:

    1. 一个段落只负责讲一个内容,两个不同的主题应该拆分成两个段落去陈述;
    2. 尽量为每个段落增加一个“好的”开头语,能够清晰表达(或暗示)本段的主题;
    3. 要控制好段落内容长短,“不长不短”根据自己经验(比如不超5~7个句子)。

    6 适当使用列表和表格

    文字相对来讲其实是一种效率比较低的表达方式。如果你想让人快速地去理解你要表达的意思,图片应该是最好的一种方式,但是图片有一个缺点就是:有时候它只能从宏观上去表达,无法体现其中细节。

    当我们想要尽可能直观地去陈述内容,又想尽可能多的包含细节时,我们可以考虑使用列表或者表格。有些读者非常抵触大段大段的文字(尤其在技术型文档中),一种改进方法是前面提到的“控制段落长度”,尽量让段落内容精简、单一;再一个就是看看段落内容是否能以列表或者表格的方式去呈现,这种方式可以给人“严谨、清晰”的感觉。

    使用列表

    列表简单来讲就是将你原来用段落方式呈现的内容改用项目(Item)的方式去呈现,一般它主要用于枚举、过程描述或者要点归纳等场合。列表中的各项可以是名词、短语,甚至是句子,各项目之间有严格顺序要求的列表叫“有序列表”,相反并没有严格顺序要求的列表叫“无序列表”。下面是以段落的方式陈述小张今天所做的事情:

    白天在公司上班期间,小张一共修复了7个bug,做了3个代码合并(评审),并和项目经理讨论了前天提的新需求。晚上回到家后,小张先做饭,然后给儿子洗澡,23:30上床睡觉。

    上面这段话本身没什么问题,用了合理的标点符号和过渡词,读起来清晰明了。但是,如果在技术型文档编写中,能将这段话改用列表的方式呈现,起到的效果会更好:

    小张白天在公司:

    • 修复了7个bug;
    • 做了3个代码合并(评审);
    • 和项目经理讨论前天提的新需求。

    晚上回到家后:

    1. 做晚饭;
    2. 给儿子洗澡;
    3. 23:30上床睡觉。

    我们将原来的一段话拆成了两个列表,并在每个列表前面做了一个“引入说明”(以冒号结束),介绍了接下来列表的背景上下文。第一个列表是无序列表,因为原文并没有突出强调小张白天在公司每项工作之间的前后关系(无顺序要求),只是一个归纳统计;第二个列表是一个有序列表,原文很明显强调了小张晚上回家之后做事的先后顺序(最后一项还给出了具体时间)。

    在技术型文档中,合理地运用列表这种方式去呈现内容可以给人一种“逻辑严谨、思路清晰”的感觉,让读者更相信你讲的内容。

    在使用列表时,我们应该确保列表中各项内容结构一致,即:要么都是名词,要么都是短语,要么都是句子。这个原则既能保证你使用列表的初衷(逻辑严谨、思路清晰),也能让读者读起来更舒服。下面是一个错误使用列表的示范:

    影响系统检测准确性的因素有:

    • 模型;
    • 产品开通过程中,工程师对算法参数校准程度;
    • 应用现场是否有灯光照明。

    上面列表一共包含3项,每项的内容结构各不相同,第一项是一个名词,第二项是一个句子,第三项是一个短语。我们将结构统一后,可以调整为下面这样:

    影响系统检测准确性的因素有:

    • 模型的复杂性;
    • 部署时对算法参数校准的程度;
    • 应用现场是否有灯光照明。

    上面是将列表中各项内容修改为短语,我们还可以换另外一种方式:

    影响系统检测准确性的因素有:

    • 模型类型
    • 校准程度
    • 环境亮度

    上面是将列表中各项内容修改为名词,由于是名词,每项结尾处不使用任何标点符号(参见前面专门讲标点符号的章节)。下面是对列表运用的总结:

    1. 列表一般用于枚举、过程描述、要点归纳等场合;
    2. 需要强调顺序的时候应该使用有序列表,其余视情况而定;
    3. 列表中各项内容结构应保持一致,都是名词、短语或者句子;
    4. 每个列表前面尽量添加一个明确的“引入说明”,以冒号结束。

    使用表格

    表格其实跟面向对象有一定联系,大部分时候表格中的一行相当于一个对象,表格中的列相当于对象的属性(字段),表格和面向对象组织数据的方式本质上是一致的。技术型文档中表格一般用来组织与数字有关的内容,当然也有例外,就像前面章节中用到的表格,纯粹是为了组织文本内容。

    下面是在技术型文档中,使用表格时可以参考的一些经验:

    1. 组织数字相关内容时,一定要用表格(大部分人可能已经有这个意识);
    2. 组织结构化类型的文本内容时,尽量用表格;
    3. 每个表格都应该配一个表格标题,简要说明表格内容;
    4. 文档中的表格应具备一致的样式和风格,比如标题字体、背景填充等。

    在技术型文档中使用表格组织文本内容时,需要控制每个单元格的文本长度。一般情况下建议单元格中只使用短语,如果必须要用段落,也应该控制段落中句子数量(一般建议不超过2~3句)。下面是错误使用表格来组织文本内容的示范:

    序号语言介绍
    1CC语言由贝尔实验室发明于1969至1973年,是一种编译型计算机编程语言。它运行速度快、效率高、使用灵活,常被用于计算机底层驱动以及各种语言编译器的开发。C语言是一种面向过程的编程语言,同时它的语法相对来讲较复杂,新人入门门槛比较高。
    2C++C++语言发明于1979年,是一种编译型计算机编程语言。它衍生自C语言,继承了C语言的一些特性,比如使用指针直接访问内存,同时它也支持面向对象编程,提升了代码的可复用性、可扩展性以及灵活性。由于C++继承了C的大部分语法,再加上本身具备复杂的类型系统以及泛型编程等语言特性,新人入门门槛也比较高。
    3PythonPython语言发明于1991年,是一种解释型计算机编程语言,因此运行速度相对要慢。Python除了支持面向对象编程之外,还支持函数式编程,它语法简单,更贴近人类自然语言,新人入门门槛较低。Python是目前人工智能领域最热门的语言,对应的工具库非常丰富。

    表6-1 三种编程语言介绍

    上面是以表格的形式来介绍C、C++以及Python三种编程语言,但是在“介绍”那一列中的文本内容太长,我们可以换一种表达方式:

    CC++Python
    由AT&T 贝尔实验室发明于1969至1973年由BJarne Struistrup发明于1979年由Guido van Rossum发明于1991年
    语法比较复杂,新人入门门槛高语法比较复杂,新人入门门槛较高语法简单,贴近人类自然语言,新人入门门槛低
    编译型语言编译型语言解释型语言
    支持面向过程编程支持面向过程、面向对象编程支持面向过程、面向对象、函数式编程
    偏底层、运行速度快、使用灵活继承了C语言的一些特性,在其基础之上还支持面向对象等特性语法简单,学习难度低
    一般用于驱动、编译器、嵌入式或者其他偏向硬件层面的开发一般用于游戏前后端、PC客户端的开发一般用于数据科学、人工智能相关开发

    表6-2 C vs C++ vs Python

    上面表格一共还是3列,但是现在每列代表一种编程语言,列中的每个单元格是对该语言的描述,描述内容都比较精简。如果你想继续补充内容,可以对应地增加行即可。

    表格的组织方式有多种多样,行可以变成列、列可以变成行,并没有严格的限制。我们只需要找一个适合自己的方式,比如上面这种每列代表一种语言,是因为该场景需要介绍的编程语言只有三种,如果数量再多点(或者数量不确定,后期会继续增加),那么表格宽度就不太够、这种组织方式就不再合适。

    7 一图胜千言

    人类在发明文字媒介之前,用的是图形符号。图像(或图形、图片)是所有内容表达方式中最直观的一种,同时也能提升读者的阅读兴趣。有人专门做过研究:在文档中增加图像能提升读者对文档的喜爱程度,不管这个图像跟文档内容本身是否有关系(https://reurl.cc/RjkrK6)。

    也就是说,哪怕在文档中插入无关紧要的图像,读者也更愿意去尝试阅读文档中其他的内容。我们平时看别人演示PPT时,如果发现整页都是文字描述,大概率就不会有认真去听的欲望。下面是一段对双向链表的文字描述:

    双向链表也叫双链表,是链表的一种。它的每个数据节点中都有两个指针,分别指向直接后继节点和直接前驱节点。所以,从双向链表中的任意一个节点开始,我们都可以很方便地访问它的前驱节点和后继节点。在应用双向链表时,我们一般构造双向循环链表,链表首尾相连。

    上面这段描述双向链表的文字本身已经非常清晰,对数据结构有一定基础的人看完文字基本就能理解双向链表的结构和应用场合(基于它的特点)。但是,如果是一个零基础的小白来看这段话,可能效果就不会太好(尤其如果这段话是作为PPT中的内容,大概不会再有更多的内容补充)。如果我们在这段话后面增加一个插图,来直观告诉读者双向链表长什么样:

    双向链表也叫双链表,是链表的一种。它的每个数据节点中都有两个指针,分别指向直接后继节点和直接前驱节点。所以,从双向链表中的任意一个节点开始,我们都可以很方便地访问它的前驱节点和后继节点。在应用双向链表时,我们一般构造双向循环链表,链表首尾相连。下图是双向链表结构示意图:

    图片图1 双向链表结构

    上面的文本配合图片,能让读者更加直观的理解双向链表的结构特点。当文档中的文本和图片同时出现时,读者大概率会先看图片,然后再结合文字去理解,加快文档阅读速度。

    可抽象也可具体

    技术型文档中的插图不一定都得是流程图、架构图、或者结构设计图这种非常具体的技术相关图片,还可以是抽象的、能形象表达文档主题的图片。下面是在技术型文档中使用卡通和漫画图片的示例:

    示例1:

    Gitlab中有Label和Tag两个概念。

    图片

    图片

    为了便于区分,这里将Label翻译成“标签”,将Tag翻译成“标记”(在有些地方这两个单词翻译并没有严格的差异)。Gitlab中标签的作用是为了分类、快速地检索和过滤,用户能通过标签来直观的管理Issues,比如to-do、bug等等。

    标记的主要作用是为了归档,给Commit取一个形象的别名,后期快速定位和查找。GitLab中创建标记可以理解为“做记号”,建立索引。一般推荐为标记定义一个有意义的名称,比如以版本号为名,当我们要发布1.0版本,对应的标记名称可以是“v1.0”,如果我们要发布2.0预览版,那么对应的标记名称可以是“2.0-pre”。

    示例2:

    源码版本控制系统(Source Code Version Control System)主要负责对源代码版本进行管理,涉及到代码提交、撤销、比对、分支管理、代码合并等功能。源码管理是软件开发过程中非常重要的一个环节,它能有效保证软件代码质量。

    图片团队协作

    源码管理并不是软件开发周期的全部,整个软件开发周期涉及到多个流程、多个团队(多人)协作完成,包括立项/结项、进度/任务管理、需求/设计、bug管理、测试、集成上线等环节。

    突出图中重点

    当我们想为文档添加图片时,单张图片包含的内容不宜太过复杂,图片应该能准确地表达意思。如果一张图太过复杂、或者包含了一些可能引起歧义的部分,我们可以尝试以下两种改进方式:

    1. 将复杂的图拆开,一张图对应一个局部细节;
    2. 在图片中将重点区域标记出来,让读者可以一眼就发现重点。

    在技术型文档中插入复杂的系统架构图很常见,这种时候建议遵循“先宏观,再具体”的原则,循序渐进。我们不要一上来就放一张大图,还想将所有的细节都包含进去,这种想法不太现实,这不仅对你画图的技能要求很高,读者看完也容易一脸懵。下面这张图太过复杂:

    整个视频分析系统由3大服务组成,分别是Intelligent Video Analytics、Front Video Service以及Distribute Load Balance,这3大服务一共包含15个子模块。下面是视频分析系统结构:

    图片视频分析系统结构

    上面这个例子中插入的这张图既想描述3大服务之间的交互关系、又想描述各个服务内部子模块之间的交互关系(上面只是示意图,实际情况可能比这个更复杂)。文档读者碰到这种情况可能会产生两个感觉:一是图太复杂了,很难看懂,有些地方迫于空间原因字号还小;二是我需要重点关注的点在哪里?如果遵循前面提到的“先宏观,再具体”的原则,上面这个例子可以调整为:

    整个视频分析系统由3大服务组成,分别是Intelligent Video Analytics、Front Video Service以及Distribute Load Balance。下面是视频分析系统中各服务之间的关系:

    图片视频分析系统服务交互

    其中,Intelligent Video Analytics服务主要负责对视频解码、推理以及行为分析等结构化操作。该服务内部一共包含9个子模块,模块之间的关系见下图:

    图片Intelligent Video Analytics服务子模块交互

    Front Video Service服务主要负责视频接入、分发、配置管理等功能。该服务内部一共包含3个子模块……

    另外一种情况,插入的图片中包含了不相干内容,文档作者又没有给出醒目的标记,读者看完不清楚关注重点在哪里。下面是错误的示例:

    GitLab中的Release功能主要用来对仓库中的代码以及其他一些相关资料文件进行归档,通常用于版本发布。当有新版本发布时,用户可以基于对应的Commit创建一个Tag标记,给它一个合理的名字,比如“v1.0-pre”(代表发布1.0预览版),然后再基于该Tag发布版本。

    后期,其他人可以通过Release菜单快速浏览、检索项目版本发布记录以及对应时间点的相关代码和资料。用户可以在GitLab主界面的左侧菜单中找到Release功能入口:

    图片Gitlab中Release菜单

    上面图片在介绍Release功能时给出的图片中包含的菜单项太多,为了让读者更直观看懂图片关注点,可以将图片调整如下(左右两种都可以):

    GitLab中的Release功能主要用来对仓库中的代码以及其他一些相关资料文件进行归档,通常用于版本发布。当有新版本发布时,用户可以基于对应的Commit创建一个Tag标记,给它一个合理的名字,比如“v1.0-pre”(代表发布1.0预览版),然后再基于该Tag发布版本。

    后期,其他人可以通过Release菜单快速浏览、检索项目版本发布记录以及对应时间点的相关代码和资料。用户可以在Gitlab主界面的左侧菜单中找到Release功能入口:

    图片Gitlab中Release菜单

    有准确的图标题

    图片是为了读者能够更直观地理解文档内容,但是图片毕竟不是文字,不同的人对同一张图片理解可能存在差异,尤其对于那种不包含任何文字的图片。因此,在文档中插入任何图片时,我们应该为它定义一个合适、贴切的标题。图标题一般是一个名词或者短语,作用跟前面讲到的表格标题一样,协助读者理解图片所要表达的含义。

    8 统一样式和风格

    文档的样式和风格其实跟我们写代码一样,写代码要遵守统一的代码风格(变量命名、换行规则等等),写文档也应该遵守统一的文档风格。公司或者组织一般都有自己的文档风格规范,规范会定义好正文/标题字体字号、页眉页脚、页边距、行间距、段前段后间距等等,按照规范写出来的文档风格基本就能保持一致。

    对于没有规范可用的场合,文档作者可以根据自己的偏好执行即可,保证整篇文档的内容遵守相同的风格,比如文档开头和文档结尾的段落间距、列表样式、对齐方式都应该保持一致。本篇文档的主要规范定义如下:

    1. 页边距上下左右2cm;
    2. 标题18号华文仿宋,正文12号宋体,正文中表格/图标题12号华文仿宋;
    3. 段前/段后间距0.5,段落行间距1.5倍,段落首行对齐不空格;
    4. 表格、图片居中对齐,图标题在图片下方、表格标题在表格上方。

    还有另外一些比较重要的样式定义,比如列表样式(本篇文档中每个列表外面套了一个表格,表格无左右边框),还比如本篇文档涉及到了很多举例和示范,所有的举例示范都在表格中,并且表格有自己的样式(字体字号、背景颜色等等)。

    9 把握好整体文档结构

    把握好整体文档结构是一件非常困难的事情,这个其实跟前面讲到的文档内容本身没什么关系。文档作者在动笔之前需要有一个宏观的构思,需要在脑子里先将文档大纲梳理一遍,一级标题可以是什么、二级标题又可以是什么,然后考虑将合适的内容放到对应的章节中去。

    优秀的作者在正式动手之前,可能已经有了很长一段时间的思考准备,尤其对于那种非常复杂的文档。但是这种方式对一些人来讲可能不太现实,难度太大。那么这时候就只能考虑另外一种方式,动手之前先在白纸上打草稿,列出来文档大纲,然后不断修改和调整,直到满意为止。

    其实不管上面哪种方式,文档结构考验的是作者组织内容的思维能力。对于一些需求、设计类型的“主流”技术型文档,考验的是作者对软件需求、系统架构的理解深度,该写什么不该写什么,写到什么程度,这些都需要作者考虑清楚,这类型的文档一般有标准的模板可以参考,大家平时写得/见得也比较多。

    对于另外一些“非主流”类型的技术型文档,比如对某个线上问题的分析报告、技术/原型调研类文档,这些文档一般规模比较小、也没什么参考标准,全靠作者自己去组织。

    下面就以“对某个用户需求做技术性反馈”为例,抛砖引玉,简单描述一下技术型文档结构应该如何去组织:

    场景说明:

    视频分析系统中,客户要求在事件录像文件中对涉事车辆目标(或区域)进行高亮标框显示,视频录像在播放时会有一个醒目的多边形提醒用户具体事件发生位置。客户懂一些技术相关知识,要求公司技术研发团队针对该需求给出合理的需求反馈,如果需求可实现,评估工作难度;如果需求不可实现,说明具体原因。

    根据上面场景说明,该需求并非硬性要求。甲方提出了一个想法,并且非常贴心地考虑到了乙方是否具备条件实现,希望给出一个实质性的答复。公司技术团队在写反馈说明文档之前,应该考虑以下两个问题:

    1. 如果正常响应该需求,具体的方案是什么、难点/风险点各是什么;
    2. 如果不能正常响应该需求,具体原因是什么,是否有可替代方案、替代方案是什么。

    也就是说,不管最终团队是否响应该需求,我们在文档中都要有非常实质性的内容,不应该是空话、套话。下面就以“不响应”为例,描述文档应该包含哪些内容:

    序号节标题名称主要内容
    1背景说明用自己的话将客户的需求完整描述一遍,不要有任何偏差,表明我方已认真理解过原始需求。
    2已有录像逻辑详细描述系统中目前已有的事件录像逻辑。因为我们本次是不响应该需求,所以对后面不响应有利的内容一定要着重强调(要突出已有录像逻辑的优势)。
    3录像标框逻辑详细描述在事件录像文件中对涉事目标(或区域)进行高亮标框的逻辑。注意这里按照理想逻辑去描述,不用考虑任何外在限制。
    4录像标框难点结合第3点,重点归纳、整理出在录像文件中标框的难点,比如需要对每一路进行解码再去叠加图形、视频画面不能压缩否则影响分辨率等等,这些对设备性能要求非常高,会增加硬件成本。
    5解决方案一 (不计代价去响应)按照理想逻辑去响应,但是要提出前提条件或者代价,比如单台设备分析路数降低到原来的一半,硬件成本是原来的2本。(其实就是要排除这个方案)
    6解决方案二 (可替代方案)提出一种可替代的方案,可以满足客户最开始提出的“有醒目标记提醒用户”。比如当视频录像播放时,可以在播放器上面叠加一个高亮方框,能够大概标记涉事车辆目标(或区域)。同时,强调该方案的优势(比如工作周期短、对成本无影响)。
    7结论其实根据前面的描述,只要认真读完文档的人基本都能知道结论是什么、应该选哪个方案。但是这里还是要书面写上,根据前面的描述,解决方案二有更大的优势,建议采用方案二。

    需要注意的是,“响应”或者“不响应”的决定很多时候不在技术团队或者写这个文档的人手里。虽然文档中的内容应该为最终的结论服务,但是总体上不应该有偏差。

    10 明确文档的目标群体

    文档的目标群体是谁?这个其实应该是写文档最开始就需要明确的东西,面对不同的群体,我们文档的内容、结构包括内容描述程度都会不同。尽早确定读者有助于在构思阶段就明确文档内容边界,哪些该写、哪些不该写,该写的又应该如何去写,这些都是编写文档的大方向。

    展开全文
  • Cisco HA 网络架构调整实施技术文档-老倪
  • 数据中心网络存储容灾技术白皮书----内部文档
  • 计算机三级网络技术考过指南

    万次阅读 多人点赞 2018-03-10 19:18:36
    计算机三级网络技术考过指南 原文链接:计算机三级网络技术考过指南 题库下载链接(50积分是CSDN上调的,不是我上传时设置的。更新版本请大家自行搜索):计算机三级网络技术无纸化考试模拟软件(2018.3) 用...

    计算机三级网络技术考过指南


    原文链接:计算机三级网络技术考过指南

    题库下载链接(50积分是CSDN上调的,不是我上传时设置的。更新版本请大家自行搜索):计算机三级网络技术无纸化考试模拟软件(2018.3)

    用Markdown重写后的带完整标签的版本:计算机三级网络技术考过指南(带完整标签版)


    目录

    计算机三级网络技术考过指南

    前言(必读)

    1.基础准备

    1.1 题库

    1.2 二进制转换

    1.3 基础概念

    1.4 备考建议

    2.选择题(40 道 40 分)

    2.1 第一类选择题

    2.2 第二类选择题

    2.3 第三类选择题

    3.大题(前四道每道10分,最后一道20分)

    3.1 第一道 填地址表

    3.2 第二道 配置路由器

    3.3 第三道 DHCP 报文

    3.4 第四道 sniffer 数据包

    3.5 最后一道

    总结:得分策略


    前言(必读)


    本文档总大小 5MB 左右,请注意流量 
    若手机端浏览不便,请尝试使用电脑浏览器

    这份指南写于我备考三级一周后,因为做了几套题之后感觉这个考试的知识点和题型很固定,而将这些知识点和做法概括总结出来可以帮助以后考试的同学。

    对于没有相应基础的绝大多数同学,如果想考过三级网络技术,首先要克服见到陌生复杂题目的恐惧感。话说回来,其实这些题没有哪一道是真正需要动脑进行复杂思考的,只是知识点没见过,做题的方法不清楚,一旦知道了就能写对。这个考试没有什么含金量,一周的练习基本上足够了。

    我们专业去年上了计算机网络这门课,但跟这个考试的关系不大,只有少量的考点学过。所以我对题目的解析是很业余的,但这也是个好处,正是因为不专业写的就比较直白,适合没有基础的同学参考。

    另外,需要强调一下,本文档以应试为目的指在帮助你通过考试,而非掌握计算机网络技术。

    如果发现有错误或者有其他建议请与我联系,多谢。

    我的邮箱:increasesong@foxmail.com

    请勿修改这份文档 
    欢迎把笔记链接分享给有需要的同学

    后增:为什么考三级? 
    既然二级都过了,再考个三级呗,有的学校可能还有实践学分。别人二级office的很多,你三级看上去就显得厉害一点。

    【重要更新】 
    自2018年3月份全国计算机等级考试(第51次)起,取消了三级获证的前置条件。直接报名考三级就可以了,不再需要对应的二级科目通过。

    为什么三级选网络技术这科? 
    因为我考的时候,查了查发现考这个的最多,考的人越多的科目考试题就可能越标准规范,我对其他的科目也没有特别有兴趣的,所以就考这个了。所以我也只能写网络技术,所以你们选网络技术备考也就最方便。

    要不要考四级? 
    计算机等级考试基本是给非计算机专业设置的考试,所以本来就没什么含金量,我没有考。还想考计算机方面的证,可以去考软考[计算机技术与软件专业技术资格(水平)考试]。 
    听说计算机等级考试四级比三级还简单,也是买题做题就行了。


    1.基础准备

    1.1 题库

    买一本三级网络技术题库或者是题库软件(20 元左右),不需要买更多,总之有成套的题可以做就行。真题目前大概有二十套左右。

    1.2 二进制转换

    应该学过

    网络技术用到的一般是八位二进制数。也就是 0 ~ 255,即 0000 0000 ~ 1111 1111(每四位空一格便于观察)

    我做题前在草稿纸上先这样画


    这样,比如说我看见 1001 1000 这个数,就知道这是 128+16+8 对应的数。

    反过来,十进制转换二进制也可以利用这个简图。还有一些规律,自己做题中摸索吧,你可能会找到更好的方法。

    下面几组记忆一下,做题时会比较方便(不要畏难,做题见多了就记住了)

    二进制十进制
    1000 0000128
    1100 0000192
    1110 0000224
    1111 0000240
    1111 1111255

    1.3 基础概念

    如果是学过计算机网络相关知识的同学可以不看,下面是非专业的不标准的可能还有错的描述,仅仅是为了完全没有基础的同学有个粗略了解。

    计算机网络是一些电脑相互链接组成的,这些电脑叫做主机,可能相距很远,也可能是一间屋子里的。

    就像正常情况下两个人要用同一种语言交流一样。主机之间的联系也要按照相同的标准才行,这些标准叫做协议。因为主机之间的联系是一件复杂的事。所以有多种协议解决不同方面的问题,比如 TCP、BGP、DHCP 等等。

    相距太远的主机之间不能直接联系,就需要一些设备,比如路由器、交换机等等,你只知道他们都是为了主机联系的中间转发设备就行。

    还需要地址,因为没有地址就不知道主机在哪,这个标识主机的就是 IP 地址。 
    IP 地址是类似这样的:10000000.1110000.01000000.10110001,一共 32 位,为了人看起来方便就写成 128.224.64.177 这种点分十进制的形式。

    还有一种叫做 MAC 地址,是标识硬件设备的地址。

    主机还可以广播给整个网络,广播地址是 IP地址 32 位全置 1 的地址,即 255.255.255.255。

    当你访问一个网站,你的电脑先将网址发送给 DNS 服务器(域名解析服务器),这个服务器能将你写的网址域名变成 IP 地址,这样你的电脑就知道想要访问的网页放在哪了。

    上面这些并不能让你真正理解计算机网络(其实我也不是很清楚),主要是让你在见到陌生名词的时候别害怕,有些名词不理解也不会影响做题。

    1.4 备考建议

    这就是个人的方法了,也不一定适合你。

    【1】首先对着一套三级题和答案看一遍,每道题都看答案解析是怎么说的。看答案不必弄懂(当然你要真的全弄懂也很厉害),知道怎么选出来就行,不明白跳过也行。同时也找找看看我笔记里写没写这道题的知识点。

    这一遍是比较简略的,对题目有个简单的印象就够了。但这遍也是比较困难的,因为几乎都是陌生的东西。

    【2】接下来,同时做两三套试题甚至更多套。按着笔记里的知识点做,看到哪个知识点就到这些套题里找,对照着做题来掌握这个知识点。如果笔记里没有提到或者没写详细的就看答案怎么说,实在不明白的还可以跳过。

    这个阶段是需要比较认真的看了,我这个阶段是在写笔记中度过的。经过这个阶段你就能明白哪些知识点考察比较固定,一些题的固定做法是什么,对考试有比较完全的认识了。

    【3】接下来,就把剩下的套题都做了,反正一共就二十套左右。怎么做都行,按套或者按题型什么的自己安排,反正做一遍。如果没时间了,至少把选择题做一遍。

    这一遍就是完善熟练的阶段,还可能有一些我笔记里没写的知识点你也会了。

    【补充】有的同学还是感觉难,那就先把第一道大题和最后一道大题的两个填表都仔细弄会了。这两个表就 20 分到手了。接下来学习可能会感觉踏实一点。


    2.选择题(40 道 40 分)

    根据做题方法不同划为三类

    • 第一类:几乎每套题都考,掌握简单做法即可选出正确答案
    • 第二类:每套题里有 5 道左右,看上去非常复杂的大段配置代码
    • 第三类:从四个选项里选出一项正确或错误的,其中部分知识点是常考的,比较零散

    2.1 第一类选择题

    2.1.1 问传输速度

    OC-3 对应 155.52 Mbps 
    OC-12 对应 622.08 Mbps 
    (显然,这是一道送分题)

    2.1.2 求交换机带宽

    通常是求总带宽 
    例:某交换机有 12 个 10/100 Mbps 电端口和 2 个 1000 Mbps 光端口,所有端口都在全双工状态下,那么总带宽为( ) 
    解:忽略 10/100 中的 10,当成 100 Mbps 就好。12 * 100 + 2 * 1000 = 3200,又因为全双工所以乘以 2 得 6400 Mbps ,即 6.4 Gbps

    有时候求上联端口带宽 
    例:某交换机有 16个100/1000 Mbps 全双工下联端口,那么上联端口带宽至少为( ) 
    解:16 * 1000 * 2 = 32000 Mbps = 32 Gbps,上联一般是下联的 1/20 ,所以至少为 32 除以 20 得 1.6 Gbps

    2.1.3 系统可用性与停机时间

    可用性停机时间
    99.9%≤8.8小时
    99.99%≤53分钟
    99.999%≤5分钟

    也是送分题,但要记准确。比如 53 分钟,有时候会问 55 分钟的情况,要是记成 50 或者大约 1 小时就没法做了。

    2.1.4 写地址块的子网掩码

    例:IP 地址块 59.67.159.125/11 的子网掩码可写为( ) 
    解:不用看 IP 地址,只看 /11 就够了。 
    11 代表子网掩码的前 11 位都是 1 ,所以可以写出子网掩码 11111111.11100000.00000000.00000000 转换为十进制即是 255.224.0.0 
    做题熟练后其实不用写上面那堆 1 和 0 就能选出正确答案。

    2.1.5 网络地址转换 NAT


    会给你一个这样的图,问你 ① ② 是什么 
    只需要知道②和紧挨着它的 S 数字相同,所以②应该是 202.0.1.1,5001 ;同理,①是 10.0.0.1,3342。 
    还有时候会问某个小方框里的 S,D 分别是什么,看上面的图你会发现,上面两个方框和下面两个方框里的数字是对称的,做题时对称一下就写出答案了。

    2.1.6 IP 地址块聚合

    第一种:问聚合后的地址块 
    下面演示三个地址的聚合 

    步骤为:转成二进制;对齐找前多少位是相同的;转回十进制写答案。 
    这样就得出聚合后的地址为:192.67.159.192/26 
    Tips:转换二进制时,因为前三段十进制本来就一样,所以可以只转换最后一段; 
    不要一个一个数有多少位相同的,因为前三段相同就知道有 3 * 8 = 24 位,再加上 2 就是 26。

    第二种:问聚合后可用 IP 数 
    下面两种情况的做法由网友 Yes 补充,十分感谢
    ,之前我写的不当方法已删除。

    【第一种情况】如未来教育上机考试第一套试题第10题: 
    “ IP 地址块 202.113.79.128/27、202.113.79.160/27 和 202.113.79.192/27 经过聚合后可用的地址数为___”

    因为格式都是 xxx.xxx.xxx.xxx/27,本题中“/”后边的数字都是相同的。 
    所以遇到这种题,先把前两个 IP 聚合求出可用地址数,然后单独算出第三个 IP 地址可用地址数,两个地址数相加即正确答案。

    【第二种情况】如未来教育上机考试第三套试题第10题: 
    “ IP 地址块 202.113.79.0/27、202.113.79.32/27、202.113.79.64/26 经过聚合后可用的地址数为___”

    本题中“/”后边的数字前两个是相同的,第三个与前两个不同。 
    所以遇到这种题,直接将三个 IP 聚合得到地址块,然后求出三个 IP 的可用地址数。

    2.1.7 路由表距离更新

    例:R1,R2 是一个系统中采用RIP路由协议的两个相邻路由器,R1 的路由表如(a)所示, 
    R1 收到 R2 发送的报文(b)后,R1 更新后的距离值从上到下依次是( ) 

    解:做法如下 
    步骤为:b距离+1;
    与a距离比较;更新为距离最小的。则更新后的距离值从上到下依次是 0、4、4、3、2

    还经常这样考——给出更新后距离值和(a)中的距离,求(b)报文距离的可能值。 
    规则不变,上面的做法反过去求就行。

    2.1.8 IPv6 地址简化表示

    例:某地址 FF23:0:0:0:0510:0:0:9C5B, 
    可以简化为 FF23::0510:0:0:9C5B,双冒号替代连续出现的 0 位段, 
    不能简化为 FF23::0510::9C5B,因为双冒号只能使用一次, 
    可以简化为 FF23::510:0:0:9C5B,因为 0510 就是 510 , 
    不能简化为 FF23::051:0:0:9C5B,因为 0510 不是 51。

    例:下列 IPv6 地址表示中错误的是( ) 
    A) ::10F:BC:0:0:03DA 
    B) FE::0:45:03/48 
    C) FE31:0:BC:3E:0:050D:BC::03DA 
    D) FF34:42:BC::3E:50F:21:03D 
    解:IPv6 地址是 128 位划分为 8 段的地址,而 C 项不算双冒号那段已经有了 8 段,双冒号又至少压缩一个 0 位段,所以超了 8 段,是错误的。 
    B 中的 /48 做题时可以忽略,写不写没关系。做这种题先看最长的那项有没有超过 8 段。

    2.1.9 数据包

    例:下图是 A 发送的数据包通过路由器转发到 B 的过程示意图,求数据包 3 中的目的IP地址目的MAC地址 

    解:无论哪个数据包,目的 IP 地址就是 B 的 IP 地址,所以数据包 3 的目的 IP 为 129.42.56.216; 
    而目的 MAC 地址就是下一个路由器的 MAC 地址,数据包 3 的下一个路由器是 R3,所以数据包 3 的目的 MAC 地址是 00d0.63c3.3c41。

    2.1.10 三种备份

    备份速度从快到慢:增量备份、差异备份、完全备份(备份越详细越慢) 
    恢复速度从快到慢:完全备份、差异备份、增量备份(和上面顺序相反,也好理解,备份时详细的恢复快) 
    空间占用从多到少:完全备份、差异备份、增量备份(备份越详细占用空间越多) 
    题目通常问你其中某一种的顺序。

    2.2 第二类选择题

    这部分将进一步体现本指南的优越性 

    我们先来看一道“第二类选择题”的四个选项,不需要看题。

    -从这开始 


    -到这结束 
    看起来异常复杂,但这是在我完全不懂知识点的情况下就能选对的题。 
    下面要讲的是技巧方法,不是知识点,适用于这类题 
    首先,你需要来回观察这四个选项,找出他们的不同点。可能是两句颠倒的代码,可能是一个单词一个数,也可能是其他的。 

    这是我把他们不同的地方做了荧光标记 
    首先一眼看上去,C 项的大段数字位置和其他三项不一样,所以排除 C; 
    然后,看蓝色的数字,只有 A 项和其他三项不一样,所以排除 A; 
    最后,看绿色的地方,只有 B 项少了一句,所以排除 B; 
    选 D。

    悟性比较高的同学肯定已经明白了,为了大家更好的体会,再换一道题演示: 
    不先写选项了,直接展示标记后的 

    方法一样,找出不同点,然后“少数服从多数”,最后选 C。

    下面一道题自己练习一下 

    答案是C。

    说出来你可能不信,这种方法可以解决80%以上的“第二类选择题”, 
    有的题可能没办法排除掉三个选项,这时候就要结合一下题目内容推断来做或者蒙。

    2.3 第三类选择题

    下面列举的是高频考点,需要记忆,但不要死记。一开始可能感觉很陌生很难,做题碰见得多了就熟悉了能迅速选出答案。

    2.3.1 弹性分组环 RPR

    • 每一个节点都执行SRP公平算法
    • 与 FDDI 一样使用双环结构
    • 传统的 FDDI 环,当源结点向目的节点成功发送一个数据帧之后,这个数据帧由源结点从环中回收
    • 而 RPR 环,当源结点向目的节点成功发送一个数据帧之后,这个数据帧由目的结点从环中回收
    • RPR 采用自愈环设计思路,能在 50ms 时间内隔离故障结点和光纤段
    • 两个 RPR 结点间的裸光纤最大长度可达 100公里
    • RPR 的外环(顺时针)和内环(逆时针)都可以用于传输分组和控制分组

    2.3.2 无线接入技术

    • 主要有 WLAN、WiMAX、WiFi、WMAN 和 Ad hoc ( WiFi 肯定知道,记住无线技术一般是W开头的,但有个特殊的A开头)
    • APON 不是无限传输技术,这个经常是迷惑项

    2.3.3 广域网 QoS

    考的时候通常只写英文缩写,下面写上中文名是为了方便你记忆(其他的地方也应该养成粗略推测英文缩写的习惯)

    • 主要的技术有 资源预留(RSVP)、区分服务(DiffServ)、多协议标记交换(MPLS

    2.3.4 接入技术特征

    • ASDL 使用一对铜双绞线,具有非对称技术特性,上行速率 64 kbps~640 kbps,下行速率 500 kbps~7 Mbps
    • 采用 ADSL 技术可以通过 PSTN 接入 Internet
    • Cable Modom(电缆调制解调器)利用频分复用的方法将信道分为上行信道和下行信道,把用户计算机与有线电视同轴电缆连接起来
    • 光纤传输距离可达 100km 以上(这个知道光纤很远就行了)

    2.3.5 服务器技术

    • 热插拔功能允许用户在不切断电源的情况下更换硬盘、板卡等(不能更换主板卡)
    • 集群技术中,如果一台主机出现故障,不会影响正常服务,但会影响系统性能
    • 磁盘性能表现在储存容量和 I/O 速度(I/O=input/output 即输入/输出,学过计算机应该知道)
    • 服务器总体性能取决于 CPU 数量、CPU 主频、系统内存、网络速度

    2.3.6 综合布线

    • 双绞线可以避免电磁干扰
    • 嵌入式插座用来连接双绞线
    • 多介质插座用来连接铜缆和光纤,满足用户“光纤到桌面”的需求
    • 建筑群子系统可以是多种布线方式的任意组合,地下管道布线是最理想的方式
    • STP 比 UTP 贵、复杂、抗干扰能力强、辐射小
    • 水平布线子系统电缆长度在 90 m 以内
    • 干线线缆铺设经常采用点对点结合和分支结合两种方式

    2.3.7 BGP 协议

    • BGP 是边界网关协议,而不是内部网关协议(所以遇到问某两个自治系统之间使用什么协议,就选 BGP)
    • BGP 交换路由信息的节点数不小于自治系统数
    • 一个 BGP 发言人使用 TCP(不是UDP)与其他自治系统的 BGP 发言人交换信息
    • BGP 采用路由向量协议,而 RIP 采用距离向量协议
    • BGP 发言人通过 update 而不是 noticfication 分组通知相邻系统
    • open 分组用来与相邻的另一个 BGP 发言人建立关系,两个 BGP 发言人需要周期性地交换 keepalive 分组来确认双方的相邻关系

    2.3.8 RIP 协议

    • RIP 是内部网关协议中使用最广泛的一种协议,它是一种分布式、基于距离向量的路由选择协议,要求路由器周期性地向外发送路由刷新报文
    • 路由刷新报文主要内容是由若干个(V,D)组成的表。V 标识该路由器可以到达的目标网络(或目的主机);D 指出该路由器到达目标网络(或目标主机)的距离。距离D对应该路由器上的跳数。其他路由器在接收到某个路由器的(V,D)报文后,按照最短路径原则对各自的路由表进行刷新
    • 使用 RIP v1 路由协议在配置网络地址时无须给定子网掩码

    2.3.9 OSPF 协议

    • OSPF 是内部网关协议的一种,每个区域有一个 32 位的标识符,区域内路由器不超过 200 个
    • 区域内每个路由器包含本区域的完整网络拓扑,而不是全网的情况(拓扑的意思是链接形式和位置关系之类的)
    • 链路状态“度量”主要指费用、距离、延时、带宽等
    • OSPF 采用洪泛法交换链路状态信息

    2.3.10 集线器

    • 工作在物理层,连接到一个集线器的所有结点共享一个冲突域
    • 集线器不是基于 MAC 地址完成数据转发,而是用广播的方法
    • 在链路中串接一个集线器可以监听数据包
    • 每次只有一个结点能够发送数据,而其他的结点都处于接收数据的状态。这些结点执行CSMA/CD介质访问控制方法

    2.3.11 交换机

    • 是一种工作在数据链路层的网络设备,基本功能是维护一个表示 MAC 地址和交换机端口对应关系的交换表
    • 在源端口与目的端口间建立虚链接
    • 具有三种交换模式:1.快速转发直通式,接收到前 14 个字节就转发数据;2.碎片丢弃式,缓存前 64 个字节;3.储存转发式,转发之前读取整个帧
    • 三层交换机是具有部分路由器功能的交换机,用于加快大型局域网内部的数据交换

    2.3.12 路由器

    • 丢包率是衡量路由器超负荷工作时的性能指标之一
    • 背板能力决定路由器吞吐量
    • 传统路由器一般采用共享背板的结构,高性能路由器一般采用交换式的结构
    • 突发处理能力不是以最小帧间隔值来衡量的
    • 语音视频业务对延时抖动要求较高
    • 高端路由器应达到:无故障连续工作时间大于 10 万小时;故障恢复时间小于 30 分钟;切换时间小于 50 毫秒

    2.3.13 IEEE 802.11

    • IEEE 802.11 最初定义的三个物理层包括了两个扩频技术和一个红外传播规范,无线频道定义在 2.4GHz ISM频段,传输速度 1~2 Mbps
    • 802.11b 最大容量 33 Mbps,将传输速率提高到 11 Mbps802.11a802.11g 将传输速率提高到 54 Mbps
    • IEEE 802.11d 是当前最流行的 STP(生成树协议)标准
    • IEEE 802.11b 标准使用的是开放的 2.4GHZ 频段,无须申请就可以直接使用

    2.3.14 蓝牙

    • 同步信道速率 64 kbps,跳频速率为 1600 次/s
    • 工作在 2.402 ~ 2.480 GHz 的 ISM 频段
    • 非对称的异步信道速率为 723.2 kbps / 57.6 kbps
    • 对称的异步信道速率为 433.9 kbps
    • 发射功率为100mw时,最大传输距离为100米

    2.3.15 Serv-U FTP 服务器

    • 使用动态 IP 地址时,服务器 IP 地址应配置为空,而不是 0.0.0.0。(为空代表全部 IP 地址)
    • 每个 Serv-U FTP 服务器中的虚拟服务器由 IP 地址和端口号唯一识别,而不是依靠 IP 地址
    • 向服务器中添加“anonymous”,系统自动判定为匿名。而不是创建新域时自动添加一个“anonymous”匿名
    • 服务器最大用户数是指服务器允许同时在线的最大用户数量
    • 用户上传下载选项要求 FTP 客户端在下载信息的同时也要上传文件

    2.3.16 DNS 服务器

    • 允许客户机在发生更改时动态更新其资源记录
    • DNS 服务器中的根服务器被自动加入到系统中,不需管理员手工配置
    • 转发器是网络上的 DNS 服务器(不是路由器),用于外域名的 DNS 查询
    • 使用 nslookup 命令可以测试正向和反向查找区域
    • 主机记录的生存时间指该记录被客户端查询到,放在缓存中的持续时间

    2.3.17 DHCP 服务器

    • 负责多个网段 IP 地址分配时需配置多个作用域
    • 添加保留时需在 DHCP 客户机上获得其 MAC 地址信息(添加排除时不需从客户端获得 MAC 地址)
    • 不添加排除和保留时,服务器可将地址池内的 IP 地址动态指派给 DHCP 客户机
    • 地址池是作用域应用排除范围之后剩余的 IP 地址
    • 保留是指确保 DHCP 客户端永远可以得到同一 IP 地址,客户端可以释放该租约
    • 收到非中继转发的“DHCP发现”消息时,选择收到该消息的子网所处的网段分配 IP 地址

    2.3.18 WWW 服务器

    • Web 站点可以配置静态和动态 IP 地址
    • 访问 Web 站点时可以使用站点的域名或站点的 IP 地址
    • 建立 Web 站点时必须为该站点指定一个主目录好,也可以是虚拟的子目录
    • Web 站点的性能选项包括影响带宽使用的属性和客户端 Web 连接的数量
    • 在 Web 站点的主目录选项卡中,可配置主目录的读取和写入等权限

    2.3.19 Wmail 邮件服务器

    • Winmail 用户不可以使用 Outlook 自行注册新邮箱
    • Winmail 快速设置向导中创建新用户时,输入新建用户的信息,包括用户名、域名及用户密码(不是系统邮箱的密码)
    • 建立路由时,需在 DNS 服务器中建立该邮件服务器主机记录和邮件交换器记录
    • 邮件系统工作过程:1.用户在客户端创建新邮件;2.客户端软件使用 SMTP 协议将邮件发到发件方的邮件服务器;3.发件方邮件服务器使用 SMTP 协议将邮件发到收件方的邮件服务器;4.接收方邮件服务器将收到邮件储存待处理;5.接收方客户端软件使用 POP3 或 IMAP4 协议从邮件服务器读取邮件
    • 邮件交换器记录的配置只能在服务器上,不能通过浏览器配置
    • Winmail 支持基于 Web 方式的访问和管理,管理工具包括系统设置、域名设置等
    • 发送邮件时通常采用 SMTP 协议,接收邮件时通常采用 POP3 或者 IMAP 协议。Winmail 用户使用浏览器查看邮件会使用到 HTTP 协议

    2.3.20 PIX 防火墙

    • 监视模式中,可以更新操作系统映像和口令恢复
    • 防火墙开机自检后处于非特权模式,输入“enable”进入特权模式

    2.3.21 可信计算机评估准则

    • 没有保护就是 D类,不能用于多用户环境下重要信息处理
    • 提到用户自主保护就是 C类

    2.3.22 入侵防护系统

    • HIPS 基于主机的入侵防护系统,安装在受保护的主机系统中
    • NIPS 基于网络的入侵防护系统,布置在网络出口
    • AIPS 基于应用的入侵防护系统,部署于应用服务器前端 
      (他们的首字母 H、N、A 即 Host、Net、Application)

    2.3.23 网络攻击

    • DDos 攻击:利用已经攻占的多个系统向目标攻击,被害设备面对大量请求无法正常处理而拒绝服务
    • SYN Flooding 攻击:利用 TCP 三次握手过程,使受害主机处于会话请求之中,直至连接超时停止响应
    • SQL 注入攻击:属于利用系统漏洞,防火墙(基于网络的防护系统)无法阻断
    • Land攻击:向某个设备发送数据包,并将数据包的源 IP 地址和目的地址都设置成攻击目标的地址
    • 基于网络的防护系统也无法阻断 Cookie篡改 和 DNS欺骗
    • Tear doop 、Smurf 攻击可以被路由器阻止

    2.3.24 无线局域网设备

    • 无线接入点(AP):集合无线或者有线终端(类似于集线器和交换机),负责频段管理和漫游工作(SSID 是客户端设备用来访问接入点的唯一标识)
    • 无线路由器:具有无线路由功能和 NAT 功能的 AP ,可用来建立小的无线局域网。
    • 无线网桥:用于连接几个不同的网段,实现较远距离的无线通信(网桥最重要的维护工作是构建和维护 MAC 地址表)
    • 无线网卡:实现点对点通信,安装于各终端节点

    2.3.25 VLAN

    • VLAN name 用 1~32 个字符表示,它可以是字母和数字。不给定名字的 VLAN 系统自动按缺省的 VLAN 名(VLAN00xxx)
    • VLAN ID的取值范围是 1~4094。其中无法执行“no vlan 1”命令

    2.3.26 Cisco 路由器上的存储器

    • Flash 主要用于存储当前使用的操作系统映像文件和微代码
    • NVRAM 主要存储启动配置文件或备份配置文件
    • RAM 主要存储路由表、快速交换缓存、ARP 缓存、数据分组缓冲区和缓冲队列、运行配置文件等
    • ROM 主要用来永久保存路由器的开机诊断程序、引导程序和操作系统软件

    2.3.27 防火墙对应端口的连接方案

    pix525 在缺省情况下

    • ethernet0 被命名为外部接口 outside,安全级别是 0
    • ethernet1 被命名为内部接口 inside,安全级别是 100
    • ethernet2 被命名为中间接口 dmz,安装级别是 50

    2.3.28 STP 生成树结构

    • 无论是根的确定,还是树状结构的生成,主要依靠 BPDU 提供的信息
    • Bridge ID 由两个字节的优先级值和 6 个字节的交换机 MAC 地址组成,优先级取值范围是0~61440,增值量是4096,优先值越小,优先级越高
    • MAC 地址最小的为根网桥
    • BPDU 数据包有两种类型,配置 BPDU 不超过 35 个字节,拓扑变化通知 BPDU 不超过 4 个字节

    2.3.29 Catelyst 配置命令

    • Catelyst3548 设置时间的格式是:clock set 小时:分钟:秒 日 月 年
    • Catelyst6500 设置时间的格式是:set time 星期 月/日/年 小时 分钟 秒

    2.3.30 其他

    有一些知识点因为考频不是很高或者比较复杂,就不写了,自己做题时积累或者放弃。

    在遇到陌生题目时,试着结合常识思考推断。 
    比如说,某网络计划有三台计算机,但只有一个 VALN 端口,需要的设备是() 
    这里需要的其实就是路由器,联想宿舍上网的情况

    3.大题(前四道每道10分,最后一道20分)

    3.1 第一道 填地址表

    例:

    IP 地址115.151.29.58
    子网掩码255.240.0.0
    地址类别【1】
    网络地址【2】
    直接广播地址【3】
    主机号【4】
    子网内第一个可用 IP 地址【5】

    解:

    IP 地址类别IP 首段范围
    A类1~127
    B类128~191
    C类192~223

    则【1】填:A类 
    对 IP地址和子网掩码做如下处理: 

    熟练以后其实没有看起来这么麻烦,做两道就会了。少数情况会给出表格的后两项,让你补充前五项,原理其实是一样的,倒推一下。 
    这道题是大题里面考点最稳定的一道,必须掌握。

    3.2 第二道 配置路由器

    例: 



    一般就考这些空,做几道之后就能填上大部分,小部分可以放弃。

    3.3 第三道 DHCP 报文

    例: 
     

    3.4 第四道 sniffer 数据包

    例1: 

    根据图中信息回答以下问题

    1. 该主机执行的命令是( ),该主机配置的 DNS 服务器的 IP 地址是( ) 
      解:看图中有 ICMP 几个字母,还有个邮箱地址,所以命令是 tracert mail.tj.edu.cn,DNS服务器的 IP 地址是第一行第二个地址 202.113.64.3(只要这么问,就基本是第一行第二个)
    2. 图中 ② ③ ④ 处分别是( ) 
      解:② 处前面 Protocol 意思是协议,协议就是 ICMP;③ 写源地址,就是第一行第一个地址 202.113.64.137;④ Destination address 意思是目的地址,这个位置应该写题中有的网址 mail.tj.edu.cn。

    例2: 

    根据图中信息回答以下问题

    1. 该主机配置的域名服务器的 IP 地址是( ) 
      解:和上题一样,还是第一行第二个 202.113.64.3
    2. ① 处的信息应该是( ) 
      解:填 ACK。一般都是有一个 SEQ,后再有一个 ACK,接着再有 SEQ,再有 ACK。他们的数值每次 +1,有时候会根据上下行填数字。
    3. 主机 202.38.97.197 是( )服务器,其提供服务的端口是( ) 
      解:因为图中有 FTP 几个字母,所以这是 ftp服务器;提供服务的端口是 21(DNS服务器的端口是 53,邮件服务器的端口是 6)
    4. 该主机执行的命令是( ) 
      解:填 ftp ftp.pku.edu.cn(网站在图中,前面加 ftp)

    这道题通常就考上面这两种模式,一种有 ICMP 对应 tracert mail.tj.edu.cn 的,一种有 FTP 对应 ftp ftp.pku.edu.cn 的。 
    如果让写 URL 就是 https :// mail.tj.edu.cn 或者 ftp :// ftp.pku.edu.cn(中间都没有空格,我为了格式不自动转换成链接才加的)

    第四道大题也是考点很不稳定的一道。

    3.5 最后一道

    3.5.1 填表部分(12分)

    目的网络/掩码长度输出端口
    【1】S0(直接连接)
    【2】S1(直接连接)
    【3】S0
    【4】S1
    【5】S0
    【6】S1

    解:图中最上方的 RG 有两个分支,左侧分支是 S0 ,有末段为 129 和 130 的两个地址,进行聚合: 

    所以【1】处填 192.168.6.128/30 ;同理【2】处是 192.168.6.133 和 192.168.6.134 聚合,结果为 192.168.6.132/30。 
    做题实际上只要写出最后那段就行,前面选择题时已经说过了。

    【3】是 RE 下方 192.168.6.65、192.168.6.66、192.168.6.67 三个子网的聚合; 
    【4】是 RF 下方 192.168.6.80、192.168.6.81、192.168.6.82 三个子网的聚合; 
    【5】是 左下方 192.168.64.0/24、192.168.65.0/24、192.168.66.0/24、192.168.67.0/24 四个地址块的聚合; 
    【6】是 右下方 192.168.96.0/24、192.168.97.0/24、192.168.98.0/24、192.168.99.0/24 四个地址块的聚合;

    在【3】【4】两空聚合时往往需要多注意 


    最终答案应为 
    【3】192.168.6.64/29 
    【4】192.168.6.64/27 
    【5】192.168.64.0/22 
    【6】192.168.96.0/22

    这个填表是必拿分的题。

    3.5.2 中间部分(2~4分)

    这部分考点很不固定,下面是频率稍高的,考试这几分放弃也可以

    • 问在某路由器上,最多还可链接的路由器数量是多少。如果所在子网掩码是 /29 就填 3,是 /28 就填 11。
    • 问串接一种设备能监听路由器之间的流量,写 TAP
    • 问串接一种设备能提供安全保护,一般是 IPS
    • 问防火墙访问外网设置,分别填 nat 和 global

    3.5.3 计算子网掩码和 IP 段部分(4~6分)

    例:将 192.168.66.128/25 划分为三个子网,子网 1 能容纳 50 台主机,子网 2 和 3 能分别容纳 20 台主机……求他们的子网掩码和可用 IP 地址段

    解:题中说多少台主机的具体数字不重要,刚好大于那个数字的 2 的 n 次方的数才重要。 
    比如 50 台,就是 64,是 2 的 6 次方。所以子网掩码后 6 位都是 0 (前面全是 1 ),11111111.11111111.11111111.11000000 ,最后填空写 255.255.255.192 
    同理 20 台,就是 32,是 2 的 5次方。所以子网掩码后 5位都是 0,最后填空 2 和 3 的子网掩码都是 255.255.255.224

    可用 IP 地址从题目所给的那个数 +1 开始,本题是 192.168.66.129(因为太乱,下面只写末段数字,反正前面都一样) 
    从 129 开始,因为子网 1 的那个数字是 64 ,所以到 190 结束(129+64-3=190,不用管为什么,结束都是 -3) 
    下一段从 193 开始(190+3=193,不用管为什么,开始都是 +3),因为子网 2 的那个数字是 32 ,所以到 222 结束(193+32-3=222) 
    再下一段从 225 开始(222+3=225),因为子网 3 的那个数字也是 32 ,所以到 254 结束(225+32-3=254) 
    写成答案分别为: 
    子网 1 的可用 IP 地址段为 192.168.66.129~192.168.66.190 
    子网 2 的可用 IP 地址段为 192.168.66.193~192.168.66.222 
    子网 3 的可用 IP 地址段为 192.168.66.225~192.168.66.254

    看起来上面写了一大堆,其实明白了就很简单,这个也是必拿分的题。


    总结:得分策略

    目标是通过考试,也就是 60 分

    • 选择题部分:前面一共写了 10 个做法固定的“第一类选择题”,还有 19 个“第三类选择题”的高频考点,加上“第二类选择题”。选择题得分在 20 分以上是很保守的估计,没有意外的话选择题应该在 25 分以上。
    • 大题部分:第一道的 10 分是必得的,最后一道除了中间部分后有 16 分是必得的。从前面写的也能看出第二、三、四道大题的考点不是特别固定,所以尽量写,填对一半就很好了(其实也没有那么难),所以这三道大题 30 分目标是得 15 分。

    来算一下 20 + 10 + 16 + 15 = 61 分。实际情况当然可能会出现意外,比如三道大题没得到 15 分,但刚才也没算你蒙对的题得分。

    多练习几套题,来回对照着知识点就熟悉了,这个考试题型固定,含金量不高,难度不大,不用害怕。题库软件有很多缺陷,比如大题评分不准、填空题缺少空格,甚至是答案错误。自己要注意核对。这份文档并未涵盖所有知识点,多做一套题就多了一分考过的把握。

    (未来教育题库的第九套题有点特殊,看起来像 13 年考试改革之前的老题,和其他套的题有很大差别,留意一下。)

    完。 
    2017/3/19 初版 
    2017/4/25 修改了前言与总结 
    2017/5/12 修改内容略 
    2017/5/16 刚查到成绩,84分,本来还以为能上90… 
    2017/8/23 补充了备考建议 
    2017/9/12 改正了 2.1.6 IP地址块聚合 
    2017/9/21 增加了 2.3 中近一半的内容,感谢佚名进行的补充 
    2017/12/18 考试获证条件改变,三级不再需要对应的二级科目通过

     

    展开全文
  • 自己整理编写的关于区块链技术的介绍性PPT文档,主要内容为...注意:本PPT文档只是关于区块链技术的一个入门级介绍性PPT文档文档里面有区块链的一些网络资源链接地址,可以供爱好者进一步了解或学习区块链相关知识。
  • 计算机、程序员其实是一门“科学”工作,它不只是增删改查,它涉及到很多点。只有“想清了才能少返工”,因此本人以最常碰到以及最实用、马上拿来可以用为出发点讲透一篇通用设计文档需要怎么写。
  • 网络检索系统的全程文档包含: 管理文档 开发文档 技术文档 演示文档
  • ACE网络框架中文技术文档,由马维达译的,分上、中、下三册
  • 如何写好一篇技术文档

    万次阅读 多人点赞 2022-01-26 13:14:32
    如何写好一篇技术文档 周智 2022/1/20 参加工作时间久一点的工程师应该有这样一个体会:自己平时代码写得再多再好,可一旦要用文档去描述或者表达某一个事情或者问题时,都感觉非常困难,无从下手,不知道自己该...
  • 第七届“中国高校计算机大赛-网络技术挑战赛” “B-EP1 华为乾坤®网络数字世界应用开发”赛项说明 一、 赛项来源企业 华为技术有限公司 二、 赛项名称 华为乾坤®网络数字世界应用开发 三、 赛项背景 华为乾坤®...
  • 这是作者网络安全自学教程...这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。基础性文章,希望对您有所帮助~
  • 几种常见的网络攻防技术 前言 一、SQL注入 二、XSS 攻击 1.反射型 2.存储型 三、CSRF 攻击 四、DDoS 攻击 五、DNS劫持 六、JSON 劫持 七、暴力破解 文章同样适用于非专业的朋友们,全文通俗化表达,一定能找到你亲身...
  • 信息安全的五个基本要素,即需保证信息的保密性、真实性、完整性...对纸质文档信息,我们只需要保护好文件,不被非授权者接触即可。而对计算机及网络环境中的信息,不仅要制止非授权者对信息的阅读。也要阻止授权者...
  • 文档隐写溯源技术分析

    千次阅读 2021-09-25 23:07:44
    在如今的信息时代,信息技术的迅速发展使原本以纸张形式保存的大量重要文档转变为以电子文档形式保存。得益于电子文档的创建快速、易于存储、方便管理、传播共享等优点,许多企业、政府单位的日常文件甚至机密信息都...
  • ODOO 技术文档

    千次阅读 2018-04-02 20:58:17
    odoo技术文档 Odoo 大V社 Odoo文档交流的博客 odoo框架 Odoo 12开发之业务逻辑 – 业务流程的支持 Developer Book odoo10源码win系统开发环境安装图文教程 odoo10翻译文档 Odoo10 开发者文档(3)--建立一个...
  • 实战:TCP全连接队列溢出 实战:TCP半连接队列溢出 TCP参数 TCP三次握手的性能提升 TCP四次挥手的性能提升 TCP传输数据的性能提升 需要获取这份310页图解网络文档的小伙伴可以直接点赞+关注后私信(网络)即可获取...
  • 利用amWiki轻松打造知识库或技术文档系统 1. 我为什么选择amWiki 1.1. 用什么来写? 1.2. 用什么系统? 1.3. amWiki的优点 1.4. amWiki的架构 2. 如何使用amWiki 2.1. 获取amWiki 2.2. 如何开始一个新文库 2.3. ...
  • 前几天看到公司一个大神看技术文档,打眼瞟了一下,全是英文的表示直接看看不到。但是大神不一样,人家是硕士哦,英文杠杠的,但是自己心里也想看看,所以就让大神把这些文档发我了一下,具体文档介绍 Algorithms 4...
  • 技术方案SOW工作文档模板

    千次阅读 2020-12-05 20:29:37
    技术方案SOW工作文档模板 本文主要是阐述写一个项目交付技术方案SOW工作的模板,方便定义在写sow文档时的大体框架,以便于形成整体思路。 第一章:项目背景 这个章节主要阐述某项目的背景情况,方便后面的人快速了解...
  • 网络存储技术

    千次阅读 2022-04-22 09:22:56
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一、HCIA存储技术趋势与智能存储组件 1、存储技术趋势 1.1 数据与信息 什么是数据? 数据是对所有事物的数字表示。 数据的种类 ①结构化数据 ②...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 511,848
精华内容 204,739
关键字:

网络技术文档