当前位置: 首页 > article >正文

基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.8】

3.6 JSON文档示例在本节我们要熟悉数据交换标准JSON的优点。这个首字母缩写发音是“Jason”代表JavaScript对象标记JavaScript Object Notation。JSON的设计和XML如出一辙两者通常都是用来存储和交换人类可读的数据。很多流行网络应用提供的接口都提供JSON格式的数据。顾名思义JSON是一种源于JavaScript编程语言的数据格式。不过JSON本身是一种独立的语言包括R在内的很多现有编程语言都能够解析它。JSON已经变成用于提供网络数据的最流行的格式之一。因此对于本书的主题它是值得学习的。我们再从一个合成的例子开始然后更系统化地了解它的语法。在本章最后部分我们会学习JSON语法以及如何用R来访问JSON数据。图3-9的JSON代码存放了电影《夺宝奇兵》Indiana Jones前三集的一些基本信息。我们可以观察到JSON比XML的体量更轻。数据是保存在键值对key/value pair里的如name“Raiders of the Lost Ark”这样就不需要终止标签了。不同类型的括号大括号和方括号能够描述层级结构并区分无序和有序数据。和XML一样JSON数据结构在嵌套方面也可以任意复杂化。除了语法上的差别JSON和XML一样直观易懂尤其在像例子中的代码那样有缩进的情况下虽然对于合法JSON数据来说这样的缩进并不是必需的。3.7 JSON语法规则JSON语法很容易学习。我们只需要知道a如何使用括号划分数据的结构b键和值是如何识别和隔开的c有哪些数据类型以及如何使用它们。括号在划分文档结构的时候起了关键作用。正如我们在图3-9的范例数据中所见整个文档是包裹在大括号里的。这是因为indy movies是第一个对象它包含了放在一个数组也就是有序的序列里的三个电影记录。数组是用方括号框起来的。按顺序排列的每个电影也都是对象所以它们用大括号包起来。总体而言括号的用法如下1大括号“{”和“}”里包含对象。对象的用法很像XML里的元素能包含键值对的集合、其他对象或数组。2方括号“[”和“]”里包含数组。一个数组就是一个有序的对象或值的序列。实际数据存放在键值对中。键和值的规则如下1键放在双引号里数据则只有字符串类型的才能放在双引号里。JSON键值对的值部分支持一组不同的数据类型。如表3-4所列。JSON的语法就是这么多了。[1]从XML用户的角度来说要注意JSON不能做到的事情有不能添加注释不能区分缺失的值和空值没有命名空间也没有XML的DTD那样的内部校验语法。但是这从绝对意义上说并不会让JSON逊色于XML。它们只是基于不同的概念而已。JSON并不是一种标记语言甚至连文档格式都不算。它被设想为无版本的——世界上没有JSON 1.0这种东西——也不用指望它的语法有什么变化。它只是一种数据交换标准相当通用很多语言都能毫不费力地解析它。虽然在JSON数据里面没有太多可强调的东西但是有一些工具可以辅助人类读者访问JSON文档。在http://jsonformatter.curiousconcept.com/里的JSON Formatter格式化工具Validator校验工具就是网络上的很多工具之一这些工具能给输入的JSON数据自动产生缩进。这样能让JSON数据更容易阅读因为JSON数据经常是以无缩进无换行的形式出现的。这个工具还能帮助检查数据中的bug。如果你需要把XML转换成JSON数据可以考虑http://www.freeformatter.com/xml-to-json-converter.html或类似的工具。不过这样的转换并不是同构的需要设定一些规则来处理属性和命名空间等。在XML已经提供了流行的数据交换格式的情况下为什么JSON对于网络还是那么重要呢首先有一些技术特点让JSON比XML更优先。总体而言它更加轻量级这归功于它更简洁的语法以及它只允许有限的数据类型集合这个集合能兼容很多——如果不是大部分——已有的编程语言。关于兼容性JSON有另一个关键特性我们在本书只会讲解基本的JavaScript知识参见第6章而对于创建动态内容及用户和浏览器之间的交互JavaScript在互联网领域是主流的技术。JSON则是从根本上和JavaScript兼容的可以直接被解析为JavaScript对象。从实用角度看JSON貌似已经成为了最广泛使用的网络接口数据交换格式Twitter、YouTube还有很多或大或小的Web服务已经开始使用纯JSON接口了。[1] 这里有一些字符编码的细节问题我们没有深究。如果你想更深入一些细节在http://www.json.org/有更详细的信息。3.8 JSON和R的实践R有一套处理XML类型数据的标准工具集——XML组件而能够导入、导出和处理JSON数据的组件有好几个。其中第一个发布的组件是rjsonCouture-Beil 2013它在一些基于R的接口包里还在使用。不过当前更加完善的一个组件是RJSONIOTemple Lang 2013b我们在本节会用到它。最后我们还会讨论最近发布的组件jsonliteOoms and Temple Lang 2014它是在RJSONIO的基础上构建的改善了R对象和JSON字符串之间的映射。我们的讨论从查看RJSONIO组件开始。在它的当前版本1.0.3里组件提供了24个函数大部分通常不会直接调用。现在我们回头来看一下实际例子就是在indy.json文件里的数据。通过调用isValidJSON函数我们先来检查一下文档是否包含了合法的JSON数据看起来好像是这么回事。该组件的两个核心函数分别是fromJSON和toJSON。fromJSON读取JSON格式的内容并将其转换为R对象而toJSON则恰恰相反content是这个函数的主要参数。在我们的例子里indy.json是一个在工作目录中的文件但它也可以是通过getURL函数从网络上获取或者用readLines函数导入的一个字符串。fromJSON函数提供了其他几个有用的参数并且由于该组件有精心的维护其文档在R控制台通过fromJSON路径访问是很值得一读的。一个非常有用的参数是simplify它负责控制函数是否尝试把相同元素合并成向量。如果不合并每个元素就仍然是单独的列表元素。nullValue参数用于描述如何处理JSON的空值null。总体而言JSON的数据类型参见表3-4和R的数据类型小数、整数、字符、逻辑匹配得很好。不过空值在R里有所不同。NULL用来表示空对象NA用来表示缺失的值。因此nullValue参数有助于说明如何处理这种情况例如把它们转化为NA。下面的函数会把JSON数据结构映射为一个R的列表对象从现在开始我们可以用标准的R风格来处理数据了也就是说对列表进行分解或分组或把它或它的几部分强制转化为向量、数据框或其他结构。我们已经注意到当我们面对真实数据的时候一些貌似强大的函数如xmlToDataFrame其作用可能是有限的。数据框在表示简单的变量——值结构时是有用的但用于表示高度层级化的数据时就会变得非常复杂。相比之下JSON和XML可以表示复杂得多的数据结构。当JSON或XML数据加载到R中的时候用户经常要决定哪些信息子集是必要的并需要插入数据框中的。因此对于从JSON/XML到R的数据格式转换工作不可能有什么现成的通用函数。我们只能根据实际情况来创建子集的数据转换工具。在本书的例子里我们会需要尝试把前面的列表映射到一个数据框里面包括3个数据记录和几个变量。这里的问题在于actors和producers有好几个值。有一个办法是逐个变量提取信息最后再把它们合并到一起。这种方法如下所示这个方法首先把复杂的列表结构扁平化变成一个向量。recursive参数确保列表中的所有元素都被处理到。通过设置use.names参数为TRUE所有的键key名在扁平化后的向量里都是保留的所以我们可以用一个简单的正则表达式和stringr组件参见第8章的str_detect函数通过name来找到所有的原始键值对。这种方法也有其缺点。首先所有列表元素被强制转化为同一种模式大部分情况下产生的是字符向量。这对于name变量是有用的但对于years变量就不那么合适了。另外在需要提取很多变量的情况下这种分步骤的方法就比较烦琐。稍微好一点的办法是用sapply函数把[[操作符和变量名作为参数用来给元素分组相当于indy[[1]][[1]][[name]]、indy[[1]][[2]][[name]]以此类推这种方法相对于第一种方法的优点在于数据类型得以保留。最后要提取所有变量并直接把它们组织到一个数据框里我们必须考虑采样数据中某些变量不存在或在不同记录中结构不同的情况。例如制片人producers的数量有不同。进行如下的转换我们首先把列表中的元素扁平化。第二个命令就复杂一些。首先把每个列表元素变形把它们转化为数据框再利用plyr组件里的rbind.fill函数把这些数据框组合为单个数据框在此过程中要处理某些变量在某些数据框内不存在的情况。从结果可以看出我们还需要继续做一些数据整理的工作。例如注意制片人producer变量分裂成了好几个很明显导入JSON数据或对一般列表进行处理会是一件令人头疼的事。即使数据结构比上面的例子简单一些我们还是需要调用apply一类的函数。参考下面最后一个JSON导入的例子它来自一个简单的普通数据集我们可以通过下面的表达式把数据转化为普通的数据框我们通过fromJSON函数解析这段JSON数据并告诉解析器把null值设置为NA。为了在所有元素里保持列表结构我们还设置了simplify参数为FALSE。否则解析器会把第二个记录转换为一个字符向量这样data.frame这个apply函数就无效了。我们使用lapply函数把得到的列表转化为数据框并通过stringsAsFactorsFALSE参数让字符串保持不变。最后我们用一个对rbind的do.call调用把得到的数据框组合起来。结果看起来是可以接受的如果要进行反向转换也就是从R到JSON数据我们需要的函数是toJSON把JSON数据转换为R对象并不总能用现成的函数完成而需要对产生的对象进行一些后续处理但最近面世的jsonlite组件为这两套数据提供了更好的一致性。它是在RJSONIO组件的基础上创建的也提供了fromJSON和toJSON这两个主函数但是实现了不同的映射模式参见Ooms 2013。它有一套规则让来自外部源如某个接口的数据能够以保证一致性的方式进行转换。某些关于数组从JSON转化到R的重要惯例如下·如果数组里有至少一个值是字符型的整个数组都会编码为字符数据。·null值编码为NA。·true和false逻辑值在数值向量中分别编码为1和0在字符和逻辑向量中分别编码为TRUE和FALSE。还有一些惯例是关于向量、矩阵、列表和数据框的转换的。它们的文档见参考文献中的Ooms2013。对我们的目标来说关于JSON到R的转换规则最为重要因为这是常规数据抓取工作流程的一部分。请参考下面这一套从JSON数据到R对象的转换例子看一下前面提到的惯例是如何实际应用的jsonlite的一致性映射规则不仅能确保数据在向量层次被充分转换而且让JSON数据映射为R数据框的工作更加轻松。再利用jsonlite处理一下前面的普通人数据的例子你会发现JSON数据马上可以很方便地映射为预期的data.frame类型的R对象在《夺宝奇兵》的例子里Indy这个JSON数据也会被映射为一个列表。不过列表中唯一的元素是我们所需内容构成的数据框。我们可以直接把列表中的数据提取出来用于访问其中的变量简而言之只要是RJSONIO返回了一个列表而你需要数据框的情况下jsonlite在适当条件下都能够从JSON数据结构创建表格数据因为它的映射模式明确了表格数据存放在R里的基于列的方式和在JSON以及很多其他格式、语言或数据库里的基于行的方式参见Ooms 2013。当然jsonlite的功能并不能解决所有JSON到R转化的问题。不过在jsonlite里实现的规则设定有助于更一致地把JSON数据导入R。因此我们推荐在处理JSON数据的时候把该组件作为标准工具尽管它还处于早期版本。小结XML和JSON都是非常重要的网络数据交换标准因此会在本书的课程中多次出现例如在第4章和第14章的Twitter案例讨论里。了解如何处理这两种数据类型对网络数据采集的任务是大有帮助的。我们已经看到XML还可以作为很多其他格式的基础标准如GPX、KML、RSS、SVG、XHTML等。我们在网上遇到这些类型的数据时也能够用R把它们导入和处理。JSON是网络数据交换领域一种越来越流行的XML替代格式特别是在涉及网络服务/网络接口的情况下它的使用更为普遍。JSON脱胎于JavaScript可以被包括R在内的很多语言解析。延伸阅读相对本书对XML和JSON的基本介绍有很多教材有更深入的讲解。如果你喜欢网络相关的语言并打算深入Web开发领域你可以看看Harold和Means2004写的这本《XML in a Nutshell》或者Ray2003的相关文献。不过对于本书讲解的网络抓取工作来说更高深的XML知识并不是必要的。如果你想更深入JSON和JavaScriptJSON标准制定者Douglas Crockford2008写的这本《JavaScriptThe Good Parts》会是一本不错的入门书。如需快速了解它的全貌我们强烈推荐访问http://www.json.org/这个超棒的网站。习题1.描述XML和HTML之间的关系。2.把XML数据导入R有几种可行的方法每种方法的优点和缺点分别是什么3.在XML风格的文档中命名空间的用途是什么4.JSON语法的主要元素有哪些5.编写你能想出来最小的结构良好的XML文档。6.为什么XML里的符号需要用一个转义序列表示7.看一下3.2.2节的非法XML代码片段。里面的家庭结构可以如何在一个合法XML文档中表示从而让Jonathan能具备孩子和父亲的双重身份8.到你存放黑胶唱片、CD、DVD或蓝光碟的架子上随机找出三张盘。创建一个XML文档里面保存有关你选取的这几张盘的有用信息。9.自学Election Markup LanguageEMLa搞清楚EML的用途。b查找该语言的当前规格说明明确关键概念。c查找一个真实的EML文档把它加载到R里并把其中一些部分转化为本地数据结构。10.运用SVG文件。a处理ricon.svg文件给里面的图标加上一个黑框。重新定义图像的颜色、大小和字体。b把RSS图标重建为SVG文档。11.找出下面JSON片段的格式错误。12.将图3-1中的《James Bond》示例XML转化为合法的JSON。13.将图3-9中的《夺宝奇兵》示例数据转化为合法的XML。14.把indy.json文件导入R并提取所有budget键的值。15.XML文件potus.xml在本书配套材料中包含美国各届总统的个人传记。a使用DOM风格的XML解析器把该文档解析到名为potus的R对象中。检查源代码。occupation节点在字符串结尾含有多余的空格。找到合适的参数能让这些多余的空格在解析阶段被去掉。b该XML文件包含了salary节点。在解析文件的过程中丢弃它们。通过使用定制的处理器函数和字符串处理函数参见8.2节去掉occupation节点中的多余空格。c编写一个处理器用于提取hometown节点的值并将其传递给DOM风格的解析器。利用一个事件驱动的解析器重复上述过程并检查结果。[1] 本例是从Twitter流接口返回内容的缩减片段。

