返回顶部
首页 > 资讯 > 数据库 >如何解析AFNetworking框架的解读
  • 754
分享到

如何解析AFNetworking框架的解读

2024-04-02 19:04:59 754人浏览 八月长安
摘要

今天给大家介绍一下如何解析AFNetworking框架的解读。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。做iOS开发,AF

今天给大家介绍一下如何解析AFNetworking框架的解读。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。

iOS开发,AFNetworking 这个网络框架肯定都非常熟悉,也许我们平时只使用了它的部分功能,而且我们对它的实现原理并不是很清楚,就好像总是有一团迷雾在眼前一样。

接下来我们就非常详细的来读一读这个框架的代码,我们的目标就是理解了它的思想之后,能够明白我们的请求是如何实现的,我们的代码哪里还需要进行改进,如果能够更进一步,我们能够总结出一套适合大部分应用的网络架构思想。

能够让一些人从中受益。

我们先来看看整个框架的文件系统,我们先不对每个文件的作用进行说明,在整个源码解读最后的一篇中我们会对整个框架进行总结。会有一张清晰的图表来说明这个问题。

我们在看一个框架的时候呢,可以这样先看,先看每个文件的头文件,也就是.h文件

可以看到,有的头文件是包含了别的头文件的,在不考虑系统的头文件的情况下,我们能够发现一些比较独立的类,从上图中,我们可以看出

比较独立的类有:

1.AFURLResponseSerialization.h

2.AFNetworkReachabilityManager.h

3.AFURLRequestSerialization.h

4.AFSecurityPolicy.h

下面就介绍AFNetworkReachabilityManager.h的内容,这个是用来监控网络环境变化的类。

#import <SystemConfiguration/SystemConfiguration.h>

通过导入了这个头文件,我们得知:网络监控的实现是依赖SystemConfiguration这个api的。说明这个api能够提供这样的功能,至少让我们明白了我们平时都会导入它的一个用途。

如何解析AFNetworking框架的解读

这是一个枚举封装,还是遵循一个使用枚举的原则,当满足一个有限的并具有统一主题的集合的时候,我们就考虑枚举。在这里作者是枚举了4种类型。这几种类型能够满足我们开发中大部分的功能,如果不满足,可以自行进行扩展。

NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END

这个是为了swift的可选类型配添加的,在这两个终点的内容的参数默认都是nonnull的。

如何解析AFNetworking框架的解读

这段文字是对这个类的说明。我们估且不去管它说了什么,在看看苹果官方的

如何解析AFNetworking框架的解读

这样的内容会出现在一个属性或者方法的上方,目的是对其内容的解释。我看到这里就想到了我们平时的开发,我们能够把每段代码都当成是api的开发,也把注 释写的详细一点。曾经看过两种不同的说辞,一种是说把代码注释尽量少些,要求代码简介可读性强。另一种是说注释要详细,着重考虑他人读代码的感受。个人感 觉还是写详细一点比较好,因为可能过一段时间之后,自己再去看自己当时写的代码可能就不记得了。很有可能在写这些繁琐的注释的过程中,能够想到些什么,比 如如何合并掉一些没必要的方法等等。

本类提供了四个只读的属性来让我们获取我们需要的内容

1. 网络状态

2. 是否是可达的

3. 当前连接是否是WWAN

4. 当前连接是够是WiFi

四个属性均为只读属性,只给了用户访问权,注意BOOL属性一般是要写getter方法的。

如何解析AFNetworking框架的解读

作者使用了这个来分隔同一类中不同功能模块。这个算是个人习惯问题吧。举个平时开发的例子,在.m文件中我个人使用#pragma mark 分隔不同功能。

如何解析AFNetworking框架的解读

提供了5中初始化方法,能够满足大部分的需求。

SCNetworkReachabilityRef 这个很重要,这个类的就是基于它开发的。

+ (instancetype)managerForDomain:(NSString *)domain; 监听制定domain的网络状态。

