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

OC语言学习——面向对象(下)

一、OC的包装类

OC提供了NSValue、NSNumber来封装C语言基本类型(short、int、float等)。

在 Objective-C 中,**包装类(Wrapper Classes)**是用来把基本数据类型(如 int、float、char 等)“包装”为对象的类。因为 Objective-C 是面向对象的语言,有时候我们需要把基本类型当作对象使用,比如:

  • 放入 NSArray、NSDictionary 这样的集合中(这些集合只能存放对象);

  • 使用对象方法对数值进行操作;

  • 与 Foundation 框架接口交互。

1.1 以下不是包装类:


        1、NSInteger:大致等于long型整数

        2、NSUInteger:大致等于unsigned long型整数
        3、CGFLoat:在64位平台相当于double,在32位平台相当于float


        以上的类型只是基本类型。为了更好的兼容不同的平台,当程序需要定义整形变量的时候,建议使用NSInteger,NSUInteger;当程序需要定义浮点型变量的时候,建议使用CGFLoat

1.2 以下是包装类:


        1、NSValue是NSNumber的父类,它代表一个更通用的包装类,可以包装int、short、long、float、char、指针、对象id等数据项。并将它们添加到NSArray、NSSet等集合中去。


        2、NSNumber是更具体的包装类,用于包装c语言的各种数值类型。它有如下三类方法:
            - [x] +numberWithXxx:直接将特定类型的值包装成NSNumber
            - [x] -initWithXxx:该实例方法需要先创建一个NSNumber对象,再用一个基本类型的值来初始化NSNumber
            - [x] -xxxValue:该实例方法返回该NSNumber对象包装的基本类型的值

        如上方法的Xxx是Int,Char,Double,string等各种数据类型。


        使用NSNumber的compare方法比较两个值,返回的对象可以转化为-1、0、1,分别代表小于、等于、大于。与bool值比较时,YES代表1,当另一个数大于1时返回1,小于1时返回-1。

        基本类型变量和包装类对象之间的转换关系可以理解为:基本类型变量通过调用numberWithXxx:类方法来转换并返回包装类对象;包装类对象通过调用xxxValue来获取基本类型的值。

 

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {NSNumber *num = [NSNumber numberWithInt:66];NSNumber *de = [NSNumber numberWithDouble:7.7];NSLog(@"%d",[num intValue]);NSLog(@"%g",[de doubleValue]);NSNumber *ch = [[NSNumber alloc] initWithChar:'t'];NSLog(@"%@",ch);}return 0;
}

二、处理对象

2.1 处理对象和description方法

在 Objective-C 中,打印对象(NSLog(@"%@", obj)) 实际上是调用对象的 -description 方法。这个方法决定了你在控制台看到的输出内容。

 一、NSLog(@"%@", obj) 做了什么?

当你写:

NSLog(@"%@", obj);

它相当于:

NSLog(@"%@", [obj description]);

也就是说:

        NSLog 并不会直接打印对象地址;

  • 它调用了 obj 的 -description 方法,获取一个 NSString* 类型的描述字符串来打印。


 二、默认行为

如果你没有重写 -description,那么会输出类似:

<ClassName: 0x10060ae50>

这是 NSObject 默认的格式,表示“类名 + 内存地址”。


 三、如何自定义打印内容?

你可以重写 -description 方法来自定义输出内容:

示例:

@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) int age;
@end@implementation Person
- (NSString *)description {return [NSString stringWithFormat:@"Person: name=%@, age=%d", self.name, self.age];
}
@end

使用:

Person *p = [[Person alloc] init];
p.name = @"Tom";
p.age = 20;
NSLog(@"%@", p);

输出:

Person: name=Tom, age=20

 四、打印集合对象(NSArray、NSDictionary)

集合类如 NSArray、NSDictionary、NSSet,当你 NSLog 打印它们时,它们也会调用内部所有对象的 -description 方法

