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

【iOS】小蓝书学习(七)

小蓝书学习(七)

  • 前言
  • 第47条:熟悉系统框架
  • 第48条:多用枚举块,少用for循环
  • 第50条:构建缓存使选用NSCache而非NSDictionary
  • 第51条:精简initialize与load的实现代码
  • 第52条:别忘了NSTimer会保留其目标对象

前言

虽然不使用系统框架也可以写出OC代码,但几乎没有人这么做,即便我们经常使用的NSObecj这个标准的根类,也是属于Foundation框架,而非语言本身。

第47条:熟悉系统框架

将一系列代码封装成动态库,并在其中放入描述其接口的头文件,这样做出来的东西就是框架。

有时为iOS平台构建的第三方框架所使用的是静态库,这是由于iOS应用程序中不允许在其中包括动态库。这些东西严格意义上来说不是真正的框架。

开发者碰到的主要框架就是Foundation,例如NSObject,NSArrayNSDictionary 等类都在其中。该框架中的类都是NS这个前缀,同时这个框架也是OC应用程序的“基础”。

CoreFoundation
这个框架与Foundation框架相伴,从技术上来讲,这个框架并不是一个OC框架,但是它是编写OC应用程序时所应熟悉的重要框架,Foundation框架中的许多功能,都可以在这个框架中找到对应的C语言API。
无缝桥接这个功能可以把CoreFoundation中的C语言数据平滑的转化为Foudation中的OC对象,例如Foundation中的NSStringCoreFoundation中的CFString

除了这些数据库以外,还有很多系统库,下面这张图片进行展示(包括但不限于这些):
在这里插入图片描述
通过上面这几个系统库可以看出,OC很重要的一个特点就是,经常需要使用底层的C语言API。用C语言实现API的优点是:可以绕过OC的运行期系统,从而提升执行速度

要点

  • 许多系统框架都可以直接使用,其中最重要的是FoundationCoreFoundation,这两个框架提供了构建应用程序所需的许多核心功能。
  • 很多常见任务都能用框架来做,比如音频与视频处理、网络通信、数据管理等
  • 请记住:用纯C语言所写的框架和OC写成的一样重要,如果想成为优秀的OC开发者,对于C语言的核心概念应该熟悉掌握。

第48条:多用枚举块,少用for循环

在编程中经常需要列举collection,当前的OC语言中有许多办法来实现这个功能。通常有标准的C语言循环、OC1.0中的NSEnumerator以及OC2.0中的快速枚举,在引入块这一概念之后,还有几种新的方法。

for循环

for (int i = 0; i < objects.count; i++) {/* ... */ 
}

使用OC1.0中的NSEnumerator遍历

NSEumerator是一个抽象基类,其中只定义了两个方法:

- (NSArray*) allobjects
- (id) nextObject//这个方法比较关键,每次调用这个方法,内部都会更新,知道末端下一个返回nil,表示达到了末端。

这里笔者以遍历数组为例:

NSArray* anArray = /* ... */
NSEumerator* enumerator = [anArray objectEnumerator];
id object;
while ((object = [enumerator nextobject]) != nil) {/* ... */
}

快速遍历

快速遍历是使用for...in来实现。具体操作为:

NSArray* arr = /* ... */
for(id object in arr) {/* ... */
}

基于块的遍历方式
在当前OC语言中,最新引入的一种做法就是基于块来遍历。NSArray中定义了下面这个方法,他可以实现基本的遍历功能:

-(void) enumerateObjectsUsingBlock:(void(^)(id obj, NSUInteger idx, BOOL * _Nonnull stop))block

当我们遍历字典与set的时候:

NSDictionary* aDictionary = /* ... */aDictionary enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {}

使用该方法来遍历的另一个好处就是,能够更改块的方法签名,以免进行类型转换操作,从效果上来讲,相当于把本来要执行的类型转换操作交给块方法签名来做。

