当前位置: 首页 > 编程日记 > 正文

仅用2年过渡到自研ARM芯片,苹果的底气从何而来?


作者 | Steven Sinofsky

译者 | 弯月,责编 | 屠敏

题图 |  东方 IC

出品 | CSDN(ID:CSDNnews)

今年 WWDC 2020 上,苹果宣布自研 ARM 芯片——Apple Silicon,对于苹果而言,Apple Silicon很重要,原因有很多。完成这项任务需要卓越的产品工程。

在讨论所有细节、安装预发行版以及评论(包括我自己的评论)之前,我想先来回顾一下苹果全球开发者大会以及苹果过去二十年的发展。总的来说,我们可以看到历史上最杰出的产品工程。

每当谈论这个话题的时候,我们很容易陷入细节的争论中,苹果每一次细微的战略调整都让我们兴奋或惊喜,甚至是偶然的丑闻,或者对苹果产品质量(这一点就很容易引发争议)产生疑惑。然而,在幕后,纵观过去苹果的这支团队很好地完成了工作,甚至比任何其他公司都要出色。

我们使用苹果的产品已经很多年了,重要的是,从Mac开始,苹果经历了低谷、重生和重新发明,我很难想象为什么我会感到如此惊讶。

我的第一个Mac软件是一款名为“ Mac Mendeleev”的应用程序,它是一个可视化工具,可显示50多个元素的周期性属性。它是用Pascal编写的,当时Mac上的Mac Programmers Workbench程序还没出现。当时很多人受聘于微软从事“应用程序”的工作,而我大学毕业后成为了Mac程序员。当时开发应用程序的人似乎都在使用Mac。微软一半的业务是出售Mac Word和Mac Excel。

许多人可能还记得这本书:

许多人对于苹果为何如此出色都有自己的观点,但我想分享一下我的看法,从一个独特的角度出发分析苹果的发展旅程。我将专注于制造产品,虽然营销、制造、销售也有着同等重要的作用。

苹果的如下三个方面让我非常震惊,尤其是在如今这个时代。

  • 无所畏惧的多年战略

  • 明确统一的计划/优先级

  • 前所未有的执行力

许多人倾向于只关注“战略”(例如垂直整合),或者“制造执行能力”(例如Tim Cook加入公司时的传奇供应链工作),或者“营销”(“买一台Mac”)。所有这些都很令人惊奇,很关键。我选择关注产品开发的总体思路,因为我认为这是一切的基础。

当Tim Cook谈到过渡到Apple Silicon需要两年时间时,我惊讶得合不拢嘴。首先,两年时间一眨眼就过去了;其次,两年的时间长得足以让每个人失去耐心。

我来说明一下这一点。

从PowerPC到英特尔的过渡是在2005年春季宣布的。第一台PC于2006年1月交付,到8月份的时候,整个生产线都转移到了英特尔(大约一年)。

到2009年夏季,OS X不再支持PPC;

到2011年,Rosetta仿真完全消失了。

整个过渡过程似乎花了5年的时间,但实际上最大的阻碍是Adobe。我相信,我相信,如果Adobe早日合作,那么这个过渡会快很多(而不是拖延成现在这个样子)。我们在近期的讨论中看到了时间表,包括Tim的“ 2年”时间。

但实际上,这中间的可变因素太多,更重要的是还有可能出错,所以这个计划的确太有勇气了。每个大公司都会制定多年计划(我也曾经历过),但是每个人都知道这些计划在一个财政年度后就会失去意义。而苹果在这方面完全不同。

最重要的是苹果的整体模型将如何发挥作用。这个模型的各个方面必须齐心协力,才能创建一个环境,并在其中做出选择和提供支持,以确保这些计划能够顺利完成。

我所谓的“苹果模式”并不是指苹果直接面向消费者的业务,也不是指它的垂直整合,而是指苹果的文化,有“观点”的文化。苹果公司生产的产品深受顾客的喜爱和满意,但他们实现这一点的方式是通过研究技术、市场和用途来制定计划和战略。与教科书的内容不同,苹果公司对于微观变化、炒作周期甚至“反馈”的反应要少得多。实际上你经常会看到,当苹果公司急于将产品推向市场,或过度关注炒作(例如Home Pod)时,苹果模型的表现并不好。苹果公司是一个有观点的公司,当他们的观点与人们喜爱的伟大产品一致时,这就会成为不可阻挡的力量。