NSArray *arr = @[p];
NSLog(@"%@", arr);

如果你没有给 p 写 -description,你就会看到一串地址;

如果写了,就会输出里面每个对象的自定义内容。

#import <Foundation/Foundation.h>@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) int age;
@end@implementation Person//重写 description 方法
- (NSString *)description {return [NSString stringWithFormat:@"Person: name=%@, age=%d", self.name, self.age];
}@endint main(int argc, const char * argv[]) {@autoreleasepool {Person *p = [[Person alloc] init];p.name = @"Tom";p.age = 20;// 打印对象NSLog(@"%@", p); // 自动调用 [p description]}return 0;
}

不重写 VS 重写后

<Person: 0x600000e812e0>Person: name=Tom, age=20

2.2 == 和 isEqual方法

oc中测试两个变量事都相等的方式有两个,分别是:==方法和isEqual方法

2.2.1 ==方法

当用==方法时,若️①两个变量是基本类型的变量,️②两个变量都是数值型的变量(不一定要求数据类型严格相等),️③两个变量的值相等。则==判断返回真,否则返回假。
        而对于指针类型的变量,则要两个指针指向同一个对象,则==返回真,否则返回假。
        当使用==的两个类没有继承关系时,编译器会提示警告。

@“hello”和[NSString stringWithFormat:@“hello”]的区别:
         当OC直接使用@”hello“,系统会使用常量池来管理这些字符串。常量池保证相同的字符串只会有一个,不会产生多个副本,因此创建的所有指向@“hello”的指针,指针变量保存的地址都是完全相同的。
         而使用[NSStringstringWithFormat:@“hello”]创建的字符串对象是运行时创建出来的,它被保存在运行时的内存中(即堆内存),不会放入常量池中。因此它的地址和@“hello”的地址并不相同。

以下代码演示了==的用法:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {int it = 65;int fl = 65.0f;char ch = 'A';NSString *str1 = @"hello";NSString *str2 = @"hello";NSString *str3 = @"byebye";NSLog(@"%d",(it==fl)); //结果为1NSLog(@"%d",(fl == ch)); //结果为1NSLog(@"%d",(str1 == str2)); //结果为1NSLog(@"%d",(str2 == str3)); //结果为0//常量池NSString *p1 = @"朱斌";NSString *p2 = @"朱斌";NSLog(@"p1地址:%p,p2地址:%p",p1,p2);NSLog(@"%d",(p1 == p2)); //结果为1NSString *p3 = [NSString stringWithFormat:@"朱斌"];NSString *p4 = [NSString stringWithFormat:@"朱斌"];NSLog(@"p3地址:%p",p3);NSLog(@"p4地址:%p",p4);NSLog(@"%d",(p1 == p3)); //结果为0NSLog(@"%d",(p4 == p3)); //结果为0NSString *p5 = [NSString stringWithFormat:@"zbchi"];NSString *p6 = [NSString stringWithFormat:@"zbchi"];NSLog(@"p5地址:%p",p5);NSLog(@"p6地址:%p",p6);NSLog(@"%d",(p5 == p6)); //结果为1}return 0;
}

2.2.2  isEqual方法

isEqual比较的是对象的内容。

isEqual默认实现是比较地址(跟 == 一样),但很多系统类(如NSString,NSArray,NSNumber)都 重写该方法 来比较内容。所以这个时候输出的是 内容相等

#import "FKPerson.h"@implementation FKPerson- (id) initWithName: (NSString*) name idStr: (NSString*) idStr {if(self = [super init]) {self.name = name;self.idStr = idStr;}return self;
}
- (BOOL) isEqual:(id) other {//如果两个对象指针相等,为同一个对象if(self == other) {return YES;}//当other不为nil且它为FKPerson的实例时if(other != nil && [other isMemberOfClass:FKPerson.class]) {FKPerson* target = (FKPerson*)other;//并且要判断当前对象的idStr和target对象的idStr相等才可以判断两个对象相等return [self.idStr isEqual: target.idStr];}return NO;
}@end

