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 页面 (1)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库的源代码,编译生成对应的库文件和头文件。 我编译的放到了以下目录。 /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 这个命令是用来更新当前分支的,它会从远程仓库拉取更新,然后将你的本地提交重新应用到更新后的基础之上。它相当于先执行 git fetch,然后在当前分支上执行 git rebase origin/。使用 --rebase 而不是默认的 merge 可以…...
Leetcode3270:求出数字答案
题目描述: 给你三个 正 整数 num1 ,num2 和 num3 。 数字 num1 ,num2 和 num3 的数字答案 key 是一个四位数,定义如下: 一开始,如果有数字 少于 四位数,给它补 前导 0 。答案 key 的第 i 个数…...
第十一章 施工监测
11 施工监测 11.1 施工监测主要内容、常用仪器与方法 11.1.1 主要内容 1.目的和意义 及时掌握工程自身及周边环境风险动态、通过分析和预测工程结构及周边环境的安全状态与发展趋势,优化调整设计参数和施工参数提供数据支撑。为今后同类工程施工提供类比资料 2…...
Python爬虫应用领域
Python爬虫作为一种强大的数据获取工具,在多个领域发挥着重要作用。以下是Python爬虫在不同领域的应用情况: 一、数据采集与分析 (一)市场调研 产品信息收集:爬取电商平台的产品详情、价格、销量、用户评价等数据&am…...
软件架构考试基础知识 002:进程的状态与其切换
进程状态转换的说明 在操作系统中,进程的状态表示其当前的执行情况和资源占用情况。进程状态的转换反映了操作系统如何管理和调度进程。以下是进程状态转换的说明: 1. 三态模型(Three-state Model) 三态模型是最基础的进程状态模…...

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解
首次突破月交付2万辆规模的小鹏汽车,稳吗? 本周,高工智能汽车研究院发布的最新监测数据显示,2024年11月,小鹏汽车在国内市场(不含出口)交付量(上险口径,下同)…...

VideoPlayer插件的功能和用法
文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节3. 示例代码4. 内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用的功能,不过Flutter官方…...
.NET体系架构
引言 .NET是由微软开发的一个广泛应用的开发平台,旨在帮助开发者构建各种类型的应用程序,包括桌面应用、Web应用、移动应用和云服务。最初,.NET平台的构建主要集中在Windows环境上,但随着.NET Core和随后.NET 5及以上版本的推出&…...
QT中引入OpenCV库总结(qmake方式和cmake方式)
文章目录 前言opencv环境配置一、opencv库获取的两种方式二、qmake和cmake配置2.1、 qmake2.2、cmake2.2.1、引入opencv示例 三、qt与opencv对应关系四、问题 前言 我的软件环境,写在前面 Windows10QT5.12.12VS2017OpenCV4.5.4 opencv环境配置 一、opencv库获取…...
matlab系列专栏-快捷键速查手册
目录 1在命令窗口(Command Window)中 2. 在编辑器(Editor)(m文件)中 1在命令窗口(Command Window)中 1)【↑、↓】——切换到之前、之后运行过的命令,可以重复按多次来达到想要的命令。 2)【Tab】——自动补全。在Command窗口,…...
对于 NestJS + TypeORM 查询构造器分页功能的简单二次封装
NestJS 作为 Node.js 领域备受欢迎的框架,其与 TypeORM 的结合为开发者提供了强大的 ORM 能力,简化了数据库操作。然而,在处理分页查询时,直接在每个服务方法中重复编写分页逻辑既不高效也容易出错。为此,我们可以通过…...
Kafka消息队列出现消息堆积如何解决
Kafka消息队列出现消息堆积,通常是由于消息生产速度远大于消费速度,可能由消费者处理能力不足、网络问题、Kafka配置不合理等原因导致。以下从多个方面介绍应对消息堆积的方法: 消费者端优化 提升消费并行度 增加消费者实例数量:…...
LeetCode hot100-100
287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。你设计的解决方案必须 不修改 数组…...

Vue.js:现代前端开发的灵活框架
大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...

CUDNN详解
文章目录 CUDNN详解一、引言二、cuDNN的基本使用1、初始化cuDNN句柄2、创建和设置描述符 三、执行卷积操作1、设置卷积参数2、选择卷积算法3、执行卷积 四、使用示例五、总结 CUDNN详解 一、引言 cuDNN(CUDA Deep Neural Network library)是NVIDIA为深度…...
下载并安装MySQL
在Linux系统上下载并安装数据库(以MySQL为例)的步骤如下: 一、下载MySQL 访问MySQL官网 打开浏览器,访问MySQL的官方网站:https://www.mysql.com/。 进入下载页面 在MySQL官网首页,找到并点击“Downloads…...
Linux ffmpeg 基础用法
简介 FFmpeg 是一个强大的开源多媒体框架,用于处理视频、音频和其他多媒体文件和流。它允许转换、录制、编辑、流媒体等等。 安装 Debian/Ubuntu sudo apt update sudo apt install ffmpegRed Hat/CentOS sudo dnf install ffmpegmacOS (via Homebrew) brew i…...

【C++入门】详解(中)
目录 💕1.函数的重载 💕2.引用的定义 💕3.引用的一些常见问题 💕4.引用——权限的放大/缩小/平移 💕5. 不存在的空引用 💕6.引用作为函数参数的速度之快(代码体现) Ǵ…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...