从阿里中台战略看企业IT架构转型之道

Edison Chou 2019-05-15 22:42:00 阅读数:21 评论数:0 收藏数:0

此文是我阅读《企业IT架构转型之道》一书的学习笔记,所有内容出自钟华老师的这本书。

零、为何读《企业IT架构转型之道》

  在加入X公司后,开始了微服务架构的实践,也开始了共享平台服务的建设,在这方面阿里巴巴的中台战略是一个较好的参考。于是,领导就赠了这么一本《企业IT架构转型之道》给我,希望我学以致用,更多的是有这样的一个眼界去指导我们的中台架构设计。因此,我花了两周时间快速地阅读了一下此书,总结了此文作为学习笔记以供日后复习用。此书的确讲了一些干货,虽然很多内容留于表面,但是对于中台的定义和思考,建设中台的方法以及阿里中间件有比较完整的描述,和多年前出版的《淘宝技术这十年》以及《大型网站技术架构-核心原理与案例分析》一样,是一本值得学习的好书。

一、引子

Part 1 阿里中台战略引发的思考

  • 起源自2008年阿里巴巴三大电商体系的技术支持架构
    • 1688、淘宝、天猫三套电商体系架构完全独立
    • 三座烟囱分别矗立支撑阿里巴巴最核心的电商业务
  • 烟囱式系统建设系统对企业的“三大”弊端
    • 重复功能建设和维护带来的重复投资
    • 打通“烟囱式”系统间交互的集成和协作成本高昂
    • 不利于业务的沉淀和持续发展 => 对企业伤害最大
  • 企业信息中心的组织职能是业务支持?
    • 问题核心在于IT信息部门在现有模式下大多被高管定位为业务支持的部门 => 一个花钱的成本中心
    • 问题原因在于IT信息部门的人员不懂业务 => 这里的懂业务是指“能对业务的下一步发展有着自己的理解和看法,对业务流程如何进一步优化能更好的地提升业务,甚至对企业现有的业务提出创新的想法,为企业带来新的业务增长点。”
    • 问题结果导致了IT信息部门的人员很少能在一个业务领域做足够的业务沉淀 => 对业务知其然而不知其所以然

“烟囱式”的系统建设模式

Part 2 构建业务中台的基础—共享服务体系

  • SOA架构的核心价值
    • 服务重用 => 从服务重用到共享服务
  • 共享服务体系的建设:克服“烟囱式”架构的三大弊端
    • 避免重复功能建设和维护带来的成本浪费 => 没有实现系统业务互通的诉求
    • 最大程度避免打通不同系统间实现业务交互带来的集成和协作成本 => 各个应用在核心业务层已经实现了统一和畅通
    • 能够很好地培养出特定领域的专家 => “既精通业务,又熟悉技术”的复合型人才
  • 企业信息中心组织阵型的调整
    • 针对共享服务体系重新组织人员,使成员有机会成为业务领域的专家(复合型人才)
    • 最核心的角色是架构师,他们会是各服务中心的业务负责人
    • 信息团队会从“业务支持”的组织职能转向基于企业核心业务和数据进行运营的团队

阿里巴巴的“大中台”体系建设

PS:在阅读这一部分时,个人最大的感触就在于企业信息中心的境遇,我所在的公司是一个传统行业,我们部门是从2018年末开始扩建的信息中心,和广大企业信息中心一样,虽然无一不被认可信息部门对企业发展的重要地位,行政级别也和核心业务部门的级别相当,但是实际情况却是没有同样平等的话语权,因为在高层领导的眼里就只是单纯把信息中心定位为了业务支持部门,是一个花钱的成本中心。而造成这样处境的原因,也很赞同钟华老师在书中的观点,那就是信息部门的员工不懂业务,这里的不懂业务是指能对业务的下一步发展有着自己的理解和看法,对业务流程如何进一步优化能更好的地提升业务,甚至对企业现有的业务提出创新的想法,为企业带来新的业务增长点。而要提高信息部门的员工对于业务的精进,需要建设类似阿里巴巴的共享服务中心,服务需要不断的业务滋养才能足够强大地支持前线的士兵,也只有在滋养中才能从最初提供单薄业务功能的服务组件成长为企业最为宝贵的IT资产。正如钟华老师所示,未来在整个社会进入开放共享的时代,企业最大的价值将会是基于核心业务和数据进行对外开放的运营,到那时信息部门的共享服务体系将成为企业最为宝贵的资产。

二、共享服务体系的搭建