三、类别与拓展

在oc中,类别和拓展都是对类进行的“补充”机制。

3.1 类别

类别是oc中用于給已有方法添加方法的一种机制,不能添加成员变量

类别的定义:

命名规则:在接口文件部分的文件命名是“类名+类别名.h” 在实现部分的文件命名是“类名+类别名.m” 的形式。

类别的接口部分的声明和类的定义十分相似,但类别不继承父类,只需要在已有类的类名后面加一个括号,写入类别名,然后再在下面定义方法。

@interface ClassName (CategoryName)
- (void)newMethod;
@end@implementation ClassName (CategoryName)
- (void)newMethod {NSLog(@"Category method called");
}
@end

相关文章:

OC语言学习——面向对象(下)

一、OC的包装类 OC提供了NSValue、NSNumber来封装C语言基本类型&#xff08;short、int、float等&#xff09;。 在 Objective-C 中&#xff0c;**包装类&#xff08;Wrapper Classes&#xff09;**是用来把基本数据类型&#xff08;如 int、float、char 等&#xff09;“包装…...

SafeDrive:大语言模型实现自动驾驶汽车知识驱动和数据驱动的风险-敏感决策——论文阅读

《SafeDrive: Knowledge- and Data-Driven Risk-Sensitive Decision-Making for Autonomous Vehicles with Large Language Models》2024年12月发表&#xff0c;来自USC、U Wisconsin、U Michigan、清华大学和香港大学的论文。 自动驾驶汽车&#xff08;AV&#xff09;的最新进…...

什么是先验?(CVPR25)Detail-Preserving Latent Diffusion for Stable Shadow Removal论文阅读

文章目录 先验&#xff08;Prior&#xff09;是什么&#xff1f;1. 先验的数学定义2. 先验在深度生成模型中的角色3. 为什么需要先验&#xff1f;4. 先验的常见类型5. 如何选择或构造先验&#xff1f;6. 小结 先验&#xff08;Prior&#xff09;是什么&#xff1f; 在概率统计…...

【论文阅读】Attentive Collaborative Filtering:

Attentive Collaborative Filtering: Multimedia Recommendation with Item- and Component-Level Attention Attentive Collaborative Filtering (ACF)、隐式反馈推荐、注意力机制、贝叶斯个性化排序 标题翻译&#xff1a;注意力协同过滤&#xff1a;基于项目和组件级注意力的…...

如何使用极狐GitLab 软件包仓库功能托管 maven?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Maven 包 (BASIC ALL) 在项目的软件包库中发布 Maven 产物。然后&#xff0c;在需要将它们用作依赖项时安装它…...

Notion Windows桌面端快捷键详解

通用导航 这些快捷键帮助用户在 Notion 的界面中快速移动。 打开 Notion&#xff1a;Ctrl T 打开一个新的 Notion 窗口或标签页&#xff0c;方便快速进入工作空间。返回上一页&#xff1a;Ctrl [ 导航回之前查看的页面。前进到下一页&#xff1a;Ctrl ] 跳转到导航历史中的…...

企业智能化第一步:用「Deepseek+自动化」打造企业资源管理的智能中枢

随着Deepseek乃至AI人工智能技术在企业中得到了广泛的关注和使用&#xff0c;多数企业开始了AI探索之旅&#xff0c;迅易科技也不例外&#xff0c;且在不断地实践中强化了AI智能应用创新的强大能力。 为解决企业知识管理碎片化、提高内部工作效率等问题&#xff0c;迅易将目光放…...

GoFly企业版框架升级2.6.6版本说明(框架在2025-05-06发布了)

前端框架升级说明&#xff1a; 1.vue版本升级到^3.5.4 把"vue": "^3.2.40",升级到"vue": "^3.5.4"&#xff0c;新版插件需要时useTemplateRef,所以框架就对齐进行升级。 2.ArcoDesign升级到2.57.0&#xff08;目前最新2025-02-10&a…...

