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

【iOS】UIPageViewController学习

UIPageViewController学习

  • 前言
  • 创建一个UIPageViewController
    • 最简单的使用
  • `UIPageViewController`的方法说明:
    • 效果展示
  • `UIPageViewController`的协议方法

前言

笔者最近在写项目时想实现一个翻书效果,上网学习到了UIPageViewController今天写本篇博客总结一下关于该控制器的学习,这里笔者学习较浅,后期再进行补充。下面我给出一张图来展现UIPageViewController的使用结构:
在这里插入图片描述

创建一个UIPageViewController

最简单的使用

首先新建一个类作为翻页视图控制器中具体的每一页视图控制器,使其继承与UIViewController :
ModelViewController类

#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface ModelViewController : UIViewController
+(ModelViewController *)creatWithIndex:(int)index;
@property(nonatomic,strong)UILabel * indexLabel;@end
NS_ASSUME_NONNULL_END#prama mark - ModelViewController.m#import "ModelViewController.h"
@interface ModelViewController ()
@end
@implementation ModelViewController
+(ModelViewController *)creatWithIndex:(int)index{ModelViewController * con = [[ModelViewController alloc]init];con.indexLabel = [[UILabel alloc]initWithFrame:CGRectMake(110, 200, 100, 30)];con.indexLabel.text = [NSString stringWithFormat:@"第%d页",index];[con.view addSubview:con.indexLabel];return con;
}这个方法调用时就会增加一个页面。
- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor redColor];
}
@end

***ViewControlller类:

#import "PageViewController.h"@interface PageViewController () <UIPageViewControllerDelegate, UIPageViewControllerDataSource>
@property (nonatomic, strong) UIPageViewController* pageViewControl;
@property (nonatomic, strong) NSMutableArray* dataArray;
@end@implementation PageViewController
- (void)viewDidLoad {[super viewDidLoad];//进行初始化_pageViewControl = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:@{UIPageViewControllerOptionSpineLocationKey:@0,UIPageViewControllerOptionInterPageSpacingKey:@10}];self.view.backgroundColor = [UIColor greenColor];//设置翻页视图的尺寸_pageViewControl.view.bounds=self.view.bounds;//设置数据源与代理_pageViewControl.dataSource=self;_pageViewControl.delegate=self;//创建初始界面ModelViewController * model = [ModelViewController creatWithIndex:1];//设置初始界面[_pageViewControl setViewControllers:@[model] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:nil];//设置是否双面展示_pageViewControl.doubleSided = NO;_dataArray = [[NSMutableArray alloc]init];[_dataArray addObject:model];[self.view addSubview:_pageViewControl.view];
}
//翻页控制器进行向前翻页动作 这个数据源方法返回的视图控制器为要显示视图的视图控制器
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{int index = (int)[_dataArray indexOfObject:viewController];if (index==0) {return nil;}else{return _dataArray[index-1];}
}
//翻页控制器进行向后翻页动作 这个数据源方法返回的视图控制器为要显示视图的视图控制器
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{int index = (int)[_dataArray indexOfObject:viewController];if (index==9) {return nil;}else{if (_dataArray.count - 1 >= (index + 1)) {return _dataArray[index + 1];}else{ModelViewController * model = [ModelViewController creatWithIndex:index + 2];[_dataArray addObject:model];return model;}}
}
//屏幕旋转触发的代理方法
- (UIPageViewControllerSpineLocation) pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation{return UIPageViewControllerSpineLocationMin;
}
//设置分页控制器的分页数
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {return 10;
}
//设置初始的分页点
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController{return 0;
}
@end

效果图:
在这里插入图片描述

  • UIPageViewControllerNavigationOrientationHorizontal:指定为水平滑动,还可以使用UIPageViewControllerNavigationOrientationVertical来进行竖直滑动。

UIPageViewController的方法说明:


