【AI学习】了解OpenAI o1背后的self-play RL:开启新的智能道路
在ChatGPT刚刚出来的时候,沐神关于ChatGPT有一段视频,只有几分钟,却是讲得极其透彻的一段。大概意思就是,过去的AI智能水平,比如五年前,大概相当于人类5秒钟思考的程度,包括自动驾驶,大概也就是人类5秒钟的水平,现在的ChatGPT,大概相当于专业人士一个小时的智能,比如回答一个问题、给一段描述然后绘制一幅图片等等。这里面呢,从发展来看,就是每几年我们会把一类模型的智能做到顶点,十年前,那时的线性模型,做到智能顶点,所谓智能顶点就是说更多的数据、更大的模型很难带来智能的提升了,然后大约五年前,卷积神经网络做到了智能的上限,然后现在就是基于transformer的智能还在增长进步,我们还在不停的探索,再然后等到了新的顶点,我们可能就需要探索再新的模型。总的来说呢,深度学习还处在一个早期的阶段,现在开始学习是一个很好的时期。
本周OpenAI发布OpenAI o1,据说能够达到研究生的水平了,这应该相当于专业人士更长时间,有可能是几十个小时甚至更长时间的智能了。
本周OpenAI发布OpenAI o1,又是一阵热闹。凑热闹,看了几篇文章:
《张俊林:OpenAI o1的价值意义及强化学习的Scaling Law》
《Kimi创始人杨植麟最新分享:关于OpenAI o1新范式的深度思考》
《LLM 新范式:OpenAI o1,self-play RL 和 AGI 下半场》
看起来,大模型的预训练,虽然还在继续,但是似乎有点快到智能顶点了,self-play RL,是开启了新的智能道路。
在大模型发展的当下,主要是几个方向:多模态,Sora开启了这波浪潮;小模型,以GPT-4o和 GPT-4o mini为代表;以及后训练,self-play RL。
GPT-4o和 GPT-4o mini
关于GPT-4o和 GPT-4o mini,之前看到微博@宝玉xp老师的一段总结,转载一下:
在大家都在翘首以盼 OpenAI 发布 GPT-5 的时候,OpenAI 却只是先后发布了 GPT-4o和 GPT-4o mini,甚至推理能力智能程度还不如当初的 GPT-4,但是这两个新模型不仅支持了多模态,而且参数都要小于 GPT-4,生成速度很快,推理成本也低了很多倍。
这背后,应该是因为新的 GPT-4o 模型用了更少但是质量更好的训练数据。GPT-4 之所以效果好成本高,是因为它用了几乎整个互联网公开的文本数据训练,所以它记住了相当多的内容,而这其中很多内容其实是重复的甚至是质量不高的数据。但是有了 GPT-4 这样强大的模型后,就可以从中提炼出高质量的合成的训练数据,然后用这些高质量的合成数据,去训练更小的模型,就像现在大家看到的 GPT-4o 和 GPT-4o mini。
可以预见未来的模型发展也会类似于 GPT-4 -> GPT-4o -> GPT-4o mini 这样的模式,先有一个大的模型,然后再用大的模型生成高质量的合成数据,用合成数据去训练小参数的模型,这些模型虽然能力不如大的模型,但是性价比极高。
Andrej Karpathy 的评价:
x.com/karpathy/status/1814038096218083497
LLM 模型的规模竞争正在加剧,但方向却是反向的!
我认为,我们将会见到一些非常小但思维非常出色且可靠的模型。甚至可以对 GPT-2 参数进行某种设置,使得大多数人会认为 GPT-2 很“聪明”。当前模型之所以如此庞大,是因为我们在训练过程中非常浪费——我们要求它们记住整个互联网的内容,令人惊讶的是,它们确实可以做到,比如背诵常见数字的 SHA 哈希值,或者记住非常生僻的事实。(实际上,LLM 在记忆方面非常出色,质上比人类好很多,有时只需要一次更新就能记住很多细节并保持很长时间)。试想一下,如果在闭卷考试中,根据互联网任意段落的前几句话要求你背诵整个段落。这就是当前模型的标准(预)训练目标。要做得更好很难,因为思维的展示在训练数据中与知识“纠缠”在一起。
因此,模型必须先变得更大,然后才能变小,因为我们需要它们(自动化地)帮助重构和塑造训练数据,使其成为理想的合成格式。
这是一个改进的阶梯——一个模型帮助生成下一个模型的训练数据,直到我们得到“完美的训练集”。当你用它来训练 GPT-2 时,它将会成为一个非常强大/聪明的模型,按照今天的标准。也许 MMLU 会低一些,因为它不会完美记住所有的化学知识。也许它偶尔需要查找一些信息以确保正确。
这种情况与特斯拉的自动驾驶网络非常相似。什么是“离线追踪器”(在 AI 日上展示的)?它是一种合成数据生成过程,通过利用之前较弱的模型(例如单帧模型或仅限于边界框的模型),在离线状态下进行 3D 加时间的重建过程,从而大规模生成更干净的训练数据,这些数据直接用于 3D 多摄像机视频网络。同样的过程也会在大语言模型(LLMs)中出现。
self-play RL
李广密的对话提到的一些观点:
“2018 年的时候 Lex Fridman 邀请 Ilya Sutskever 去 MIT 客座讲了一节课, Ilya 选的主题就是强化学习与 self-play ,他当时就认为,这是通往 AGI 路上最关键的方法之一。Ilya 用一句话概括了强化学习,非常准确:让 AI 用随机的路径尝试新的任务,如果效果超预期,那就更新神经网络的权重,使得 AI 记住多使用这个成功的事件,再开始下一次的尝试。”
“目前整个业界,无论硅谷,还是中文媒体,其实提及强化学习这一路线都还很少,换言之大家今天还不知道如何做。今天的强化学习是 self-play 强化学习,这条路线是最合理、天花板最高的。Anthropic 的 Claude-Sonnet ,从 3 迭代至 3.5 后,我们能看到它的代码和数学能力提升很大,就是强化学习带来的。
用 self-play 的方法提升模型的逻辑推理能力是接下来最重要的范式,也是一个最核心的变化。
多模态、 10 万卡集群、强化学习这三条路线并不矛盾,可以并行。但公司如果资源有限,就需要下注在最相信的一条路径上。假如我是一个 AI 公司的 CEO ,我肯定会用 200%的资源押注于强化学习这一路线。这是目前最有机会走向 AGI 的路线。”
“一个更关键的问题:代码和数学在未来两年可以确定性变强,但是否能够泛化到其他领域,目前还没有被证明。
AlphaGo 下棋很厉害,但其他领域并不行。计算机视觉在人脸识别领域很厉害,但其他领域也不行。AI 最重要的是通用和泛化性。如果, AI 不能泛化到其他领域,那这一轮技术天花板会受限。但即便不能泛化,我们借助大语言模型在各个垂直领域做强化学习,也可以在很多场景中找到最优解,那下限也会替换传统机器学习那一套。”
“历史上神经网络和强化学习一直是交替发展的。每一个神经网络变强后,大家都会提到强化学习。
LLM 是利用现有数据,而强化学习更多强调长距离探索。用户给模型一个粗颗粒度的目标,它就可以自己探索达到这一目标的路径。强化学习的核心是在探索和利用之间做权衡,LLM 在利用现有知识上已经做到很极致了,但探索新知识方面并没有做很多。强化学习的引入是为了让大语言模型能够探索如何进一步提升逻辑推理。”
“传统强化学习与今天的 self-play 强化学习相比,最大的变量和区别是强化学习的主体 agent 计算量增加了 3-4 个数量级。
最早的 AlphaZero 是一个千万参数的神经网络,和今天的语言模型相差 3-4 个数量级。RLHF 的目的不是获取机器智能,而是人机对齐,使得 AI 能够更像人,但不能超越人成为超级智能。有一个简单的例子:RLHF 像人类一样,更喜欢好理解的东西,而不是喜欢逻辑更严密的内容。而 self-play 强化学习的目标是如何提升逻辑能力。”
“语言模型是做强化学习的必要条件,重要的点在于我们要有很聪明的模型,采用能力做 self-play 、探索。
就像一个人如果没有一定的能力,做自我探索的能力也不强。这个标准可能是至少迈过 GPT-4 ,或者 Claude-3.5 这一水平。如果模型能力不足,做 self-play 的效果会很差。如果想做好强化学习,还是需要经过预训练这个必经之路。但是,强化学习又是一个预训练确定的未来。研究 AI 的人都会意识到:预训练最终一定会走向强化学习。”
“ self-play 这个方法的本质是用 AI 无限的算力来补足数据不足的短板。数据不够,算力来凑,这也符合当下 AI 的一个优势。一个好的 self-play 能够合成大量的高质量数据,甚至比人类历史上见过的棋局、游戏的数量更多。用这个数据量,也有可能达到超级智能。比如, AlphaGo 下棋、 Dota 游戏中, AI 都探索出了与人类不一样的玩法,也战胜了很多金牌选手。有一个循环:self-play 合成的数据用于预训练,激发更大预训练的计算需求,这也就相当于,整个大语言模型的预训练变成了强化学习系统中的一环。强化学习变成了更核心的系统,这样的循环才有可能更好地走下去。”
“强化学习在语言模型中的思路,本质上是 inference time 换 training time 。这是为了解决模型向上 scale up 时,暂时的边际收益递减现状。这势必也会对 scaling law 带来很多新变化。或者我们可以认为,传统的 scaling law 无效了,而新的 scaling law 要开始了。”
“强化学习的思路本质是用 inference time 换 training time 以解决边际收益递减问题。我们之前算过一笔账,对于 GPT-4 或 Claude-3.5 这种水平的模型,如果要合成 1T 高质量推理数据,需要 6 亿美金。如果合成 10T 高质量推理数据,需要 60 亿美金,这个量级很高。但是,与预训练不同的是, inference 对单张卡的性能,以及集群规模的性能要求相对低一些。不一定非要用最顶尖的卡,或 3-10 万卡的集群。分布式的集群也可以用来做强化学习的 inference 。
新范式下, scaling law 依然存在,计算成本还是会大幅提升以提升模型能力,但提升并不一定代表模型参数量的快速增加。”
“但语言模型与强化学习是一个乘积关系,是 A 乘以 B 的关系。如果 A 的数值不高,乘积的数值还是不会高。”
“Cursor 火的核心逻辑,还是它背后的 Claude-3.5-Sonnet 的代码能力变强了。就像刚刚提到的,有效代码从几十行增加至几百行。Claude-3.5-Sonnet 是这个行业类似于 iPhone 的摄像头的底座,而 Cursor 是基于摄像头上的拍照工具。今天的 Cursor 定位,依旧是供专业群体使用的工具,还很早期。”
杨植麟的一些观点:
“两个公认的大模型进化瓶颈:数据瓶颈——数据不够用了;以及算力瓶颈——3.2万张卡已是目前的天花板。
但o1模型似乎找到了新的出路,它采用强化学习,试图通过更深入的思考和推理来克服这些限制,提高数据质量和计算效率。”
“大家如果去看o1的话,中间会生成很多的思考。这个思考到底有什么作用呢?核心也是生成数据的过程。因为这些数据本身在世界上是不天然存在的,比如一个很厉害的数学家证明了一个新的定理,或者解了什么样的数学题,或者参加了什么竞赛解了数学题,只会把答案写出来,不会把思考的过程写出来,所以它是天然不存在这样的数据。
但是现在如想让AI把人脑里面本身的思考过程给生成出来,然后通过去学习这个思考的过程,得到更好的泛化。”
“这个Scaling现在也发生了一些变化,原来大部分Scaling发生在训练阶段,就是我找一堆数据让它训练。但是现在大部分的计算,或者说越来越多的计算会转移到推理阶段,因为现在要思考,所以思考的过程本身也是需要花算力的,本身也是可以被规模化的东西,就是能逐渐往推理侧+更多的算力。这个也有道理,比如今天想让一个人去完成更复杂的任务,肯定是需要花更长时间,不可能期待他一两秒钟就能证明黎曼猜想。要证明黎曼猜想,有可能要想好几年。”
“这一代AI技术的上限很核心还是文本模型的能力上限,如果文本模型能持续提升智商,就是能做越来越复杂的任务。它有点像学习的过程,一开始能做小学的题,逐渐能做中学、大学的,现在有一些博士的知识和推理能力都具备。”
张俊林的一些观点:
“指望靠图片、视频这类新模态数据大幅提升大模型智力水平是不太可能的,尽管确实能拓展更丰富的多模态应用场景,但这类数据弥补的更多是大模型对外在多模态世界的感知能力,而不是认知能力。”
“OpenAI o1 的做法本质上是 COT 的自动化。
我们知道,通过 COT 把一个复杂问题拆解成若干简单步骤,这有利于大模型解决复杂逻辑问题,但之前主要靠人工写 COT 来达成。从用户提出的问题形成树的根结点出发,最终走到给出正确答案,可以想像成类似 AlphaGo 下棋,形成了巨大的由 COT 具体步骤构成的树形搜索空间,这里 COT 的具体步骤的组合空间是巨大的,人写的 COT 未必最优。如果我们有大量逻辑数据,是由 <问题,明确的正确答案> 构成,则通过类似 AlphaGo 的 Monte Carlo Tree Search(MCTS)搜索 + 强化学习,确实是可以训练大模型快速找到通向正确答案的 COT 路径的。
而问题越复杂,则这个树的搜索空间越大,搜索复杂度越高,找到正确答案涉及到的 COT 步骤越多,则模型生成的 COT 就越复杂,体现在 o1 的速度越慢,生成的 COT Token 数越多。很明显,问题越复杂,o1 自己生成的隐藏的 COT 越长,大模型推理成本越高,但效果最重要,成本其实不是问题,最近一年大模型推理成本降低速度奇快,这个总有办法快速降下去。
从上面 o1 的做法可以知道 Prompt 工程会逐渐消亡。”
“Agent 属于概念火但无法实用化的方向,主要原因就在于基座模型的复杂推理能力不够强。如果通过基座模型 Plan 把一个复杂任务分解为 10 个步骤,哪怕单个步骤的正确率高达 95%,要想最后把任务做对,10 个环节的准确率连乘下来,最终的正确率只有 59%,惨不忍睹。”
“为啥逻辑推理能力最难提升?因为能体现这方面的自然数据(代码、数学题、物理题、科学论文等)在训练数据中比例太低,自然大模型就学不好,尽管通过不断增加数据,能增加逻辑推理方面数据的绝对数量,但因为占比太少,这方面提升的效果和增加的总体数据规模就不成比例,效果也不会太明显,就体现在逻辑推理能力 Scaling law 看上去的放缓。这是很自然的。这也是为何现在为了提高模型逻辑能力,往往在预训练阶段和 Post-training 阶段,大幅增加逻辑推理数据占比的原因,且是有成效的。
所以目前大模型的核心能力提升,聚焦到不断通过合成数据等方式构造更多比例的逻辑推理数据上来。但是大部分逻辑推理数据的形式是 < 问题,正确答案 >,缺了中间的详细推理步骤,而 o1 本质上是让大模型学会自动寻找从问题到正确答案的中间步骤,以此来增强复杂问题的解决能力。
OpenAI o1 提到了关于 RL 在训练和推理时候的 Scaling law,并指出这与预训练时候的 Scaling law 具有不同特性。很明显,如果 o1 走的是 MCTS 搜索技术路线,那么把 COT 拆分的越细(增加搜索树的深度),或提出更多的可能选择(节点的分支增多,就是说树的宽度越宽),则搜索空间越大,找到好 COT 路径可能性越大,效果越好,而训练和推理的时候需要算力肯定越大。看上去有着效果随着算力增长而增长的态势,也就是所谓的 RL 的 Scaling law。这其实是树搜索本来应有之义,我倒觉得把这个称为 RL 的 Scaling law 有点名不副实。”
一些数字
现在最好的模型是 600-700B 总参数的 MOE 模型,这也是单台 H100 server 可以放得下的参数量。今天,我们还没有看到向上再 scale 3-5 倍、达到 2-3T 总参数的模型
从数据上看,很多公司现在都可以达到 15-20T 高质量文本数据量,每个月也可以再增加约 2T 的新数据。但很难倍数级增加数据至 50-100T 。
Llama 3 的训练是用 15 万亿个Token训练的,而 Llama 2用了2 万亿个Token。
算力角度,英伟达的 H100 现在可以做到 3.2 万张卡、充分互联的单一集群。
H100 这一代 GPU ,充分互联可以做到 3.2 万卡。
计算机里面很多技术也都是AI的前置节点,比如说要达到10的25次方FLOPs(浮点数运算)的运算才能得到足够聪明的模型。
其他一些观点
“未来可能会出现一种任务引擎( Task Engine ),而今天的 Google 是搜索引擎( Search Engine )。任务引擎可能会是新一代的 Google 。Google 提供的是信息,任务引擎是完成任务,而完成任务是这一轮技术革命下最核心的主题。”
“移动互联网与今天的大语言模型作对比很有意思,可以画一个图,主线可以有一条明线、一条暗线。移动互联网的明线是全球新增了 40-50 亿移动用户,而暗线是获得了用户行为数据做推荐。过去十年,没有做推荐的公司都没有做得大。移动互联网有几个关键的特点:大屏幕、摄像头、 GGPS,每个特点都诞生了大公司。因为大屏幕摄像头,诞生了抖音、TikTok ,而因为 GPS,诞生出了 Uber 、滴滴。今天的 AI ,明线还是 scaling law ,虽然在发生范式的变化,但是背后的核心还是算力。大家对这条明线是有共识的。而暗线具体代表了什么?
在先前的新时代摩尔定律中,我们当时讨论的暗线是成本,但今天变成了 self-play 强化学习。大家低估了强化学习的重要性,甚至,目前没有做强化学习的公司,下一轮浪潮中无法继续跑下去。今天,大语言模型的关键能力,如果让我做重要性的排序,会是:1)编程,2)多模态,3) 数学,4) Agent 。甚至还有一些其它的领域,比如个性化、可靠性等。和我们先前的观点一致。无论观察主线暗线,还是观察关键能力,都还在渐进提升的阶段。而应用也是随着渐进式提升的过程中逐渐解锁的。”
“这一代AI最大的变量,还是在生产力端。”
“现在数据越来越多会成为一个变量,就是怎么去使用数据,或者说获得用户的反馈,其实会越来越多成为这里面很重要的东西。”
相关文章:
【AI学习】了解OpenAI o1背后的self-play RL:开启新的智能道路
在ChatGPT刚刚出来的时候,沐神关于ChatGPT有一段视频,只有几分钟,却是讲得极其透彻的一段。大概意思就是,过去的AI智能水平,比如五年前,大概相当于人类5秒钟思考的程度,包括自动驾驶,…...

