当前位置: 首页 > news >正文

【郭东白架构课 模块一:生存法则】09|法则四:为什么要顺应技术的生命周期?

你好,我是郭东白。今天我们来讲架构师的第四条生存法则,那就是尊重技术的生命周期。

人类的各种活动都要遵循事物的客观生命周期。不论是农业社会种田打渔,还是资本社会投资创业,行动太早或太晚,都会颗粒无收。技术也一样,也有自己的生命周期。而我们作为架构师,如果看不清技术的生命周期,那么所设计的架构就没法儿向更有生命力的新技术借力,自己的职业生涯也会受限。

那么我先来完整描述一下这条法则:在架构设计的过程中,架构师会有一个相对确定的商业和技术选择空间。在这个选择的空间内,架构师做技术选型的时候,必须要考虑到所依赖的商业和技术模块的生命周期。这个时候,我们就需要看准技术趋势,选择已经有规模优势或者是即将有规模优势的技术,而不是选择接近衰老期的技术。

我们先来讲讲,为什么有的人能够看准一个技术的生命周期, 而有些人却做不到。找到了根因,也就知道自己该怎么改变了。

把握时机

你有没有见过有的人年复一年辛苦劳作,却一无所成。而有些人似乎没怎么使劲儿,却能飞黄腾达。似乎大风总是吹向这个猪。你嫉妒地牙痒痒,心想,难道风就不能停下来,摔死这头猪?

你有没有想过,人家可能是会玩滑翔伞御风而行的猪啊!一个新的商业周期开始,就像是大风骤起,可以把一个看似不怎么努力的御风之人推向成功。事实上,如果从商业维度看,把握好周期远远要比努力工作更重要。

就像很多人职业不幸,是在五年前甚至是十年前犯下了致命错误。他们每天都在忙碌,来去匆匆,甚至都没有机会仰望星空。但就在恍惚之间,斗转星移,错过了一个大的商业和技术生命周期。结果是不论怎么努力,永远都慢这个时代半拍。

我也一样。我和身边许多做技术的同学,多数时间都在看小尺度的问题,日常工作和注意力都放在需求实现、领域建模、平台重构、中间件升级之上,因此我的思考也被这些工作所主导,很少去思考五年、十年,甚至二十年的技术趋势。我们不关注,当然也谈不上如何利用技术周期了。

技术的生命周期就像是潮水。潮来,汹涌澎湃,绵绵不绝。潮去,风平浪静,滩涂尽显。人一生的黄金岁月中也就是几个浪头而已。就过去 40 年而言,真正大的技术浪头有个人电脑、互联网、移动互联网、AI,差不多是每十年一个。你要在这种技术大浪潮之上玩好冲浪,就必须看清楚浪头,准确把握好技术方向和入场时机。如果错过,再等新的一个技术周期,几年的黄金岁月就浪费了。

所以在接下来两节课,我会给你讲讲怎么看清楚并利用好技术的生命周期。另外,我需要特别说明一下,我不认为自己真正看准过这些趋势。事实上,我也没能借到浪头的最大势。

我分析原因,是因为存在着三个人性上的弱点:

  • 自我麻痹,以繁忙的重复工作来代替深度思考;
  • 畏惧变化,以最小化改变来维持自己的心理安全感;
  • 路径依赖,以过去的成功经历来应对未来案例。

我可能比大多数人幸运一点的地方在于,我很早意识到了自己有这些弱点,所以无时无刻都在提醒自己,去抗拒这些弱点。

那么接下来,我们先认真分析一下这三个弱点。只有克服了这些弱点,才有机会看清楚技术的生命周期,把握住新技术。

让我们放弃思考的三大弱点

弱点一:自我麻痹

自我麻痹是指我们用各种方法让自己放弃思考和探索的欲望。

其实大多数互联网从业者都是精英,从小到大都是学霸,内心不太能接受自己不思进取。但是人类进化出了一个自我保护机制,让我们不去天天担心风险。以至于我们常常会忽视自己现处环境的风险,导致我们不能全力探寻新的出路。于是我们会让自己每天都忙起来,用勤奋来弥补内心的不安。

