夜天之书 #84 国产开源社群的运营,为何总是画风奇特?

news2024/12/24 20:45:11

在过去几年的投入和关注下,国产开源社群如雨后春笋一般冒了出来。今天,以 GPT 为首的 AI 新势力接过话题度的接力棒,我们可以在降温周期里回顾一下过去几年间冒出来的国产开源社群都有什么样的成绩,有些什么样共性的问题可以改进。

本文标题是国产开源社群的运营总是画风奇特,这也符合近几年来作为理论上开源社群的主要参与者,即软件开发者们的主流感受。从眼花缭乱的开源营销,到一次性开源、开关式开源的另类创新,再到同质化开源的内卷、打擂台……凡此种种,不仅和开发者熟悉的黑客精神驱动的开源运动有很大的出入,也很难说实现了开源政策想要的达到数字技术创新目标。

支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务。

《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》

从开源社群的建设和运营角度来看,我想造成这个局面的主要原因分成三个方面:运营人员的问题、核心团队开发人员的问题,以及根本的软件产品力问题。

运营人员的问题

运营人员的问题主要来自用面向消费者 (2C, to customer) 的小白营销思维做面向开发者 (2D, to developer) 的开源社群运营。

应当说,运营的对象从 2C 到 2D 都是面对个人,都可以认为是某种形式的用户运营:消费者是平台或终端产品的用户,而开源开发者主要是开源软件的用户。在高层次的用户运营策略上,这两者都需要围绕用户群体梳理画像、理解需求,利用资源给到用户及时反馈,使得用户投入更多时间在你的社群当中,创造你期待的价值。

不过,驱动 2C 运营的消费者产品通常具有较短的销售周期和较低的门槛,这就导致 2C 运营的最优策略是小白营销,也就是把用户当成小白,只在地域、年龄、性别和职业等属性上作区分,用快速反馈的活动来刺激用户的即时欲望,赚取平台所需的流量或者产品的出售,即冲动消费。

一个典型的例子是大街上送小礼物换关注的地推营销。例如,住宅区内新建了一家配送超市,通过雇佣一批没有任何背景要求的地推员,在人流量大的地方发传单,关注超市公众号或者下载 APP 就能领取几元的代金券或小礼物。目标人群基本也不用太作区分,能走到大街上的人都是超市的潜在用户。

这个画风是不是有点熟悉?

在开源运营概念炙手可热的时候,不少企业为自己发起的开源社群招聘的运营人员就是用同样的方式在做用户运营的。

f662cc3fde8a86fe153f0f2d03c59e63.png

OceanBase 点赞送好礼

f522a8012290d0e849b11cc987d15ebf.png

TDengine 的灭虫计划

这两个例子都引起开发者的强烈反感。

  • 如何评价阿里 OceanBase GitHub 点赞送礼?[1]

  • 开发者体验反模式:市场主导运营[2]

  • 开源运营当论迹不论心[3]

开发者不乐意见到这类活动,不是因为不能送小礼物,更不是因为运营有“原罪”,而是这些利用企业资源抢占开发者注意力的活动违反了软件开发的常识。

对于 OceanBase 点“赞”送礼的案例,star 在 GitHub 平台上被某些开发者作为选择开源软件库的辅助指标,是因为自然增长的 star 基本来自用户的主动好评和二次传播。star 并不是开发者采用一个软件的关键指标,软件已经被自己或其他人验证过了,有可复制的使用方案才是决定性的优势。star 暗示用户主动好评,是软件已被验证过的一个弱相关的参考。OceanBase 搞点“赞”送礼活动,其实也不会有大范围的影响,只是破坏了自己 star 数原本有的一点价值。

至于把任何形式的 star 增长解释为社群规模的成长,则是无稽之谈。star 背后的行为只是一个简单的点击动作,没有任何门槛。一个接过超市传单的人,不用任何培训都能成为超市的消费者。但是一个凑热闹去给代码仓库点“赞”的人,是没有任何理由做进一步地参与的。其实,由于众所周知的原因和软件开发本来的小众特点,哪怕就看增长 star 的目标,这样的推广活动甚至不会给 OceanBase 带来 1k 以上的新增 star 数。而且,以 OceanBase 的大厂背景、技术实力和生产实践,基本不需要也不太可能用刻意增长 star 的方式达成提高 awareness 的目标。

