开源LLM「RWKV」想要打造AI领域的Linux和Android|ChatAI

news2024/11/19 0:27:00

RWKV想逐步成为最强开源模型,中期计划取代Transformer。能如愿吗?

“我们没有护城河,OpenAI也是。”近期,谷歌内部人士在Discord社区匿名共享了一份内部文件,点破了谷歌和OpenAI正面临的来自开源社区的挑战。尽管经外媒SemiAnalysis求证,文件内容仅代表谷歌部分员工而非整个公司的观点,但其中陈述的一个事实再次引起了广泛关注和讨论——开源LLM正呈现出百花齐放的态势。

抛开开源和闭源之争,可以窥见,同时更加值得关注的是,模型架构和算法层面的创新将加速涌现。

如德克萨斯大学教授Alex Dimakis对谷歌内部文件泄露事件发表的观点中所指,LoRA(low rank adaptation,低秩适应,一种创新的大型语言模型微调机制)打开了算法创新的大门。而被泄露的谷歌内部文件也提到,模型可扩展性和低成本微调机制这两个问题的解决,使得公众能以更低成本参与模型开发和优化迭代过程。

当前,在开源LLM的大军中,也不乏中国开发者的身影。例如,在开源社区吸睛无数的,除了LLaMA及其变体,还有清华团队开发的ChatGLM 6B模型。

而在开放型研究组织 LMsys 5月8日最新公布的LLM基准测试排名中,榜单上出现了又一个出自中国开发者之手的LLM——“RWKV-4-Raven-14B”。其排名已在ChatGLM 6B之前,同时,在开源LLM中,仅次于Vicuna 13B和Koala 13B。

在模型架构上,RWKV创新地将GPT transformer改写成RNN形式。由于在设计上保留了transformer block的思路,RWKV同时具备RNN和Transformer的部分特性。

RWKV此前在GitHub和Discord上也颇受关注。目前,RWKV在GitHub上已获得6.4k stars,模型训练由Stability赞助。

图片

LMsys 5月8日最新公布的LLM基准测试排名 参考https://chat.lmsys.org/?leaderboard

为什么选择开源方式,开源项目有何特征?与其他大型语言模型相比,RWKV有何不同之处?具体而言,RWKV具备什么特性、模型性能如何,以及下一步将如何发展?RWKV的商业计划是什么?

带着这些问题,36氪采访了“RWKV”模型以及“元智能OS”的创始人彭博。

据彭博介绍,RWKV拥有RNN的速度快、显存占用少的优点,解决了传统RNN的缺陷。同时,和transformer一样,RWKV可以并行推理和训练。

目前,RWKV已完成0.1B到14B英文模型训练,以及7B中文对话和小说模型的初步训练(使用英文词表)。RWKV很快将启动0.1B到14B的全球多语种(包含中文)模型的正式训练(使用多语言词表),并逐步达到千亿参数规模。同时,今年新成立的元智能OS团队将关注RWKV的生态建设和模型定制,加入图像、音频、视频、3D等多模态能力。

彭博告诉36氪:“RWKV将始终保持完全开源和非盈利性质,愿景是成为‘AI领域的Linux’,而元智能OS的愿景则是成为‘AI领域的Android’。”

以下是36氪和彭博的对话,经编辑:

图片“闭源”封不住,Transformer 也不是唯一解

36氪:我们观察到第一版RWKV在Github上的发布时间是21年8月。您是什么时候决定开发RWKV的?

**彭博:**实际是三年前,我的兴趣是AIGC,特别是小说生成。在发布RWKV之前,我一直在研究如何改进GPT,并发现了许多独门技巧,如“Token Shift”。RWKV的诞生,来自于这些技巧的优化,也来自于对GPT的attention注意力机制的改造和数学变换。

36氪:当初为什么选择以开源的方式来做这件事?

**彭博:**我认为,一个公开的、人人可用的强AI是非常重要的。大多数人都不会愿意看到强AI被巨头垄断,这也不利于人类进步。

当然,开源项目在做大之前,效率往往低于闭源,但项目走上正轨后,实现正反馈运转,它的发展和生态就可以完全胜过闭源项目。

DALL-E2和Stable Diffusion的对比就是很好的例子。DALL-E2刚做出来的时候,大家都说效果很厉害,但现在没有人关注DALL-E2,大家都在用Stable Diffusion。