团队和公司也是一样。尤其是一个营收压力特别大的公司,整个公司都忙着加班改代码,生怕老板看不到我们的勤奋。这个时候,没有人敢去挑战长期技术战略,也没有人关注新的颠覆性技术。

出现这种现象的根源,就在于高层管理者和软件架构师。有的管理者有意无意地把工作繁忙等同于有产出,于是让团队持续做毫无目标的布朗运动。其实麻痹自己越久,就越是难以突破。越没有突破,就越是没有去突破的勇气。这种恶性循环,让团队乃至整个部门,一年到头都没有实质性的进步。

我们只有承认和面对现在的风险,才有勇气放弃麻痹自己的行为,把部分注意力从当前技术放到更新、更有颠覆性的技术上去。而不是被动地等着他人告知自己下一步需求。

弱点二:畏惧改变

在讲马斯洛模型的时候就提到了,心理安全感的需求导致我们会畏惧改变,这是我们与生俱来的本性。

举个实际工作中的例子。前段时间有位技术人员给我分享他稳定性治理的经验,他描述了如何通过一个独立的运维团队,把一组很烂的微服务运维到接近五个九。我很诧异,他们直到现在竟然还在使用独立于研发的运维团队,来保障公司核心系统的稳定性。

后来追问细节才知道,这家公司连续几任 CTO 都没做过互联网高可用架构。因为这个核心服务是公司营收路径上最重要的一环,所以连续几个 CTO 都不敢大兴土木,从根本上解决这个服务的稳定性问题,而是通过运维的方式先顶着。这一顶,就是 4 年多!

畏惧改变,让这个团队从 CTO 到架构师,再到一线主管,都丧失了稳定性治理的勇气。直到现在,这家公司还在沿用几年前自研的微服务框架,而没有引入当下常见的 Spring Framework,也没采用 Service Mesh。从头到尾都是一套年久失修的老系统, 离开的人越多,懂的人越少,就越没有人敢改动。现在,公司只能靠大量的全职运维团队来续命,以至于风险稍大的发布,还是要运维团队来做。

其实我们都一样,一旦赌注足够大,就会产生畏惧。我们率先放弃了改变的勇气,跟着就会放弃改变的欲望。得过且过,离新的技术趋势越来越远。

弱点三:路径依赖

所谓路径依赖,就是你被过去的成功所蒙蔽了,以为过去的成功可以复刻。当过去的成功路径成了你唯一的选择,那么你也不会关注,更不会去探索新的路径了。

这就是我们儿时学习的守株待兔的故事。其实细想一下,守株待兔这件事再自然不过了。我们的大脑本来就是被不同事件训练出来的。哪天一个史诗级的训练样本发过来,正常人的神经元哪能扛得住?

还是举一个技术的案例。几年前有个同学转岗到我团队。他之前在一个大部门里做基础架构,曾经做过合并部署,就是把几个相关的微服务部署在同一台虚拟机,甚至是把几个微服务合并成一个巨石服务,然后部署在同一个 JVM 上。

这么做其实是个反模式,虽然会减少网络开销,提升性能,降低计算成本。但实质上,这个过程是用长期的运维和人力成本来替换机器成本。要知道,机器成本和网络带宽,在今天还基本符合摩尔定律。所以通过不断增加人力、维护和迁移成本,去替换每两年就减半的计算成本,这么做是不理智的。事实上,更大的成本是机会成本,这种巨石服务会增加升级改造的难度。也就是说,会让一个企业,很难快速响应新机会和新的竞争。

不过在他之前遇到的场景下,这样做的确可以带来实实在在的短期回报,所以他在之前的团队得到了很大的认可,也因此得到了晋升。同时,他也为自己的成就感到自豪。毕竟合并部署的技术难度非常大,因为越是调用量大的核心服务,代码往往越是年久失修、依赖复杂,jar 包冲突解决起来就越棘手。所以就像多少有点儿特长的技术人一样,他也是拿着锤子到处找钉子。只不过,他更像是拿着雷神之锤。