对于 TDengine 搞灭虫计划,这个问题还微妙一些。因为它看起来是跟写代码相关的,似乎也是给开源软件的发展创造了价值,这样的活动难难道不值得推广吗?当时的 OceanBase 的运营人员就觉得可以推广,也搞了一波复刻:

a66715343f4bee84d3260f31f50c5ada.png

OceanBase 的同质活动

这些活动的问题,@Xuanwo 在《开源运营当论迹不论心》的评论代表了开源开发者的主要观点:

我们要看这个活动创造出了什么价值,而不是活动组织者的动机。

灭虫活动有价值吗?有,但是只有一点点,跟维护者需要花时间去找 typo 的代价相比,这个活动的价值可能是负的。

GSoC 等活动的项目都是实际的需求,项目都需要配备一名导师,贡献者可以获得来自导师的全程指导。通过参加 GSoC 项目,开源项目可以解决一些长期的需求,贡献者可以深入了解一个开源社区并做出自己的贡献。

我在参与 TiDB 社群的时候,曾经也发起过一个类似的低门槛工作 Tracking issue for restructure tests[4] 来迁移现有测试到一个 IDE 集成友好的框架上。在我完成了一些关键的工具函数和接口开发之后,大部分的工作都是比较机械的翻译。

这个 issue 跟上面活动的不同点在于它来自实际的需求,开发方式符合软件工程的常识。我在第一次发现不能在 GoLand 上跑起来的时候就觉得应该优化测试框架的选型。在 @disksing 成功将 PD 的测试框架从 PingCAP fork 的 check 迁移到 testify 之后,同时也是在 TiDB 社群里我看到了两三个有同样想法的新人表达出对 IDE 集成不足的意见之后,我开始推动这项工作。

这个 issue 里 track 多个 subtask 的经验后来被传播到很多其他项目上,也在引导参与者对 TiDB 代码祛魅的过程中激发了其他的代码贡献。不过,由于 TiDB 核心代码的开发门槛依旧不低,最终我记得是没有通过这个 issue 成为 TiDB 核心开发者的例子。

TiDB 也做过 linter 相关的工作,但是开展方式是利用自动化工具,一个一个模块扫过去,而不是像 TDengine 或 OceanBase 那样,人工看到一个记一个 issue 等“外部”开发者来修,生怕解得太高效了影响数字增长。

  • Make some linters really happy[5]

  • Make linter facter by enabling bazel nogo to implement fast incremental linter[6]

对于 typo 的问题,Rust 社群有一个 typos[7] 工具可以自动扫描、报告和修复。它在 Databend 的项目群里已被重度采用,基本可以根绝 typo 的问题。

另外,上面提到的这些工作跟前面列举的反面例子还有一个差别,就是开发者是能够认识到这些工作是 chore 即杂务的。除了在 issue 组织方式和工具框架选型开发上还有讨论的价值,开发者很少会对具体的杂务工作做营销,而反面例子当中,营销的对象就是杂务本身。难怪开发者对这样优先级倒转的营销手段很不感冒。

行文所限,还有其他存在的问题和针对这些问题的解法,本文不做展开,但是在这里做一个简单的罗列。

面向开发者的运营,在海外的行业实践相对丰富,他们创造了诸如开发者关系(Developer Relationship, DevRel)、开发者体验(Developer Experience, DX)和社群布道师(Community Evangelist)这样的概念和职位。

这方面值得参考的文字和富文本材料有:

  • 《社群运营的艺术》[8]

  • 《People Powered》[9]

  • 上面两本书的作者 Jono Bacon 的 YouTube 频道[10]

  • 《开发者关系:方法与实践》[11]

  • Developer Experience at Vercel[12]

其中,《开发者关系》是最符合运营人员背景的首选读物,它会讨论开发者用户群体的画像、细分和旅程,也会讨论如何在企业中制定和成功落实开发者关系战略。

不同于国内开源运营的招聘需求一锅端,分工完善的开源社群团队大致由以下几类角色组成:

  1. 社群团队的 manager 制定社群战略和增长目标。

  2. 运营专家策划和组织活动或比赛,负责场地和物料协调。

  3. 内容专家在社群策略的基础上制定内容策略并执行。

  4. DevRel 专家负责技术宣讲,并记录演进的参与和反馈情况,跟进高潜力的开发者,挖掘意见领袖。

