遍历构造器的内存管理 a.遍历构造器方法内部使用autorelease释放对象 b.通过遍历构造器生成的对象.不用释放. 内存的管理总结 1.想占用某个对象的时候,要让它的引用计数器+1(retain操作) 2.当不想再占用某个对象的时候,要让它的引用计数器-1(release操作) 3.谁alloc谁release,遍历构造器使用autorelease 另:当一个属性遵循了协议的时候(该属性就是代理),这时使用内存组的assign修饰. 多态:父类指针 指向 子类对象 没有继承就没有多态 父类…
//OC: Objective-C, 面向对象的C语言 //OC与C的区别 //1.OC是C的超集, C语言的所有语法都可以在OC中使用 //2.OC是面向对象 //3.OC是一门运行时语言 //4.OC的类库丰富 NSString *string = [[NSObject alloc] init]; //string在编译时是NSString类型, 在运行时是NSObject类型 //面向对象的编程: OOP //面向对象编程的核心: 类与对象 //面向对象的三大特性: 封装, 继承, 多态…
属性:快速生成setter和getter 属性也包括:声明和实现 1.属性的声明写在.h中 格式:@property 数据类型 变量名; 如果实例变量一致的时候,属性的声明可以合并,每一个属性之间使用,分隔 2属性的实现写在.m中 格式:@synthesize 数据类型 变量名; Xcode5.0之后,属性的实现部分也不需要写了 当你同时重写setter和getter时,系统就不会再自动生成@synthesize name=_name; 属性的优化 1.声明的时候同一种数据类型可以合并 2.实例…
OC中的基本数据类型 NSString  在64位系统下,相当于long,在非64位系统下,想当于int. CGFloat   在64位系统下,相当于double,在非64位系统之下,想当与float ------------------------------------------------------------------------------------------------------------------------ 学习方法 一.查看API 1.help -> DOcum…
摘要:  Objective-C  引入了"实例变量"的概念,但同时, 也经常出现 "成员变量"的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 在Objective-C中,定义一个类,需要有两部分: 第一是接口(interface),第二是实现(implementation). 接口对应接口文件,而实现对应了实现文件. 接口文件包含了类的声明,成员变量(member variable)和方法(method). 接口文件通常是.h 实现文件通常是.…
导读 正确的理解C/C++程序的内存分区,是合格程序猿的基本要求. 网络上流形两大版本内存分区,分别为: 1. 五大内存分区:堆.栈.全局/静态存储区.自由存储区和常量存储区. 2. 五大内存分区:堆.栈.全局/静态存储区.字符串常量区和代码区. 且不论以上两种分区孰是孰非,孰优孰劣,我认为具体的内存分区和编译器有很大关系,我想不同编译器对内存的划分都不尽相同,但也大同小异. 综合对比,查阅相关资料,提出自己对C/C++程序的内存分区的认识.可划分为四大内存分区:堆.栈.静态存储区和代码区. 堆…
一.共享内存简介 共享内存是进程间通信中高效方便的方式之一.共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针,两个进程可以对一块共享内存进行读写. 共享内存并未提供进程同步机制,使用共享内存完成进程间通信时,需要借助互斥量或者信号量来完成进程的同步.这里说一下互斥量与信号量的区别.互斥量用于线程的互斥,信号量用于线程的同步,这是互斥量与信号量的本质区别,其次信号量实现互斥量的功能. 本文结合个人实际项目需求,采用互斥量实现进程间…
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等. 本文将依次介绍上述八大排序算法. 算法一:插入排序 插入排序示意图 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法步骤: 1)将第一待排序序列第一…
//欲练此功必先自宫!!!     //第一天:C语言的基础     //进制     //2进制, 10进制, 8进制, 16进制     //注:8进制数前加0, 16进制数前加0x          //进制转换:     //10 -> n: 连除到取余     //n -> 10: 按权求和法(基数, 位权)     //n -> n: 1个8进制位 = 3个2进制位, 1个16进制位 = 4个2进制位          //字节     //1字节 = 8位2进制     …
自动释放池: @autoreleasepool { } 内存管理机制       谁污染,谁治理 垃圾回收机制:gc(Garbage collection),由系统管理内存,开发人员不需要管理. OC从版本2.0之后开始支持垃圾回收机制,但iOS开发平台不支持垃圾回收机制 继承自NSObject的对象需要内存管理 OC中通过引用计数器管理内存 通过引用计数器管理内存的两种方式 1.MRC:(maual reference count),手动引用计数,就是开发人员通过引用计数管理内存 2.ARC:…
OC:Objective-c     面向对象的c语言,简称obj-c或者OC OC和C的区别 1.OC是C语言的超集,OC是在C语言的基础上结合smalltalk的优点,开发出来的语言.oc兼容所有的C语言的语法. 2.OC扩展了面向对象的思想. 3.运行时特性 4.有丰富的类库 OOP(Object Oriented Programming)面向对象编程. 关键点;对象.类.多态.封装.继承等. OC的核心:类和对象. OC的三大特性:封装.继承.多态. 类:具有相同特征和行为的事物的抽象.…
全局变量:定义在函数之外.(不安全)   局部变量;定义在函数之内. 内存的划分:1栈区   2堆区  3静态区(全局区) 4常量区 5代码区 栈区..静态区.常量区.代码区的数据都是由系统分配和释放空间. 堆区的内存必须自己去申请和释放. 1.栈区     栈区的数据以栈的形式存放(先进后出) 局部变量存放在栈区 2.静态区  (全局区) 被static修饰的变量和全局变量存放在静态区 static修饰符的作用: 1.修饰的变存放在静态区 2.修饰的变量只初始化一次 3.由static修饰的变…
1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary但是这些类只能存放OC对象类型的数据 2.如果要存放基本数据类型,必须先将基本暑假类型包装成对象类型然后再用集合类进行存储,OC中提供的包装类是NSNumber,NSValue.其中NSNumber继承于NSValue. 3.NSNumber主要针对于基本数据类型的包装,NSValue主要针对结构体…
==============NSArray(不可变数组)=========== NSArray,继承自NSObject  用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray *array1=[[NSArray alloc]init];               //NSArray *array2=[NSArray array]; nil   数组结束标志 NSArray *array3=[[NSArray alloc]initWithObjects:@"rose&qu…
继承: 1.单向继承,一个类只能有一个父类,一个父类可以有多个子类. 2.单向继承,基类(根类)是OSObject 3.子类可以继承父类的属性和方法 当父类的方法不满足子类的需求时,子类可以重写父类的方法,重写父类的方法,在子类中不需要再次声明. 1.完全重写 2.部分重写   使用super 建立继承关系之后,子类可以继承父类的: 1.实例变量,@public@protected修饰情况之下 2.公开的方法 一个方法如果在.h中声明了,那么这个方法就是公开的方法,如果没有声明,则是私有的. O…
//再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用. 类的扩展:为类添加新的特征(属性)或者方法 对已知类: 1.直接添加 2.继承(在其子类中添加实例变量和方法) 3.使用extension(对私有方法和私有属性的扩展(未在.h中申明的方法就是私有方法)) //   extension //  一般我们把类的延展直接写在类的.m文件中 //  extension 对私有方法和私有属性的扩展(未在.h中申声的方法) //  对已知类扩充私有方法,选择 Objective -…
NSDate  日期类,继承自NSObject,代表一个时间点 NSDate *date=[NSDate date]; NSLog(@"%@",date);   //格林尼治时间,0时区时间 NSDate *date1=[NSDate dateWithTimeIntervalSinceNow:8*60*60];//现在的时间 NSDate *date2=[NSDate dateWithTimeIntervalSinceNow:-24*60*60];//相对格林昨天的时间 //    参…
block 块语法,可以用block去保存一段代码,或者封装一段代码. block 实际是由c语言实现的,执行效率很高. block 实际借鉴了函数指针的语法. block,在多线程.异步任务,集合遍历,集合排序.动画专场用得多 block (^)(参数类型1 参数名1,参数类型2 参数名2...); 返回值类型  (^)(); 1.没有参数,括号也不能省略 2.参数名可以省略 void(^myBlock1)();   无参数无返回值 void(^myBlock2)(int a,int b);…
@public 1.公开的,公共的,可以在类的内部和外部访问. 2.类的内部:实例变量名 3.类的外部:对象->实例变量名 @protected 1.受保护的,只能在本类和子类中可以访问 2.类的内部:实例变量名 3.类的外部:通过设置器setter和访问器getter访问 @private 1.私有的,只能在本类中可以访问 2.类的内部:实例变量名 3.类的外部:通过设置器setter和访问器getter访问 总:@public 在所有文件均可访问.@protected只能在本类和子类中可以访…
UI程序的一般执行顺序: 先进入main里面,执行函数UIApplicationMain(),通过该函数创建应用程序对象和指定其代理并实现监听,当执行函数UIApplicationMain()时还会做一次跳转,跳转至AppDelegate UIApplicationMain() 函数的三大功能: 1.创建应用的UIApplication对象 2.指定应用程序的代理对象,代理的主要作用:监听应用程序是如何运行的. 3.建立事件循环(runloop:这个循环是一个死循环).作用:一旦用户操作应用程序…
UITextField 继承自UIControl,他是在UILabel基础上,对了文本的编辑.可以允许用户输入和编辑文本 UITextField的使用步骤 1.创建控件 UITextField *textField=[[UITextField alloc]initWithFrame:CGRectMake(10, 100, 300, 50)]; textField.tag=100;//为textField赋tag,目的是可以通过父视图找到textField 2.设置属性 (1).设置背景 text…
  spark可以通过交互式命令行及编程两种方式来进行调用: 前者支持scala与python 后者支持scala.python与java 本文参考https://spark.apache.org/docs/latest/quick-start.html,可作快速入门 再详细资料及用法请见https://spark.apache.org/docs/latest/programming-guide.html   建议学习路径: 1.安装单机环境:http://blog.csdn.net/jedia…