但我所在部门的 BU 的计算量,远远低于他之前的大部门,峰值流量还不到他们的百分之一。这么一来,虽然开发成本一点儿没少,但做合并部署的回报却远远小于他之前的工作场景。

而这个时候,Kubernetes 已经开始暂露头角。Kubernetes Pod 加 Docker Image 就已经可以非常完美地解决合并部署能解决的大多数问题了。但这位同学,因为有了之前的成功经验,根本没有去探索合并部署之外的解决路径。结果他的项目进行到一半,大家意识到 K8s 才是更合理的解决方案,所以他的项目也就草草收场了。

这就是路径依赖。如果我们被某个史诗级的训练样本冲击过,都会过度相信自己过去成功或失败的经验。这会让我们看不到其他的技术可能,更别说新的技术趋势了。

如何克服弱点去把握技术趋势?

关于影响我们思考的三个人性弱点,到这里就讲完了。那么该怎么克服弱点,去把握技术趋势呢?

如何克服人性的弱点?

先分享一下我的办法。仍然有必要重申的是,我并不觉得这些办法好在哪里,但有必要分享我在克服这些弱点上所做的努力,就算是抛砖引玉了。

首先,日常工作中我也经常会麻痹自己。不过我跳出这个状态的办法就是,每年会留出两次深度忏悔的时间。一次是在春节后,一次是在我生日之后,正好间隔半年左右。在这两个时间点,我会放下当前所有事情,回想过去半年是不是做错了什么,有没有获得什么本质上的能力提升。没有提升的话,我会很沮丧。不过我心比较大,过两天就又恢复正常了。

但是半年后,如果发现自己还是同样沮丧,那么我就会琢磨,是不是要逼迫自己找个更有压力、更能成长的事情和环境了。

这就到了第二点,克服内心的恐惧,迎接变化。这一点我天生要比很多人好。虽然在变化来临的那一刻还是会有很大的恐惧,但与此同时,我又无时无刻不在期待着变化。不止在工作中,生活中也是一样。随性的探索和意外的惊喜,总会带给我更大的乐趣。如果说我不恐惧变化,那完全是胡扯。但我会用对获取惊喜的期待,来压制内心的恐惧,这个办法对我一直很有效。

路径依赖最难破。我记性还不错,表达能力也比较强,而且我也经历过很多波折。但到了后来带团队时,就发现这些特性看起来是优点,其实会放大我的路径依赖。

比如面对一个相对来说经验没那么丰富,表达能力没那么强的同事。我能够及时召回重点案例或个人经历,然后把逻辑准确表述出来。这个时候,我会更容易说服周围同事,导致我的建议更占上风。

这个问题在我刚开始做 CTO 时变得非常严重。因为大多数参会者是我的下属或同事。他们可能不愿意反驳我,甚至哪怕是我错了,也不一定会纠正我。

我意识到这种情况之后,就开始刻意让自己更关注那些想法独特,或者是经常挑战我观点的人。比如下属反对我的话,如果我们各自的逻辑都很严谨,仅仅是假设有所不同。那么我表达观点之后,就会强迫我放弃自己的立场。

这么做,一来可以防止我有路径依赖,二来也是为了培养下属,让他们有足够的决策空间和犯错空间。这样一来,他们不犯错,我就有成长。他们犯了错,他们自己就有了成长。两全其美,何乐而不为?事实上,在这个过程中,我发现了非常多优秀的人才。我相信他们中间有很多人的思考和成就必然会超越我。

假设没有这些弱点阻碍你探索技术趋势,那么我们就可以试图通过热度曲线来比较客观地分析技术趋势了。

如何通过热度曲线看技术生命周期?

如下图所示,是热度曲线(Gartner Hype Curve)。它是对新技术流行趋势的一个比较不错的建模。我们身边大多数技术的发展,其实都基本符合这个曲线。