//设置数据源
@property (nullable, nonatomic, weak) id <UIPageViewControllerDelegate> delegate;
//设置代理
@property (nullable, nonatomic, weak) id <UIPageViewControllerDataSource> dataSource;
//获取翻页风格
@property (nonatomic, readonly) UIPageViewControllerTransitionStyle transitionStyle;
//获取翻页方向
@property (nonatomic, readonly) UIPageViewControllerNavigationOrientation navigationOrientation;
//获取书轴类型
@property (nonatomic, readonly) UIPageViewControllerSpineLocation spineLocation;
//设置是否双面显示
@property (nonatomic, getter=isDoubleSided) BOOL doubleSided;
  1. 翻页风格:
typedef NS_ENUM(NSInteger, UIPageViewControllerTransitionStyle) {UIPageViewControllerTransitionStylePageCurl = 0, // 类似于滚动视图翻页效果UIPageViewControllerTransitionStyleScroll = 1 // 类似于书本翻页效果
};
  1. 翻页方向
typedef NS_ENUM(NSInteger, UIPageViewControllerNavigationOrientation) {UIPageViewControllerNavigationOrientationHorizontal = 0,//水平翻页UIPageViewControllerNavigationOrientationVertical = 1//竖直翻页
};
  1. spineLocation
typedef NS_ENUM(NSInteger, UIPageViewControllerSpineLocation) {//对于SCrollView类型的滑动效果 没有书轴 会返回下面这个枚举值UIPageViewControllerSpineLocationNone = 0, //以左边或者上边为轴进行翻转 界面同一时间只显示一个ViewUIPageViewControllerSpineLocationMin = 1,  //以中间为轴进行翻转 界面同时可以显示两个ViewUIPageViewControllerSpineLocationMid = 2, //以下边或者右边为轴进行翻转 界面同一时间只显示一个ViewUIPageViewControllerSpineLocationMax = 3   
};

- (void)setViewControllers:(NSArray<UIViewController *> *)viewControllers direction:(UIPageViewControllerNavigationDirection)direction animated:(BOOL)animated completion:(void (^)(BOOL finished))completion;方法详解
这个方法是用于以编程方式切换当前显示的页面,下面讲解一下他的参数:

  • viewControllers:传入的视图控制器,通常只传入一个(当且仅当spineLocation为UIPageViewControllerSpineLocationMid的时候需要传入两个控制器,即书脊效果下)
  • direction:控制页面的动画方向,上述参数中已讲解过。
  • completion:动画完成后的回调,可以更新UI等内容。

效果展示

通过上述方法的使用,我们可以画一个纸张翻页的效果,下面给出示例代码:
我们仅需要更改ViewController中的内容即可:

- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib._pageViewControl = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationVertical options:@{UIPageViewControllerOptionSpineLocationKey:@2,UIPageViewControllerOptionInterPageSpacingKey:@10}];self.view.backgroundColor = [UIColor greenColor];_pageViewControl.view.bounds=self.view.bounds;_pageViewControl.dataSource=self;_pageViewControl.delegate=self;ModelViewController * model = [ModelViewController creatWithIndex:1];ModelViewController * model2 = [ModelViewController creatWithIndex:2];[_pageViewControl setViewControllers:@[model,model2] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:nil];_pageViewControl.doubleSided = YES;//是否允许双面展示_dataArray = [[NSMutableArray alloc]init];[_dataArray addObject:model];[self.view addSubview:_pageViewControl.view];
}
- (UIPageViewControllerSpineLocation) pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation{return UIPageViewControllerSpineLocationMid;//仅在当前状态下,一张可以展示两个控制器
}

效果图请添加图片描述

UIPageViewController的协议方法

//向前翻页展示的ViewController
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController;
//向后翻页展示的ViewController
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController;
//设置分页控制器的分页点数
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController NS_AVAILABLE_IOS(6_0);
//设置当前分页控制器所高亮的点
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController NS_AVAILABLE_IOS(6_0);//翻页视图控制器将要翻页时执行的方法
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers NS_AVAILABLE_IOS(6_0);
//翻页动画执行完成后回调的方法
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed;
//屏幕防线改变时回到的方法,可以通过返回值重设书轴类型枚举
- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation;

