- NSFastEnumeration
淡燃
今天看了个alibaba的开源库coobjc,看到了代码中使用了实现NSFastEnumeration协议的类进行for循环,顿时懵逼,嗯,现在是要把它搞懂Enumeration:列举仔细看一下iOS的NSArray,其中就实现了NSFastEnumeration协议@interfaceNSArray:NSObject协议是个什么鬼看代码,只包含了下边这一个方法和一个结构体NSFastEnumer
- NSFastEnumeration
Chrisss
NSFastEnumeration前言最近在实现一个自定义的容器类,在实现过程中,突然想到,如果别人在遍历这个容器类的时候,如果可以实现for...in的话,就可以让我们的容器类遍历起来更加的优雅(真的么???总觉得这个是我的强迫症犯了)。那么怎么样才能让我们的容器支持for...in呢?做过iOS同学大多数都应该知道或者听说过,for...in只要实现一个协议即可,这个协议就是NSFastEnu
- IOS中遍历数组元素方法
放牧塞外
遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选:1.for2.for...in(NSFastEnumeration)3.makeObjectsPerformSelector4.kvc集合运算符5.enumerateObjectsUsingBlock6.enumerateObjectsWithOptions(NSEnumerationConcurrent)7.
- [基础]RACTuple和RACSequence
古愿狼
RACTuple可用下标访问元素(实现了objectAtIndexedSubscript:方法)可用forin枚举(遵循NSFastEnumeration协议)可跟NSArray互相转换可转换为RACSequence可把NSNull.null转为RACTupleNil.tupleNil只从RACTuple的源码上看,貌似只是NSArray的再封装,并没有发现特别有用的地方,但可能在RAC的其他文件
- enumerateObjects遍历方法详解
DCSnail-蜗牛
在之前的文章中转载过iOS中集合遍历方法的比较和技巧,有兴趣的可以了解一下.本文主要是介绍enumerateObjects遍历方法.ios中常用的遍历运算方法遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选:经典for循环forin(NSFastEnumeration),若不熟悉可以参考《nshipster介绍NSFastEnumeration的文章》make
- 速查 NSArray NSSet NSHashTable 快速遍历之速度比较
diaohuaidi6355
因为NSArray中的指针并不是简单的连续存放的,所以简单的测试了Cocoa的三种集合的快速遍历(NSFastEnumeration)性能,给出简单的参考。添加元素:[collectionaddObject:[NSObjectnew]];遍历工作:for(iditemincollection.objectEnumerator){[itemisProxy];}循环次数:1,000,000样本:NSM
- enumerateObjectsUsingBlock
指尖的跳动
for(...in...)用起来非常方便、简洁,同时enumerateObjectsUsingBlock:也有很多新特性:通常enumerateObjectsUsingBlock:和(for(...in...)在效率上基本一致,有时会快些。主要是因为它们都是基于NSFastEnumeration实现的.快速迭代在处理的过程中需要多一次转换,当然也会消耗掉一些时间.基于Block的迭代可以达到本机存
- iOS开发集锦之 2017.03.17
Ashen_
1.养一只”无限猴子”帮你测试作者:四娘源码:SwiftMonkey描述:AframeworkfordoingrandomisedUItestingofiOSapps.2.iOS动画进阶-实现炫酷的上拉刷新动效作者:W_C__L源码:CRRefresh描述:分析动效;绘制曲线和曲线的拉拽;曲线的回弹效果;外层圆环的动画等3.谈谈集合遍历与NSFastEnumeration作者:Cyandev描述:
- 实现快速枚举 NSFastEnumeration
张霸天
基础知识快速枚举有两个优点。一是,实现快速枚举后,你可以直接使用for/in语法遍历你的对象。二是,如果将快速枚举实现得很好,会大大提高遍历的速度。实现快速枚举,很简单。只需要实现NSFastEnumeration协议就可以了,而且这个协议只有一个方法:NSMutableArray*array;NSLock*arrayLock;[arrayLocklock];[arrayaddObject:obj
- iOS中集合遍历方法的比较和技巧
hehtao
集合的遍历操作是开发中最常见的操作之一,从C语言经典的for循环到利用多核cpu的优势进行遍历,开发中ios有若干集合遍历方法,本文通过研究和测试比较了各个操作方法的效率和优略势,并总结几个使用集合遍历时的小技巧。ios中常用的遍历运算方法遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选:经典for循环forin(NSFastEnumeration),若不熟悉
- iOS开发技巧:开发过程中的集合遍历你真的会吗?
小人不才
集合的遍历操作是开发中最常见的操作之一,从C语言经典的for循环到利用多核cpu的优势进行遍历,开发中ios有若干集合遍历方法,本文通过研究和测试比较了各个操作方法的效率和优略势,并总结几个使用集合遍历时的小技巧。iOS中常用的遍历运算方法遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选:经典for循环forin(NSFastEnumeration),若不熟悉
- 迭代器设计模式
曲终人散Li
迭代器设计模式的作用是:提供一种方法去访问集合对象中的元素,但是又不对外暴露底层的结构和实现细节。使得遍历集合元素的功能从集合对象本身转移到迭代器对象。iOS上实现迭代器模式的方法:1.NSEnumerator类,它是Foundation.framework中的一个类,遵循了NSFastEnumeration协议,需要实现-(NSUInteger)countByEnumeratingWithSta
- iOS 中集合遍历方法的比较和技巧
PanPan1127
iOS中集合遍历方法的比较和技巧本文链接:http://blog.sunnyxx.com/2014/04/30/ios_iterator/iOS中常用的遍历运算遍历之目的:获取集合中某个对象或执行某个操作。经典for循环forin(NSFastEnumeration)KVC集合运算符enumerateObjectsUsingBlockenumerateObjectsWithOptions(NSEn
- iOS 中集合遍历方法的比较和技巧
哈哈哈_哈哈哈
集合的遍历操作是开发中最常见的操作之一,从C语言经典的for循环到利用多核cpu的优势进行遍历,开发中ios有若干集合遍历方法,本文通过研究和测试比较了各个操作方法的效率和优略势,并总结几个使用集合遍历时的小技巧。ios中常用的遍历运算方法遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选:经典for循环forin(NSFastEnumeration),若不熟悉
- NSFastEnumeration使用原理分析
马修王
前言:集合类在每门编程语言中都有着非常重要的地位,每一门语言对于集合类的实现和提供的API也大同小异。相比于Java、C#等编程语言Objective-C相对薄弱一些,不过笔者用久了了就慢慢习惯了,思考也少了。之前看RACSequence源码时惊叹于其中的设计之余也遇到好多模糊的知识点,NSFastEnumeration就是其中之一,在此做下学习笔记,至于RAC的源码阅读和分析日后再分章节奉上。首
- 速查 NSArray NSSet NSHashTable 快速遍历之速度比较
米太白
因为NSArray中的指针并不是简单的连续存放的,所以简单的测试了Cocoa的三种集合的快速遍历(NSFastEnumeration)性能,给出简单的参考。添加元素:[collectionaddObject:[NSObjectnew]];遍历工作:for(iditemincollection.objectEnumerator){[itemisProxy];}循环次数:1,000,000样本:NSM
- 快速枚举协议:NSFastEnumeration
b993bf901411
问题下面的代码输出是什么?会不会Crash?如果Crash解释一下原因。NSMutableArray*array=[NSMutableArrayarrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",nil];for(NSString*objinarray){if([objisEqualToString:@"3"]){[arrayremoveObje
- iOS7: 漫谈基础集合类(NSArray,NSSet,NSOrderedSet,NSDictionary,NSMapTable,NSHashTable, NSPointerArray, NSIndexSet,NSCache, NSFastEnumeration)
enumeration
基础集合类是每一个Mac/iOS应用的基本组成部分。在本文中,我们将对”老类”(NSArray, NSSet)和”新类”(NSMapTable, NSHashTable, NSPointerArray)进行一个深入的研究,探索每一个的效率细节,并讨论其使用场景。
提示:本文包含一些参照结果,但它们并不意味着绝对精确,也没有进行多个、复杂的测试。这些结果的目的是
- NSFastEnumeration
enumeration
实现了NSFastEnumeration协议的集合的都可以使用快速枚举的特性,如NSArray, NSDictionary, NSSet, NSEnumerator等。注意这里NSEnumerator也实现了NSFastEnumeration协议,这样可以执行一些特殊的任务,如使用reverseObjectEnumerator来对数组进行反同查询。
快速枚举的格式如下:
for(type l
- 【iOS】NSArray 数组类(Xcode文档翻译)
lotusiki
IOCocNSArray
NSArrayInheritsfrom继承自NSObjectComformsto遵循协议NSFastEnumeration,NSObject,NSCopying,NSMutableCopying,NSSecureCodingOverviewNSArrayanditssubclassNSMutableArraymanageorderedcollectionsofobjectscalledarrays
- jdk tomcat 环境变量配置
Array_06
javajdktomcat
Win7 下如何配置java环境变量
1。准备jdk包,win7系统,tomcat安装包(均上网下载即可)
2。进行对jdk的安装,尽量为默认路径(但要记住啊!!以防以后配置用。。。)
3。分别配置高级环境变量。
电脑-->右击属性-->高级环境变量-->环境变量。
分别配置 :
path
&nbs
- Spring调SDK包报java.lang.NoSuchFieldError错误
bijian1013
javaspring
在工作中调另一个系统的SDK包,出现如下java.lang.NoSuchFieldError错误。
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.l
- LeetCode[位运算] - #136 数组中的单一数
Cwind
java题解位运算LeetCodeAlgorithm
原题链接:#136 Single Number
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现两次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
题目限定了线性的时间复杂度,同时不使用额外的空间,即要求只遍历数组一遍得出结果。由于异或运算 n XOR n = 0, n XOR 0 = n,故将数组中的每个元素进
- qq登陆界面开发
15700786134
qq
今天我们来开发一个qq登陆界面,首先写一个界面程序,一个界面首先是一个Frame对象,即是一个窗体。然后在这个窗体上放置其他组件。代码如下:
public class First { public void initul(){ jf=ne
- Linux的程序包管理器RPM
被触发
linux
在早期我们使用源代码的方式来安装软件时,都需要先把源程序代码编译成可执行的二进制安装程序,然后进行安装。这就意味着每次安装软件都需要经过预处理-->编译-->汇编-->链接-->生成安装文件--> 安装,这个复杂而艰辛的过程。为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,我们只需要根据自己的
- socket通信遇到EOFException
肆无忌惮_
EOFException
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:
- 基于spring的web项目定时操作
知了ing
javaWeb
废话不多说,直接上代码,很简单 配置一下项目启动就行
1,web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="h
- 树形结构的数据库表Schema设计
矮蛋蛋
schema
原文地址:
http://blog.csdn.net/MONKEY_D_MENG/article/details/6647488
程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。然而目前的各种基于关系的数据库,都是以二维表的形式记录存储数据信息,
- maven将jar包和源码一起打包到本地仓库
alleni123
maven
http://stackoverflow.com/questions/4031987/how-to-upload-sources-to-local-maven-repository
<project>
...
<build>
<plugins>
<plugin>
<groupI
- java IO操作 与 File 获取文件或文件夹的大小,可读,等属性!!!
百合不是茶
类 File
File是指文件和目录路径名的抽象表示形式。
1,何为文件:
标准文件(txt doc mp3...)
目录文件(文件夹)
虚拟内存文件
2,File类中有可以创建文件的 createNewFile()方法,在创建新文件的时候需要try{} catch(){}因为可能会抛出异常;也有可以判断文件是否是一个标准文件的方法isFile();这些防抖都
- Spring注入有继承关系的类(2)
bijian1013
javaspring
被注入类的父类有相应的属性,Spring可以直接注入相应的属性,如下所例:1.AClass类
package com.bijian.spring.test4;
public class AClass {
private String a;
private String b;
public String getA() {
retu
- 30岁转型期你能否成为成功人士
bijian1013
成长励志
很多人由于年轻时走了弯路,到了30岁一事无成,这样的例子大有人在。但同样也有一些人,整个职业生涯都发展得很优秀,到了30岁已经成为职场的精英阶层。由于做猎头的原因,我们接触很多30岁左右的经理人,发现他们在职业发展道路上往往有很多致命的问题。在30岁之前,他们的职业生涯表现很优秀,但从30岁到40岁这一段,很多人
- 【Velocity四】Velocity与Java互操作
bit1129
velocity
Velocity出现的目的用于简化基于MVC的web应用开发,用于替代JSP标签技术,那么Velocity如何访问Java代码.本篇继续以Velocity三http://bit1129.iteye.com/blog/2106142中的例子为基础,
POJO
package com.tom.servlets;
public
- 【Hive十一】Hive数据倾斜优化
bit1129
hive
什么是Hive数据倾斜问题
操作:join,group by,count distinct
现象:任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成;查看未完成的子任务,可以看到本地读写数据量积累非常大,通常超过10GB可以认定为发生数据倾斜。
原因:key分布不均匀
倾斜度衡量:平均记录数超过50w且
- 在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua csrf
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
- java-3.求子数组的最大和
bylijinnan
java
package beautyOfCoding;
public class MaxSubArraySum {
/**
* 3.求子数组的最大和
题目描述:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4,
- Netty源码学习-FileRegion
bylijinnan
javanetty
今天看org.jboss.netty.example.http.file.HttpStaticFileServerHandler.java
可以直接往channel里面写入一个FileRegion对象,而不需要相应的encoder:
//pipeline(没有诸如“FileRegionEncoder”的handler):
public ChannelPipeline ge
- 使用ZeroClipboard解决跨浏览器复制到剪贴板的问题
cngolon
跨浏览器复制到粘贴板Zero Clipboard
Zero Clipboard的实现原理
Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flash的复制功能把传入的内容复制到剪贴板。
Zero Clipboard的安装方法
首先需要下载 Zero Clipboard的压缩包,解压后把文件夹中两个文件:ZeroClipboard.js
- 单例模式
cuishikuan
单例模式
第一种(懒汉,线程不安全):
public class Singleton { 2 private static Singleton instance; 3 pri
- spring+websocket的使用
dalan_123
一、spring配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.or
- 细节问题:ZEROFILL的用法范围。
dcj3sjt126com
mysql
1、zerofill把月份中的一位数字比如1,2,3等加前导0
mysql> CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL, -> day
- Android开发10——Activity的跳转与传值
dcj3sjt126com
Android开发
Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据。
一、Activity跳转
方法一Intent intent = new Intent(A.this, B.class); startActivity(intent)
方法二Intent intent = new Intent();intent.setCla
- jdbc 得到表结构、主键
eksliang
jdbc 得到表结构、主键
转自博客:http://blog.csdn.net/ocean1010/article/details/7266042
假设有个con DatabaseMetaData dbmd = con.getMetaData(); rs = dbmd.getColumns(con.getCatalog(), schema, tableName, null); rs.getSt
- Android 应用程序开关GPS
gqdy365
android
要在应用程序中操作GPS开关需要权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
但在配置文件中添加此权限之后会报错,无法再eclipse里面正常编译,怎么办?
1、方法一:将项目放到Android源码中编译;
2、方法二:网上有人说cl
- Windows上调试MapReduce
zhiquanliu
mapreduce
1.下载hadoop2x-eclipse-plugin https://github.com/winghc/hadoop2x-eclipse-plugin.git 把 hadoop2.6.0-eclipse-plugin.jar 放到eclipse plugin 目录中。 2.下载 hadoop2.6_x64_.zip http://dl.iteye.com/topics/download/d2b
- 如何看待一些知名博客推广软文的行为?
justjavac
博客
本文来自我在知乎上的一个回答:http://www.zhihu.com/question/23431810/answer/24588621
互联网上的两种典型心态:
当初求种像条狗,如今撸完嫌人丑
当初搜贴像条犬,如今读完嫌人软
你为啥感觉不舒服呢?
难道非得要作者把自己的劳动成果免费给你用,你才舒服?
就如同 Google 关闭了 Gooled Reader,那是
- sql优化总结
macroli
sql
为了是自己对sql优化有更好的原则性,在这里做一下总结,个人原则如有不对请多多指教。谢谢!
要知道一个简单的sql语句执行效率,就要有查看方式,一遍更好的进行优化。
一、简单的统计语句执行时间
declare @d datetime ---定义一个datetime的变量set @d=getdate() ---获取查询语句开始前的时间select user_id
- Linux Oracle中常遇到的一些问题及命令总结
超声波
oraclelinux
1.linux更改主机名
(1)#hostname oracledb 临时修改主机名
(2) vi /etc/sysconfig/network 修改hostname
(3) vi /etc/hosts 修改IP对应的主机名
2.linux重启oracle实例及监听的各种方法
(注意操作的顺序应该是先监听,后数据库实例)
&nbs
- hive函数大全及使用示例
superlxw1234
hadoophive函数
具体说明及示例参 见附件文档。
文档目录:
目录
一、关系运算: 4
1. 等值比较: = 4
2. 不等值比较: <> 4
3. 小于比较: < 4
4. 小于等于比较: <= 4
5. 大于比较: > 5
6. 大于等于比较: >= 5
7. 空值判断: IS NULL 5
- Spring 4.2新特性-使用@Order调整配置类加载顺序
wiselyman
spring 4
4.1 @Order
Spring 4.2 利用@Order控制配置类的加载顺序
4.2 演示
两个演示bean
package com.wisely.spring4_2.order;
public class Demo1Service {
}
package com.wisely.spring4_2.order;
public class