LeapVAD:通过认知感知和 Dual-Process 思维实现自动驾驶飞跃——论文阅读

《LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking》2025年1月发表&#xff0c;来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文。 尽管自动驾驶技术取得了显著进步&#xff0c;但由于推理能力有限&#xff0c;数…...

ps信息显示不全

linux执行ps是默认宽度是受限制的&#xff0c;例如&#xff1a; ps -aux 显示 遇到这种情况&#xff0c;如果显示的信息不是很长可以添加一个w参数来放宽显示宽度 ps -auxw 显示 再添加一个w可以接触宽度限制&#xff0c;有多长就显示多长 ps -auxww 显示...

性能比拼: Redis Streams vs Pub/Sub

本内容是对知名性能评测博主 Anton Putra Redis Streams vs Pub/Sub: Performance 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在这个视频中&#xff0c;我们首先将介绍 Redis Streams 和 Redis Pub/Sub 之间的区别。然后&#xff0c;我们将在 AWS 上运行一个基准…...

实践004-Gitlab CICD部署应用

文章目录 Gitlab CICD部署应用部署设计集成Kubernetes后端Java项目部署创建gitlab部署项目创建部署文件创建流水线提交流水线 前端Web项目部署创建gitlab部署项目创建部署文件创建流水线提交流水线 Gitlab CICD部署应用 部署设计 对于前后端服务都基于 Kubernetes 进行部署&a…...

二叉树与优先级队列

1.树 树是由n个数据构成的非线性结构&#xff0c;它是根朝上&#xff0c;叶朝下。 注意&#xff1a;树形结构之中&#xff0c;子树之间不能连接&#xff0c;不然就不构成树形结构 1.子树之间没有交集 2.除了根节点以外&#xff0c;每一个节点有且只有一个父亲节点 3.一个n个…...

如何使用极狐GitLab 软件包仓库功能托管 npm?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 npm 包 (BASIC ALL) npm 是 JavaScript 和 Node.js 的默认包管理器。开发者使用 npm 共享和重用代码&#xff…...

uniapp自定义底部导航栏h5有效果小程序无效的解决方案

在使用 uni-app 开发跨端应用时&#xff0c;常见问题之一是自定义底部导航栏&#xff08;tabbar&#xff09;在H5端有效&#xff0c;但在小程序端无效。这是因为小程序端的页面结构和生命周期与H5有差异&#xff0c;且小程序端的原生tabbar有更高的优先级&#xff0c;覆盖了自定…...

开发搭载阿里云平台的物联网APP(支持数据接收与发送)

一、开发环境准备 工具安装 HBuilderX&#xff1a;下载并安装最新版&#xff08;支持Vue.js和uni-app框架&#xff09;阿里云IoT SDK&#xff1a;使用JavaScript版SDK&#xff08;如aliyun-iot-mqtt或mqtt.js&#xff09;插件安装&#xff1a;HBuilderX插件市场搜索安装mqtt相关…...

Flowchart 流程图的基本用法

以下是 Flowchart 流程图 的基本用法整理&#xff0c;涵盖核心概念、符号含义、绘制步骤及注意事项&#xff0c;助你高效表达流程逻辑&#xff1a; 一、流程图的核心作用 可视化流程&#xff1a;将复杂步骤转化为直观图形&#xff0c;便于理解和分析。梳理逻辑&#xff1a;明确…...

Excel模版下载文件导入

工作中经常遇到Excel模板下载&#xff0c;然后填好后再导入的情况&#xff0c;简单记录下&#xff0c;方便下次使用 Excel模版下载&#xff08;返回Base64&#xff09; 模板文件存放位置 import java.util.Base64; import org.apache.commons.io.IOUtils; import org.sprin…...

深入了解linux系统—— 进程控制