例如,尽管Office可靠地交付了数十年,但与Windows一起制定计划却非常困难,因为Windows的计划和交付方式与Office完全不同。再加上企业客户与OEM客户之间的差异。我们能在1995年的夏天完成计划简直是个奇迹。

在这里,分销渠道的差异完全改变了产品的制造方式。首先,90年代的Office针对从零售渠道的发布进行了优化,这意味着针对大量特定国家或地区的“客户”都需要提前一段时间,包括设计平面广告的时间等。Windows重点关注OEM,这些OEM的交货提前期间更长,并且还有季节性(学校开学、放假、春假等),因此最多可能需要提前3-4个月。

实际上,当Windows项目完成日期是一个移动的目标时,所有这些工作都将变得徒劳无功。当业务目标朝不同方向发展,并与大型独立公司的生态系统进行合作时,就必然会产生这些不利条件。然而,这样带来的好处也十分明显。

向Windows NT的过渡始于1995年,原计划需要一年的时间。而向Windows XP过渡则是2001年,因此最终交付的产品的质量愈发下降(例如Office),因为在那段时间里我们要给大量产品做技术支持(Windows 9x系列)。然而我们依然要按部就班地发布Win2000,然后是XP,然后是XP SP2,每个产品都出现了延迟。

注意:Windows NT和95是由两个完全不同的组织开发的,因为NT是作为服务器战略,由一个独立的组织负责开发的(事后证明这是明智选择,但只是推迟了战略协调) 。当初的想法是将NT内核嵌入到Windows 9x内核下,但事实证明这并不是那么简单。结果,9x团队交付了98、98 SE和Me,以继续发展硬件生态系统并努力保持发展势头。Windows 2000是第一个协调的内核+ GUI,但在兼容性方面不尽如人意。最后在2001年推出了Windows XP,但是该产品一开始存在重大的安全问题。在Office发布时,Office 97,Office 2000,Office XP和Office 2003中,所有这些都是32位应用程序,尽管直到Office 2003(2003年8月发布,比XP SP2早一年!)的时候我们终于不再支持9x平台了(发布8年后)。

例如:到64位的过渡。这个过渡整整花了25年,但仍然没有完成。相反,Excel 2.2仍可在32位Windows上运行,WordPerfect MS-DOS也仍可运行,这是一个了不起的成就,并且受到了广大客户的高度评价。真是不同的世界。

然而其他公司的64位过渡更不可思议。微软开创了64位计算的先河——通过与AMD合作,微软推动了兼容的行业标准的发展,而从某种意义上说,英特尔一直在反对该标准(以避免IA64的商品化)。然而,微软在保持兼容性方面表现出了超凡的“耐心”。即使在今天,Office仍默认安装并推荐32位产品。我们的团队在2003年做出了这个选择。现在仍然是这样。

苹果从2017年开始需要64位应用程序。仅仅两年后,苹果就不再支持32位应用程序。

苹果模式的重要组成部分是“无所畏惧”,即为了坚持战略,苹果宁可更换其合作伙伴和生态系统成员。这一点使得消费者成了每个人的消费者,因为消费者会自己更换设备。企业计算模型不允许随意更换客户,因为你的客户只有2000家跨国公司。

1996年的《计算机世界》报公布了微软想要开发64位Windows。

2020年5月的文章,微软不再为PC生产商提供32位系统,但已有的系统依然会提供支持。

我们并没有做错。许多人争论道,对兼容性的承诺和客户优先让微软独树一帜。我同意并相信这一点。不过,这样做的结果就是客户不再那么希望与你一起前进了。真是不同的世界。

关于成为一家面向企业的公司并承诺兼容性,可以写整整一本书。成功的回报是极高的,但这几乎是浮士德式的讨价还价,因为你必须放弃创新的权利。有一件事我已经谈论过很多次,那就是SaaS应该如何在企业领域发展。许多人认为,SaaS的好处是你可以保持产品最新并进行更改,但问题是,能达到如此大规模的企业产品很少有能够按一个按钮就能实现更新的。对于许多公司而言,这个功能都是“待议事项”。事实证明,将一项主要举措分解为很多非常小的功能并进行推广通常非常困难,甚至不可能,因为每次推出都会产生摩擦。

从近期的全球开发者大会中就可以看出,苹果的多项大众产品开发团队为了执行多年战略时付出了无数坚持不懈的努力。真是太神奇了,我真的很感激。我想起了一句话“不发布组织结构图”……

