我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Objective-C计时器NSTimer怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Objective-C计时器NSTimer怎么使用

这篇文章主要介绍“Objective-C计时器NSTimer怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Objective-C计时器NSTimer怎么使用”文章能帮助大家解决问题。

NSTimer - 计时器

NSTimer派生自NSObject,是一种计时器,在经过一定的时间间隔后触发,向目标对象发送指定的消息。

计时器(NSTimer)与运行循环(RunLoop)一起工作。运行循环维护对其计时器的强引用,因此在将计时器添加到运行循环后,不必自己维护对计时器的强引用。

计时器不是实时机制。如果计时器的触发时间发生在长运行循环调用期间,或者当运行循环处于不监视计时器的模式时,计时器在下次运行循环检查计时器之前不会触发,因此计时器触发的实际时间可能要晚得多。

NSTimer创建计时器函数

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;

函数描述 :使用指定的调用对象初始化计时器对象。必须使用addTimer:forMode:方法将初始化的计时器添加到运行循环中(如果计时器配置为重复,则一次计时结束无需将计时器重新添加到运行循环中)。然后,在ti过去之后,计时器将触发,由调用对象执行其调用。

参数 :

ti :计时器触发之间的秒数。如果ti小于或等于0.0,此方法将选择非负值0.1毫秒。

invocation :计时器触发时要使用的调用对象。计时器指示调用对象维护对其参数的强引用。

repeats :是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

返回值 :一个新的根据指定的参数进行配置的NSTimer对象。

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;

函数描述 :使用指定的对象和选择器初始化计时器对象。必须使用addTimer:forMode:方法将新计时器添加到运行循环中(如果计时器配置为重复,则一次计时结束无需将计时器重新添加到运行循环中)。然后,经过ti秒后,计时器启动,向目标发送selector消息。

参数 :

ti :计时器触发之间的秒数。如果ti小于或等于0.0,此方法将选择非负值0.1毫秒。

aTarget :当计时器触发时,选择器指定要向其发送消息的对象。计时器维持对目标的强引用,直到它(计时器)失效。

aSelector :计时器触发时要发送给目标的消息。

repeats :是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

返回值 :一个新的根据指定的参数进行配置的NSTimer对象。

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (NS_SWIFT_SENDABLE ^)(NSTimer *timer))block API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));

函数描述 :使用指定的时间间隔和块初始化计时器对象。必须使用addTimer:forMode:将新计时器添加到运行循环中(如果计时器配置为重复,则一次计时结束无需将计时器重新添加到运行循环中)。然后,在间隔秒后,计时器启动,执行块。

参数 :

interval :计时器启动之间的秒数。如果间隔小于或等于0.0,此方法将选择非负值0.1毫秒。

repeats :是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

block :计时器启动时要执行的块。该块采用单个NSTimer参数,并且没有返回值。

返回值 :一个新的根据指定的参数进行配置的NSTimer对象。

- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (NS_SWIFT_SENDABLE ^)(NSTimer *timer))block API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));

函数描述 :使用指定日期与时间间隔以及一个块初始化计时器对象。 必须使用addTimer:forMode:方法将新计时器添加到运行循环中(如果计时器配置为重复,则一次计时结束无需将计时器重新添加到运行循环中)。在指定日期到达后计时器触发,之后每间隔interval秒,计时器触发,执行block。

参数 :

date :计时器应首次启动的时间。

interval :计时器启动之间的秒数。如果间隔小于或等于0.0,此方法将选择非负值0.1毫秒。

repeats :是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

block :计时器启动时要执行的块。该块采用单个NSTimer参数,并且没有返回值。

返回值 :一个新的根据指定的参数进行配置的NSTimer对象。

- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(nullable id)ui repeats:(BOOL)rep NS_DESIGNATED_INITIALIZER;

函数描述 :使用指定的对象和选择器初始化计时器。必须使用addTimer:forMode:方法将新计时器添加到运行循环中(如果计时器配置为重复,则一次计时结束无需将计时器重新添加到运行循环中)。在指定日期到达后计时器触发,之后每间隔interval秒,计时器触发,向目标发送aSelector消息。

参数 :

date :计时器应首次启动的时间。

ti :计时器启动之间的秒数。如果间隔小于或等于0.0,此方法将选择非负值0.1毫秒。

t :当计时器触发时,选择器指定要向其发送消息的对象。计时器维持对目标的强引用,直到它(计时器)失效。