进程创建 fork函数 在Linux操作系统中&#xff0c;我们可以通过fork函数来创建一个子进程&#xff1b; 这是一个系统调用&#xff0c;创建子进程成功时&#xff0c;返回0给子进程&#xff0c;返回子进程的pid给父进程&#xff1b;创建子进程失败则返回-1给父进程。 我们就可…...

【前端基础】7、CSS的字体属性(font相关)

一、font-size&#xff1a;设置字体大小 设置方法&#xff1a; 具体数值单位 例如&#xff1a;100px 也可以用em为单位&#xff1a;1em代表100%&#xff0c;2em代表200%……0.5em代表50%。 px方式&#xff1a; em方式&#xff1a; 但是设置em的时候具体是多大呢&#xff1f…...

学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法

学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法 要将 SimpleXMLElement 对象解析成数组格式&#xff0c;您可以使用 PHP 的 json_decode 和 json_encode 函数。首先&#xff0c;将 SimpleXMLElement 对象转换为 JSON 字符串&#xff0c;然后将这个字符串解码成数…...

MSF(3)免杀混淆

声明&#xff01;本文章所有的工具分享仅仅只是供大家学习交流为主&#xff0c;切勿用于非法用途&#xff0c;如有任何触犯法律的行为&#xff0c;均与本人及团队无关&#xff01;&#xff01;&#xff01; 一、前言 前面说了木马的捆绑&#xff0c;dll,exe&#xff0c;hta等密…...

经典密码学算法实现

# AES-128 加密算法的规范实现&#xff08;不使用外部库&#xff09; # ECB模式S_BOX [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B,0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0,0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0x…...

idea里maven自定义的setting.xml文件不生效问题

问题描述&#xff1a; 内网环境中&#xff1a;maven选择选择自定义的maven文件夹时&#xff0c;使用的是自定义的setting.xml和本地仓库&#xff0c;怎么都读取不到仓库的依赖&#xff1b; 分析&#xff1a; 1.可能是setting.xml文件里没有配置本地仓库的路径&#xff1b; 2…...

注意力机制(Attention)

1. 注意力认知和应用 AM&#xff1a; Attention Mechanism&#xff0c;注意力机制。 根据眼球注视的方向&#xff0c;采集显著特征部位数据&#xff1a; 注意力示意图&#xff1a; 注意力机制是一种让模型根据任务需求动态地关注输入数据中重要部分的机制。通过注意力机制&…...

【java】使用iText实现pdf文件增加水印功能

maven依赖 <dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version><type>pom</type></dependency> </dependencies>实现代码 前…...

TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章

ParseX重要版本更新内容速读 - 新增公式解析参数 formula_level&#xff0c;支持 LaTeX / Text 灵活切换&#xff1b; - 表格解析优化单元格内换行输出&#xff1b; - 导出excel时&#xff0c;图片链接放在单元格内&#xff1b; - 新增电子档pdf去印章功能。 体验文档解析…...

禁止idea联网自动更新通过防火墙方式

防火墙方式禁止idea更新检测&#xff0c;解决idea无限循环触发密钥填充流程。 1.首先打开控制面板找到高级设置 2.点击出站规则 3.新建规则 4.选择程序 5.找到idea路径 6.下一步 7.阻止连接 8.全选 9.输入禁止idea的名称 10.至此idea自动更新禁用完成...

面向智能体开发的声明式语言:可行性分析与未来图景

面向智能体开发的声明式语言&#xff1a;可行性分析与未来图景 一、技术演进的必然性&#xff1a;从“脚本化AI”到“声明式智能体” 当前AI开发仍停留在“脚本化AI”阶段&#xff1a;开发者通过Python/Java编写条件判断调用LLM API&#xff0c;如同用汇编语言编写操作系统。…...

【Bug经验分享】SourceTree用户设置必须被修复/SSH 主机密钥未缓存(踩坑)

