- 博客(134)
- 问答 (1)
- 收藏
- 关注
原创 大话数据结构之:稠密索引
概念前面讲的两种查询方法都是基于有序小量的基础上,但是数据集的增长速度一般都很迅速,如微博,日活可以达到上千万上亿条,这么多的数据,如果按照某个关键字进行排列是不现实的,通常都是按照先后顺序存储的。 对于这样的数据表,如何能够快速的查找到需要的数据呢?办法就是——索引。 数据结构的最终目的是提高数据的处理速度,索引是为了加快查找速度而设计的一种数据结构。 所谓索引,就是把一个关键字与它对应的
2017-03-08 14:32:45 523
原创 大话数据结构之:简单选择排序
简单选择排序 简单选择排序法(simple selection sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出最小关键字的记录,并和第i个记录交换之。我们来看代码:void simple_selection_cort(int *array, int n){ int min; for(int i = 0; i < n; i++){ min =
2017-03-08 10:45:16 372
原创 大话数据结构之:冒泡排序
对于排序来说,冒泡排序是最简单的排序算法,它的主要思想是,通过每一趟的两两比较,使需要的数字慢慢从底部冒上来,故称为冒泡排序。
2017-03-07 21:52:39 565
原创 大话数据结构之:折半查找
折半查找(Binary search)也称为二分查找。它的前提是线性数据表中的记录必须是关键码有序(通常是从小到大有序),线性表必须采用顺序存储。折半查询的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找;不断重复
2017-03-03 14:09:46 453
原创 大话数据结构之:顺序查找
顺序查找又称为线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)记录查起,逐个进行记录的关键字和给定值的比较。若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定值比较都不相等,则表中没有所查的记录,查找失败。基本算法如下:/* array 要查的数组 n 数组大小 key 要查的关键字 */int s
2017-03-03 09:43:56 576
转载 Xcode使用Profile的leaks检测内存泄露
在Xcode中提供了两种工具来优化程序:Analyze和ProfileAnalyze是静态分析工具,通过Product→Analyze进行静态分析,不需要真机,在Xcode中只分析代码逻辑;Profile是动态分析工具,这个工具叫“Instruments”,通过Product→Profile启动。启动Profile需要在真机上进行,模拟器是不能真实的反馈出程序运行的一系列需要优化的地方
2017-03-01 16:51:06 2401
原创 使用Analyze静态分析代码
在Xcode的工具栏中,有一个Product,Product里面的工具,可以说是Xcode中比较强大的,工程性能的调优都依赖于这些。这篇就简单说下Analyze,毕竟现在都用ARC开发,如不使用CoreFoundation开发,内存泄露的情况不容易发生。Analyze主要的作用有:内存泄露检查 Memory Error逻辑错误检查 Logic Error声明错误检查 D
2017-03-01 14:54:15 1307
原创 Xcode中的Crash信息获取和定位
Xcode的打包上架工具会自动收集APP发生的crash信息,并详细的说明发生的次数和发生的位置。同时还能够快速的定位到错误的代码位置。步骤如下:1、打开Xcode,选择window->organizer,就能打开打包的工具。2、打开打包工具,会看到选项archives和crashes3、选择crashes,左侧选中要查看的app,再点击release,选择线上的...
2017-02-24 20:59:46 2635 1
原创 友盟崩溃信息定位
一般来说,产品上线后或多或少都会一些在测试过程中极难发现的bug存在,而引起程序的崩溃,影响用户的体验。除了苹果自身收集crash信息外,基本上用的最多的就是友盟了。然而友盟的崩溃信息我们如果不借助工具,是很难定位到具体的类和行的。今天就要说说如何定位到具体的类,类中的哪一行出现了crash,并结合友盟的提示,快速的解决bug。1、Xcode设置确定打包的同时生成dSYM文件B
2017-02-23 21:17:08 1545
原创 网络:HTTP详解
1、什么是URLURL称为:统一资源定位符,http通过一个URL能找到互联网上唯一的资源。URL就是资源的地址、位置,互联网上每个资源都有唯一的地址。URL的基本格式:协议://主机地址/路径协议:不同的协议代表着不同的资源查找方式、传输方式主机地址:存放资源的主机IP地址(域名)路径:资源在主机中的具体位置2、URL中常见的协议该层的协议是用来查找文...
2017-02-22 11:37:12 435
转载 网络:TCP/UDP详解
1、TCPTCP是一种流模式的协议。是面向连接的、传输可靠(保证数据正确性且保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销多(时间、系统资源)的协议。也就是说,在连接持续过程中,Socket中收到的数据都是同一台主机发出的,因此知道数据是有序到达就行了,至于每次读取多少数据不关心。2、TCP的三次握手SYN(synchronous)是同步标志;ACK...
2017-02-22 10:36:44 427
原创 网络:基本概念之HTTP、TCP/IP、UDP,Socket
1、网络层的概念网络自下往上依次分为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。其中物理层、数据链路层、网络层被称为媒体层,是网络工程师研究的对象。传输层、会话层、表示层、应用层被称为主机层,是用户所面向和关心的对象。2、HTTP协议对应应用层TCP、UDP对应传输层IP对应网络层三者本质上没有可比性:HTTP协议是基于TCP连...
2017-02-21 10:28:56 622
原创 SVN管理工具Cornerstone之:代码合并
将分支代码合并到主分支上1、选中Working Copies中需要合并的主分支2、点击上部工具栏中的Merge,出现如下界面,依次进行操作。同时注意观察Change Preview中文件的标识。3、对冲突的文件进行处理,4、处理完成后点击Merge Changes,也可以先点击Merge changes,在进行处理。5.、点击update,更新后再cha
2017-02-20 20:20:59 2043 2
原创 SVN管理工具Cornerstone之:文件图标说明和处理
明白文件的图标,可以一目了然的知道该进行什么样的操作。SVN中文件有如下图标:A:add,新增C:conflict,冲突D:delete,删除M:modify,本地已经修改G:modify and merGed,本地文件修改并且和服务器的进行合并U:update,从服务器更新R:replace,从服务器替换I:ignored,忽略
2017-02-20 20:10:36 2023
原创 SVN管理工具Cornerstone之:提交代码
在分支开发完某个功能,并运行正常后提交代码更新。1、点击分支目录,一般分支目录右侧会有变动的文件数。2、点击Update,进行更新,此处的更新为更新别的小伙伴提交的最新代码,如果当前的工程不是最新的,提交会不成功。3、更新完成后点击change,就会出现所有改动过的文件,选择需要提交的文件,一般全部选择。文件后面不同的图标代表不同的含义,下一节会进行说明。
2017-02-20 17:09:58 2101
原创 SVN管理工具Cornerstone之:创建分支
在SVN上创建好项目工程,在开发的过程中需要创建开发的分支进行开发。创建分支的步骤:1、点击新创建的工程,右侧会出现工程的内容,一般会有如下模块branches:里面存放的是你自己和同事创建的所有分支tags:打了标签的文件,一般来说是比较重要的。我们线上的版本,都会打一个相应的标签版本。以便有问题的时候容易查找trunk:主分支,所有的分支和标签分支都是用它创建的
2017-02-20 10:12:25 5100 1
原创 SVN管理工具Cornerstone之:创建项目
创建SVN项目:一般后台工程师会创建好,他们直接帮你开好SVN的账号,用他们提供的路径和账号密码,添加工程1、点击仓库的+号,出现添加路径的页面2、添加路径:选择添加路径的方式:全部输入完成,点击Add,完成添加。仓库更新完成后就可以看见了。3、编辑创建好的项目:4、选择Edit Repository,出现添加路径的页面,进行路径的修
2017-02-20 09:52:53 2098
原创 UITableView之(七):模型
模型的运用是使用tableView的重点。如下为创建和使用模型过程的基本和走过的坑:创建:1、根据数据的返回和项目的实际,创建模型的名称,继承于NSObject,如Person;2、设置模型的属性,模型的属性名和数据返回的名称要一致,如不一致需要进行处理,如name、sex、age、id等,id为系统保留名称,需要进行特殊处理。使用iOS自带的方法进行数据转模型设置:设置I...
2016-09-14 11:07:52 300
原创 UITableView之(六):HeaderView和FooterView
UITableView提供了tableHeaderView、tableFooterView、 viewForFooterInSection、viewForHeaderInSection来为表格设置样式,它们的用法略有区别。tableHeaderView和tableFooterView的用法相同:1、可以为任何style的tableView设置,并且头和尾只有各一个2、创建需要显示的vi...
2016-09-14 10:02:29 2499
原创 UITableView之(五):自定义UITableViewCell
几乎所有的tableViewCell都是采用自定义的方式进行展示UI的。自定义tableViewCell是学习tableView的重点和难点。重点:经常用到难点:1、复杂cell的显示细节非常多 2、控制好cell的重用,cell的异常显示往往和重用有很大的关系,这也是bug的重灾区 3、可变高度的计算,很多情况下自定义的cell的高度都不会...
2016-09-12 11:23:22 566
原创 UITableView之(四):使用UITableViewCell
创建使用tableViewCell有两种方式:1、创建tableViewCell:常应用于代码创建- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *const cellId = @"...
2016-09-12 10:24:15 292
原创 SVN管理工具Cornerstone之:Check Out
使用Cornerstone管理源代码,有时候会从把整个仓库Check Out。点击:选择Check Out,接着:更新完毕后,在working copies区域会出现刚刚Check Out的文件,就可以进行操作了。如果因文件加载时间太久,可以不checkout仓库的全部内容,只checkout需要的部分。这样不管是update
2016-09-09 17:40:49 3963 4
原创 UITableView之(三):UITableViewCell
iOS设计中最重要的概念之一:重用机制UITableViewCell的设计使用的就是重用机制,这大大节省了资源的占用。这也是设计中要注意的点,很多情况下tableViewCell不能正常显示,或者是显示有差异,有很大一部分的原因就是重用机制没有运用好。重用机制:显示在屏幕上的cell是实实在在创建出来的,同样类型的cell都有相同的标志identifier,当最上面的cell随着滑动消...
2016-09-09 17:26:15 600
原创 UITableView之(二):删除、移动
UItableView提供了编辑的方法: // 添加编辑按钮 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"删除" style:(UIBarButtonItemStyleDone) target:self action:@selector(edi...
2016-09-09 15:36:24 288
原创 UITableView之(一):基本概念和用法
UITableView 是iOS中最重要的控件,几乎所有的页面都可以用UITableView完成。基本用法:tableView的使用需要遵循代理和数据源,这也是一种非常棒的设计模式,数据源模式可以近似为代理模式。 // 基本属性 // 设置tableView的类型 // UITableViewStylePlain 基本类型,分区头标题会悬浮 ...
2016-09-09 11:01:20 1941
原创 数据存储之(四): 归档、反归档
NSKeyedArchiver如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,可以直接用NSKeyedArchiver进行归档和恢复不是所有的对象都可以直接用这种方法进行归档,只有遵守了NSCoding协议的对象才可以NSCoding协议有2个方法:encodeWithCoder:每次归档对象时,都会调用这...
2016-03-11 14:39:30 486
原创 数据存储之(三): Library/Preference路径的存储---NSUserDefaults
偏好设置:很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能每个应用都有个NSUserDefaults实例,通过它来存取偏好设置比如,保存用户名、字体大小、是否自动登录NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];...
2016-03-11 14:26:46 1464
原创 数据存储之(二):基本数据的存储
基本数据的存储使用的是属性存储:属性列表是一种XML格式的文件,拓展名为plist。当然,文件的后缀可以自由定义,不影响数据的存储和读取。如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中步骤:1、获取并创建沙盒路径2、将数据...
2016-03-11 11:47:04 471
原创 数据存储之(一):iOS数据存储方式及沙盒的说明
iOS数据存储的几种方式:1、XML属性列表(plist)归档2、Preference(偏好设置)3、NSKeyedArchiver归档(NSCoding)4、SQLite35、CoreData应用沙盒:每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒。应用沙盒的文件系统目...
2016-03-11 11:32:13 334
转载 UI基础学习之(十六):NSTimer
总结NStimer的使用如下:NSTimer有五种创建的方法:一、初始化方法:有五种初始化方法,分别是+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;- (void)viewDidLoad {
2016-02-14 11:27:26 315
原创 UI基础学习之(十五):UIPickerView
使用UIPickerView可以在用户摄者时提供便利,尤其是固定的信息中:如省市的选择,性别的选择数据源的获取:#import @interface Province : NSObject@property (copy, nonatomic)NSString *name;@property (strong, nonatomic)NSArray *cities;
2016-02-14 10:53:24 365
原创 Core Graphics之(五):图形上下文栈
图形上下文栈,即使用了栈的相关属性,将上下文保存在栈中,并进行入栈和出栈的操作。入栈的上下文保存了相关的设置,出栈后,栈中将只保存最原始的上下文。栈:先进后出,后进先出效果图:- (void)drawRect:(CGRect)rect{ //1、获取上下文 类似于单例对象 在drawRect方法中不管调用几次都返回同一个对象 CGContextR...
2016-02-14 10:16:36 385
原创 Core Graphics之(三):绘制进度条
综合运用Core Graphics绘制进度条:效果图如下:在ViewController创建slider和view属性,同时设置slider的value范围为0-1。进度条的范围随value的变化而变化。在view中声明progress属性,用来接收silder的value的值。在view中,使用label显示当前进度的大小。绘制圆形,需要设置set...
2016-02-14 09:11:38 452
原创 Core Graphics之(二):绘制:矩形、椭圆、圆形、文字、图片
使用Graphics函数可以绘制线段,也可以绘制图形。1、绘制矩形(可以使用线段拼接绘制图形,但iOS提供了更好用的绘制图形的函数)2、在设定的CGRect中画圆,随CGRect的形状而改变圆形椭圆3、使用绘制圆形的函数画圆4、画字符串5、画图片6、在图片上添加水印(画文字)...
2016-02-04 15:35:09 2640 2
原创 Core Graphics之(一):绘制线段、线段的设置
使用绘图的步骤:1、创建继承与UIVIew的View视图2、重写View的DrawRect方法:- (void)drawRect:(CGRect)rect ;3、将View视图添加到Controller上CGContextRef主要的函数将在以下的示例中说明:1、绘制基本线段2、绘制图形任何图形都可以绘制成功,需要详细计算对应的点3、对图形...
2016-02-04 14:53:49 1108
原创 UI基础学习之(十四):手势
接上篇:transform手势配合使用transform手势可以添加在任何想要的地方,一般添加在imageView上。GestureRecognizer 手势识别器使用手势,首先要确定控件的手势交互式打开的://打开交互self.rv.imv.userInteractionEnabled = YES; 1、轻拍UITapGestureRe
2016-02-04 11:19:25 280
原创 SVN管理工具Cornerstone之:创建分支、提交合并
创建工程的分支:步骤:1、选择左下角仓库repositories中的工程名-》选择trunk-》点击Branch-》在提示框里填写分支名称create,2、在做上角working copies中选择对应的工程名,点击update进行更新下载3、以上步骤就完成了分支的创建分支的提交 1、分支完成后,可以选择提交整个分支,也可以选择提交分支中changes的文件
2016-02-03 11:16:14 13345
原创 UITableView之(九):上拉刷新的原理介绍
UITableView : UIScrollViewUITableView继承于UIScrollView,默认遵守UIScrollView的代理协议,使用UIScrollView的代理方法来进行设置:scrollView.contentInset包含如下属性:CGFloat top, left, bottom, right;在scrollView中,top是上面额外的高度,...
2016-01-25 11:38:37 546
空空如也
C语言中:二维数组能否作为函数参数,如何定义?
2015-08-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人