除此以外,如果还能找到相应的人才,会考虑做课程开发和跟进用户场景,转化潜在商机的工作。

其中值得一提的是内容专家制定内容策略,生产和传播具体技术内容是一项非常有挑战性的工作。可以参考 StreamNative 文档工程师 Sherlock 的《英文技术文档工程师的培养与发展》 网站的设计和实现。

最后,国内开源社群运营的经验,有以下的参考材料:

  • 从技术总监到开源社区运营:过去两年,我都做了点啥?

  • 开源社区运营经验分享

  • 《“从三到万”,2B 用户快速增长之道》

值得注意的是,在销售软件产品或提供技术服务的企业当中做开源社群运营的从业者,很容易模糊 2B (to business) 和 2D 的区别。这些文章里讨论如何跟用户开发者打交道,如何生产高质量的内容的部分是值得参考的,对于 2B 和 2D 的认识问题,建议加上《开发者关系》第 8 章做对比理解。

开发人员的问题

通常所说的开源社群是围绕一个特定的开源软件形成的社群。软件不是一成不变的,而是响应需求不断迭代的。主导和完成这个迭代过程的成员是开发者。因此,开发者是开源社群的主要参与人群,也是核心生产力。

企业发起的国产开源社群,开发人员导致的运营变形的问题,起因几乎都是缺乏开源战略和理论指导下被迫突然开源的应激反应。

很多企业决定开源某个内部系统,实际上只是一个跟风行为,没有开源战略,也没有开源经验:开放源代码本身就是目的。

这个时候,作为工作在这个系统上的一线研发人员或是基层研发主管,突然被告知自己每天打交道、提交变更的代码仓库要开源了,下意识的自我保护策略就是 Open Source Code Only - 开放源代码就是源代码用开源协议公开发布?点击发布……好,完事啦!至于研发计划和开发流程,这跟开放源代码有什么关系?我不是已经开源好了吗,这些照旧就可以了。

于是,企业开源出来的是一个内部系统的代码仓库镜像。这其实也无可厚非,毕竟源代码只要是完整的,开放给所有人阅读就是一种社会贡献,没有说法是必须让企业完全公开软件研发的流程和设计讨论内容。

但是,企业对外宣传甚至决策者心里实际预期的效果,并不是单纯地开放源代码,他们要的是“共建”。虽然我在《共建的神话》里已经批评过这一说法的模糊性和异想天开,但是我们暂且从字面意思,以开源社群常见的协同方式来理解实现“共建”的要求。

马上,你会发现共享工作流是必须的。如果没有统一的开发流程,至少是主线流程,那么即使是资深的开发者,缺少必要的信息和充分的讨论,也无法更进一步参与。我在《企业如何实践开源协同》开篇就提过这个观点,并以 OceanBase、Apache InLong、TiDB 和 Taichi 四个项目为案例做了详细讨论。

开源社群能够为企业带来的最大杠杆,来自有一定开发能力和使用经验的开发者,基于能够访问源码的前提,将软件在具体场景下遇到的未实现需求、兼容性问题和易用性问题做就地定制,而后将这些定制反馈到上游,以求自己能够在使用上游软件新版本的时候不再需要重复二次开发。如果是自己无法就地定制解决的问题,由于能够访问源码,开发者可以做一些基础调试,报告一个更清楚的问题。基于相同的源码和统一的开发工作流,不同组织的开发者能够在相同的上下文当中交流,共同推进问题的解决。

企业发起的开源社群,初始的开发者必然是企业的雇员。如果企业的雇员没能率先实践这种开放工作流的做法,那么企业之外的开发者就更不可能推动社群往这个方向发展。最终,社群仍然是一个只有镜像代码的死气沉沉的平台,没有任何生机。

衡量一个开源社群的上游有没有开放工作流,一个最基本的指标就是观察它是否有良好的开发环境配置体验[13]。因为所有基于源码的开源协同,至少开发者要能够搭建起一个自己的开发环境,能够跑通基本用例和运行单元测试。否则,任何改动都是文本编辑,脑内调试,这倒不是做不到,只是门槛非常高。而且是无谓的门槛,即使有这个能力的人,也能看出来工作流的不合理,不愿意浪费这个时间去做本不用做的努力。

