只有开源才能拯救AI
导语 | 随着 AI 技术的蓬勃发展,大模型的开源化正成为人工智能领域的新潮流,但同时引发的伦理和安全风险也饱受大家关注,如何把握平衡其中的尺度成为开源的一大难题。我们又应该如何有效进行开源治理?未来将走向何方?今天,我们特邀了开源社联合创始人、腾讯云 TVP 刘天栋老师,他首先从 AI 智能体热点现象切入,而后过渡到开源面临的机遇与挑战,最后层层剖析 AI 开源的治理之道。
作者简介
刘天栋.Ted,长期专注于参与国内外开源社区,目前包含:开源社联合创始人 | Apache 软件基金会正式会员、孵化器项目委员会成员和导师、社区发展委员会成员 | 腾讯云 TVP;以及开源相关企业或顾问咨询工作,如 BAIN & Company External Advisor。历任开源雨林社区顾问、腾讯云腾源会开源顾问、微软中国战略业务总监、微软开放技术公司及微软亚太研发集团首席技术布道师;甲骨文(中国)渠道及联盟总监、Linux 战略总监、大中华区中间件事业部总经理;Turbolinux亚太区副总裁等。
引言
继机械化、电气化、信息化之后,我们迎来了第四次工业革命——智能化。在我看来,开源运动是第四次工业革命中最关键的思想元素之一,因为开源不仅大幅地改变了生产协作模式,同时也是颠覆式技术创新的催化剂。
对于第四次工业革命的核心大咖——人工智能来说,人工神经网络、机器学习、深度学习、大模型(LLMs)等的诞生,只是人类思想伟大征程的开端,我们根本无法预见奇点(singularity) 何时会到来,也无法清晰描绘人类未来生活的景象。我们对未来的设想,不是去考虑什么会改变,而是去考虑什么不会改变。
相较于科技不可预知的解放,我认为思想的解放更为关键,而开放和开源可能就是其中的一个解答。以下是我的观察与反思。
一、解读AI开源的机遇与挑战
(一)从斯坦福开源智能体小镇看AI发展
不久前,许多人工智能的场景还仅限于个人与机器的互动。然而,人类无穷的创造力很快地就更进一步打破了这个边界,进入了模拟的世界。
最近火爆的斯坦福开源 AI 智能体小镇,它是基于斯坦福论文《 Generative Agents: Interactive Simulacra of Human Behavior 》的发布,这种场景被AI Town 复现出来了。
值得观察的是 AI Town 里 25 位 AI 智能体(类人智能体,以下简称 Agent)之间的自主互动,例如其中一位女性发起的情人节晚宴为由头,接着发生的 Agent 之间自发性地对这个宴会的传播、计划、反应和想法以及他们的行为,可分成以下三类:
- 信息传播:Agent 之间互相告知信息并使其在城镇中社交传播;
- 关系记忆:记忆 Agent 之间过去的互动并稍后提及那些早期事件;
- 协调:与其他 Agent 一起策划并参加情人节派对。
可以想象,未来我们将进一步模拟人们如何在工作中互动,例如,模拟银行的数字资产托管业务,甚至是航空指挥和控制中心的场景。
一方面,AI 智能体或许比人更为可靠,AI Town 的研究人员要求人类以角色扮演的方式,模仿他们观看到的 Agents 的行为和语言来回答采访问题;结果发现 Agents 产生的结果比人类参与者角色扮演的效果更可信。或许是人类远比 AI Agents 来得更为复杂和难以预测?
但与此同时,随着人工智能大模型正在逐渐被人类 “驯服”,也将带来风险可能。在这个 AI Town 里,人类可以扮演 Agent 与其它 Agent 互动,也可以直接影响 Agent 的想法。因此产生了两个主要问题:首先,Agent 无法如实反映人类的情绪(如愤怒),这会影响模拟结果在现实世界的应用。其次,由于对模型驯服或优化的人为干涉,将可能带来伦理和风险问题。研究人员警告,将会存在形成不适当的 “准社会关系 (parasocial relationship)”、错误推论的影响、加剧与生成人工智能相关的现有风险,以及在设计过程中过度依赖 Generative Agents 等风险。例如我们通过上述在 AI Town 里模拟银行的数字资产托管业务,或是航空指挥和控制中心的业务被应用在真实生活里,将产生难以预知的风险。
近期华盛顿大学、港大等研究人员发布了类人智能体 Humanoid Agents,指出AI 逼真还原人类情感!会饿会孤独、会跑步,会发火[1]等。在过去,智能体虽然可以完成看似可信的行动,但和真实人类思维方式并不像,绝大多数人类也并不会提前制定计划,然后在日常生活中一丝不苟地执行这些计划。为了解决智能体和人类思维差异问题,研究者从心理学和社会学中汲取了灵感,引进了快思考(系统 1)和慢思考(系统 2)的元素,以及马斯洛需求理论等,如图所示。
Humanoid Agents 引入了系统 1 所需的三个要素——基本需求(饱腹感、健康和能量)、情感和关系亲密程度,来让智能体表现得更像人类。然后利用系统 2 来规划对应的需求,如此智能体就能调整自己的日常活动,并和其他智能体的互动与对话。
新的研究令人兴奋,但是,上述的 “可能风险” 是否也将因而加速且加剧呢?有一个值得大家注意的关键点,社会大脑假说提出,人类的认知能力很大程度上是为了追踪社会关系的质量而进化的。那么这些 AI 智能体的认知能力也可能将随着 AI 智能体之间的社会关系而进化。
(二)智能体是受控进化或自主进化
如果是自主地进化,人类将如何确保它不会失控?如果是受控的进化,那么由谁以及如何来控制呢?
● 生命游戏(自主进化)
很多人都知道或是体验过“康威生命游戏” [2]。只需要透过几个简单的规则设定,生命游戏可以递归创造出无穷巨大的结构,就像细胞组成组织,组织构成器官,器官形成系统,系统合成个体,个体组建社群,社群缔造社会,社会构成国家,以此类推无穷无尽。如今,几乎所有的计算机都是冯·诺伊曼构型,而生命游戏的运算方式更加接近生命活动的真实情况。神经网络活动在理论上也同样如此,在遥远的未来,我们很可能在这些围棋似的生命游戏之中,发现人工智能的真正钥匙。
试想一下,倘若这个 AI Town 或是 Humanoid Agents 像生命游戏一样,边界持续放大、算力持续增强、Agents 不断增加,那么将会产生什么样的演化?是否会像生命游戏一样地自主繁衍下一代,产生新的自我学习或新的类生命形态呢?
● 模拟理论/缸中大脑(受控的进化)
以伊隆.马斯克为代表的不少科学家和思想家,则相信我们生活的世界可能是一个由更先进的文明创造的模拟,如计算机模拟或 “缸中大脑”。听起来令人难以置信,对吗?然而,随着科技的进步,超级计算机或超级人工智能将极有可能创造出逼真模拟。人工智能体的最新发展使该理论更接近现实,可能会成为人工智能发展历史上关键的时刻。
前 Google DeepMind 创始人以及 Inflection AI 的创始人 Mustafa Suleyman 在他的 《The Coming Wave》书里认为:“我们很难控制 (contain) AI,但是我们一定要做到,否则就是人类被控制!”
● 26 号宇宙 or 终结者
一个知名的实验“25 号宇宙 (又称老鼠乌托邦)”,前 24 个老鼠乌托邦以及第 25 号宇宙都是以全员灭绝告终。这样的结果令人不寒而栗!如果将老鼠换成 AI Agents (Humanoid Agents),那么 AI Town 会变成 26 号宇宙 ,以全体员灭亡告终吗?
Mustafa Suleyman 认为 AI (结合其它科技,如量子电脑、材料科学、机器人、基因工程、生物和农业科技等) 将能大幅提升生产力,让能源、粮食、医疗、 制造等的成本趋近于零,并为未来的物资无限供应的零边际成本社会的可能性感到兴奋。因为人类将从无用的劳动中解放出来,进而发挥创意追求梦想。他在某种程度上赞成 OpenAI 创始人 Sam Altman 提出的全民基本收入 (Universal Basic Income - UBI) 的想法。
其实,除了骰子乐观的一面,还有几种薛定谔的猫的可能性:
➢ 如果人类在地球上饱食终日,无所事事,是否会变成 26 号宇宙自我消亡?
➢ 人类变成如 Elon Musk 所说的跨星际物种,殖民月球、火星或是飞出太阳系。是否会像迪斯尼电影 WALL.E 里太空船上无事无能的肥胖人类,在全能 AI 操控下的(26号)宇宙飞船中逐渐消亡?
➢ 或者人类在成为跨星际物种之前或之际,就因为逃不出历史轮回的自相残杀而自我终结?
➢ 或是被人工智能体化身的终结者(天网里的 Terminator)消灭了?
二、生命以负熵为生,开源势在必行
上述论述看起来一片晦暗,其实我是个坚信并践行开放与开源的乐观主义者。如引言所说:“我们对未来的设想,不是去考虑什么会改变,而是去考虑什么不会改变”。
不会改变的是宇宙的物理定律:只要是在一个不开放的环境里,无论是热力学第二定律适用的物理环境,25 号宇宙或是小到个人、家庭、公司、社会等,如果不保持开放的治理、状态和心态,那么由于熵增而趋于热寂的状况就必然发生。
薛定谔说:“生命以负熵为生”。负熵求生需要有外力来做功,要保持开放,还需要智能化。从人类的进化史来看,我们大概率不会因为智能化而怠惰,反而是与天斗、与人斗、与己斗,其乐无穷的例证无数。
人类正携手人工智能,透过彼此的外力做功和双向奔赴的智能化,共同为减熵找到出路。例如 AI 快速地飞入千行百业、千家万户为人类服务,而人类对 AI 能力进化的介入,如调优(Fine-tuning)与强化学习(RLHF)等努力,也从未停止。
因此,减熵里最关键的一步,即人工智能的开放与开源势在必行。否则,由少数人或寡头控制的封闭人工智能黑盒子,最终只会带领我们走向消亡与热寂。
三、人工智能开源的治理
作为通用人工智能(Aritificial General Intelligence)的代表——生成式人工智能(Generative AI)的颠覆式创新与突破带来了无限的机遇及想象空间,当然同时也带来了挑战甚至明显而即刻的危险。
(一)范式转移使治理成为可能
当以大模型为代表的人工智能的能力,遇上开源,犹如干柴遇到烈火,立即成为彼此相辅相成的飞轮。Meta 大模型 Llama 2 的开源(开源界多认为 Llama 2 的开源加上了商用的限制,因此不纯粹),引爆了全球及中国人工智能的开源势头。同样的范式转移,我们已经在操作系统、云计算、大数据、区块链、IoT 等多个领域反复地见到。例如 Google 的安卓系统(Android)、TensorFlow,微软的 VS Code、Meta 的 Pytorch 等,都是透过开源成功地打造强大的开源生态体系的典范。
目前少数科技巨头公司试图以其财力抢占算力,霸占一代又一代科学家在神经网络、机器学习(深度学习等)、通用人工智能等领域,前仆后继地投入研究的成果。我们期盼这些科技巨头公司们能见贤思齐,学习伊隆·马斯克以其颠覆式科技创新加上生产流程创新的思维与努力,推动并践行开源,来打造自身的护城河,而非透过闭源及专利打造封闭的黑盒子,制造熵增、阻碍创新。否则这些目前的巨头,终将如凯文·凯利预测一样,必将会被新创公司和开源的浪潮所淹没。
(二)重重隐患下多样化应对
强大的人工智能也带来了政治、社会、经济、科技、伦理道德方方面面的风险,例如操纵选举、散播假消息、利用 DeepFake 诈骗、歧视偏见、侵犯隐私、违反知识产权、伤害人权、安全合规漏洞等。
很多人担心一旦生成式 AI 开源之后,一个高中生或大学生在自家车库里,就有可能利用 AI 学习并制造出生物或化学等大杀伤力武器;一些美国大公司的人工智能驱动的招聘系统被暴露出对种族、性别、长相等的参数有歧视性的设定;还有利用几乎可以以假乱真的个人形象及语音被盗用、被仿造来进行诈骗等等。
可能很多人对 2007-2008 年在美国发生的次级贷款(简称次贷)风暴记忆犹新。它基本上是由华尔街少数极度聪明的一批人构筑了一种非常复杂,除了他们没有人能搞懂的金融衍生商品,亦即把一些信用等级不佳的房屋贷款包装成高利润的衍生产品,最后信用崩塌导致了雷曼兄弟的倒闭,以及随之而来全球的金融风暴。少数人、极其聪明、黑盒子算法,听起来是否很熟悉吗?未来的次脑风暴会不会也在逐渐形成呢?这不禁引人深思。
但也无需太过悲观,在我看来,人工智能开源的治理有以下切入点:
● 精英治理
全球许多有识之士认为开源是人类生产关系创新以及技术创新,透过开放式协作共赢的最佳手段。 政府、企业、科研机构以及开源社区携手合作,采取任人唯贤、精英治理(Meritocracy)的模式,建立一个专业、可信而跨领域的中立咨询机构,博采周咨并快速更新迭代出一套《人工智能法案》(欧盟花了四年多时间精心打磨,值得参考),并将开源纳为核心基础理念。国内最近出台的《生成式人工智能服务管理暂行办法》是一个尝试的开始。
● 定义人工智能开源
Mustafa Suleyman 认为西方世界不需要恶意地假设中国会试图利用高科技,例如人工智能、生物科技等,来伤害人类。他希望西方发达国家集团即刻展开控管人工智能的发展方向,并且也包容中国加入全球协作。
国际开源社区长久以来拥护认同的 “OSI 开源定义十条”,也应该适用于尚在全球范围讨论的 “人工智能开源定义”。除了软件之外,人工智能开源应该彻底开源大模型、框架、算法、参数、微调权重以及脱敏之后的数据集。
全球开源界的专家们普遍认为,开源许可证(包含人工智能的开源)里应该只专注于商标、知识产权、再分发限制之类的条款,没有必要考虑囊括伦理道德等可能造成歧视的条款,这些应该由法律来规范。
相关法律在究责时,应该专注于到达终端用户手中的最终制品,如 App,自动驾驶汽车,儿童玩具等,以及数据的隐私与安全合规。而非去究责作为原料、工具或是半成品的开源项目。举个例子,如果你用铁块和木条等原料组成了一个工具锤。如果有人用了这个工具锤伤害了人,那么法律应该去追究提供铁块与木条的原料厂商,还是制成工具锤的制造商吗?
只有专注于监管最终制品所产生的结果而非过程,那么创新将不受影响,监管的成本与难度将大幅下降,从而提升效率,因为开放协作的开源社区里将会有无数的眼睛在协助监管。
● 与国际接轨
另外,全球多家开源基金会和组织也已经展开了协作,希望能影响欧美政策制定者在人工智能和安全合规上,借由开源助力制定新的人工智能与网络安全合规的政策与法令。同时,开放源代码促进会(Open Source Initiative)正与 Linux 基金会以及其它诸多开源基金会和组织,携手推动定义新一代的开源人工智能的定义(Defining Open Source AI)以及相关的许可证。开源社也参与到了全球开源基金会和组织互动讨论的环节。只有推动或鼓励上述中立机构以及开源社区,迅速与国际开源基金会和组织紧密互动,才能合力影响欧美发达国家的政策制定者。
● 用魔法打败魔法
由上述中立机构或是科研组织,发展出一套人工智能对抗机制,深入研究、挖掘与模拟最坏状况与场景,例如散播假消息、利用 DeepFake 诈骗、歧视偏见、侵犯隐私、违反知识产权、伤害人权、安全合规漏洞等;亦即利用人工智能魔法打败人工智能邪法。
四、结语
《礼记 · 礼运大同篇》曾言:“大道之行也,天下为公。... 是谓大同。”
在当前,开源运动需要更好地与社会主义市场经济融合,让个人的能力与潜力充分发挥,从而形成新时代的铁三角。我们可以从开源被列入“十四五”规划纲要里,为数字经济提供基础养料便可看出国家的高瞻远瞩和剑及履及。
当封闭与围堵的逆流不断蔓延,我们需要拥抱开放与开源,携手志同道合的全球有识之士与组织,共同塑造新一代人类命运共同体。天下为公才是人类以及人工智能真正的出路。
延伸阅读:
1.AI 逼真还原人类情感!会饿会孤独、会跑步,会发火
2.“康威生命游戏”https://sourl.cn/HgswEU
3.AI Town (https://www.convex.dev/ai-town)
4.互动演示:
https://reverie.herokuapp.com/arXiv_Demo/
5.《The Coming Wave:https://www.the-coming-wave.com/》
6. 25号宇宙
7.《欧美的 AI 法案状态》
8.开源是打破内卷的最好方式
9.Meta 的 LLaMa 2 许可证并非开源许可证
10.拯救开源:《网络韧性法案》即将带来的悲剧
11.ASF 法律委员会发布贡献者生成式 AI 指南
12.ASF 生成式工具指南
13.日内瓦开源高峰会
14.百模大战方酣,AI 开源亮剑
15.AI 开源许可证的法律与伦理之博弈
16.探索 AI+开源的未来:Open Source Congress@日内瓦
17.礼记·礼运大同篇
相关文章:

只有开源才能拯救AI
导语 | 随着 AI 技术的蓬勃发展,大模型的开源化正成为人工智能领域的新潮流,但同时引发的伦理和安全风险也饱受大家关注,如何把握平衡其中的尺度成为开源的一大难题。我们又应该如何有效进行开源治理?未来将走向何方?今…...

在Spring Boot中使用进程内缓存和Cache注解
在Spring Boot中使用内缓存的时候需要预先知道什么是内缓存,使用内缓存的好处。 什么是内缓存 内缓存(也称为进程内缓存或本地缓存)是指将数据存储在应用程序的内存中,以便在需要时快速访问和检索数据,而无需每次都从…...

YOLOv5项目实战(3)— 如何批量命名数据集中的图片
前言:Hello大家好,我是小哥谈。本节课就教大家如何去批量命名数据集中的图片,希望大家学习之后可以有所收获!~🌈 前期回顾: YOLOv5项目实战(1)— 如何去训练模型 YOLOv5项目实战(2...

React + hooks + Ts 实现将后端响应的文件流(如Pdf)输出到浏览器下载
React 篇 一些关于react 学习与总结 这篇是记录开发中关于实现将后端响应的文件流(如Pdf)输出到浏览器下载,基于React Hooks Ts。 开发场景: 实现将后端响应的文件流(如Pdf)输出到浏览器下载,…...

大数据基础设施搭建 - JDK
一、创建目录 需要在root账号下操作,因为/目录下只能用root账号创建目录 1.1 创建目录 [roothadoop102 ~]# mkdir /opt/software/ [roothadoop102 ~]# mkdir /opt/module/1.2 修改权限 修改module、software文件夹的所有者和所属组均为hadoop用户,远程使…...

从0到0.01入门React | 010.精选 React 面试题
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

Docker启动SRS流媒体服务器
一、安装Docker 1.1、下载windows桌面版Windows 1.2、配置镜像 镜像加速器镜像加速器地址Docker 中国官方镜像https://registry.docker-cn.comDaoCloud 镜像站http://f1361db2.m.daocloud.ioAzure 中国镜像https://dockerhub.azk8s.cn科大镜像站https://docker.mirrors.ustc…...

php+MySQL防止sql注入
1、使用预处理语句(Prepared Statements):预处理语句能够防止攻击者利用用户输入来篡改SQL语句,同时也能提高执行效率。通过将用户的输入参数与SQL语句分离,确保参数以安全的方式传递给数据库引擎,避免拼接…...

git 删除远程非主分支
git删除远程分支问题及git批量删除已合并的远程分支 - joshua317的博客 git push origin --delete branch-name 本版本Gitlab没有设置按钮,所以不能在网页上删除项目。但是可以在本地使用上述命令来删除远程仓库中非主分支的分支。 测试过不论在哪个分支操作都可…...

【MySQL学习】C++外部调用
#include "mysql.h" MYSQL *mysql; MYSQL_RES *rec; MYSQL_ROW row; (1)连接 char *server "localhost"; char *user "root"; char *password "hello"; char *database "mysql"; mysql mysql_i…...

Backblaze 2023 Q3硬盘故障质量报告解读
作为一家在2021年在美国纳斯达克上市的云端备份公司,Backblaze一直保持着对外定期发布HDD和SSD的故障率稳定性质量报告,给大家提供了一份真实应用场景下的稳定性分析参考数据。2023年度之前发布的两次报告,请参考: Backblaze发布2…...

docker安装elasticsearch,elasticsearch-head
安装elasticsearch 1、执行命令:docker pull elasticsearch:8.11.1 2、执行命令:docker run --name elastic -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -d elasticsearch:8.11.1 3、执行命令:docker exec -it …...

rabbitmq 集群搭建
RabbitMQ集群介绍 RabbitMQ集群是一组RabbitMQ节点(broker)的集合,它们一起工作以提供高可用性和可伸缩性服务。 RabbitMQ集群中的节点可以在同一物理服务器或不同的物理服务器上运行。 RabbitMQ集群的工作原理是,每个节点在一个…...

【云原生-Kurbernets篇】Kurbernets集群的调度策略
调度 一、Kurbernetes的list-watch机制1.1 list-watch机制简介1.2 创建pod的流程(结合list-watch机制) 二、Scheduler的调度策略2.1 简介2.2 预选策略(predicate)2.3 优选策略(priorities) 三、标签管理3.1…...

Unity中Shader矩阵的乘法
文章目录 前言一、矩阵乘以标量二、矩阵和矩阵相乘1、第一个矩阵的列数必须 与 第二个矩阵的行数相等,否则无法相乘!2、相乘的结果矩阵,行数由第一个矩阵的行数决定,列数由第二个矩阵的列数决定! 三、单位矩阵四、矩阵…...

C++ STL简介
1. 什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室…...

如何优雅的使用contorller层
一个完整的后端请求由 4 部分组成: 接口地址(也就是 URL 地址)请求方式(一般就是 get、set,当然还有 put、delete)请求数据(request,有 head 跟 body)响应数据ÿ…...

发现区块链世界的新大门——AppBag.io DApp导航网站全面解析
随着区块链技术的飞速发展,分布式应用(DApp)个充满创新和可能性的领域里,appbag.io DApp导航网站应运而生,为您打开探索区块链世界的新大门。 区块链应用的集大成者 AppBag.io DApp导航网站不仅是一个DApp的集散地&a…...

C#多线程Thread、Task
在C#中,线程可以用于完成需要耗费较长时间的操作,而不会阻塞用户界面。一个程序可以有多个线程,每个线程可以并行执行代码。 在C#中,可以使用System.Threading.Thread类来创建和控制线程,使用System.Threading.Mutex类…...

Qt QWebSocket实现JS调用C++
目录 前言1、QWebChannel如何与网页通信2、QWebSocketQWebChannel与网页通信2.1 WebSocketTransport2.2 WebSocketClientWrapper2.3 初始化WebSocket服务器2.4 前端网页代码修改 总结 前言 本篇主要介绍实现JS调用C的另一种方式,即QWebSocketQWebChannel。与之前的…...

Android Matrix的使用详解(通过矩阵获取到图片缩放比例和角度)
网上查了好久相关的资料,都没有明确的答案。最终通过多次测试结果,结合安卓定义的矩阵含义,推算出来矩阵的数学含义以及相关的计算公式 1.获取Matrix矩阵: Matrix matrix new Matrix(); float[] matrixValues new float[9]; …...

【Spring】bean的生命周期
这里写目录标题 1. 在类中提供生命周期控制方法,并在配置文件中配置init-method&destroy-method(配置)关闭容器操作1:ctx.close()关闭容器操作2:关闭钩子:ctx.registerShutdownHook() 2. 实现接口来做和…...

C#运算符重载
运算符重载允许你重新定义内置运算符(如、-、*等)的行为,以便它们可以用于自定义类型(类/结构体)。通过运算符重载,你可以为自定义类型创建更直观和灵活的操作。 在C#中,可以重载的运算符如下&…...

【L2GD】: 无环局部梯度下降
文章链接:Federated Learning of a Mixture of Global and Local Models 发表期刊(会议): ICLR 2021 Conference(机器学习顶会) 往期博客:FLMix: 联邦学习新范式——局部和全局的结合 目录 1.背景介绍2. …...

2023-11-14 LeetCode每日一题(阈值距离内邻居最少的城市)
2023-11-14每日一题 一、题目编号 1334. 阈值距离内邻居最少的城市二、题目链接 点击跳转到题目位置 三、题目描述 有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的…...

AdServices归因和iAd归因集成
AdServices framework 是 Apple 专门为 ASA 提供的归因框架 。尤其在ATT 政策推出以后,app 获取用户 IDFA 的比例大幅降低,传统的依靠IDFA 的方法也无法准确归因。 但是 Apple 为 ASA 开了一个后门,其他广告渠道无法获取用户的 IDFA 作为身份…...

关于 内部类 你了解多少?(详解!!)
目录 1. 什么是内部类? 2. 内部类的分类 3. 内部类 3.1 实例内部类 3.2 静态内部类 4. 局部内部类 5. 匿名内部类 6.对象的打印 “不积跬步无以至千里,不积小流无以成江海。”每天坚持学习,哪怕是一点点!!&a…...

CNVD-2021-09650:锐捷NBR路由器(guestIsUp.php)RCE漏洞复现 [附POC]
文章目录 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC] 0x01 前言 免…...

如何在Docker部署Draw.io绘图工具并远程访问
文章目录 前言1. 使用Docker本地部署Drawio2. 安装cpolar内网穿透工具3. 配置Draw.io公网访问地址4. 公网远程访问Draw.io 前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费࿰…...

Android APK打包的过程主要步骤
Android APK打包的过程可以概括为以下几个主要步骤: 编译源代码:将开发好的Java源代码编译成Dalvik字节码文件(.dex文件),Android安卓该文件包含了Android平台上的运行程序的指令集。打包资源文件:将应用程…...