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

【iOS】-- GET和POST(NSURLSession)

文章目录

  • NSURLSession
    • GET和POST区别
  • GET方法
    • GET请求步骤
  • POST
    • POST请求步骤
  • NSURLSessionDataDelegate代理方法
  • AFNetWorking
    • 添加头文件
    • GET
    • POST
      • 第一种
      • 第二种


NSURLSession

使用NSURLSession,一般有两步操作:通过NSURLSession的实例创建task;执行task。
NSURLSessionTask,也就是task,可以把它当作所谓的任务。
NSURLSessionTask是一个抽象子类,它有三个可以直接使用的具体子类:NSURLSessionDataTaskNSURLSessionUploadTaskNSURLSessionDownloadTask。这三个类应用的三个基本网络任务:获取数据、上传文件、下载文件。与数据有关的NSURLSessionDataTask也可以胜任上传下载的任务,所以在iOS开发中经常使用。

HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。

GET和POST区别

  • 最主要的区别是GET是从API里面取数据,POST是向API里发数据。
  • GET使用URL或Cookie传参。而POST将数据放在BODY中。
  • GET的URL会有长度上的限制,则POST的数据则可以非常大。
  • POST比GET安全,因为数据在地址栏上不可见。
  • 对于GET只需要跑一趟就可以把数据传输到位,而POST则需要先去进行一个请求的过程,然后在把数据安排到位!
  • GET 安全性非常低,POST安全性较高。但是执行效率却比POST方法好。

GET方法

GET请求步骤

  • 确定请求路径URL(也就是后台提供的接口)。
  • 创建请求对象NSURLRequest(如不加设置请求方法和请求头,则使用默认请求头和GET请求方法)。
  • 创建会话对象NSURLSession
  • 创建请求任务NSURLSessionDataTask(根据需求选择合适的任务类型)。
  • 执行任务
  • 解析请求返回的数据
//1.创建URL对象NSURL *url = [NSURL URLWithString:@"http://s2.s100.vip:9886/valountary/user/SendString"];//2.创建请求对象//第一个参数是你的URL//第二个参数是请求的缓存策略//第三个参数是设置请求超时时间NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];//3.设置请求方法为post[request setHTTPMethod:@"POST"];//4.设置请求头信息//key(头字段名(不区分大小写)):Content-Type,//Value(头字段值)为下面三种:(还是得根据后台给的来设置)//application/x-www-form-urlencoded(后台接收为分开的参数时,如?name=liyu&password=123)//application/json(后台接收为json对象时)//multipart/form-data(上传文件时)[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//5.设置请求体NSString *param = [NSString stringWithFormat:@"username:%@;password:%@", self.userName, self.passWord];//把拼接后的字符串转换为data,设置请求体(这个data就是请求体)request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];//6.建立会话 session支持三种类型的任务//    NSURLSessionDataTask  //加载数据//    NSURLSessionDownloadTask  //下载//    NSURLSessionUploadTask   //上传NSURLSession *session = [NSURLSession sharedSession];//7.创建请求任务//NSLog(@"```%@",request.HTTPBody);NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {//data就是你获取到的数据,你可以自行对其进行解析//error就是获取失败时出现的问题if (!error) {NSLog(@"-----%@", [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]);} else {NSLog(@"666");}}];//8.启动任务[dataTask resume];

POST