+ (instancetype)managerForAddress:(const void *)address; 监听某个Socket地址的网络状态,socket通信请看这篇文章: socket通信

如何解析AFNetworking框架的解读

打开和关闭监听的方法。

如何解析AFNetworking框架的解读

返回一个网络状态的本地语言的字符串。往往我们可以根据这个字符串来告诉用户,当前网络发生了什么,当然,也可以根据状态自定义提示文字。

如何解析AFNetworking框架的解读

设置网络转态改变的回调,监听网络改变的回调有两种方式:

1.使用上边的这个方法。

2.监听AFNetworkingReachabilityDidChangeNotification通知。

如何解析AFNetworking框架的解读

这个是与网络状态变化相关的通知。接受的通知中会有一个userinfo 是一个NSDictionary 其中key就是

AFNetworkingReachabilityNotificationStatusItem 

这简单的两行代码能够告诉我们的是,我们平时的开发中 但凡设计到发通知的功能,我们应该把通知的字符串封装到一个专有的文件中,同时在文件内部按不同模块进行区分,当然必要的注释也很有必要。

ps: FOUNDATION_EXPORT 和#define 都能定义常量。FOUNDATION_EXPORT 能够使用==进行判断,效率略高。而且能够隐藏定义细节(就是实现部分不在.中)

如何解析AFNetworking框架的解读

对函数:根据状态获取字符串  声明。

好了,这个类的.h文件我们已经非常相信的进行解读了,我们并不是大概的说了下他提供的功能,而是通过读每行代码,我们能联想到什么,什么东西能帮助我们更好的编程

我们接着看 AFNetworkReachabilityManager.m 的内容

如何解析AFNetworking框架的解读

这几个头文件是系统库,是为了后边的 sockaddr_in6 / sockaddr_in 准备的,不熟悉的可以看这篇文章 socket通信

如何解析AFNetworking框架的解读

这几个就没什么好说的了,我们接着看

如何解析AFNetworking框架的解读

这个方法是对.h 中最后一个方法的实现。指的我们注意的是NSLocalizedStringFromTable这个宏。为什么要注意它呢?

这就涉及到本地国际化的问题。所谓的国际化就是让你的app能够根据不同的语言显示相对应的语言。

*** 但这并不简单,没有经验的开发人员,一开始可能不会做这样的设置,如果日后需要国际话了,在做就很麻烦了。所以说在开中,但凡使用到字符串的地方都要考虑语言的不同。不同的语言下,一个意思的表达所使用的字符串长度是不一样的,这就影射出空间的宽度可能会不一样。