DALL-E2退出战场之后,大家的关注点就变成了Midjourney和Stable Diffusion。目前这两者有互补关系。Midjourny作为商业产品,对新手用户更友好,这是闭源商业项目的常见优势。开源项目的用户体验往往更粗糙,但Stable Diffusion的功能和定制性更强大,更适合熟手用户。

36氪:开源方式会不会带来安全方面的问题?OpenAI也表明不公开GPT-4模型相关细节的部分原因是为了安全考虑。

**彭博:**OpenAI曾表示,他们选择闭源的原因之一是认为闭源更安全。这有一定道理,但我认为,从技术发展的角度来讲,封是封不住的。

当初ChatGPT出现时,许多人惊呼OpenAI强无敌,但我认为现在大模型之所以发展快,是因为门槛实际不高,只要投入足够物力和人力,所有人都可以做出来这个效果。这里不存在黑科技,也不存在技术封锁的可能。

所以,在今天这个时间点,我们就看到了“百模大战”。

36氪:看起来您对OpenAI和GPT系列模型现阶段取得的成功有不同的看法?

**彭博:**大家都聊OpenAI方法论。但在我看来,有句流行语,“有多少人工就有多少智能”。这个过程中,最关键的不是工程优化,而是“数据+人工查漏补缺”。因为OpenAI从GPT-3开始,就有了很多测试用户,收集了多年的用户反馈数据。在这个基础上,他们对模型进行持续训练,补漏洞的工作就能做得很好。

36氪:在OpenAI的成功里,Transformer的贡献度有多大?

彭博:Transformer本身的学习能力很强,所以现在的大模型发展才会如此迅速。

36氪:可以理解为您认同“Transformer是目前为止最好用的(开发LLM的)‘砖块’”这一观点吗?

**彭博:**如果理解Transformer的运行原理,会发现,它的效果优,是因为思维方式很像人类。举个简单例子,Attention的核心是Q、K、V,它会根据Query往前查找比对,找到匹配的Key,把Value取过来,这类似于人查阅资料的过程。

相较于传统RNN,Transformer有很多优点,在训练时更容易scale和并行化,不会出现梯度消失,能捕捉序列中元素之间的长程依赖关系。

但Transformer,或者Attention,并不是唯一正解。

例如RWKV,没有Attention,也能做到GPT级别的效果,包括in-context learning能力。

有趣的是,RWKV并不是不断改进传统RNN的成果。我是在不断调优GPT的过程中,发现可以把GPT改造成RWKV这种纯粹的RNN形式,同时依然保持很强的性能。

关于RWKV的具体原理,感兴趣的读者可以阅读:https://github.com/BlinkDL/RWKV-LM 。

36氪:目前有类似研究吗?之前也有很多研究尝试改进transformer,或者试图直接优化RNN。比如最近谷歌发布的《Scaling Transformer to 1M tokens and beyond with RMT》,以及更早之前发布的《Resurrecting Recurrent Neural Networks for Long Sequences》。您怎么看?

**彭博:**苹果公司的论文《An Attention Free Transformer》是RWKV的重要参考文献。这篇文章被主流学术界漠视,但我看到时就认为其中的思想和结果很有潜力。在研究和思考后,我意识到,如果将公式做深入调整和变换,最终可以写成RNN的形式。

但要实现目前RWKV的性能,还需要加入更多技巧(如之前提到的“Token Shift”)。同时,在RWKV-4中我还解决了大模型训练的数值溢出问题。

在前几年,有大量论文希望简化Attention,估计可以找出几十篇。但它们在简化Attention后,语言建模的性能都会有显著下降,所以没有人用。最近两年才开始有研究(如State Space系列)性能可以逐渐看齐GPT。

“RWKV”这篇论文思路比较常见,类似于检索。我个人赞同检索和工具的思路,但这种改进和模型架构无关。

36氪:所以和这些研究或者模型相比,RWKV的不同之处是什么?

**彭博:**首先,RWKV的时间、空间复杂度很低。GPT的时间复杂度是O(N2),通俗说,会越写越慢。因为它每写一个字,需要把前面所有字都“读”一遍,并且需要始终记录每个字的状态。GPT的空间复杂度,用简单方法做是O(N2),用聪明方法可以做到O(N),所以也会随着文本长度增加而不断增长。