相关文章:

基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.8】

3.6 JSON文档示例在本节,我们要熟悉数据交换标准JSON的优点。这个首字母缩写(发音是“Jason”)代表JavaScript对象标记(JavaScript Object Notation)。JSON的设计和XML如出一辙,两者通常都是用来存储和交换…...

基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.7】

3.5 XML和R的实践现在让我们转到实际例子。XML文件在R会话中如何查看、如何导入、如何访问,以及如何把来自XML文档的信息转化为更便于进一步图形化或统计化分析的数据结构,例如常规的数据框(data frame)呢?正如我们前面…...

基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.6】

3.2.4 注释及字符数据XML的语法提供了一种对内容进行注释的方式在<&#xff01;--和-->之间的所有内容都不被当作XML代码的一部分&#xff0c;从而会被解析器所忽略。注释可以用在标签之间或元素内容之内&#xff0c;但不能在元素名或属性名的内部使用。在数据值中有较多…...

JDK 1.8 vs JDK 17:jvisualvm 安装配置全攻略(附Visual GC插件避坑指南)

JDK 1.8 vs JDK 17&#xff1a;jvisualvm 安装配置全攻略&#xff08;附Visual GC插件避坑指南&#xff09; 在Java开发的世界里&#xff0c;JVM性能调优一直是开发者进阶的必修课。而jvisualvm作为Oracle官方提供的免费性能分析工具&#xff0c;可以说是我们窥探JVM内部运行状…...

