阿里拆了中台,中台还有未来吗?

hi,我是熵减,见字如面。

image

近日,阿里在继年初3月份的1+6+N的战略变革的基础上,对持续建设和运营8年的中台的调整终于落地了。

阿里对中台的这一举措,引发了外界对于中台战略是否还有意义的大量质疑和讨论。

甚至有人将中台战略称之为自欺欺人的一场骗局。

中台战略真的是一场骗局和闹剧吗,中台还有没有未来呢?这个问题是非常值得我们思考的,下面说说我的一些方法。

阿里拆中台

阿里集团的整个中台体系,被分流和拆解到新的子业务集团之中,具体的变化如下:

image

  • 其中,技术中台的“数据中台” 部分,独立成了子公司爱橙技术,新公司需要自己开拓业务和市场,自负盈亏。
  • 技术中台的“业务中台” 各团队,并入了淘天集团(即淘宝天猫商业集团),按照具体业务如营销、交易等,与原淘宝的技术线团队合并。
  • “组织中台”中的客服、人资和财务、市场等职能能力,则分流到各个子业务集团之中。

阿里自2015年提出“小前台,大中台”的战略后,一直是业内中台战略的倡导者和实践者。然而,随着环境的变化和业务的发展,在2023年做出组织和战略的调整,对中台做出大规模的分拆和下放。

阿里为什么要拆中台

阿里巴巴拆分中台的原因主要有两个方面:

  • 一是为了适应市场变化和用户需求的多样化;
  • 二是为了提高各业务集团的自主性和灵活性。

因为,随着行业的竞争加剧和用户需求的不断升级,阿里面临着更多的挑战和机遇。在这样的环境下,阿里也需要更加快速地响应市场变化,更加精准地满足用户需求,更加有效地利用数据和技术。

而过去的整个集团的“大中台”的模式,在一定程度上限制了各业务线的创新能力和试错空间。

因为中台需要为各业务线提供通用的底层框架和技术支持,而不同的业务线有不同的特点和需求,如果完全依赖于中台,可能会导致资源浪费、效率低下、响应迟缓等问题。

因此,在中台体系成熟,环境发生变化时,阿里通过拆分中台,让各业务集团拥有自己的技术和职能建制,从而提高各业务集团的自主性和灵活性,让他们能够更好地专注于自身的核心竞争力,更好地探索新业态和新模式。

在我看来,对于阿里集团如此复杂的业务中,将相对成熟中台体系,拆分和下放到相对聚焦的业务子单元中,不意味的中台战略的彻底失败,只是中台能力已经深入到了日常之中。

拆分不意味着放弃

首先,要考虑的第一个问题:是阿里拆分中台意味着什么?

如果我们将拆分和下放,就看做是中台战略的失败,甚至将其定位为一场骗局,这显然不是一个客观理性的看法。

首先,阿里巴巴的中台体系,在过去几年取得了显著的成果,帮助阿里巴巴实现了快速而持续的发展。根据阿里巴巴2022年财报显示,阿里巴巴的年度活跃消费者达到了10.8亿人,年度交易额达到了9.2万亿元人民币,年度收入达到了7,143亿元人民币,同比增长41%。

其次,随着市场环境的变化和竞争对手的崛起,阿里也面临着新的挑战和压力。一方面,阿里需要应对消费者需求的多样化和个性化,以及新兴领域如社交电商、直播电商、跨境电商等的发展。另一方面,阿里需要应对监管政策的变化和竞争对手如拼多多、京东、美团等的冲击。这些因素都要求阿里巴巴在保持规模效应和协同效应的同时,也要增强灵活性和创新性。

第三,,阿里在8年后的今天,做出拆分中台的举措,并不是简单的放弃中台战略,而是对中台战略的一次调整和优化。将原本集中在中台系统中的数据、技术和能力分散到各个业务线中,让每个业务线都拥有自主权和决策权,并根据自身特点和市场需求进行定制化和优化。这样做既可以保证每个业务线都能快速响应市场变化和消费者需求,又可以避免出现重复建设和资源浪费。