在这里插入图片描述
使用这个方法也可以执行反向遍历。数组、字典、set都实现了前述方法的另一个版本,令开发者可以向其转入“选项掩码”
在这里插入图片描述
要点:

  • 遍历collection有四种方式。最基本的办法是 for循环,其次是NSEnumerator遍历法及快速遍历法,最新、最先进的方式则是“块枚举法”。
  • “块枚举法”本身就能通过GCD 来并发执行遍历操作,无须另行编写代码。而采用其他遍历方式则无法轻易实现这一点。
  • 若提前知道待遍历的collection含有何种对象,则应修改块签名,指出对象的具体类型。

第50条:构建缓存使选用NSCache而非NSDictionary

当我们开发应用程序时,需要从网络上下载图片时,我们通常会选择将图片保存到字典中,但是,其实在Foundation框架下,有一个类NSCache更好,它是该框架专门为处理这种任务而设计的。

NSCache胜过NSdictionary的地方在于,当系统资源即将耗尽的时候,它可以自动删减缓存。如果使用普通的字典,就要自己编写挂钩,在系统发出“低内存”通知手动删减缓存。而NSCache则会自动删减,由于其是foundation框架的一部分,所以与开发者相比,他能在更深的层面插入挂钩。同时,NSCache会删减“最久未使用的”对象。

NSCache并不会“拷贝”键,而是会“保留”它。此行为用NSDictionary也可以实现然而需要编写相当复杂的代码。NSCache对象不拷贝键的原因在于:很多时候,键都是由不支持拷贝操作的对象来充当的。因此,NSCache不会自动拷贝键,所以说在键不支持拷贝操作的情况下,该类用起来比字典更方便。另外,NSCache是线程安全的而NSDictionary则绝对不具备此优势,意思就是:在开发者自己不编写加锁代码的前提下多个线程便可以同时访问NSCache。对缓存来说,线程安全通常很重要,因为开发者可能要在某个线程中读取数据,此时如果发现缓存里找不到指定的键,那么就要下载该键所对应的数据了。而下载完数据之后所要执行的回调函数,有可能会放在背景线程中运行,这样的话,就等于是用另外一个线程来写入缓存了。

要点

  • 实现缓存时应选用NSCache而非NSDictionary对象。因为NSCache可以提供优雅的自动删减功能,而且是“线程安全的”,此外,它与字典不同,并不会拷贝键。
  • 可以给NSCache对象设置上限,用以限制缓存中的对象总个数及“总成本”,而这些尺度则定义了缓存删减其中对象的时机。但是绝对不要把这些尺度当成可靠的“硬限制”它们仅对NSCache 起指导作用。
  • NSPurgeableDataNSCache搭配使用,可实现自动清除数据的功能,也就是说,当NSPurgeableData对象所占内存为系统所丢弃时,该对象自身也会从缓存中移除。
  • 如果缓存使用得当,那么应用程序的响应速度就能提高。只有那种“重新计算起来很费事的”数据,才值得放入缓存,比如那些需要从网络获取或从磁盘读取的数据。

第51条:精简initialize与load的实现代码

load方法
原型:+ (void) load

对于加入运行期系统中的每个类及分类来说,必定会调用此方法,而且仅调用一次,执行顺序为:先调用类再调用分类。
在执行load方法时,整个运行期系统都处于“脆弱状态”。在执行子类的load方法之前必定会先执行所有超类的load方法。故而在load方法中使用其他类是不安全的。
这时候我们可以使用initialize方法。

initialize方法
对于每个类来说,该方法会在程序首次用该类之前调用,且只调用一次。他与load调用有几个微妙区别:

  • 惰性调用:只有当程序用到了相关的类时,才会调用。等于说应用程序不用先把每个类的initialize都执行一遍。
  • 运行期系统在执行该方法时,处于正常状态。
  • initialize方法与其他消息一样,如果某个类未实现它,而期超类实现了,那么就会运行超类的实现代码。