在这里插入图片描述
如图所示,横轴是时间,竖轴是流行热度。发明者 Gartner 把一个技术的周期大致分为五个阶段,分别是:

  • 萌芽期 (Technology Trigger) :指的是技术被公开,媒体热度陡然上升,还没有成型的产品和商业应用场景。
  • 至捧期 (Peak of Inflated Expectations) :指的是有了一些成功案例,当然也有失败案例,技术被吹捧到了极致。
  • 低谷期(Trough of Disillusionment):这个时候,热度回归到理性,失败案例被放大。如果产品不能让早期受众满意,那么技术就会在这个阶段消亡。
  • 灵感期(Slope of Enlightment):产品逐渐找准在行业的价值定位,二代三代产品出现,产品逐渐出现理智的商业用户和成功案例。
  • 产出期(Plateau of Productivity):在这个阶段产品被主流市场认可和采用。

其实我们身边大多数的技术,都活不到产出期。其实能活到至捧期的技术,也寥寥无几。Docker 是一个非常符合 Gartner 曲线的经典案例。你要是有兴趣,可以读一下 Docker 从发家到膨胀,再到被群起打压,最后到一个相对稳定的定位的过程。这对你理解热度曲线会有极大的裨益。

其实 Gartner 的热度曲线不完全是原创。法国著名社会学家 Gabriel Tarde 最先描述了创新传播的渗透过程,也就是S-Curve。它的竖轴是“prevalence”,指一个创新的渗透程度。就像马斯洛的理论一样,Gabriel Tarde 的 S-Curve 理论同样也是一个基本的理论,可以用来解释很多与创新相关的现象的传播,包括现代企业的生命周期。未来课程里,我们还会再次深入讨论这条曲线。

不过不论是 S-Curve 还是 Hype Curve,它们都有一些缺陷,那就是没有对竞争技术的干扰做建模,所以这两条曲线都没有描述创新的衰老期。可以说,在产出期之后,技术还有两个状态:

  • 衰老期(Progressive Aging):以该技术为基础的产品,已经逐渐开始被下一代的新技术所替代,产品的市场范围和利润逐渐被蚕食。
  • 退出期(Fade Out):产品已经完全退出主流市场,仅仅在一些场景契合度与替换成本都非常高的情况下,还在被维护和使用。

那么我们从这两条曲线的描述中能得到什么结论呢?

结论就是:所有的技术都像人类的生命一样,也有终结的一天。这是个自然规律。

怎么从架构师的角度理解这句话呢?一个老去的技术就让他老去,快死的架构不值得投入人力和时间去维护,更不用说去翻修或者是复用了。

我们在前面在讲马斯洛模型的时候就提到过,围绕一个旧架构体系的人的利益,已经和这个架构深度绑定,这就导致这个架构就像一个生命体一样,已经有自己非常强大的力量去延续它的生命。

举个例子。某个大厂,几年间连续三次搭建国际化底层架构。每一次都彻彻底底地失败了。而且每次失败,都跟旧的架构体系有关。
搭建国际化体系的方法有两种。一种是改造国内的系统,也就是我们常说的国内技术出海;另一种是重新构建一套系统。

大厂的架构本来已经非常老化了,处于技术生命周期的衰老期。甚至第一次出海的时候还是巨石架构,核心服务一周只能发布两次。最多的时候有同学发布几十遍都不成功。而发布不成功再等一周的情况也非常常见。

但这还不是核心问题,全球像中国这么大的单一市场就只有美国,而大多数国内企业也出海的第一站又不是美国。那么把全球第一大单一市场的技术架构,搬到一个百万或者千万人口的国家来运营,就一下子水土不服了。

如果从交易体量来算,哪怕是最大的国家,也不到中国的百分之一。百分之一是什么概念呢?你可以换算一下,这个基本上等于在你们家里修了一个有 20 个蹲位的公共卫生间。哪怕你家有那个面积,但你能维护得过来吗?

虽然大厂里也有反对的声音,但每次反对的声音都被压制了。因为大家不是不知道自己的系统不合适出海,而是谁都想从这个饕餮大餐里分一杯羹。哪怕自己的技术再老,那也要老当益壮,为公司捐躯。