POST请求步骤

  • 确定请求路径URL(也就是后台提供的接口)。
  • 创建请求对象NSMutableURLRequest,设置请求方式为post。
  • 设置请求体,根据后台所要求的数据格式以及类型(json、xml等等)设置。
  • 若有些后台接口有请求头,则还应该设置请求头。
  • 创建会话对象NSURLSession
  • 创建请求任务NSURLSessionDataTask(根据需求选择合适的任务类型)。
  • 执行任务
  • 解析请求返回的数据
    //1.创建URL对象NSURL *url = [NSURL URLWithString:@"你要获取的地址"];//2.创建请求对象//第一个参数是你的URL//第二个参数是请求的缓存策略//第三个参数是设置请求超时时间NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];//3.设置请求方法为post[request setHTTPMethod:@"POST"];//4.设置请求头信息//key(头字段名(不区分大小写)):Content-Type,//Value(头字段值)为下面三种:(还是得根据后台给的来设置)//application/x-www-form-urlencoded(后台接收为分开的参数时,如?name=liyu&password=123)//application/json(后台接收为json对象时)//multipart/form-data(上传文件时)[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//5.设置请求体NSString *param = [NSString stringWithFormat:@"username = %@ & pwd = %@", self.username.text, self.pwd.text];//把拼接后的字符串转换为data,设置请求体(这个data就是请求体)request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];//6.建立会话 session支持三种类型的任务//    NSURLSessionDataTask  //加载数据//    NSURLSessionDownloadTask  //下载//    NSURLSessionUploadTask   //上传NSURLSession *session = [NSURLSession sharedSession];//7.创建请求任务NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {//data就是你获取到的数据,你可以自行对其进行解析//error就是获取失败时出现的问题}];//8.启动任务[dataTask resume];

NSURLSessionDataDelegate代理方法

如果项目需要在网络请求数据的过程中,要做进一步的处理的话,需要调用NSURLSession的代理方法。

通常,使用代理方法需要先设置代理对象,但是通过查看NSURLSessionDataDelegate文档,我们可以看到如下,代理属性delegate为只读状态。

那么我们需要怎样设置代理对象呢?下面我们是代理方法的使用步骤。


#import <UIKit/UIKit.h>@interface ViewController : UIViewController
<NSURLSessionDataDelegate>
@property (nonatomic, copy) NSMutableData *receiveData;
@end// 1.delegateQueue参数表示协议方法将会在(NSOperationQueue)队列里面执行。(session的delegate属性是只读的,所以使用如下方法设置代理。)NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];// 2.创建任务(因为要使用代理方法,就不需要block方式的初始化了)NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://xxx/phonelogin?yourname=%@&yourpass=%@&btn=login",@"name",@"password"]];NSURLSessionDataTask *task = [session dataTaskWithRequest:[NSURLRequest requestWithURL:url]];// 3.执行任务[task resume];// 1.接收到服务器的响应
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler {//注意://此处需要允许处理服务器的响应,才会继续加载服务器的数据。//若在接收响应时需要对返回的参数进行处理(如获取响应头信息等),那么这些处理应该放在该允许操作的前面。completionHandler(NSURLSessionResponseAllow);
}// 2.接收到服务器的数据(此方法在接收数据过程会多次调用)
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {// 处理每次接收的数据[self.receiveData appendData:data];
}// 3.任务完成时调用(如果成功,error == nil)
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {if (error == nil) {/*请求完成,成功或者失败的处理*/}else {NSLog(@"请求失败:%@", error);}
}

AFNetWorking

AFNetworking作为第三方库添加方式和之前博客中提到的Masonry,JSONModel等相似。

AFNetworking是一个功能非常强大的框架,主要是用于网络请求,把复杂的原生代码封装好,我们只需要简单的几步就可以完成网络请求。

添加头文件

#import "AFNetworking.h"//主要用于网络请求方法
#import "UIKit+AFNetworking.h"//里面有异步加载图片的方法

GET