机器学习实践指南【1.0】

第1章 机器学习引言本章将介绍机器学习及其涵盖的多个话题。你将了解以下内容&#xff1a;什么是机器学习分类方法概述聚类方法概述模型的选择和正则化概述非线性方法概述监督学习概述无监督学习概述增强学习概述结构化预测概述神经网络概述深度学习概述1.1 什么是机器学习人类…...

极验滑动验证码自动化实战:背景提取、缺口定位与Playwright滑动模拟

滑动验证码自动化实战&#xff1a;背景提取、缺口定位与Playwright滑动模拟 一、前言 在爬虫自动化、Web端自动化测试、业务流程自动化等场景中&#xff0c;人机验证是保障系统安全的重要防线&#xff0c;也是自动化流程中最常见的“拦路虎”。极验&#xff08;Geetest&#…...

OpenAI Agents SDK 中文实战指南:从入门到多代理协作

1. 为什么你需要OpenAI Agents SDK 第一次接触这个SDK时&#xff0c;我正为一个客户设计智能客服系统。传统方案需要写大量if-else逻辑判断用户意图&#xff0c;而Agents SDK的多代理协作机制让我眼前一亮——就像组建了一支各有所长的AI团队&#xff0c;数学问题自动转交数学专…...

OpenClaw安全加固:Phi-3-vision服务接口的权限控制实践