而RWKV的时间复杂度是O(N),空间复杂度是O(1)。也就是,RWKV的生成速度是匀速的,显存占用也是恒定的,写多少字都不会增长。

其次,虽然几年前就有论文把GPT写成某种RNN,但做出来性能损失非常厉害。RWKV不但可以把GPT做成性能没有损失的RNN形式,而且在scale(模型扩大)之后,性能还有越来越强于GPT的趋势。

36氪:在这样的情况下,会不会牺牲掉其他一些方面的模型特性?

**彭博:**纯RNN像“盲人骑瞎马”,每写一个字,只能看前一个字的状态,不能往前再看自己写过的东西。如果输入一段很长的资料,它读完一遍,是不能再返回继续读的。这类似于人类读了一遍资料,在不再看资料的情况下直接回答。

而GPT,每写一个字就要重新看一遍前文,效率很低,但会更容易地认真检查前文的每个字。

也可以说,GPT像笔试,纯RNN像口试。RWKV作为纯RNN,会损失对“无用细节”的记忆力(注意模型会自动判断哪些内容重要)。

有趣的是,虽然RWKV是盲人骑瞎马,它生成的效果却往往很好。我们观察到RWKV的长文本生成能力很强。

比如给定一个小说开头,让模型连续生成5000字的文本。如果用GPT,生成的文本容易散掉,容易出现自我重复或者质量下降的情况。RWKV就不会有这样的问题。

传统的RNN,遗忘问题很严重,例如著名的LSTM试图增强RNN的记忆力,但它大致在100多个token后就会逐渐忘记前面的内容。而RWKV在几千个token后仍可以记住前文的重要内容。

36氪:但GPT-4在考试方面能力似乎很出众。考试和写小说,谁更难?

**彭博:**许多人认为GPT答考试题拿高分所以很厉害,但我认为写小说比答考试题更难得多。因为写小说需要推演整个世界的演化,涉及各种人物、势力。他们有各自的目的、计划、关系、性格、经历和想法,这是一个远远更难的任务。

36氪:有解决搞错细节这个问题的办法吗?

**彭博:**首先需要指出,模型一定会记住重要的细节,例如小说人名。难记忆的是无用细节,也就是正常的后文不太会关注的细节。

但第一,如果专门针对这个任务进行训练,模型的准确性会显著提高。

第二,我测试过在RWKV中加5%的attention(例如RWKV v4b系列),得到的混合模型,所有能力都可以比GPT强(包括“无用细节”的记忆力)。而且它仍然快、省显存。现在为了保持纯粹度(100% RNN),我在绝大多数RWKV模型没有加attention。

第三,我们的模型其实只需要作为一个“大脑”,类似于人可以调用工具,语言模型也能运用工具记忆和查阅记录实现自我增强(就像AutoGPT调用数据库)。

第四,我们发现RWKV到14B参数量后,也有较强的背诵能力。对于未来100B以至1T的大模型,它的记忆力会更强。背诵对Transformer很简单,但对RNN来说有点神奇,因为RNN要把前面所有看过的东西压缩进系统自己的状态,这个压缩是有损的过程。

第五,RWKV通过选择性遗忘,实现了明确的state of mind,而GPT不存在这种能力。所以,未来如果有一个规模很大很强的RWKV,它将会像是拥有某种“意识”,这会是好事还是坏事?我认为,“有意识”和“无意识”的AGI都有各自的风险。

图片模型架构不同于GPT,当前性能互有胜负

36氪:您提到Transformer不是唯一解,可以理解为RWKV预期实现的最终目标是取代Transformer吗?

**彭博:**RWKV的短期目标是逐步成为开源模型的龙头,然后中期目标是取代Transformer。现在英文LLaMA、中文ChatGLM,大家都很认可。在同等参数量下,RWKV和这两个模型都是互有胜负的关系(有的能力更强,有的能力更弱)。我们会不断增强RWKV的能力。

36氪:您对第一个目标的实现,有没有大概的时间预期?

**彭博:**我相信今年就可以完成。因为今年我们会用更大数据量训练更大参数规模(100B)的模型,并同步训练多语言(包括中文)模型。

LLaMA的性能强,是因为用了足够多数据进行训练。目前我们的英文数据规模比LLaMA小很多。LLaMA是1.5T,RWKV是0.3T,只有LLaMA的五分之一数据量,但现在RWKV的能力也已经很强,说明RWKV的上升空间很大。我们正在用1.7T英文数据训练下一代模型。

