开源世界的尴尬时刻

news2024/12/26 22:00:09

作者按:开源世界里全都是一片祥和、欣欣向荣吗?全都是热情开放、无私奉献吗?那当然不是。本文罗列几起尴尬世界,目的是让大家对开源世界有一个更全面更具体的认识,让大家对底层开源人的生活的心态有一个更切实际的了解。

很显然,开源世界里的人,不都是神仙,他们也需要生存,也需要钱,他们的老婆也要买包(后面你会看到)。他们也会愤怒,也会发脾气,也会骂人。

然而,最让老百姓最受不了的,是有极个别开源人,放着好好的项目撒手不管了,有了Bug也不修,甚至还搞破坏,这简直是太不责任了。

然而,你还没办法追究他,因为开源有一个非常保底的规矩,那就是“不负责任”,你可以看看所有的开源协议,里面都明晃晃写着“不负责任”。毕竟,人家没给你要钱嘛。

本文,是让大家看几起开源世界里的尴尬事件,让大家能更深刻认识一下什么是“just for fun”,高兴就玩,不高兴就不玩了呗。

注:本文撰写受《Working in Public》一书启发,前两个事例是该书提到的。另:此书中译本为《开放式协作》(华东师范大学出版社)。

一、Dominic转手他人放后门

2018年11月,开源项目event-stream爆出一个令人尴尬的大新闻,开源代码里面有偷窃数字货币的后门!

该项目的作者是Dominic Tarr(GitHub用户名@dominictarr)。

但不是他放的后门,是他把项目移交给别人,别人放的。

当时,event-stream每月有几千万的下载量,Vue的官方脚手架vue-cli里面依赖了它,所以影响很大。

最早发现问题的是用户@FallingSnow ,他发现event-stream居然多了一个名为 flatmap-stream的依赖项,他在event-stream仓库中发了一个 issue,标题为:“I don't know what to say.”

f0f1adeea1c1d243cb790e6fa769fa1c.png2018年11约21日@FallingSnow发的帖子

这个依赖项会试图窃取用户的加密钱包信息,包括私钥,并将其发送到copayapi.host的8080端口上。

这个恶意代码是谁写的呢?

是@right9ctrl 。

正是Dominic对此项目不感兴趣后,才把项目的npm发布权(publish right)给了他。

Dominic说:“我起初开发这个库只是因为好玩,并不是为了利他。但开发者将维护的工作全压在我的身上,而我从维护中得不到任何东西,这个库对我来说就不再是兴趣了。并且,一开始我并没有从 @right9ctrl 身上感受到恶意,以为这是一位真心想帮助我的人。”“他给我发了电子邮件,说他想维护这个模块,所以我把它给了他。”

778b49bb68fa6f2844cba17d15b499cc.png“他给我发了电子邮件,说他想维护这个模块,所以我把它给了他。”

Dominic进一步解释:“我曾经在一家餐馆当洗碗工,我犯了一个错误,由于我太能干了,我被提升为厨师。只是获得了一个 50 美分一小时的加薪 ,但却有着更多的责任。我感觉不值得。编写一个受欢迎的模块就像是那样的一百万倍,而加薪是 0 。”

7970180ef6baae25c5ab15ed607f3dc6.jpegDominic Tarr

2b9d6ce239af1b72116b8a494b0adb6c.jpegDominic Tarr

如何看待此事

从好的方面看,至少这个漏洞被人很快发现了!(闭源软件的后门可没这么容易发现。)

从坏的方面看,开源治理任重道远!(这可影响着企业的安全生产。)

讴歌开源的人常说,开源人做开源,凭的都是兴趣和热情,因为他们在雄心勃勃地创建着人类共享的知识和代码。

但是,他们肯定知道,人的兴趣总有一天会转移。

你不能指望一个人对一个小项目能倾注一生的热情。

即便是项目创始人,也总有离开项目的时候。这时,他们能做到最好的情况,就是找一个靠谱的接手人。

但未必找得到。

找不到接手者还能怎么办?《Working in Public》的作者Nadia Eghbal描述了一个很棒的做法:

一位已经创建了数百个流行库的维护者,他使用一个他故意忘记密码的“幽灵”管理员帐户,将他不想要的项目转移到该帐户,他很高兴地说,没有人会因为维护问题而打扰他,因为他也没有这个项目的改动权限了,即使他试图改动。如果有人想修改代码,他们自己fork自己维护吧。

246ad362a1fa4f1254fd548c4618163d.jpegNadia Eghbal

那么,对于这件事,Dominic有没有责任? 

  • 有人说,完全没有责任,这个项目的许可证是MIT协议。

  • 有人则说,人总应该为自己的项目负责,要保证项目的良好运转。

可能我们在商业世界里生活已经太久了,总觉得任何事情都要有人负责。

偏偏在开源世界里,天生就是无需负责,你以为开源许可证仅仅是给你授权吗,它们更多是给作者免责。

所以,Dominic完全没有责任,这官司就是打到天王老子那里,也没有责任。

那么谁该负责?

我的答案是:谁用谁负责。

比如,开发商如果用它,开发商负责;项目组如果用它,项目组负责;npm如果提供它,npm负责。

毕竟npm是一个商业公司嘛。

npm于2020年3月被Github收购,Github于2018年6月被 Microsoft 收购。

二、Azer匹夫之怒撼全网

2016年3月22日,Azer Koçulu一怒之下,把自己的273个js模块,在npm上全给删了(用unpublish命令)。

原因是Azer对npm的做法非常生气,他本来有一个叫kik的项目,有一天,他收到了来自Kik公司专利代理人的电子邮件,要求Azer不能再用kik这个名字了,因为Kik公司自己要在npm上发布一个叫kik的项目。Azer当然不同意,毫不客气地拒绝了Kik的请求。但Kik公司又向npm团队提出申请,声称Azer滥用了公司的商标并会导致潜在的混乱。npm CEO Isaac Schlueter最终站在Kik公司一边,他们决定从Azer手中夺走kik,将这个库的权限给Kik公司。

Azer大怒,愤而删库,并写了一篇博客,题为“我刚刚解放了我的模块”(I’ve Just Liberated My Modules),他说“我才意识到,npm是某人的私人土地,在那里企业比人民更强大,而我开源是为了人民的力量(Power To The People)。 

这273个被删掉的模块中,别的似乎不要紧,要紧的是一个叫left-pad的模块,这库功能很简单,就是用于右对齐文本,但有好几个大型 npm 软件包使用了它 ——包括 Babel,一个 JavaScript 转译器,每周下载 1100 万次——这就导致突然之间,世界各地成千上万的开发人员开始出错。

媒体把这个突发情况描述为“破坏互联网”(“break the internet”)时刻。

2ec06c182bee6cf16dc208a483bf86e5.png人们看到大概这样的报错

这时,一个名为 Cameron Westland 的开发者冲了出来,并在 10 分钟内发布了功能完全相同的left-pad。因为npm当时允许任何人使用被遗弃的软件包名称,只要他们不使用相同的版本号就行,所以,kik的新的所有人是Westland。

Westland 发布的left-pad版本为 1.0.0,这解决了一部分人的问题,但是很多软件明确要求使用left-pad的0.0.3版,所以,和Westland商量后,npm“迈出了前所未有的一步”,使用备份恢复了Azer已经删除的0.0.3版。从“破坏互联网”到恢复正常运行,只用了两个半小时。

3c81fa8a6dd61d66d22fafeadd8aa31a.pngnpm“迈出了前所未有的一步”

Westland十分钟就能修复,是因为left-pad很简单,它只有 11 行长。

16848fed8045749ad2912c54c2a15dd6.jpegleft-pad就上面这11行

Azer有没有责任?

如前所述,kik是开源的,Azer没有任何责任。npm允许作者unpublish,那当然就可以unpublish咯。

Azer会愧疚吗?当然不会,用kik的人,有给过Azer一分钱吗?

Azer对npm有责任吗?当然没有,Azer给npm提供了273个模块,而npm也没有给过Azer一分钱啊。

npm夺走了Azer的kiki,Azer正一肚子气没处撒呢,“夺我的kik,让你看看我的厉害!”

npm对Azer有责任吗?当然也没有,npm可是一个公司,相关协议早都安排得明明白白的。

npm对用户有没有责任?

也没有什么责任,只不过npm自己的名誉受损。

但是他活该,谁让他管理不善呢?