好了,国际化的内容就不说了,请自行搜索。

 1  8 static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetworkReachabilityFlags flags) { 9     10     // 是否能够到达11     BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0);12     13     // 在联网之前需要建立连接14     BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0);15     16     // 是否可以自动连接17     BOOL canConnectionAutomatically = (((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0));18     19     // 是否可以连接,在不需要用户手动设置的前提下20     BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0);21     22     // 是否可以联网的条件 1.能够到达 2.不需要建立连接或者不需要用户手动设置连接 就表示能够连接到网络23     BOOL isNetworkReachable = (isReachable && (!needsConnection || canConnectWithoutUserInteraction));24 25     AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusUnknown;26     if (isNetworkReachable == NO) {27         status = AFNetworkReachabilityStatusNotReachable;28     }29 #if    TARGET_OS_IPHONE30     else if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) {31         status = AFNetworkReachabilityStatusReachableViaWWAN;32     }33 #endif34     else {35         status = AFNetworkReachabilityStatusReachableViaWiFi;36     }37 38     return status;39 }

这个方法根据SCNetworkReachabilityFlags这个标记转换成我们自定义的枚举类型。至于转换规则,上边的代码中注释部分写的很清楚。

*** 在这里不得不多说几句,很多框架中都会把一个类中的私有方法写成这样。为什么呢? 我们在开发中经常会写成- (void)funcName; 这样的私有方法。

我个人的意见是一个类中的私有方法写成static void funcName() 这样的c函数比较好。 

1. 在文件的最前方,比较容易查找

2. 可以适当的使用内联函数,提高效率。

如何解析AFNetworking框架的解读

根据一个标识 来处理Block和通知。保证两者同一状态。

如何解析AFNetworking框架的解读

包含了 类中需要处理的属性。

如何解析AFNetworking框架的解读

来看这个最基本的初始化方法,初始化了自身的属性。

CFRetain()后要记得CFRelease().

如何解析AFNetworking框架的解读

通过一个socket地址来初始化。 首先新建 SCNetworkReachabilityRef 对象,然后调用initWithReachability: 方法。记得手动管理内存。

如何解析AFNetworking框架的解读

这个方法基本同上。

综合上边两个方法,我们发现 SCNetworkReachabilityRef 有两个创建方法:

1. SCNetworkReachabilityCreateWithName 

2. SCNetworkReachabilityCreateWithAddress

如何解析AFNetworking框架的解读

由于IPv6 是ios9和os_x 10.11后边推出的,所有要进行版本判断。这礼拜呢设计到的socket的知识,请看 socket通信

通过这段代码我们能学到什么呢?

1,方法的创建也是有顺序的,可以使用函数访问函数的思想。

2. @if 这样的预编译指令能够替换掉代码中部分if else 。好处就是代码会不会被编译的区别。

如何解析AFNetworking框架的解读

单例的写法。

如何解析AFNetworking框架的解读

对需要释放时,做一些处理。

如何解析AFNetworking框架的解读

这个是.h文件暴露出来的3个BOOL 属性的getter方法,注意,由于我们在@property中定义了getter方法,所以getter方法就要写成我们定义的那种。

从这3个方法中也能看出,函数嵌套的思想还是很重要,要想做到这一点,只能是多想才行。

如何解析AFNetworking框架的解读

这个算是这个类的核心方法,设置监听网咯监听。

我们先来了解下基础知识。

SCNetworkReachabilityContext

点进去,会发现这是一个结构体,一般C语言的结构体是对要保存的数据的一种描述

如何解析AFNetworking框架的解读

1. 第一个参数接受一个signed long 的参数

2. 第二个参数接受一个void * 类型的值,相当于oc的id类型,void * 可以指向任何类型的参数

3. 第三个参数 是一个函数 目的是对info做retain操作,

4. 第四个参数是一个函数,目的是对info做release操作

5. 第五个参数是 一个函数,根据info获取Description字符串

在这里我们要携带的这个info就是下边的这个block

 1 __weak __typeof(self)weakSelf = self; 2     AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) { 3         __strong __typeof(weakSelf)strongSelf = weakSelf; 4  5         strongSelf.networkReachabilityStatus = status; 6         if (strongSelf.networkReachabilityStatusBlock) { 7             strongSelf.networkReachabilityStatusBlock(status); 8         } 9 10     };

retain和release 函数是下边的这两个函数

1 static const void * AFNetworkReachabilityRetainCallback(const void *info) {2     return Block_copy(info);3 }4 5 static void AFNetworkReachabilityReleaseCallback(const void *info) {6     if (info) {7         Block_release(info);8     }9 }

设置网络监控分为下边几个步骤:

1.我们先新建上下文

1 SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL};

2.设置回调

1 SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context);

其中这个AFNetworkReachabilityCallback 是这样被定义的一个函数

typedef void (*SCNetworkReachabilityCallBack)    (
                        SCNetworkReachabilityRef            target,
                        SCNetworkReachabilityFlags            flags,                        void                 *    __nullable    info
                        );

在本类中

1 static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused target, SCNetworkReachabilityFlags flags, void *info) {2     AFPostReachabilityStatusChange(flags, (__bridge AFNetworkReachabilityStatusBlock)info);3 }