最后,我们深挖一下这种开发人员自我保护式的 Open Source Code Only 策略,为什么在个人发起的开源项目社群里很少出现。

直接的原因是个人开发者往往没有自己另建一套工作流的动力和精力,这些项目往往一开始就是在公共空间用通用的工具链搭建起来的。本来就没有内外两套工作流,自然是“全过程开源”。

深层次的原因,探究个人开发者为什么更加容易接受开源协同的开发方式,这是因为项目作者往往是实打实的通过开发出高质量的软件和极强的 ownership 招徕参与者的。对于能够帮助自己的开发者,项目作者通常心怀感激。对于其他开发者提交的问题和补丁,由于软件的核心功能设计和实现是自己完成的,通常项目作者能做出准确的判断,而且有足够的 credit 做决定,因此在协同过程中不会感到受制于人。

反观企业开源的情况。能够被企业选择开源出来的软件,多少还是有点实力的。在目前的研发序列晋升体系下,这些软件的第一作者基本已经高升,否则就是依靠这一成就高薪跳槽:他们是不会参与到软件的开源社群当中的。实际会被指派处理开源社群工作的员工,往往没有足够的 credit 做决策,至少在大部分研发团队完全不管开源社群的情况下,他们很难讲清楚一个开源协同的要求为什么需要其他“内部”开发者也知悉和配合改变工作方式。

因此,这些被指派的员工不管从动力上还是权力上,都只能处理最简单的事务。这就导致高水平的“外部”参与者体验到低效的协同流程,基本无法完成任何工作而离开;而“内部”开发者对不时出现的“外部”需求,又不是工单系统派过来的公司的活,却要花时间去处理,感到不胜其烦。

如果某一天企业又想起来“共建”的故事,开始给这个“开源团队”下达社群人数增长的需求,一方面是短时间内低门槛的手段只有上一节提到杂活,另一方面,不止如此,“开源团队”的人还得求着“外部”开发者来参与,以达成自己的业绩。这种既瞧不起来人贡献的内容,又被迫跪舔式服务的情形,我在很早的一篇文章《Two Hats of Developers》当中就有过讨论。

如果企业开源的项目的第一作者仍然在社群当中,那么这些问题出现的几率就和个人发起的开源项目社群一样低。

例如,前文提到的 Apache InLong 项目是腾讯捐赠的。原创作者之一张国成仍然重度参与社群开发和方向计划。他希望通过代码开源和 ASF 的影响力,把自己创作的软件带到更多用户的生产环境。同时,他也需要维护腾讯内部的 InLong 使用实例。出于这样的动机,以及他就是软件的原创作者,他能够把内外的版本发布流程做到主线统一。同样把自己的职业生涯赌在 InLong 项目上的 PMC Chair Charles 是腾讯内部 InLong 项目的主管,在极强的责任心驱使下,他能够主动的对外宣传 InLong 的设计理念和用例,并且积极发展社群的开发者。根据我对 InLong 项目的观察,基本上每隔两三个月,就有几个 qualified 的开发者被提名进 Committer 队伍。

例如,我最近带到 ASF 孵化器的 OpenDAL 项目是 DatafuseLabs 捐赠的。当然你可以认为它源头上近似于 @Xuanwo 个人的开源项目,但是它确实也是 DatafuseLabs 公司立项的项目,@Xuanwo 的主业也包括开发和维护 OpenDAL 项目。@Xuanwo 在 BeyondStorage: why we failed[14] 一文介绍了 OpenDAL 的前世今生。在他的个人博客上,还有一系列 OpenDAL 的技术介绍和运营分享。

这里的关键点在于,开源社群的建设不只是代码开发。虽然好的软件是核心,但是社群想要建设起来,自给自足的运转,近乎需要创业的热情。对于第一作者来说,软件是他本人的作品,软件成功可以带动自己成功,同时从原创开发软件的过程里,他也得到了指明软件发展方向的权威,因此,这样的社群才能在方法论的加持下腾飞。TiDB 的崛起显然也是一个例证,且在创始人淡出核心社群,转由跟项目也没什么感情的职业经理人担任技术主管以后,开始出现各种大厂开源的典型异味。