要点

  • 在加载阶段,如果类实现了load方法,那么系统就会调用它。分类里也可以定义此方法,类的load方法要比分类中的先调用。与其他方法不同,load方法不参与覆写机制。
  • 首次使用某个类之前,系统会向其发送initialize消息。由于此方法遵从普通的覆写规则,所以通常应该在里面判断当前要初始化的是哪个类。
  • loadinitialize方法都应该实现得精简一些,这有助于保持应用程序的响应能力,也能减少引入“依赖环”的几率。
  • 无法在编译期设定的全局常量,可以放在initialize方法里初始化。

第52条:别忘了NSTimer会保留其目标对象

计时器是一种很方便也很有用的对象。Foundation框架中有一个NSTimer,开发者可以指定绝对的日期与时间,以便到时间可以执行任务。但是计时器会保留目标对象,所以反复的执行任务通常会导致应用程序出现问题。下面展示一段代码:
在这里插入图片描述
这样写代码会存在一个保留环的问题,下面展示一个图来演示这种情况:
在这里插入图片描述
那么这个问题我们可以通过块来解决。虽然计时器当前并不直接支持块,但是可以用下面这段代码来解决问题:

相关文章:

【iOS】小蓝书学习(七)

小蓝书学习&#xff08;七&#xff09; 前言第47条&#xff1a;熟悉系统框架第48条&#xff1a;多用枚举块&#xff0c;少用for循环第50条&#xff1a;构建缓存使选用NSCache而非NSDictionary第51条&#xff1a;精简initialize与load的实现代码第52条&#xff1a;别忘了NSTimer…...

基于第三方SDK的Windows平台全功能RTMP|RTSP直播播放器深度解析

一、引言 在当今数字化时代&#xff0c;直播技术的应用场景不断拓展&#xff0c;从娱乐直播到教育、医疗、工业等多个领域&#xff0c;都对直播播放器的功能和性能提出了更高的要求。本文将介绍一款基于第三方SDK实现的全功能直播播放器&#xff0c;从技术实现、功能特点、用户…...

命名实体识别与文本生成算法

在自然语言处理&#xff08;NLP&#xff09;的浩瀚星空中&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09;与文本生成算法如同两颗璀璨的星辰&#xff0c;各自闪耀&#xff0c;又相互辉映&#xff0c;共同推动着人工智能技术在语言理解与生成领…...

题解 | 牛客周赛83 Java ABCDEF

目录 题目地址 做题情况 A 题 B 题 C 题 D 题 E 题 F 题 牛客竞赛主页 题目地址 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 做题情况 A 题 输出两个不是同一方位的字符中的任意一个就行 import java.io.*; import java.math.*; import java…...

样式和ui(待更新)