LLaMA有很多变体,其中最强的模型是Vicuna,目前RWKV 14B和Vicuna 13B是4/6开,我们4,它6。但RWKV的速度比Vicuna明显更快,显存占用更少。随着RWKV的持续进步,我们今年有信心全面胜于所有LLaMA变种。

现在RWKV中文7B模型和ChatGLM 6B中文模型也是互有胜负,不过,RWKV还没开始真正炼中文模型,使用的是英文词表,还没有加入大规模中文语料。但它的中文能力已经很不错了。

36氪:有关于RWKV模型性能的客观评测结果吗?

**彭博:**我们做了多种zero shot任务的测试。RWKV模型使用的是Pile语料,和同样使用Pile语料的Pythia、GPT-NeoX、GPT-J对比,RWKV的各项指标都是有竞争力的。

但学术评测数据集只能作为参考,因为这些数据集的题目质量参差不齐。所以,只有用户自己的使用感知,以及LMsys Arena这种用户盲测,才是比较可控的评分标准。现在也有一些自动评分的方法,例如用GPT-4来评估,感兴趣的同学可以自行尝试。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GOQKculu-1684321939863)(data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)]’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)图片来源于GitHub BlinkDL / ChatRWKV

36氪:RWKV最初的训练数据来源于哪里?

**彭博:**RWKV的基底模型使用的是开源英文数据集Pile。目前的中文数据集来自于网络小说和百科、维基等。

36氪:先练英文模型是因为考虑到可用数据的质量和规模的问题吗?

**彭博:**首先,在当时来看(开发RWKV之初),虽然中文用户多,但英文的开发者更多,热情更高。不过,现在国内的开源开发热情也越来越高,这可能是Stable Diffusion带来的变化,所以现在的中文模型优先级也很高。

其次,目前RWKV用的是英文词表,常常需要两三个token才可以表达一个中文单字,这会显著影响生成效果,如果这时就去炼中文大规模数据,属于浪费算力。我在前不久做好了多语言词表,所以很快就能正式炼多语言模型和中文模型,中文能力和生成速度都会提高。

36氪:RWKV的模型训练方法和GPT一样吗?训练消耗了多少算力成本?花了多少时间?

**彭博:**我们完全用了GPT的训练方法,不需要任何修改。这也是RWKV的优势,因为传统RNN的训练方法会有区别,而且会比GPT训练慢很多。

RWKV的训练速度比GPT更快。举个例子,RWKV 14B的模型如果用64张A100,炼Pile是332G tokens,如果用快的练法需要一个月,用慢的练法需要三个月。我用了慢的练法,因为慢工出细活,效果会略好一点。

所有RWKV模型加起来的算力成本是小几百万。这是Stability赞助的免费算力。如果用快的炼法,用大几十万就可以了。

36氪:Stability是什么时候开始赞助的?

**彭博:**我和他们很熟悉,因为很早之前我就在EleutherAI的Discord群组里。几年前我做了Transformer的几个改进,群里的开发者当时试了发现确实有效,所以比较认可。之后我开发RWKV,大家也都共同见证了RWKV的成长。

36氪:RWKV的人类价值观对齐是怎么做的?

**彭博:**这个和大家的做法也没有区别,适用于GPT的也同样适用于RWKV。RWKV特殊之处只在于替换了Attention组件。

目前,大家主要从数据(SFT)和RLHF两个方面来做。还有研究指出,可以做AI的自我审查,让AI回答之后自我审查并进行修正。

另外,提到价值观,我认为有必要在AI模型加入中国价值观,构建一个社会主义核心价值观的数据集。目前美国公司和OpenAI都会用自己的价值观去塑造AI模型。

但如果以后有强AGI,这些方式都没有意义。强AGI比人类更聪明,足以操纵和骗过人类,而且会自我进化。这是AI最危险的地方,也是为什么国外很多AI研究者都持有悲观态度。到这个维度,大家担心的就是更直观的AI安全,AGI是否会处心积虑(或随意地)毁灭人类。

这也是我为什么认为必须建设开源AI。如果AI封不住,就需要加强公众对AI的了解和认知,最终全世界人类共同来探讨、研究、抉择。