npm拜此教训所赐,宣布今后将严格限制unpublish命令。并且,严格限制自由认领已经废弃的模块。

fc6911a45f98979e02d53c5c75783aa3.png2016年3月23日,npm在官网宣布1整改举措

这才对嘛,搞管理是放羊吗?

哪能让人说删库就删库呢。

尤其对于开源项目,必须要有“强有力的管理”。(这句话是反话吗?)

7d2476e826ad76b57a20797e4e2ce1a6.jpegAzer Koçulu

246a5a878dbd77f419d1802c4cdda6b3.jpegAzer Koçulu

用户有没有责任?

有人借此事发表了一篇文章,流传很广,叫做“我们是不是早已忘记该如何好好地编程?”2

大意就是,现在的程序员,这点东西都不写吗,还要依赖一个库。

我看大概他还很年轻,还不知道“重复发明轮子”的真义。

Left-pad虽然小了点,但谁说小轮子不是轮子呢?

虽然,小轮子可能突然会消失。

三、Marak 大发脾气改乱码

npm不让删库,不代表程序员就没法发脾气。

2022年1月上旬,faker.js和colors.js模块,运行时输出乱码,原因是作者Marak Squires生气了。

faker.js 是一个生成测试用数据的软件,包括随机的姓名、地址,公司,日期,财务,图像,数字等。

colors.js是一个进行颜色计算的软件,可实现控制台上带颜色文本的输出。

Marak早就生过一次气,2020年11月,他在Github上发言:“不好意思,我不会再免费支持使用我代码的财富500强(以及其他小型公司)了,没有更多可说的,你们要么给我一份年薪六位数的劳动合同,要么找其他人在分支上干吧!”

f3024e9d016d02dff95108a58065045a.jpegMarak早就说过不想干了

e8190db9e9a378f9ddddd5599d2ee41e.pngMarak Squires

问题似乎始于 2020 年 9 月 Marak Squires 遭遇的一场火灾。当时,Marak Squires 租借的房子突发大火,所有财产几乎被全部烧毁,无奈之下 Marak Squires 在推特上发布求助:

“我在一场公寓火灾中失去了所有东西,几乎无家可归,也无法访问我的大部分帐户,所有的贵金属都不见了。如果有人能给 paypal@marak.com 一点钱,那将帮助我免于在街上冻僵,哈哈。”

估计他并没有收到多少钱,他才发了那篇帖子。

又过了2个月,Marak还是气不过,终于在2022年1月5日,让自己的代码在运行时输出乱码。

这使得大量程序员在控制台上看到这一幕:

039535dd7e89f5ee5f4accfa1938ad63.jpeg程序员们看到的乱码

想必Marak当时会很解气。

不过,npm现在成熟了,直接将他的项目回滚至先前版本。

如果前面没有Azer,npm估计又要头疼一阵了。

Marak遭受到什么样的谴责呢?

9fe1475b38331323a21471652c54a3f0.jpeg网友对Marak的评价

有网友评价说:“真够孩子气的!”,我觉得还算贴切。

算一种鱼死网破吧,Marak后来也不在开源圈玩了。

对此事的解读

看我写的《开源程序员绝望毁库跑路的背后》就会知道,Marak原本是想通过开源赚钱的,但这谈何容易?

