一.概念回顾 1.GCD全称 Grand Central Dispatch ,是纯C语言,提供了非常多强大的函数,来进行系统线程的管理. 2.优势:GCD是苹果公司为多核的并行运算提出的解决方案.GCD会自动利用更多的CPU内核,会自动管理线程的生命周期(创建线程.调度任务.销毁线程),程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码. 3.GCD的两个核心: (1)队列:GCD会从队列中取出任务,按照不同情况,放到对应的线程中执行,遵循FIFO原则.  队列共分有四种: a.…
GCD中队列分类及获得方式 1.串行队列  dispatch_queue_t queue = dispatch_queue_create("队列名", DISPATCH_QUEUE_SERIAL) 2.并发队列  dispatch_queue_t queue = dispatch_queue_create("队列名",DISPATCH_QUEUE_CONCURRENT) 3. 主队列    dispatch_queue_t queue = dispatch_get_…
第一种: [UIView animateWithDuration: delay: options: animations:^{ self.btn.transform = CGAffineTransformMakeTranslation(, ); } completion:^(BOOL finished) { NSLog(@"view animation结束"); }];//不会阻塞线程,animations block中的代码对于是支持animation的代码,才会有延时效果,对于不支…
读了<Spring Cloud 微服务实战>第151-154页, 总结如下: Hystrix存在两种Command,一种是HystrixCommand,另一种是HystrixObservableCommand. 对于HystrixCommand,有四种执行方式: 1.同步执行:execute,同步,直接返回结果,该方式有注解方式的实现 @HystrixCommand public String helloService(){ return restTemplate.getForEntity(&…
1.命令方式执行sparksql查询 SQL="use mydatatable;;select count(1) from tab_videousr_onlne where p_regiion=101 and p_date='2017-04-05' and p_hour=21;" /home/mr/spark/bin/beeline -u jdbc:hive2://localhost:18000 -n mr -p mr --maxwidth=3000 -e "$SQL&quo…
本文是对以往学习的多线程中知识点的一个整理. 多线程中的队列有:串行队列,并发队列,全局队列,主队列. 执行的方法有:同步执行和异步执行.那么两两一组合会有哪些注意事项呢? 如果不是在董铂然博客园看到这边文章请 点击查看原文 提到多线程,也就是四种,pthread,NSthread,GCD,NSOperation 其中phtread是跨平台的.GCD和NSOperation都是常用的,后者是基于前者的. 但是两者区别:GCD的核心概念是将一个任务添加到队列,指定任务执行的方法,然后执行. NSO…
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.performSelector方法 [self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f]; 此方式要求必须在主线程中执行,否则无效.是一种非阻塞的执行方式,暂时未找到取消执行的方法. 2.定时器:NSTimer [NS…
转自http://www.cnblogs.com/stephen-liu74/archive/2012/06/25/2417894.html 在Lua中实现队列的简单方法是使用table库函数insert和remove.但是由于这种方法会导致后续元素的移动,因此当队列的数据量较大时,不建议使用该方法.下面的代码是一种更高效的实现方式,如: List = {} function List.new() , last = -} end function List.pushFront(list, val…
当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时,应用程序仍然能够先继续执行.而当ADO处理数据完毕之后,ADO会以事件的方式通知应用程序,此时应用程序可以再根据ADO执行的结果来采取相应的动作.使用异步执行方式有许多用途,例如,如果应用程序需要处理花费大量时间的动作,那么ADO可以选择以异步执行方式让ADO在后台执行,而让应用程序继续处理图形用户接口或用户输入的数据.在ADO中使用异步执行方式非…
说明: 虚拟机中shell_test目录用来练习shell, 其中有个test.log文件用来存放日志 #!/usr/bin/bash      # shell文件开头, 用来指定该文件使用哪个解释器执行 通常#!成为shebang, 如果命令行中不指定解释器时才会生效, 否则以命令行中指定的解释器为准 1. echo $?    # 用来检查上次命令的执行状态, 如成功返回0, 不成功则非0 2. ping -c10 www.baidu.com &> /shell_test/test.lo…
今日内容 包: 1. 导入模块的细节 2. 包的概念与使用 3. 包中的相对导入语法 跨文件夹导入模块 1. 假设有一个文件夹a ,a 的下面有一个ma 的模块,如果a文件夹所在目录在环境变量,a文件夹中的ma 模块可以被以下方式导入: import a.ma   |    from a import ma 2. 基于第一条,如果文件夹a 下有一个b文件夹,文件夹下有一个mb模块,如果a文件夹所在的目录在环境变量,a文件夹中的b文件夹内的mb模块就可以被以下方式导入: import a.b.mb…
复习 ''' 1.模块 -- 一系列功能的集合体,用文件来管理一系列有联系的功能,该文件我们称之为模块,文件名就是模块名 -- import | from...import 来导入模块,从而使用模块中的功能 -- py文件 | 管理py文件的包 | c编译的内置模块 | c.C++通过的DLL拓展 -- 内置模块 | 自定义模块 2.导入模块完成的三件事 1)编译产生模块对应的pyc文件 2)执行模块中的代码,形成模块的全局名称空间,将模块中的名字存放在该模块的全局名称空间中 3)在到模块的文件…
最近工作比较忙,但是还是出来更新博客了.今天博客中所涉及的内容并不复杂,都是一些平时常见的一些问题,通过这篇博客算是对UITableView中使用定时器的几种方式进行总结.本篇博客会给出在TableView中使用NSTimer或者DispatchSourcer中常见的五种方式.当然下方第一种方式是常规做法,不过也是UITableView中使用NSTimer的一个坑.其他三种方式是为了绕过这个坑的解决方案. 当然,本篇博客共涉及到了UITableView中使用定时器的四种实现方式,当然应该也还有其…
Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Queue接 口.Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用.BlockingQueue 继承了Queue接口. 队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就…
<一>引入dispatch_group函数的目的 在追加到dispatch_Queue中的多个处理全部结束后想要执行结束的处理,这种需求经常会在我们的程序中出现 (第一种情况)只使用一个Serial Dispatch Queue时,只要将想要执行的操作全部追加到串行队列,并在最后执行结束的操作即可实现 (第二种情况)当我们使用Concurrent Dispatch Queue时或者使用多个Dispatch Queue时,我们想要实现这种需求变得十分复杂 (由第二种情况引出Dispatch Gr…
jQuery中的queue和dequeue是一组很有用的方法,他们对于一系列需要按次序运行的函数特别有用.特别animate动画,ajax,以及timeout等需要一定时间的函数.Queue()和dequeue()方法是都既具有工具方法,又具有实例方法,但是clearQueue()只是实例方法只能在jquery对象上进行使用 在调用quene之前如果有调用动画函数,将已经从产生了默认的队列fx,quene的操作是在这个的基础上的. queue和dequeue的过程主要是:1,用queue把函数加…
GCD中的dispatch_apply的用法及作用 (一)dispatch_apply的基本用法 dispatch_apply函数是dispatch_sync函数和Dispatch Group的关联API,该函数按指定的次数将指定的Block追加到指定的Dispatch Queue中,并等到全部的处理执行结束 /*! * @brief dispatch_apply的用法 */ - (void)dispatchApplyTest1 { //生成全局队列 dispatch_queue_t queue…
在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行.iOS开发中,有两种常用的方法可以实现延迟执行,一种是使用GCD,另外一种是使用NSRunLoop类中提供的方法. 1.使用GCD实现延迟执行 在GCD中可以使用dispatch_after()函数,封装一段代码到block中,在设置的延迟时间(dispatch_time_t)之后执行. void dispatch_after( dispatch_time_t when, dispatch_queue_t queue, disp…
OC中两种单例实现方式 写在前面 前两天探索了一下C++ 的单例,领悟深刻了许多.今天来看看OC中的单例又是怎么回事.查看相关资料,发现在OC中一般有两种实现单例的方式,一种方式是跟C++ 中类似的常规实现方法,另一种是利用GCD来实现的.接下来分别看看这两种单例实现方式是怎么做的 常规实现 与C++中的相似,在OC中实现单例需要满足以下条件: 设计一个私有的构造方法 设计一个私有的,本类的对象 设计一个类方法,作为2中类对象的全局访问点 接下来我们逐个解决上述3个条件. 首先,将构造函数设计为…
Laravel中的队列处理 队列介绍 为什么要有消息队?这里先对其进行一个简单的介绍,方便还不了解的同学理解.在面向对象里,有一个很简单的概念--消息传递,而消息队列就可以在它上面扩展一下,把它说的更通俗些:从执行的角度去看,消息队列把原 来可直接调用的一个函数(一段程序或一个对象)放到另一个进程中了,所以它们之间的消息传递就从直接传递参数变成了以队列为载体来传递所需参数的一种方式.更加详细的介绍可以参考这篇文章 众所周知,laravel是个优雅的框架,它的队列处理也不例外,可以先看看手册 La…
前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalyer 部分使用RxJava编写一点逻辑,其中涉及,RxJava2的被压.解除订阅等知识点,虽然简单,最起码没有丢了RxJava,后续Rxjava会继续研究,做记录. andorid提供了对声音和视频处理的api包android.media.本文编写了针对这几种方式播放的Demo,文章最后贴出. MediaPlayer播放音频 对于and…
话不多说,先上代码,在分析 Code - (void)viewDidLoad { [super viewDidLoad]; dispatch_group_t group1 = dispatch_group_create(); dispatch_group_t group2 = dispatch_group_create(); NSLog(@"1,begin"); if (1) { [self func1WithGroup:group1]; dispatch_group_enter(gr…
https://blog.csdn.net/niityzu/article/details/45190787 交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HBase中存储,然后使用Hive外部表关联HBase,对HBase中数据进行查询.统计分析,将分析结果保存在一张Hive表中,最后使用Sqoop将该表中数据导入到MySQL中.整个流程大概如下: 下面我主要介绍Hive关联HBase表——Sqoop导出Hive表到MySQL这些流程,原始数据集收集.M…
1.GCD-同步执行多线程时          GCD中不管向什么类型的队列加同步任务,实际上都会加到当前线程中(一般为主线程). 2.GCD-异步执行多线程时          GCD中不管向什么类型的队列加同步任务,实际上都会加到新开辟的新线程中(不是主线程). 举例如下:通过演示线程地址来佐证上述观点....... 情况一:GCD-同步   GCD中向并行队列加同步任务,实际上都会加到当前线程中. //当前主线程 NSLog(@"当前线程:%@",[NSThread curren…
GCD 确实好用 ,很强大,相比NSOpretion 无法提供 取消任务的功能. 如此强大的工具用不好可能会出现线程死锁. 如下代码: - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"=================4"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"=================5"); }); NSLog(@"===…
a yii2 extension to make simple to use queue. yii2-queue让队列的使用在yii2中变得更轻松,她为各种队列组件的使用提供了一个标准的接口,您只需要配置好需要使用的队列组件,就能轻松使用,同时您在不同队列组件之间的切换也只需要修改下配置文件,重启下队列监听进程即可,目前支持数据库队列,redis队列,beanstalkd队列,其它队列中间件支持正在添加中(当然,聪明的你也可以自行扩展). Installation The preferred w…
#import "ViewController.h" @interface ViewController () /** 注释 */ @property (nonatomic, strong) dispatch_source_t timer; @end @implementation ViewController /** * 1:GCD中的定时器:GCD中的定时器不受NSRanLoop影响 2:必须有强引用,引用该timer,要不,在方法执行完毕后timer就会被销毁,所以就不能执行定时…
1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一些程序. (2)Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令. 1.2 Shell的分类 (1)Bourne Shell:从1979年起Unix就开始使用Bourne Shell,其主文件名为sh…
系统调用:库函数封装了系统调用,通过库函数和系统调用打交道 用户态:低级别执行状态,代码的掌控范围会受到限制. 内核态:高执行级别,代码可移植性特权指令,访问任意物理地址 为什么划分级别:如果全部特权,系统容易崩溃...可以让系统更稳定, Linux 只有0和3级 如何区分:cs和eip 0x0000000以上地址空间仅有内核态可以访问,0x00000000——0xbffffff两种状态都可访问 中断处理是从用户态进入内核态的主要方式 切换时,保存用户态寄存器上下文,int指令在堆栈保存一些寄存…
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型(“prototype”)方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript"> var object = new Object(); object.name = "z…