Part 3 分布式服务框架的选择

  • “中心化”与“去中心化”服务框架的对比
    • 服务调用方式的不同带来业务的响应和扩展成本:基于ESB的响应速度慢(因为网络开销大一倍),而要扩展ESB需要承担软硬件的不小投入(比如巨大的授权费)
    • 雪崩”效应束缚了“中心化”服务框架的扩展能力:不适合互联网企业的根本原因,因为一旦雪崩故障恢复的时间和成本都非常高昂!
  • 阿里巴巴的分布式服务框架HSF
    • 组成部分:服务提供者、服务调用者、地址服务器(Nginx)、配置服务器(服务注册&发现)、Diamond服务器(类似于Zookeeper)
    • 工作原理:服务节点对配置服务器列表的获取、服务的注册发布、服务的订阅、服务规则的推送(如果需要)、服务交互
    • 核心能力:Netty+Hession数据序列化协议实现服务交互(大并发量下的高性能)、容错机制(长连接+秒级感知)、线性扩展(增加服务实例即可扩展服务能力)
  • 关于微服务
    • 阿里巴巴2009年开始的共享服务体系算得上是微服务实践的先驱
    • 从本质上说,微服务是SOA的一种演变后的形态,与SOA的方法和原则没有本质上的差别
    • 微服务与SOA的两点最鲜明差异在于:
      • 传统SOA架构基于“中心化”的ESB构建,而微服务采用的是系统提供服务的方式实现系统间的互通;
      • 传统SOA实施的方式是项目制,而微服务是以做产品的方式让服务在业务发展过程中快速演化;
    • 概念一时爽,问题一堆堆:
      • 微服务化的应用架构的有效服务管控?
      • 分布式事务的难题?
      • 自动化运维和平台稳定性?
      • 微服务的服务设计?=> DDD

PS:微服务不是“免费的午餐”,阿里巴巴2009年开始的共享服务体系建设历程算得上是微服务架构的建设过程。正如钟华老师所说,“罗马不是一天建成的”,企业如果要构建微服务架构体系,也是需要多一份耐心的,通过服务能力在业务发展过程中的不断沉淀,当业务的能力沉淀到一个阶段后,才能真正感受到微服务架构给企业的业务发展带来的长远价值。

Part 4 共享服务中心建设原则

  • 服务中心的三个特征
    • 服务中心是伴随业务不断发展的:不做过于超前的设计,也不做过于理想化的架构
    • 服务中心的服务形态多样化:接口、工具、数据...
    • 一个服务中心还可以进一步划分:单个服务模块、多个服务模块...
  • 服务中心的划分原则
    • 更多靠的是架构设计经验总结,很难给出精确的量化指标
    • 一般来说会兼顾3个方面的需求:
      • 设计 => 遵循面向对象的分析和设计方法论
      • 运营 => 服务中心应该是一个完整额业务模型
      • 工程 => 综合评估业务层对服务中心在DB、业务以及运营方面的需求和技术上需要的投入
    • 实际中的一些基本原则:
      • 高内聚、低耦合原则
      • 数据完整性原则:特别强调大数据思维
      • 业务可运营性原则:服务中心是承载业务逻辑、沉淀业务数据、产生业务价值的业务单元
      • 渐进性的建设原则:小步快跑,服务化从简单开始!

 PS:记得张逸老师在《领域驱动战略设计实践》课程中的开篇提到他向DDD大师Eric Evans提问“如何正确地识别限界上下文?”,结果Eric Evans思考了一会儿,严肃地回答了一句:“By experience!”。这是一个正确的废话,但好像又蛮有道理。对于共享服务中心的建设和划分来说,也同样如此,更多的是依靠架构设计经验的总结,作者也很难给出一些具体问题给出一个精确的量化指标。正如作者所说,架构本来就是一个追求平衡的艺术,不仅是设计原则上的平衡,还要在技术、成本、资源、性能、团队等各方面进行平衡,以最高效地解决主要问题。

Part 5 数据拆分实现数据库能力线性扩展

  • 数据库分库分表的实践
    • 阿里巴巴分布式数据层平台发展演变:Cobar(2006) => TDDL(2008) => DRDS(2014)
    • 数据尽可能平均拆分:需要结合业务数据的结构和业务场景来决定
    • 尽量减少事务边界:“事务边界”指单个SQL语句在后端数据库上同时执行的数量
    • 异构索引表尽量降低全表扫描频率:“拿空间换时间”,阿里巴巴的精卫填海产品
    • 将多条件频繁查询引入搜索引擎平台:采用专业搜索引擎平台提供搜索服务,Lucene、Solr、ElasticSearch
    • 简单就是美:“数据尽可能平均拆分”作为第一优先考虑,82法则

PS:阿里巴巴的分布式数据层平台发展的演变可谓是一部技术驱动变革的历程,经历了一个又一个的技术难题,出现了一个又一个的开源/商用产品,提高了阿里巴巴的效率。印象深刻的地方在于,我们都有一个印象就是在数据库开发和调用时,要充分利用索引,避免全表扫描。但是,作者说到在真实的业务场景中很难完全避免全表扫描,比如对于订单进行复杂的分布式条件检索的时候,就会需要采用全表扫描,将查询语句同时推送到后端的数据库中才能实现该场景。但是,因为调用量不会很频繁,而且计算的数据量并不大,所以整体上不会给DB产生太大的影响。另外一个点就是,从系统风险的角度来看,以82法则,在实际中,作者建议仅对那些在80%情况下访问的那20%的场景进行如数据异构索引这样的处理,达到这类场景的性能最优化,而对于其他80%偶尔出现跨库join、全表扫描的场景,采取最为简单直接的方式往往就是最有效的方式。