当然,并不是说不是原创作者就只能被动等待了,只不过后继者想要通过努力得到近似原创作者的声誉更加困难,而且后继者往往也很少有动力去做这样的事情。我记得有这样做还挺成功的案例,应该算阿里巴巴集团的资深工程师们参与和逐渐继承 Flink 社群主导权。

关于开发人员应该如何参与开源社群,如何组织和建设开源社群的相关材料,首推的自然是《大教堂与集市》[15]。其中的第二篇《大教堂与集市》和第三篇《开垦心智层》分别讨论了开源协同的方式和优势,以及开源软件的所有权和声誉问题。

此外,制造开源软件[16]是一份很有价值的参考材料,GitHub 推出的 Open Source Guides[17] 是几个精练的主题小册子,《开放式协作》[18]是一本有趣的 GitHub 平台上的开源社群及其模式的综述书籍。

软件的产品力

应该说,运营人员的执行问题主要来自行业不成熟,经验尚未广为人知。在诸多好的案例和坏的案例的曝光下,我相信运营人员是能够快速找到新定位,建立起面向开发者的运营能力的。这一点其实已有苗头,也有一些开拓性的人才已经出现。

开发人员的立场问题和激励问题,企业一旦认识到开源社群的成功基本是内部创业,那么如果还决定要走开源路线,相关的资源和人才配备就不再缺失。开发者方面,在成功开源项目社群的引领和经验分享的帮助下,以开发者务实的精神,我相信也能理解建设开源社群所需要的方法论。当然,从知道到实际执行,目前看来还是一个很难跨过去的坎。

除此以外,国产开源社群要想发展,要想获得广阔的运营空间,最后最难的问题,是如何提高开源软件的产品力,或者叫开源软件的质量。

SkyWalking 的作者吴晟在《开源没有黑魔法,两年后泡沫将会破灭》[19]的访谈里提到:

开源最核心的是要具备产品思维。在某种角度上,社区 Leader 一定要是一个非常懂技术的人。但从另外一个角度上看,社区 Leader 更重要的还是要把开源项目看作一个产品或者能够售卖的商品。

开源最忌惮的就是比拼快和性能。如果你一味地追求快,这导致的结果是,你的功能出来后,别人也可以通过某种优化,快速地追赶上来,这就会导致你丧失掉生存的空间。只有持续地保持创新,才能不断地走下去。而这个过程中,如果一味地靠 KPI 以及营销带来的数据指标指导开源项目发展,而不是回归开源项目需要解决的问题本身,这将会成为开源项目发展的灾难。

历史上很多红极一时的项目,在热闹过后留不下什么东西,其核心原因就是软件的产品力不行,也就是不能解决实际问题,甚至号称要解决的问题并不存在。

这个讨论要展开涉及到的内容太复杂,我想抛出这个问题已经达到本文的目的。我在《大厂开源之殇》的第一节“用户不买账:我要怎么用起来?”里举了一些具体的例子,可做参考。

知识星球

这篇文章起初的想法我记录在同名知识星球〖夜天之书〗。

上面讨论过程中,例如社群运营在启动阶段是需要技术地推的,这个要怎么做?社群增长进入平台期以后,如何激发存量用户的创造力和主动性?内容传播的渠道如何建设、定位和维护?对于开发者,如何识别和参与国产开源社群?对于维护者,具体的在某个主题上和特定的开发者怎么开展合作?这些话题都没有展开甚至没有出现。一方面是篇幅所限,另一方面也是文章发布需要大量的时间梳理清楚框架和去繁就简。

如果你想就开源参与和社群建设的问题做深入的交流,或者想要订阅的不成文的一线内容输出,欢迎加入我的同名知识星球〖夜天之书〗。

d2f74b906f7a6cd2d409c3f1d96751a0.jpeg

参考资料

[1]

如何评价阿里 OceanBase GitHub 点赞送礼?: https://www.zhihu.com/question/494108102

[2]

开发者体验反模式:市场主导运营: https://dx.phodal.com/docs/anti-patterns/marketing-drive-developement.html

[3]

开源运营当论迹不论心: https://xuanwo.io/reports/2022-13/

