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

IOS界面传值-OC

1、页面跳转

由 ViewController 页面跳转至 NextViewController 页面

(1)ViewController

  • ViewController.h
#import <UIKit/UIKit.h>@interface ViewController : UIViewController@end

  • ViewController.m
#import "ViewController.h"
#import "NextViewController.h"@interface ViewController ()@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) UIButton *button;@end@implementation ViewController//懒加载 UILabel
-(UILabel *) label{if (_label == nil) {_label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 50)];_label.backgroundColor = [UIColor blackColor];_label.textColor = [UIColor whiteColor];_label.font = [UIFont systemFontOfSize:20];}return _label;
}//懒加载 UIButton
-(UIButton *) button{if (_button == nil) {_button = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 200, 50)];_button.backgroundColor = [UIColor redColor];//setTitle:forState: 是 UIButton 的方法,允许你为按钮的不同状态设置不同的标题//为按钮在 普通状态 (UIControlStateNormal) 下设置标题为 "跳转至下个页面"[_button setTitle:@"跳转至下个页面" forState:UIControlStateNormal];//setTitleColor:forState: 是 UIButton 的方法,允许你为不同状态下的按钮标题设置不同的颜色//为按钮在 触摸抬起 (UIControlEventTouchUpInside) 事件时,设置标题颜色为白色 ([UIColor whiteColor])[_button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];//点击事件//addTarget:action:forControlEvents://target: 触发事件时的目标对象。通常是 self,即当前类的实例//action: 事件触发时调用的方法的 选择器,通过 @selector 来指定方法//forControlEvents: 指定触发事件的类型//UIControlEventTouchUpInside 按钮的 触摸抬起 事件[_button addTarget:self action:@selector(zlzButtonClick) forControlEvents:UIControlEventTouchUpInside];}return _button;
}//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}/**•    viewDidLoad:视图加载后,初始化视图。•    viewWillAppear::视图即将显示,准备更新 UI。•    viewDidAppear::视图已显示,启动交互或动画。•    viewWillDisappear::视图即将隐藏,保存数据。•    viewDidDisappear::视图已隐藏,释放资源或暂停任务。**///视图加载
- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor greenColor];NSLog(@"First viewDidLoad");//添加控件至根View[self.view addSubview:self.label];[self.view addSubview:self.button];
}-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------First viewWillAppear");
}- (void)viewWillLayoutSubviews{[super viewWillLayoutSubviews];NSLog(@"------First viewWillLayoutSubviews");
}- (void)viewDidLayoutSubviews{[super viewDidLayoutSubviews];NSLog(@"------First viewDidLayoutSubviews");
}- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];NSLog(@"------First viewDidAppear");
}- (void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];NSLog(@"------First viewWillDisappear");
}- (void)viewDidDisappear:(BOOL)animated{NSLog(@"------First viewDidDisappear");
}@end

(2)NextViewController

  • NextViewController.h
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface NextViewController : UIViewController@endNS_ASSUME_NONNULL_END
  • NextViewController.m

#import "NextViewController.h"@interface NextViewController ()@property (strong, nonatomic) UITextField *textFiled;
@property (strong, nonatomic) UIButton *button;@end@implementation NextViewController-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;}return _textFiled;
}-(UIButton *) button{if (_button == nil) {_button = [[UIButton alloc]initWithFrame:CGRectMake(100, 400, 200, 50)];_button.backgroundColor = [UIColor redColor];[_button setTitle:@"返回上一个页面" forState:UIControlStateNormal];[_button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];//点击事件[_button addTarget:self action:@selector(zlzBackClick) forControlEvents:UIControlEventTouchUpInside];}return _button;
}-(void)zlzBackClick{// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}- (void)viewDidLoad {[super viewDidLoad];NSLog(@"------Second viewDidLoad");self.view.backgroundColor = [UIColor yellowColor];[self.view addSubview:self.textFiled];[self.view addSubview:self.button];
}- (void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------Second viewWillAppear");
}- (void)viewWillLayoutSubviews{[super viewWillLayoutSubviews];NSLog(@"------Second viewWillLayoutSubviews");
}- (void)viewDidLayoutSubviews{[super viewDidLayoutSubviews];NSLog(@"------Second viewDidLayoutSubviews");
}- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];NSLog(@"------Second viewDidAppear");
}- (void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];NSLog(@"------Second viewWillDisappear");
}- (void)viewDidDisappear:(BOOL)animated{NSLog(@"------Second viewDidDisappear");
}@end