《Working in Public》里有一段话说的好:(我觉得是这本书里最好的一句话

“生产者不断地进行一场艰苦的战斗,以威胁、闭锁、乞求、指责和羞辱消费者,迫使他们付费。”

开源个人开发者如何进行这场战斗呢?

威胁、闭锁肯定是不行的,乞求、指责、羞辱也许有用。

下面这个案例可以说明一切。

四、Denis情人节绝望哭诉

2023年2月14日,数百万网站使用的 core-js 库的维护者 Denis Pushkarev 表示,他准备放弃开源开发,因为很少有人为他们所依赖的软件付费。

core-js是最受欢迎的polyfill(帮助开发者在不支持js新特性的浏览器上使用js新特性), 月均npm下载量为2.5亿次,总下载量高达90亿次,在GitHub上,有1900万个仓库依赖。

a52f345d6b16ab16998f7298d4425322.jpegDenis Pushkarev

Denis以前有全职工作,后来(大约是2018年前后),为了全身心开发core-js,他辞了职,并且回到故乡俄罗斯,原因是:“在那里可以用相对较少的钱获得体面的生活水准。”但后来他发现,“钱其实很重要。”

什么事让他开始重视钱了呢,2020 年末,他因骑摩托车与两名行人相撞,并导致其中一人死亡。

他说,如果他当时有8万美元,他就不用入狱了

一个四月的晚上,凌晨3点,我开车回家。两个穿着深色衣服的醉酒的18岁女孩决定以的方式穿过一条光线很差的高速公路——其中一个躺在路上,另一个坐着并拽着第一个,她们并不在人行道上——而是直接在我的车轮下。目击者就是这么说的。我绝对没有机会看到他们。还有一名目击者说,在事故发生之前,她们只是在路上开玩笑地打闹。这并没什么不寻常,这是俄罗斯。其中一个女孩死了,另一个女孩进了医院。然而,即使在这种情况下,根据俄罗斯的仲裁惯例,如果司机不是议员或类似什么人的儿子,他几乎总是被判有罪——他必须要看到并预测一切,行人不负任何责任。我可能会在监狱里呆很长时间,如果我没有记错,检察官要求判我7年。

不入狱的唯一方法是与“受害者”和解——这是此类事故后的标准做法——并且还要有一名好律师。在事故发生后的几周内,我收到了“受害者”亲属当时以汇率计算的总额约为8万美元的资金索赔。律师也需要一大笔钱。

对于一个好的软件工程师来说,也许这不是一笔不可思议的钱,但是,正如我上面所写的,我长期全职在core-js@3版本上工作。没有人为这项工作付钱给我,我之前就已经花尽了所有的财务储备,所以,我没有那么多钱,也没有办法找到所需的钱。我的时间不多了。

当时,面临窘境的Denis曾试着向core-js用户求助,不过他可能用错了方法。

他在core-js安装后输出了文本,请求捐款和帮找工作。

这下可好,Denis每天都会收到数百条的谩骂,让他和core-js滚蛋。

304718d67bf44c930363a31de0f380a9.jpeg这就是在core-js安装后显示的捐款求助

ba5be33b7b01e7a884102f0cadd00e2a.jpeg程序员怒骂:“让这个白痴zloirock和他的core-js库去死吧”

一开始我是很不理解为什么程序员们会如此反感,后来我想明白了,如果我是一名程序员,我正开心或烦恼地处理着工作或代码上的逻辑,突然冒出来一条消息让我捐款,还让我帮他找工作,这简直就像正看电影时蹦出来广告,确实有点招人烦。

Denis后来也认识到这点,他说:“开发人员喜欢使用免费的开源软件,他们对背后的真人不感兴趣。他们认为任何提及钱的东西都是对他们的冒犯。对他们来说,不应该有这些噪音参与。”

Denis当时是收到了一点钱,但离8万美元还差很多,没有办法,他还是入狱了,判刑18个月(实际关了10个月),另处以罚金138万卢布。

2020年1月,我进了监狱。里面的事我不想说太多,我也不想记住那些。那是在一家化工厂的奴隶般劳动,在那里,我的健康严重受损,我24/7和毒贩、小偷和杀手们在一起,共渡了难忘的时光,而且,还无法访问互联网和计算机。

出狱后,他又像以前一样回到了core-js维护。

“我不考虑事故遗留下来的数万美元的诉讼,我也不考虑我的未来,我只是想让Web有更美好的未来。当然,我希望一些公司能给我提供一个职位,让我有机会从事Web标准工作,并赞助我在polyfill和FOSS方面的工作。”

但是他的收入在持续下降,刚开始全职从事开源的时候,他每月能收到2500美元(比他以前公司上班的收入少4~5倍),很快,每月收入下降到约1700美元(通过Tidelift网站是1000美元,通过OpenCollective网站是600美元,还有点别的),俄乌战争后,Tidelift不给他用了,他每月收入锐减1000美元,OpenCollective上的每月订阅捐赠也降到了300美元,他每月只能收到400美元。

今年2月14日,他实在受不了了,发布了长文“So,What's next”,里面说到:

我他妈的累了(I'm damn tired.)我喜欢开发开源和core-js。但我这样做是为了谁或什么?自2014年以来,我一直在确保零兼容性问题,并为大多数网络提供前沿功能。我所看到的不是任何感激之情,而是来自开发人员的巨大仇恨。在core-js使用上节省并赚取数百万美元的公司只是忽略了core-js的资金请求。即使在危急的情况下,他们中的大多数人也宁愿忽视或憎恨。我根本没有看到任何人试图为core-js添加一些重要的东西,或者至少定期做出贡献。

我有一个妻子,有时她想要一双新鞋,或一个包,或一个新的iPhone,或一个Apple Watch。我的父母已经到了需要我有力支持他们的年龄。很明显,我不可能用我从core-js维护中获得的钱来正常地支持一个家庭,我的财政状况走到头了。

不管怎样,钱很重要。我已经受够了以牺牲我和家人的福祉为代价来赞助公司。我应该有能力确保我的家人、我的儿子有一个光明的未来。

8bb63f89a2ef38e9f800f9d0d697d7a1.jpegDenis和儿子在一起

文中,Denis给出最后通牒,如果后续能收到足够的捐款,那么他将继续干下去,如果资金不足,他将会把core-js变成一个商业项目,要么就是放任这个项目缓慢的死去。

他在文首和文末给出了几种捐款渠道:OpenCollective、Patreon、Boosty、Bitcoin、支付宝。

让我们看看Denis哭诉效果如何?

先看看OpenCollective上的成果。

5d6f93912bbd0c6bf2374fb24705c20a.pnghttps://opencollective.com/core-js

到2023年5月1日,有312人每月给core-js捐赠5美元,有6人每月捐赠200美元,还有1225人是其他金额的一次性捐赠或每月捐赠。

这么算下来,至少每月有2760美元,事实上,我估计每月有4000美元之多。(还有一些每月10美元、20美元、50美元、100美元的捐助没有明确显示出来。)

再看看Patreon上的成果。

a45d55e158c04b5c1cb995b973eae40e.pnghttps://www.patreon.com/zloirock

Patreon上每月有2786美元的收入。

Boosty.to看样子是一个俄罗斯的捐赠类网站,但做得奇差,能看到有35个订阅捐赠者,但不知道他们给Denis捐了多少钱。

Denis还给出了支付宝收款二维码,他大概知道中国的js程序员很多。

511463234858f402aaf83ba217b18956.png扫描支付宝二维码后可以捐款

扫出来的支付宝用户是katya_kirichuk,不知道是谁,也许是Denis的妻子?

最后,我们看看Denis收到多少BTC。

在他发文的当天和第二天,他就收到的3个。

be7624c23882d89b4b64f1346a915884.png2023年5月1日的余额情况

现在,我一点都不用为他担心了。

他的心情也应该好了很多。

希望core-js能够继续发挥作用。

五、从尴尬事件看开源心态

玩开源,心态很重要,不管是做开源的人,还是用开源的人。

开源开发者大致四种心态

  • 我就是玩玩,开心就好。

  • 我想弄出点名声来,至少便于我求职。

  • 我想造福人类,我是心怀“国之大者”。

  • 我想通过开源创业,我想赚钱。

对于前两者,希望你们尽情享受;对于第3种,希望你没有收入的困扰;对于第4种,希望你放松心态。

个人使用开源的心态

  • 太棒了,有人做了这个,省我多少事。

  • 最好这个项目能不断改进,最好能有人一直维护。

  • 感谢那些做开源的人,如果他们遇到难处,也许我会捐款。

企业使用开源的动机

  • 初创企业:我们把开源的东西完善一下,卖它,用低价打开市场。

  • IT企业:我们用开源的东西搭建我们的系统,降低成本。

  • 承包商:我们在给甲方开发的系统中,可以大量使用开源组件,降低成本,降低投标价。

企业对待开源的心态

  • 我们要合规,研究好许可证,别让人给告了。

  • 对于最重要的东西,我们要买企业版的,买订阅,这是值得的。

  • 我们要防范失控,防范开源个人开发者删库、跑路带来的影响。

  • 什么,给我们要钱?哈哈,不给。

  • 在我们心情好的时候,我们可以捐助一点,我们可是有良心的企业。

对于前三种,很正常,理性的企业都会这么做。

第四种情况:不给钱,非常普遍。Denis描绘过这个场景:

公司:“我们想使用SQL Server 企业版”

MS:“这需要25万美元+2万美元/月”

公司:“好的!”

...

公司:“我们想使用core-js”

core-js:“简单,执行npm i core-js 就可以了"

公司:“酷!”

core-js:“你想在经济上做出贡献吗?”

公司:“哈哈,不”

不得不说,第五种情况:企业捐助开源,很罕见。

锤子干过这事,让人怀念到如今。

63c084f2fb1e1b51d8ed001982572583.png2016年12月,锤子捐款21万美元给OpenSSL基金会

六、后记

说了这么多尴尬事件,其实也没尴尬到哪里去,我们已经看到,一旦有了问题,很快都会修复。

真正让人尴尬的是,开源这么多年,仍然没有发明出来让开源人不再愤怒和悲伤的方法。

我们的世界,仍然没有完美做到:“为众人抱薪者,不可使其冻毙于风雪。”

文|卫剑钒

参考链接:


  1. https://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm 

  2. https://www.davidhaney.io/npm-left-pad-have-we-forgotten-how-to-program/ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/490807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)

文章目录 1.rgb、depth相机标定矫正1.1.标定rgb相机1.2.标定depth相机1.3.rgb、depth相机一起标定(效果重复了,但是推荐使用)1.4.取得标定结果1.4.1.得到的标定结果的意义 1.5.IR、RGB相机分别应用标定结果1.5.1.openCV应用标定结果1.5.2.ros…

mac m1安装V2rayU

我原先window上使用的是V2rayN。mac系统使用的是V2rayU。 1.首先下载V2rayU 下载地址:https://github.com/yanue/V2rayU/releases 2.将下载的文件拉到application 安装后,点击运行,此时会弹出安全警告,需要在「系统偏好设置-安…

第4章-动态规划

第4章-动态规划 总分:100分 得分:100.0分 10.0 分 1 . 多选题 中等 10分 有关0-1背包问题,用c[i][j]描述子问题:1...i共i个物品,背包容量为j的最优值(装入背包的最大价值),则其子问题为:1...i-1共i-1个物品,背包容量为j-w ix i,以下说法正确的是( AB…

TypeScript教程(N)

弱类型和强类型 编程语言,按照数据类型是否固定可分为 强类型语言 和 弱类型语言。 弱类型语言 弱类型语言:变量、函数参数和函数的返回值,是没有类型的,一个变量可以接收任何类型的数据,一个函数也可以返回任何类型…

大学生所面临的网络安全问题有哪些?

网络安全从本质上来讲就是网络上的信息安全,就是指网络系统中流动和保存的数据,不受到偶然的或者恶意的破坏、泄露、更改,系统连续正常的工作,网络服务不中断。从广义上来说,凡是涉及网络信息的保密性、完整性、可用性…

登顶Nature 正刊!百度生物计算用AI首次实现mRNA领域重大进展

1985年11月21日的《自然》封面,是一张来自中国的“地图”。这张地图是清代总兵陈伦炯所编撰《海国闻见录》中的插图,是中国人开始认知与探索世界的见证,而选用这张封面,是为了配合当期的特别文章《科技在中国》。 那时候&#xff…

4 ROS2节点参数基础

4 ROS2节点参数基础 4.1 ROS2节点参数介绍4.2 使用C/C实现对节点参数的增删改查4.2.1 创建C/C节点参数的服务端4.2.2 创建C/C节点参数客户端 4.3 使用Python实现对节点参数的增删改查4.3.1 创建Python节点参数的服务端4.3.2 创建Python节点参数客户端 4.4 ROS2节点参数小结 其他…

2008-2020年上市公司能源消耗数据

2008-2020年上市公司能耗数据/上市公司能源消耗数据 1、时间:2008-2020年 2、指标包括:上市公司ID、证券代码、证券简称、资源名称、消耗量、单位 EndDate [统计截止日期] - YYYY-12-31 InstitutionID [上市公司ID] - null Symbol [证券代码] - 交易所…

[架构之路-187]-《软考-系统分析师》-5-数据库系统 - 操作型数据库OLTP与分析型数据库OLAP比较

OLAP与OLTP的区别? OLTP(Online transaction processing) 在线/联机事务处理。典型的OLTP类操作都比较简单,主要是对数据库中的数据进行增删改查,操作主体一般是产品的用户。 OLAP(Online analytical processing): 指联机分析处理。通过分…

Linux网络编程:三次握手 四次挥手

1. 三次握手 建立TCP可靠连接,只能是客户端先发起。 (1)SYN标志位为1,表示请求建立连接;ACK标志位为1,表示确认收到对方报文。 (2)seq为数据包序列号,ack为确认序列号。…

计算机视觉的应用4-目标检测任务:利用Faster R-cnn+Resnet50+FPN模型对目标进行预测

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用4-目标检测任务,利用Faster RcnnResnet50FPN模型对目标进行预测,目标检测是计算机视觉三大任务中应用较为广泛的,Faster R-CNN 是一个著名的目标检测网络&#x…

or-tools 应用案例分析:复杂作业车间调度问题

作业调度问题是常见的线性规划(整数规划)问题,其中多个作业在多台机器上处理。每个作业由一系列任务组成,这些任务必须按给定的顺序执行,并且每个任务都必须在特定的机器上处理。如何有效的利用所有的机器在最短的时间内完成所有的作业任务&a…

神经形态处理和自搜索存储如何降低联邦机构的网络风险

组织在边缘处理的信息量呈爆炸式增长。对于联邦机构和军队来说尤其如此,它们从设备、建筑物、船舶、飞机等中的移动设备和传感器生成大量数据。 寻找有效的方法来管理、使用和保护这些数据具有挑战性。但是有一个有效且具有成本效益的解决方案。神经形态处理和自搜…

c#笔记-数组

数组 声明数组 数组是一种可以声明多个同类型变量的数据结构,能替你声明多个变量。 并且其中的值可以通过索引动态访问,可以搭配循环批量处理这些值。 数组类型的写法是,在目标类型后加上一对中括号。 数组值没有字面量,需要构…

海天注塑机KEBA系统数据采集

本文章只针对海天注塑机的KEBA系统,因为其他注塑机厂家也用KEBA系统,他们的采集方式可能不太一样,所以后续有时间我将写其他文章来解释(默认你已经向海天采购了OPC组件)。 一、采集原理 采集软件(OPC cli…

electron+vue3全家桶+vite项目搭建【18】electron新建窗口时传递参数【url版】

文章目录 引入实现效果展示实现思路实现步骤1.调整主进程新建窗口的handle2.调整新建窗口函数3.封装url获取请求参数的工具 测试代码 引入 electronvue的项目中,我们通过传入页面路由来展开新的页面,就像vue-router的路由传参一样,我们可以利…

排序算法 — 桶排序

文章目录 桶排序介绍桶排序实现桶排序复杂度和稳定性桶排序复杂度桶排序稳定性 代码实现核心&总结 桶排序介绍 假设待排序的数组a中共有N个整数,并且已知数组a中数据的范围[0, MAX)。在桶排序时,创建容量为MAX的桶数组r,并将桶数组元素都…

【AUTOSAR】【通信安全】E2E

目录 一、概述 二、约束和假设 三、依赖模块 四、功能描述 4.1 开发错误 4.1.1 运行时错误 五、API接口 5.1 E2E Profile 接口 5.2 E2E其他接口 一、概述 该文档制定了PRS E2E协议的平台特定实现要求。这包括所使用的接口和数据类型。 E2E保护的概念假设在运行时应对…

探讨Redis缓存问题及解决方案:缓存穿透、缓存击穿、缓存雪崩与缓存预热(如何解决Redis缓存中的常见问题并提高应用性能)

Redis是一种非常流行的开源缓存系统,用于缓存数据以提高应用程序性能。但是,如果我们不注意一些缓存问题,Redis也可能会导致一些性能问题。在本文中,我们将探讨Redis中的一些常见缓存问题,并提供解决方案。 一、缓存穿…

云计算中的边缘计算技术及其应用

章节一:云计算和边缘计算的简介 随着互联网的发展,数据中心的规模不断扩大,云计算也成为了越来越受欢迎的计算模式。但是,云计算存在着一些问题,比如延迟较高,网络瓶颈,数据隐私和安全性等等。…