一.JVM调优基本流程 1.划分应用程序的系统需求优先级 2.选择JVM部署模式:单JVM.多JVM 3.选择JVM运行模式 4.调优应用程序内存使用 5.调优应用程序延迟 6.调优应用程序吞吐量 二.选择JVM部署模式:单JVM.多JVM 1.单JVM 优点:不需要管理多个JVM,降低管理成本: 应用程序消耗内存数量较少 缺点:存在单点故障,一个JVM失效时,整个系统失效. 2.多JVM 优点:更好的可用性,避免单点故障:更低延迟,因为垃圾收集所产生的停顿是程序延迟的主要原因,多JVM减少了每…
一.Berkeley DB的介绍 (1)Berkeley DB是一个嵌入式数据库,它适合于管理海量的.简单的数据.如Google使用其来保存账户信息,Heritrix用其来保存froniter. (2)key/value是Berkeley DB用来管理数据的基础,每个key/value对代表一条记录. (3)Berkeley DB在底层实现采用B树,可以看成能够存储大量数据的HashMap. (4)它是Oracle公司的一个产品,C++版本最新出现,之后JAVA等版本也陆续出现.它不支持SQL语…
use sentinel to avoid boudary testing, use swap trick to avoid extra copy. original version #include <cstdio> #include <algorithm> int main() { //freopen("input.txt","r",stdin); const int MAXSIZE=22, dimSize=20; int bacnums…
题目网址:http://haut.openjudge.cn/xiyoulianxi1/1/ 1:晶矿的个数 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 在某个区域发现了一些晶矿,已经探明这些晶矿总共有分为两类,为红晶矿和黑晶矿.现在要统计该区域内红晶矿和黑晶矿的个数.假设可以用二维地图m[][]来描述该区域,若m[i][j]为#表示该地点是非晶矿地点,若m[i][j]为r表示该地点是红晶矿地点,若m[i][j]为b表示该地点是黑晶矿地点.一个晶矿是…
题目地址:http://haut.openjudge.cn/20131112/6/ 求编号最多的组 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  63353kB 描述 相邻两个数属于同一组,例如 1 2 3 5 2 6 4 7 9 6 1-2-6-9为一组 3-5为一组 4-7为一组 所以最多元素的组为4 输入 多组数据,每组第一行两个正整数n,m,表示有1~n这n个编号,m个关系. 接下来m行,每行两个数i, j, 1 <= i, j <= n,表示i和j是一组的.…
UIViewController 视图控制器,继承自UIResponder,作用:管理视图并且响应事件 功能: 1.分担APPdelegate的工作 2.实现模块独立,能提高复用性 创建UIViewController对象: UIViewController *viewController=[[UIViewController alloc]init]; UIViewController 自身带了一个UiView,默认的大小和屏幕大小一样. 每一个window都带有一个根视图,如果不给根视图赋值,…
指针:就是地址. &   取地址运算符 %p   打印地址占位符 int a=0; printf("%p ",&a);    指针变量:用来存放地址的变量 定义: 数据类型 * 变量名 = 初始值 int a=10; int *p=NULL; p=&a;    //把a的地址赋值给指针变量p,也就是说p指向了a的地址 间接访问:通过指针(地址)实现访问. * 取值运算符 *p 取到指针变量的指向的内存中的数据 指针变量所占字节,与类型修饰符无关,只与操作系统有关…
结构体:是一种用户自定义的数据类型 结构体定义 struct 结构体名 {     成员类型1  成员变量名1;     成员类型2  成员变量名2;      -. }; typedef   原类型名  新类型名; 起的别名首字母大写. 结构体数组: 同一种类型的结构体变量组成的数组 结构体数组的元素同样是通过下标访问 访问结构体变量的属性通过 . 结构体变量可以直接使用的,可以直接访问 把数组放在结构体当中,可以通过直接对结构体赋值实现对数组的直接赋值 结构体的内存分配:以最大的成员变量为标…