3.加入RunLoop池

1 SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);

其中CFRunLoopGetMain()代表主RunLoop

ok,差不多已经完成

如何解析AFNetworking框架的解读

在异步线程 发送一次当前的网络状态。

 如何解析AFNetworking框架的解读

停止网络监控

如何解析AFNetworking框架的解读

这两个方法没什么好说的了,一个是getter 一个是setter 

如何解析AFNetworking框架的解读

注册键值依赖,这个可能大家平时用的比较少。可以了解一下

比如说一个类User中有两个属性

如何解析AFNetworking框架的解读 

还有一个卡片的类card

如何解析AFNetworking框架的解读

 我们写一个info的setter 和 getter  方法,

如何解析AFNetworking框架的解读

 1 @interface User :NSObject 2 @property (nonatomic,copy)NSString *name; 3 @property (nonatomic,assign)NSUInteger age; 4 @end 5  6  7  8 @interface card :NSObject 9 @property (nonatomic,copy)NSString *info;10 @property (nonatomic,strong)User *user;11 @end12 @implementation card13 14 - (NSString *)info {15     return [NSString stringWithFORMat:@"%@/%lu",_user.name,(unsigned long)_user.age];16 }17 - (void)setInfo:(NSString *)info {18     19     NSArray *array = [info componentsSeparatedByString:@"/"];20     _user.name = array[0];21     _user.age = [array[1] integerValue];22     23 }24 25 + (NSSet<NSString *> *)keyPathsForValuesAffectingValueForKey:(NSString *)key {26     NSSet * keyPaths = [super keyPathsForValuesAffectingValueForKey:key];27     NSArray * moreKeyPaths = nil;28 29     if ([key isEqualToString:@"info"])30     {31         moreKeyPaths = [NSArray arrayWithObjects:@"user.name", @"user.age", nil];32     }33 34     if (moreKeyPaths)35     {36         keyPaths = [keyPaths setByAddinGobjectsFromArray:moreKeyPaths];37     }38     39     return keyPaths;40 }41 42 @end

gh.dokee.cn/article/content-2292769-34004.html
gh.dokee.cn/article/content-2292768-34004.html
gh.dokee.cn/article/content-2292766-34004.html
gh.dokee.cn/article/content-2292765-34004.html
gh.dokee.cn/article/content-2292764-34004.html
gh.dokee.cn/article/content-2292763-34004.html
gh.dokee.cn/article/content-2292762-34004.html
gh.dokee.cn/article/content-2292761-34004.html
gh.dokee.cn/article/content-2292760-34004.html
gh.dokee.cn/article/content-2292759-34004.html
gh.dokee.cn/article/content-2292758-34004.html
bbs.open.qq.com/thread-15334805-1-1.html
bbs.open.qq.com/thread-15335348-1-1.html
bbs.open.qq.com/thread-15335576-1-1.html
bbs.open.qq.com/thread-15335715-1-1.html
Http://bbs.open.qq.com/thread-15335916-1-1.html
http://bbs.open.qq.com/thread-15335876-1-1.html
http://bbs.open.qq.com/thread-15336398-1-1.html
http://bbs.open.qq.com/thread-15336484-1-1.html
http://bbs.open.qq.com/thread-15336547-1-1.html
http://bbs.open.qq.com/thread-15336614-1-1.html
http://bbs.open.qq.com/thread-15336697-1-1.html
http://bbs.open.qq.com/thread-15336806-1-1.html
http://bbs.open.qq.com/thread-15340763-1-1.html
www.baiyewang.com/s4209086.html
http://bl.gamebbs.qq.com/forum.PHP?mod=viewthread&tid=11675819
http://bbs.open.qq.com/thread-15343974-1-1.html
http://bbs.open.qq.com/thread-15344107-1-1.html
http://caimi68.lofter.com/post/1e3e0a7a_bbb5392
http://caimi68.lofter.com/post/1e3e0a7a_bbb539f
http://caimi68.lofter.com/post/1e3e0a7a_bbb539e
http://caimi68.lofter.com/post/1e3e0a7a_bbb539d
http://caimi68.lofter.com/post/1e3e0a7a_bbb539c
http://caimi68.lofter.com/post/1e3e0a7a_bbb53a0
http://caimi68.lofter.com/post/1e3e0a7a_bbb53a1
http://caimi68.lofter.com/post/1e3e0a7a_bbb53a2
http://caimi68.lofter.com/post/1e3e0a7a_bbb53a4
http://bbs.open.qq.com/thread-15345770-1-1.html
http://bbs.open.qq.com/thread-15345813-1-1.html
http://bbs.open.qq.com/thread-15345854-1-1.html
http://bbs.open.qq.com/thread-15345888-1-1.html
http://bbs.open.qq.com/thread-15345937-1-1.html
http://bbs.open.qq.com/thread-15346013-1-1.html
http://bbs.open.qq.com/thread-15346046-1-1.html
http://bbs.open.qq.com/thread-15346098-1-1.html
http://bbs.open.qq.com/thread-15346138-1-1.html
http://bbs.open.qq.com/thread-15346194-1-1.html
http://bbs.open.qq.com/thread-15346240-1-1.html
http://bbs.open.qq.com/thread-15346345-1-1.html
http://g.jandan.net/s/6319
http://g.jandan.net/s/6320
http://g.jandan.net/s/6321
http://g.jandan.net/s/6322
http://g.jandan.net/s/6323