Part 6 异步与缓存原则

  • 异步化
    • 业务流程异步化:服务异步调用,提升大量远程服务线性调用带来的性能问题
    • 数据库事务异步化:将大事务拆分成小事务,提升吞吐量和事务操作的响应时间
      • 事务 => 核心是ACID
      • 柔性事务 => 基础是CAP理论和BASE理论,因为互联网应用最核心的需求是高可用(BASE中的BA)
        • 解决分布式问题的机制:①日志和补偿机制、②可靠的消息传递、③无锁实现(避免事务回滚、辅助业务变化明细表、乐观锁等)
      • ACID与BASE一般在系统中会结合使用,追求最终一致性
  • 缓存
    • 小库存商品秒杀典型架构
      • 核心问题:处理好商品的库存的扣减,不出现超卖的情况
      • 核心方案:
        • 缓存商品的详细信息(包括库存),不直接访问后端数据库
        • 商品库存使用乐观锁,避免出现超卖
        • 商品库存控制业务流,只在下单环节才对数据库访问,降低数据库访问频率
    • 大库存商品大促架构
      • 核心问题:处理好库存更新的准确与用户等待时间的平衡
      • 核心方案:
        • 将缓存提升到为库存操作提供事务支持的角色 => 将订单交易创建环节在缓存服务器中运行,提高响应速度
        • 借助消息队列实现缓存服务器中的库存修改线性处理
        • 缓存服务故障时通过缓存数据和数据库订单信息还原订单处理的最新状态

PS:异步化与缓存两个技术都和我们的系统性能有很大的关联,在分布式应用架构中,如果没有这两项技术的引入,相信设计出来的应用很难有优质的性能表现。淘宝平台是一个典型的分布式服务架构,通过业务流程异步化提升了性能,分库分表后又在异步操作场景下实现了事务一致性与数据库处理性能的平衡。最后,通过适当使用缓存技术实现了商品秒杀场景下的技术架构,这都是我们需要学习和借鉴的。

小库存商品秒杀场景订单处理流程图

大库存商品秒杀场景订单处理流程图

Part 7 打造数字化运营能力

  • 业务服务化带来的问题
    • 服务调用关系纷繁复杂,难以定位问题
    • 不同角色的技术人员需要一些列的管控
  • 分布式服务调用链路平台
    • 阿里巴巴内部实现:“鹰眼”平台,JStorm流式计算引擎
    • 核心思路:埋点和输出日志
  • 海量日志分布式处理平台
    • 阿里巴巴内部实现:TLog平台,日志处理流程“所见即所得”
    • 日志收集控制:遇到大量请求时只记录其中一部分数据,而非全量收集

PS:实现初步的分布式服务体系之后,我们的平台必然会变成一个比较复杂的交互链路网,这会对我们的管控带来一些问题,比如服务调用链监控、服务运行状态是否正常,如何提供关键指标以实现精准营销等等。好在无论是商用产品还是开源产品,都有了比较成熟的技术方案,我司已经在调研学习Skywalking和ElasticSearch,以后有机会做这方面的分享。

  在此推荐一波Skywalking:

  在 ASP.NET Core 中集成 Skywalking APM (from savorboard 杨晓东)

  Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控 (from Lemon 刘浩杨)

  使用docker-compose 一键部署你的分布式调用链跟踪框架Skywalking (from 一线码农 黄星辰)

  更多Skywalking分享https://github.com/OpenSkywalking/Community

Skywalking Demo

Skywalking中的请求调用链拓扑视图

Part 8 打造平台稳定性能力

  • 提高稳定性的实践
    • 限流和降级:限流相当于电路保险丝,而降级则是为保证核心服务而牺牲自己,阿里巴巴自研Sentinel限流平台
    • 流量调度:通过实时指标监控,对预计发生故障的服务进行下线等操作,以避免单点或局部故障
    • 业务开关:通过集中化管理业务API操作开关,阿里巴巴自研Switch平台
    • 容量压测及评估规划:将线上真实流量引到压测服务器,并差异化分析对线上服务器的增减提供实时参考决策
    • 全链路压测:每个环节都参加的实战演习,例如双11实战演习
    • 业务一致性平台:保证业务与数据一致的业务稳定性,实时检测业务不一致的问题,阿里巴巴自研BCR业务审计平台

  #Sential Github: https://github.com/alibaba/Sentinel (轻量级的流量控制、熔断降级 Java 库)

  #Sential Wiki:分布式系统的流量防卫兵

  Sential Main Features

Sentinel 的主要特性