Java项目实战II基于Java+Spring Boot+MySQL的车辆管理系统(开发文档+源码+数据库)
目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…...

IPsec-VPN中文解释
网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip a…...

Ubuntu 22.04 源码下载、编译
Kernel/BuildYourOwnKernel - Ubuntu Wikihttps://wiki.ubuntu.com/Kernel/BuildYourOwnKernel 一、查询当前系统内核版本 rootubuntu22:~# uname -r 5.15.0-118-generic 二、查询本地软件包数据库中的内核源码信息 rootubuntu22:~# apt search linux-source Sorting... Do…...

【深度学习实战—11】:基于Pytorch实现谷歌QuickDraw数据集的下载、解析、格式转换、DDP分布式训练、测试
✨博客主页:王乐予🎈 ✨年轻人要:Living for the moment(活在当下)!💪 🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】 目录 😺〇、仓库…...

基于SpringBoot+WebSocket实现地图上绘制车辆实时运动轨迹图
实现基于北斗卫星的车辆定位和轨迹图的Maven工程(使用模拟数据),我们将使用以下技术: Spring Boot:作为后端框架,用来提供数据接口。Thymeleaf:作为前端模板引擎,呈现网页。Leaflet…...

嵌入式入门小工程
此代码基于s3c2440 1.点灯 //led.c void init_led(void) {unsigned int t;t GPBCON;t & ~((3 << 10) | (3 << 12) | (3 << 14) | (3 << 16));t | (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);GPBCON t; }void le…...

