精华内容
下载资源
问答
  • 什么样的团队才是理想中的团队? (转自AtTeam官微的博客)
    千次阅读
    2018-03-16 20:44:36
    首先一个好的团队,充满团队意识和执行力的团队,有两个前提:
    团队成员和目标。团队成员本身的组成非常重要,人的因素不管在什么地方,都占据着很重要的地位。俗语说物以类聚,人以群分,并不是说一定要求每个团队成员都是一种性格一样喜好的人,这里的意思是需要这个团队中的每一个成员,都是适合在一起长期工作的同事,不适合的人在一起,无论怎么拧,恐怕都很难拧到一起去。有公司的录用过程很能说明“适合”的重要性,每位待录用者,都会受到其他5-6名员工的评价,评价内容是你是否愿意与该员工一起工作……而项目目标则是将人拧在一起的那根绳,是团队形成的基础,若项目目标不明确,或根本没有什么目标,那团队本身的形成就是存在问题的,更无从谈起什么团队意识了。
    其次,团队意识的建立需要长期的、各个层面地培养。
    有了明确的项目愿景,有了适合长期一起工作的同事,并不是说团队意识就能自然而然的种到每个人的心里。它是意识层面的东西,是需要时间、耐心、主观能动力去学习、去培养的,它是一种长期工作经验总结出来的职业素养。咱们目前的团队的平均年龄普遍较低,大部分团队成员都是没有太多工作经验的,或者刚毕业不久,离这种职业素养的水平还是有一定差距的。因此,每一位团队成员都应时刻提醒自己,在努力去学习各种专业知识的同时,不要忘了自我的完善,不断提升自己的职业素养。怎样才是具有团队意识?会听,善思,沟通,坚决执行,不断总结。倾听并去真正理解别人的想法,并不是一件很容易的事情;冷静的思考和判断是作出正确选择的必经之路;在交流和沟通中建立深厚的感情和统一思想;一旦统一了目标和途径,就要坚决的执行下去;阶段性的总结让人真正有所领悟,让团队逐步成熟。正因为团队的年轻化,管理者在团队意识的建立中就显得格外任重道远。管理者除了也应具有以上所说的团队意识外,还需要有更重要的“培养团队成员团队意识的意识”。在实现目标的各个阶段,在各种场合,管理者都应时刻有这种“培养意识的意识”存在,应利用一切机会,去培养、去影响团队其他成员,使整个团队在实现目标的过程中,一直处在一种良好的氛围中,并且是不断进步,不断成熟的。
    第三,意识是可以由制度培养出来的。
    项目初期,人的影响力可能是最大的,然而随着项目的不断发展,成员可能越来越多,此时一个人或几个人的影响力可能就不足以影响整个团队了。这种情况下,良好的制度,对于团队意识的影响力就尽显无遗。当然,良好的制度也是随着最初几个人的团队的意识不断成熟而不断完善的。制度其实就是意识的一种体现和总结,团队意识能建立成什么样,和以何种意识建立的制度,是有密不可分的因果关系的。
    最后,需要明确认识到,一团和气并不是团队意识的一种。
    不仅不是,简直完全背道而驰,但这往往却是最能迷惑眼睛和思想的。每天和和气气的、沟通(天南海北的聊)能力很好的团队,并不代表能够一条心的执行项目计划,完成项目目标,在偶遇分歧或困难的时候,也许立刻就不能像平常那样“和气”了。与交朋友一样,患难见真情,真正的团队意识并不在于平时的和气没有争执,而是在遇到问题和艰难的时候,能够共同面对,齐心协力的解决;在遇到分歧和迷惑时,能心平气和的去思考、去沟通,为了达成项目目标而始终坚定不移的共同努力!
    更多相关内容
  • 那么阿里云是一个什么样的企业,为什么能成为行业第一,以下相关介绍获取可以说明。 一:阿里云简介 阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,致力于以在线公共服务的方式,提供安全、可靠的...

    根据公开的数据显示,有超过一半A股上市公司、40%的中国500强企业、近一半中国上市公司、80%中国科技类公司在使用阿里云。那么阿里云是一个什么样的企业,为什么能成为行业第一,以下相关介绍获取可以说明。

    一:阿里云简介
    阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,致力于以在线公共服务的方式,提供安全、可靠的计算和数据处理能力,让计算和人工智能成为普惠科技。

    阿里云服务着制造、金融、政务、交通、医疗、电信、能源等众多领域的领军企业,包括中国联通、12306、中石化、中石油、飞利浦、华大基因等大型企业客户,以及微博、知乎、锤子科技等明星互联网公司。在天猫双11全球狂欢节、12306春运购票等极富挑战的应用场景中,阿里云保持着良好的运行纪录。

    阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。

    2014年,阿里云曾帮助用户抵御全球互联网史上最大的DDoS攻击,峰值流量达到每秒453.8Gb。在Sort Benchmark 2016 排序竞赛 CloudSort项目中,阿里云以1.44$/TB的排序花费打破了AWS保持的4.51$/TB纪录。在Sort Benchmark 2015,阿里云利用自研的分布式计算平台ODPS,377秒完成100TB数据排序,刷新了Apache Spark 1406秒的世界纪录。

    2019年3月3日凌晨,阿里云深夜出现故障。阿里云官方回复,华北2地域可用区C部分ECS服务器等实例出现IO HANG,持续了三个小时左右,经紧急排查处理后逐步恢复。2019年6月11日,阿里云入选“2019福布斯中国最具创新力企业榜”。

    二:经营范围
    经营电信业务;服务:计算机软硬件、电子产品、数码产品的技术开发、技术服务,企业管理咨询与计算机信息技术咨询;设计、制作、代理、发布国内广告,成年人的非文化教育培训、成年人的非证书劳动职业技能培训(涉及前置审批的项目除外);批发、零售:计算机软硬件,电子产品(除专控),数码产品;会务服务,承办展览,展览展示设计;智能化设计咨询及改造。

    品牌口号编辑
    为了无法计算的价值
    在2015云栖大会上,阿里云发布全新品牌口号及品牌广告——“为了无法计算的价值”(Creating value beyond computing. ),深入地阐释阿里云的品牌定位及品牌价值。

    在传统认知中,“计算”一词对于大多数人而言太过遥远和冰冷,那是必须去花费力气破解的代码世界,与日常生活的交集看起来是那么微乎其微。

    阿里云认为,计算的终极意义是发挥数字的力量,去解决问题、创造价值,让数字不止于数字,赋予数字以人的喜怒哀乐。
    每一次当你在社交网站上发出一张照片;
    每一次当你的手机钱包多盈余一块钱;
    每一次当你和朋友在电脑前观赛发出一声欢呼;
    每一次当世界又迎来一个健康的婴儿;
    每一次当风、阳光带来一度最清洁的能源……
    这都是无法计算的价值。

    三:云计算价值
    阿里巴巴集团首席战略官曾鸣,曾系统性地概括了云计算对于企业的价值。
    1、移动+云计算=实现了IT服务的“在线化“,让技术的门槛大幅降低。
    2、云计算是公共服务,是可变成本,可按需使用,不再是固定资产投入,创业公司的成本压力由此大幅下降。
    3、云计算将数据变成生产资料和企业资产。

    云计算,是用足够的低成本、商业化的模式来解决大计算的问题。以前大家只会想到超级计算机,它的运营成本高,而反应速度还是很慢,当这些大的互联网应用真正发展时,比如淘宝,数亿商家提出的购买需要,实时信息匹配的背后,就是大数据的计算。所以,云计算就是使用分布式的方法,针对海量数据大计算的一种解决方案。如果没有计算能力,我们谈不上大数据的时代,谈不上海量数据的高效应用。

    马云在2016杭州云栖大会上提出了五新:“新零售,新制造,新金融,新技术,新能源”,阿里云正在成为这“五新”的经济基础设施,其自主研发的超大规模通用计算操作系统飞天,可以将遍布全球的百万级服务器连成一台超级计算机,以在线公共服务的方式为社会提供计算能力。

    阿里云总裁胡晓明表示:接下来的3~5年,云计算、大数据不仅将在互联网内发生改变,同样会在工业制造、农业作业、城市交通,以及基因学、医疗影像、教育娱乐等领域产生赋能。“云计算、大数据会对各行各业的基础生态产生改变,阿里巴巴希望把已有的能力进行输出,给予更多的创新者、创业者以及政府机构和国内外的合作者们。

    四:发展历程
    2020年4月17日阿里云IoT和天猫精灵资源整合 开启“精灵伙伴计划” 
    2020年4月13日阿里云助力上海打造新经济标杆城市。
    2020年04月03日报道:在图像识别(Image Classification on ImageNet)榜单中,阿里云包揽了训练时间、训练成本、推理延迟以及推理成本四项第一,打破了谷歌等企业保持一年多的纪录。
    2020年3月19日,阿里云宣布,疫情期间向全球医院免费开放新冠肺炎AI诊断技术,20秒即可完成一次疑似病例的CT诊断,准确率达96%以上,可帮助海外疫情严重地区大幅节省医疗资源。

    2019年6月18日,阿里钉钉进入阿里云智能事业群,钉钉CEO陈航向阿里巴巴集团CTO兼阿里云智能事业群总裁张建锋汇报。
    2019年9月26日,在云栖大会上,阿里云智能副总裁、阿里云智能计算平台事业部总经理贾扬清宣布,阿里云与Facebook达成合作。Facebook旗下的开源深度学习框架PyTorch将进驻阿里云机器学习平台。
    2019年10月11日,阿里云确认拟全资收购长亭科技,收购完成后,长亭科技品牌及团队均保持独立。
    2019年10月25日,IDC公布中国金融云市场排名:阿里云第一。
    2019年10月31日,阿里云拟全资收购北京九州云腾科技有限公司。
    2019年12月3日,阿里云与Tridium宣布达成合作, Niagara 4架构接入阿里云AIoT平台。
    2019年12月3日,阿里云数字政府市场份额第一,同比增102.57%。

    2018年11月26日,阿里巴巴集团宣布阿里云升级阿里云智能,加强技术、智能互联网的投入和建设。
    2018年9月22日,2018杭州·云栖大会上,阿里云宣布成立全球交付中心。
    2018年7月,山东淄矿集团和阿里云计算公司签署协议,共同推动新旧动能转换合作项目

    2017年12月20日,阿里云在云栖大会·北京峰会上正式推出整合城市管理、工业优化、辅助医疗、环境治理、航空调度等全局能力为一体的ET大脑,全面布局产业AI。
    2017年1月,阿里巴巴成为奥运会“云服务”及“电子商务平台服务”的官方合作伙伴,为奥运会提供云计算和人工智能技术。 

    2016年11月,阿里云打破CloudSort世界记录,将100TB数据排序的计算成本降低到1/3。
    2016年11月,阿里云欧洲、中东、日本和澳洲区相继开服,实现全球互联网市场覆盖。
    2016年11月,飞天入选2016世界互联网最有代表性15项科技创新成果。
    2016年10月,阿里云与国家天文台合作,共同开展天体物理研究。
    2016年10月,杭州联手阿里云发布城市大脑,人工智能ET帮助治理交通。
    2016年8月,阿里云品牌形象升级,启用全新动态logo。
    2016年5月,阿里巴巴集团和日本软银公司宣布合作,携手拓展日本云计算市场。
    2016年4月,韩国第三大跨国企业SK集团和阿里云合作,携手拓展韩国云计算市场。
    2016年4月,阿里云发布专有云(Apsara Stack),支持企业客户在自己的数据中心部署飞天操作系统。
    2016年4月,阿里云人工智能ET基于神经网络、社会计算、情绪感知等原理,成功预测《我是歌手》冠军。
    2016年1月,阿里云发布一站式大数据平台“数加”,开放阿里巴巴十年的大数据处理能力,首批亮相20款产品。

    2015年11月,阿里云支撑了“双11”912亿元的交易额,每秒交易创建峰值达14万笔。
    2015年10月,Sort Benchmark2015年排序竞赛中,飞天用377秒完成100TB的数据排序,打破四项世界纪录。
    2015年10月,阿里云获得了以“真实技术能力和社会影响力”为评判标准的2015世界电信展卓越企业奖,成为唯一获奖的中国企业。
    2015年9月,华东数据中心启用,采用城市景观用水制冷。7月,阿里云联合中科院成立实验室,研制量子计算机。
    2015年7月,阿里巴巴集团对阿里云战略增资60亿。
    2015年6月,历经一年半时间,阿里巴巴和蚂蚁金服完成“登月计划”,将所有数据存储、计算任务全部迁移至飞天平台。
    2015年5月,阿里云中标海关“金关工程二期”大数据云项目订单。
    2015年5月,迪拜领军企业Meraas控股集团和阿里云合作,成立新的技术型企业。4月,中石化与阿里云开展技术合作,升级商业服务模式。
    2015年3月,阿里云美西数据中心投入试运营,向北美乃至全球用户提供云计算服务。1月,12306将车票查询业务部署在阿里云上,春运高峰分流了75%的流量。

    2014年12月,阿里云帮助一家游戏公司,抵御了全球互联网史上最大DDoS的攻击。
    2014年8月,阿里云发布云合计划,招募1万家云服务商,构建云生态系统。7月,阿里云发布大数据计算平台MaxCompute,中小公司花几百元即可开始分析海量数据。
    2014年5月,阿里云香港区开服,成为中国第一家提供海外云计算服务的公司。
    2013年12月,阿里云计算获得全球首张云安全国际认证金牌(CSA-STAR)。11月,阿里云推出金融云服务,开启互联网金融快捷通道。9月,余额宝全部核心系统迁移至阿里云,天弘基金成为中国最大规模货币基金。
    2013年8月,阿里云成为世界上第一个对外提供5K云计算服务能力的公司。1月,阿里云合并万网域名等业务。
    2012年11月,阿里云首家获得ISO27001信息安全管理体系国际认证。
    2012年6月,阿里云全程支持了央视对欧洲杯24场赛事的网络直播。
    2011年7月,阿里云官网上线,开始大规模对外提供云计算服务。
    2010年5月,阿里云对外公测。
    2010年4月,阿里金融订单贷款产品“牧羊犬”踏出了第一步,成功在飞天平台上线。
    2009年9月,阿里云计算有限公司正式成立。
    2009年2月,飞天团队在北京写下第一行代码。
    2008年10月,飞天团队正式组建。
    2008年9月,阿里巴巴确定“云计算”和“大数据”战略,决定自主研发大规模分布式计算操作系统“飞天

    五:飞天操作系统
    飞天(Apsara)诞生于2009年2月,是由阿里云自主研发、服务全球的超大规模通用计算操作系统,为全球200多个国家和地区的创新创业企业、政府、机构等提供服务。飞天希望解决人类计算的规模、效率和安全问题。它可以将遍布全球的百万级服务器连成一台超级计算机,以在线公共服务的方式为社会提供计算能力。飞天的革命性在于将云计算的三个方向整合起来:提供足够强大的计算能力,提供通用的计算能力,提供普惠的计算能力。

    飞天管理着互联网规模的基础设施。最底层是遍布全球的几十个数据中心,数百个PoP节点。飞天所管理的这些物理基础设施还在不断扩张。
    飞天内核跑在每个数据中心里面,它负责统一管理数据中心内的通用服务器集群,调度集群的计算、存储资源,支撑分布式应用的部署和执行,并自动进行故障恢复和数据冗余。
    安全管理根植在飞天内核最底层。飞天内核提供的授权机制,能够有效实现“最小权限原则(Principle of least privilege)”。同时,还建立了自主可控的全栈安全体系。
    监控报警诊断是飞天内核的最基本能力之一。飞天内核对上层应用提供了详细的、无间断的监控数据和系统事件采集,能够回溯到发生问题的那一刻现场,帮助工程师找到问题的根源。
    在基础公共模块之上,有两个最核心的服务,一个叫盘古,一个叫伏羲。盘古是存储管理服务,伏羲是资源调度服务,飞天内核之上应用的存储和资源的分配都是由盘古和伏羲管理。
    在基础公共模块边上,还有一个服务,叫做天基。意思是“飞天的基础”。天基是飞天的自动化运维服务,负责飞天各个子系统的部署、升级、扩容以及故障迁移。

    飞天核心服务分为:计算、存储、数据库、网络。
    为了帮助开发者便捷地构建云上应用,飞天提供了丰富的连接、编排服务,将这些核心服务方便地连接和组织起来,包括:通知、队列、资源编排、分布式事务管理等等。
    飞天接入层包括数据传输服务,数据库同步服务,CDN内容分发以及混合云高速通道等服务。 
    飞天最顶层是阿里云打造的软件交易与交付第一平台------云市场。它如同云计算的“App Store”,用户可在阿里云官网一键开通“软件+云计算资源”。云市场上架在售商品几千个,支持镜像、容器、编排、API、SaaS、服务、下载等类型的软件与服务接入。
    飞天有一个全球统一的账号体系。灵活的认证授权机制让云上资源可以安全灵活地在租户内或租户间共享。
    七年实践,飞天已经建立一个完善的云产品体系。同时还能提供互联网级别的租户管理和业务支撑服务。

    六:安全性
    阿里云从诞生第一天起就将安全认作头等大事。目前,每一天,阿里云帮助全中国(大陆)37%的网站,防御2000次DDoS攻击。 
    从2016年1月 - 2016年10月,阿里云云盾帮助用户修复漏洞(0DAY) 47万次,防御DDoS攻击总数128万次,积累250万个恶意IP。
    2015年10月,阿里云云盾防御DDoS记录达477G Gbps (峰值流量,来自某游戏用户),相当于20万人同时在线上网。
    除了持续不断地夯实云平台安全,阿里云还积极参与国际性会议的网络安全保障工作,先后为G20杭州峰会、乌镇世界互联网大会提供技术支持。
    7年来,阿里云在合规方面的积累已经得到多方监管和审计机构的认可,如全球首个CSA-STAR认证金牌、首个通过全球权威机构数据安全审计的云服务商、新加坡MTCS T3最高级认证、首批通过中央网信办云服务网络安全审查增强级的政务云平台、首个通过公安部云等保四级测评的云平台等。阿里云已经成为亚太地区合规、认证最完备的云计算平台。
    对客户信息的保护:阿里云发起数据保护倡议
    2015年7月,阿里云面向全社会、全行业,率先发起“数据保护倡议”,首次定义行业标准------
    1、任何运行在云计算平台上的开发者、公司、政府、社会机构的数据,所有权绝对属于客户,客户可以自由安全地使用、分享、交换、转移、删除这些数据。
    2、客户有权利选择安全的服务来运行数据,云计算平台不得将这些数据移作它用。
    3、如同银行有义务捍卫客户的资金,云计算平台也有义务捍卫客户的数据。云计算平台有责任和义务建立严密的管控体系和内部审计制度,更应不懈地提高安全防护、容灾备份等方面的能力,帮助客户保障其数据的私密性、完整性和可用性。

    七:全球权威认可以及相关证书
    2019年11月15日,阿里云获得由国际知名标准认证机构BSI颁发的ISO/IEC 27701:2019隐私保护认证,这是业内最具权威性的隐私管理体系建设指导标准,再一次体现了阿里云坚守用户数据隐私保护的承诺。目前,阿里云已通过100多项合规认证和第三方审计,是亚洲权威合规资质最全的云服务商。
    阿里云已经获得包括ISO/IEC27701:2019、ISO/IEC 29151:2017、ISO/IEC27018:2014、BS 10012:2017在内的所有关于隐私保护标准认证的“全满贯“

    展开全文
  • Web Components 是个什么样的东西

    万次阅读 2016-08-31 11:01:33
    前端组件化这主题相关的内容已经火了很久很久,angular 刚出来时的 Directive 到 angular2 的 components,还有 React 的components 等等,无一不是前端组件化的一种实现和探索,但是提上议程的 Web ...

    前端组件化这个主题相关的内容已经火了很久很久,angular 刚出来时的 Directive 到 angular2 的 components,还有 React 的components 等等,无一不是前端组件化的一种实现和探索,但是提上议程的 Web Components 标准是个怎样的东西,相关的一些框架或者类库,如 React,Angular2,甚至是 x-tag,polymer 现在实现的组件化的东西和 Web Components 标准差别在哪里?我花时间努力地把现有的 W3C Web Components 文档看了下,然后坚强地写下这些记录。

    首先我们需要知道,Web Components 包括了四个部分:

    这四部分有机地组合在一起,才是 Web Components。

    可以用自定义的标签来引入组件是前端组件化的基础,在页面引用 HTML 文件和 HTML 模板是用于支撑编写组件视图和组件资源管理,而 Shadow DOM 则是隔离组件间代码的冲突和影响。

    下边分别是每一部分的笔记内容。

    Custom Elements

    概述

    Custom Elements 顾名思义,是提供一种方式让开发者可以自定义 HTML 元素,包括特定的组成,样式和行为。支持 Web Components 标准的浏览器会提供一系列 API 给开发者用于创建自定义的元素,或者扩展现有元素。

    这一项标准的草案还处于不稳定的状态,时有更新,API 还会有所变化,下边的笔记以 Cutsom Elements 2016.02.26 这个版本为准,因为在最新的 chrome 浏览器已经是可以工作的了,这样可以使用 demo 来做尝试,最后我会再简单写一下最新文档和这个的区别。

    registerElement

    首先,我们可以尝试在 chrome 控制台输入 HTMLInputElement,可以看到是有这么一个东西的,这个理解为 input DOM 元素实例化时的构造函数,基础的是 HTMLElement

    Web Components 标准提出提供这么一个接口:

    document.registerElement('x-foo', {
      prototype: Object.create(HTMLElement.prototype, {
        createdCallback: {      
          value: function() { ... }
        },
        ...
      })
    })

    你可以使用 document.registerElement 来注册一个标签,标准中为了提供 namesapce 的支持,防止冲突,规定标签类型(也可以理解为名字)需要使用 - 连接。同时,不能是以下这一些:

    • annotation-xml

    • color-profile

    • font-face

    • font-face-src

    • font-face-uri

    • font-face-format

    • font-face-name

    • missing-glyph

    第二个参数是标签相关的配置,主要是提供一个 prototype,这个原型对象是以 HTMLElement 等的原型为基础创建的对象。然后你便可以在 HTML 中去使用自定义的标签。如:

    <div>
      <x-foo></x-foo>
    </div>

    是不是嗅到了 React 的味道?好吧,React 说它自己主要不是做这个事情的。

    生命周期和回调

    在这个 API 的基础上,Web Components 标准提供了一系列控制自定义元素的方法。我们来一一看下:

    一个自定义元素会经历以下这些生命周期:

    • 注册前创建

    • 注册自定义元素定义

    • 在注册后创建元素实例

    • 元素插入到 document 中

    • 元素从 document 中移除

    • 元素的属性变化时

    这个是很重要的内容,开发者可以在注册新的自定义元素时指定对应的生命周期回调来为自定义元素添加各种自定义的行为,这些生命周期回调包括了:

    • createdCallback
      自定义元素注册后,在实例化之后会调用,通常多用于做元素的初始化,如插入子元素,绑定事件等。

    • attachedCallback
      元素插入到 document 时触发。

    • detachedCallback
      元素从 document 中移除时触发,可能会用于做类似 destroy 之类的事情。

    • attributeChangedCallback
      元素属性变化时触发,可以用于从外到内的通信。外部通过修改元素的属性来让内部获取相关的数据并且执行对应的操作。

    这个回调在不同情况下有对应不同的参数:

    • 设置属性时,参数列表是:属性名称,null,值,命名空间

    • 修改属性时,参数列表是:属性名称,旧值,新值,命名空间

    • 删除属性时,参数列表是:属性名称,旧值,null,命名空间

    好了,就上边了解到的基础上,假设我们要创建一个自定义的 button-hello 按钮,点击时会 alert('hello world'),代码如下:

    document.registerElement('button-hello', {
      prototype: Object.create(HTMLButtonElement.prototype, {
        createdCallback: {
          value: function createdCallback() {
            this.innerHTML = '<button>hello world</button>'
            this.addEventListener('click', () => {
              alert('hello world')
            })
          }
        }
      })
    })

    要留意上述代码执行之后才能使用 <button-hello></button-hello>

    扩展原有元素

    其实,如果我们需要一个按钮,完全不需要重新自定义一个元素,Web Components 标准提供了一种扩展现有标签的方式,把上边的代码调整一下:

    document.registerElement('button-hello', {
      prototype: Object.create(HTMLButtonElement.prototype, {
        createdCallback: {
          value: function createdCallback() {
            this.addEventListener('click', () => {
              alert('hello world')
            })
          }
        }
      }),
      extends: 'button'
    })

    然后在 HTML 中要这么使用:

    <button is="button-hello">hello world</button>

    使用 is 属性来声明一个扩展的类型,看起来也蛮酷的。生命周期和自定义元素标签的保持一致。

    当我们需要多个标签组合成新的元素时,我们可以使用自定义的元素标签,但是如果只是需要在原有的 HTML 标签上进行扩展的话,使用 is 的这种元素扩展的方式就好。

    原有的 createElement 和 createElementNS,在 Web Components 标准中也扩展成为支持元素扩展,例如要创建一个 button-hello

    const hello = document.createElement('button''button-hello')

    标准文档中还有很多细节上的内容,例如接口的参数说明和要求,回调队列的实现要求等,这些更多是对于实现这个标准的浏览器开发者的要求,这里不做详细描述了,内容很多,有兴趣的自行查阅:Cutsom Elements 2016.02.26

    和最新版的区别

    前边我提到说文档的更新变化很快,截止至我写这个文章的时候,最新的文档是这个:Custom Elements 2016.07.21

    细节不做描述了,讲讲我看到的最大变化,就是向 ES6 靠拢。大致有下边三点:

    • 从原本的扩展 prototype 来定义元素调整为建议使用 class extends 的方式

    • 注册自定义元素接口调整,更加方便使用,传入 type 和 class 即可

    • 生命周期回调调整,createdCallback 直接用 class 的 constructor

    前两个点,我们直接看下代码,原本的代码按照新的标准,应该调整为:

    class ButtonHelloElement extends HTMLButtonElement {
      constructor() {
        super()
    
        this.addEventListener('click', () => {
          alert('hello world')
        })
      }
    }
    
    customElements.define('button-hello', ButtonHelloElement, { extends: 'button' })

    从代码上看会感觉更加 OO,编写上也比原本要显得方便一些,原本的生命周期回调是调整为新的:

    • constructor in class 作用相当于原本的 createdCallback

    • connectedCallback 作用相当于 attachedCallback

    • disconnectedCallback 作用相当于 detachedCallback

    • adoptedCallback 使用 document.adoptNode(node) 时触发

    • attributeChangedCallback 和原本保持一致

    connect 事件和插入元素到 document 有些许区别,主要就是插入元素到 document 时,元素状态会变成 connected,这时会触发 connectedCallback,disconnect 亦是如此。

    HTML Imports

    概述

    HTML Imports 是一种在 HTMLs 中引用以及复用其他的 HTML 文档的方式。这个 Import 很漂亮,可以简单理解为我们常见的模板中的 include 之类的作用。

    我们最常见的引入一个 css 文件的方式是:

    <link rel="stylesheet" href="/css/master.css">

    Web Components 现在提供多了一个这个:

    <link rel="import" href="/components/header.html">

    HTMLLinkElement

    原本的 link 标签在添加了 HTML Import 之后,多了一个只读的 import 属性,当出现下边两种情况时,这个属性为 null

    • 该 link 不是用来 import 一个 HTML 的。

    • 该 link 元素不在 document 中。

    否则,这个属性会返回一个表示引入的 HTML 文件的文档对象,类似于 document。比如说,在上边的代码基础上,可以这样做:

    const link = document.querySelector('link[rel=import]')
    const header = link.import;
    
    const pulse = header.querySelector('div.logo');

    阻塞式

    我们要知道的是,默认的 link 加载是阻塞式的,除非你给他添加一个 async 标识。

    阻塞式从某种程度上讲是有必要的,当你 improt 的是一个完整的自定义组件并且需要在主 HTML 中用标签直接使用时,非阻塞的就会出现错误了,因为标签还没有被注册。

    document

    有一点值得留意的是,在 import 的 HTML 中,我们编写的 script 里边的 document 是指向 import 这个 HTML 的主 HTML 的 document。

    如果我们要获取 import 的 HTML 的 document 的话,得这么来:

    const d = document.currentScript.ownerDocument

    这样设计是因为 import 进来的 HTML 需要用到主 HTML 的 document。例如我们上边提到的 registerElement

    在一个被 import 的 HTML 文件中使用下边三个方法会抛出一个 InvalidStateError 异常:

    • document.open()

    • document.write()

    • document.close()

    对于 HTML Import,标准文档中还有很大一部分内容是关于多个依赖加载的处理算法的,在这里就不详述了,有机会的话找时间再开篇谈,这些内容是需要浏览器去实现的。

    HTML Templates

    概述

    这个东西很简单,用过 handlebars 的人都知道有这么一个东西:

    <script id="template" type="text/x-handlebars-template">
      ...
    </script>

    其他模板引擎也有类似的东西,那么 HTML Templates 便是把这个东西官方标准化,提供了一个 template 标签来存放以后需要但是暂时不渲染的 HTML 代码。

    以后可以这么写了:

    <template id="template">
      ...
    </template>

    接口和应用

    template 元素有一个只读的属性 content,用于返回这个 template 里边的内容,返回的结果是一个 DocumentFragment

    具体是如何使用的,直接参考官方给出的例子:

    <!doctype html>
    <html lang="en">
      <head>
        <title>Homework</title>
      <body>
        <template id="template"><p>Smile!</p></template>
        <script>
          let num = 3;
          const fragment = document.getElementById('template').content.cloneNode(true);
          while (num-- > 1) {
            fragment.firstChild.before(fragment.firstChild.cloneNode(true));
            fragment.firstChild.textContent += fragment.lastChild.textContent;
          }
          document.body.appendChild(fragment);
        </script>
    </html>

    使用 DocumentFragment 的 clone 方法以 template 里的代码为基础创建一个元素节点,然后你便可以操作这个元素节点,最后在需要的时候插入到 document 中特定位置便可以了。

    Template 相关的东西不多,而且它现在已经是纳入生效的 标准文档 中了。

    我们接下来看看重磅的 Shadow DOM。

    Shadow DOM

    概述

    Shadow DOM 好像提出好久了,最本质的需求是需要一个隔离组件代码作用域的东西,例如我组件代码的 CSS 不能影响其他组件之类的,而 iframe 又太重并且可能有各种奇怪问题。

    可以这么说,Shadow DOM 旨在提供一种更好地组织页面元素的方式,来为日趋复杂的页面应用提供强大支持,避免代码间的相互影响。

    看下在 chrome 它会是咋样的:

    我们可以通过 createShadowRoot() 来给一个元素节点创建 Shadow Root,这些元素类型必须是下边列表的其中一个,否则会抛出 NotSupportedError 异常。

    • 自定义的元素

    • article

    • aside

    • blockquote

    • body

    • div

    • header, footer

    • h1, h2, h3, h4, h5, h6

    • nav

    • p

    • section

    • span

    createShadowRoot() 是现在 chrome 实现的 API,来自文档:https://www.w3.org/TR/2014/WD...。最新的文档 API 已经调整为 attachShadow()

    返回的 Shadow Root 对象从 DocumentFragment 继承而来,所以可以使用相关的一些方法,例如shadowRoot.getElementById('id') 来获取 Shadow DOM 里边的元素。

    简单的使用如下:

    const div = document.getElementById('id')
    const shadowRoot = div.createShadowRoot()
    const span = document.createElement('span')
    
    span.textContent = 'hello world'
    shadowRoot.appendChild(span)

    在这里,我把这个 div 成为是这个 Shadow DOM 的 宿主元素,下边的内容会延续使用这个称呼。

    Shadow DOM 本身就为了代码隔离而生,所以在 document 上使用 query 时,是没法获取到 Shadow DOM 里边的元素的,需要在 Shadow Root 上做 query 才行。

    在这里附上一个文档,里边有详细的关于新的标准和现在 blink 引擎实现的 Shadow DOM 的区别,官方上称之为 v0 和 v1:Shadow DOM v1 in Blink

    API

    Shadow Root 除了从 DocumentFragment 继承而来的属性和方法外,还多了另外两个属性:

    • host 只读属性,用来获取这个 Shadow Root 所属的元素

    • innerHTML 用来获取或者设置里边的 HTML 字符串,和我们常用的 element.innerHTML 是一样的

    另外,在最新的标准文档中,元素除了上边提到的 attachShadow 方法之外,还多了三个属性:

    • assignedSlot 只读,这个元素如果被分配到了某个 Shadow DOM 里边的 slot,那么会返回这个对应的 slot 元素

    • slot 元素的 slot 属性,用来指定 slot 的名称

    • shadowRoot 只读,元素下面对应的 Shadow Root 对象

    slot 是什么?接着看下边的内容,看完下一节的最后一部分就会明白上述内容和 slot 相关的两个 API 有什么作用。

    slot

    slot 提供了在使用自定义标签的时候可以传递子模板给到内部使用的能力,可以简单看下 Vue 的一个例子。

    我们先来看下现在 chrome 可以跑的 v0 版本,这一个版本是提供了一个 content 标签,代表了一个占位符,并且有一个 select 属性用来指定使用哪些子元素。

    <!-- component input-toggle template -->
    <input type="checkbox"></input>
    <content select=".span"></content>

    自定义的元素里边的子元素代码是这样的:

    <input-toggle name="hello">
      <span>hello</span>
      <span class="span">test</span>
    </input-toggle>

    那么展现的结果会和下边的代码是一样的:

    <input-toggle name="hello">
      <input type="checkbox"></input>
      <span class="span">test</span>
    </input-toggle>

    这里只是说展现结果,实际上,input-toggle 里边应该是创建了一个 Shadow DOM,然后 content 标签引用了目标的 span 内容,在 chrome 看是这样的:

    然后,是最新标准中的 slot 使用方式,直接上例子代码:

    <!-- component input-toggle template -->
    <input type="checkbox"></input>
    <slot name="text"></slot>

    在自定义的元素标签是这么使用 slot 的:

    <input-toggle name="hello">
      <input type="checkbox"></input>
      <span class="span" slot="text">test</span>
    </input-toggle>

    通过 slot="text" 的属性来让元素内部的 slot 占位符可以引用到这个元素,多个元素使用这个属性也是可以的。这样子我们便拥有了使用标签是从外部传 template 给到自定义元素的内部去使用,而且具备指定放在那里的能力。

    CSS 相关

    因为有 Shadow DOM 的存在,所以在 CSS 上又添加了很多相关的东西,其中一部分还是属于讨论中的草案,命名之类的可能会有变更,下边提及的内容主要来自文档:Shadow DOM in CSS scoping 1,很多部分在 chrome 是已经实现的了,有兴趣可以写 demo 试试。

    因为 Shadow DOM 很大程度上是为了隔离样式作用域而诞生的,主文档中的样式规则不对 Shadow DOM 里的子文档生效,子文档中的样式规则也不影响外部文档。

    但不可避免的,在某些场景下,我们需要外部可以控制 Shadow DOM 中样式,如提供一个组件给你,有时候你会希望可以自定义它内部的一些样式,同时,Shadow DOM 中的代码有时候可能需要能够控制其所属元素的样式,甚至,组件内部可以定义上边提到的通过 slot 传递进来的 HTML 的样式。所以呢,是的,CSS 选择器中添加了几个伪类,我们一一来看下它们有什么作用。

    在阅读下边描述的时候,请留意一下选择器的代码是在什么位置的,Shadow DOM 内部还是外部。

    :host 用于在 Shadow DOM 内部选择到其宿主元素,当它不是在 Shadow DOM 中使用时,便匹配不到任意元素。

    在 Shadow DOM 中的 * 选择器是无法选择到其宿主元素的。

    :host( <selector> ) 括号中是一个选择器,这个可以理解为是一个用于兼容在主文档和 Shadow DOM 中使用的方法,当这个选择器在 Shadow DOM 中时,会匹配到括号中选择器对应的宿主元素,如果不是,则匹配括号中选择器能够匹配到的元素。

    文档中提供了一个例子:

    <x-foo class="foo">
      <"shadow tree">
        <div class="foo">...</div>
      </>
    </x-foo>

    在这个 shadow tree 内部的样式代码中,会有这样的结果:

    • :host 匹配 <x-foo> 元素

    • x-foo 匹配不到元素

    • .foo 只匹配到 <div> 元素

    • .foo:host 匹配不到元素

    • :host(.foo) 匹配 <x-foo> 元素

    :host-context( <selector> ),用于在 Shadow DOM 中来检测宿主元素的父级元素,如果宿主元素或者其祖先元素能够被括号中的选择器匹配到的话,那么这个伪类选择器便匹配到这个 Shadow DOM 的宿主元素。个人理解是用于在宿主元素外部元素满足一定的条件时添加样式。

    ::shadow 这个伪类用于在 Shadow DOM 外部匹配其内部的元素,而 /deep/ 这个标识也有同样的作用,我们来看一个例子:

    <x-foo>
       <"shadow tree">
         <div>
           <span id="not-top">...</span>
         </div>
         <span id="top">...</span>
       </>
     </x-foo>

    对于上述这一段代码的 HTML 结构,在 Shadow DOM 外部的样式代码中,会是这样的:

    • x-foo::shadow > span 可以匹配到 #top 元素

    • #top 匹配不到元素

    • x-foo /deep/ span 可以匹配到 #not-top 和 #top 元素

    /deep/ 这个标识的作用和我们的 > 选择器有点类似,只不过它是匹配其对应的 Shadow DOM 内部的,这个标识可能还会变化,例如改成 >> 或者 >>> 之类的,个人感觉, >> 会更舒服。

    最后一个,用于在 Shadow DOM 内部调整 slot 的样式,在我查阅的这个文档中,暂时是以 chrome 实现的为准,使用 ::content 伪类,不排除有更新为 ::slot 的可能性。我们看一个例子来了解一下,就算名称调整了也是差不多的用法:

    <x-foo>
      <div id="one" class="foo">...</div>
      <div id="two">...</div>
      <div id="three" class="foo">
        <div id="four">...</div>
      </div>
      <"shadow tree">
        <div id="five">...</div>
        <div id="six">...</div>
        <content select=".foo"></content>
      </"shadow tree">
    </x-foo>

    在 Shadow DOM 内部的样式代码中,::content div 可以匹配到 #one#three 和 #four,留意一下 #two 为什么没被匹配到,因为它没有被 content 元素选中,即不会进行引用。如果更换成 slot 的 name 引用的方式亦是同理。

    层叠规则,按照这个文档的说法,对于两个优先级别一样的 CSS 声明,没有带 !important 的,在 Shadow DOM 外部声明的优先级高于在 Shadow DOM 内部的,而带有 !important 的,则相反。个人认为,这是提供给外部一定的控制能力,同时让内部可以限制一定的影响范围。

    继承方面相对简单,在 Shadow DOM 内部的顶级元素样式从宿主元素继承而来。

    至此,Web Components 四个部分介绍结束了,其中有一些细节,浏览器实现细节,还有使用上的部分细节,是没有提及的,因为详细记录的话,还会有很多东西,内容很多。当使用过程中有疑问时可以再次查阅标准文档,有机会的话会再完善这个文章。下一部分会把这四个内容组合起来,整体看下 Web Components 是怎么使用的。

    Web Components

    Web Components 总的来说是提供一整套完善的封装机制来把 Web 组件化这个东西标准化,每个框架实现的组件都统一标准地进行输入输出,这样可以更好推动组件的复用。结合上边各个部分的内容,我们整合一起来看下应该怎么使用这个标准来实现我们的组件:

    <!-- components/header.html -->
    <template id="">
    <style>
    ::content li {
      display: inline-block;
      padding: 20px 10px;
    }
    </style>
    <content select="ul"></content>
    </template>
    <script>
    (function() {
      const element = Object.create(HTMLInputElement.prototype)
      const template = document.currentScript.ownerDocument.querySelector('template')
    
      element.createdCallback = function() {
        const shadowRoot = this.createShadowRoot()
        const clone = document.importNode(template.content, true)
        shadowRoot.appendChild(clone)
    
        this.addEventListener('click', function(event) {
          console.log(event.target.textContent)
        })
      }
    
      document.registerElement('test-header', { prototype: element })
    })()
    </script>

    这是一个简单的组件的例子,用于定义一个 test-header,并且给传递进来的子元素 li 添加了一些组件内部的样式,同时给组件绑定了一个点击事件,来打印点击目标的文本内容。

    看下如何在一个 HTML 文件中引入并且使用一个组件:

    <!-- index.html -->
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title></title>
    
        <link rel="import" href="components/header.html">
      </head>
      <body>
        <test-header>
          <ul>
            <li>Home</li>
            <li>About</li>
          </ul>
        </test-header>
      </body>
    </html>

    一个 import 的 <link> 把组件的 HTML 文件引用进来,这样会执行组件中的脚本,来注册一个 test-header 元素,这样子我们便可以在主文档中使用这个元素的标签。

    上边的例子是可以在 chrome 正常运行的。

    所以,根据上边简单的例子可以看出,各个部分的内容是有机结合在一起,Custom Elements 提供了自定义元素和标签的能力,template 提供组件模板,import 提供了在 HTML 中合理引入组件的方式,而 Shadow DOM 则处理组件间代码隔离的问题。

    不得不承认,Web Components 标准的提出解决了一些问题,必须交由浏览器去处理的是 Shadow DOM,在没有 Shadow DOM 的浏览器上实现代码隔离的方式多多少少有缺陷。个人我觉得组件化的各个 API 不够简洁易用,依旧有 getElementById 这些的味道,但是交由各个类库去简化也可以接受,而 import 功能上没问题,但是加载多个组件时性能问题还是值得商榷,标准可能需要在这个方面提供更多给浏览器的指引,例如是否有可能提供一种单一请求加载多个组件 HTML 的方式等。

    在现在的移动化趋势中,Web Components 不仅仅是 Web 端的问题,越来越多的开发者期望以 Web 的方式去实现移动应用,而多端复用的实现渐渐是以组件的形式铺开,例如 React Native 和 Weex。所以 Web Components 的标准可能会影响到多端开发 Web 化的一个模式和发展。

    最后,再啰嗦一句,Web Components 个人觉得还是未来发展趋势,所以才有了这个文章。

    展开全文
  • 我们知道在互联网上,如果想要被其他终端访问,就需要给每台主机(或路由器)的每一接口分配一在全世界范围内是唯一的标识符,这就是我们所说...一、什么是ip地址? 简介( IPv4): IPv4地址由四段组成,每...

    我们知道在互联网上,如果想要被其他终端访问,就需要给每台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的标识符,这就是我们所说的唯一的IP地址。IP协议就是使用这个地址在主机之间传递信息,这是Internet能够运行的基础。

    注意:由于现在我们依然使用的是IPv4地址,以下介绍内容以IPv4为基础。

    ip地址

    一、什么是ip地址?
    简介( IPv4):

    IPv4地址由四段组成,每个字段是一个字节,即4个字节、每个字节有8位, 最大值是255(=256:0~255)。 全世界范围是唯一的
    32 位(4个字节 * 8位)的标识符。 IP地址由两部分组成,即网络地址和主机地址,二者是主从关系:

    1. 网络号 net-id,它标志主机(或路由器)所连接到的网络,网络地址表示其属于互联网的哪一个网络
    2. 主机号 host-id,它标志该主机(或路由器),主机地址表示其属于该网络中的哪一台主机。

    两级的 IP 地址可以记为: IP 地址 ::= { <网络号>, <主机号>} 简而言之就是:IP地址 = 网络号+主机号

    二、我们先来简单看一下互联网如何通过ip地址访问的?这个过程是怎样的呢?

    通过路由器,路由设备当中有一张路由表,该路由表记录了所有ip地址的位置,这样就可以进行包的转发了,如果我们不区分网络地址,那么这张路由表当中就要保存有所有IP地址的方向,这张路由表就会很大,所以我们的ip地址由网络号和主机号组成

    • 如果不分网络号和主机号呢?

    不区分的话,那路由器的路由表就都是32位地址,这样一来路由器维护的路由表会很大,转发速度会变慢(因为查询变慢)。而且为了终端可以相互访问,所有的路由器就要求要有全Internet的地址,所有人的路由器都要有足够的内存来存下全网地址。这样的建造成本会是现在的几千几万倍,甚至更高,估计路由器都买不起了。所以有了网络地址,就可以限定拥有相同网络地址的终端都在同一个范围内,那么路由表只需要维护这个网络地址的方向,就可以找到相应的终端了。既降低了成本又简化了过程,前人真是太聪明了啊。


    ip地址分类

    IP地址编址方案:IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用。
    其中A、B、C3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址。

    类别最大网络数IP地址范围单个网段最大主机数私有IP地址范围
    A126(2^7-2)0.0.0.0 ~ 127.255.255.2551677721410.0.0.0 ~ 10.255.255.255
    B16384(2^14)128.0.0.0 ~ 191.255.255.25565534172.16.0.0 ~ 172.31.255.255
    C2097152(2^21)192.0.0.0 ~ 223.255.255.255254192.168.0.0 ~ 192.168.255.255

    A类地址
    一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。

    A类IP地址 地址范围1.0.0.0到127.255.255.255 (二进制表示为:00000001 00000000 00000000 00000000 - 01111111 11111111 11111111 11111111)。最后一个是广播地址。

    A:0-127,其中0代表任何地址,127为回环测试地址,因此,A类ip地址的实际范围是1-126.

    A类IP地址的默认子网掩码为255.0.0.0,每个网络支持的最大主机数为256的3次方-2=16777214台。

    B类地址
    一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。

    B类IP地址地址范围128.0.0.0-191.255.255.255(二进制表示为:10000000 00000000 00000000 00000000----10111111 11111111 11111111 11111111)。 最后一个是广播地址。

    B:128-191,其中128.0.0.0和191.255.0.0为保留ip

    实际范围是128.1.0.0–191.254.0.0
    B类IP地址的子网掩码为255.255.0.0,每个网络支持的最大主机数为256的2次方-2=65534台。

    C类地址

    一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。

    C类IP地址范围192.0.0.0-223.255.255.255(二进制表示为: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。

    C:192-223,其中192.0.0.0和223.255.255.0为保留ip

    实际范围是192.0.1.0–223.255.254.0

    C类IP地址的子网掩码为255.255.255.0,每个网络支持的最大主机数为256-2=254台

    D类IP地址
    D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。

    E类IP地址
    240.0.0.0~255.255.255.255
    特殊网址
    每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;

    IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;

    IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。

    IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。

    网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。


    地址区别

    • 公有地址
      公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
      在这里插入图片描述

    • 私有地址
      私有地址(Private address)属于非注册地址,专门为组织机构内部使用。

    以下列出留用的内部私有地址

    A类 10.0.0.0–10.255.255.255

    B类 172.16.0.0–172.31.255.255

    C类 192.168.0.0–192.168.255.255


    查询设置本机的IP

    开始 -> 运行 -> cmd -> ipconfig /all 可以查询本机的 ip 地址,以及子网掩码、网关、物理地址(Mac 地址)、DNS 等详细情况。

    设置本机的IP地址可以通过:网上邻居-> 属性 -> 本地连接 -> 属性 -> TCP/IP 就可以开始设置了。


    注意事项

    随着公网IP地址日趋紧张,中小企业往往只能得到一个或几个真实的C类IP地址。因此,在企业内部网络中,只能使用专用(私有)IP地址段。在选择专用(私有)IP地址时,应当注意以下几点:

    1、为每个网段都分配一个C类IP地址段,建议使用192.168.2.0–192.168.254.0段IP地址。由于某些网络设备(如宽带路由器或无线路由器)或应用程序(如ICS)拥有自动分配IP地址功能,而且默认的IP地址池往往位于192.168.0.0和192.168.1.0段,因此,在采用该IP地址段时,往往容易导致IP地址冲突或其他故障。所以,除非必要,应当尽量避免使用上述两个C类地址段。

    2、可采用C类地址的子网掩码,如果有必要,可以采用变长子网掩码。通常情况下,不要采用过大的子网掩码,每个网段的计算机数量都不要超过250台计算机。同一网段的计算机数量越多,广播包的数量越大,有效带宽就损失得越多,网络传输效率也越低。

    3、即使选用10.0.0.1–10.255.255.254或172.16.0.1–172.31.255.254段IP地址,也建议采用255.255.255.0作为子网掩码,以获取更多的IP网段,并使每个子网中所容纳的计算机数量都较少。当然,如果必要,可以采用变长子网掩码,适当增加可容纳的计算机数量。

    4、为网络设备的管理WLAN分配一个独立的IP地址段,以避免发生与网络设备管理IP的地址冲突,从而影响远程管理的实现。基于同样的原因,也要将所有的服务器划分至一个独立的网段。

    需要注意的是,不要以为同一网络的计算机分配不同的IP地址,就可以提高网络传输效率。事实上,同一网络内的计算机仍然处于同一广播域,广播包的数量不会由于IP地址的不同而减少,所以,仅仅是为计算机指定不同网段,并不能实现划分广播域的目的。若欲减少广播域,最根本的解决办法就是划分VLAN,然后为每个VLAN分别指定不同的IP网段。

    展开全文
  • 【互联网公司的“敏捷开发”流程是怎么的,每职位的角色和分工是什么?】 前言================================================ 1.本回答从属于“IT修真院”收藏夹系列第二篇,第一篇是IT职业介绍。 第一...
  • 【前端】【请求】什么是websocket?

    千次阅读 2018-05-11 10:08:56
    偶然在知乎上看到一篇回帖,瞬间觉得之前看的那么多...废话这么多了,最后再赞一~ 一、websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接...
  • 在上一讲《Hyperledger Fabric的逻辑架构是什么样的?》中,我们介绍了Fabric的逻辑架构,就是整个的技术组成部分。从应用程序端来看,包括了SDK、API、事件,通过SDK、API、事件来对底层区块链进行操作:包括身份...
  • 1.替换文件夹内所有文件匹配的字符串sed -i "s/旧内容/新内容/g" `grep 旧内容 -rl 文件夹路径`例如将/var/www/test文件夹下的所有文件内容中的abc字符串换成123sed -i "s/abc/123/g" `grep abc -rl /var/www/test`...
  • 怎么让EXCEL表格多单元格里的数值相加求和?有两种方法,第一种:如果多...你会看到单元格里显示为:=sum(a1:a10)第二种:如果多单元格的数量没有超过5个的话,可以进行手动计算机,在想求结果的单元格里...
  • python换行符是什么

    千次阅读 2021-01-11 21:25:11
    https://www.php.cn/python-tutorials-444429.htmlWindows换行符是'\r\n',Unix/Linux的换行符为'\n',Mac的换行符为'\r',在python中,对换行符进行了统一处理,定义为'\n。使用“\”进行换行输入:1、在python中,...
  • (文末有下载链接,不过依然建议亲们先阅读完文章)公共课的答题纸相信大家都了解过,就是一张一张答题卡。选择题用2B铅笔填涂,大题是一题目一框,只能在框内作答。类似下图:那么,专业课的答...
  • 软件工程之统一建模语言UML

    千次阅读 热门讨论 2019-11-19 16:33:53
    2、统一建模语言(UML)是一通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制...
  • 数字孪生将各专业技术集成为一数据模型,并将PLM(产品生命周期管理软件)、MOM(生产运营系统)和TIA(全集成自动化)集成在统一的数据平台下,也可以根据需要将供应商纳入平台,实现价值链数据的整合,业务领域...
  • 说起H5响应式网站,很多人第一时间的反应是:“HTML5网站拥有丰富的展示形式”、“H5网站的功能很多”、“响应式网站能够适应不同屏幕大小分辨率...今天小编带详细了解下,一html5响应式网站拥有什么样的特点与优势。
  • URL全称:Uniform Resource Location译为:统一资源定位符; 讲解URL首先我们要找完整例子好做解释; 如:“http://www.baidu.com/index.html?name=mo&age=25#dowell”这算是一比较完整的URL了 ,我就...
  • 软件项目运维内容 软件系统运维工作内容 ERP项目运维的内容包括哪些 企业资源管理ERP:在线ERP是针对物资资源管理(物流)、人力资源管理(人流)、财务资源管理(财流)、信息资源管理(信息流)集成一体化的...
  • SM有192core,8SM有1536core,这么多的线程并行执行需要有统一的管理,假如gpu每次在1536core上执行相同的指令,而需要计算这一指令的线程不足1536,那么就有core空闲,这对资源就是浪费,因此不能对...
  • PHP  PHP(Hypertext ...  PHP是完全免费的开源产品,不用花钱,Apache和MYSQL也是用免费开源,在国外非常流行,PHP和MYSQL搭配使用,可以非常快速的搭建一套不错的动态网站系统,因此国外大多数主机...
  • 从零开始搭建的意思,就是从需求分析,系统规划,设计分析和落地实践几步骤,从无到有的过程。考虑左右,为了个人学习和提升,选型基于流行的springboot+springcloud,从零开始搭建一套自己用于学习的研发平台。 ...
  • 生动的SDN基础内容介绍,讲述了SDN最基础的内容 生动的SDN基础内容介绍(一)--SDN基础结构
  • 1小时1篇文学会python再做飞机大战游戏

    万次阅读 多人点赞 2021-04-30 16:02:07
    小C:是的,我们创建一变量直接一名字,在这变量名右边用一等于号连接一值,那么这值就会存储到这变量中。 小媛:真简单。 小C:那你知道怎么存储一字符串吗? 小媛:知道呀,就这样。 a="1_bit" ...
  • 什么是中间件?

    千次阅读 多人点赞 2021-05-25 23:24:48
    一、百度百科 中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所...从这意义上可以用一等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件
  • Nginx是什么 ? 能干嘛 ?

    万次阅读 多人点赞 2019-02-18 10:22:00
    明白了什么是正向代理,我们继续看关于反向代理的处理方式,举例如我大天朝的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一大家耳熟能详的...
  • 简单聊聊离散数学是什么

    万次阅读 多人点赞 2020-07-26 16:40:30
    首先让我们来聊聊什么是离散数学 ? 从内容上来看,离散数学没有一确定的中心话题,内容很杂,粗略统计其涉及到主要概念如:集合、函数、关系、命题逻辑、谓词逻辑,到算法、计数、数据结构、递归、图论、概率、...
  • 云原生到底是什么?一文了解云原生四要素!

    万次阅读 多人点赞 2020-02-08 15:24:08
    所谓云原生,它不是一产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。更确切地说,它是一种文化,更是一种潮流,是云计算的一必然导向。 随着虚拟化技术的成熟和分布式...
  • 内容管理系统CMS学习总结

    千次阅读 2016-09-01 14:17:28
    CMS (内容管理系统) CMS是Content ...对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。 中文名 网站内容管理系统 外文名 CMS 全 名 Content Management System  意 为 内容管理系统
  • 什么是 DMP?

    万次阅读 多人点赞 2020-09-19 17:28:59
    对于业务介绍,比较困难的是理解广告交易过程中各个参与者是干什么的 对于技术实现,大致就是如下两步骤: 报表 标签化 报表显而易见,就是查看数据的组成,查看数据的图形直观特征 标签化是整个项目的目的,...
  • 最近正在做一手机APP的服务端API开发,虽然是基于Ruby on Rails的,做的也不太专业,不过大致相通,希望能够给你一些启发。 首先,如果是比较简单的手机APP,例如新闻客户端这样的不会涉及到长连接的服务,那么...
  • 什么是WPF,对WPF的认识

    万次阅读 2019-12-13 17:43:51
    一,什么是WPF WPF(Windows Presentation Foundation)翻译为中文“Windows呈现基础” 是微软新发布的Vista操作系统的三核心开发库之一,是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的...
  • 声明:本文转至Big大鸟的博客下,转载的名为《什么叫大数据 大数据的概念》一文,链接地址http://blog.csdn.net/qq_36738482/article/details/728235091、大数据定义 对于“大数据”(Big data)研究机构Gartner给...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,263
精华内容 46,105
关键字:

五个统一的内容是什么样的