发福组织结构图是任何一支超过100人的团队都必须与之抗衡的巨大阻力之一。我们所说的产品“团队”可能超过了两万人,这是我离开微软时其团队大小的两倍。

我不知道苹果的研发团队有多大,或者我们在全球开发者大会上看到了多少工作。多年以来,苹果公司的规模一直小于或等于我所在的Office或Windows团队的规模。作为竞争对手,我一直在密切关注这一情况。现在,苹果拥有微软一样的体量,因此不知道内部细节就很难进行比较。

令人难以置信的是,苹果公司的每个人都将战略要求置于自己团队的要求之上。如果你想知道为什么Notes中没有更多新功能,或Mail缺少内容,那是因为多年战略优先于各个团队的战略,这是一件好事。

有效的执行力度要求公司从上到下的全面配合,将战略放在第一位。这需要交流,也需要绩效评估和奖励。这意味着需要加强自上而下的管理,避免管理的“随机性”或“不统一性”。在公司内部实现这一点非常困难,甚至痛苦。

我的经历大相径庭。并不是说我的经历有多么糟糕,只是不同而已。微软的本地的业务更多,因此在许多其他业务中的适应力要强得多,并能为许多不同的客户类型提供服务。有人甚至说,微软对客户的反应更快。

在大公司中,要求别人做与成功貌似关系不大的事情是一种负担。大公司(除了苹果之外)的员工都知道这种负担是什么。而在苹果,这种“负担”是好事,这是独一无二的,值得赞赏。

我的看法是,比如Windows可以拆分成50个左右的团队。每个团队负责产品的一部分(Office与此类似,有35个团队)。每个团队大约有50名工程师。考虑一个负责媒体平台或者叫设备支持的团队。某个时刻你会均衡分配资源,以保持每个人工作的连续性,并维持每个人的专业技能。这就是说,某个时候你必须痛苦地思考,如果你在某次发布中不需要团队成员专注于技术领域(例如需要保持稳定性的时候),那么他们会做什么。做法之一就是只要求团队成员提供战略层面上要求的东西,以平衡个人目标与战略目标的冲突。这就是为何团队不像“产品团队”那样拥有自己的研究目标,而是仅仅为了战略目标而工作。在这个远程工作的时代,这个问题要比人们想象的重要得多。

苹果近期以及大多数发行版中的“随机性”很少。这很重要,这意味着5年之后就没有需要清理的东西,也没有要淘汰的东西,不会造成任何痛苦。对我而言,最难的事情是干掉没人使用的东西(比如Windows的媒体中心!)

在微软想删除什么东西是绝对不可能的。我(或我们)已经尝试了无数次。一个笑话是,Excel团队一直在修改欧洲一家银行使用的OS / 2版Excel上的一个bug,直到很久以后除了这家银行之外没有任何人使用OS / 2了,这个bug还没有改完。媒体中心就是一个典型的例子,我知道我只要发一条推文,就会收到有人说“我用过”。我们甚至发布了没人会相信的使用情况数据。

最后,维基百科上有一张1984年以来苹果产品发布的路线图。每个阅读本文的人都应该看看,那简直是一件艺术品。没有一家软件公司能在如此长时间内定期发布这么多次,更不用说市值超过十亿的大公司了。

苹果的路线图不是Scrum或敏捷,也不是……大多数人称其为瀑布,但事实并非如此。它是计划、迭代、确定优先级、丢弃、重新启动等流程。在我的职业生涯的大部分时间里我都认为,制定战略并优先战略,才能拥有如此大的影响力。

许多人对此表示反对。很快对话就会变成讨论怎样才算“做得不好”。苹果的做法很独特,他们将长期目标分解为短期目标和能够投入市场的有用步骤,并且不懈地努力,不偏离计划。他们之所以这样做,是因为他们对市场的看法与大众的观点相同,因此不用担心被炒作周期、竞争对手的动作等迷惑。

微软的产品历来以三个版本之后才能用而著称,这与苹果完全不同。在我看来,微软做出的两个最大的战略赌注之一是图形界面,这与苹果开始开发图形界面大致在同一时期(Multiplan是第一个产品,Excel是第一个主要的新产品)。之所以称为赌注,是因为很多人不同意!第二个赌注是为将来构建一个全新的操作系统。有意思的是,它能与第一个赌注(Windows 9x)融合,完全是因为它“来晚了”。这跟苹果完全不一样,更多的是响应产品的变化。Windows NT是一种与苹果一样对执行力始终如一的产品。与客户保持一致影响了这一能力。