element-plus 先在项目下执行安装语句执行按需导入的命令按照官方文档修改vitest.json sass样式定制 npm -i sass -D在项目下准备定制的样式文件 styles/element/index.scss(!注意这里是.scss文件在vitest.json 修改配置文件 Components({resolvers: [ElementPlusResolver(…...

「Selenium+Python自动化从0到1②|2025浏览器操控7大核心API实战(附高效避坑模板))」

Python 自动化操作浏览器基础方法 在进行 Web 自动化测试时&#xff0c;操作浏览器是必不可少的环节。Python 结合 Selenium 提供了强大的浏览器操作功能&#xff0c;让我们能够轻松地控制浏览器执行各种任务。本文将详细介绍如何使用 Python 和 Selenium 操作浏览器的基本方法…...

C++的类和对象入门

目录 目录 目录 一、类 1.1类的定义 1.2访问限定符 1.3类域 1.4类的命名规范 1.5class和struct的默认访问权限 二、类的实例化 2.2对象的大小和存储 2.3空类的大小 三、this指针 3.1this指针的定义 3.2this指针的作用 3.2.1区分同名变量和局部变量 3.2.2返回对象…...

【清华大学】DeepSeek从入门到精通完整版pdf下载

DeepSeek从入门到精通.pdf 一共104页完整版 下载链接: https://pan.baidu.com/s/1-gnkTTD7EF2i_EKS5sx4vg?pwd1234 提取码: 1234 或 链接&#xff1a;https://pan.quark.cn/s/79118f5ab0fd 一、DeepSeek 概述 背景与定位 DeepSeek 的研发背景 核心功能与技术特点&#xff08…...

deepseek使用记录18——文化基因之文化融合

文明长河中的生命浪花 在洛阳白马寺的银杏树下&#xff0c;年轻母亲指着"农禅并重"碑刻给孩子讲述祖辈耕作的故事&#xff1b;在哔哩哔哩的直播间里&#xff0c;00后女孩穿着汉服跳起街舞&#xff0c;弹幕飘过"这才是文化缝合怪"。当文明交融的宏大叙事照…...

Java 大视界 -- Java 大数据在智慧文旅游客流量预测与景区运营优化中的应用(110)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

面试题:说一下你对DDD的了解?

面试题:说一下你对DDD的了解? 在面试中,关于 DDD(领域驱动设计,Domain-Driven Design) 的问题是一个常见的技术考察点。DDD 是一种软件设计方法论,旨在通过深入理解业务领域来构建复杂的软件系统。以下是一个清晰、详细的回答模板,帮助你在面试中脱颖而出: DDD 的定义…...

网络编程——UDP

UDP编程使用套接字&#xff08;Socket&#xff09;进行通信。下面是基于UDP协议进行网络编程的基本步骤。 1. 创建套接字 首先&#xff0c;客户端和服务器都需要通过 socket() 系统调用创建一个UDP套接字。 2. 配置地址和端口 UDP是无连接的&#xff0c;因此你不需要像TCP一…...

【网络安全 | 渗透测试】GraphQL精讲二:发现API漏洞

未经许可,不得转载。 推荐阅读:【网络安全 | 渗透测试】GraphQL精讲一:基础知识 文章目录 GraphQL API 漏洞寻找 GraphQL 端点通用查询常见的端点名称请求方法初步测试利用未清理的参数发现模式信息使用 introspection探测 introspection运行完整的 introspection 查询可视化…...

代码随想录Day23 | 39.组合总和、40.组合总和II、131.分割回文串

39.组合总和 自己写的代码&#xff1a; class Solution { public:vector<int> path;vector<vector<int>> res;int sum0;void backtracking(vector<int>& candidates,int target,int startIndex){if(sum>target) return;if(sumtarget){res.pus…...

MyBatis 新手入门教程:基础操作篇

MyBatis 新手入门教程&#xff1a;基础操作篇 适合人群&#xff1a;无 MyBatis 使用经验者 &#xff08;完整版3.3准时发&#xff0c;此篇为新手入门的基础操作&#xff09; 一、MyBatis 是什么&#xff1f; 简单理解&#xff1a; MyBatis 是一个帮你操作数据库的工具&#x…...

zjbdt

嵌入式软件工程师可以通过考取相关职业证书来提升专业能力和职业竞争力。以下是几种含金量较高且广受认可的证书&#xff1a; 1. NIEH 嵌入式技术工程师证书 颁发机构&#xff1a;教育部考试中心级别&#xff1a;初级、中级、高级内容&#xff1a;涵盖嵌入式系统的基础理论、开…...

行为型模式 - 中介者模式 (Mediator Pattern)

行为型模式 - 中介者模式 (Mediator Pattern) 中介者模式的核心思想是将对象之间的复杂交互封装到一个中介者对象中&#xff0c;从而降低对象之间的耦合度。 import java.util.ArrayList; import java.util.List;// 抽象中介者类 abstract class TowerMediator {public abstra…...

如何使用C#与SQL Server数据库进行交互

一.创建数据库 用VS 创建数据库的步骤&#xff1a; 1.打开vs&#xff0c;创建一个新项目&#xff0c;分别在搜素框中选择C#、Windows、桌面&#xff0c;然后选择Windows窗体应用(.NET Framework) 2.打开“视图-服务器资源管理器”&#xff0c;右键单击“数据连接”&#xff0…...

同步类型对比

同步类型对比 特性准同步 (Quasi-Synchronization)完全同步 (Complete Synchronization)渐进同步 (Asymptotic Synchronization)定义系统状态在有限时间内接近同步&#xff0c;但存在微小误差。系统状态在有限时间内完全一致。系统状态随时间趋近于同步&#xff0c;但可能需要…...

python爬虫Scapy框架(1)

简介 什么是框架&#xff1f; 所谓的框&#xff0c;其实说白了就是一个【项目的半成品】&#xff0c;该项目的半成品需要被集成了各种功能且具有较强的通用性。 Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架&#xff0c;非常出名&#xff0c;非…...

java容器 LIst、set、Map

Java容器中的List、Set、Map是核心数据结构&#xff0c;各自适用于不同的场景 一、List&#xff08;有序、可重复&#xff09; List接口代表有序集合&#xff0c;允许元素重复和通过索引访问&#xff0c;主要实现类包括&#xff1a; ArrayList 底层结构&#xff1a;动态数组…...

2W8000字 LLM架构文章阅读指北

❝ 大模型架构专栏已经更新了30多篇文章。完整的专栏内容欢迎订阅&#xff1a; LLM 架构专栏 1、LLM大模型架构专栏|| 从NLP基础谈起 2、 LLM大模型架构专栏|| 自然语言处理&#xff08;NLP&#xff09;之建模 3、 LLM大模型架构之词嵌入&#xff08;Part1&#xff09; 3、 LLM…...

Milkv-duo256 接入tuya 云并实现远程智能控制

tuyaopen-embedded-core 是将 https://github.com/tuya/tuyaopen 连接 tuya 云相关核心组件重新组织&#xff0c;可快速嵌入至各种嵌入式平台使用。 tuyaopen-embedded-core 可通过 WiFi、有线以太网、CAT-1、4G 等多种方式接入涂鸦云&#xff0c;实现设备远程控制、OTA 等功能…...

Hadoop之02:MR-图解

1、不是所有的MR都适合combine 1.1、map端统计出了不同班级的每个学生的年龄 如&#xff1a;(class1, 14)表示class1班的一个学生的年龄是14岁。 第一个map任务&#xff1a; class1 14 class1 15 class1 16 class2 10第二个map任务&#xff1a; class1 16 class2 10 class…...

YOLOv8目标检测推理流程及C++代码

这部分主要是使用c++对Onnx模型进行推理,边先贴代码,过段时间再详细补充下代码说明。 代码主要分成三部分,1.main_det.cpp推理函数主入口;2.inference_det.h 头文件及inference_det.cpp具体函数实现;3.CMakeList.txt. 1.main_det 推理配置信息全部写在config.txt中,执行…...

【AVRCP】深入解析AVRCP应用层:功能支持与映射

在最近的项目开发中&#xff0c;深入研究了Audio/Video Remote Control Profile&#xff08;AVRCP&#xff09;的应用层特性。在蓝牙音频/视频远程控制规范&#xff08;AVRCP&#xff09;的架构中&#xff0c;应用层扮演着至关重要的角色&#xff0c;它定义了符合该规范的设备所…...

springboot之HTML与图片生成

背景 后台需要根据字段动态生成HTML&#xff0c;并生成图片&#xff0c;发送邮件到给定邮箱 依赖 <!-- freemarker模板引擎--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifa…...

Hive-04之存储格式、SerDe、企业级调优

一、主题 hive表的数据压缩和文件存储格式hive的自定义UDF函数hive的JDBC代码操作hive的SerDe介绍和使用hive的优化 二、要点 1. hive表的文件存储格式 Hive支持的存储数的格式主要有&#xff1a;TEXTFILE&#xff08;行式存储&#xff09; 、SEQUENCEFILE(行式存储)、ORC&…...

链表的概念和结构

文章目录 1. 链表的概念2. 链表的分类3. 单向不带头非循环链表3.1 接口设计&#xff08;SList.h&#xff09;3.2 接口实现&#xff08;SList.c&#xff09;1&#xff09;打印和创建结点2&#xff09;头尾插入删除3&#xff09;查找和插入4&#xff09;删除和销毁 3.3 完整代码S…...

使用AI后为什么思考会变得困难?

使用AI后为什么思考会变得困难&#xff1f; 我总结了四篇近期的研究论文&#xff0c;来展示AI是如何以及为什么侵蚀我们的批判性思维能力。 作者使用AI制作的图像 前言&#xff1a;作者在这篇文章中&#xff0c;借AI技术的崛起&#xff0c;揭示了一场悄然发生的思想博弈。表面…...

Github 2025-03-02 php开源项目日报Top10

根据Github Trendings的统计,今日(2025-03-02统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1JavaScript项目1Nextcloud服务器:安全的数据之家 创建周期:2796 天开发语言:PHP, JavaScript协议类型:GNU Affero Gene…...

智能座舱介绍

目录 智能座舱智能座舱的核心技术组成车载信息娱乐系统(IVI)数字仪表盘与HUD(抬头显示)语音交互与AI助手多屏联动与场景化交互生物识别技术智能座舱的发展趋势沉浸式体验情感化与个性化多模态交互融合车联网(V2X)生态扩展应用场景挑战与未来硬件系统软件系统关键技术智能…...

2025年能源工作指导意见

2025年是“十四五”规划收官之年&#xff0c;做好全年能源工作意义重大。为深入贯彻落实党中央、国务院决策部署&#xff0c;以能源高质量发展和高水平安全助力我国经济持续回升向好&#xff0c;满足人民群众日益增长的美好生活用能需求&#xff0c;制定本意见。 一、总体要求…...

​豪越科技:智慧园区后勤单位消防安全管理,实时告警与整改闭环

在当今数字化、智能化飞速发展的时代&#xff0c;智慧园区已成为现代产业发展的重要载体。而园区后勤单位的消防安全管理&#xff0c;作为保障园区安全运营的关键环节&#xff0c;正面临着前所未有的挑战与机遇。豪越科技凭借其先进的技术和丰富的经验&#xff0c;为智慧园区后…...

zookeeper-docker版

Zookeeper-docker版 1 zookeeper概述 1.1 什么是zookeeper Zookeeper是一个分布式的、高性能的、开源的分布式系统的协调&#xff08;Coordination&#xff09;服务&#xff0c;它是一个为分布式应用提供一致性服务的软件。 1.2 zookeeper应用场景 zookeeper是一个经典的分…...

华为手机自助维修的方法

测试环境&#xff1a;华为荣耀 &#xff08;全文完&#xff09;...

基于Springboot博物馆文博资源库系统【附源码】

基于Springboot博物馆文博资源库系统 效果如下&#xff1a; 系统登陆页面 文物信息管理页面 流动申请页面 文物报修页面 个人信息页面 文物保修管理页面 系统主页面 文物类型页面 研究背景 随着信息技术的飞速发展&#xff0c;博物馆文博资源的管理与利用日益受到重视。传统…...

辛格迪客户案例 | 祐儿医药科技GMP培训管理(TMS)项目

01 项目背景&#xff1a;顺应行业趋势&#xff0c;弥补管理短板 随着医药科技行业的快速发展&#xff0c;相关法规和标准不断更新&#xff0c;对企业的质量管理和人员培训提出了更高要求。祐儿医药科技有限公司&#xff08;以下简称“祐儿医药”&#xff09;作为一家专注于创新…...

Git 2.48.1 官方安装与配置全流程指南(Windows平台)

一、软件简介 Git 是 分布式版本控制系统 的标杆工具&#xff0c;由 Linus Torvalds 开发&#xff0c;广泛应用于代码版本管理、团队协作开发等场景。2.48.1 版本优化了文件系统监控性能&#xff0c;并修复了跨平台兼容性问题。 二、下载准备 1. 官方下载地址 访问 Git 官网…...

MATLAB中asManyOfPattern函数用法

目录 语法 说明 示例 匹配尽可能多的模式实例 指定要匹配的最小模式数 指定要匹配的最小和最大模式数 asManyOfPattern函数的功能是模式匹配次数尽可能多。 语法 newpat asManyOfPattern(pat) newpat asManyOfPattern(pat,minPattern) newpat asManyOfPattern(pat,m…...

大模型推理时的尺度扩展定律

大模型推理时的尺度扩展定律 FesianXu at 20250212 at Wechat Search Team 前言 大模型的尺度扩展定律告诉我们&#xff1a;『LLM的性能会随着模型的参数量、模型的训练量、模型的训练数据量的增加而增加』。训练存在尺度扩展定律&#xff0c;测试也存在尺度扩展定律&#xff…...

迷你世界脚本世界UI接口:UI

世界UI接口&#xff1a;UI 彼得兔 更新时间: 2023-10-25 10:40:44 具体函数名及描述如下: 序号 函数名 函数描述 1 setGBattleUI(...) 设置战斗总结UI 2 world2RadarPos(...) 世界坐标转换到小地图 3 world2RadarDist(...) 世界长度转换到小地图 4 …...

局域网自动识别机器名和MAC并生成文件的命令

更新版本&#xff1a;添加了MAC 地址 确定了设备唯一性 V1.1 局域网自动识别机器名和MAC并生成文件的批处理命令 echo off setlocal enabledelayedexpansionREM 设置输出文件 set outputFilenetwork_info.txtREM 清空或创建输出文件 echo Scanning network from 192.168.20.1…...

神经网络之词嵌入模型(基于torch api调用)

一、Word Embedding&#xff08;词嵌入&#xff09;简介 Word Embedding&#xff08;词嵌入&#xff09;&#xff1a; 词嵌入技术是自然语言处理&#xff08;NLP&#xff09;领域的一项重大创新&#xff0c;它极大地推动了计算机理解和处理人类语言的能力。 通过将单词、句子甚…...

微服务即时通信系统---(七)文件管理子服务

目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程 服务代码实现 封装文件操作模块(utils.hpp) 获取唯一标识ID 文件读操作 文件写操作 编写proto文件 文件元信息 文件管理proto 单文件上传 多文件上传 单文件下载 多文件下载 RPC调用 服务端创建子…...

鸿蒙5.0实战案例:基于原生能力获取视频缩略图

往期推文全新看点&#xff08;文中附带全新鸿蒙5.0全栈学习笔录&#xff09; ✏️ 鸿蒙&#xff08;HarmonyOS&#xff09;北向开发知识点记录~ ✏️ 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…...

《Canvas修仙传·第三重天金丹境(下集)》 ——量子烟花与物理宇宙的混沌法则

各位道友久候&#xff01;上集我们炼就了《灵蛇奇谭》的元神&#xff0c;今日将开启Canvas修仙路上最绚丽的篇章——掌控微观粒子的创世之力&#xff01;(&#xff89;≧∀≦)&#xff89; 章前黑话词典 &#x1f50d; 量子境术语表&#xff1a; 对象池&#xff08;Object Po…...

Hutool - POI:让 Excel 与 Word 操作变得轻而易举

各位开发者们&#xff0c;在日常的 Java 开发工作里&#xff0c;处理 Excel 和 Word 文件是相当常见的需求。无论是从 Excel 里读取数据进行分析&#xff0c;还是将数据写入 Excel 生成报表&#xff0c;亦或是对 Word 文档进行内容编辑&#xff0c;传统的 Apache POI 库虽然功能…...

请谈谈 Node.js 中的流(Stream)模块,如何使用流进行数据处理?

1. Node.js中的流&#xff08;Stream&#xff09;模块 流的基本概念&#xff1a; 流是 Node.js 中用于处理流式数据的抽象接口。 它是一种高效的数据处理机制&#xff0c;适合处理大文件或高数据吞吐量的场景。 流主要有四种类型&#xff1a; Readable&#xff1a;可读流&am…...

DeepSeek 202502 开源周合集

DeepSeek 本周的开源项目体现了其在 AI 技术栈中的深厚积累&#xff0c;从硬件协同优化&#xff08;FlashMLA&#xff09;、通信库&#xff08;DeepEP&#xff09;、核心计算&#xff08;DeepGEMM&#xff09;到推理模型&#xff08;DeepSeek-R1&#xff09;&#xff0c;覆盖了…...