OpenClaw安全加固&#xff1a;Phi-3-vision服务接口的权限控制实践 1. 为什么需要安全加固&#xff1f; 上周我在本地部署了Phi-3-vision多模态模型&#xff0c;通过OpenClaw实现了一个智能图片分析工作流。但当我用手机测试时&#xff0c;意外发现任何人都能通过公网IP访问我…...

测试小白福音:在快马上通过实战代码轻松攻克软件测试面试题

作为一名刚入门的软件测试新手&#xff0c;面对各种面试题时常常感到一头雾水。最近我发现了一个特别实用的学习方法 - 通过动手实践来理解测试理论。今天就来分享一下我的经验。 从基础概念入手 刚开始学习时&#xff0c;我连黑盒测试和白盒测试的区别都搞不清楚。后来发现&…...

国内网站 SEO 推广需要多长时间见效

国内网站 SEO 推广需要多长时间见效 在当今互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提升国内网站流量和品牌知名度的关键手段。很多人都会问&#xff0c;国内网站 SEO 推广需要多长时间才能见效&#xff1f;答案并不简单&#xff0c;因为这涉及…...

2026届必备的十大降重复率工具实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普 AIGC 检测系统&#xff0c;是特意为学术机构还有研究者用心设计的&#xff0c;它的主要…...