看看其他公司,那些试图预先发布的公司,也许是一家好公司,但或者速度慢,或者规模比苹果小很多,或者质量下降。苹果也有过起落,但我知道苹果的前高管认为这很重要!

我非常惊叹于苹果的执行情况,离开微软后我有机会与一些前NeXT和前苹果的人交谈,很高兴听到他们为实现这一目标付出了多少努力。很惊人。

有人问为什么微软不承诺每年发布。首先,Windows在历史上甚至无法按时完成一个发行版(除了2001年8月发行版的Windows XP的确实现了一年发布,但是后来需要制作Service pack,导致一个原本3个月的项目拖到了30个月。)

除了我们自己的执行能力之外,一个真正的挑战是生态系统对于定期发布的承受能力。其中包括一年前购买PC且没有“免费升级”模式的最终用户(因此是经济因素)。苹果免费提供操作系统文明,而这在当时对我们来说是一个难题。

Office按24到36个月的时间表发布,因为企业业务不需要那么多新软件。即使客户使用ARR支付(所谓的企业协议),他们也没有足够的精力来部署和培训员工。

综上所述,这意味着在任何给定时间,只有大约1/3的客户使用的是最新软件。其他2/3依然在使用6-8年之久的旧软件。这就是为什么兼容性如此重要的原因。这意味着,团队今天正在开发的东西需要在一台有8年历史的计算机上工作。

真的吗?我们终于在这方面取得了突破,因为我们意识到,一台8年历史的计算机也不是一台可以安装新软件的计算机。那为什么还要兼容性呢?有了企业协议,客户只需要询问一下。微软实际上需要对这些客户负责。

先别急着崇拜这些概念,要知道苹果的战略可行只是由于两件事。首先,苹果公司的人很棒。是的,每个人都这么说,而且我们都相信苹果公司的每个人都是世界上最优秀的员工。

我是认真的。

其次,许多人认为这是因为垂直整合或专注于设计或其某些属性。许多证据表明,仅这样做还不够。索尼专注于设计。DEC采用了垂直集成(他们制作了软盘)。甚至IBM。垂直是达到目的的手段,而不是原因。

苹果是独一无二的。不要尝试复制。

最后我想说,苹果公司能够为十几亿人带来优质的产品,是因为他们在产品制造商精益求精。

原文链接:

https://medium.learningbyshipping.com/apples-relentless-strategy-and-execution-7544a76aa26

推荐阅读
  • 干货!仅有 100k 参数的高效显著性检测方法

  • 阿里巴巴副总裁司罗:达摩院如何搭建NLP技术体系?

  • Python 爬取 13966 条运维招聘信息,这些岗位最吃香

  • 马斯克、李彦宏、姚期智等云端纵论AI,他们都说了什么?

  • Python轻松搞定Excel中的20个常用操作

  • 2020 活久见:欧美主流 app「熔断」了

  • Balancer因通缩代币STA遭遇闪电贷攻击,价值50万美元资产被黑

你点的每个“在看”,我都认真当成了AI

相关文章:

从“创业输家”到“创智赢家”

年轻就是创业的资本,但同时还要不怕失败,经得起挫折!”在上海财经大学的演讲厅内,彭震以自己亲身的经历,向在场的学生们介绍了自己创业背后的艰辛。彭震,现任项丰投资公司董事长,作为首届“ 创智…

2.正则表达式

在计算机科学中,正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用…

基于监督学习+自监督学习的智能抠图,精确到发丝 | CVPR 2020

来源 | AI算法与图像处理(ID:AI_study)华盛顿大学的研究者最近发表的论文在CVPR 2020提供了一个新的和简单的智能抠图方法。你可以在家里做这些日常设置,使用固定或手持相机。我们的方法也是最先进的,给出的输出可比专业的结果。在…

安装Jpype

1、下载JPype-0.5.4.2 2、 python setup.py install error: gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector --paramssp-buffer-size4 -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fPIC -I/usr/lib/jvm…

SQL SERVER中带参数的返回

作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/ CREATE PROCEDURE LoginUser loginUN char(50) OUTPUT, loginPW char(40)ASif loginPW (select [password] from users where usernameloginUN) return 0;else ret…