我曾经反复思考过,怎样才能避免让一个老的技术和架构侵入到新的体系里来?硅谷达人 Guy Kawasaki 曾总结苹果公司 Macintosh 的成功,他认为关键就在于“低调加物理隔离”。我觉得这也应该是这个问题的答案。那就是把这种新的项目和公司其他部门分割开来。参与的人少一些,时间给宽裕一些,尽量远离公司的核心业务和人群。

我们也可以运用之前在尊重人性这个法则里提到的用户思维,来引导团队放弃一个衰老的技术。因为曾经再伟大的技术,在用户的面前都是渺小的。为了更好的用户体验,一切都值得推倒重来。

你可能会说,我们今天讲顺应技术的自然周期,老去的就让它老去。这个观点似乎太悲观了,难道我们就不能抓住一个技术萌芽和发展的机会吗?下节课,我们就来讨论一下这个问题。

小结

这节课我分享了自己如何克服弱点,来提升追逐新技术周期的能力和勇气。其中我特别想强调的是,当你把自己的思考尺度从三五个月扩大到五年或十年,那么这件事情的价值必然会很大。这个放大思考尺度的动作,会让你用不一样的视角来看待技术。

看一次看不懂,看两次看不懂,但是看多了,自然会看出门道来。从本质上讲,这是个算法训练的过程。当你老用一个小尺度的样本来训练自己的大脑,那么你的大脑就是一个非常优秀的小尺度决策机。但当你坚持用大尺度的样本来训练自己的大脑,那么你在大尺度问题上的决策质量,也必然会得到提升。

在这节课,我还介绍了 Gartner 的热度曲线所表达的新技术生命周期,以及热度曲线中缺少的衰老期和退出期。了解一个技术生命周期的最核心目的,就在于利用这个周期为我们的架构活动创造出最大的价值。

作为一个架构师,知天道不够,还是要顺天道,也就是说我们的架构要符合技术的自然周期。反之,为一个落后的架构注入新生就是不符合天道了。而想要抗拒这种行为,我们就要从用户思维出发。为了更好的用户体验,要舍得放弃任何曾经伟大过的技术。

思考题

三个作业,任选一个:

  • 除了我分享的三个弱点外,你觉得还有其他弱点会影响我们看更大尺度上的规律吗?你是怎么克服这个弱点的呢?
  • 你是如何看待当下比较流行热词呢,比如云原生、低代码、响应式编程、元宇宙,你怎么看这些技术的趋势?
  • 你或者你周围人,有没有还在维护那些已经在业界垂死的技术?你认为其中的根因是什么呢?

相关文章:

【郭东白架构课 模块一:生存法则】09|法则四:为什么要顺应技术的生命周期?

你好,我是郭东白。今天我们来讲架构师的第四条生存法则,那就是尊重技术的生命周期。 人类的各种活动都要遵循事物的客观生命周期。不论是农业社会种田打渔,还是资本社会投资创业,行动太早或太晚,都会颗粒无收。技术也…...

Linux之进程控制

一.进程创建 1.1 fork函数 我们创建进程的方式有./xxx和fork()两种 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程…...

SpringBoot社区版专业版带你配置热部署

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 SpringBoot社区版专业版带你配置热部署 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收藏⭐ 评论&#x1…...

影响AFE采样精度的因素有哪些?

**AFE&#xff08;Analog Front End&#xff09;**是模拟前端电路的缩写&#xff0c;它是模拟信号传感器和数字信号处理器之间的连接点。AFE采样精度是指模拟信号被数字化后的准确度&#xff0c;对于很多电子设备来说&#xff0c;这是一个至关重要的性能指标。本文将介绍影响AF…...

mysqlbackup备份报error:redo log was overwritten

问题原因 备份时redo log被覆盖 解决方案 方法1&#xff1a;增加innodb_log_file_size、innodb_log_files_in_group大小&#xff0c;需要重启数据库 vi my.cnf innodb_log_file_size 2G innodb_log_files_in_group 4 方法2: 动态配置redo log archive&#xff0c;不需要重启…...