2026届学术党必备的十大降重复率工具推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下&#xff0c;各种各样的降AI工具纷纷出现&#xff0c;其关键功能是借助文本改写、句式重…...

Mac开发者必备:OpenClaw对接Qwen3-32B实现Xcode日志自动分析

Mac开发者必备&#xff1a;OpenClaw对接Qwen3-32B实现Xcode日志自动分析 1. 为什么需要自动化Xcode日志分析 作为一个长期与Xcode打交道的iOS开发者&#xff0c;我每天至少有2小时耗在编译错误和运行时日志的排查上。那些冗长的符号化崩溃日志、晦涩的Swift类型推断错误、以及…...

无感方波控制方案-脉冲启动与凸极性电机保护功能全面标题:‘无感方波方案-无抖动无反转启动...

无感方波方案&#xff0c;无感启动无抖动&#xff0c;无反转&#xff0c;启动方式为脉冲注入检测位置&#xff0c;换相方式为AD比较器&#xff0c;电机要有一定凸极性 &#xff0c;电机要有一定凸极性&#xff0c;电机要有一定凸极性&#xff01; 软件做有各种保护功能&#x…...

LabVIEW调用VisionPro框架代码:VisionPro labview 2020版

LabVIEW调用VisionPro框架代码 VisionPro labview 2020 最近在折腾LabVIEW和VisionPro的联动开发&#xff0c;发现这俩工业视觉领域的老搭档配合起来确实能玩出不少花样。今天咱们就聊聊怎么在LabVIEW 2020里直接调用VisionPro框架的代码&#xff0c;手头有工控机的朋友可以直接…...

如何为 3D 轮播文本添加可点击的 URL 链接

...

2026 AI行业封神之年:国产模型反超海外,AI短剧/视频/编程三大赛道掘金指南

2026年,AI行业正式迈入工业化落地的关键拐点,不再是技术圈的自嗨,而是全面渗透进写作、设计、影视、开发的各行各业。想抓住这波时代红利,又不想在数十个平台间反复横跳?https://n.kulaai.cn 给出了最优解——这个一站式AI模型聚合平台,直接把ChatGPT、Claude、Gemini、D…...

Windows下OpenClaw安装指南:对接Phi-3-vision-128k-instruct图文模型

Windows下OpenClaw安装指南&#xff1a;对接Phi-3-vision-128k-instruct图文模型 1. 为什么选择OpenClawPhi-3-vision组合 去年我在处理大量图文混排的学术资料时&#xff0c;发现传统自动化工具难以理解图片中的表格和公式。直到尝试将OpenClaw与多模态模型结合&#xff0c;…...

如何在phpMyAdmin中根据结果集生成图表_折线图与柱状图的可视化展示

phpMyAdmin 不支持折线图或柱状图&#xff0c;新版已移除 Charts 标签页&#xff0c;旧版仅依赖弃用的 jpgraph 库支持极简饼图&#xff1b;可行方案是导出 CSV 后用 Excel 或 Chart.js 等外部工具绘图。phpMyAdmin 本身不支持折线图或柱状图phpmyadmin 是一个数据库管理工具&a…...