s :计时器触发时要发送给目标的消息。

ui : 计时器的用户信息。计时器维持对这个对象的强引用,直到它(计时器)失效。这个参数可以是nil。

rep : 是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

例如:需要添加到运行循环中的计时器\color{red}{例如:需要添加到运行循环中的计时器}例如:需要添加到运行循环中的计时器

- (void)viewDidLoad {    [super viewDidLoad];    //获取方法签名对象    NSMethodSignature *signature = [self methodSignatureForSelector:NSSelectorFromString(@"timerAction")];    //获取调用对象,设置调用对象调用者与调用消息    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];    invocation.target = self;    invocation.selector = NSSelectorFromString(@"timerAction");    //计时器加入运行循环    [[NSRunLoop mainRunLoop] addTimer:[NSTimer timerWithTimeInterval:1.0 invocation:invocation repeats:YES] forMode:NSRunLoopCommonModes];}///计时器调用函数- (void)timerAction {    NSLog(@"计时器工作中");}

不加入运行循环,则只会打印一次,加入运行循环后,打印如下 :

Objective-C计时器NSTimer怎么使用

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;

函数描述 :创建计时器并以默认模式在当前运行循环上调度它。在ti秒过去后,计时器触发,由调用对象执行其调用。

参数 :

ti :计时器启动之间的秒数。如果ti小于或等于0.0,此方法将选择非负值0.1毫秒。

invocation :计时器触发时要使用的调用对象。计时器指示调用对象维护对其参数的强引用。

repeats :是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

返回值 : 根据指定参数配置的新NSTimer对象。

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;

函数描述 :创建计时器并以默认模式在当前运行循环上调度它。在ti秒过去后,计时器触发,发送消息选择器到目标。

参数 :

ti :计时器启动之间的秒数。如果ti小于或等于0.0,此方法将选择非负值0.1毫秒。

aTarget :当计时器触发时,选择器指定要向其发送消息的对象。计时器维持对目标的强引用,直到它(计时器)失效。

aSelector :计时器触发时要发送给目标的消息。

userInfo : 计时器的用户信息。计时器维持对这个对象的强引用,直到它(计时器)失效。这个参数可以是nil。

repeats : 是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

返回值 : 根据指定参数配置的新NSTimer对象。

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (NS_SWIFT_SENDABLE ^)(NSTimer *timer))block API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));

函数描述 :创建一个计时器,并在默认模式下在当前运行循环中对其进行调度。在间隔秒后,计时器启动,执行块。

参数 :

interval : 计时器启动之间的秒数。如果间隔小于或等于0.0,此方法将选择非负值0.1毫秒。

repeats :是否重复,如果是YES,计时器将重复重新安排自己,直到失效。如果NO,计时器将在其触发后失效。

block :计时器启动时要执行的块。该块采用单个NSTimer参数,并且没有返回值。

返回值 :一个新的根据指定的参数进行配置的NSTimer对象。

例如:以默认模式在当前运行循环上执行计时器\color{red}{例如:以默认模式在当前运行循环上执行计时器 }例如:以默认模式在当前运行循环上执行计时器

- (void)viewDidLoad {    [super viewDidLoad];    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];}///计时器调用函数- (void)timerAction {    NSLog(@"计时器工作中");}

打印如下 :

Objective-C计时器NSTimer怎么使用

NSTimer触发与销毁计时器函数

- (void)fire;

函数描述:使计时器的消息被发送到它的目标。可以使用此方法来触发重复计时器而不中断其常规触发计划。如果计时器是非重复的,它在触发后会自动失效,即使它的预定触发日期还没有到达。

- (void)invalidate;

函数描述:停止触发的计时器,并请求将其从运行循环中删除。这个方法是从NSRunLoop对象中删除计时器的唯一方法。NSRunLoop对象会在invalidate方法返回之前或之后的某个时间点删除它对计时器的强引用。如果配置了target和userInfo对象,计时器也会删除对这些对象的强引用。

常用属性

@property (copy) NSDate *fireDate;

属性描述:计时器触发的日期。如果计时器已经失效,则为计时器触发的最后日期。可以设置此属性以调整重复计时器(repeats为YES)的触发时间。尽管重置计时器的下一次触发时间是一个相对昂贵的操作,但在某些情况下它可能更有效。例如,可以在未来想要以不规则的时间间隔多次重复某个操作的情况下使用它。调整单个计时器的触发时间比创建多个计时器对象,在一个运行循环中调度每个对象,然后销毁它们所产生的开销要小。