以上就是如何解析AFNetworking框架的解读的全部内容了,更多与如何解析AFNetworking框架的解读相关的内容可以搜索编程网之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下编程网!

您可能感兴趣的文档:

--结束END--

本文标题: 如何解析AFNetworking框架的解读

本文链接: https://lsjlt.com/news/71279.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何解析AFNetworking框架的解读
    今天给大家介绍一下如何解析AFNetworking框架的解读。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。做ios开发,AF...
    99+
    2024-04-02
  • 如何实现.net框架的问题解析
    本篇文章给大家分享的是有关如何实现.net框架的问题解析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先,我们先来介绍一下.NET的概念。什么是.Net?它主要包括什么呢?....
    99+
    2023-06-17
  • Python的Scrapy框架解析
    目录一.为什么使用Scrapy框架?二.Scrapy框架每个组件介绍三.Scrapy框架工作原理总结一.为什么使用Scrapy框架? Scrapy是一个快速、高层次的...
    99+
    2024-04-02
  • 基于fastapi框架的异步解读
    目录使用fastapi框架开发web项目1、为什么要用fastapi?2、什么是异步?3、在django中是怎么实现异步的呢?4、fastapi中的异步4.1 简单介绍一下协程的概念...
    99+
    2023-03-15
    fastapi框架 fastapi框架的异步 fastapi异步
  • MapReduce2框架的原理解析
    目录1 MapReduce2产生的原因1.1 在hadoop1.X的时代,MapReduce做了很多的事情,其核心是JobTracker。1.2 初探MapReduce1架构1.3M...
    99+
    2023-05-17
    MapReduce2框架原理 MapReduce2框架
  • Java开发者必读:Load框架面试题解析!
    在Java开发中,Load框架是一个非常重要的工具。如果你正在准备面试,那么你可能会遇到一些关于Load框架的问题。在本文中,我们将对一些常见的Load框架面试题进行解析,同时还会附上一些演示代码。 什么是Load框架? Load框架...
    99+
    2023-11-09
    load 框架 面试
  • PHP框架:深入剖析与最佳实践解读
    php框架提供了预构建的代码库,用于快速高效地开发动态网站。核心的组件包括mvc架构、路由、控制器、模型和视图。最佳实践包括遵循mvc架构、使用命名空间、实现单元测试和监控应用程序性能。...
    99+
    2024-05-23
    框架 php laravel
  • 如何解析JS应用的解读
    如何解析JS应用的解读,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。任何的网页技术的出现都是为了更好的服务网页设计者或者用户。这一些技术在方便我们的同时,一些有...
    99+
    2023-06-12
  • python中常见的5种框架解读
    目录python常见的框架有哪些1.scrapy框架2.crawley框架3.portia框架4.newspaper框架5.Python-goose框架总结python常见的框架有哪...
    99+
    2022-12-19
    python常见框架 python框架 python常见框架解读
  • JavaEE微框架Spring Boot深入解读
    前言spring框架作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用,同时Spring框架及其子框架很多,所以知识量很广。Spring Boot:一款Spring框架的子框架,也可以叫微框架,是2014年推出的...
    99+
    2023-05-31
    spring boot javaee
  • 如何理解Tornado web框架
    这篇文章主要讲解了“如何理解Tornado web框架”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Tornado web框架”吧!tornado简...
    99+
    2024-04-02
  • 如何理解spring框架中的ioc
    这期内容当中小编将会给大家带来有关如何理解spring框架中的ioc,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。摘要: 关于spring框架中的ioc的幽默解释 IoC就是Inversion of Co...
    99+
    2023-06-17
  • Android Volley框架全面解析
     Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系...
    99+
    2022-06-06
    volley框架 volley Android
  • Android SwipeMenuListView框架详解分析
    周末 特地把Android SwipeMenuListView(滑动菜单)的知识资料整理一番,以下是整理内容: SwipeMenuListView(滑动菜单) A swipe ...
    99+
    2022-06-06
    Android
  • 如何使用 Python 解析 Spring 框架中的配置文件?
    Spring 框架是一个广泛使用的 Java 应用程序框架,它的主要特点是将业务逻辑与底层代码分离。在 Spring 中,应用程序的配置文件扮演着至关重要的角色,它们描述了应用程序的各种设置和配置,如数据库连接、日志设置、Web 应用程序上...
    99+
    2023-09-04
    文件 关键字 spring
  • 如何使用 PHP 解析 Spring 框架中的配置文件?
    Spring 是一个流行的 Java 开发框架,被广泛应用于企业级应用开发中。在 Spring 框架中,配置文件起着至关重要的作用,因为它们描述了应用程序中各个组件之间的关系,并提供了各种配置选项,以满足不同应用程序的需求。本文将介绍如何使...
    99+
    2023-07-02
    spring 文件 javascript
  • Pytorch框架之one_hot编码函数解读
    目录Pytorch one_hot编码函数解读one_hot编码定义Pytorch中one_hot转换Pytorch变量类型转换及one_hot编码表示生成张量查看类型类型转化One...
    99+
    2023-02-01
    Pytorch one_hot one_hot编码函数 one_hot编码
  • 解读Spring框架中常用的设计模式
    目录一、浅谈控制反转(IOC)与依赖注入(DI)二、Spring框架中的设计模式1)工厂设计模式(简单工厂和工厂方法)2)单例设计模式3)代理设计模式4)模板方法设计模式5)观察者设...
    99+
    2022-12-23
    Spring框架 Spring设计模式 Spring常用设计模式
  • 如何理解Java ORM框架guzz
    本篇文章给大家分享的是有关如何理解Java ORM框架guzz,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。guzz 1.3.1 大版本更新噢: 动态拼接SQL终于...
    99+
    2023-06-17
  • springkafka框架中@KafkaListener注解解读和使用案例
    目录简介解读源码解读使用案例ConsumerRecord 类消费批量消费批量消费实现步骤:监听 Topic 中指定的分区注解方式获取消息头及消息体使用 Ack 机制确认消费解决重复消...
    99+
    2023-02-20
    @KafkaListener 注解 kafka @KafkaListener 注解 kafka @KafkaListener
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作