AI设计抗体,成功率低怎么办?从David Baker新论文看RFdiffusion的三大局限与未来优化方向

AI抗体设计的三大技术瓶颈与突破路径&#xff1a;从RFdiffusion的实践启示 抗体药物市场正以惊人的速度扩张&#xff0c;预计2025年将达到4450亿美元规模。在这个充满机遇的领域&#xff0c;AI技术正在改写传统抗体开发的游戏规则。David Baker团队最新发表在bioRxiv的研究成果…...

如何高效使用付费墙绕过工具:Chrome扩展的完整实践指南

如何高效使用付费墙绕过工具&#xff1a;Chrome扩展的完整实践指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息获取日益重要的今天&#xff0c;付费墙成为许多用户访问优质…...

【需求改变与测试如何】

需求一旦修改&#xff0c;测试该如何进行呢&#xff1f; 最近面临的项目&#xff0c;经过很多次需求更改或者是前期没有需求&#xff0c;实际操作起来&#xff0c;让人很是头疼&#xff0c;恰到也看到大家也有着相同的讨论。 来源于微信公众号&#xff1a;测试论道学习&#x…...

萌新梦开始的地方

大家好&#xff0c;我是一名双非本科的大一新生&#xff0c;目前就读于计算机科学与技术这个专业&#xff0c;平时的兴趣爱好就是听听歌&#xff0c;健健身&#xff0c;这是我写的第一篇博客&#xff0c;我想以此来作为我学习编程的开始&#xff0c;同同时也以此来见证我在编程…...

实战演练:基于Next.js与快马AI接口,构建可交互的qoderwork官网演示版

今天想和大家分享一个实战项目&#xff1a;用Next.js模拟搭建qoderwork官网&#xff0c;并集成快马AI的代码生成能力。这个项目特别适合想学习全栈开发的朋友&#xff0c;既能练手Next.js&#xff0c;又能体验AI接口的集成。 项目整体设计思路 这个模拟官网主要包含两大核心功…...

obsidian claudian 插件配置使用minimax模型

首先&#xff0c;打开.claude/settings.json文件 sudo gedit .claude/settings.json参考官网配置 “ANTHROPIC_BASE_URL”: “https://api.minimaxi.com/anthropic”, “ANTHROPIC_AUTH_TOKEN”: “MINIMAX_API_KEY”, 等参数然后在claudian插件中在配置一遍&#xff0c;即可正…...

C++的std--ranges视图转换函数异常安全与资源清理在惰性求值中的处理

C的std::ranges视图转换函数异常安全与资源清理在惰性求值中的处理 现代C引入的std::ranges库为序列操作提供了声明式编程支持&#xff0c;其中视图转换函数&#xff08;如transform、filter等&#xff09;通过惰性求值优化性能。惰性求值机制与异常安全、资源清理的交互可能引…...

FinalBurn Neo终极指南:如何打造完美的复古游戏体验

FinalBurn Neo终极指南&#xff1a;如何打造完美的复古游戏体验 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo&#xff08;简称FBNeo&#xff09;是一款开源街机游戏模拟器&#xff0c;…...

CTFshow-PWN实战:利用NOP Sled绕过栈保护获取Shell

1. 理解NOP Sled技术原理 NOP Sled&#xff08;空操作雪橇&#xff09;是二进制漏洞利用中的经典技术&#xff0c;特别适合应对地址随机化&#xff08;ASLR&#xff09;或栈地址不确定的情况。它的核心思想就像滑雪场里的缓冲坡道——通过布置大量无操作指令&#xff08;NOP&am…...

10-项目规划测试代码审查实战

10-项目规划、测试、代码审查实战使用 Cursor 完成软件工程全流程&#xff1a;项目规划、测试驱动开发、代码审查与质量保障。一、AI 驱动项目管理概述 1.1 全流程覆盖 项目启动↓ 需求分析 → AI 辅助需求拆解↓ 技术方案 → AI 生成架构设计↓ 任务分解 → AI 生成任务清单↓…...

三相四桥臂APF的双闭环控制的simulink仿真图,用的是Matlab2018a,可以看出

三相四桥臂APF的双闭环控制的simulink仿真图&#xff0c;用的是Matlab2018a&#xff0c;可以看出&#xff0c;控制前电网电流THD值达24%&#xff0c;中线电流10A&#xff0c;经过PID控制以后降低到了5%以下&#xff0c;母线电压稳定在800v,中线电流降为2A 随仿真有参考文献最近…...