hackmyvm靶场--zon
环境 攻击机kali 靶机 未知 主机探测 因为在同一个局域网内使用ARP协议探测存活主机 靶机为192.168.56.128 端口探测 常见的80和22端口 那么一定是寻找web漏洞拿shell了 后台扫描 后台扫描常用dirsearch和gobuster,有时候小字典可能不太行,可以尝试换个大点…...
atcoder abc372 启发式合并, dp
A delete 代码: #include <bits.stdc.h>using namespace std;int main() {string s;cin >> s;for(auto t: s) if(t ! .) cout << t; } B 3 ^ A 思路:三进制转换,可以参考二进制,先把当前可以加入的最大的3的…...

CentOS Stream 9部署MariaDB
1、更新系统软件包 sudo dnf update 2、安装MariaDB软件包(替代mysql) sudo dnf install mariadb-server 3、安装MariaDB服务 sudo systemctl enable --now mariadb 4、检查MariaDB服务状态 sudo systemctl status mariadb 5、配置MariaDB安全性 sudo my…...

【Leetcode:997. 找到小镇的法官 + 入度出度】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

大数据Flink(一百二十三):五分钟上手Flink MySQL连接器
文章目录 五分钟上手Flink MySQL连接器 一、创建数据库表 二、创建session集群 三、源表查询 四、窗口计算 五、结果数据写回数据库 五分钟上手Flink MySQL连接器 MySQL Connector可以将本地或远程的MySQL数据库连接到Flink中&#x…...
SYN Flood攻击原理,SYN Cookie算法
SYN Flood是一种非常危险而常见的Dos攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,SYN Cookie就是其中最著名的一种。 1. SYN Flood攻击原理 SYN Flood攻击是一种典型的拒绝服务(Denial of Service)攻击。所谓的拒绝服务攻击就是通过进…...
计组(蒋)期末速成笔记1
蒋本珊计组期末不挂科复习笔记 第1章 概论 第2章 数据的机器层次表示 第3章 指令系统 第4章 数值的机器运算 第5章 存储系统和结构 第6章 中央处理器 第7章 总线 第1章 概论 蒋本珊计组期末不挂科复习笔记知道你快考试了,莫慌! 第1章 概论1.1 冯诺依曼计…...
mysql学习教程,从入门到精通,SQL 更新数据(UPDATE 语句)(17)
1、SQL 更新数据(UPDATE 语句) SQL UPDATE 需要指定要更新的表、要修改的列以及新值,并且通常会通过WHERE子句来指定哪些行需要被更新。下面是一个简单的示例,说明如何使用UPDATE语句。 假设我们有一个名为employees的表…...