36氪:我们比较好奇,社区里也有网友来问,您为什么没有整理出一篇论文,来扩大影响力呢?

彭博:因为确实太忙。在开源项目早期,我一个人要做所有事情,包括模型的设计、改进、优化、训练,以及清洗数据(这最耗费时间),以及回答中外网友的问题、宣传推广。但是现在已经有团队在帮忙写RWKV论文,之后大家可以在论文里看到RWKV 的全面技术介绍。目前可以先看Github上RWKV-LM项目的Readme。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dfei1x3H-1684321939864)(data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)]’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)RWKV商业化,重点关注GPT不能做的

36氪:刚刚您提到RWKV从0到1的过程几乎是自己亲力亲为的,那目前的团队是什么时候组建的?大概是什么规模?

**彭博:**我和CTO刘潇是在Discord认识的。他此前一直在自研AIGC模型的工程化和应用开发,并上线了网站和服务。COO孔晴和联创罗璇是在今年1月份加入的,他们也有丰富的运营和管理经验。

目前我们还有远程工程师和语料清洗团队。我们现在是分布式办公。因为大家都是自驱工作的,效率比较高。

36氪:我们关注到您也在一些社交平台和社区里号召大家一起来洗数据?

**彭博:**对,我在知乎有一些这样的号召。大家一起来收集多语言的数据,大家也都可以用。

36氪:目前公司对RWKV的商业化有明确规划了吗?

**彭博:**有,商业化是并行的。因为商业化有利于大模型的生态发展。如前所述,RWKV的愿景是成为AI领域的Linux(会始终保持完全开源和非盈利),而元智能OS的愿景是成为AI领域的Android。

商业化分为两个方面。

一是“RWKV+软件”,分为专业应用和娱乐应用两个方向。专业应用的to B包括API和 SDK,包括专业生产力工具,例如文本生成、写作、图片处理工具,在垂直领域还包括教育和电商,我们已有一些合作伙伴。娱乐应用主要是to C,如图像、视频、游戏等等。

二是“RWKV+硬件”。由于RWKV对于硬件非常友好,比GPT更适合芯片和端侧,我们将逐步实现RWKV大模型嵌入各类终端,包括手机、电脑、IoT智能设备终端,也包括机器人和XR等。

36氪:目前商业化进展如何?

**彭博:**现在中文小说和Chat模型是免费下载的,同时已有一些客户在合作进行定制和私有化部署。

在终端的合作方面,已经有多家手机和芯片厂商对RWKV非常感兴趣,并开始移植和测试模型。因为RWKV目前能直接在端上高效运行,这是RWKV的一个独特优势。

36氪:目前考虑融资吗?

**彭博:**我们正在和国内投资机构讨论融资。RWKV拥有国产自主可控的大模型架构,并且支持终端私有化部署,14B参数规模的验证也已经完成。所以,我们目前得到了社会各界的许多支持。很多合作方是主动找到我们的。

36氪:出门问问也认为在智能硬件设备是大模型很重要的应用场景。这个和大模型的终端部署思路一致吗?

**彭博:**真正的端侧部署,需要模型在设备上直接运行。目前各家应该只是将手机连到了云端的API,并不是把整个大模型部署到端上去,所有的AI能力都在云端。这样会带来三个问题。一是响应时间,网络会有延迟和流量。二是所有的云服务资源消耗是不经济的,因为终端上有计算能力,但仍然要调用云端的计算能力,这是对算力的浪费。三是很多用户会有泄漏私人数据的顾虑。

36氪:RWKV已经能够实现这样的端部署了吗?

**彭博:**目前GPT用llama.cpp项目,RWKV用rwkv.cpp项目,都可以在手机、电脑上跑。未来的专用芯片出现后,端侧模型的推理速度会快很多,硬件要求会低很多。

但由于前面提到的模型特性,RWKV的速度和芯片成本会有优势,能耗也更低。因为RWKV的推理是匀速的,显存占用也是恒定的,不会出现类似GPT爆显存的问题。另外,RWKV的推理只需要矩阵和矢量的乘法,而GPT需要矩阵和矩阵乘法。

我们认为未来端部署会是一个大趋势。目前大家都在用云,但以后会是端和云的结合。也就是,云侧有一个超大模型,端侧有一个大模型。我的观点是,AI大模型的决战战场是在硬件上面,也就是芯片。无论是端侧和云测都需要专用芯片。