Part 9 共享服务中心对内和对外的协作共享

  • 共享服务平台的建设思路
    • Step1.找到一个合适的服务化对象:比如API
    • Step2.建设对象服务化的基础设施:比如结构化包装,让API成为治理良好的组件服务
    • Step3.服务化实施阶段:循序渐进的过程,三个阶段参考
      • API as Service => 服务化的第一步
      • Product as Service => 大量业务API升级为服务化平台的组件服务
      • Solution as Service => 经过长时间的沉淀可以形成解决方案,如海外淘宝解决方案
    • Step4.增强服务和基础设施实现服务的精细治理
  • 对内:共享服务平台的协作
    • 与业务方的协作:以服务为对象建立一个在线市场,三大角色
      • 共享服务平台 => SPAS
      • 服务提供者 => 商品、交易、店铺、物流等
      • 服务消费者 => 商品、交易、店铺、物流等 (消费者通常也是提供者)
    • 与前端应用协作:服务提供者与消费者,相辅相成,共同发展
      • 阿里巴巴的一些实践:紧密沟通,分歧升级、岗位轮转(换位思考)、业务沉淀及共建
  • 对内:业务中台绩效考核
    • No.1 服务的稳定:比如一年只允许两次P1故障
    • No.2 持续业务创新:鼓励业务中台运营团队业务创新,包容业务创新引起的故障
    • No.3 服务接入量:考量服务能力的专业度以及对外的服务运营能力
    • No.4 客户满意度:对中台服务运营团队起到督促作用
  • 对外:开放能力构建生态
    • 核心内容:将自身平台中的数据以服务的方式对外进行开放,从而吸引众多外部群体基于这些服务提供增值服务,持续地为客户提供优质的运营平台能力,从而最终构建基于开放平台的生态体系。

PS:在这部分内容里边,印象最深刻的还是作者提到在互联网转型时,很多人想要构建生态,但却没搞清楚“生态”和“上下游”的关系,它们之间的最本质的区别在于:在“上下游”模式中整个体系中所有的参与者都是被动的使用者,而“生态”模式中的参与者确是主动使用者,他们会持续地往整个体系中注入自己的智慧和创新的源泉,不断贡献自己的价值,只有这样的模式才能打造出企业所希望的生态效果。而传统企业现在应该着眼于企业内部的核心业务能力的打造,等到有一天需要通过能力开放的方式拓展企业业务边界或构建生态的时候,这些沉淀的服务会是企业最大的资产,而信息中心部门也不会只是一个成本中心,而有可能变为对外进行能力输出的关键运营部门。

三、阿里巴巴的实践案例

Part 10 大型央企互联网转型

  阿里巴巴协助国内某大型央企在90天构建出了一个B2B电商平台,整体平台架构基于阿里巴巴的共享服务理念和阿里云飞天Aliware的一系列产品,现在已经成为了国有大型企业进行互联网业务成功转型的标杆性项目。

Part 11时尚行业品牌公司互联网转型

  某服装品牌民营企业基于阿里巴巴的共享服务架构完成了企业全渠道分销平台的重构,解决了高库存和高流单率的难题,实现了O2O的融合,建立了以客户体验为中心的系统架构,为企业在同行业的竞争中建立了差异化的竞争能力。

PS:2014年开始,国家就开始倡导“互联网+”的转型,越来越多的传统企业加入到互联网转型的浪潮,像我司一样的传统家居企业也开始了转型,于是开始建设信息中心,于是我就来了... 幸运的是,我司已经在成都地区小有名气,并且是一个知名的品牌,接下来要做的,借用作者的原话就是需要我们信息中心能够更好地使用互联网技术、利用互联网服务、借鉴互联网企业的运营模式,更好地实现价值链中各节点的连接,让流程更加透明,业务更加可视,最终能够挖掘企业的瓶颈,更好地满足消费者的需求,以获得更好的成长。对我个人而言,在此期间能够积累和沉淀更多的经验是最重要的,加油!

参考资料

 

钟华,《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》

James,《给架构师的推荐-企业IT架构转型之道》

马崇,《企业IT架构转型之道的思考》

 