对于已经失效的计时器(包括已经触发的非重复计时器),不应该更改其触发日期。可以更改尚未触发的非重复计时器的触发日期,但应该始终从计时器所连接的线程进行更改。使用valid属性可以验证计时器是否有效。

@property (readonly) NSTimeInterval timeInterval;

属性描述:计时器的时间间隔,以秒为单位。如果计时器不重复,即使设置了时间间隔,也会返回0。

@property NSTimeInterval tolerance API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0));

属性描述:计时器到达预定触发日期,触发时可以应用的额外时间容差。默认值为0,这意味着没有应用额外的容差。为计时器设置容差可以使其在预定触发日期到达后,偏移计时器触发。计时器可以在预定触发日期与额外时间容差加上预定触发日期之间的任何时间触发。允许系统在计时器触发时具有灵活性,可以提高系统优化的能力,以提高功耗节省和响应能力。

@property (readonly, getter=isValid) BOOL valid;

属性描述:一个布尔值,用于指示计时器当前是否有效。如果计时器仍然能够触发,则为YES;如果计时器已经失效并且不再能够触发,那么为NO。

@property (nullable, readonly, retain) id userInfo;

属性描述:计时器的userInfo对象。计时器无效后,不要访问此属性。使用valid属性验证计时器是否有效。

NSRunLoop - 运行循环

一个管理输入源(手势、Selector等)的对象,Runloop即运行循环,是iOS中的消息处理机制,其主要作用是控制NSRunLoop里面线程的执行和休眠,当某个事件执行完成后,不退出其线程而进入休眠状态,当再次检测到事件时。唤醒休眠的线程继续处理事件。RunLoop可以保持程序的持续运行,并节省CPU资源,提高程序性能。

NSRunLoop是对CFRunLoopRef的一层封装, 是Objective-C的语法的框架。CFRunLoopRef是基于C语言的开源框架。

从NSRunLoop的角度来看,NSTimer对象并不是输入源,它们是一种特殊的类型,当它们被触发时,不会导致运行循环返回。

NSRunLoop类通常不是线程安全的,只能在当前线程的上下文中调用它的方法。

NSRunLoop 处理事件流程:

Objective-C计时器NSTimer怎么使用

NSRunLoop常用属性

@property (class, readonly, strong) NSRunLoop *currentRunLoop

属性描述:类属性,返回当前线程的运行循环(NSRunLoop对象)。如果线程还不存在运行循环,则会创建并返回一个运行循环。

@property (class, readonly, strong) NSRunLoop *mainRunLoop API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));

属性描述:类属性,返回主线程的运行循环(NSRunLoop对象)。

@property (nullable, readonly, copy) NSRunLoopMode currentMode;

属性描述:调用方的当前输入模式。这个方法仅在调用方运行时返回当前的输入模式,否则它返回nil。

Runloop模式:

NSDefaultRunLoopMode:默认状态(空闲状态),比如点击按钮都是这个状态

UITrackingRunLoopMode:滑动时的Mode。比如滑动UIScrollView时。

UIInitializationRunLoopMode:私有的,APP启动时。就是从iphone桌面点击APP的图标进入APP到第一个界面展示之前,在第一个界面显示出来后,UIInitializationRunLoopMode就被切换成了NSDefaultRunLoopMode。

NSRunLoopCommonModes:它是NSDefaultRunLoopMode和UITrackingRunLoopMode的集合。结构类似于一个数组。在这个mode下执行其实就是两个mode都能执行而已。

NSRunLoop常用函数

- (CFRunLoopRef)getCFRunLoop CF_RETURNS_NOT_RETAINED;

函数描述:返回调用方的基础CFRunLoop对象。可以使用返回的运行循环来使用Core Foundation函数调用配置当前运行循环。例如可以使用此函数来设置运行循环观察者。

返回值 :调用方的基础CFRunLoop对象。

- (void)addTimer:(NSTimer *)timer forMode:(NSRunLoopMode)mode;

函数描述:使用给定的输入模式注册给定的计时器。可以将计时器添加到多种输入模式中。在指定模式下运行时,调用方会使计时器在其计划的启动日期当天或之后启动。触发后,计时器调用其关联的处理程序例程,该例程是指定对象上的选择器。调用方保留计时器。要从安装计时器的所有运行循环模式中删除计时器,需要向计时器发送invalidate消息。