Android支持库

# 支持库 注意:Android 9.0(API 级别 28)发布后,新版支持库 AndroidX 也随之诞生,它属于 Jetpack。除了现有的支持库,AndroidX 库还包含最新的 Jetpack 组件。 您可以继续使用此支持库以往的工件(这里指的是版本 27 及更早版本,且已打包为 android.support.*)在 Googl…...

Vue:filters过滤器

日期、时间格式化是Vue前端项目中较为常遇到的一个需求点&#xff0c;此处&#xff0c;围绕Vue的过滤器来介绍如何更为优雅的解决此类需求。 过滤器filters使用注意点 Vue允许开发者自定义过滤器&#xff0c;可以实现一些常见的文本格式化等需求。 使用时要注意的点在于&#…...

Windows环境下安装和配置Gradle

1. 概述 Gradle是Google公司基于JVM开发的一款项目构建工具&#xff0c;支持Maven&#xff0c;JCenter多种第三方仓库&#xff0c;支持传递性依赖管理&#xff0c;使用更加简洁和支持多种语言的build脚步文件&#xff0c;更多详情可以参阅Gradle官网 2. 下载 由于Gradle与S…...

数据结构时间空间复杂度笔记

&#x1f57a;作者&#xff1a; 迷茫的启明星 本篇内容&#xff1a;数据结构时间空间复杂度笔记 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;家人们&#xff0c;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤…...

基于注意力的知识蒸馏Attention Transfer原理与代码解析

paper&#xff1a;Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfercode&#xff1a;https://github.com/megvii-research/mdistiller/blob/master/mdistiller/distillers/AT.py背景一个流行的假设是存…...

利尔达在北交所上市:总市值突破29亿元,叶文光为董事长

2月17日&#xff0c;利尔达科技集团股份有限公司&#xff08;下称“利尔达”&#xff0c;BJ:832149&#xff09;在北京证券交易所上市。本次上市&#xff0c;利尔达的发行价格为5.00元/股&#xff0c;发行数量为1980万股&#xff0c;发行市盈率为12.29倍&#xff0c;募资总额为…...

C#操作字符串方法 [万余字总结 · 详细]

C#操作字符串方法总结C#常用字符串函数大全C#常用字符串操作方法C#操作字符串方法总结C#常用字符串函数大全 Compare 比较字符串的内容&#xff0c;考虑文化背景(场所)&#xff0c;确定某些字符是否相等 CompareOrdinal 与Compare一样&#xff0c;但不考虑文化背景 Format 格…...

极兔一面:10亿级ES海量搜索狂飙10倍,该怎么办?

背景说明&#xff1a; ES高性能全文索引&#xff0c;如果不会用&#xff0c;或者没有用过&#xff0c;在面试中&#xff0c;会非常吃亏。 所以ES的实操和底层原理&#xff0c;大家要好好准备。 另外&#xff0c;ES调优是一个非常、非常核心的面试知识点&#xff0c;大家要非…...

【Mysql基础 —— SQL语句(一)】

文章目录概述使用启动/停止mysql服务连接mysql客户端数据模型SQLSQL语句分类DDL数据库操作表操作查询创建数据类型修改删除DML添加数据修改数据删除数据DQL基础查询条件查询聚合函数分组查询排序查询分页查询执行顺序DCL管理用户权限控制概述 数据库&#xff08;Database&#…...

华为OD机试 - 新员工座位安排系统(Python) | 机试题算法思路

最近更新的博客 华为OD机试 - 招聘(Python) | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 五键键盘 | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 热点网络统计 | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 路灯照明 | 备考思路,刷题要点,答疑 【新解…...

MySQL - 介绍

前言 本篇介绍认识MySQL&#xff0c;重装mysql操作 如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 本文开始 1.什么是数据库? 数据库: 一种通过SQL语言操作管理数据的软件; 重装数据库的卸载数据库步骤 : ① 停止MySQL服…...