AFHTTPSessionManager* manager = [AFHTTPSessionManager manager];manager GET:<#(nonnull NSString *)#> parameters:<#(nullable id)#> progress:<#^(NSProgress * _Nonnull downloadProgress)downloadProgress#> success:<#^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)success#> failure:<#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure#>         //第一个参数:NSString类型的请求路径,AFNetworking内部会自动将该路径包装为                                                    一个url并创建请求对象//第二个参数:请求参数,此处为nil//第三个参数:进度回调,此处为nil//第四个参数:请求成功之后回调Block//第五个参数:请求失败回调Block
[manager GET:@"https://news-at.zhihu.com/api/4/news/before/20221023" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {NSLog(@"GET 请求成功, %@", responseObject[@"date"]);//self.AFNetWorkTestGETDictionary = responseObject;} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(@"GET 失败");}];

请添加图片描述

POST

第一种

manager POST:<#(nonnull NSString *)#> parameters:<#(nullable id)#> progress:<#^(NSProgress * _Nonnull uploadProgress)uploadProgress#> success:<#^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)success#> failure:<#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure#>//第一个参数:NSString类型的请求路径,AFN内部会自动将该路径包装为一个URL并创建请求对象//第二个参数:请求参数,以字典的方式传递,AFN内部会判断当前是POST请求还是GET请求,用来选择我直接拼接还是转换为NSData放到请求体中传递//第三个参数:进度回调,此处为nil//第四个参数:请求成功后对调Block//第五个参数:请求失败后回调Block
#import <UIKit/UIKit.h>@interface ViewController : UIViewController
<NSURLSessionDataDelegate>
@property (nonatomic, copy) NSMutableData *receiveData;
@property (nonatomic, copy) NSMutableDictionary *AFNetWorkTestPOSTDictionary;
@endAFHTTPSessionManager* manager = [AFHTTPSessionManager manager];//创建参数[self.AFNetWorkTestPOSTDictionary setObject:@"Viper" forKey:@"userName"];[self.AFNetWorkTestPOSTDictionary setObject:@"Viper333" forKey:@"passWord"];//发送POST请求[manager POST:@"要上传的URL" parameters:self.AFNetWorkTestPOSTDictionary progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {//responseObject是请求成功返回的相应结果,在AFN内部已经把相应结果转换为OC对象,通常是字典或者数组} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(@"POST Failed");}];

第二种

manager POST:<#(nonnull NSString *)#> parameters:<#(nullable id)#> constructingBodyWithBlock:<#^(id<AFMultipartFormData>  _Nonnull formData)block#> progress:<#^(NSProgress * _Nonnull uploadProgress)uploadProgress#> success:<#^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)success#> failure:<#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure#>//第一个参数:请求路径(NSString类型)//第二个参数:非文件参数,以字典方式传递//第三个参数:constructingBodyWithBlock在该回调中拼接文件参数//第四个参数:progress//进度回调uploadProgress.completedUnitCount:已经上传的数据大小//uploadProgress.totalUnitCount:数据的总大小//第五个参数:success 请求成功的回调//task:上传Task//responseObject:服务器返回的响应体信息//第六个参数:failure 请求失败的回调//task:上传Task//error:错误信息
//创建会话管理者AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];//处理非文件的参数,模拟上传账号密码self.AFNetWorkTestPOSTDictionary = [[NSMutableDictionary alloc] init];[self.AFNetWorkTestPOSTDictionary setObject:@"Viper" forKey:@"userName"];[self.AFNetWorkTestPOSTDictionary setObject:@"Viper333" forKey:@"passWord"];//发送POST请求上传文件[manager POST:@"https://news-at.zhihu.com/api/4/news/before/20221023" parameters:self.AFNetWorkTestPOSTDictionary  constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {// 混合的数据为头像// 获取头像// 把头像转化为DataUIImage *image = [UIImage imageNamed:@"1.png"];NSData *imageData = UIImagePNGRepresentation(image);//在BLOCK进行参数拼接//ImageUp.png是上传到服务器知乎以什么方式保存// 什么是MIME Type : 参考博客:https://www.cnblogs.com/jsean/articles/1610265.html[formData appendPartWithFileData:imageData name:@"file" fileName:@"1.png" mimeType:@"image/png"];//[formData appendPartWithFileURL:fileUrl name:@"file"fileName:@"Image7.png" mimeType:@"image/png" error:nil];//[formData appendPartWithFileURL:fileUrl name:@"file" error:nil];} progress:^(NSProgress * _Nonnull uploadProgress) {//        progress 进度回调;//uploadProgress.completedUnitCount:已经上传的数据大小//uploadProgress.totalUnitCount:数据的总大小NSLog(@"%f", 1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {NSLog(@"POST UP Succeed!");} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(@"POST UP Failed");}];
 UIImage *image = [UIImage imageNamed:@"IMAGE.png"];NSData *imageData = UIImagePNGRepresentation(image);
  第一个参数:要上传的文件二进制数据第二个参数:文件参数对应的参数名称,此处为file是该台服务器规定的第三个参数:该文件上传到服务后以什么名称保存第四个参数:该文件的MIMeType类型
[formData appendPartWithFileData:data name:@"file" fileName:@"Image.png" mimeType:@"application/octet-stream"];第一个参数:要上传的文件的URL路径第二个参数:文件参数对应的参数名称,此处为file是该台服务器规定的第三个参数:该文件上传到服务后以什么名称保存第四个参数:该文件的MIMeType类型第五个参数:错误信息,传地址
[formData appendPartWithFileURL:fileUrl name:@"file" fileName:@"Image.png" mimeType:@"application/octet-stream" error:nil];第一个参数:要上传的文件的URL路径第二个参数:文件参数对应的参数名称,此处为file第三个参数:错误信息
[formData appendPartWithFileURL:fileUrl name:@"file" error:nil];

相关文章:

【iOS】-- GET和POST(NSURLSession)

文章目录 NSURLSessionGET和POST区别 GET方法GET请求步骤 POSTPOST请求步骤 NSURLSessionDataDelegate代理方法AFNetWorking添加头文件GETPOST第一种第二种 NSURLSession 使用NSURLSession&#xff0c;一般有两步操作&#xff1a;通过NSURLSession的实例创建task&#xff1b;执…...

@RequestBody,@RequestParam,@RequestPart应用场景和区别

ReqeustBody 使用此注解接收参数时&#xff0c;适用于请求体格式为 application/json&#xff0c;只能用对象接收 RequestParam 支持application/json&#xff0c;也同样支持multipart/form-data请求 RequestPart RequestPart这个注解用在multipart/form-data表单提交请求的方法…...

libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent

文章目录 1. 为什么需要缓冲区&#xff1f;2. 水位3. bufferevent常用API3.1 evconnlistener_new_bind()3.2 evconnlistener_free()3.3 bufferevent_socket_new()3.4 bufferevent_enable()3.5 bufferevent_set_timeouts()3.6 bufferevent_setcb()3.7 bufferevent_setwatermark(…...

院内导航移动导诊服务体系,院内导航怎么实现?

院内导航怎么实现&#xff1f;经过多年发展&#xff0c;医院规模愈加庞大&#xff0c;尤其是综合性医院&#xff0c;院区面积较大&#xff0c;门诊、医技、住院等大楼及楼区内部设计复杂&#xff0c;科室、诊室数量众多&#xff0c;对于新患者犹如进入了迷宫&#xff0c;客观环…...

MCTP协议和NCSI

MCTP&#xff08;Management Component Transport Protocol&#xff09;是一种管理组件传输协议&#xff0c;用于在计算机系统中管理各种组件&#xff0c;例如固件、BIOS、操作系统等。MCTP 协议定义了一种传输格式&#xff0c;以便在各种总线上进行通信&#xff0c;例如 PCIe、…...

Jmeter接口测试流程详解

1、jmeter简介 Jmeter是由Apache公司开发的java开源项目&#xff0c;所以想要使用它必须基于java环境才可以&#xff1b; Jmeter采用多线程&#xff0c;允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。 2、jmeter安装 首先需要安装jdk&#xff08;最好是最…...

怎样使用Web自动化测试减少手动劳动?以百度网站为例

从入门到精通&#xff01;企业级接口自动化测试实战&#xff0c;详细教学&#xff01;&#xff08;自学必备视频&#xff09; 目录 摘要 步骤1&#xff1a;安装和配置Selenium 步骤2&#xff1a;启动浏览器并访问百度网站 步骤3&#xff1a;关闭浏览器 总结 摘要 本指南将…...

union和位域的混合使用

1、union&#xff08;共用体&#xff09; 1.1、概述 C 语言中&#xff0c;union是一种数据类型&#xff0c;对比于结构体&#xff0c;结构体中的每个成员都占用独立的内存空间&#xff0c;而联合中所有的成员都共享同一个内存空间。 也就是说&#xff0c;union中的不同成员要…...

PMP 高项 07-项目质量管理

项目质量管理 概念 质量的基本概念 克劳斯比&#xff1a;符合要求 戴明&#xff1a;低成本条件下可预测的一致性和可靠度&#xff0c;适应市场需要 朱兰&#xff1a;适用性&#xff0c;满足客户需要 国际标准化组织&#xff1a;质量是反映实体&#xff08;产品、过程或活动等…...

鸿蒙Hi3861学习十一-Huawei LiteOS-M(内存池)

一、简介 LiteOS将内核与内存管理分开实现&#xff0c;操作系统内核仅规定了必要的内存管理函数原型&#xff0c;而不关心这些内存管理函数是如何实现的。 LiteOS内存管理模块管理系统的内存资源&#xff0c;包括&#xff1a;初始化、分配、释放。 不采用C标准库中的内存管理函…...

MySQL原理(七):内存管理和磁盘管理

前言 上一篇介绍了 MySQL 的日志&#xff0c;这一篇将介绍内存管理和磁盘管理相关的内容。 内存管理 MySQL 的数据都是存在磁盘中的&#xff0c;我们要更新一条记录的时候&#xff0c;得先要从磁盘读取该记录&#xff0c;然后在内存中修改这条记录。修改完这条记录后会缓存起…...

【Shell脚本】Linux安装Nginx以及开机自启

目录 一、Linux安装Nginx脚本1、把编写好的安装Nginx脚本放置到nginx.sh文件中2、在检查网络的时候&#xff0c;这里的IP地址&#xff0c;填写的需要安装Nginx服务器的IP地址3、这里的端口号可按照自己的需要进行修改4、安装Nginx脚本 二、Nginx开机自启 一、Linux安装Nginx脚本…...

solidworks三维建模竞赛练习题

solidworks三维建模竞赛练习题&#xff1a;3D01‐ 01 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 02 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 03 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 04 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 05 solidw…...

Redis---订阅和发布

目录 消息系统命令 消息系统 ​ 发布/订阅&#xff0c;即 pub/sub&#xff0c;是一种消息通信模式&#xff1a;发布者也称为消息生产者&#xff0c;生产和发送消息到存储系统&#xff1b;订阅者也称为消息消费者&#xff0c;从存储系统接收和消费消息。这个存储系统可以是文件系…...

使用Statsmodel进行假设检验和线性回归

如果你使用 Python 处理数据&#xff0c;你可能听说过 statsmodel 库。Statsmodels 是一个 Python 模块&#xff0c;它提供各种统计模型和函数来探索、分析和可视化数据。该库广泛用于学术研究、金融和数据科学。在本文中&#xff0c;我们将介绍 statsmodel 库的基础知识、如何…...

mac电脑 安装homebrew、nvm、node、nrm

安装homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)brew -v 查看版本号 根据提示。继续执行 不然之后安装nvm报错&#xff08;Error: Command failed with exit 128: git&#xff09;&#xff1b;例子&#xff1a; g…...

chrome 113 因为策略原因 cookie显示非常隐蔽

难受的要死&#xff0c;找不到cookie&#xff0c;安装老版本还疯狂偷跑我代理的流量更新&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 解决方案&#xff1a; 回退112 &#xff01;&#xff01;&#xff01;&#xff01;&#xff0…...

Python3 operator 模块

Python3 中的 operator 模块提供了一系列用于操作 Python 内置类型的函数&#xff0c;这些函数可以替代常规的操作符&#xff0c;同时也提供了一些额外的功能。下面是 operator 模块中的一些常用函数及其作用&#xff1a; 1. operator.add(a, b)&#xff1a;返回 a 和 b 的和&…...

106.(cesium篇)cesium椎体旋转

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <...

springboot+vue漫画之家系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的漫画之家系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...