Android Studio 编译单个module

前期自己要把gradle环境变量配置好 在Terminal中gradle命令行编译apk 输入gradle assembleRelease 会编译全部module编译单个modulecd ./xiruan //xiruan是module的名字 //意思是进入module目录gradle assembleRelease //编译出自己签名的apk //签名环境也要配置好gradle ass…

linux下文件字符集转化实战篇

linux下文件字符集转化实战篇------------------------------------------为什么转换编码,起因:分析应用程序日志,文件编码格式gb2312(含中文字符),通过linux shell脚本从日志中提取出需要的字段并生成有固…

如何得到数据库中所有表字段及字段中文描述

如何得到数据库中所有表字段及字段中文描述以下资料,通过csdn的一位师兄从SQL版主那得到:sql中SELECT (case when a.colorder1 then d.name else end) N表名, a.colorder N字段序号, a.name N字段名, (case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end)…

它估值25亿!被马云领投,是华为“老战友”,网友:也许股价能超茅台!

最近一条新闻被炒的沸沸扬扬:十年以来中国最大IPO,中芯国际将融资532亿元!何为IPO?翻译即为一家公司第一次向全社会公开售出它的股份。买的人越多,代表着社会对其信心越大。为什么2020年,能爆发这样1场最大…

改變人生的21種好習慣

當一個人生活枯燥的時候, 他忘了用心體會是一種習慣。 當一個人覺得人生乏味的時候, 他忘了培養幽默是一種習慣。 當一個人體力日差的時候, 他忘了運動建身是一種習慣。 當一個人工作疲憊的時候, 他忘了認真休息是一種習慣。 當一…

Python 编程语言的核心是什么?

作者 | Brett Cannon译者 | 弯月,责编 | 王晓曼头图 | CSDN下载自视觉中国出品 | CSDN(ID:CSDNnews)为什么要问这个问题?我想要用Python实现WebAssembly,这并不是什么秘密。这不仅可以让Python进入浏览器&a…

关闭页面不用提示的方法

Response.Write("<script>window.openernull;window.close();</script>") ;

VIM 必知必会12大类型操作

2019独角兽企业重金招聘Python工程师标准>>> VIM是在unix/linux系统下最常用的文本编辑器,呵呵……这就不用我再强调了&#xff0c;现在直接贴上vim的最常用的操作&#xff0c;方便日后温习及查阅&#xff01; 1、插入 i 在光标前插入 I 在行首插入 a 在光标后插入 …

前后端分离的思考与实践(三)

Midway-ModelProxy — 轻量级的接口配置建模框架前言使用Node做前后端分离的开发模式带来了一些性能及开发流程上的优势(见《前后端分离的思考与实践 一》), 但同时也面临不少挑战。在淘宝复杂的业务及技术架构下&#xff0c;后端必须依赖Java搭建基础架构&#xff0c;同时提供…

替换HTML代码