ChatGPT国内镜像站初体验:聊天、Python代码生成等

ChatGPT国内镜像站初体验&#xff0c;聊天、Python代码生成。 (本文获得CSDN质量评分【92】)【学习的细节是欢悦的历程】Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单………...

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

目录 第一步&#xff1a;记录批导步骤编辑数据源对应字段 第二步&#xff1a;维护数据源 第三步&#xff1a;维护数据源对应字段&#xff08;重要&#xff09; 第四步&#xff1a;维护数据源关系。 第五步&#xff1a;维护数据源与导入字段的对应关系。 第六步&#xff0…...

第9天-商品服务(电商核心概念,属性分组开发及分类和品牌的级联更新)

1.电商核心概念 1.1.SPU与SKU SPU&#xff1a;Standard Product Unit&#xff08;标准化产品单元&#xff09; 是商品信息聚合的最小单位&#xff0c;是一组可复用、易检索的标准化信息的集合&#xff0c;该集合描述了一个 产品的特性。 决定商品属性的值 SKU&#xff1a;Stock…...

动漫人物眼睛画法

本期的动漫绘画课程教大家来学习动漫人物眼睛画法&#xff0c;结合板绘软件从草稿开始一步步教你画出动漫人物眼睛&#xff0c;不用报动漫培训班也能学会&#xff0c;快来跟着本期的动漫人物眼睛画法教程试试吧&#xff01; 动漫人物眼睛画法步骤教程&#xff1a; 注意&#x…...

张晨光-JAVA零基础保姆式JDBC技术教程

JDBC文档 JDBC概述 JDBC概述 Java DataBase Connectivity Java 数据库连接技术 JDBC的作用 通过Java语言操作数据库&#xff0c;操作表中的数据 SUN公司为**了简化、**统一对数据库的操作&#xff0c;定义了一套Java操作数据库的规范&#xff0c;称之为JDBC JDBC的本质 是官方…...

华为OD机试 - 最多提取子串数目(Python)

最多提取子串数目 题目 给定由 [a-z] 26 个英文小写字母组成的字符串 A 和 B,其中 A 中可能存在重复字母,B 中不会存在重复字母 现从字符串 A 中按规则挑选一些字母,可以组成字符串 B。 挑选规则如下: 1) 同一个位置的字母只能被挑选一次 2) 被挑选字母的相对先后顺序不…...

LeetCode-1237. 找出给定方程的正整数解【双指针,二分查找】

LeetCode-1237. 找出给定方程的正整数解【双指针&#xff0c;二分查找】题目描述&#xff1a;解题思路一&#xff1a;双指针。首先我们不管f是什么&#xff0c;即function_id等于什么不管。但是我们可以调用customfunction中的f函数&#xff0c;然后我们遍历x,y(1 < x, y &l…...

广度优先搜索算法 - 迷宫找路

广度优先搜索算法1 思考问题1.1 这个迷宫需不需要指定入口和出口&#xff1f;2 先粗略实现2.1 源码2.2 源码解释3 优化代码3.1 优化读取文件部分3.2 增加错误处理4 再优化-让程序变得更加灵活4.1 用户外部可以循环输入入口和出口5 完整代码这是一个提问者的提出的问题&#xff…...

泡脚材料简记

文章目录一般条件中药包&#xff08;药粉&#xff09;泡脚丸中药包&#xff08;药材&#xff09;艾叶生姜益母草藏红花食盐花椒白醋柠檬藿香泡脚私方紫苏叶、白术、白芍、黄芪、青皮、柴胡、夜交藤、丹参、当归&#xff0c;每种各10g艾叶、花椒、肉桂、桂枝、红花干姜30克、小茴…...

【计算机网络】因特网概述

文章目录因特网概述网络、互联网和因特网互联网历史与ISP标准化与RFC因特网的组成三种交换方式电路交换分组交换和报文交换三种交换方式的对比与总结计算机网络的定义和分类计算机网络的定义计算机网络的分类计算机网络的性能指标速率带宽吞吐量时延时延带宽积往返时间利用率丢…...