版权声明:本文为[Edison Chou]原创文章
转载请带上:http://copyfuture.com/blogs-details/5834e880c047bba52079250b4b93eace
或:https://www.cnblogs.com/edisonchou/p/alibaba_it_architect_tranformation_study_notes.html


  1. 海军终于有了自己的轰-6J,这种设想多年的战术终于可以实现了!
  2. CAS实现SSO单点登录原理
  3. Python 增加博客园阅读量
  4. 山上常见的这种植物,还是中药一味,你知道吗
  5. 世界两大阵营呼之欲出,一个是“五眼联盟”,一个是“无眼联盟”
  6. “洞察”号变身火星天气报告员
  7. 2019-01-06 昨天发生了什么
  8. 常用正则表达式整理
  9. 收好这份北京门头沟赏花攻略!山谷花海,心动吗?
  10. 心脑血管疾病患者突然体力大降时,应高度警惕发生心衰
  11. 企业微信的菜单管理
  12. Leetcode 1-10
  13. 中央纪委两条消息背后的大动作
  14. 银河系中心并非球形!立体拆解太阳在银河中的位置,邻居都是谁?
  15. 微软确认新的Windows 10累积更新问题 建议完全重置系统
  16. 真爱不婚,出道夺金像却成TVB绿叶女王,最灵阿紫战胜抑郁自璀璨
  17. 马刺八连胜!要说说讨厌波波维奇的理由,还真可以讲很多……
  18. 拿着1万块人民币,去俄罗斯能生活多久?游客:跟你想的可能不同
  19. 埃塞客机黑匣子数据已下载 坠毁前细节曝光
  20. 央视3·15曝光的AI机器人推销电话公司 采用了什么核心技术?
  21. 卫视热播《都挺好》大结局-原书无删减版剧透-情节102
  22. 假如美团做社交
  23. 刚刚传回的火星消息!洞察号首次在火星地表探测到嗡嗡声!
  24. 《你的歌曲》将经典怀旧与纪实相结合,私人化的讲述视角值得关注
  25. 迪拜人到底有多“壕”?看到汉堡里的肉,肯德基:告辞
  26. 清空与张丹峰合影的48岁洪欣,凭什么被她嘲笑成老女人?
  27. CSGO外挂的初步制作,Cheatengine使用
  28. 仅次于B2的重型轰炸机“重出江湖”重量可比4架轰6
  29. 重拾《 两周自制脚本语言 》- 支持中文标识符
  30. 这些风华绝代的国货,有你pick的那款吗!
  31. 《圣歌》——落后于时代的美丽新世界
  32. 青春斗发布会:赵宝刚谈郑爽演技炸裂!男女比例3:1感情线成亮点
  33. 心脏支架后,咳嗽一下支架能脱落吗?需要注意什么?
  34. 科学家沸腾了!两万八千年前的猛犸象DNA被短暂“唤醒”!
  35. 瞒不住了!丑陋的波音,是如何成为“空中屠夫”的?
  36. 恐龙灭绝时的场景再现?科学家:小行星坠落地面后还在“动”
  37. 习题练习(二)
  38. 齐达内回归皇马!伯纳乌迎回传奇教头并翻开新的的篇章!
  39. 女神张敏:用最好的资源做了最差的选择,51岁复出是为何
  40. “插座一哥”摊上事被诉赔10亿 其创始人身家超400亿
  41. Python数据可视化之Matplotlib实现各种图表
  42. 新型空气极材料可用于固体燃料电池
  43. Stream流
  44. 关于重力和引力那些不为人知的事实
  45. 印度与巴基斯坦前世今生的仇恨
  46. 我眼中的 Nginx(三):Nginx 变量和变量插值
  47. 即日起,这4种车将不能上牌,新能源车牌指标也将收紧?
  48. 315诚信季:电商的页面宣传,价格特惠,你被套路了吗?
  49. 上饶警方:10岁男生在校内被女同学家长刺死,嫌疑人被控制
  50. 8款开源好用的网上电子商城系统介绍
  51. JAVA商城项目(微服务框架)——第17天 授权中心
  52. 【OpenCV3】cvRound()、cvFloor()、cvCeil()函数详解
  53. 姜丹尼尔认了「IG遭控制」 决裂公司:我会重新办帐号
  54. 团车第四季度净亏损430万美元 亏损幅度同比扩大
  55. 超类地行星是否适合居住仍无解,我们还是保护地球生态环境吧
  56. 二战中“最冤”的苏联师长,因丢掉了55个野战厨房,被斯大林处决
  57. 不止手机 三星半导体市场龙头地位或也将让位英特尔
  58. 以网络服务切入,高通也加入智能家居混战
  59. 以史为鉴,一轮牛市结束的十大信号!
  60. 如何获取免版权图片资源
  61. 苹果、微软为何能够二次崛起?
  62. 你家宝宝是不是更喜欢被竖着抱?没到这个月,宝妈可要抗住了!
  63. 宇宙是真空,没有氧气,太阳为什么会燃烧?
  64. 奥斯曼帝国的终结:病夫的末日
  65. Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件
  66. 使用wireshark抓取ICMP流量包并分析ICMP协议
  67. 2019看清生命清单
  68. 解决 APP启动白屏黑屏问题
  69. 【原创】如何用面向对象思想编写代码
  70. 全栈程序员应该学习的都在这里
  71. C# explicit interface implementation(显式接口实现)
  72. 立陶宛记者:NBA多队有意莫泰 后者收到一份CBA球队报价
  73. 不看实车看视频买异地二手车靠谱么?
  74. 勇士拒绝横扫阻截火箭9连胜,休城就凭1招鲜火拼5巨头
  75. 歌手郑智化发文称台湾省已原地踏步20年、痛心有太多“井底之蛙”
  76. 10条朋友圈最近蛮火的句子,我没有取悦你的天分,但我比谁都认真
  77. Nature子刊:40%疾病源于基因,25%与环境有关
  78. 在美国枪支被当作商品买卖,为何还能保持稳定,因为有个厉害部门
  79. 巴黎秘密之旅:这些地方你一定要去!
  80. 多证件识读仪是如何广泛应用的
  81. 程序员上班刷简历!领导看见表示寒心竟还想挽留:别耽误人家
  82. 张嘉倪的嘴,骗人的鬼
  83. 为何王牌之师维京师,坚决不向苏联人投降,强行突围到美控制区?
  84. [翻译] 使用 .NET Core 3.0 创建一个 Windows 服务
  85. IPv6的NAT原理以及MAP66
  86. 韩国姓氏来源于哪里?有三个途径,最后一点他们必须承认
  87. 在编写Arcgis Engine 过程中对于接口引用和实现过程过产生的感悟
  88. 世界上首款三波段雷达护卫舰,排水量仅3600吨,最大射程40公里
  89. 观察+ | 拼多多不必追赶淘宝京东,C2M模式更有想象力
  90. [Java初探外篇]__关于时间复杂度与空间复杂度
  91. 微软云计算现隐忧:一季度增速下滑至73% 去年四季度为76%
  92. 长安前2月销量下跌28.32% 急需走量新车而不是自嗨营销
  93. 巨亏的滴滴,再获软银16亿美元融资!为啥孙正义就这么看好滴滴?
  94. 有哪些简短而又深情的告白句子?
  95. 飞絮作妖,难道就没有办法治治它们?
  96. 不负春光一日醉
  97. swagger使用指南
  98. 死磕 java同步系列之synchronized解析
  99. 谁说有糖尿病就不能吃水果?!
  100. 如何一步步使用国内yum源一键安装openstack-ocata版本基于centos7

  1. Python开发:部分第三方库无法在线安装解决方法(949)
  2. [Swift]LeetCode325. 最大子数组之和为k $ Maximum Size Subarray Sum Equals k(779)
  3. Matlab 2019a 安装包下载以及安装和激活(720)
  4. 仅限Edge和Chrome访问 全新网页端Skype应用上线(686)
  5. 前端笔记之NodeJS(一)初识NodeJS&内置模块&特点(684)
  6. C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序(663)
  7. 【预警通告】Weblogic反序列化远程代码执行漏洞(640)
  8. Visual Studio 2019 正式发布,重磅更新,支持live share(600)
  9. 【预警通告】Apache Tomcat远程代码执行漏洞CVE-2019-0232(573)
  10. 网上赌博平台维护审核提不了款怎么办?(535)
  11. React 与 React-Native 使用同一个 meteor 后台(529)
  12. Sublime Text3 最新版3207 安装及破解(458)
  13. Visual Studio 2019 正式发布(389)
  14. [翻译] Visual Studio 2019: 极速编码. 智能工作. 创造未来.(389)
  15. 刘强东身边的CXO还有谁“幸存”(373)
  16. 舍命生子产妇吴梦丈夫怒斥:没抢肺源不是精神分裂,网友断章取义(371)
  17. Confluence SSRF及远程代码执行漏洞处置手册(370)
  18. 阿里巴巴2018年纳税516亿元 同比增40%(370)
  19. 机器学习 ML.NET 发布 1.0 RC(369)
  20. K8s集群安装--最新版 Kubernetes 1.14.1(338)
  21. 雷军清华演讲实录:小米9年的创新、变革与未来(334)
  22. 小米手机卖不动了?(327)
  23. F#周报2019年第14期(317)
  24. 积分一样却选手下败将出战国际赛,《最强大脑》云队选手被坑了?(300)
  25. 《最强大脑》要垮?桑洁魏坤琳出轨细节被扒,戚薇才是神助攻(257)
  26. 华电教授孙玉兵被指与昔日同学共同学术造假,多所高校调查(251)
  27. F#周报2019年第15期(249)
  28. 日本明仁天皇退位,日本“平成”年代结束(246)
  29. linux系统安装cdcfordb2udb(241)
  30. Oracle甲骨文大规模裁员,你背离时代就会被淘汰(240)
  31. 他联系叙恐怖分子“卖军火”,称能搞到2000枚导弹,关键时刻中国警察出手(237)
  32. 针对django2.2报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: ill....(236)
  33. 魔兽世界:8.15搏击俱乐部坐骑获取流程 鳄鱼布鲁斯坐骑(236)
  34. 女友被曝插足许志安郑秀文婚姻 知情人透露马国明已下定决心分手(232)
  35. SQL简介及MySQL的安装目录详解(229)
  36. 视觉中国深夜道歉:全面配合监管部门彻底积极整改(229)
  37. 为什么国内汽车用沥青阻尼片,而欧洲主机厂却用树脂?(229)
  38. 谁是苏小明饭局爆粗偷拍者?知情人称另有其人(225)
  39. NodeJs之邮件(email)发送(223)
  40. 迪玛希好惨!昨晚《歌手》为声入人心男团帮帮唱,却再被指控侵权(223)
  41. 市值暴跌90%,世界零售巨头申请破产战胜了所有对手却输时代(221)
  42. 函数防抖,与函数节流(221)
  43. 机器学习基石笔记:01 The Learning Problem(218)
  44. 深度学习python的配置(Windows)(215)
  45. [深度应用]·实战掌握Dlib人脸识别开发教程(213)
  46. 许志安出轨视频系蓄谋偷拍?司机被曝收40万装红外摄像头(210)
  47. Google AI 系统 DeepMind 高中数学考试不及格(210)
  48. 干货!21部漫威电影观影顺序指南,在《复联4》之前赶紧补齐!(209)
  49. 赌命生子九个月后,吴梦离世:前半辈子任性了,我用生命买单(206)
  50. 威廉王子出轨凯特王妃闺蜜? 外媒称婚外情致兄弟反目(203)
  51. spring-cloud-sleuth+zipkin源码探究(203)
  52. WebGL three.js学习笔记 纹理贴图模拟太阳系运转(201)
  53. 新更新kb4493472导致无法正常开机(195)
  54. 杜敬谦死因疑曝光!或因他这一特殊的训练方式,泳迷高呼孙杨退役(191)
  55. AntDesign Form表单字段校验的三种方式(189)
  56. 韦杰落网,金诚集团终局(188)
  57. 华为推出方舟编译器 称可提升安卓系统效率(186)
  58. 山东庆云民企3000亩土地被贱卖 国企接盘拟转性(185)
  59. 《权力的游戏》龙妈有那么多爱她的人,为什么最终会选择琼恩雪诺(183)
  60. 张无忌为什么爱上她?陈钰琪版赵敏终于给答案了(181)
  61. “国防”靠美国? 韩国瑜=马英九2.0? 走着瞧(180)
  62. 直认与老公感情淡了!27岁TVB上位女星:我们不是好熟(180)
  63. Python破解Wifi密码思路(180)
  64. CUBA Studio 8.0 发布,企业级应用开发平台(179)
  65. Github 上 Star 最多的个人 Spring Boot 开源学习项目(178)
  66. 张丹峰出轨最新锤来了!毕滢的朋友圈简直刷新下限啊!(177)
  67. 拿着普通员工超300倍的工资裁员800人,这家游戏公司CEO引发员工不满|一周新闻(177)
  68. 币安称 4000 万美元比特币被盗(175)
  69. 使用 C 语言实现一个 HTTP GET 连接(175)
  70. 不要996!程序员创建955.WLB不加班公司名单,GitHub周榜第二(175)
  71. AntD框架的upload组件上传图片时遇到的一些坑(175)
  72. 《跃迁-成为高手的技术》之联机学习(174)
  73. Codejam Qualification Round 2019(174)
  74. Weblogic CVE-2019-2647等相关XXE漏洞分析(173)
  75. python爬虫重定向次数过多问题(172)
  76. simulink创建简单模型(172)
  77. 强大的jQGrid的傻瓜式使用方法。以及一些注意事项,备有相应的引入文件。(170)
  78. [NewLife.XCode]高级查询(168)
  79. Algolia使用教程 , 超详细傻子看都会(166)
  80. Delphi 开发微信公众平台 (二) 用户管理(165)
  81. 核心算法缺位,人工智能发展面临“卡脖子”窘境(165)
  82. 告诉你去越南芽庄必带回的好东西(163)
  83. 只需知道电话号码 即可监控任意一部手机,获取位置,太可怕(163)
  84. 范斯晶对祖母的称呼很意外,范志毅很心疼,缺少母爱的孩子不容易(162)
  85. 如何定位前端线上问题(如何排查前端生产问题)(162)
  86. 百度网盘下载神器 PanDownload v2.0.9(破解版、不限速)(160)
  87. 双双出轨!许志安劈腿马国明港姐女友,二人被拍16分钟激吻超20次(160)
  88. 数学家发现完美的乘法(160)
  89. 定义工作,解读自我——IT帮2019年2月线下活动回顾(160)
  90. 高管被警方带走背后:巧达科技操盘2亿人简历生意(159)
  91. 吹爆惠英红,《铁探》这位霸道总警司超带感!真乃港剧罕见大女主(157)
  92. vue生成图片验证码(156)
  93. 三国正史第一猛将:一人单挑数千人,不是吕布也不是关羽(155)
  94. 从0到1上线一个微信小程序(154)
  95. FreeSql 如何现实 Sqlite 跨库查询(154)
  96. 向佐的弟弟叫向佑,网友:那郭碧婷生的孩子叫什么?(153)
  97. [Node.js] 3、搭建hexo博客(153)
  98. spring-boot-2.0.3不一样系列之源码篇 - pageHelper分页,绝对有值得你看的地方(153)
  99. TensorFlow从1到2(十)带注意力机制的神经网络机器翻译(152)
  100. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的(152)

  1. 函数优化实战
  2. numpy数组之存取文件
  3. 曾之乔眼眶泛红爆哭! 5万粉虐心看10秒 最后一刻笑了
  4. 自杀式选角
  5. 登陆Linux服务器时触发邮件提醒
  6. 风暴中的华为员工信首次公布:女朋友停止吵架,家人劝不要做逃兵
  7. 莫迪大胜,对中国意味着什么?
  8. 搞假材料欺骗中央,书记区长双双被免
  9. 小白入门AI教程:教你快速搭建大数据平台『Hadoop+Spark』
  10. MySQL 事务
  11. [Inside HotSpot] Serial垃圾回收器 (二) Minor GC
  12. 老婆举报医生老公“收药品回扣”:他出轨并要求离婚 官方已介入调查
  13. 实验吧简单的sql注入3
  14. 死磕 java同步系列之自己动手写一个锁Lock
  15. [NOI2006] 网络收费
  16. 线性基的小证明...
  17. 从语言设计的角度探究Java中hashCode()和equals()的关系
  18. C# 多线程小试牛刀
  19. Python基础:输入与输出(I/O)
  20. link-1-STL 标准模板库
  21. mysql--浅谈多表查询1
  22. 进击JavaScript核心 --- (1)基本数据类型
  23. 大数据技术之_24_电影推荐系统项目_07_工具环境搭建(具体实操)
  24. 前端限制显示的文本字数的几种方法——不换行与换行
  25. 【实验吧】该题不简单——writeup
  26. 反向传播算法
  27. =、==、===、equals()的区别
  28. GitHub 推出开发者赞助项目
  29. 剑指Offer的学习笔记(C#篇)-- 从上往下打印二叉树
  30. argparse 在深度学习中的应用
  31. 张云雷复出?西城区文旅局:德云社在辖区内演出未发现违法违规问题
  32. Maven安装与配置
  33. acWing 825. 排队购物
  34. ajax&&jquery
  35. 苏联攻击机的悲壮行动,明知德军战机拦截,仍在无护航状态下出击
  36. 华为的5G技术,源于这种数学方法
  37. 一站式自动化测试平台 http://www.Autotestplat.com
  38. RabbitMQ总结
  39. 第九组 通信3班 063 自反ACL
  40. 短线还有最后一跌?大V们表示:反弹近了!(5月23日)
  41. 第九组 通信3班 063 OSPFv2与OSPFv3综合实验
  42. C# IE选项 - 重置IE
  43. Spring_数据校验和自定义检验规则
  44. 谈谈Java的string为什么是不可变的
  45. OFFICE 365 A1 Plus账号注册
  46. 初学python—做一个数组的增删改查操作
  47. oc工程中oc、swift混编代码打包成静态framework踩坑笔记
  48. 阿里云推“智能秒停系统”:50秒内短信通知 再不怕吃罚单
  49. 今天购买了一个云服务器
  50. 神奇!乌鸦竟然会传达悲观和怀疑情绪 还会对同伴“冷嘲热讽”
  51. 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例
  52. 点击事件的坐标计算(client || offset) +(X || Width || Left) 各种排列组合别绕晕
  53. windows下dubbo-admin2.6.x之后版本的安装
  54. linux 之基本命令学习总结
  55. 传祺难续“传奇”?销量暴跌超4成 加价卖车被“断裂门”尽毁
  56. 香港豪门后宫持续曝光:他用选美比赛“选妃”,与几万女星交往
  57. 小窥React360——用React创建360全景VR体验
  58. Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
  59. .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)
  60. “80后”女博士已任团中央书记处书记
  61. 杨元庆:现在是联想的最好时刻 我们四大战役全部打了胜仗
  62. Java开发环境的搭建(JDK和Eclipse的安装)
  63. oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词
  64. 机构风向标:外资出逃超500亿 美的集团等白马股表现欠佳
  65. 跟踪记录ABAP对外部系统的RFC通信
  66. c++11多线程详解(一)
  67. 小蓝杯,跌破发行价了
  68. [NewLife.XCode]百亿级性能
  69. 33岁何洁商场走穴被曝光,路人镜头下的她与精修图差别好大
  70. 途牛第一季度净亏损2240万美元 同比亏损幅度扩大
  71. 00 | Two Sum
  72. 智能威胁分析之图数据构建
  73. 快速掌握RabbitMQ(二)——四种Exchange介绍及代码演示
  74. Neo4j 第六篇:Cypher语法
  75. Java微信公众平台开发(三)--接收消息的分类及实体的创建
  76. Java8 中的 Optional
  77. 如何显示超大图像(3)
  78. 贵州检察机关依法对袁仁国决定逮捕
  79. 有关xerospolit运行报错问题的有效解决方案
  80. ADO学途 one day
  81. Linux 中 ip netns 命令
  82. Python爬虫之设置selenium webdriver等待
  83. BSOJ1040 -- 【练习题目】美元DOLLARS
  84. 外媒:稀土是中国手中的一张王牌
  85. sql server添加sa用户和密码
  86. 深入理解JVM的类加载
  87. querySelector和getElementById之间的区别
  88. 简说设计模式——观察者模式
  89. 扰动函数和拉链法模拟HashMap的存储结构
  90. 东芝中国:“上海东芝公司”不存在 未停止与华为的合作
  91. 彭于晏马思纯主演张爱玲这部小说,却被说更适合演《骆驼祥子》?
  92. 停止向华为供货?东芝辟谣回应
  93. 云米第一季度净利润5310万元 同比增长68%
  94. 贪吃的古蛙,古生物学家发现亿年前两栖动物之间战争
  95. APICloud发布低代码开发平台 效率提升30%至60%
  96. Golang 读写锁RWMutex 互斥锁Mutex 源码详解
  97. shell初级-----数据呈现方式
  98. 白玉兰入围名单公布!《知否》《都挺好》上榜,还有这部豆瓣3分剧
  99. 深网 | 京东618接入快手、抖音 实现“即看即买”
  100. 解决 APP启动白屏黑屏问题