总结
关于UIPageViewController笔者还有很多地方没有弄懂,对于其使用也仅仅局限于使用其实现仿真翻页效果,后期笔者还会补充其中内容。个人认为可以使用其实现无限轮播效果,并且更为简单方便,后期会尝试来实现一下。

相关文章:

【iOS】UIPageViewController学习

UIPageViewController学习 前言创建一个UIPageViewController最简单的使用 UIPageViewController的方法说明&#xff1a;效果展示 UIPageViewController的协议方法 前言 笔者最近在写项目时想实现一个翻书效果&#xff0c;上网学习到了UIPageViewController今天写本篇博客总结…...

GDB 调试命令详解:高效掌握常用调试技巧

&#x1f41e; GDB 调试命令详解&#xff1a;高效掌握常用调试技巧 GNU Debugger&#xff08;GDB&#xff09;是 Linux 下最强大的 C/C 调试工具。本文将系统梳理 GDB 的常用命令&#xff0c;覆盖运行控制、断点管理、变量查看、线程与进程调试等核心功能&#xff0c;助你快速掌…...

实验二 用递归下降法分析表达式实验

【实验目的】 1.掌握用递归下降分析法进行语法分析的方法。加深对自顶向下语法分析原理的理解。 2.掌握设计、编制并调试自顶向下语法分析程序的思想和方法。 3.本实验是高级语言程序设计、数据结构和编译原理中词法分析、自顶向下语法分析原理等知 识的综合。由于语法分析…...

【随身wifi】青龙面板保姆级教程

0.操作前必看 本教程基于Debian系统&#xff0c;从Docker环境。面板安装&#xff0c;到最后拉取脚本的使用。 可以拉库跑狗东京豆&#xff0c;elm红包等等&#xff0c;也可以跑写自己写的脚本&#xff0c;自行探索 重要的号别搞&#xff0c;容易黑号&#xff0c;黑号自己负责…...

从一到无穷大 #45:InfluxDB MCP Server 构建:从工程实践到价值重构

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 工程实践遇到的问题MCP Host选择开发流程 结果展现可能性展望工作生活带来的变化 MCP…...

app逆向专题五:新快报app数据采集

app逆向专题五:新快报app数据采集 一、抓包寻找数据接口二、编写代码三、完整代码一、抓包寻找数据接口 打开charles,并在手机端打开新快报app,点击“广州”或者“经济”等选项卡,抓包,寻找数据接口,如图所示: 二、编写代码 这里介绍一种简便的代码编写方法,在数据…...

使用 lm-eval 评估模型时报错:TypeError: ‘NoneType’ object is not callable 的解决方案

问题描述 在使用 lm-evaluation-harness 进行多 GPU 模型评估时&#xff0c;使用如下命令&#xff1a; accelerate launch --multi-gpu --num_processes 2 \-m lm_eval --model hf \--model_args pretrained${local_model_path} \--tasks mmlu \--batch_size 8 \--log_sample…...

脉冲耦合神经网络(PCNN):图像处理中的强大工具

文章目录 一、PCNN 的起源与背景二、PCNN 的基本原理(一)模型结构(二)工作方式(三)动态阈值与脉冲特征三、PCNN 在图像处理中的应用(一)图像分割(二)边缘检测(三)纹理分析四、PCNN 的实现与优化环境准备PCNN 类定义图像分割示例在图像处理和计算机视觉领域,神经网…...

【Git】从零开始使用git --- git 的基本使用

哪怕是野火焚烧&#xff0c;哪怕是冰霜覆盖&#xff0c; 依然是志向不改&#xff0c;依然是信念不衰。 --- 《悟空传》--- 从零开始使用git 了解 Gitgit创建本地仓库初步理解git结构版本回退 了解 Git 开发场景中&#xff0c;文档可能会经历若干版本的迭代。假如我们不进行…...