STC单片机 VS/HX1838红外接收和发送实验

STC单片机 VS/HX1838红外接收和发送实验 📌相关篇《STC单片机获取红外解码从串口输出》🔨所使用的红外接收头VS1838 📋VS1838引脚定义🌿5MM发射头,940nm红外发射二极管 红外遥控发射头。(外观看起来和普通的发光二极管没有什么差异,购买时需要注意确认)。 🔰采用的…...

前端开发常用案例(一)

前端开发常用案例1.实现三角形百度热榜样式分页效果小米商城自动轮播图效果二级下拉菜单效果时间轴效果展示音乐排行榜效果鼠标移入文字加载动画鼠标悬停缩放效果1.实现三角形 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…...

Linux 日志查找常用命令

1.1 cat、zcat cat -n app.log | grep "error"&#xff1a;查询日志中含有某个关键字error的信息&#xff0c;显示行号。 cat -n app.log | grep "error" --color&#xff1a;查询日志中含有某个关键字error的信息&#xff0c;显示行号&#xff0c;带颜色…...

CleanMyMac4.12.5最新版安装下载教程

告别硬盘空间不足&#xff0c;让您的Mac极速如新CleanMyMac是一款强大的 Mac 清理、加速工具和健康卫士&#xff0c;让您的 Mac 加快启动速度。CleanMyMac是一款专业的Mac清理软件&#xff0c;可智能清理mac磁盘垃圾和多余语言安装包&#xff0c;快速释放电脑内存&#xff0c;轻…...

怎样免费建一个网站/怎么建公司网站

储蓄这个词&#xff0c;在中国人来看&#xff0c;已经很是熟悉了。 中国人爱储蓄&#xff0c;全球皆知&#xff01; 我们从开始工作挣钱后&#xff0c;父母就安排我们&#xff1a;“钱不要乱花&#xff0c;能存就先存起来。” 但回头看一下自己的支付宝账单&#xff0c;我们…...

wordpress baidu插件/做企业网站建设的公司

作者&#xff1a;闻币知天下 BitPay是世界上最受欢迎的比特币支付处理公司之一&#xff0c;因难以忍受BCE高额的交易成本&#xff0c;去年年底&#xff0c;BitPay在自己的支付平台和借记卡中添加比特币现金&#xff08;BCH&#xff09;支持&#xff0c;这标志着该平台支持更多加…...

网站建设应用权限/百度搜索推广登录入口

为什么要写这个内容&#xff1f; 随着工作经历的积累&#xff0c;越来越感觉到&#xff0c;大量的关系型数据库的性能问题&#xff0c;其根源在于统计信息。这里说的是根源&#xff0c;其实很多时候大家觉得的那些什么索引失效等都只是表象。当然&#xff0c;不能一概而论&…...

怎么做网站的在线客服/百度seo优化网站

使用dbua升级时&#xff0c;需要手工设置CLUSTER_DATABASE参数么&#xff1f; 来源于&#xff1a; Is Manual Setting Of CLUSTER_DATABASE Parameter Required For DBUA Upgrade? (文档 ID 741081.1) 适用于&#xff1a; Oracle Server - Enterprise Edition - Version: 10.…...

做教育机构的设计哪些网站好/百度开户推广

北京市软件开发项目概算指南©版权所有International Business Machines Corporation2003。保留所有权利。 大多数软件项目失败。 实际上&#xff0c;Standish小组报告说&#xff0c;超过80&#xff05;的项目失败&#xff0c;原因是它们超出预算&#xff0c;延迟&#xf…...

做购物网站平台/深圳知名网络优化公司

存在即是合理的。 表格的现在还是较为常用的一种标签&#xff0c;但不是用来布局&#xff0c;常见处理、显示表格式数据。创建表格在HTML网页中&#xff0c;要想创建表格&#xff0c;就需要使用表格相关的标签。创建表格的基本语法格式如下&#xff1a;单元格内的文字......在上…...