36氪:所以咱们需要有芯片厂商来加入到合作生态中?

**彭博:**目前已有几家AI芯片厂商在移植RWKV算子,例如华为昇腾已经支持RWKV的推理和训练,我们也非常欢迎各家AI芯片厂商的朋友一起合作。未来会有RWKV的ASIC专用芯片,在手机等设备上就可以快速跑大模型。

36氪:刚刚提到了不同层面的商业化打算,现阶段的重点是什么?

**彭博:**重点是本地化部署和定制。需求主要来自客户对数据安全和本地部署成本的考虑。目前海内外可选的其实不多,国内有ChatGLM,海外有LLaMA。和他们相比,我们的资源消耗更低。这对to B领域来说很重要,所以在一些to B的高价值领域,已经有客户联系我们。

to C端,许多个人用户也希望有自己的AI私人助手,不希望自己的数据被泄露,同时用户需要模型够快,对于硬件需求够低,这也是RWKV擅长的领域。

无论是to C还是to B,我们的主打都是现在GPT做不到,市面上只有我们能做的点。

36氪:这样一来,对数据安全有要求的企业,以及面向个人的端部署应用,相关的数据是无法反哺给基础大模型来做迭代优化的?

**彭博:**对于基础模型而言,加的数据越多越好,但是用开源的数据作为预训练也是完全足够的,例如开源的法律、医疗等各行业的数据。在基础模型对于各行各业有一定了解后,客户可以在私有数据自行微调,也能实现很好的效果。

要模型够快,对于硬件需求够低,这也是RWKV擅长的领域。

无论是to C还是to B,我们的主打都是现在GPT做不到,市面上只有我们能做的点。

36氪:这样一来,对数据安全有要求的企业,以及面向个人的端部署应用,相关的数据是无法反哺给基础大模型来做迭代优化的?

**彭博:**对于基础模型而言,加的数据越多越好,但是用开源的数据作为预训练也是完全足够的,例如开源的法律、医疗等各行业的数据。在基础模型对于各行各业有一定了解后,客户可以在私有数据自行微调,也能实现很好的效果。

RWKV也已加入HuggingFace transformers库:https://github.com/huggingface/transformers/pull/22797,HuggingFace很快将发博客官宣。

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

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

相关文章

QT的qrc文件的创建和编辑

qrc文件,这个是Qt的资源文件,如果在pro文件中不包含的话,在编译的时候会提示找不到相应资源的错误;下面说一下手动修改pro和编写qrc文件的方法: 2.1 添加qrc文件; 2.2 编写qrc文件; 可以用 file…

SocketTools.NET 11.0 Crack

在所有 HTTP 客户端组件中添加对 HTTP/2.0 协议的支持。 2023 年 5 月 17 日 - 10:58新版本 特征 在所有 HTTP 客户端组件中添加了对 HTTP/2.0 协议的支持。 更新了 TLS 1.2(及更高版本)和 SSH 2.0 的安全选项,以使用 Microsoft Windows 11 和…

关于so的加密和解密(个人记录文件暂不分享)

一往情深深几许,深山夕照深秋雨 文章目录 一、so加密解密的介绍二、框架的so加密1.pom的依赖导入2.编写SoUtil 工具类3.编写处理byte工具类HexCode4.编写接口进行调用接口进行加解密总结提示:以下是本篇文章正文内容,下面案例可供参考 一、so加密解密的介绍 他是和jar包一同…

8年经验来面试20K的测试岗,连基础都不会,还不如招应届生。

公司前段时间缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。看简历很多都是3、4年工作经验&#xff0…

抽象编程——九章算术

九章算术 开篇,求最大公约数——辗转相减法 声明三个值 最大值 X 、最小值为 Y、商值 Z 用三个值解决辗转相减法 用最大值减去最小值得到商值,然后去掉原本的最大值,拿原本的最小值与商值作比较,得到第二个最大值与第二个…

Spring AOP介绍与使用

文章目录 1,AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2,AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给容器…

京东太猛,手写hashmap又一次重现江湖

说在前面 在40岁老架构师 尼恩的读者社群(50)中,最近有小伙伴拿到了一线互联网企业如京东、极兔、有赞、希音、百度、网易的面试资格,遇到一个很重要的面试题: 手写一个hashmap? 尼恩读者反馈说,之前总是听人说&#…