文章目录 配置错误问题原因配置错误问题解决主机密钥缓存问题原因主机密钥缓存问题解决 更多相关内容可查看 配置错误问题原因 电脑太卡&#xff0c;曾多次强制关机&#xff0c;在关机前没有关闭SourceTree&#xff0c;导致配置错误等问题 配置错误问题解决 方式一&#xff…...

http Status 400 - Bbad request 网站网页经常报 HTTP 400 错误,清缓存后就好了的原因

目录 一、HTTP 400 错误的常见成因(一)问题 URL(二)缓存与 Cookie 异常(三)请求头信息错误(四)请求体数据格式不正确(五)文件尺寸超标(六)请求方法不当二、清缓存为何能奏效三、其他可以尝试的解决办法(一)重新检查 URL(二)暂时关闭浏览器插件(三)切换网络环…...

六个仓库合并为一个仓库,保留master和develop分支的bat脚本

利用git subtree可以实现多个仓库合并为一个仓库&#xff0c;手动操作起来太麻烦了&#xff0c;今天花了点时间写了一个可执行的脚本&#xff0c;现在操作起来就方便多了。 1、本地新建setup.bat文件 2、用编辑器打开&#xff08;我用的是Notepad&#xff09; 3、把下面代码…...

新能源汽车中的NVM计时与RTC计时:区别与应用详解

在新能源汽车的电子控制系统中&#xff0c;时间管理至关重要&#xff0c;而NVM计时&#xff08;Non-Volatile Memory Timing&#xff09;和RTC计时&#xff08;Real-Time Clock&#xff09;是两种不同的时间记录机制。虽然它们都与时间相关&#xff0c;但在工作原理、应用场景和…...

✨WordToCard使用分享✨

家人们&#xff0c;今天发现了一个超好用的工具——WordToCard&#xff01;&#x1f61c; 它可以把WordToCard文档转换成漂亮的知识卡片&#xff0c;学习笔记、知识整理和内容分享都变得超轻松&#xff5e;&#x1f917; 支持各种WordToCard语法&#xff0c;像标题、列表、代…...

内网和外网怎么互通?外网访问内网的几种简单方式

在企业或家庭网络中&#xff0c;经常会遇到不同内网环境下网络互通问题。例如&#xff0c;当公司本地局域网内有个办公OA网站&#xff0c;在办公室内电脑上网可以登录使用&#xff0c;但在家带宽下就无法直接通信访问到。这就需要我们采取一些实用的内外网互通技巧来解决这个问…...

Mac中Docker下载与安装

目录 Docker下载安装配置 版本查询以及问题处理配置国内镜像在Docker中安装软件Nginx Docker 下载 官网&#xff1a;https://www.docker.com/get-started/ 或者 安装 配置 这里我们选择 Accept 选择默认配置就行&#xff0c;Docker 会自动设置一些大多数开发人员必要的配…...

固件测试:mac串口工具推荐

串口工具对固件测试来说非常重要&#xff0c;因为需要经常看日志&#xff0c;Windows上有Xshell和secureCRT&#xff0c;用起来很方便&#xff0c;尤其可以保存日志&#xff0c;并且可以进行日志分割。 mac上用什么串口工具呢&#xff0c;今天给大家推荐CoolTerm。 CoolTerm …...

41.防静电的系列措施

静电干扰的处理措施 1. ESD放电特征2. 静电防护电路设计措施3. ESD防护结构措施4. 案例分析 1. ESD放电特征 &#xff08;1&#xff09;放电电流tr≈1nS&#xff0c;ESD保护器件响应时间应小于1nS&#xff1b; &#xff08;2&#xff09;频率集中在几十MHz到500MHz&#xff1b;…...

Jmeter进行http接口测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤&#xff08;1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL&#xff0c;路径&#x…...

Ubuntu也开始锈化了?Ubuntu 计划在 25.10 版本开始引入 Rust Coreutils