【吊打面试官系列-MySQL面试题】MyISAM 表格将在哪里存储,并且还提供其存储格式?
大家好,我是锋哥。今天分享关于【MyISAM 表格将在哪里存储,并且还提供其存储格式?】面试题,希望对大家有帮助; MyISAM 表格将在哪里存储,并且还提供其存储格式? 每个 MyISAM 表格以三种格式存储…...
常用的图像增强的算法之间的联系和区别
Unsharp Mask (USM)、拉普拉斯算子、直方图均衡化和伽马增强是图像处理中常见的技术,但它们在原理、作用和应用场景上有显著不同。以下是对这些方法的详细比较: 1. Unsharp Mask (USM) 原理:USM 是通过对图像进行模糊处理(如高斯…...

SpringBoot+Vue考试系统免费分享
源码说明: 这是一个开源的SpringBoot与Vue开发的在线考试系统。经过站长测试,系统稳定可用,允许重复考试。 环境: 需要安装的环境包括Node.js v14.21.3、JDK8、Maven以及MySQL 5.7。 前端部署教程: 执行 npm inst…...
音视频入门基础:FLV专题(1)——FLV官方文档下载
一、FLV简介 Flash Video(简称FLV),是一种网络视频格式,用作流媒体格式,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上有效使用等缺点。 一般FLV文件包在SW…...

使用c#制作一个小型桌面程序
封装dll 首先使用visual stdio 创建Dll新项目,然后属性管理器导入自己的工程属性表(如果没有可以参考visual stdio 如何配置opencv等其他环境) 创建完成后 系统会自动生成一些文件,其中 pch.cpp 先不要修改,pch.h中先导入自己需…...

Clip studio paint百度云下载:附安装包+教程
首先补一个介绍,Clip Studio Paint(即CSP):这是一款专业的绘画和漫画创作软件,拥有丰富的绘画工具,适合漫画创作者使用。其界面友好,工具齐全,能够满足漫画创作中的各种需求。 用过…...

从Yargs源码学习中间件的设计
yargs中间件介绍 yargs 是一个用于解析命令行参数的流行库,它能帮助开发者轻松地定义 CLI(命令行接口),并提供参数处理、命令组织、help文本自动生成等功能。今天我们来学习一下它对中间件的支持。 中间件的API详细信息࿰…...

高级I/O知识分享【epoll || Reactor ET,LT模式】
博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,接口 epo…...

Matlab 的.m 文件批量转成py文件
在工作中碰到了一个问题,需要将原来用matlab gui做出来的程序改为python程序,因为涉及到很多文件,所以在网上搜了搜有没有直接能转化的库。参考了【Matlab】一键Matlab代码转python代码详细教程_matlab2python-CSDN博客 这位博主提到的matla…...

【软考】传输层协议TCP与UDP
目录 1. TCP1.1 说明1.2 三次握手 2. UDP3. 例题3.1 例题1 1. TCP 1.1 说明 1.TCP(Transmission Control Protocol,传输控制协议)是整个 TCP/IP 协议族中最重要的协议之一。2.它在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的…...

Arthas dashboard(当前系统的实时数据面板)
文章目录 二、命令列表2.1 jvm相关命令2.1.1 dashboard(当前系统的实时数据面板) 二、命令列表 2.1 jvm相关命令 2.1.1 dashboard(当前系统的实时数据面板) 使用场景: 在 Arthas 中,dashboard 命令用于提…...

微服务保护之熔断降级
在微服务架构中,服务之间的调用是通过网络进行的,网络的不确定性和依赖服务的不可控性,可能导致某个服务出现异常或性能问题,进而引发整个系统的故障,这被称为 微服务雪崩。为了防止这种情况发生,常用的一些…...

TomCat乱码问题
TomCat控制台乱码问题 乱码问题解决: 响应乱码问题 向客户端响应数据: package Servlet;import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servl…...

依赖库查看工具Dependencies
依赖库查看工具:Dependencies Dependencies 是一款 Windows 平台下的静态分析工具,用来分析可执行文件(EXE、DLL 等)所依赖的动态链接库(DLL)。它可以帮助开发者和系统管理员快速查找程序在运行时可能缺少的…...

Kafka 下载安装及使用总结
1. 下载安装 官网下载地址:Apache Kafka 下载对应的文件 上传到服务器上,解压 tar -xzf kafka_2.13-3.7.0.tgz目录结果如下 ├── bin │ └── windows ├── config │ └── kraft ├── libs ├── licenses └── site-docs官方文档…...