将一些HTML替换掉 eg:strContentstrContent.Replace("&","&amp");strContentstrContent.Replace("","");strContentstrContent.Replace("<","&lt");strContentstrContent.Replace(">&quo…

什么是线程安全?

http://baike.baidu.com/view/1298606.htm 线程安全 目录 什么是线程安全&#xff1f;举例线程安全性线程安全程度不可变线程安全有条件的线程安全线程兼容线程对立什么是线程安全&#xff1f;举例线程安全性线程安全程度不可变线程安全有条件的线程安全线程兼容线程对立展开编…

中国开源大爆发进行时,你没掉队吧?

作者 | 陈利鑫头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;从开源&#xff08;Open Source&#xff09;一词提出到如今&#xff0c;开源的概念越来越成熟&#xff0c;作为一种创造及协作模式&#xff0c;开源已经不仅仅局限于软件技术…

eclipse设置

2019独角兽企业重金招聘Python工程师标准>>> eclipse 下载 地址 http://www.eclipse.org/downloads/packages/release/Ganymede/SR2 设置 jdk 参数 jre definition vm arguments -Xms800m -Xmx800m -XX:MaxNewSize256m -XX:MaxPermSize256m -Dfile.encod…

吊打一切:YOLOv4的tricks汇总

来源 | AI算法与图像处理&#xff08;ID:AI_study&#xff09;即使是目标检测在过去几年开始成熟&#xff0c;竞争仍然很激烈。如下所示&#xff0c;YOLOv4声称拥有最先进的精度&#xff0c;同时保持高处理帧速率。它在 MS COCO数据集上&#xff0c;使用Tesla V100以接近65 FPS…

如何播放RM文件?

<EMBED SRC"MY_LIFE.RPM" WIDTH300 HEIGHT134 >Tip:SRC是可以省略的&#xff0c;当mime Type 参数如下时&#xff1a;<EMBED ...,TYPE"audio/x-pn-realaudio-plugin",...>&#xff0c;这样做会产生不可预料的结果&#xff0c;因此强烈推荐你包…

mongodb地理位置索引实现原理

地理位置索引支持是MongoDB的一大亮点&#xff0c;这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一。我们知道&#xff0c;通常的数据库索引结构是B Tree&#xff0c;如何将地理位置转化为可建立BTree的形式&#xff0c;下文将为你描述。 首先假设我们将需要索引的…

NSMakeRange基础函数应用

NSRange NSMakeRange (NSUInteger loc,NSUInteger len );这是官方得接口描述。loc 为location缩写&#xff0c;len 表示长度。作用&#xff1a;在loc指定得位置开始往后获取len长度个得元素。示例程序使用这个函数来为指定数组得某个位置向后指定长度得元素集合。如NSRange NSM…

上传图片,要求图片200100象素,大小小于2M

作者&#xff1a;网际浪子专栏&#xff08;曾用名littlehb&#xff09; http://blog.csdn.net/littlehb/上传图片&#xff0c;要求图片200100象素&#xff0c;大小小于2M&#xff0c;如果图片不符合要求&#xff0c;不能上传&#xff0c;否则上传图片&#xff0c;上传以后对图…

炸裂!这些大厂跪求的人才太牛了!

今年所有的互联网公司都在ALL in AI&#xff0c;百度、腾讯、阿里巴巴、京东等互联网巨头都在四处挖掘AI人才。AI的岗位需求很多&#xff0c;几乎每天都有数百个JD放出。而亿欧智库发布的《2020全球人工智能人才培养研究报告》提到&#xff0c;近4年AI人才的需求量以每年74%的速…

新春祝福必杀计之发送短信攻略

新的一年就要到了&#xff0c;陆陆续续的收到很多同事们的短信祝福&#xff0c;哎&#xff0c;不能欠人家的人情债啊&#xff0c;但是我实在是个懒人啊&#xff0c;这个祝福短信还是要回复的啊&#xff0c;我的手机里有超过百位联系人&#xff0c;全是和工作有关的&#xff0c;…

centos6.5环境DNS-本地DNS主从服务器bind的搭建

centos6.5环境DNS-本地DNS主从服务器bind的搭建在上一篇博客中我已经搭建好了一个本地DNS服务器&#xff0c;能够实现正向反向解析&#xff0c;那么我们只需要加入一台从DNS服务器即可完成&#xff0c;我们来开始配置主从服务器&#xff1a;一&#xff0e;主DNS服务器上面的额外…

再见,Python!

结合我最近这些年的 Python 学习、开发经验&#xff0c;发现近90%的程序员在学 Python 时都会遇到下面这3个问题&#xff1a;1.想学Python&#xff0c;但不知从何学起&#xff0c;应用方向太多了也不知道该选择什么方向...2.基础入门看似简单&#xff0c;但是进阶实战就举步维艰…

如何更新父窗体

Response.Write("<script languagejavascript>window.opener.locationwindow.opener.location.href;</script>") 第一种方案是&#xff1a;file a.htm function OpenDialog(url,param){return window.open(url,param, "DialogWidth:450px;DialogH…

文件体积单位的换算

单位转换&#xff08;参考&#xff09;&#xff1a; 1bit&#xff08;这个比特表示一个二进制数字&#xff09; 1Byte&#xff08;这个单词音译过来也叫“比特”但是表示一个十六进制的数字&#xff09; 1B1Byte8bit 1 kB 1024 B (kB - kilobyte) 千 1 MB 1024 kB (MB - mega…

防止盗链下载问题

经常在网络上四处载东西&#xff0c;有时碰到直接拷贝一个类似 http://193.100.100.56/TestWebSolution/WebApplication1/test.rar地址准备下载test.rar文件时&#xff0c;却被告知没有登录或者直接跳转到其他页面的情况&#xff0c;然后等登录后直接下载该文件。要实现上面情况…