栈——“数据结构与算法”

各位uu们,好久不见!!!甚是想念!!! 好久没有更新我们的数据结构与算法专栏啦,最近小雅兰新学了很多知识,第一时间就想迫不及待地和C站的小伙伴们分享呢,下面&a…

LeetCode高频算法刷题记录3

文章目录 1. 搜索旋转排序数组【中等】1.1 题目描述1.2 解题思路1.3 代码实现 2. 有效的括号【简单】2.1 题目描述2.2 解题思路2.3 代码实现 3. 买卖股票的最佳时机【简单】3.1 题目描述3.2 解题思路3.3 代码实现 4. 环形链表【简单】4.1 题目描述4.2 解题思路4.3 代码实现 5. …

ChatGPT Plus 插件最全解读

前言: OpenAI放出大招,向所有ChatGPT Plus用户开放联网功能和众多插件,允许ChatGPT访问互联网并使用70个第三方插件。 本批第三方插件能够全方位覆盖衣食住行、社交、工作以及学习等日常所需,基本上能够扮演24小时私人助理的角色…

SaleSmartly聊天机器人如何帮助您的电商业务

从基于规则的机器人到虚拟助手,聊天机器人正在成为网络交互的标准。越来越多的企业正在使用它们来吸引客户、改善客户服务并增强用户体验。现在有非常多的软件也提供聊天机器人的帮助,比如SaleSmartly(ss客服),本文以它…

【包真】我的第一次webpack优化,首屏渲染从9s到1s

目录 前言 1.生产环境关闭productionSourceMap、css sourceMap 2.分析大文件,找出内鬼 3. 逐个包优化 TreeShaking 使用cdn加载第三方js 懒加载有间接依赖的包 moment.js的优化 还有进步空间? 最后 前言 本文基于vue2(虽然vue…

我的小实验项目:实现人体红外采集控制LED灯亮灭

从传感器电路图中找到红外感应,找到接口D2,可以看出,采集的信息从D2进入 从核心板电路图找到D2接口,发现引脚为PB8 并用相似的方法,找到用于代表有人无人的LED灯 在STM32CubeMx里设置 在Keil里设置代码 main.c&#x…

智慧物业如何整合生态资源,小程序技术或成为突破口

数字物业和智慧社区成为了当前数字化转型的热点领域。这些新兴技术的应用,不仅为业主提供了更加便捷、高效的服务,也为物业公司和城市管理带来了全新的运营模式和管理方式。 根据数据显示,截至2021年底,中国物业服务企业智慧化改造…

基于Java+SpringBoot+Vue前后端分离网上银行系统设计与实现(视频讲解)

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Element-ui中el-table展开行

类似这样的需求还记录不记录呢,其实我觉得是没必要的,但是想来还是记录一下吧,因为element-ui里面组件本身也很多,其中el-table的配置样式需求更是很多很多,所以这还是决定来记录一下,以后再有类似的需求也…

linux内核篇-输入输出系统(块设备,字符设备)

计算机系统的输入和输出系统都有哪些呢?有键盘、鼠标、显示器、网卡、硬盘、打印机、CD/DVD 等等,多种多样。但是对于操作系统来讲,却是一件复杂的事情,因为这么多设备,形状、用法、功能都不一样,怎么才能统…

SpringBoot中整合Swagger2接口文档

目录 1、maven依赖 2、swagger2 注解整体说明 2.1、请求类的描述 2.2、方法和方法参数的描述 2.3、方法的响应状态的描述 2.4、对象的描述 3、请求类的描述 3.1、Api:请求类的说明 3.2、示例: 4、方法和方法参数的描述 4.1、ApiOperation&#xff1a…

Linux 中的文件类型

目录 Linux文件类型说明 软链接 软链接特点 软链接工作过程 正常原文件a工作流程 文件a的软链接工作流程 硬链接 硬链接的特点 文件a的硬链接工作流程 软链接与硬链接的比较 测试软链接以及硬链接 1.进入根目录 2.创建test目录 3.进入test目录中,并创建a…

基于Redis的分布式锁,Redisson的简单使用和常用配置

介绍 Redisson是一个在Redis基础上实现的Java驻内存数据网格。Redisson提供了使用Redis的最简单最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中的放在处理业务逻辑上。 Redisson官方文档地址:https://githu…