[4]

Tracking issue for restructure tests: https://github.com/pingcap/tidb/issues/26022

[5]

Make some linters really happy: https://github.com/pingcap/tidb/issues/22979

[6]

Make linter facter by enabling bazel nogo to implement fast incremental linter: https://github.com/pingcap/tidb/issues/35345

[7]

typos: https://crates.io/crates/typos

[8]

《社群运营的艺术》: https://book.douban.com/subject/26976995/

[9]

《People Powered》: https://book.douban.com/subject/35531548/

[10]

YouTube 频道: https://www.youtube.com/jonobacon

[11]

《开发者关系:方法与实践》: https://book.douban.com/subject/36337667/

[12]

Developer Experience at Vercel: https://leerob.io/blog/dx

[13]

开发环境配置体验: https://t.zsxq.com/0e2fvSfXz

[14]

BeyondStorage: why we failed: https://xuanwo.io/2023/01-beyond-storage-why-we-failed/

[15]

《大教堂与集市》: https://book.douban.com/subject/25881855/

[16]

制造开源软件: https://producingoss.com/

[17]

Open Source Guides: https://opensource.guide/

[18]

《开放式协作》: https://book.douban.com/subject/36199828/

[19]

《开源没有黑魔法,两年后泡沫将会破灭》: https://www.infoq.cn/article/v0wqth2ubqwayxg08b7t

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

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

相关文章

苹果宣布最新操作系统:visionOS

今天凌晨,WWDC23 全球开发者大会正式开幕。 大会上,苹果展示了包括 iOS 17、iPadOS 17、watchOS 10 和 macOS Sonoma 在内的新系统。硬件方面,苹果发布了 15 英寸的 MacBook Air、搭载 M2 Ultra 的 Mac Studio 以及 Mac Pro。 此外&#xff0…

sqlserver练习----涉及多个表的连接查询

等值联接 多表查询语句中的连接条件使用的是等号,例:Student.SnoSC.Sno 例: Student 学号 Sno 姓名 Sname 性别 Ssex 年龄 Sage 所在系 Sdept 202015121李勇男20CS202015122刘晨女10 CS 202015123 王敏女18 MA 202015125张力男19IS SC: 学号 Sn…

秋招面试腹稿

1、自我介绍 你好,我叫熊志君,是就读于电子信息专业的24届研究生。在校期间获得过两次一等奖学金、两次省级竞赛一等奖,英语过了6级,我的研究方向是水下slam多传感器融合方向,用过c/c/python三种编程语言。 2、系统移植…

如何缓解高考前紧张的情绪,ChatGPT这么说......

明天就要高考了,看到家长有各种打气的做法,既有上灵隐寺的,也有穿着旗袍希望旗开得胜的,还有说什么失败了不要紧的......,反正都是焦虑的不行。 面对高考,大多考生都会紧张,但适度的紧张对发挥出…

解码器 | 基于 Transformers 的编码器-解码器模型