在我看来,拆分中台并不意味着中台战略的彻底失败,而是面对新的挑战,对中台战略的一次调整和优化。中台战略的本质是通过构建统一的平台和标准,实现资源的集中和共享,提升组织的效率和创新能力。这一点在当今复杂多变的市场环境下仍然具有重要意义。

中台还有未来吗?

中台战略的倡导者和实践者的阿里,今天将集团的中台给拆了,那中台还有未来吗?在未来,企业还需不需要建设中台了,以及你的中台也是不要拆了呢?

回答这个问题,我们还需要回顾到中台战略的本质:中台战略本质上是一种组织架构和管理模式,其目标是通过复用提高企业整体的效率。

从这个意义上,阿里并没有放弃能力复用的理念,而只是将其从集团层面,下沉到各子业务集团之中。在业务更为相近的子业务中,能力复用的可能性会更大,也会更有价值。

也就是说,在拆分后的架构下,各业务集团仍然可以建立自己的技术和业务中台,并与其他业务集团进行协同和共享。

在这个过程中,各业务集团有了更大的决策权和选择权,可以根据自身的实际情况来决定是否使用其他业务集团提供的中台能力,或者是否向其他业务集团输出自己的中台能力。

这样既保证了资源的复用和协同,又保证了资源的灵活配置和优化利用。

从阿里拆分中台来看,预示了中台未来将走向更加开放和生态化的发展方向。随着数字化转型的趋势,那些拥有强大技术实力和行业经验的企业获得了一个机会,通过将自己打造成一个开放平台或生态系统,为其他企业提供各种服务或解决方案。

譬如,在金融领域,蚂蚁集团就是一个典型例子;在零售领域,京东就是一个典型例子。这些企业通过开放自己的技术、数据、资源等能力给外部合作伙伴或客户,实现了价值共创和共享,并形成了良性循环。

中台隐入暗能力

中台战略的意义和价值,不会随着阿里拆分中台,就彻底的沦落为骗局,在未来依然是有价值和意义的。

当然,在中台的实践之中,也会面临着问题和挑战。譬如:

  • 如何平衡中台与前台之间的关系?
  • 如何评估中台对前台带来的价值?
  • 如何避免中台成为信息孤岛或者权力寡头?
  • 如何保证中台能够持续创新和升级?

诸如以上的这些问题,都需要企业根据自身的特点和环境,来寻找合适的解决方案。

可见,没有一种固定不变、适用于所有情况的中台模式;不同企业、不同行业、不同阶段都需要根据自身需求来调整、优化、创新自己的组织架构;只有这样才能真正发挥出中台战略所带来的效率提升、创新驱动、价值创造等优势。

无论是搭建中台,还是拆分中台,都是为了适应环境的变化,在变化中主动求变、适应市场、优化组织、提升效率、增强竞争力、释放潜力、创造价值、开拓未来。

中台并没有彻底失败,只是其已经隐入为组织的暗能力。

写在最后

中台战略的价值,不会因为阿里的拆分而全盘的被否定掉的。

因为,回归到中台的本质来说,能力体系的复用,无论在什么时候,都是具有价值的。

在未来,中台依然会存在,也会继续的发展,只是中台可能会向着更加开放和生态化的方向发展。

我相信,在未来,“小前台” 依然会有无限的可能,“大中台” 也依然会有无限的价值。

关注 熵减黑客 ,一起学习成长


熵减黑客
本文转载于网络 如有侵权请联系删除

