04 2014 档案
时间与日期处理
摘要:来源:http://www.cnblogs.com/wayne23/archive/2013/03/25/2981009.html主要有以下类: NSDate -- 表示一个绝对的时间点NSTimeZone -- 时区信息NSLocale -- 本地化信息NSDateComponents -- 一个... 阅读全文
posted @ 2014-04-26 16:23 猿人谷 阅读(2297) 评论(0) 推荐(0) 编辑
KVO/KVC 实现机理分析
摘要:来源:http://blog.csdn.net/dqjyong/article/details/7672865Objective-C里面的Key-Value Observing (KVO)机制,非常不错,可以很好的减少浇水代码。关于KVO的学习,可以参考文章:《Key-Value Observing... 阅读全文
posted @ 2014-04-22 21:51 猿人谷 阅读(2109) 评论(0) 推荐(0) 编辑
iOS NSNotification的使用
摘要:如果在一个类中想要执行另一个类中的方法可以使用通知1.创建一个通知对象:使用notificationWithName:object: 或者 notificationWithName:object:userInfo: NSNotification* notification = [NSNotifica... 阅读全文
posted @ 2014-04-22 21:49 猿人谷 阅读(31590) 评论(1) 推荐(4) 编辑
iOS Storyboard全解析
摘要:来源:http://iaiai.iteye.com/blog/1493956Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图:现在,你就可以清楚的看到这个应用究竟是干些什么的,也可... 阅读全文
posted @ 2014-04-18 16:58 猿人谷 阅读(37670) 评论(2) 推荐(7) 编辑
2.检查网络状态
摘要:以后慢慢启用个人博客:http://www.yuanrengu.com 当应用程序需要访问网络时,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理。最好能监听设备的网络状态的改变,当设备网络状态连接、断开时,程序也应该有相应的处理。 工欲善其事必先利器 阅读全文
posted @ 2014-04-15 18:31 猿人谷 阅读(8865) 评论(2) 推荐(14) 编辑
1.注册或登录页面设计:UILabel,UIButton,UITextField
摘要:学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程中遇到的一些知识进行总结,希望能对iOS初学者能有一定的帮助。最初学iOS的时候苦于没有大神指点,全靠自己一点点摸索,确实走了很多弯路,不希望 阅读全文
posted @ 2014-04-14 19:24 猿人谷 阅读(10737) 评论(2) 推荐(3) 编辑
NSUserDefaults简介及使用
摘要:NSUserDefaults类提供了一个与默认系统进行交互的编程接口。NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等。默认系统允许应用程序自定义它的行为去迎合用户的喜好。你可以在程序运行的时候从用户默认的数据库中读取程序的设置。同时NSUserDefaults的... 阅读全文
posted @ 2014-04-14 10:14 猿人谷 阅读(34896) 评论(0) 推荐(1) 编辑
长连接和短连接分析
摘要:1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接 时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是c 阅读全文
posted @ 2014-04-12 16:45 猿人谷 阅读(4339) 评论(0) 推荐(0) 编辑
A*算法入门
摘要:来源:http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算法。启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。估价函数:从当前节点移动到目标节点的预估费用;这个估计就是启发式的。在寻路问题和迷宫问题中,我们通常用曼哈顿(manhattan)估价函数(下文有介绍)预估费用。A*算法与BF 阅读全文
posted @ 2014-04-12 16:02 猿人谷 阅读(1065) 评论(0) 推荐(0) 编辑
最小的K个数:用快排的思想去解相关问题
摘要:实现快速排序算法的关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移到数组的左边,比选择的数字大的数字移到数组的右边。这个函数可以如下实现:int Partition(int data[], int length, int start, int end){ if(data == NULL || length = length) throw new std::exception("Invalid Parameters"); int index = RandomInRange(start, end); swap(&data... 阅读全文
posted @ 2014-04-06 19:16 猿人谷 阅读(651) 评论(0) 推荐(0) 编辑
排序算法小结
摘要:转自:http://blog.csdn.net/caryaliu/article/details/8280647从以下几个方面来比较排序算法:1. 算法的时间和空间复杂度2. 排序的稳定性3. 算法结构的复杂度4. 参加排序的数据规模排序的稳定性:稳定排序方法: 插入排序、冒泡排序、二路归并排序、基数排序是稳定排序算法;不稳定排序方法: 选择排序、谢尔排序、快速排序、堆积排序是不稳定排序算法。算法复杂度比较:各种内排序算法的时间、空间复杂度排序方法平均时间最坏情况辅助空间插入排序O(n*n)O(n*n)O(1)谢尔排序O(n*log2n)O(n*log2n)O(1)泡排序O(n*n)O(n*n 阅读全文
posted @ 2014-04-06 17:11 猿人谷 阅读(2386) 评论(0) 推荐(0) 编辑
八皇后问题
摘要:题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。这就是有名的八皇后问题。解决这个问题通常需要用递归,而递归对编程能力的要求比较高。因此有不少面试官青睐这个题目,用来考察应聘者的分析复杂问题的能力以及编程的能力。由于八个皇后的任意两个不能处在同一行,那么这肯定是每一个皇后占据一行。于是我们可以定义一个数组ColumnIndex[8],数组中第i个数字表示位于第i行的皇后的列号。先把ColumnIndex的八个数字分别用0-7初始化,接 阅读全文
posted @ 2014-04-04 19:26 猿人谷 阅读(557) 评论(0) 推荐(0) 编辑
圆圈中最后剩下的数字
摘要:题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。这就是有名的约瑟夫(Josephuse)环问题。可以用环形链表模拟圆圈的经典解法。分析:用模板库中的std::list来模拟一个环形链表。由于std::list本身不是一个环形结构,因此每当迭代器扫描到链表末尾的时候,要记得把迭代器移到链表的头部,这样就相当于按照顺序在一个圆圈里遍历了。这种思路的代码如下:int LastRemaining(unsigned int n, unsigned int m){ if(n numbers; for(i = 0... 阅读全文
posted @ 2014-04-04 17:17 猿人谷 阅读(529) 评论(0) 推荐(0) 编辑
不用加减乘除做加法
摘要:题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。分析:第一步:不考虑进位对每一位相加。0加0、1加1的结果都是0,0加1,1加0的结果都是1 。注意到,这和异或的结果是一样的。第二步:进位,对0加0,0加1,1加0而言,都不会产生进位,只有1加1时,会向前产生1个进位。此时我们刻意想象成是两个数先做位与运算,然后再向左移动一位。第三步:相加的过程依然是重复前面两步,知道不产生进位为止。如下是一段基于循环实现的参考代码:int Add(int num1, int num2){ int sum, carry; do{ sum = num... 阅读全文
posted @ 2014-04-04 16:47 猿人谷 阅读(381) 评论(0) 推荐(0) 编辑
df和du显示的磁盘空间使用情况不一致的原因及处理
摘要:在Linux下查看磁盘空间使用情况,最常使用的就是du和df了。然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊。1. 如何记忆这两个命令du-Disk Usagedf-Disk Free2. df 和du 的工作原理2.1 du的工作原理du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。2.2 df的工作原理df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针.. 阅读全文
posted @ 2014-04-04 11:05 猿人谷 阅读(56533) 评论(3) 推荐(4) 编辑
已知ip地址和其子网掩码如何求网络号子网号主机号
摘要:已知ip地址为10.130.89.95,其子网掩码为255.255.255.224,求其网络号、子网号和主机号。要看子网掩码变长在第几节,255.255.255.224是在第四节借了位 把224转换为2进制,windows的计算器科学型能帮你计算。是11100000,借了三位 借了三位,子网个数为2的三次方等于8 即八个子网 其实书上说得挺复杂,我感觉,计算网络号最简单的方法就是 256(这是个固定的数字)除以8(子网个数),等于32 那么,八个子网号就分别是 10.130.89.0 10.130.89.32 10.130.89.64 10.130.89.96 10.130.89.128 10 阅读全文
posted @ 2014-04-04 09:27 猿人谷 阅读(33521) 评论(1) 推荐(1) 编辑
和为S的两个数字VS和为s的连续正数序列
摘要:题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。思路整理一下:最初我们找到数组的第一个数字和最后一个数字。首先定义两个指针,第一个指针指向数组的第一个(也就是最小的)数字,第二个指针指向数组的最后一个(也就是最大的)数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个数字的和小于数字时,把较小的数字往后移动;当相等时,打完收工。这样扫描的顺序是从数组的两端向数组的中间扫描。bool FindNumbersWithS 阅读全文
posted @ 2014-04-03 19:02 猿人谷 阅读(1407) 评论(0) 推荐(0) 编辑
数字在排序数组中出现的次数
摘要:题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.找到排序数组中的第一个K:int GetFirstK(int *data, int length, int k, int start, int end){ if(start > end) return -1; int middleIndex = start + ((end - start) >> 1); int middleData = data[middleIndex]; if(middleDat... 阅读全文
posted @ 2014-04-03 10:17 猿人谷 阅读(429) 评论(0) 推荐(0) 编辑