参数 :

timer :要向调用方注册的计时器。

mode :添加计时器的模式。

关于“Objective-C计时器NSTimer怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Objective-C计时器NSTimer怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Objective-C计时器NSTimer怎么使用

这篇文章主要介绍“Objective-C计时器NSTimer怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Objective-C计时器NSTimer怎么使用”文章能帮助大家解决问题。NSTi
2023-07-05

Objective-C中的@Synchronized关键字怎么使用

这篇文章主要介绍“Objective-C中的@Synchronized关键字怎么使用”,在日常操作中,相信很多人在Objective-C中的@Synchronized关键字怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
2023-07-05

C#四种计时器Timer怎么使用

这篇文章主要介绍了C#四种计时器Timer怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#四种计时器Timer怎么使用文章都会有所收获,下面我们一起来看看吧。1、System.Threading.Ti
2023-06-30

怎么使用C语言实现计时器

本篇内容主要讲解“怎么使用C语言实现计时器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C语言实现计时器”吧!实现思路简单介绍一下我的实现思路:本文包括三个版本,分别是极简版、普通版、高
2023-06-25

iOS定时器选择及CADisplayLink NSTimer和GCD使用的方法是什么

本篇内容介绍了“iOS定时器选择及CADisplayLink NSTimer和GCD使用的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有
2023-07-05

jquery计时器怎么用

随着互联网的发展和应用场景的多样化,倒计时和计时器的应用越来越普遍。在网站的注册页面、活动页面、促销页面等地方经常会看到倒计时和计时器的身影。如何使用jQuery库来实现这个功能呢?下面我们将详细介绍如何使用jQuery计时器。jQuery是一个非常实用的JavaScript库,可以用于快速、简单地编写JavaScript代码。jQuery库的最大优势在于简化了DOM操作和Ja
2023-05-14

C++时间函数怎么使用

这篇文章主要介绍“C++时间函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++时间函数怎么使用”文章能帮助大家解决问题。一、 时间概念格林威治时间GMT(Greenwich Mean
2023-07-04

使用CocosCreator怎么实现一个计时器功能

这篇文章给大家介绍使用CocosCreator怎么实现一个计时器功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、setTimeOut3秒后打印abc。只执行一次。setTimeout(()=>{console.l
2023-06-14

怎么用Go实现计时器

这篇文章主要介绍“怎么用Go实现计时器”,在日常操作中,相信很多人在怎么用Go实现计时器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Go实现计时器”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!引言
2023-06-30

使用javascript怎么实现一个定时器倒计时功能

这期内容当中小编将会给大家带来有关使用javascript怎么实现一个定时器倒计时功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
2023-06-14

怎么使用C#实现简单的计算器功能

这篇文章主要介绍怎么使用C#实现简单的计算器功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!环境:VS2010及以上版本1、建立个Window窗体应用2、在工具箱里拖出两个TextBox,第一个放上面,第二个放下面
2023-06-29

C#中多种高效定时器方法怎么使用

这篇文章主要讲解了“C#中多种高效定时器方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中多种高效定时器方法怎么使用”吧!在 C# 中,定时器是一种常用的机制,可以周期性地执行
2023-07-05

C#中的延时函数怎么使用

本篇内容主要讲解“C#中的延时函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中的延时函数怎么使用”吧!C#一些延时函数sleep延时方法System.Threading.Thre
2023-07-02

C++怎么使用string容器

本篇内容主要讲解“C++怎么使用string容器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么使用string容器”吧!string基本概念本质:string是c++风格的字符串,而s
2023-07-02

Android中怎么使用flow实现倒计时

本篇内容主要讲解“Android中怎么使用flow实现倒计时”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中怎么使用flow实现倒计时”吧!现在因为有了协程和Flow,我们可以借助
2023-06-30

C#中的延时函数sleep怎么使用

本篇内容介绍了“C#中的延时函数sleep怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#延时函数sleepsleepusing
2023-07-02

Python计数器collections.Counter怎么使用

这篇文章主要介绍“Python计数器collections.Counter怎么使用”,在日常操作中,相信很多人在Python计数器collections.Counter怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-07-05

android定时器怎么使用

Android中有多种方式可以使用定时器,以下是其中两种常用的方法:1. 使用Handler的postDelayed方法Handler类中提供了一个postDelayed方法,可以在指定的时间后执行指定的任务。具体步骤如下:1)创建Hand
2023-05-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录