2、界面传值

2.1、属性传值

  • 在 NextViewController.h 添加属性 str
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface NextViewController : UIViewController//属性传值
@property (nonatomic, strong) NSString *str;@endNS_ASSUME_NONNULL_END

  • 在 ViewController.m 的跳转点击事件中 为NextViewController中的属性str 赋值
//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//属性传值---传递nextVC.str = @"属性传值";//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

  • 在 NextViewController.m 中 textFiled 懒加载时赋值
-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;//属性传值---接收并显示_textFiled.text = self.str;}return _textFiled;
}

  • 效果

2.2、单例传值

(1)创建单例

  • DefaultInstance.h

#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface DefaultInstance : NSObject+(instancetype)getInstance;@property (nonatomic, strong) NSString *instanceStr;@endNS_ASSUME_NONNULL_END

  • DefaultInstance.m

#import "DefaultInstance.h"@implementation DefaultInstance//类方法---创建单例对象
+(instancetype)getInstance{//首次创建会 将 sharedVC 赋值为 nil,然后创建一个对象//非首次都会直接返回上次的值static DefaultInstance *instance = nil;if (instance == nil) {instance = [[DefaultInstance alloc]init];}return instance;
}@end

(2)正向传值

  • 在 ViewController.m 的跳转点击事件,为单例的属性值赋值
//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//单例传值---正向传递[DefaultInstance getInstance].instanceStr = @"单例传值";//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

  • 在 NextViewController.m 的 textFiled懒加载时赋值
-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;//单例传值---接收并显示_textFiled.text = [DefaultInstance getInstance].instanceStr;}return _textFiled;
}

  • 效果

(3)反向传值

  • 在 NextViewController.m 的返回点击事件中,为单例中的属性赋值
-(void)zlzBackClick{//单例传值---反向传递NSLog(@"单例传值---反向传递: %@",self.textFiled.text);[DefaultInstance getInstance].instanceStr = self.textFiled.text;// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

  • 在 ViewController.m 的 viewWillAppear() 方法中,获取单例属性值并展示
-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------First viewWillAppear");//单例传值---反向接收并展示NSLog(@"单例传值---反向接收并展示:%@", [DefaultInstance getInstance].instanceStr);self.label.text = [DefaultInstance getInstance].instanceStr;
}

  • 效果

2.3、NSUserDefaults传值

NSUserDefaults传值与单例传值类似,区别是单例传值是在内存中创建单例,而NSUserDefaults 则是在磁盘文件中的。

(1)正向传值

  • 在 ViewController.m 中的跳转点击事件中将值写入文件
//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//NSUserDefaults-正向传值(存入磁盘文件)[[NSUserDefaults standardUserDefaults] setObject:@"NSUserDefaults传值" forKey:@"zlzKey"];//写入[[NSUserDefaults standardUserDefaults] synchronize];//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

  • 在 NextViewController.m 的 textFiled 懒加载时赋值
-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;//NSUserDefaults传值---接受并显示(从磁盘文件中读取)_textFiled.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"zlzKey"];}return _textFiled;
}

  • 效果

(2)反向传值

  • 在 NextViewController.m 中的返回点击事件中将值写入文件
-(void)zlzBackClick{//NSUserDefaults传值---反向传递NSLog(@"NSUserDefaults传值---反向传递:%@", self.textFiled.text);[[NSUserDefaults standardUserDefaults] setObject:self.textFiled.text forKey:@"zlzBackKey"];[[NSUserDefaults standardUserDefaults] synchronize];// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

  • 在 ViewController.m 中的 viewWillAppear() 方法中获取文件中的值
-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------First viewWillAppear");//NSUserDefaults传值---反向接收并展示NSLog(@"NSUserDefaults---反向接收并展示:%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"zlzBackKey"]);self.label.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"zlzBackKey"];
}

  • 效果