React Hooks 的使用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

【NIO番外篇】之组件 Channel

目录 一、什么是NIO Channel&#xff1f;二、常见的Channel组件及其用法1. FileChannel2. SocketChannel3. ServerSocketChannel4. DatagramChannel &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;可以多多支持一下&a…...

探秘 Ruby 与 JavaScript:动态语言的多面风采

1 语法特性对比&#xff1a;简洁与灵活 1.1 Ruby 的语法优雅 Ruby 的语法设计旨在让代码读起来像自然语言一样流畅。它拥有简洁而富有表现力的语法结构&#xff0c;例如代码块、符号等。 以下是一个使用 Ruby 进行数组操作的简单示例&#xff1a; # 定义一个数组 numbers [1…...

高频面试题(含笔试高频算法整理)基本总结回顾21

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

深入浅出一下Python函数的核心概念与进阶应用

本篇技术博文摘要 &#x1f31f; 本文系统梳理了Python函数的核心知识点&#xff0c;从基础概念到高级特性&#xff0c;构建了完整的函数编程知识体系。内容涵盖&#xff1a;变量作用域的局部与全局划分、函数注释的规范写法、参数传递中值与引用的区别、匿名函数的灵活应用&am…...

【漫话机器学习系列】198.异常值(Outlier)

异常值&#xff08;Outlier&#xff09;全面指南 —— 检测、分析与处理 作者&#xff1a;Chris Albon&#xff08;图源&#xff09; 场景&#xff1a;数据清洗与特征工程必备技能 一、什么是异常值&#xff08;Outlier&#xff09; 定义 异常值&#xff08;Outlier&#xff0…...

React 记账本项目实战:多页面路由、Context 全局

在本文中,我们将分享一个使用 React 开发的「记账本」项目的实战经验。该项目通过 VS Code 完成,包含首页、添加记录页、编辑页等多个功能页面,采用了 React Router 实现路由导航,使用 Context API 管理全局的交易记录状态,并引入数据可视化组件呈现不同月份的支出情况。项…...

[React] 如何用 Zustand 构建一个响应式 Enum Store?附 RTKQ 实战与 TS 架构落地

[React] 如何用 Zustand 构建一个响应式 Enum Store&#xff1f;附 RTKQ 实战与 TS 架构落地 本文所有案例与数据为作者自行构建&#xff0c;所有内容均为技术抽象示例&#xff0c;不涉及任何实际商业项目 自从之前尝试了一下 zustand 之后&#xff0c;就发现 zustand 是一个轻…...

DeepSeek在职场办公中的高效指令运用与策略优化

摘要 随着人工智能技术的飞速发展&#xff0c;大型语言模型在各个领域的应用日益广泛。DeepSeek作为一款具有影响力的AI产品&#xff0c;为职场办公带来了新的变革与机遇。本文深入剖析DeepSeek在职场办公场景下的提示词指令运用&#xff0c;通过对提示词概念、作用、设计原则的…...

mysql事务脏读 不可重复读 幻读 事务隔离级别关系

看了很多文档&#xff0c;发现针对事务并发执行过程中的数据一致性问题&#xff0c;即脏读、不可重复读、幻读的解释一塌糊涂&#xff0c;这也不能说什么&#xff0c;因为官方SQL标准中的定义也模糊不清。 按照mysql中遵循的事务隔离级别&#xff0c;可以梳理一下其中的关系 隔…...

Fork/Join框架与线程池对比分析

Fork/Join框架与线程池对比分析 1. 概述 线程池&#xff08;如ThreadPoolExecutor&#xff09;是Java并发编程中用于管理线程生命周期的通用工具&#xff0c;适用于处理大量独立任务。Fork/Join框架&#xff08;基于ForkJoinPool&#xff09;是Java 7引入的专用框架&#xff…...

