自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

转载 HTTP返回代码 201 304 404 500等代表的含义

在网站日志中,我们经常会看到很多返回的http代码,如201、304、404、500等等。可是这些具体的返回的HTTP代码究竟什么含义呢,在此做一下知识普及吧,记不住不要紧,到时候看看就行了,但最主要的几个还要要清楚的。 一些常见的状态码为:  200 - 服务器成功返回网页  404 - 请求的网页不存在  503 - 服务器超时  下面提供 HTTP 状

2016-09-22 15:32:38 398

转载 C语言的一个关键字——static

C语言的一个关键字——staticStatic在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数。1、Static修饰变量按照作用范围的不同,变量分为局部变量和全局变量。如果用static修饰变量,不论这个变量是全局的还是局部的都是存储在静态数据区。下面分开来讲:¨          如果用static修饰全局变量,我们称其为静态全局变量。我们用st

2016-09-20 20:26:18 343

转载 堆和栈的区别(转过无数次的文章)

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2016-09-20 20:14:14 270

原创 iOS中常见 Crash 及解决方案

转自微信公众号:iOS大全一、访问了一个已经被释放的对象在不使用 ARC 的时候,内存要自己管理,这时重复或过早释放都有可能导致 Crash。例子NSObject *aObj = [[NSObjectalloc]init];[aObjrelease]; NSLog(@"%@"

2016-09-19 23:12:15 1296

转载 OC对象的内存分析

先来看一段代码:    NSString* s;s = [[NSString alloc] initWithString:@"hello ios"];  这是一段最简单的字符串定义,但是看似简单,其实有很多东西可能会被忽略掉  1.这里的s其实是个指针,在oc中除了基本数据类型之外的变量类型都是指针类型,oc的对象也是通过指针进行操作的。  2. 在第

2016-09-17 12:46:45 460

原创 iOS中delegate、NSNotification和KVO的区别

在开发IOS应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers[B]怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信:1委托delegation2通知中心Notification Center3键值观察key value observing,KVO三者优缺点:delegate 的 优势 :      1.非常严格

2016-09-16 16:51:41 404

原创 大数据面试题

1、海量日志数据,提取出某日访问百度次数最多的那个IP。  此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。  再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1

2016-09-10 21:23:15 441

转载 详解TCP协议中的三次握手和四次握手

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:

2016-08-18 12:28:52 318

转载 iOS中Quartz Core 图层编程

文章出处:http://blog.csdn.net/iukey一、添加 Quartz Core 框架要使用 Quartz Core 框架,你需要将其添加到你的工程中 。 然后  #import  二、认识图层对 ps 有所了解的人都知道图层的概念,在这里也一样。在PS中一张图片至少得有一个图层,一个或多个图层的叠加构成了一张位图。我们这里一个或多个图层的叠加的构

2016-07-08 14:13:52 391

原创 Xcode7隐藏、更改状态栏

1.隐藏状态栏:修改plist文件,添加如下两项2.改变状态栏默认颜色:首先,同样是在plist文件中添加这项系统默认状态栏的颜色是黑色,如果改成白色的话则在相应的ViewController下面加入[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightCont

2016-07-05 15:26:21 629

原创 iOS图片不失真拉伸方法

在实际开发应用中,有的时候我们会遇到想把某个背景图片或者按钮图片放大些尺寸,但是又不想改变其轮廓形状,最简单的办法就是把该图片中间部分的像素进行拉伸,在此提供一个类方法,传入要拉伸图片的图片名,即可返回拉伸好的图片#pragma mark 不失真拉伸图片+(UIImage *)stretchWithName:(NSString *)name{ //name为传入的要拉伸图片的图片名

2016-05-16 00:16:48 3472

原创 iOS图片的自动适配(通过类别实现)

在实际开发应用中,美工通常都会根据不同的机型设计出很多套背景图片,而这些背景图片的命名通常都是有规律的,我们刚好可以利用这一特点把图片名称的修改或者拼接写成一个方法,然后根据不同的机型返回不同的适配图片,即可达到自动适配的目的,且避免了图片的失真。首先,为NSString新建立一个分类,专门用来在图片名后面拼接对应的屏幕信息#import "NSString+append.h"@imp

2016-05-08 10:23:14 2312

原创 iOS巧用UIButton自定义控件

在iOS中,UIButton与UIImageView都可以显示图片,而且但从名字上来说,UIImageView显得更专业一些,但在实际开发中,还是UIButton使用的更加频繁,UIButton的一个常用功能就是自定义控件,上面的例子如果多添加几个UIButton的话就成了UITabBar了,系统自带的TabBar样式比较单一,往往满足不了美化以及多功能的需求,所以,用UIButton来自定义TabBar是一个不错的选择

2016-05-05 09:53:23 1123

原创 Xcode如何手动添加pch文件

Xcode7如果还想用pch文件的话需要自己手动添加了,方法如下:1.点击File—>New—>File(或者快捷键command+N)在iOS—>Other目录下选择PCH File2.给PCH文件命名,最好是 项目名-Prefix.pch3.在targets中的Build Setting中搜索prefix,找到Apple Llvm 7.0 - Language4.将Prec

2016-05-03 21:33:51 350

原创 iOS程序更新后新特性介绍界面的实现

今天一起更新了好多软件,突然注意到每个软件更新版本之后都会先出现一个新版本功能引导提示界面,然后在跳转到正常的实现界面,那么如何做才能实现上述功能呢。思路比较简单,最重要的一点就是如何判断用户是否第一次使用软件当前的版本,如果第一次使用这个版本,则显示版本新功能界面,否则直接显示主界面。APP有一个特点就是软件如果没有被卸载过,那么在沙盒里的东西是不会变的,我们刚好可以利用这一点,通过判断沙盒

2016-05-03 11:05:05 1980

原创 iOS程序的生命周期

iOS程序从启动到处理事件再到进入后台以及退出应用程序,这其中内部的运行机制是什么样的呢首先要了解应用程序的不同状态:Not Running:未运行状态,表明应用程序未启动;Active:活跃状态,程序运行的常规状态,在这个状态是程序在前台可以接收并处理事件;Inactive:不活跃状态,程序仍然在前台,但不处理不接收任何事件,通常该作为程序在Active与其他状态切换时短暂停留的

2016-05-02 13:35:40 427

原创 iOS程序启动内部过程(从点击图标到显示界面)

1.用户点击应用程序图标;2.程序执行main()函数;3.main函数中直接返回的是UIApplicationMain,所以接下来执行UIApplicationMain;4.根据UIApplicationMain中的第三、第四个参数分别设置UIApplication对象及其代理;第三个参数是UIApplication的类名或者子类名,如果为nil则默认是UIApplication,第

2016-05-02 10:44:51 2101

原创 iOS内存优化常用方法(更新中)

1.遇到图片较多且不需要缓存的情况下,不要用imageNamed方法,用initWithContentOfFile加载图片//加载图片的两种方式 //1.有缓存 UIImage *image = [UIImage imageNamed:@"a.jpg"]; //2.无缓存 NSString *path = [[NSBundle mainBundle]

2016-04-27 16:12:49 2588

原创 IOS 发送HTTP请求报错

控制台打印错误信息:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.则需要在plist文件中

2016-04-26 22:17:13 361

原创 iOS中的三种多线程

iOS提供了三种多线程的技术:NSThread;NSOperation和NSOperationQueue;GCD1.使用NSThread创建多线程:创建NSThread线程有实力方法和类方法两种方法2.使用GCD实现多线程:相对于要手动管理线程同步安全的NSThread方法,GCD则要简单得多。GCD的核心是队列,使用GCD来实现多线程只需要创建队列,并把任务放在队列中处理。GCD的队列类型如下:3.使用NSOperation与NSOperationQueue实现多线程:NSOperation和

2016-04-25 10:22:50 620

原创 iOS中的线程与进程

线程和进程的概念、并发性与并行性、多线程与多进程的比较进程是处于运行过程中的程序,是系统资源分配和调度的一个独立单位,简单的理解就是用来帮程序占据一定的存储空间的。进程拥有自己独立的位置空间,在没有经过进程本身允许的情况下,其他进程不能访问改进程的地址空间。线程是进程的一部分,它是进程中用来执行任务的单位。一个进程可以拥有多个线程,但最少要有一个主线程;每个线程不能独立执行,必须有一个父进程;线程可以拥有自己的堆、

2016-04-24 21:51:14 1061

原创 property属性使用大全

(1)在平时的开发中,一般情况下UI控件都用weak;(2)NSString类型的都用copy;(3)属性的类型是OC对象的用retain;属性类型是非OC对象的用assign;(4)对象都用strong;(5)出现两个属性相互引用的时候一定要一个strong一个weak;

2016-04-23 13:21:57 545

原创 数据排序方法的比较

总结一下不同的数据排序算法首先,排序根据排序方式的不同分为四大类:插入排序、选择排序、交换排序、归并排序从时间复杂度来看,显然堆排、快排、归并要更好一些,而归并排序牺牲了空间复杂度换取了稳定性的提升,在一些非常在乎稳定性的环境中用归并排序是一个不错的选择。而在一些非常在意内存容量的环境中,几乎没有多占用堆排序就显得更好了。相对于三种比较复杂的排序方法,如果数据量很小的话那么冒泡排序、直插排序来的更快一些假如说需要排序的每个数据本身非常庞大,那么可以选择交换次数比较少的简单选择排序。不受初始数

2016-04-22 15:24:10 565

原创 希尔排序

相比如冒泡排序、选择排序、直插排序等一些简单的排序算法,希尔排序是第一个在时间复杂度上突破O(n^2)的,其时间复杂度为O(n^1.5),但是希尔排序是一种不稳定的排序方式。希尔排序实际上是直插排序(http://blog.csdn.net/xgcyangguang/article/details/51217354)的优化,直插排序是在后面的数据中找到最小的插入到当前位置,而希尔排序在找到最小的数据这个过程中就把较大的数据移到了后面,把较小的数据放到了前面,让整个数据变得相对有序。

2016-04-22 10:21:58 420

原创 直插排序

直插排序,顾名思义就是将一个新的数据直接插入到已经排好的数据当中,它也是一种稳定的排序方法,时间复杂度为O(n^2)。时间复杂度:最好的情况下,本身有序,只需遍历比较一次即可,时间复杂度为O(n)最坏的情况下,即待排序为逆序时,需要比较1 + 2 + ... + (n - 1)次,因此时间复杂度为O(n^2)

2016-04-22 10:20:05 2748

原创 选择排序

简单选择排序相当于对冒泡排序的一个改进,冒泡排序是每次比较都交换数据,而选择排序则是有目的性的交换。简单排序的基本思想是选出最小的数与首位交换,再选出第二小的数和次位交换,以此类推。简单选择排序的时间复杂度为O(n^2),是一种稳定的排序。简单选择排序时间复杂度:无论数据的有序情况如何,简单选择排序都要进行(n - 1) + (n - 2) + (n - 3) +...+1次比较,所以时间复杂度为O(n^2)

2016-04-21 21:45:03 279

原创 冒泡排序

冒泡排序大概是人们能想到的最简单的排序算法了,他的基本思想就是从后向前依次把小的数交换上来,就像气泡不断的冒出水面一样,因此而得名。冒泡排序的时间复杂度为O(n^2),是一种稳定的排序方法,通过开关标志位可以提高冒泡排序性能时间复杂度:最好的情况就是数据本身就有序,当我们比较n -1 次后发现没有数据交换,则跳出循环,时间复杂度为O(n)最坏的情况是排序出现逆序即从小到大排列的时候,这时需要交换的次数为1+2+3+...+(n-1) = n(n-1)/2因此时间复杂度为O(n^2)

2016-04-21 16:34:03 336

原创 快速排序

快速排序是冒泡排序的升级版,都是通过不断交换数据来进行排序。快速排序的基本思想是:选出一个关键字,通过一次遍历,把比关键字小的数据都放到关键字左边,把比关键字大的数据都放到关键字的右边。然后在对左右两边依次进行快速排序。快速排序的时间复杂度:最坏的情况:所选的关键字每次都是最大值或者最小值,这样的话快速排序就成了冒泡排序,时间复杂度为O(n^2)最优/平均情况:第一次调用partition将整个数组扫描一遍,做n次比较。递归logn次,所以时间复杂度为O(nlogn)空间复杂度:最坏情况:O(n

2016-04-21 10:45:04 367

原创 归并排序

归并排序是一种稳定的排序方法,它的中心思想是将两个或者两个以上的有序序列合成一个新的有序表,通过不断的合并得到最终的有序表。最常用的是将2个子序列不断的合并,也就是2路归并排序。递归归并与非递归归并的比较

2016-04-21 00:22:07 357

原创 property中的copy属性

property的copy属性NSString为何要用copyassign和copy有什么不同深复制与浅复制的区别

2016-04-18 10:49:43 1386

原创 堆排序

一.概述1.堆排序是一种时间复杂度为O(nlogn)的选择排序,它的中心思想是先建立一个比较有序列的堆,然后逐步将堆中的根节点与最后一个数据交换,最终得到有序的数据2.堆排序对原始数据不敏感,无论原始数据的有序程度如何,堆排序的时间复杂度都是O(nlogn)3.堆排序是一种不稳定的排序方法,且适合待排数据比较多的情况 二.概念完全二叉树:完全二叉树说白了就是所有的结点按照

2016-04-15 11:01:12 443

转载 C++的三种继承方式

公用(public):访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数)。私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问。保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能访问 我们这样来记会更加容易一些,在继承时:1、不管采用哪种形式(public, prote

2016-04-12 20:04:27 579

转载 C++中的虚函数

虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public:virtual void Eat(){……};void Move();pri

2016-04-12 17:13:12 265

转载 C++中new和malloc的区别

new和malloc的区别

2016-04-10 21:49:45 291

原创 strong和weak的区别

在ARC环境下,_strong和_weak都可以作为@property的属性 其中_strong表示强引用,是ARC条件下实例变量的默认属性;_weak表示弱引用,是ARC条件下为了避免两个强引用变量相互引用造成死循环而定义的属性。 如果一个对象没有任何强类型的指针指向它,它就会被释放,这时即便有弱指针指向它,该弱指针也会被置为nil;因此我们在创建对象的时候,不能用1个弱指针

2016-04-08 14:27:48 2441

原创 Object-C中的内存管理 MRC、ARC以及Autoreleasepool的区别

总结一下MRC、Autoreleasepool、ARC的区别内存中存在五大区域,他们分别是堆区、栈区、数据段、BSS段以及代码段。

2016-04-07 19:04:18 1767

原创 IOS蓝牙4.0使用心得

蓝牙4.0自动连接数据接收,通过手机/pad与蓝牙4.0的设备进行连接,之后设备上按对应的按键我们会收到对应的数值蓝牙断开自动连接蓝牙后台运行

2016-03-30 14:39:41 10069 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除