2.4、代理传值

  • 代理传值主要应用于反向传值,即本示例中 NextViewController -> ViewController 传值
  • 委托方:NextViewController
  • 代理方:ViewController

(1)委托方 NextViewController 定义协议

  • 在 NextViewController.h 中创建协议

#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN//委托方定义协议
@protocol zlzPassValueDelegate <NSObject>//协议定义一个方法
-(void)passValue:(NSString*)value;@end@interface NextViewController : UIViewController//属性传值
@property (nonatomic, strong) NSString *str;//定义一个持有协议的id指针
//weak是为了防止指针循环引用
@property (weak)id<zlzPassValueDelegate> zlzDelegate;@endNS_ASSUME_NONNULL_END

  • 在 NextViewController.m 中调用协议方法
-(void)zlzBackClick{//代理传值---反向传递[self.zlzDelegate passValue:self.textFiled.text];// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

(2)代理方 ViewController 实现协议方法

  • 在 ViewController.m 中实现协议方法
#import "ViewController.h"
#import "NextViewController.h"@interface ViewController ()<zlzPassValueDelegate>   //遵守协议@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) UIButton *button;@end@implementation ViewController//...省略部分代码//代理传值---实现协议方法
-(void)passValue:(NSString *)value{self.label.text = value;
}@end

(3)绑定代理关系

  • 在 ViewController.m 的跳转点击事件中,设置 NextViewController 的代理是自己

//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//代理传值---设置代理关系nextVC.zlzDelegate = self;//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

2.5、block传值

block传值与代理传值有点类似,也是主要应用于反向传值,但是使用起来比代理传值要简单。

  • 在 NextViewController.h 中定义 block
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface NextViewController : UIViewController//属性传值
@property (nonatomic, strong) NSString *str;// 定义一个 block 进行页面反向传值
//copy属性是为了防止 block 循环引用
//block就是一个属性
//^就是block的标志
@property (copy) void (^zlzBlock)(NSString*);@endNS_ASSUME_NONNULL_END
  • 在 NextViewController.m 中的返回点击事件中调用 block 方法
-(void)zlzBackClick{//block传值---反向传递self.zlzBlock(self.textFiled.text);// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

  • 在 ViewController.m 中的跳转点击事件中实现 属性 block
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//block传值---实现block-接收来自页面2的值nextVC.zlzBlock = ^(NSString *value){self.label.text = value;};//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

2.6、通知传值

通知传值更灵活,主要用于跨页面跳转时。

类似于Android中的广播。

(1)接收方 ViewController

  • 在 ViewController.m 的跳转点击事件中,设置通知监听
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//通知传值---添加监听,等待页面2的传值//addObserver:self 添加监听者为自己//通知的名称zlzNotify//object:nil 表示所有的发送者,只要是名为zlzNotify通知的都监听接收[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dealWithNotify:) name:@"zlzNotify" object:nil];//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}//接收到通知后的处理---参数1:通知
-(void)dealWithNotify:(NSNotification*)notification{self.label.text = notification.userInfo[@"zlzNotificationKey"];
}

(2)发送方 NextViewController

  • 在 NextViewController.m 的返回点击事件中发送通知
-(void)zlzBackClick{//通知传值---发送通知//object:nil表示群发[[NSNotificationCenter defaultCenter]postNotificationName:@"zlzNotify" object:nil userInfo:@{@"zlzNotificationKey":self.textFiled.text}];// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

3、总结

属性传值简单的正向传值,不能跨页面传值
单例传值可以正向反向传值,可以跨页面,但是需要创建一个单例对象
NSUserDefaults传值类似单例传值,区别是单例传值是把值写入内存,而它是把值写入沙盒文件
代理传值主要用于反向传值,一对一,必须两个页面建立代理关系
block传值

主要用于反向传值,一对一

代理传值能做的它都能做,但他不能取代代理传值

通知传值可以跨页面传值,多对多

相关文章:

IOS界面传值-OC

1、页面跳转 由 ViewController 页面跳转至 NextViewController 页面 &#xff08;1&#xff09;ViewController ViewController.h #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend ViewController.m #import "ViewController.h" …...

阿里mod_asr3.0集成webrtc静音算法

alibabacloud-nls-cpp-sdk-master 先到阿里官网下载nls库的源代码&#xff0c;编译生成对应的库文件和头文件。 我编译的放到了以下目录。 /home/jp/2025/alibabacloud-nls-cpp-sdk-master/build/install/NlsSdk3.X_LINUX/include/ /home/jp/2025/alibabacloud-nls-cpp-sdk-…...

[Git] git pull --rebase / git rebase origin/master

1. git pull --rebase 这个命令是用来更新当前分支的&#xff0c;它会从远程仓库拉取更新&#xff0c;然后将你的本地提交重新应用到更新后的基础之上。它相当于先执行 git fetch&#xff0c;然后在当前分支上执行 git rebase origin/。使用 --rebase 而不是默认的 merge 可以…...

Leetcode​​​​​​​3270:求出数字答案

题目描述&#xff1a; 给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数…...

第十一章 施工监测

11 施工监测 11.1 施工监测主要内容、常用仪器与方法 11.1.1 主要内容 1.目的和意义 及时掌握工程自身及周边环境风险动态、通过分析和预测工程结构及周边环境的安全状态与发展趋势&#xff0c;优化调整设计参数和施工参数提供数据支撑。为今后同类工程施工提供类比资料 2…...

Python爬虫应用领域

Python爬虫作为一种强大的数据获取工具&#xff0c;在多个领域发挥着重要作用。以下是Python爬虫在不同领域的应用情况&#xff1a; 一、数据采集与分析 &#xff08;一&#xff09;市场调研 产品信息收集&#xff1a;爬取电商平台的产品详情、价格、销量、用户评价等数据&am…...

软件架构考试基础知识 002:进程的状态与其切换

进程状态转换的说明 在操作系统中&#xff0c;进程的状态表示其当前的执行情况和资源占用情况。进程状态的转换反映了操作系统如何管理和调度进程。以下是进程状态转换的说明&#xff1a; 1. 三态模型&#xff08;Three-state Model&#xff09; 三态模型是最基础的进程状态模…...

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解

首次突破月交付2万辆规模的小鹏汽车&#xff0c;稳吗&#xff1f; 本周&#xff0c;高工智能汽车研究院发布的最新监测数据显示&#xff0c;2024年11月&#xff0c;小鹏汽车在国内市场&#xff08;不含出口&#xff09;交付量&#xff08;上险口径&#xff0c;下同&#xff09…...

VideoPlayer插件的功能和用法

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节3. 示例代码4. 内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用的功能,不过Flutter官方…...

.NET体系架构

引言 .NET是由微软开发的一个广泛应用的开发平台&#xff0c;旨在帮助开发者构建各种类型的应用程序&#xff0c;包括桌面应用、Web应用、移动应用和云服务。最初&#xff0c;.NET平台的构建主要集中在Windows环境上&#xff0c;但随着.NET Core和随后.NET 5及以上版本的推出&…...

QT中引入OpenCV库总结(qmake方式和cmake方式)

文章目录 前言opencv环境配置一、opencv库获取的两种方式二、qmake和cmake配置2.1、 qmake2.2、cmake2.2.1、引入opencv示例 三、qt与opencv对应关系四、问题 前言 我的软件环境&#xff0c;写在前面 Windows10QT5.12.12VS2017OpenCV4.5.4 opencv环境配置 一、opencv库获取…...

matlab系列专栏-快捷键速查手册

目录 1在命令窗口(Command Window)中 2. 在编辑器(Editor)&#xff08;m文件&#xff09;中 1在命令窗口(Command Window)中 1)【↑、↓】——切换到之前、之后运行过的命令&#xff0c;可以重复按多次来达到想要的命令。 2)【Tab】——自动补全。在Command窗口&#xff0c…...

对于 NestJS + TypeORM 查询构造器分页功能的简单二次封装

NestJS 作为 Node.js 领域备受欢迎的框架&#xff0c;其与 TypeORM 的结合为开发者提供了强大的 ORM 能力&#xff0c;简化了数据库操作。然而&#xff0c;在处理分页查询时&#xff0c;直接在每个服务方法中重复编写分页逻辑既不高效也容易出错。为此&#xff0c;我们可以通过…...

Kafka消息队列出现消息堆积如何解决

Kafka消息队列出现消息堆积&#xff0c;通常是由于消息生产速度远大于消费速度&#xff0c;可能由消费者处理能力不足、网络问题、Kafka配置不合理等原因导致。以下从多个方面介绍应对消息堆积的方法&#xff1a; 消费者端优化 提升消费并行度 增加消费者实例数量&#xff1a…...

LeetCode hot100-100

287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。你设计的解决方案必须 不修改 数组…...

Vue.js:现代前端开发的灵活框架

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…...

CUDNN详解

文章目录 CUDNN详解一、引言二、cuDNN的基本使用1、初始化cuDNN句柄2、创建和设置描述符 三、执行卷积操作1、设置卷积参数2、选择卷积算法3、执行卷积 四、使用示例五、总结 CUDNN详解 一、引言 cuDNN&#xff08;CUDA Deep Neural Network library&#xff09;是NVIDIA为深度…...

下载并安装MySQL

在Linux系统上下载并安装数据库&#xff08;以MySQL为例&#xff09;的步骤如下&#xff1a; 一、下载MySQL 访问MySQL官网 打开浏览器&#xff0c;访问MySQL的官方网站&#xff1a;https://www.mysql.com/。 进入下载页面 在MySQL官网首页&#xff0c;找到并点击“Downloads…...

Linux ffmpeg 基础用法

简介 FFmpeg 是一个强大的开源多媒体框架&#xff0c;用于处理视频、音频和其他多媒体文件和流。它允许转换、录制、编辑、流媒体等等。 安装 Debian/Ubuntu sudo apt update sudo apt install ffmpegRed Hat/CentOS sudo dnf install ffmpegmacOS (via Homebrew) brew i…...

【C++入门】详解(中)

目录 &#x1f495;1.函数的重载 &#x1f495;2.引用的定义 &#x1f495;3.引用的一些常见问题 &#x1f495;4.引用——权限的放大/缩小/平移 &#x1f495;5. 不存在的空引用 &#x1f495;6.引用作为函数参数的速度之快&#xff08;代码体现&#xff09; &#x1f4…...

深度学习的加速器:Horovod,让分布式训练更简单高效!

什么是 Horovod&#xff1f; Horovod 是 Uber 开发的一个专注于深度学习分布式训练的开源框架&#xff0c;旨在简化和加速多 GPU、多节点环境下的训练过程。它以轻量级、易用、高性能著称&#xff0c;特别适合需要快速部署分布式训练的场景。Horovod 的名字来源于俄罗斯传统舞…...

计算机的错误计算(二百零八)

摘要 用两个大模型计算 arccot(0.9911588354432518e10) . 保留16位有效数字。两个的输出均是错误的。代码的输出格式亦均出错。 本节题目为一读者来信提议&#xff08;不知该题目有何玄机&#xff1f;&#xff09;。 例1. 计算 arccot(0.9911588354432518e10) . 保留16位有…...

海康机器人IPO,又近了一步

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家到本文底部评论区留言。 海康机器人的IPO之路&#xff0c;一路跌宕起伏&#xff0c;让无数投资者和业内人士关注。这不仅仅是一家企业的上市之旅&#xff0c;更是中国智能制造…...

【环境搭建】Metersphere v2.x 容器部署教程踩坑总结

前言 Metersphere部署过程中遇到的问题有点多&#xff0c;原因是其容器的架构蛮复杂的&#xff0c;比较容易踩坑&#xff0c;所以记录一下。 介绍 MeterSphere 是开源持续测试平台&#xff0c;遵循 GPL v3 开源许可协议&#xff0c;涵盖测试管理、接口测试、UI 测试和性能测…...

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…...

阅读笔记——《A survey of protocol fuzzing》

【参考文献】Zhang X, Zhang C, Li X, et al. A survey of protocol fuzzing[J]. ACM Computing Surveys, 2024, 57(2): 1-36.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&#xff0c;请联系作者删除。 目录 1、Introduction 2、Background 2.1、Communication Pro…...

C# 语法中级

总目录 C# 语法总目录 C# 语法中级 lambda 表达式1. 捕获外部变量2. 捕获迭代变量 匿名类型匿名方法异常相关1. 枚举器2. 可枚举对象3. 迭代器3. 迭代器语义4. yield break 语句5. 组合序列 可空类型1. Nullable< T > 结构体 lambda 表达式 编译器在内部将lambda表达式编…...

STORM:从多时间点2D图像中快速重建动态3D场景的技术突破

随着计算机视觉和机器学习技术的迅猛发展,我们已经能够利用AI来解决许多复杂的问题。然而,在处理大规模室外动态3D场景重建时,现有的方法往往面临着诸多挑战,如需要大量人工标注数据、处理速度慢以及难以准确捕捉移动物体等。为了解决这些问题,研究者们开发了STORM(Spati…...

excel前缀和(递增求和)

方法一&#xff1a;https://www.zhihu.com/zvideo/1382164996659515392?utm_id0 假设输入数据在B2:B10&#xff0c;选中单元格C2&#xff0c;输入SUM(B2:B2&#xff0c;然后选中其中的B2&#xff0c;按F4&#xff08;或者直接输入SUM(B$2:B2&#xff09;&#xff0c;回车确认&…...

【AI日记】25.01.11 Weights Biases | AI 笔记 notion

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales笔记&#xff1a;我的 AI 笔记主要记在两个地方 有道云笔记&#xff1a;数学公式和符号比较多的笔记notion&#xff1a;没什么数学公式的…...

做网站花多少钱/网络推广代理

本文介绍RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题&#xff0c;对第一次接触RSA的开发人员来说&#xff0c;RSA算是比较复杂的算法&#xff0c;天缘以后还会补充几篇RSA基础知识专题文章&#xff0c;用最简单最通俗的语言描述RSA&#xff0c;让各位了解RSA算法…...

泰和网站制作/营销推广的作用

摘自&#xff1a;http://www.cnblogs.com/justinw/archive/2006/12/29/607498.html下面这些故事个个都很经典&#xff0c;值得思考...------------------------------------犯戒 老和尚携小和尚游方&#xff0c;途遇一条河&#xff1b;见一女子正想过河&#xff0c;却又不敢过。…...

做网站那个公司/免费seo网站推荐一下

日期内核版本架构作者GitHubCSDN2016-05-29Linux-4.5X86 & armgatiemeLinuxDeviceDriversLinux进程管理与调度-之-进程的创建 前言 Linux下有3个特殊的进程&#xff0c;idle进程(PID0), init进程(PID1)和kthreadd(PID2) * idle进程由系统自动创建, 运行在内核态 idle进…...

做外语网站的公司/郑州seo推广

一、无卡支付 交易时需录入四要素完成支付&#xff0c;四要素包括&#xff1a;卡号、户名、身份证号、手机号&#xff0c;如果是信用卡还需要录入有效期和CVN&#xff0c;无卡支付平台一般的银行渠道还需要签约三方支付协议&#xff0c;具体取决于对接的银行或支付通道。 二、…...

网站建设做的人多吗/优化大师网页版

问题 C: 八皇后 时间限制: 1 Sec 内存限制: 128 MB 提交: 54 解决: 48 [提交][状态][讨论版][命题人:quanxing] 题目描述 会下国际象棋的人都很清楚&#xff1a;皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上&#xff08;有8 8个方格&#x…...

nginx wordpress 配置/百度搜索app下载

手把手制作一个IDEA插件(Demo搭建篇) - 掘金...