docker 安装 Gitlab

GitLab 安装 #创建容器数据卷映射目录 mkdir -p /usr/docker/gitlab/config mkdir -p /usr/docker/gitlab/logs mkdir -p /usr/docker/gitlab/data #目录授权 chmod 777 -R /usr/docker/gitlab/*#直接复制可用&#xff08;记得改下宿主机ipv4,不知道怎么看&#xff0c;输入i…...

【贪心之摆动序列】

题目&#xff1a; 分析&#xff1a; 这里我们使用题目中给的第二个实例来进行分析 题目中要求我们序列当中有多少个摆动序列&#xff0c;摆动序列满足一上一下&#xff0c;一下一上&#xff0c;这样是摆动序列&#xff0c;并且要输出摆动序列的最长长度 通过上面的图我们可以…...

kubectl修改资源时添加注解

kubectl修改资源时添加注解 kubectl修改资源时添加注解老版本的注解(变化注解)删除Annotations查看Annotations信息 查看发布记录回滚 kubectl修改资源时添加注解 参考: 为什么我们要使用kubectl apply 修改资源时,在命令行后添加 --save-configtrue ,就会自动添加此次修改的…...

【C++初学】课后作业汇总复习(四) 复数类与运算符重载

1、复数类输出 如题&#xff0c;要求实现&#xff1a; 1、复数类含两个参数的构造函数&#xff0c;一个为实部&#xff0c;一个为虚部 2、用Show()现实复数的值。 输出 (23i&#xff09; //如题&#xff0c;要求实现&#xff1a; // //1、复数类含两个参数的构造函数&…...

十四、C++速通秘籍—函数式编程

目录 上一章节&#xff1a; 一、引言 一、函数式编程基础 三、Lambda 表达式 作用&#xff1a; Lambda 表达式捕获值的方式&#xff1a; 注意&#xff1a; 四、函数对象 函数对象与普通函数对比&#xff1a; 五、函数适配器 1、适配普通函数 2、适配 Lambda 表达式 …...

复刻系列-星穹铁道 3.2 版本先行展示页

复刻星穹铁道 3.2 版本先行展示页 0. 视频 手搓&#xff5e;星穹铁道&#xff5e;展示页&#xff5e;&#xff5e;&#xff5e; 1. 基本信息 作者: 啊是特嗷桃系列: 复刻系列官方的网站: 《崩坏&#xff1a;星穹铁道》3.2版本「走过安眠地的花丛」专题展示页现已上线复刻的网…...

阿里云备案有必要选择备案管家服务吗?自己ICP备案可以吗?

阿里云备案有必要选择备案管家服务吗&#xff1f;新手可以选择备案管家&#xff0c;备案管家不需要自己手动操作&#xff0c;可以高效顺利通过ICP备案。自己ICP备案可以吗&#xff1f;自己备案也可以的&#xff0c;也很简单&#xff0c;适合动手能力强的同学。 阿里云备案管家…...

SQL语言基础(二)--以postersql为例

上次教程我们讲述了数据库中的增&#xff0c;删&#xff0c;改语句&#xff0c;今天我们来学习最后一个–‘改’的语句。 1.select语法 数据库查询只有select一个句子&#xff0c;但select语法相对复杂&#xff0c;其功能丰富&#xff0c;使用方式也很灵活 SELECT [ALL|Dist…...

探索 Rust 语言:高效、安全与并发的完美融合

在当今的编程语言领域&#xff0c;Rust 正以其独特的魅力吸引着越来越多开发者的目光。它诞生于 Mozilla 实验室&#xff0c;旨在解决系统编程中长久以来存在的难题&#xff0c;如今已成为构建可靠、高效软件的有力工具。 1 内存安全 Rust 通过所有权&#xff08;ownership&a…...

最大公约数和最小倍数 java

