精华内容
参与话题
问答
  • 学会了这些技术,你离BAT大厂不远了

    万次阅读 多人点赞 2019-08-26 19:28:29
    每一个程序员都有一个梦想,梦想着能够进入阿里、腾讯、字节跳动、百度等一线互联网公司,由于身边的环境等原因,不知道 BAT 等一线互联网公司使用哪些技术?或者该如何去学习这些技术?或者我该去哪些获取这些技术...

    每一个程序员都有一个梦想,梦想着能够进入阿里、腾讯、字节跳动、百度等一线互联网公司,由于身边的环境等原因,不知道 BAT 等一线互联网公司使用哪些技术?或者该如何去学习这些技术?或者我该去哪些获取这些技术资料?没关系,平头哥一站式服务,上面统统不是问题。平头哥整理了 BAT 等一线大厂的必备技能,并且帮你准备了对应的资料。对于整理出来的技术,如果你掌握的不牢固,那就赶快巩固,如果你还没有涉及,现在就立马学习起来吧。

    文章很长,越到后面越精彩,如果文章对你有帮助,欢迎点赞转发一条龙服务

    基础篇

    Java

    代码规范

    编辑工具

    数据结构与算法

    设计模式

    多线程

    HttpClient

    性能优化

    • 《Java性能优化权威指南》(书籍)
    • 《大话java性能优化》(书籍)

    数据库

    Mysql

    Redis

    MOngodb

    网络协议

    Linux 系统

    Java Web

    JDBC

    Servlet

    spring

    mybatis

    Hibernate

    Jpa

    SpringBoot

    文档工具

    JVM虚拟机

    消息中间件

    Kafka

    RabbitMQ

    RocketMQ

    ActiveMQ

    构建管理工具

    Maven

    Git

    Svn

    Gradle

    安全中间件

    Shiro

    Security

    搜索引擎中间件

    Lucene

    Solr

    ElasticSearch

    容器化技术

    docker

    kubernetes

    分布式服务架构

    SpringCloud

    Dubbo

    分库分表

    Zookeeper

    Nginx

    定时任务框架

    JSON Web Token

    OAuth

    分布式架构

    面试相关

    如果有侵权,请及时联系,即删

    最后

    平头哥已经收集很多精品网课、书籍,已分享在网盘中,并且将持续更新。欢迎扫码关注微信公众号:「平头哥的技术博文」领取,一起进步吧。
    平头哥的技术博文

    展开全文
  • JavaWeb基础核心技术

    万人学习 2015-06-10 09:46:12
    本Java视频教程涵盖JavaWEB 企业级开发所需的Servlet、JSP、MVC 设计模式、EL 表达式、JavaBean、国际化、Cookie和HttpSession、JavaMail等全部核心技术。  授课过程中通过多个企业级案例,将各知识点融会贯通。
  • RAID技术全解图解-RAID0、RAID1、RAID5、RAID100

    万次阅读 多人点赞 2018-07-31 18:15:32
    图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100……  RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆。这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念...

    图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100……

      RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆。这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征、基本原理、关键技术、各种等级和发展现状进行了全面的阐述,并为用户如何进行应用选择提供了基本原则,对于初学者应该有很大的帮助。

    一、RAID 概述

      1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念 [1] ,即廉价冗余磁盘阵列( Redundant Array of Inexpensive Disks )。由于当时大容量磁盘比较昂贵, RAID 的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。随着磁盘成本和价格的不断降低, RAID 可以使用大部分的磁盘, “廉价” 已经毫无意义。因此, RAID 咨询委员会( RAID Advisory Board, RAB )决定用 “ 独立 ” 替代 “ 廉价 ” ,于时 RAID 变成了独立磁盘冗余阵列( Redundant Array of Independent Disks )。但这仅仅是名称的变化,实质内容没有改变。

      RAID 这种设计思想很快被业界接纳, RAID 技术作为高性能、高可靠的存储技术,已经得到了非常广泛的应用。 RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。 D. A. Patterson 等的论文中定义了 RAID1 ~ RAID5 原始 RAID 等级, 1988 年以来又扩展了 RAID0 和 RAID6 。近年来,存储厂商不断推出诸如 RAID7 、 RAID10/01 、 RAID50 、 RAID53 、 RAID100 等 RAID 等级,但这些并无统一的标准。目前业界公认的标准是 RAID0 ~ RAID5 ,除 RAID2 外的四个等级被定为工业标准,而在实际应用领域中使用最多的 RAID 等级是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10。

      从实现角度看, RAID 主要分为软 RAID、硬 RAID 以及软硬混合 RAID 三种。软 RAID 所有功能均有操作系统和 CPU 来完成,没有独立的 RAID 控制 / 处理芯片和 I/O 处理芯片,效率自然最低。硬 RAID 配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,但成本很高。软硬混合 RAID 具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序来完成,性能和成本 在软 RAID 和硬 RAID 之间。

      RAID 每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用户的数据应用特点,综合考虑可用性、性能和成本来选择合适的 RAID 等级,以及具体的实现方式。

    二、基本原理

      RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是 [2] :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID (即 RAID0 )。

      RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。大多数 RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性, Redundant 也由此而来。

      这里要提一下 JBOD ( Just a Bunch of Disks )。最初 JBOD 用来表示一个没有控制软件提供协调控制的磁盘集合,这是 RAID 区别与 JBOD 的主要因素。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。

      RAID 的两个关键目标是提高数据可靠性和 I/O 性能。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。有些 RAID 等级允许更多地 磁盘同时发生故障,比如 RAID6 ,可以是两块磁盘同时损坏。在这样的冗余机制下,可以用新磁盘替换故障磁盘, RAID 会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。数据分散保存在 RAID 中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合 I/O 带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。比如, RAID1 存储空间利用率仅有 50% , RAID5 会损失其中一个磁盘的存储容量,空间利用率为 (n-1)/n 。

      磁盘阵列可以在部分磁盘(单块或多块,根据实现而论)损坏的情况下,仍能保证系统不中断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但是性能方面会有一定程度上的降低。一些磁盘阵列在添加或删除磁盘时必须停机,而有些则支持热交换 ( Hot Swapping ),允许不停机下替换磁盘驱动器。这种高端磁盘阵列主要用于要求高可能性的应用系统,系统不能停机或尽可能少的停机时间。一般来说, RAID 不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、意外删除等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于 RAID 系统来身,数据都是完好的,没有发生丢失。所以,数据备份、灾 备等数据保护措施是非常必要的,与 RAID 相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。

      RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity ) [3][4][5] 。镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。 不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

      RAID 思想从提出后就广泛被业界所接纳,存储工业界投入了大量的时间和财力来研究和开发相关产品。而且,随着处理器、内存、计算机接口等技术的不断发展, RAID 不断地发展和革新,在计算机存储领域得到了广泛的应用,从高端系统逐渐延伸到普通的中低端系统。 RAID 技术如此流行,源于其具有显著的特征和优势,基本可以满足大部分的数据存储需求。总体说来, RAID 主要优势有如下几点:

    (1) 大容量

      这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储容量就可以达到 PB 级,大多数的存储需求都可以满足。一般来说, RAID 可用容量要小于所有成员磁盘的总容量。不同等级的 RAID 算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之间。

    (2) 高性能

       RAID 的高性能受益于数据条带化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,性能往往很有 限,容易成为系统性能的瓶颈。通过数据条带化, RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。

    (3) 可靠性

      可用性和可靠性是 RAID 的另一个重要特征。从理论上讲,由多个磁盘组成的 RAID 系统在可靠性方面应该比单个磁盘要差。这里有个隐含假定:单个磁盘故障将导致整个 RAID 不可用。 RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。 比起镜像 50% 的冗余开销 ,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。 RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不 会导致数据的丢失,不影响系统的连续运行。

    (4) 可管理性

      实际上, RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部主机系统来说, RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。 从用户应用角度看,可使存储系统简单易用,管理也很便利。 由于 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。

    三、关键技术

    3.1 镜像

      镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术 典型地 将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。

      镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。另外,镜像通过“ 拆分 ”能获得特定时间点的上数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。

    3.2 数据条带

      磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。这对大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。而通过条带技术,可获得数倍与顺序访问的性能提升。

      数据条带技术的分块大小选择非常关键。条带粒度可以是一个字节至几 KB 大小,分块越小,并行处理能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存取随机性和并发处理能力之间进行平衡,以争取尽可能高的整体性能。
    数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。

    3.3 数据校验

      镜像具有高安全性、高读性能,但冗余开销太昂贵。数据条带通过并发性来大幅提高性能,然而对数据安全性、可靠性未作考虑。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。

      采用数据校验时, RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。

      海明校验码和 异或校验是两种最为常用的 数据校验算法。海明校验码是由理查德.海明提出的,不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。

    四、RAID 等级

    4.1 JBOD

      JBOD ( Just a Bunch Of Disks )不是标准的 RAID 等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。 JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。 JBOD (如图 1 )的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据。 JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护。它只是简单提供一种扩展存储空间的机制, JBOD 可用存储容量等于所有成员磁盘的存储空间之和。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。


    图1 JBOD

    4.2 标准 RAID 等级

      SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。标准等级是最基本的 RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准 RAID 可以组合,即 RAID 组合等级,满足 对性能、安全性、可靠性要求更高的存储应用需求。 [6][7][8][9][10][11]

    1.RAID0

      RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

      RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。


    图2 RAID0 :无冗错的数据条带

    2.RAID1

      RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。工作原理如图 3 所示。

      RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。


    图3 RAID1 :无校验的相互镜像

    3.RAID2

      RAID2 称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。海明码是一种在原始数据中加入若干校验码来进行错误检测和纠正的编码技术,其中第 2n 位( 1, 2, 4, 8, … )是校验码,其他位置是数据码。因此在 RAID2 中,数据按位存储,每块磁盘存储一位数据编码,磁盘数量取决于所设定的数据存储宽度,可由用户设定。图 4 所示的为数据宽度为 4 的 RAID2 ,它需要 4 块数据磁盘和 3 块校验磁盘。如果是 64 位数据宽度,则需要 64 块 数据磁盘和 7 块校验磁盘。可见, RAID2 的数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。

      海明码自身具备纠错能力,因此 RAID2 可以在数据发生错误的情况下对纠正错误,保证数据的安全性。它的数据传输性能相当高,设计复杂性要低于后面介绍的 RAID3 、 RAID4 和 RAID5 。

      但是,海明码的数据冗余开销太大,而且 RAID2 的数据输出性能受阵列中最慢磁盘驱动器的限制。再者,海明码是按位运算, RAID2 数据重建非常耗时。由于这些显著的缺陷,再加上大部分磁盘驱动器本身都具备了纠错功能,因此 RAID2 在实际中很少应用,没有形成商业产品,目前主流存储磁盘阵列均不提供 RAID2 支持。


    图 4 RAID2 :海明码校验

    4.RAID3

      RAID3 (图 5 )是使用专用校验盘的并行访问阵列,它采用一个专用的磁盘作为校验盘,其余磁盘作为数据盘,数据按位可字节的方式交叉存储到各个数据盘中。RAID3 至少需要三块磁盘,不同磁盘上同一带区的数据作 XOR 校验,校验值写入校验盘中。 RAID3 完好时读性能与 RAID0 完全一致,并行从多个磁盘条带读取数据,性能非常高,同时还提供了数据容错能力。向 RAID3 写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。

      如果 RAID3 中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来重建数据。假如所要读取的数据块正好位于失效磁盘,则系统需要读取所有同一条带的数据块,并根据校验值重建丢失的数据,系统性能将受到影响。当故障磁盘被更换后,系统按相同的方式重建故障盘中的数据至新磁盘。

      RAID3 只需要一个校验盘,阵列的存储空间利用率高,再加上并行访问的特征,能够为高带宽的大量读写提供高性能,适用大容量数据的顺序访问应用,如影像处理、流媒体服务等。目前, RAID5 算法不断改进,在大数据量读取时能够模拟 RAID3 ,而且 RAID3 在出现坏盘时性能会大幅下降,因此常使用 RAID5 替代 RAID3 来运行具有持续性、高带宽、大量读写特征的应用。


    图5 RAID3 :带有专用位校验的数据条带

    5.RAID4

      RAID4 与 RAID3 的原理大致相同,区别在于条带化的方式不同。 RAID4 (图 6 )按照 块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘,多个 I/O 请求可以同时得到处理,提高了系统性能。 RAID4 按块存储可以保证单块的完整性,可以避免受到其他磁盘上同条带产生的不利影响。

      RAID4 在不同磁盘上的同级数据块同样使用 XOR 校验,结果存储在校验盘中。写入数据时, RAID4 按这种方式把各磁盘上的同级数据的校验值写入校验 盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏, RAID4 可以通过校验值以及其他磁盘上的同级数据块进行数据重建。

      RAID4 提供了 非常好的读性能,但单一的校验盘往往成为系统性能的瓶颈。对于写操作, RAID4 只能一个磁盘一个磁盘地写,并且还要写入校验数据,因此写性能比较差。而且随着成员磁盘数量的增加,校验盘的系统瓶颈将更加突出。正是如上这些限制和不足, RAID4 在实际应用中很少见,主流存储产品也很少使用 RAID4 保护。


    图6 RAID4 :带有专用块级校验的数据条带

    6.RAID5

       RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。

      RAID5 (图 7)的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。

      RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。


    图7 RAID5 :带分散校验的数据条带

    7.RAID6

      前面所述的各个 RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同时发生故障,数据将无法恢复。 RAID6 (如图 8 )引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。

      RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。 RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。

      RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择。


    图8 RAID6 :带双重分散校验的数据条带

    4.3 RAID 组合等级

      标准 RAID 等级各有优势和不足。自然地,我们想到把多个 RAID 等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的 RAID 系统。目前在业界和学术研究中提到的 RAID 组合等级主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但实际得到较为广泛应用的只有 RAID01 和 RAID10 两个等级。当然,组合等级的实现成本一般都非常昂贵,只是在 少数特定场合应用。 [12]

    1.RAID00

      简单地说, RAID00 是由多个成员 RAID0 组成的高级 RAID0 。它与 RAID0 的区别在于, RAID0 阵列替换了原先的成员磁盘。可以把 RAID00 理解为两层条带化结构的磁盘阵列,即对条带再进行条带化。这种阵列可以提供更大的存储容量、更高的 I/O 性能和更好的 I/O 负均衡。

    2. RAID01 和 RAID10

      一些文献把这两种 RAID 等级看作是等同的,本文认为是不同的。 RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力,原理如图 9 所示。

      RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。



    图 9 典型的 RAID01 (上)和 RAID10 (下)模型

    3.RAID100

      通常看作 RAID 1+0+0 ,有时也称为 RAID 10+0 ,即条带化的 RAID10 。原理如图 10 所示。 RAID100 的缺陷与 RAID10 相同,任意一个 RAID1 损坏一个磁盘不会发生数据丢失,但是剩下的磁盘存在单点故障的危险。最顶层的 RAID0 ,即条带化任务,通常由软件层来完成。

      RAID100 突破了单个 RAID 控制器对物理磁盘数量的限制,可以获得更高的 I/O 负载均衡, I/O 压力分散到更多的磁盘上,进一步提高随机读性能,并有效降低热点盘故障风险。因此, RAID100 通常是大数据库的最佳选择。


    图10 典型的 RAID100 模型

    4.RAID30 ( RAID53 )、 RAID50 和 RAID60

      这三种 RAID 等级与 RAID00 原理基本相同,区别在于成员 “ 磁盘 ” 换成了 RAID3 、 RAID5 和 RAID6 ,分别如图 11 、 12 、 13 所示。其中, RAID30 通常又被称为 RAID53[13] 。其实,可把这些等级 RAID 统称为 RAID X0 等级, X 可为标准 RAID 等级,甚至组合等级(如 RAID100 )。利用多层 RAID 配置,充分利用 RAID X 与 RAID0 的优点,从而获得在存储容量、数据安全性和 I/O 负载均衡等方面的大幅性能提升。


    图11 典型的 RAID30 模型


    图12 典型的 RAID50 模型


    图13 典型的 RAID60 模型

    4.4 非标准 RAID 等级

      虽然标准 RAID 和组合 RAID 在具体实现上存在一定程度的不同,但与标准规范是保持一致或兼容的。然而除此之外,一些存储厂商还实现了非标准的 RAID 等级,往往都是公司私有的产品。这里简单介绍几个非标准 RAID 等级。 [14]

    1.RAID7

      RAID7 的全称是最优化的异步高 I/O 速率和高数据传输率,它与其他 RAID 等级有着明显区别。它不仅仅是一种技术,它还是一个独立存储计算机,自身带的操作系统和管理工具,完全可以独立运行。

      RAID7 的存储计算机操作系统是一套实时事件驱动操作系统,其主要用来进行系统初始化和安排 RAID7 磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上。 RAID7 通过自身系统中的专用控制板来控制读写速度,存储计算机操作系统可使主机 I/O 传递性能达到最佳。如果一个磁盘出现故障, RAID7 还能够自动执行恢复操作,并可管理备份磁盘的重建过程。

      RAID7 突破了以往 RAID 标准的技术架构,采用了非同步访问,极大地减轻了数据写瓶颈,提高了 I/O 速度。 RAID7 系统内置实时操作系统还可自动对主机发送过来的读写指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,从而大大减少了磁头的转动次数,提高存储系统的 I/O 速度。

      RAID7 可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率大大提高,满足不同用户的存储需求。但是, RAID7 的成本比其他 RAID 等级要高许多。另外, RAID7 已被某公司注册为商标,目前仅有一家公司提供 RAID7 的产品,用户没有更多的选择。技术封闭,缺乏主流专业存储厂商的参与和研发严重制约了 RAID7 的发展。

    2.RAID-DP

      按照 SNIA 最新的 RAID6 定义 [15] ,双重数据校验的磁盘阵列都可归为 RAID6 等级。 NetApp 公司按照 RAID6 的定义实现了 RAID-DP ,使用双重的数据校验来保护数据,可以保证两块磁盘同时损坏的情况下不发生数据丢失。与该公司的 RAID4 实现对比,传统的 RAID6 实现会致使系统性能损失 30% 左右,而 RAID-DP 的性能下降低于 2% 。上层文件系统的请求首先写入后端的 NVRAM 中,确保即使在 掉电的情况下也不会有任何数据丢失。因此,数据块不会立即更新,当执行新来的写操作,会对写操作进行聚集,然后存储控制器尝试一次性写入包括校验数据在内的整个数据条带。 RAID-DP 提供了比 RAID10 更好的数据保护,性能却不低于 RAID10 。对于相同大小的 RAID 组,在大多数情况下, RAID-DP 没有受到传统 RAID6 即时更新数据块的挑战,并提供更多的磁盘进行读写。它甚至允许磁盘固件实时更新而不发生任何中断。

    3.RAID1.5

      这是 HighPoint 公司的 RAID 产品,有时也被错误地称为 RAID15 。 RAID1.5 仅使用两个磁盘驱动器同时进行数据条带化和镜像,数据可以同时从两块磁盘进行读取。这其中的大部分工作都由硬件来完成,而非驱动程序。 Linux 、 Solaris 等操作系统实现的 RAID1 也可以实现同时从两块磁盘进行读取数据,因此 RAID1.5 并不优于传统的 RAID1。

    4. RAID5E 、 RAID5EE 和 RAID6E

      这种概念首次在 IBM ServerRAID 中被提出, E 是 Enhanced 的首字母。它们分别是对 RAID5 和 RAID6 的增强,增加了热冗余磁盘驱动器,冗余磁盘与其他磁盘一块进行数据块编排。这种设计使得 I/O 可以分散到包括热冗余在内的所在磁盘,从而减小单块磁盘的 I/O 带宽, 提供更高的性能。然而,热冗余磁盘不能够被多个阵列共享。

      在实现中,实际上不存在专用的热冗余磁盘,就像 RAID5 和 RAID6 中没有专用的校验磁盘一样,所有的冗余数据块分布在所的成员磁盘中。例如,一个 10 块磁盘的 RAID5E ,包括 80% 数据块、 10% 的冗余数据块和 10% 的校验数据。对于 RAID5E 和 RAID6E ,冗余数据块位于阵列尾部,而 RAID5EE 则分布在整个 RAID 中。如果 RAID5E/5EE 中发生一块磁盘损坏,则系统会自动降级并重建至标准的 RAID5 。这一过程中, I/O 操作非常密集,并且需要花费大量时间,从几个小时至甚至几天,根据阵列的具体配置而异。当损坏磁盘被替换后,系统则又会自动升级并重建至原先的 RAID5E/5EE ,同时非常耗时。在上面的重建过程中,数据没有冗余保护。由于系统升级和降级时, I/O 活动密集且所需时间过长,因此实际应用中成员磁盘数据限制在 4~8 块。一旦超过 8 块磁盘,由于损坏磁盘的重建耗时和重建中发生第二块磁盘损坏造成的数据丢失, RAID5E/5EE 所获得的性能提升和其他获益都将严重降低。

    5.RAID S (Parity RAID)

       RAID S 是 EMC 公司的 Symmetrix 存储系统所使用的条带化校验 RAID 。该系统中,每个卷位于单独的物理磁盘上,多个卷组合进行数据校验。 EMC 最早引入了 RAID S 概念,后来改名为 Parity RAID 并应用于 Symmetrix DMX 平台。 EMC 现在也为 Symmetrix DMX 提供标准的 RAID5 , RAID S 已经不再 EMC 产品中使用。

    6.Intel Matrix RAID

       Matrix RAID 是 Intel ICH6R 和后继的南桥芯片的一个重要特征,可以通过 RAID BIOS 进行访问。它使用两块磁盘或者控制器能支持的最多磁盘,它的显著特征是允许 RAID0 、 1 、 5 、 10 多种数据卷混合共存,每块磁盘的指定部分分配给相应的 RAID 卷。 Matrix RAID 主要用于改善性能和数据完整性,实际应用中可以将操作系统应用于小的 RAID0 ,而大的 RAID1 存储关键数据以及用户数据。海量的流媒体数据容易发生数据丢失,可以考虑使用这种 RAID 。 linux 的 MD RAID 也可以实现类似的功能。

    7.Linux MD RAID 10

      RAID 10 是 Linux 内核所支持的软 RAID 等级之一,它还支持 RAID0、1、3、4、5、6 等级别。软 RAID 驱动程序通常通过构造典型的 RAID1+0 阵开来实现 RAID10 , 2.6.9 以后的内核也可作为单独的级别来实现。

      MD RAID10 支持重复数据块的近布局和远布局两种模式。近布局与标准 RAID10 相同,镜像数据块相邻存储。对于 n 重镜像的 k 路条带,不要求 k 为 n 的 整倍数。两重镜像的2、3、4路条带的 MD RAID10 分布相当于 RAID1 、 RAID-1E 和 RAID10 。远布局模式下,所有磁盘被划分为 f ( f= 镜像数)个数据存储区,重复数据块相对于原始数据块具有一个磁盘和若干依偏移的距离,即保存在下一个磁盘对应存储区的偏移位置。这种设计能够提高镜像阵列的条带性能,有效提高顺序和随机读性能,但对写性能没有显著提升。许多应该通常具有读密集而写稀疏的特点, RAID10 适合此类数据应用。需要指出的是,近布局和远布局两种模式可以同时使用,这种情况下将有 n * f 个数据副本。

    8. IBM ServerRAID 1E

       IBM 公司的 ServerRAID 阵列卡系列支持任意数量驱动器上的两路镜像,多个磁盘对数据块进行轮转镜像。这种配置能够对不相邻磁盘驱动器发生的损坏进行容错,其他的存储系统也支持这种模式,比如 SUN 公司的 StorEdge T3 。

    9.RAID-K

       Kaleidescape 公司实现了一种称为 RAID-K[16] 的 RAID 类型。 RAID-K 与 RAID4 相似,但不对文件数据进行块级的条带化处理,它企图将整个电影或音乐集合完整地存储在单个磁盘上。另外,它的冗余校验信息可存储在多个磁盘上,从而适应由多个容量不同的磁盘所组成的逻辑磁盘。而且,冗余数据包含比校验信息更多的数据,用于获取更高的容错性。这些特征可以为影像、音乐提供更好的性能,增加数据存储的安全性。 RAID-K 还可以允许用户以增量方式扩充存储容量,能够增加容量更大的磁盘,甚至它还可以增加包含数据(仅限影像和音乐)的磁盘。 RAID-K 会自动把这些磁盘组建成 RAID-K 阵列和 Kaleidescape 文件系统。

    10. RAID-Z

       RAID-Z 是集成在 SUN 公司 ZFS 文件系统中的一种与 RAID5 相似的 RAID 模式。利用写时复制策略, RAID-Z 避免了 RAID5 的写操作困境(即更新数据同时需要更新校验数据),它不用新数据覆盖旧数据,而是把新数据写到新位置并自动更新数据指针。对于小的写操作,仅仅执行完全的写条带操作,有效避免 “ 读取-更改-写回 ” 的操作需求。另外,还可以直接对小写操作使用镜像替换校验进行保护,因为文件系统了解下层存储结构,可以在必要时分配 额外存储空间。 ZFS 还实现了 RAID-Z2 ,提供类似与 RAID6 的双重校验保护能力,可以保证不块磁盘发生损坏而不发生数据丢失。根据 2009 年 6 月的更新, ZFS 加入了三重校验 RAID 支持,或许称为 RAID-Z3 。

    五、实现方式

      通常计算机功能既可以由硬件来实现,也可以由软件来实现。对于 RAID 系统而言,自然也不例外,它可以采用软件方式实现,也可以采用硬件方式实现,或者采用软硬结合的方式实现。 [3][8]

    5.1 软 RAID

      软 RAID 没有专用的控制芯片和 I/O 芯片,完全由操作系统和 CPU 来实现所的 RAID 的功能。现代操作系统基本上都提供软 RAID 支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。目前,操作系统支持的最常见的 RAID 等级有 RAID0 、 RAID1 、 RAID10 、 RAID01 和 RAID5 等。比如, Windows Server 支持 RAID0 、 RAID1 和 RAID5 三种等级, Linux 支持 RAID0 、 RAID1 、 RAID4 、 RAID5 、 RAID6 等, Mac OS X Server 、 FreeBSD 、 NetBSD 、 OpenBSD 、 Solaris 等操作系统也都支持相应的 RAID 等级。

      软 RAID 的配置管理和数据恢复都比较简单,但是 RAID 所有任务的处理完全由 CPU 来完成,如计算校验值,所以执行效率比较低下,这种方式需要消耗大量的运算资源,支持 RAID 模式 较少,很难广泛应用。

      软 RAID 由操作系统来实现,因此系统所在分区不能作为 RAID 的逻辑成员磁盘,软 RAID 不能保护系统盘 D 。对于部分操作系统而言, RAID 的配置信息保存在系统信息中,而不是单独以文件形式保存在磁盘上。这样当系统意外崩溃而需要重新安装时, RAID 信息就会丢失。另外,磁盘的容错技术并不等于完全支持在线更换、热插拔或热交换,能否支持错误磁盘的热交换与操作系统实现相关,有的操作系统热交换。

    5.2 硬 RAID

      硬 RAID 拥有自己的 RAID 控制处理与 I/O 处理芯片,甚至还有阵列缓冲,对 CPU 的占用率和整体性能是三类实现中最优的,但实现成本也最高的。硬 RAID 通常都支持热交换技术,在系统运行下更换故障磁盘。
      
      硬 RAID 包含 RAID 卡和主板上集成的 RAID 芯片, 服务器平台多采用 RAID 卡。 RAID 卡由 RAID 核心处理芯片( RAID 卡上的 CPU )、端口、缓存和电池 4 部分组成。其中,端口是指 RAID 卡支持的磁盘接口类型,如 IDE/ATA 、 SCSI 、 SATA 、 SAS 、 FC 等接口。

    5.3 软硬混合 RAID

      软 RAID 性能欠佳,而且不能保护系统分区,因此很难应用于桌面系统。而硬 RAID 成本非常昂贵,不同 RAID 相互独立,不具互操作性。因此,人们采取软件与硬件结合的方式来实现 RAID ,从而获得在性能和成本上的一个折中,即较高的性价比。

      这种 RAID 虽然采用了处理控制芯片,但是为了节省成本,芯片往往比较廉价且处理能力较弱, RAID 的任务处理大部分还是通过固件驱动程序由 CPU 来完成。

    六、RAID 应用选择

      RAID 等级的选择主要有三个因素,即数据可用性、 I/O 性能和成本。 目前,在实际应用中常见的主流 RAID 等级是 RAID0 , RAID1 , RAID3 , RAID5 , RAID6 和 RAID10 ,它们之间的技术对比情况如表 1 所示。如果不要求可用性,选择 RAID0 以获得高性能。如果可用性和性能是重要的,而成本不是一个主要因素,则根据磁盘数量选择 RAID1 。如果可用性,成本和性能都同样重要,则根据一般的数据传输和磁盘数量选择 RAID3 或 RAID5 。在实际应用中,应当根据用户的数据应用特点和具体情况,综合考虑可用性、性能和成本来选择合适的 RAID 等级。 [10]

    表1 主流 RAID 等级技术对比

    RAID 等级 RAID0 RAID1 RAID3 RAID5 RAID6 RAID10
    别名 条带 镜像 专用奇偶校验条带 分布奇偶校验条带 双重奇偶校验条带 镜像加条带
    容错性
    冗余类型
    热备份选择
    读性能
    随机写性能 一般 一般
    连续写性能 一般
    需要磁盘数 n≥1 2n (n≥1) n≥3 n≥3 n≥4 2n(n≥2)≥4
    可用容量  全部 50% (n-1)/n (n-1)/n (n-2)/n 50%

      近年来,企业的信息化水平不断发展,数据已经取代计算成为了信息计算的中心,信息数据的安全性就显得尤为至关重要。随着存储技术的持续发展, RAID 技术在成本、性能、数据安全性等诸多方面都将优于其他存储技术,例如磁带库、光盘库等,大多数企业数据中心首选 RAID 作为存储系统。当前存储行业的知名存储厂商均提供全线的磁盘阵列产品,包括面向个人和中小企业的入门级的低端 RAID 产品,面向大中型企业的中高端 RAID 产品。这些存储企业包括了国内外的主流存储厂商,如 EMC 、 IBM 、 HP 、 SUN 、 NetApp 、 NEC 、 HDS 、 H3C 、 Infortrend 、华赛等。另外,这些厂商在提供存储硬件系统的同时,还往往提供非常全面的软件系统,这也是用户采购产品的一个主要参考因素。

      不同的存储厂商的产品在技术、成本、性能、管理、服务等方面各有优势和不足。用户选择 RAID 的原则是:在成本预算内,满足数据存储需求的前提下,选择最优的存储厂商解决方案。因此,首先用户需要对存储需求作深入的调研和分析,并给出成本预算,然后对众多存储厂商的解决方案进行分析和对比,最后选择出一个综合最优的存储方案。其中,存储产品的扩展性和存储厂家的售后服务需要重点考察,存储需求(如容量、性能)可能会不断升级,存储产品发生故障后的维修和支持保障,这些都要未雨先缪。

    七、总结与展望

      回顾 RAID 发展历史,从首次提出概念至今已有二十多年。在此期间,整个社会信息化水平不断提高,数据呈现爆炸式增长趋势,数据取代计算成为信息计算的中心。这促使人们对数据愈加重视,不断追求海量存储容量、高性能、高 安全性、高可用性、可扩展性、可管理性等等。 RAID 技术在这样强大的存储需求推动下不断发展进步,时至今日技术已经非常成熟,在各种数据存储系统中得到了十分广泛的应用。
      
      正是由于技术发展的成熟, RAID 技术的未来发展已经不被广泛看好,甚至预言在不久的将来会停止发展,称之为 “ 僵尸技术 ” ,即虽然宣布死亡,但在很长一段时间内仍会继续发挥巨大的价值。
      
      然而,当前的 RAID 技术仍然存在诸多不足,各种 RAID 模式都存在自身的缺陷,主要集中在读写性能、实现成本、恢复时间窗口、多磁盘损坏等方面。因此, RAID 技术显然还存在很大的提升空间,具有很大的发展潜力。近年来新出现的 RAID 模式以及学术研究显示了其未来的发展趋势,包括分布式校验、多重校验、混合 RAID 模式、水平和垂直条带、基于固态内存 RAID 、网络校验等等。特别指出的是,多核 CPU 和 GPU 是当前的热点技术,它们大幅提升了主机的可用计算资源,这可以解决 RAID 对计算资源的消耗问题,软 RAID 很可能将重新成为热点。另外,存储硬件性能的提升、存储虚拟化技术、重复数据删除技术以及其他存储技术都会极大地推动 RAID 技术的进一步创新和发展。

    转自:http://www.hack520.com/169.html

    展开全文
  • java核心技术精讲

    万人学习 2016-12-31 18:44:40
    本课程主要读者全面细致的讲解Java编程的所有核心知识,从基础语法、到面向对象以及Java的实际应用进行完整讲解。官方QQ群:612148723。
  • C#.NET_面向对象编程技术

    万人学习 2015-01-08 08:56:25
    通俗易懂的面向对象编程技术,详细讲解C#.NET编程原理,.NET框架,辅以编程实例,具体的项目案例。从基础知识到项目开发,由入门到精通。 以形象的描术,把生涩的技术生动形象化,易理解,易掌握。
  • [总结]视音频编解码技术零基础学习方法

    万次阅读 多人点赞 2014-06-16 00:12:43
    一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没能完成。今天有着很大的空闲,终于可以总结一个有关视音频技术的入门教程,可以方便更多的人学习从零开始学习视音频技术。需要注意的是,本文...

    一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没能完成。今天有着很大的空闲,终于可以总结一个有关视音频技术的入门教程,可以方便更多的人学习从零开始学习视音频技术。需要注意的是,本文所说的视音频技术,指的是理论层面的视音频技术,并不涉及到编程相关的东西。

     

    0.     生活中的视音频技术

    平时我们打开电脑中自己存电影的目录的话,一般都会如下图所示,一大堆五花八门的电影。(其实专业的影视爱好者一概会把影视文件分门别类的,但我比较懒,一股脑把电影放在了一起)


    因为下载的来源不同,这些电影文件有不同的格式,用不同的后缀表示:avi,rmvb,mp4,flv,mkv等等(当然也使用不同的图标)。在这里需要注意的是,这些格式代表的是封装格式。何为封装格式?就是把视频数据和音频数据打包成一个文件的规范。仅仅靠看文件的后缀,很难能看出具体使用了什么视音频编码标准。总的来说,不同的封装格式之间差距不大,各有优劣。

    注:有些封装格式支持的视音频编码标准十分广泛,应该算比较优秀的封装格式,比如MKV;而有些封装格式支持的视音频编码标准很少,应该属于落后的封装格式,比如RMVB。

     

    下面演示一下如何使用视频播放器查看一个视频文件采用的视音频技术:

    注:在这里使用Media Player Classic作为演示,实际上暴风影音,KMplayer这些操作都差不太多。

    1.打开一个视频文件

    2.在视频画面上右键单击,选择属性。


    3.在弹出的“属性”对话框的“MediaInfo”选项卡中,就可以查看该视频文件采用的视音频技术了。如下图所示,“变形金刚预告片_h1080p.mov”采用MPEG4的QuickTime封装格式(MOV),采用了H.264(AVC)的压缩编码标准。


    在这里用到了一个查看媒体信息的工具:MediaInfo。MediaInfo是一个专门查看视音频格式的工具,软件的详细使用可参考:

    MediaInfo使用简介(新版本支持HEVC

    源代码分析可参考:

    MediaInfo源代码分析 1:整体结构[系列文章]

    生活中的视音频技术到此为止,下面介绍一下具体的视音频技术。

     

    1.     视频播放器原理

    视音频技术主要包含以下几点:封装技术,视频压缩编码技术以及音频压缩编码技术。如果考虑到网络传输的话,还包括流媒体协议技术。

    视频播放器的源代码详细解析(Media Player Classic - HC,Mplayer,FFplay,XBMC)可以参考系列文章:

    Media Player ClassicMedia Player Classic - HC源代码分析 1:整体结构[系列文章]

    MplayerMPlayer源代码分析

    FFplay FFplay源代码分析:整体流程图

    XBMC XBMC源代码分析 1:整体结构以及编译方法[系列文章]

    在这里不细说了,仅简要说明一下视频播放器的原理。

    视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。

     

    解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。

    解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。

    解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

    视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

    接下来的几节我们将会列出主要的流媒体协议,封装格式,以及视音频编码标准。更详细的比较可以参考:

    视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比

    有关本文中涉及到的协议数据、封装格式数据、视频编码数据、音频编码数据、视频像素数据、音频采样数据的分析可以参考下面系列文章:

    视音频数据处理入门:RGB、YUV像素数据处理

    视音频数据处理入门:PCM音频采样数据处理

    视音频数据处理入门:H.264视频码流解析

    视音频数据处理入门:AAC音频码流解析

    视音频数据处理入门:FLV封装格式解析

    视音频数据处理入门:UDP-RTP协议解析


    2.     流媒体协议

    流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。

    主要流媒体协议一览

    名称

    推出机构

    传输层协议

    客户端

    目前使用领域

    RTSP+RTP

    IETF

    TCP+UDP

    VLC, WMP

    IPTV

    RTMP

    Adobe Inc.

    TCP

    Flash

    互联网直播

    RTMFP

    Adobe Inc.

    UDP

    Flash

    互联网直播

    MMS

    Microsoft Inc.

    TCP/UDP

    WMP

    互联网直播+点播

    HTTP

    WWW+IETF

    TCP

    Flash

    互联网点播

    RTSP+RTP经常用于IPTV领域。因为其采用UDP传输视音频,支持组播,效率较高。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量。因而围绕IPTV的视频质量的研究还是挺多的。

    RTSP规范可参考:RTSP协议学习笔记

    RTSP+RTP系统中衡量服务质量可参考:网络视频传输的服务质量(QoS

    上海IPTV码流分析结果可参考:IPTV视频码流分析

    因为互联网网络环境的不稳定性,RTSP+RTP较少用于互联网视音频传输。互联网视频服务通常采用TCP作为其流媒体的传输层协议,因而像RTMP,MMS,HTTP这类的协议广泛用于互联网视音频服务之中。这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。

    此外RTMFP是一种比较新的流媒体协议,特点是支持P2P。

    RTMP我做的研究相对多一些:比如RTMP规范简单分析,或者RTMP流媒体播放过程

    相关工具的源代码分析:RTMPdump源代码分析 1 main()函数[系列文章]

    RTMP协议学习:RTMP流媒体技术零基础学习方法

    3.     封装格式

    封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下表所示:

    主要封装格式一览

    名称

    推出机构

    流媒体

    支持的视频编码

    支持的音频编码

    目前使用领域

    AVI

    Microsoft Inc.

    不支持

    几乎所有格式

    几乎所有格式

    BT下载影视

    MP4

    MPEG

    支持

    MPEG-2, MPEG-4, H.264, H.263等

    AAC, MPEG-1 Layers I, II, III, AC-3等

    互联网视频网站

    TS

    MPEG

    支持

    MPEG-1, MPEG-2, MPEG-4, H.264

    MPEG-1 Layers I, II, III, AAC,

    IPTV,数字电视

    FLV

    Adobe Inc.

    支持

    Sorenson, VP6, H.264

    MP3, ADPCM, Linear PCM, AAC等

    互联网视频网站

    MKV

    CoreCodec Inc.

    支持

    几乎所有格式

    几乎所有格式

    互联网视频网站

    RMVB

    Real Networks Inc.

    支持

    RealVideo 8, 9, 10

    AAC, Cook Codec, RealAudio Lossless

    BT下载影视

    由表可见,除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。而有些格式则支持的相对比较少,比如说RMVB。

    这些封装格式都有相关的文档,在这里就不一一例举了。

    我自己也做过辅助学习的小项目:

    TS封装格式分析器

    FLV封装格式分析器

     

    4.     视频编码

    视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。

    视频编码的简单原理可以参考:视频压缩编码和音频压缩编码的基本原理

    注:视频编码技术在整个视音频技术中应该是最复杂的技术。如果没有基础的话,可以先买一些书看一下原理,比如说《现代电视原理》《数字电视广播原理与应用》(本科的课本)中的部分章节。

    主要视频编码一览

    名称

    推出机构

    推出时间

    目前使用领域

    HEVC(H.265)

    MPEG/ITU-T

    2013

    研发中

    H.264

    MPEG/ITU-T

    2003

    各个领域

    MPEG4

    MPEG

    2001

    不温不火

    MPEG2

    MPEG

    1994

    数字电视

    VP9

    Google

    2013

    研发中

    VP8

    Google

    2008

    不普及

    VC-1

    Microsoft Inc.

    2006

    微软平台

    由表可见,有两种视频编码方案是最新推出的:VP9和HEVC。目前这两种方案都处于研发阶段,还没有到达实用的程度。当前使用最多的视频编码方案就是H.264。

    4.1 主流编码标准

    H.264仅仅是一个编码标准,而不是一个具体的编码器,H.264只是给编码器的实现提供参照用的。

    基于H.264标准的编码器还是很多的,究竟孰优孰劣?可参考:MSU出品的 H.264编码器比较2011.5

    在学习视频编码的时候,可能会用到各种编码器(实际上就是一个exe文件),他们常用的编码命令可以参考:各种视频编码器的命令行格式

    学习H.264最标准的源代码,就是其官方标准JM了。但是要注意,JM速度非常的慢,是无法用于实际的:H.264参考软件JM12.2RC代码详细流程

    实际中使用最多的就是x264了,性能强悍(超过了很多商业编码器),而且开源。其基本教程网上极多,不再赘述。编码时候可参考:x264编码指南——码率控制。编码后统计值的含义:X264输出的统计值的含义(X264 Stats Output

    Google推出的VP8属于和H.264同一时代的标准。总体而言,VP8比H.264要稍微差一点。有一篇写的很好的VP8的介绍文章:深入了解 VP8。除了在技术领域,VP8和H.264在专利等方面也是打的不可开交,可参考文章:WebM(VP8) vs H.264

    此外,我国还推出了自己的国产标准AVS,性能也不错,但目前比H.264还是要稍微逊色一点。不过感觉我国在视频编解码领域还算比较先进的,可参考:视频编码国家标准AVSH.264的比较(节选)

    近期又推出了AVS新一代的版本AVS+,具体的性能测试还没看过。不过据说AVS+得到了国家政策上非常强力的支持。

    4.2 下一代编码标准

    下一代的编解码标准就要数HEVC和VP9了。VP9是Google继VP8之后推出的新一代标准。VP9和HEVC相比,要稍微逊色一些。它们的对比可参考:(1)HEVC与VP9编码效率对比 (2)HEVC,VP9,x264性能对比

    HEVC在未来拥有很多大的优势,可参考:HEVC将会取代H.264的原因

    学习HEVC最标准的源代码,就是其官方标准HM了。其速度比H.264的官方标准代码又慢了一大截,使用可参考:HEVC学习—— HM的使用

    未来实际使用的HEVC开源编码器很有可能是x265,目前该项目还处于发展阶段,可参考:x265(HEVC编码器,基于x264)介绍。x265的使用可以参考:HEVCH.265)标准的编码器(x265DivX265)试用

    主流以及下一代编码标准之间的比较可以参考文章:视频编码方案之间的比较(HEVCH.264MPEG2等)

    此外,在码率一定的情况下,几种编码标准的比较可参考:限制码率的视频编码标准比较(包括MPEG-2H.263 MPEG-4,以及 H.264

    结果大致是这样的:

    HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2。

    截了一些图,可以比较直观的了解各种编码标准:

    HEVC码流简析:HEVC码流简单分析

    H.264码流简析:H.264简单码流分析

    MPEG2码流简析:MPEG2简单码流分析

    以上简析使用的工具:视频码流分析工具

    我自己做的小工具:  H.264码流分析器


    5.     音频编码

    音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。音频编码也是互联网视音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音质。

    音频编码的简单原理可以参考:视频压缩编码和音频压缩编码的基本原理

    主要音频编码一览

    名称

    推出机构

    推出时间

    目前使用领域

    AAC

    MPEG

    1997

    各个领域(新)

    AC-3

    Dolby Inc.

    1992

    电影

    MP3

    MPEG

    1993

    各个领域(旧)

    WMA

    Microsoft Inc.

    1999

    微软平台

    由表可见,近年来并未推出全新的音频编码方案,可见音频编码技术已经基本可以满足人们的需要。音频编码技术近期绝大部分的改动都是在MP3的继任者——AAC的基础上完成的。

    这些编码标准之间的比较可以参考文章:音频编码方案之间音质比较(AACMP3WMA等)

    结果大致是这样的:

    AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3

    AAC格式的介绍:AAC格式简介

    AAC几种不同版本之间的对比:AAC规格(LCHEHEv2)及性能对比

    AAC专利方面的介绍:AAC专利介绍

    此外杜比数字的编码标准也比较流行,但是貌似比最新的AAC稍为逊色:AC-3技术综述

    我自己做的小工具: AAC格式分析器


    6.     现有网络视音频平台对比

    现有的网络视音频服务主要包括两种方式:点播和直播。点播意即根据用户的需要播放相应的视频节目,这是互联网视音频服务最主要的方式。绝大部分视频网站都提供了点播服务。直播意即互联网视音频平台直接将视频内容实时发送给用户,目前还处于发展阶段。直播在网络电视台,社交视频网站较为常见。

    6.1 直播平台参数对比

    主流互联网视音频平台直播服务的参数对比如表所示:

    现有网络视音频平台参数对比

    名称

    协议

    封装

    视频编码

    音频编码

    播放器

    CNTV

    私有

    华数TV

    RTMP

    FLV

    H.264

    AAC

    Flash

    六间房

    RTMP

    FLV

    H.264

    AAC

    Flash

    中国教育电视台

    RTMP

    FLV

    H.264

    AAC

    Flash

    北广传媒移动电视

    RTMP

    FLV

    H.264

    AAC

    Flash

    上海IPTV

    RTSP+RTP

    TS

    H.264

    MP2

    机顶盒

    可以看出,直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,AAC作为音频编码格式。采用RTMP作为直播协议的好处在于其被Flash播放器支持。而Flash播放器如今已经安装在全球99%的电脑上,并且与浏览器结合的很好。因此这种流媒体直播平台可以实现“无插件直播”,极大的简化了客户端的操作。封装格式,视频编码,音频编码方面,无一例外的使用了FLV + H.264 + AAC的组合。FLV是RTMP使用的封装格式,H.264是当今实际应用中编码效率最高的视频编码标准,AAC则是当今实际应用中编码效率最高的音频编码标准。视频播放器方面,都使用了Flash播放器。

    6.2 点播平台参数对比

    主流网络视音频平台点播服务的参数对比如表所示:

    现有互联网视音频平台参数对比

    名称

    协议

    封装

    视频编码

    音频编码

    播放器

    CNTV

    HTTP

    MP4

    H.264

    AAC

    Flash

    CNTV(部分)

    RTMP

    FLV

    H.264

    AAC

    Flash

    华数TV

    HTTP

    MP4

    H.264

    AAC

    Flash

    优酷网

    HTTP

    FLV

    H.264

    AAC

    Flash

    土豆网

    HTTP

    F4V

    H.264

    AAC

    Flash

    56网

    HTTP

    FLV

    H.264

    AAC

    Flash

    音悦台

    HTTP

    MP4

    H.264

    AAC

    Flash

    乐视网

    HTTP

    FLV

    H.264

    AAC

    Flash

    新浪视频

    HTTP

    FLV

    H.264

    AAC

    Flash

    可以看出,点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。采用HTTP作为点播协议有以下两点优势:一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包等现象,从而保证了视频的质量;另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。点播服务采用的封装格式有多种:MP4,FLV,F4V等,它们之间的区别不是很大。视频编码标准和音频编码标准是H.264和AAC。这两种标准分别是当今实际应用中编码效率最高的视频标准和音频标准。视频播放器方面,无一例外的都使用了Flash播放器。

     

    展开全文
  • 中国十大技术社区你都知道哪些?

    万次阅读 多人点赞 2018-07-02 07:36:00
    社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起...

    640?wx_fmt=jpeg

    社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起学习和交流。

    技术社区一般有三类人:第一类技术人,就是遇到问题搜索一下,绝大部分程序员都是通过这种方式来了解技术社区的,或者遇到问题的时候在社区去提问;第二类的技术人,有意识的常去技术社区查看博客,学习新知识;第三类人,就是写文章的人,喜欢分享某一类技术,或者他们的实战经历。往往写文章的人,也喜欢看文章。

    总的来说,技术社区就是聚集技术人的地方,也是技术人学习交流的最佳场所。个人利用业务时间,按照访问量等信息整理出了中国十大IT技术社区,帮助大家找到自己的家园。

    CSDN

    640?wx_fmt=png

    CSDN (Chinese Software Developer Network) 是蒋涛创立于1999年,是中国专业的 IT 社区,为中国的软件开发者提供知识传播、在线学习、职业发展等全生命周期服务。 截止2018年6月,CSDN 拥有超过2500+万技术会员,论坛发帖数1000万+,技术资源700万+,Blog 文章1300万+,新媒体矩阵粉丝数量430万+。

    我与 CSDN 结缘大学,09年大学参加数学建模的时候经常去 CSDN 下载资料,10年毕业后在博客记录一些软件的使用命令,Oracle 常用语法,后来就把博客给忘了,11年的时候经常活跃在 CSDN 灌水区,和天下的程序员闲聊,后来因为 CSDN 广告实在太多就转战博客园,直到去年成为 CSDN 博客专家,重新回来同步一些文章。

    CSDN 是国内IT行业覆盖最全的一个社区,有很多的高手和大神隐藏于此,到现在还有很多学者、研究生等高层次人才在 CSDN 发表博客,同样海量的 IT 同行们也都活跃于 CSDN ,不过令人诟病的是 CSDN 的广告是最多的,用户体验非常差。不过今年博客系统进行了改版后比以前好了一些,并且博客专家不用显示广告,这点值得点赞。

    网站链接:http://www.csdn.net/

    从 Alexa 的排名来看目前排在全球第 41 位,当之无愧的为国内技术社区老大。

    640?wx_fmt=png

    博客园

    640?wx_fmt=png

    博客园创立于2004年1月,是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。

    博客园的发展历程特别能体现IT从业者的执着精神:2004年,博客园诞生于江苏扬州这样一个IT非常落后的小城市,有近四年,博客园仅靠一个人几年工作的积蓄在维持,博客园一步一个脚印地走着自己的路,傻傻地对每个用户注册进行人工审批、对首页内容宁缺毋滥、对不合适的广告拒之门外,傻傻地对用户体验关怀备至,对盈利模式冷若冰霜。

    可以看到,博客园的页面十分干净清爽,干货都放在首要位置,没有时下流行的大图轮播,没有任何广告,只为这样的情怀也应为博客园点赞。博客园最大的特点是足够的开放,首页的文章由读者来决定,每个人的博客也可以自定义显示,因此博客现在有最丰富的个人博客皮肤界面,我在博客园看到了程序员们的想象力。

    第一份工作在华为做外包,在华为内部办公不能访问外网,但一些主流的技术网站都可以访问,其中就有博客园 。那时候中午休息的时候总是要逛一逛技术社区,博客园的IT行业新闻吸引了我,就一直养成了在博客园看业内新闻的习惯。但直到2016年才开始在博客园写博客,17年成为博客园的推荐博客,到了现在我的博客是博客园推荐博客的 top 30,可以说我写博客的起点就来自博客园。

    网站链接:http://www.cnblogs.com/

    博客园全球 alexa 排名在 210,仅次于 CSDN。

    640?wx_fmt=png

    SegmentFault

    640?wx_fmt=png

    SegmentFault 创立于 2012 年,是中文领域最大的技术问答交流社区平台,在这里你可以检索,交流和分享任何技术编程相关的问题及知识。其目标是覆盖和服务 1,000 万以上中国软件开发者和 IT 信息从业者,其实现方法是充分利用在各个平台上所能获得的各种技术创新机会为他们开发产品应用和服务。

    网站链接:https://segmentfault.com/

    这个平台在17年的时候才了解到,网站的整体风格比较简洁,在所有的技术社区中用户体验算比较好的。网上查了 SegmentFault 的 alexa 排名才发现这个网站的访问量比我预想中要高很多。

    SegmentFault 全球访问量排名在 768

    640?wx_fmt=png

    V2EX

    640?wx_fmt=png

    V2EX is a community of start-ups, designers, developers and creative people.

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 250,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    V2EX 严格意义上不算是纯粹的技术社区,它定位是创意工作者的社区,但其实里面全是 IT 行业内的人。大家会喜欢像发帖一样在里面讨论创意、新的技术、吐槽等活动,人气很高,这个平台的风控机制也比较严格,页面刷新太快也会被限制,网友常常说,V2EX 是一个神奇的网站。

    网站链接:https://www.v2ex.com/

    V2EX 全球访问量排名在 931

    640?wx_fmt=png

    开源中国

    640?wx_fmt=png

    开源中国 成立于2008年8月,是目前国内最大的开源技术社区,拥有超过200万会员,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。

    开源中国也是一个只关注IT内特定领域的技术社区,开源中国主要关注的是开源技术,适合对该领域感兴趣的人士。2013年,开源中国被恒拓开源收购。

    开源中国也是国内唯一一个专业报道开源事件的社区,网站会实时报道开源界的所有资讯,同时也有中国版的github:gitee。

    网站链接:http://www.oschina.net/

    开源中国 全球访问量排名在 969

    640?wx_fmt=png

    W3School

    640?wx_fmt=png

    W3School 是因特网上最大的 WEB 开发者资源,其中包括全面的教程、完善的参考手册以及庞大的代码库。

    下面是关于 W3School 的简要描述:

    • W3School 是因特网上最大的 WEB 开发者资源

    • W3School 是完全免费的

    • W3School 是非盈利性的

    • W3School 一直在升级和更新

    • W3School 是 W3C 中国社区成员,致力于推广 W3C 标准技术

    前端程序员的最爱,W3School 最开始分享很多浅显易懂的前端教程,后来也有一些后端的教程在里面。

    网站链接:http://www.w3school.com.cn

    W3School 全球访问量排名在 989

    640?wx_fmt=png

    51CTO

    640?wx_fmt=png

    51CTO 成立于2005年,目前已建成为专注于IT人职业成长平台;拥有1500万注册用户,覆盖了中国主流城市大多数IT从业人群,是国内排名第一的服务IT技术人员的专业性服务平台。

    网站链接:http://www.51cto.com

    51CTO 全球访问量排名在 1145

    640?wx_fmt=png

    51CTO 最开始专注于运维这个领域,也是国内聚集运维技术人才最多的一个技术社区,到了后来逐渐的转为覆盖全领域的技术社区。

    特别需要提到的是 51CTO 博客平台,也是在今年进行了 2.0 的改版,改版之后的用户体验提升非常明显,添加了 md 、赞赏和微信系统打通等新的功能,目前为止是所有技术社区对作者考虑最为全面的一个,也是体验最好的一个。我是在17年在 51CTO 开通了博客,目前在博客的粉丝排名中,位于前十。

    51CTO 博客

    640?wx_fmt=png

    博客链接:http://blog.51cto.com/

    ChinaUnix

    640?wx_fmt=png

    ChinaUnix.net(简称CU)是一个以讨论 Linux/Unix 类操作系统技术、软件开发技术、数据库技术和网络应用技术等为主的开源技术社区网站。创办于2001年,经过多年的努力和发展,如今CU已经成为全球最大、人气最旺的Linux/Unix技术中文网站。

    CU的宗旨是给所有爱好Linux/Unix技术、开源技术的朋友提供一个自由、开放、免费的交流空间。只专注一个领域,小而精是CU的特色,如果你刚好对Linux/Unix技术等领域感兴趣,CU是不错的选择,如果你关注其他领域,CU上可能并没有相关讨论和资料。

    网站链接:http://www.chinaunix.net/

    ChinaUnix 全球访问量排名在 3835

    640?wx_fmt=png

    伯乐在线

    640?wx_fmt=png

    伯乐在线成立于 2010 年,由黄余粮和黄利民联合发起,做专业的IT互联网职业社区。

    网站链接:http://www.jobbole.com/

    伯乐在线主要是由专业编辑挑选文章,所以文章质量都不错,也正是因为如此,人气不足。

    伯乐在线 全球访问量排名在 6004

    640?wx_fmt=png

    ITEye

    640?wx_fmt=png

    ITEye (曾名为JavaEye)是在2003年9月创办的,创始人范凯在学习和研究 java 的开源框架却发现没有一个讨论的地方,于是自己就建立了这个关于 Java 的网站。如今 ITEye 网站已经发展成为了一个内容齐全,功能丰富的中文IT技术门户和社区网站,涵盖整个软件开发领域的综合性网站。

    ITEye以专业性著称,据说网站创建初期新用户注册时需要强制做题,做13道有关论坛规则的选择题,做不对就不予审核通过。自从 ITEye 被 CSDN 收购后,网站就再也没有更新过,人气大降,目前已经沦落为二线阵营。

    网站链接:http://www.iteye.com/

    ITEye 全球访问量排名在 8473

    640?wx_fmt=png

    最近几年随着行业不断发展,又诞生了一些新的社区,其中有三个比较有代表性,一并分享给大家。

    掘金

    640?wx_fmt=png

    创建于2015年8月,掘金最初来自于稀土,是稀土的一个子版块,没想到稀土没有火起来,反而做为技术分享网站的掘金火爆了起来,于是创始人明明随即调整了方向,大力发展掘金。去年的时候掘金也开通了自己的专栏、小册,慢慢从一个技术文章分享网站向全面技术社区转型,期待后续的发展。

    网站链接:https://juejin.im

    掘金 全球访问量排名在 6306

    640?wx_fmt=png

    开发者头条

    640?wx_fmt=png

    开发者头条也是近两年才突然活跃起来的一个技术分享平台,由一帮程序员所创建,我对它的最初印象是码农周刊,码农周刊是一份专为程序员打造的IT技术周刊。平台每周会精选一周IT技术干货,进行推送。曾经有一段时间发现我的独立博客有一些流量来源于这个网站,才发现它。目前开发者头条已经聚集了一帮技术爱好者。

    网站链接:https://toutiao.io/

    开发者头条 全球访问量排名在 26398

    640?wx_fmt=png

    GitChat

    640?wx_fmt=png

    GitChat 是一款基于微信平台的知识分享产品,通过这款产品我们希望改变IT知识的学习方式。GitChat 算是技术付费的先驱了,在技术知识付费领域在国内做的比较早。

    17年的时候,发现有人在我的公号内留言,邀请我在 GitChat 做一场分享,那时候我还不知道 GitChat 分享是干什么的。抱着试试看态度做了一场分享:从架构演进的角度聊聊 Spring Cloud 都做了些什么? ,后面感觉还不错又做了一个课程:快速学习 Spring Boot 技术栈,没想到一年后这个课程的销量已经到达了平台畅销前三,还是挺受鼓舞的。GitChat 后来被 CSDN 所收购,所以大家也会在 CSDN 看到 GitChat 的推荐内容。

    网站链接:http://gitbook.cn/

    GitChat 全球访问量排名在 31341

    640?wx_fmt=png

    总结

    中国IT技术社区整体的技术氛围还是很不错的,近年来也诞生了很多新的技术社区,有的做垂直方向,有的面向所有IT人员,最终都促进了 IT 行业的技术发展。但同时大部分技术社区的用户体验,社区开放度还有很大的提升空间,没有一个理想中很开放、全面的技术社区,也许这就是下一个机会呢?

    最后,作为 IT 技术社区的受益者,还是感谢所有的技术社区工作人员,为同行们创建了一个学习交流的场所。大家也可以聊聊平时都活跃在哪些技术社区,欢迎留言交流。

    END


    给大家分享1套手册。先看看一大牛整理了一套2000字数据库初级到进阶的SQL大全,最近终于出电子版了!平时工作和面试大厂无压力。

    这份资料非常全面且详细,覆盖了 MySQL 基础学习的方方面面,非常适合初学者入门!

    资料也按目录进行编排,每一章下面都有更具体的内容:

    图片

     

    图片

     

    图片

    而且,这份资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:

     

    
     

    获得方式:

     

    1. 关注下方公众号

    2. 在下方公众号后台回复 【205 即可。

    图片

    长按上方二维码 2 秒
    回复「205」即可获取资料

     

     

     

     

    展开全文
  • 微信技术总监分享架构设计高清完整PDF版

    万次下载 热门讨论 2012-05-15 09:17:26
    技术架构上,微信是如何做到的?日前,在腾讯大讲堂在中山大学校园宣讲活动上,腾讯广研助理总经理、微信技术总监周颢在两小时的演讲中揭开了微信背后的秘密。
  • 25 篇 Java 入门技术博文,送给正在自学的你

    万次阅读 多人点赞 2019-11-09 11:04:12
    ”刚好我之前花了 7 周多的时间写了 25 篇 Java 入门的技术博文,于是我想不妨把这些整理成一个系列分享出来,给大家作为一个参考。 先来通过思维导图看一下这 25 篇 Java 入门技术博文涉及到的内容。 下面是这 25 ...
  • Java OCR 图像智能字符识别技术,可识别中文

    万次下载 热门讨论 2012-02-08 09:58:34
    Java OCR 图像智能字符识别技术,可识别中文。具体详见:http://blog.csdn.net/white__cat/article/details/38461449
  • 技术人员要拿百万年薪,必须要经历这9个段位

    万次阅读 多人点赞 2019-09-27 10:10:10
    很多人都问,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对大家的职...
  • JSP技术简介

    万次阅读 2018-04-13 19:05:09
    1 JSP技术的特征 JSP技术所开发的web应用程序是基于Java的,它拥有Java跨平台的特性,以及业务代码分离,组建重用,基础Java servlet功能和预编译功能。 1)跨平台 由于JSP是基于Java语言的,因而它可以使用Java...
  • H.264/AVC视频编解码技术详解

    万人学习 2016-07-29 11:19:04
    H.264/AVC是目前业界应用为广泛的视频压缩编码标准,包含了先进而且较为成熟的视频编码技术。本课程将从原理、标准和实现等多个角度,详细讲述了H.264/AVC视频编码标准的整体架构与技术细节,不但讲解了H.264/AVC...
  • NAT(地址转换技术)详解

    万次阅读 多人点赞 2018-03-17 16:31:35
    NAT技术的工作原理和特点 静态NAT 动态NAT NAT重载(经常应用到实际中) NAT技术的优缺点 优点 缺点 NAT穿越技术 应用层网关(ALG) ALG的实际应用 NAT技术的未来 参考文献 NAT产生背景 今天,无数...
  • 技术中台的作用是什么? 技术前台 技术中台 在什么情况下,才有必要做技术中台? | 前提1:技术组织结构垂直化 | 前提2:业务线又多又复杂 有了技术中台,是不是就能上天? 总结 就在刚过去的半年里,「...
  • 一篇读懂无线充电技术(附方案选型及原理分析)

    万次阅读 多人点赞 2017-09-02 10:27:12
    一文读懂无线充电技术(附方案选型及原理分析) 0.背景 1.无线供电特点 2.无线供电原理及实现方式 3.现有解决方案分析 4.FAQ及相关测试 5.参考资料 0.背景 现今几乎所有的电子设备,如...
  • 中国科学技术大学 先进技术研究院

    万次阅读 2020-05-20 19:35:47
    为了增进学生对“人工智能”、“微电子”、“生物医药”、“新材料与新能源”等前沿科技应用领域的了解,践行“产学研用”相结合的高端应用型人才培养,2020年,先进技术研究院将举办首届创新应用(先研院)夏令营。...
  • 视频编码技术详解

    万次阅读 多人点赞 2020-04-18 14:06:53
     而这一切,离不开视频拍摄技术的不断升级,还有视频制作产业的日益强大。    此外,也离不开通信技术的飞速进步。试想一下,如果还是当年的56K Modem拨号,或者是2G手机,你还能享受到现在动辄10...
  • “5G 将是一个彻底的失败通信技术” | 畅言

    万次阅读 多人点赞 2019-03-11 16:37:13
    “适者生存”的竞争环境下,技术也毫不例外。 如今,低延时、高可靠、低功耗的 5G 正稳步向互联网以及物联网领域渗入。但作为新一代移动通信标准,在爆发前夕,业界人士对其看法不一。有的人报以热忱的期待,认为 ...
  • WebRTC -- P2P及NAT穿越技术介绍

    万次阅读 2017-11-15 17:26:31
    如果每台计算机都有自己的独立的公网IP,那么P2P技术就比较好实现了,但是现实中由于NAT的存在,使得P2P技术最大的难点就在于穿越NAT的限制,俗称“打洞”。 二、 NAT(Network Address Transl...
  • STIX 2.0:技术发展之路

    万次阅读 2020-01-31 16:09:56
    对当地地理环境的熟悉、技术上的优势和战术技巧,让雅典人围歼了他们的敌人。2013年,两位历史学家将这场战役描绘成世界历史的关键转折点之一。他们推测,如果波斯人赢得此战,民主、自由市场和西方文明的其他标志性...
  • 如何画出一张合格的技术架构图?

    万次阅读 2019-04-11 09:23:57
    当我们想用一张或几张图来描述我们的系统时,是不是... 画出来的图到底是产品图功能图还是技术图又或是大杂烩? 图上的框框有点少是不是要找点儿框框加进来? 布局怎么画都不满意…… 如果有同样的困...
  • 技术栈是什么鬼?

    万次阅读 多人点赞 2019-05-08 11:27:20
    技术栈是什么鬼? 栈的英文是stack 首先,我们使用金山词霸来查一下stack的中文解释 stack有堆起来的意思,其实就是堆叠,顾名思义,技术栈就是你掌握了一堆的技术(掌握多种技术) 一般来说是指将N种技术互相...
  • 一代、二代、三代测序技术原理与比较

    万次阅读 多人点赞 2017-11-10 14:08:02
    从1977年第一代DNA测序技术(Sanger法)1,发展至今三十多年时间,测序技术已取得了相当大的发展,从第一代到第三代乃至第四代,测序读长从长到短,再从短到长。虽然就当前形势看来第二代短读长测序技术在全球测序...
  • 覆盖技术和交换技术

    千次阅读 2019-10-06 21:35:13
    手动的覆盖技术 如果程序太大了,超过了内存的容量,可以采用手动的覆盖技术,只把需要的指令和数据保存到内存中 自动的交换技术 如果程序太多,超过了内存的容量,可以采用自动的交换技术,把暂时不能执行的程序送...
  • 技术博客写作

    万次阅读 2020-10-24 09:14:26
    【DIY Plus】技术写作 一、背景 1.1 关于技术直播 https://gitee.com/DIY_PLUS/topic_record 延续孤尽老师 DIY 一期的精神。 DIY班: 其一,Deeply Inspire Yourself 深度激发自己 其二,Do It Yourself ...
  • 冗余技术

    千次阅读 2019-05-17 13:47:48
    冗余是容错技术的基础,通过冗余资源的加入,可以使系统的可靠性得到较大的提高。主要的冗余技术有结构冗余(硬件冗余和软件冗余)、信息冗余、时间冗余和冗余附加四种。 1.结构冗余 结构冗余是常用的冗余技术,按...
  • 物联网已经在全世界得到了很大的重视,随着“物联网十二五”发展规划“、”中国制造2025“等政策提出,已经升级为国家层面技术及产业创新的重点方向。可能很多人不了解,物联网到底是什么?物联网的关键技术是什么?...
  • Android 核心技术

    万人学习 2016-09-27 18:34:44
    深入学习Android核心技术,课程内容包括: Android 应用基础、Intent 和 Intent Filter、Activity、Fragment(片段)、任务和回退栈、Service、Content Provider、BroadcastReceiver、应用资源。

空空如也

1 2 3 4 5 ... 20
收藏数 1,888,473
精华内容 755,389
关键字:

技术