上个月&#xff0c;jnsgruk发表了《未来20年的Ubuntu工程》&#xff08;Engineering Ubuntu For the Next 20 Years&#xff09;一文&#xff0c;其中概述了打算在未来几年中如何发展Ubuntu的四个关键主题。在这篇文章中&#xff0c;重点讨论 了“现代化”。在很多方面对Ubuntu…...

C++命名空间、内联与捕获

命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…...

PostgreSQL 系统管理函数详解

PostgreSQL 系统管理函数详解 PostgreSQL 提供了一系列强大的系统管理函数&#xff0c;用于数据库维护、监控和配置。这些函数可分为多个类别&#xff0c;以下是主要功能的详细说明&#xff1a; 一、数据库配置函数 1. 参数管理函数 -- 查看所有配置参数 SELECT name, sett…...

mdadm 报错: buffer overflow detected

最近跑 blktest (https://github.com/osandov/blktests) 时发现 md/001 的测试失败了 单独执行&#xff0c;最后定位到是 mdadm 命令报错: buffer overflow detected 这个 bug 目前已经修复: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id827e1870f3205…...

java ReentrantLock

线程同步工具。可以替代 synchronized . private final ReentrantLock reentrantLock new ReentrantLock();void testTask1 () {reentrantLock.lock(); // 获取锁try {System.out.println(Thread.currentThread().getName() " 进入临界区");// 模拟执行业务逻辑Th…...

kettle从入门到精通 第九十六课 ETL之kettle Elasticsearch 增删改查彻底掌握

场景&#xff1a; 群里有小伙伴咨询kettle从Elasticsearch中抽取数据&#xff0c;群里老师们纷纷响应&#xff0c;vip小伙伴是不是有中受宠若惊的感觉。 今天我们使用kettle通过es的原生rest接口来进行操作es&#xff0c;开整。 前提&#xff1a;本篇文章基于elasticsearch:7.…...

Kafka的核心组件有哪些?简要说明其作用。 (Producer、Consumer、Broker、Topic、Partition、ZooKeeper)

Kafka 核心组件解析 1. 基础架构图解 ┌─────────┐ ┌─────────┐ ┌─────────┐ │Producer │───▶ │ Broker │ ◀─── │Consumer │ └─────────┘ └─────────┘ └────────…...

Missashe考研日记-day34

Missashe考研日记-day34 1 专业课408 学习时间&#xff1a;3h学习内容&#xff1a; 今天是学习I/O管理第二小节的内容&#xff0c;听了课也做了题&#xff0c;这是操作系统倒数第二节知识了&#xff0c;还差最后一节就完结了。知识点回顾&#xff1a; 1.I/O核心子系统&#x…...

机器人跑拉松是商业噱头还是技术进步的必然体现

一、机器人跑拉松是商业噱头还是技术进步的必然体现 机器人参与马拉松赛事究竟是营销噱头还是技术进步的必然要求&#xff0c;需要从技术验证、行业推动、公众认知以及争议焦点等多个维度综合分析。基于全球首场人形机器人半程马拉松&#xff08;2025年北京亦庄赛事&#xff0…...

传输层协议 1.TCP 2.UDP

传输层协议 1.TCP 2.UDP TCP协议 回顾内容 传输层功能&#xff1a;定义应用层协议数据报文的端口号&#xff0c;流量控制对原始数据进行分段处理 传输层所提供服务 传输连接服务数据传输服务&#xff1a;流量控制、差错控制、序列控制 一、传输层的TCP协议 1.面向连接的…...

LLM :Function Call、MCP协议与A2A协议

LLM 的函数调用、模型上下文协议 (MCP) 和 Agent to Agent (A2A) 协议&#xff1a;概念、区别与实例对比 引言&#xff1a;LLM 不断演进的格局 大型语言模型 (LLM) 的日益精进&#xff0c;使其能力已超越简单的文本生成&#xff0c;迈向与现实世界进行复杂交互的新阶段。为了…...