在Java中&#xff0c;计算两个数的最大公约数&#xff08;Greatest Common Divisor, GCD&#xff09;和最小公倍数&#xff08;Least Common Multiple, LCM&#xff09;是常见的编程问题。以下是具体的实现方法和代码示例。 --- ### **1. 最大公约数 (GCD)** 最大公约数是指…...

OpenHarmony Camera开发指导(三):相机设备输入输出(ArkTS)

相机应用可通过创建相机输入流调用并控制相机设备&#xff0c;创建不同类型的输出流&#xff0c;进而实现预览、拍照、录像等基础功能。 开发步骤 在创建相机设备输入之前需要先完成相机设备管理&#xff0c;详细开发步骤可参考上一篇文章。 创建相机输入流 通过cameraMana…...

通过分治策略解决内存限制问题完成大型Hive表数据的去重的PySpark代码实现

在Hive集群中&#xff0c;有一张历史交易记录表&#xff0c;要从这张历史交易记录表中抽取一年的数据按某些字段进行Spark去重&#xff0c;由于这一年的数据超过整个集群的内存容量&#xff0c;需要分解成每个月的数据&#xff0c;分别用Spark去重&#xff0c;并保存为Parquet文…...

融媒体中心智能语音识别系统设计与实现

县级融媒体中心智能语音识别系统设计与实现 序言 随着融媒体时代的快速发展&#xff0c;新闻采编、专题节目制作对语音转写效率的要求日益提高。作为基层融媒体中心的技术工程师&#xff0c;我们在实际工作中常面临以下痛点&#xff1a; 采访录音整理耗时&#xff1a;传统人…...

学习笔记九——Rust所有权机制

&#x1f980; Rust 所有权机制 &#x1f4da; 目录 什么是值类型和引用类型&#xff1f;值语义和引用语义&#xff1f;什么是所有权&#xff1f;为什么 Rust 需要它&#xff1f;所有权的三大原则&#xff08;修正版&#xff09;移动语义 vs 复制语义&#xff1a;变量赋值到底…...