基于 transformer 的编码器-解码器模型是 表征学习 和 模型架构 这两个领域多年研究成果的结晶。本文简要介绍了神经编码器-解码器模型的历史,更多背景知识,建议读者阅读由 Sebastion Ruder 撰写的这篇精彩 博文。此外,建议读者对 自注意力 (…

Mocha AE:AdjustTrack 模块

跟踪时由于缺乏细节或有障碍物阻挡,跟踪点会发生漂移,此时可考虑使用 AdjustTrack (调整跟踪)模块手动设置表面区域 Planar Surface关键帧来获得更可靠的表面跟踪数据。 但是,如果需要设置较多的关键帧时,建…

Linux计划任务

常见的计划任务:进行日志的轮替(log rotate);日志文件分析(logwatch)任务;建立locate数据库;man page查询数据库的建立;RPM软件登录文件的建立;移除暂存档&am…

尺度悖论解析费米悖论:从夜郎自大到揭秘宇宙中智慧生命的谜团

费米悖论是一个引人入胜的问题,它引发了人们对宇宙中是否存在其他智慧生命体的思考。然而,尺度悖论提供了一个可能的解释角度,即我们对宇宙的观测和推断尺度可能太小,无法涵盖整个宇宙范围。下面深入探讨尺度悖论以及费米悖论的具…

Linux系统一般用来干嘛

Linux系统是一种开源的操作系统,广泛应用于服务器、嵌入式设备、超级计算机等领域。它具有高度的稳定性、安全性和灵活性,可以用来进行各种各样的任务,例如: 1、服务器操作系统 Linux系统在服务器领域应用广泛,可以用…

Maven继承

Maven 在设计时,借鉴了 Java 面向对象中的继承思想,提出了 POM 继承思想。 当一个项目包含多个模块时,可以在该项目中再创建一个父模块,并在其 POM 中声明依赖,其他模块的 POM 可通过继承父模块的 POM 来获得对相关依赖…

微信小程序自定义导航栏

微信小程序自定义导航栏 业务需求: 点击小房子进行跳转指定的页面 、更改小房子的样式、或者是自定义导航栏 首先我们需要找到pages.json这个文件 如果是原生的微信小程序文件名字是 app.json其实就是找到配置路由的文件在代码里面添加属性"navigationStyle&qu…

java设计模式(十四)模板方法

目录 定义模式结构角色职责代码实现适用场景优缺点 定义 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 指在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的…

1. Hadoop 入门

1. Hadoop 入门 1. 大数据概述 1. 大数据相关说明 大数据由来: 传统数据处理应用软件不足以处理(存储和计算)它们大而复杂的数据集 大数据面临的两大问题: 针对海量数据的 存储、计算 大数据的特性:容量大、种类多…

VFP使用BLOB字段存取图片到SQL2000,显示出来也EASY

首先来看一下BLOB这个数据类型的介绍: 大二进制对象(Blob)数据类型,若要存储一个任何种类的二进制数据,如 ASCII 码文本、一个可执行文件(.exe) 或一个带有不确定长度的字节字符串,可使用大二进制对象数据类型。对于从 SQL Serve…

c++11 标准模板(STL)(std::bitset)(六)

定义于头文件 <bitset> template< std::size_t N > class bitset; 类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集&#xff0c;并将它与字符串和整数相互转换。 bitset 满足可复制构造 (CopyConstructible) 及可复制赋值 (CopyAssign…

港科夜闻|海南省教育厅党委书记曹献坤到访香港科大(广州)开展实地调研

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、海南省教育厅党委书记曹献坤到访香港科大(广州)开展实地调研。香港科大(广州)临时党委书记屈哨兵从政治建设、思想建设、组织建设、制度建设及工作机制等方面&#xff0c;为曹献坤书记详细介绍了学校的党建工作体系构建&…

C盘爆了怎么办

一、删除大文件 关闭hiberfil.sys功能 关闭hiberfil.sys功能&#xff08;系统休眠时才会用到&#xff09; 管理员身份运行cmd 输入如下命令 powercfg.exe -h off移动pagefile.sys 这是虚拟内存文件,不建议删除&#xff0c;可以移动 右击此电脑->属性->高级系统设置 …

被吐槽,苹果挤牙膏式发布会,跟微信产品迭代如出一辙

大家好&#xff0c;我是校长。 今天一大早醒来&#xff0c;苹果发布会&#xff0c;毫无意外&#xff0c;在 iOS 系统更新迭代方面&#xff0c;可谓是乏善可陈&#xff0c;毫无新意。 当然了&#xff0c;被吐槽也就在情理之中了。 很多人说 iOS17 的最大变化&#xff0c;就是没有…

ISO21434 产品开发网络安全(七)

目录 一、概述 二、目标 三、输入 3.1 先决条件 3.2 进一步支持信息 四、要求和建议 4.1 设计 4.2 集成和验证 五、输出 一、概述 本条款描述了网络安全要求和架构设计的规范&#xff08;章节10.4.1&#xff09;。 此外&#xff0c;本子句还描述了集成和验证活动&…

Yakit: 集成化单兵安全能力平台使用教程·反连管理篇

Yakit: 集成化单兵安全能力平台使用教程反连管理篇 1.端口监听器2.DNSlog3.反连服务器4.ICMP-Sizelog5.TCP-Portlog6.Yso-Java Hack1.端口监听器 反弹 Shell 的接收工具,利用端口监听器可以在服务器上开启一个端口,进行监听,并进行交互 输入想要监听的端口,点击监听该端口…