相关文章

  • Diablo II中的各种hacks

    大家好,又见面了,我是你们的朋友全栈君。Gamehacks,也就是通常所说的游戏软件。在网络游戏时代,也许是因为针对传奇这类游戏的软件大都利用WPE之类的抓包工具来制作,因此hacks又叫外挂。不过Diablo的hacks绝大多数是和游戏代码紧密结合在一起的,也许应该叫内挂才对。 DiabloIILOD(以下简称D2X)中的hacks大概可分为exploit、bot和mod三大类。exploit即漏洞,就是利用游戏设计上的缺陷或者BUG完成一些正常游戏时做不到的事情,比如复制装备,偷窥其他玩家装备,显示所有场景地图等等。bot俗称机器人,是指那些能自动模拟人的操作进行游戏的程序。比如有的bot能自动运行游戏程序,输入帐号名密码,创建、进入游戏,并自动找怪物,杀怪物,捡装备等等。mod即modification,指通过修改D2X本身的一些(角色、怪物、场景等)设定来获得另外一种游戏体验,从这个意义上讲那些所谓的资料片都可以看做MOD,只不过是官方做的。这里主要介绍exploit和bot。exploit和bot的主要区别在于bot是模拟人的操作自动进行游戏,exploit是帮助玩家在游戏

  • R语言循环绘制柱状图

    循环绘制正常与肿瘤两组的柱状图第一步:合并数据及#=================================================== # # # #=================================================== rm(list=ls()) setwd('D:\\SCIwork\\F24\\OSCC\\DEG') data<-read.csv('mRNA_exprSet.csv',header=T,row.names=1) data[1:4,1:4] gene<-c('BUB1','BUB2','BUB3','BUB4') dt<-data[which(rownames(data)%in%gene),] dt<-as.data.frame(t(dt)) dt<-log2(dt+1) #========================================

  • maven实战总结,工作中常见操作

    思维导图Maven与构建什么是Maven翻译:知识的积累、专家、内行。跨平台的项目管理工具。Apache组织的开源项目。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。类似于linux平台的yum、apt,前端领域的npm。Maven前身为Ant目前tomcat的源码就是用Ant来构建和管理,更先进的工具有Gradle,Spring工程在用。什么是构建何为构建:编译、运行单元测试、生成文档、打包、部署的过程,这就是构建。构建的步骤:清理clean:将以前编译得到的旧文件class字节码文件删除。编译compile:将java源程序编译成class字节码文件。测试test:自动测试,自动调用junit程序。报告report:测试程序执行的结果。打包package:动态Web工程打War包,java工程打jar包。安装install:将打包得到的文件复制到“仓库”中的指定位置(Maven特定的概念)。部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行。项目骨架pom:ProjectObjectModel根目录:工程名 |---src:源码

  • 从一次sql优化谈mysql索引

    一、背景1:表现最近seller平台查询退货的时候老是出现报错,出现频繁报警,去监控平台上看了一下:两台机器都出现慢sql,然而这个时候还不能断定就是我们的sql有问题,出现慢sql有可能是数据库抖动导致读延迟比较高,也有可能sql确实存在优化空间。接着去看一下数据库的监控:虽然会有少量的读延迟,但是整体上看来比较平稳,可以排除并不是数据库抖动导致,我们继续看一下应用机器的日志:rpc服务默认超时时间为5S,服务器出现大量的服务超时,基本可以断定是sql的执行时间超过了5S,慢sql无疑。2:数据现状目前退货单表有千万级别数据,索引基本该有的都有,从日志埋点可以看到有些查询竟然用36S:二、分析与优化1:老sql分析mybatis中sql片段:<!--查询退货列表--> <selectid="listByParamsForOms"resultMap="BaseResultMap"> select <includerefid="Base_Column_List"/> fromreturn_re

  • POJ 3122 Pie

    Pie TimeLimit:1000MSMemoryLimit:65536K TotalSubmissions:26920Accepted:8150SpecialJudge DescriptionMybirthdayiscomingupandtraditionallyI’mservingpie.Notjustonepie,no,IhaveanumberNofthem,ofvarioustastesandofvarioussizes.Fofmyfriendsarecomingtomypartyandeachofthemgetsapieceofpie.Thisshouldbeonepieceofonepie,notseveralsmallpiecessincethatlooksmessy.Thispiececanbeonewholepiethough.Myfriendsareveryannoyingandifoneofthemgetsabiggerpiecethantheothers,theystartcomplaining.Thereforeallofthemshouldgetequal

  • Python常用模块集锦

    Python常用模块集锦常用模块主要分为以下几类(缺失的后续再补充):时间转换时间计算序列化和反序列化:json,pickle编解码:unicode,base64加解密:md5,sha1,hmac_sha1,aes常见装饰器:计算执行时间装饰器缓存装饰器错误重试装饰器延迟装饰器尾递归优化装饰器ini配置文件读取代码整合如下:#!/usr/bin/envpython #-*-coding:utf-8-*- """ Createdon9/21/171:46PM @author:ChenLiang @function:python常用模块集锦,util.py """ importtime importdatetime importConfigParser importast importsys importjson importpickle importbase64 importhashlib fromCrypto.CipherimportAES frombinasciiimportb2a_hex,a2b_hex fromfun

  • CNS图表复现06—根据CellMarker网站进行人工校验免疫细胞亚群

    回顾我们的CNS图表复现之旅已经开始,前面5讲是;CNS图表复现01—读入csv文件的表达矩阵构建Seurat对象CNS图表复现02—Seurat标准流程之聚类分群CNS图表复现03—单细胞区分免疫细胞和肿瘤细胞CNS图表复现04—单细胞聚类分群的resolution参数问题CNS图表复现05—免疫细胞亚群再分类如果你也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。前面我们得知文章把Macrophage和Monocyte合并起来,把B_cell区分成为两群。而我们的T_cells和NK_cell也需要被合并起来。首先检查Mast-cells而commonmyeloidprogenitor(CMP)这群细胞呢,在文章并没有出现,不知道是不是会被命名为Mast-cells,需要相应的生物学背景。这个时候,根据CellMarker网站进行人工校验,如下所示:#HumanKidneyMastcell #http://biocc.hrbmu.edu.cn/CellMarker/search.jsp?quickSearchInfo=mast

  • 溜得飞起的单细胞bus你还不上车?

    谷歌邮箱推送给我了关键词订阅文献,单细胞的,我看到如下所示;下意识的以为是有人把单细胞数据分析流程总结成为了一个地铁线路图或者公交车线路图,因为我们生信技能树VIP群里这两天有人把一下NGS分析流程整理成为了这样的图,如下所示:还正在诧异,这个工作如果可以发SCI,那么应该是发多少分呢?点进去看才发现,我想多了,这个Barcode-UMI-Setformat(BUS)是一个工具,发表在Bioinformatics.2019Nov,很新的工具。大家都知道,目前单细胞以10x为主,那么10x仪器出来的数据当然是它们自己的数据分析流程CellRanger来拿表达矩阵了。从来没有人挑战10x官方工具CellRanger这一点,而Barcode-UMI-Setformat(BUS)这个工具就不服气,在kallisto的基础上面开发了,速度那是一个快的飞起!链接在http://BUStools.github.io/andhttp://pachterlab.github.io/kallisto/singlecell.html还有一个演示:TodemonstratetheutilityofBUS,we

  • Django(三):HttpReques

      当一个请求连接进来时,django会创建一个HttpRequest对象来封装和保存所有请求相关的信息,并且会根据请求路由载入匹配的视图函数。每个请求的视图函数都会返回一个HttpResponse。  HttpRequest和HttpResponse可以从django.http中导入。  1、HttpRequest类函数功能描述HttpRequest.scheme请求协议(http或者https)HttpRequest.body以字节的方式返回请求体内容;可以通过HttpRequest.POST获取处理后的key和value,也可以通过HttpRequest.read()格式化HttpRequest.path返回请求的完整路径,不包括协议和域名HttpRequest.GETGET请求参数,返回一个queryDict对象HttpRequest.POST获取表单提交的数据,如果是通过POST请求提交的其它非表单数据,可以使用HttpRequest.Body获取;使用时可以通过ifrequest.method=="PSOT"来进行预判断HttpRequest.metho

  • 数据结构

    数据结构 Queue什么是队列队列的种类Java集合框架中的队列QueueSet什么是Set补充:有序集合与无序集合说明HashSet和TreeSet底层数据结构List什么是ListList的常见实现类ArrayList和LinkedList源码学习Map树Queue什么是队列 队列是数据结构中比较重要的一种类型,它支持FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。队列的种类单队列(单队列就是常见的队列,每次添加元素时,都是添加到队尾,存在“假溢出”的问题也就是明明有位置却不能添加的情况)循环队列(避免了“假溢出”的问题)Java集合框架中的队列QueueJava集合中的Queue继承自Collection接口,Deque,LinkedList,PriorityQueue,BlockingQueue等类都实现了它。Queue用来存放等待处理元素的集合,这种场景一般用于缓冲、并发访问。除了继承Collection接口的一些方法,Queue还添加了额外的添加、删除、查询操作。Set什么是SetSet继承于Collection接口,是一个不允许出现重复元素

  • 0629-6.2-如何使用CM API接口获取集群所有节点内存和磁盘使用情况

    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github: https://github.com/fayson/cdhproject提示:代码块部分可以左右滑动查看噢1文档编写目的大家也知道ClouderaManager提供了丰富的监控指标,部分客户也有自己统一的监控平台,需要将CM上的监控指标集成到统一的监控平台上,因此可以通过提供的API接口获取监控指标,本篇文章Fayson主要介绍如何通过CMAPI接口获取集群所有节点内存和磁盘使用情况。如下图所示:2接口查找及说明在ClouderaManager的API列表中未找到一个比较合适的接口来直接获取指定节点内存和磁盘使用情况,最终在API列表中找到了获取时序数据的接口,该接口可以通过传入tsQuery语句查找到关于磁盘和内存使用情况的时序数据,具体接口如下:http://${cm_host}:7180/api/v32/timeseries复制接口参数说明:contentType:application/json#指定返回内容类型desiredRollup:RAW#指定数据聚合

  • 【技术解析】PointNet系列论文解读

    技术解析是由美团点评无人配送部技术团队主笔,每期发布一篇无人配送领域相关技术解析或应用实例,本期为您带来的是论文PointNet系列论文解读。本文主笔:平凡的外卖小哥本文共4784字,预计阅读时间13分钟1简介 此系列论文首先提出了一种新型的处理点云数据的深度学习模型-PointNet,并验证了它能够用于点云数据的多种认知任务,如分类、语义分割和目标识别。不同于图像数据在计算机中的表示通常编码了像素点之间的空间关系,点云数据由无序的数据点构成一个集合来表示。因此,在使用图像识别任务的深度学习模型处理点云数据之前,需要对点云数据进行一些处理。目前采用的方式主要有两种:将点云数据投影到二维平面。此种方式不直接处理三维的点云数据,而是先将点云投影到某些特定视角再处理,如前视视角和鸟瞰视角。同时,也可以融合使用来自相机的图像信息。通过将这些不同视角的数据相结合,来实现点云数据的认知任务。比较典型的算法有MV3D和AVOD。将点云数据划分到有空间依赖关系的voxel。此种方式通过分割三维空间,引入空间依赖关系到点云数据中,再使用3D卷积等方式来进行处理。这种方法的精度依赖于三维空间的分割细腻度,

  • 干货 | 配置中心,让微服务『智能』

    作者简介携程框架架构研发部技术专家,开源配置中心Apollo作者。2016年初加入携程,主要负责中间件产品的相关研发工作。毕业于复旦大学软件工程系,曾就职于大众点评,担任后台系统的技术负责人。本文来自宋顺在“2018携程技术峰会”上的分享。一、背景介绍随着微服务的流行,应用和机器数量急剧增长,程序配置也愈加繁杂:各种功能的开关、参数的配置、服务器的地址等等。同时,我们对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理,完善的权限、审核机制等等。在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足我们对配置管理的需求。配置中心,应运而生!通过配置中心,我们可以方便地管理微服务在不同环境中的配置,从而可以在运行时动态调整服务行为,真正实现配置即『控制』的目标。所以,在一定程度上,配置中心就成为了微服务的大脑,如何用好这个大脑,让微服务更『智能』,也就成为了一项比较重要的议题。二、为什么需要配置中心?2.1配置即『控制』程序的发布其实和卫星的发射有一些相似之处。当卫星发射升天后,基本就处于自主驾驶状态了,一般情况下就是按照预设的轨道运行,间歇可能会

  • JAVA反射机制作用是什么

    转自这里Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。那么什么是Java的反射呢?       大家都知道,要让Java程序能够运行,那么就得让Java类要被Java虚拟机加载。Java类如果不被Java虚拟机加载,是不能正常运行的。现在我们运行的所有的程序都是在编译期的时候就已经知道了你所需要的那个类的已经被加载了。Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期并不知道的类。这样的特点就是反射。那么Java反射有什么作用呢?假如我们有两个程序员,一个程序员在写程序的时候,需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代码能否通过编译呢?这是不能通过编译的。利用Java反射的机制,就可以让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。Java的反射机制它知道类的基本结构,这种对Java类结构探知的能力,我们称为Java类的“自审”。大家都用过Jcreator和eclipse。当我们

  • 吴恩达深度学习笔记 course3 week2 机器学习 策略(2)

    1.Carryingouterroranalysis例:当我们在训练一个模型的时候,我们的准确率是90%,bayesoptimizedbias是0%,这个时候错误率达到了10%,那么我们如何分析是哪错了,并且快速改正,如果我们分析发现误将狗识别为猫,那我们是否又应该加入一些狗的图片,增强模型对负样本的训练?这个时候就引入了误差分析分析过程:这里吴恩达老师是取出100张被错误标记的图片,观察其中把狗标记为猫的例子,假设:有5张是狗标记为猫的例子,那么在总共的错误中,把狗标记为猫只占了5%,我们不需要耗费大量成本加入一些狗的图片,对模型就行一个重新的训练,因为这样我们最多只能把错误率降低到9.5%.这种错误分析可以同时评估多个影响模型性能的因素,若某因素所占的比重越大,则影响越大,越应该花费时间精力解决这个问题2.CleaningupIncorrectlylabeleddata监督学习的过程中,可能存在着样本标签标记错误的情况(Incorrectlylabeledexamples),如果只是随机的,由于深度学习算法比较健壮,将不会产生什么影响,可以忽略;如果是系统的,那么会对DL的算法造成

  • 差异分析③

    统计差异基因数目tfit<-treat(vfit,lfc=1) dt<-decideTests(tfit) summary(dt) BasalvsLPBasalvsMLLPvsML Down14171512203 NotSig110301089513780 Up17181758182复制一些研究需要不止一个调整后的p值cutoff值。为了对重要性进行更严格的定义,可能需要log-fold-change(log-FC)超过最小值。一般用来计算经验贝叶斯慢化t-统计的p值,并具有最小的log-FC要求。保存文件de.common<-which(dt[,1]!=0&dt[,2]!=0) length(de.common) vennDiagram(dt[,1:2],circle.col=c("turquoise","salmon")) write.fit(tfit,dt,file="results.txt") #使用topTreat输出差异基因信息 #ThetopDEgenescanbelistedusi

  • RabbitMQ 延迟队列实现定时任务

    场景开发中经常需要用到定时任务,对于商城来说,定时任务尤其多,比如优惠券定时过期、订单定时关闭、微信支付2小时未支付关闭订单等等,都需要用到定时任务,但是定时任务本身有一个问题,一般来说我们都是通过定时轮询查询数据库来判断是否有任务需要执行。也就是说不管怎么样,我们需要先查询数据库,而且有些任务对时间准确要求比较高的,需要每秒查询一次,对于系统小倒是无所谓,如果系统本身就大而且数据也多的情况下,这就不大现实了。所以需要其他方式的,当然实现的方式有多种多样的,比如Redis实现定时队列、基于优先级队列的JDK延迟队列、时间轮等。因为我们项目中本身就使用到了Rabbitmq,所以基于方便开发和维护的原则,我们使用了Rabbitmq延迟队列来实现定时任务。Rabbitmq延迟队列Rabbitmq本身是没有延迟队列的,只能通过Rabbitmq本身队列的特性来实现,想要Rabbitmq实现延迟队列,需要使用Rabbitmq的死信交换机(Exchange)和消息的存活时间TTL(TimeToLive)死信交换机一个消息在满足如下条件下,会进死信交换机,记住这里是交换机而不是队列,一个交换机可以对应

  • SAP Web Service简介与配置方法

    @font-face{font-family:"TimesNewRoman"} @font-face{font-family:"宋体"} @font-face{font-family:"Wingdings"} @font-face{font-family:"Calibri"} @font-face{font-family:"Arial"} @font-face{font-family:"黑体"} @font-face{font-family:"Verdana"} @font-face{font-family:"Verdana"} @listl0:level1{ mso-level-number-format:chinese-counting; mso-level-suffix:none; mso-level-text:"%1、"; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0.0000pt;text-indent:21.0000pt;margin-left:0.0000pt; font-fa

  • ShellExecuteEX打开iqy文件导致excel hang的原因分析

    1.问题 当在console中调用APIShellExecuteEx打开"test.iqy"文件时,发现excel会hang住,console退出后excel才会响应,但直接双击"test.iqy"是没有问题的,有意思的是这个情况只有在xp发生,在win7上没有这个问题。   2.重现步骤 重现环境:XPsp3/Office2007(其他office版本应该也可以,没有测试) https://files.cnblogs.com/files/organic/iqy_test.zip 1>解压iqy_test.zip 2>运行http_server.py(需先安装python) 3>执行"shell_execute.exetest.iqy" shell_execute.exe的主要code: boolshell_execute_file(wstringfile_path) { SHELLEXECUTEINFOWshell_exec_info={0}; shell_exec_info.cbSize=sizeof(SHELLEXECUTEINFOW); shell

  • centos 环境配置 -- java

    1.先查看本地是否自带java环境: yumlistinstalled|grepjava复制 2.卸载自带的java(输入su,输入root超级管理员的密码,切换到root用户模式) yum-yremovejava-1.8.0-openjdk* yum-yremovetzdata-java* 复制    3.查看yum仓库中的java安装包 yum-ylistjava*复制 4.安装java: yum-yinstalljava-1.8.0-openjdk*复制   5.查找Java安装路径 whichjava ls-lrt/usr/bin/java(也就是上一步查询出来的路径),然后回车 输入ls-lrt/etc/alternatives/java(也就是上一步查询出来的路径),然后回车 从路径中可以看到在jvm目录下,输入cd/usr/lib/jvm,跳转到jvm的目录 输入ls列出当前目录下的文件和文件夹6.配置Java环境变量 输入vi/etc/profile去编辑环境变量 添加如下: exportJAVA_HOME=/usr/lib/jvm/jav

  • 【leetcode】500. Keyboard Row

    问题描述: GivenaListofwords,returnthewordsthatcanbetypedusinglettersof alphabet ononlyonerow'sofAmericankeyboardliketheimagebelow.     Example1: Input:["Hello","Alaska","Dad","Peace"] Output:["Alaska","Dad"] 复制   Note: Youmayuseonecharacterinthekeyboardmorethanonce. Youmayassumetheinputstringwillonlycontainlettersofalphabet. 解法一: 常规解法,用unordered_set存储每一行的字母,依次寻找判断。 1classSolution{ 2public: 3vector<string>findWords(vector<string>&words){ 4unordered_set<

相关推荐

推荐阅读