计算机视觉算法实现——电梯禁止电瓶车进入检测:原理、实现与行业应用(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 1. 电梯安全检测领域概述 近年来&#xff0c;随着电动自行车&#xff08;以下简称"电瓶车"&…...

扩散模型 Diffusion Model 整体流程详解

&#x1f9e0; Diffusion Model 思路、疑问和代码 文章目录 &#x1f9e0; Diffusion Model 思路、疑问和代码&#x1f504; 一、核心思想&#xff1a;从噪声到图像&#x1f4e6; 二、正向过程&#xff1a;加噪&#x1f9e0; 三、反向过程&#xff1a;学习去噪&#x1f3af; 目…...

[Spark]深入解密Spark SQL源码:Catalyst框架如何优雅地解析你的SQL

本文内容组织形式 总结具体例子执行语句解析层优化层物理计划层执行层 猜你喜欢PS 总结 先写个总结&#xff0c;接下来会分别产出各个部分的源码解析&#xff0c;Spark SQL主要分为以下五个执行部分。 具体例子 接下来举个具体的例子来说明 执行语句 SELECT name, age FR…...

【数据结构_7】栈和队列(上)

一、概念 栈和队列&#xff0c;也是基于顺序表和链表实现的 栈是一种特殊的线性表&#xff0c;其只允许在固定的一段进行插入和删除元素操作。 遵循后进先出的原则 此处所见到的栈&#xff0c;本质上就是一个顺序表/链表&#xff0c;但是&#xff0c;实在顺序表/链表的基础…...

Linux中的cat命令常见用法

在 Linux 中&#xff0c;cat 命令是 concatenate&#xff08;连接&#xff09;的缩写&#xff0c;意思是“连接”或“串联”。 基本功能 cat 命令的主要功能是用于查看、合并和创建文件。它会将一个或多个文件的内容输出到标准输出设备&#xff08;通常是终端屏幕&#xff09…...

css - 实现三角形 div 容器,用css画一个三角形(提供示例源码)简单粗暴几行代码搞定!

效果图 如下图所示&#xff0c;让一个 div 变成三角形&#xff0c;并且可随意更改大小&#xff0c; 本文提供了可运行示例源码&#xff0c;直接复制即可。 实现源码 建议创建一个 demo.html 文件&#xff0c;一键复制代码运行。 <style> .div{width: 0px;height: 0px…...

springboot 项目 jmeter简单测试流程

测试内容为 主机地址随机数 package com.hainiu.example;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotat…...

设计模式实践:模板方法、观察者与策略模式详解

目录 1 模板方法1.1 模板方法基本概念1.2 实验1.2.1 未使用模板方法实现代码1.2.2 使用模板方法的代码 2 观察者模式2.1 观察者模式基本概念2.2 实验 3 策略模式3.1 策略模式基本概念3.2 实验 1 模板方法 1.1 模板方法基本概念 定义&#xff1a;一个操作中的算法的骨架 &…...

Google的AI模型Gemini和Gemini网络协议

粉丝私信问我&#xff1a;gemini如何访问&#xff1f; "Gemini如何访问"需明确区分两种完全不同的技术体系&#xff1a;Google的AI模型Gemini和Gemini网络协议。以下是两者的访问方式详解&#xff1a; 一、访问Google的Gemini AI模型 1. 通过Web应用 地址&#xf…...

HTTP实现心跳模块

HTTP实现心跳模块 使用轻量级的cHTTP库cpp-httplib重现实现HTTP心跳模块 头文件HttplibHeartbeat.h #ifndef HTTPLIB_HEARTBEAT_H #define HTTPLIB_HEARTBEAT_H#include <string> #include <thread> #include <atomic> #include <chrono> #include …...

基于web的民宿信息系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着信息时代的来临&#xff0c;民宿过去的民宿信息方式的缺点逐渐暴露&#xff0c;对过去的民宿信息的缺点进行分析&#xff0c;采取计算机方式构建民宿信息系统。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;提出了一种民宿信息管理、民宿信息管理…...

使用OpenSceneGraph (osg)实现一个星系漫游

简介 使用OpenSceneGraph (osg)实现了一个太阳系漫游的程序&#xff0c;具有以下特点&#xff1a; 1.通过按键控制飞行器前进后退、空间姿态&#xff1b; 2.星系渲染&#xff1b; 3.背景星空渲染&#xff1b; 效果 提供了一张超大的星空背景图 代码示例 int main(int a…...

笔试专题(九)

文章目录 十字爆破&#xff08;暴力&#xff09;题解代码 比那名居的桃子&#xff08;滑动窗口/前缀和&#xff09;题解代码 分组&#xff08;暴力枚举 优化二分&#xff09;题解代码 十字爆破&#xff08;暴力&#xff09; 题目链接 题解 1. 暴力 预处理 2. 如果单纯的暴…...

sklearn决策树 待更新

注意&#xff1a;sklearn中所有的决策树模型包括回归决策树实现的是CART决策树算法&#xff0c;在官方文档中有介绍。sklearn中的决策树模型最终得到的树结构都是二叉树&#xff0c;因为CART算法生成的就是二叉树。 DecisionTreeClassifier类 如果待预测样本有多个类别具有相同…...

eino v0.3.21 重磅发布!节点中断控制+空值映射支持,AI应用开发再添神器!​

CloudWeGo/eino v0.3.21 作为最新补丁版本&#xff0c;聚焦流程控制与数据映射两大核心场景&#xff0c;为AI应用与微服务开发者提供更灵活的调试能力与容错设计&#xff01; 1. 节点中断控制&#xff08;Feat: Node Interrupt&#xff09; • 功能亮点&#xff1a;新增 node …...

力扣每日打卡 50. Pow(x, n) (中等)

[TOC](力扣 50. Pow(x, n) 中等) 前言 这是刷算法题的第十一天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 50. Pow(x, n) (中等) 一、题目内容 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1…...