自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据库事务 和 数据库隔离级别

起因有一天同事问我,晨哥晨哥,什么是数据库的隔离级别,我,额,稍等,冒汗,以前看过,现在忘了。有时间写一篇,下次再忘了还能看看。主要是自己看,顺便满足一下自己写作的欲望,如果你不小心看到了,证明咱俩有缘分,别因为我写的不好喷我。什么是事务你以为第一件事是介绍数据库隔离级别的定义吗,错,我们要先了解为什么有数据库的隔离级别。我们了解一件新知识的时候先要明白它是解决什么问题的,数据库隔离...

2019-12-12 20:42:49 230

原创 PostConstruct 用法

Autowired 和 PostConstruct 的关系在 Spring 容器里面,类必须先实例化以后才能注入,这是个大原则。然后注入和 @PostConstruct 是什么关系呢先注入然后执行 @PostConstruct...

2019-12-11 11:02:06 142

转载 js 的原型链

从别的博客粘过来的,做个备忘录,以后好查。原型链(Prototype chain)Javacript 是一门高度抽象的面向对象(object-oriented)语言, 它没有类的概念,但是,重用[reuse]这个理念没什么不同(某些方面,甚至比class-更加灵活),可以由prototype chain原型链来实现。var a = { x: 10, calculate: function (

2016-06-28 18:07:11 256

原创 CGPoint/NSPoint CGSize/NSSize

CGPoint 和 NSPoint 是一个东西 typedef CGPoint NSPoint 后台是这样来的CGPoint 是一个结构体 里面有两个属性,NSFloat(其实就是 double) 类型的 X 和 Y

2016-06-01 23:10:53 442

原创 NSRange

NSRange 是一个结构体这个结构体和简单 只有两个属性 typedef struct _NSRange { NSUInteger location; NSUInteger length;} NSRange;location 表示的位置 length 表示的是长度NSRange 的三种初始化方法 NSRange range1 = {2,3};// 不用 NSRange ra

2016-06-01 22:44:41 197

原创 protocol简单使用

可以声明一大堆方法(不能生命成员变量) 只要某个类遵循了这个协议,就相当于拥有了这个协议中的所有方法声明 只要父类遵循了某个协议,就相当于子类也遵守了

2016-05-30 23:00:04 285

原创 typedef block

typedef int (*sump) (int,int);sump p = sum; sump p2 = sum;定义了一个block

2016-05-30 22:18:48 207

原创 第一个 block 的进化

{ NSLog(@">>>>>>");}这是个代码块^{ NSLog(@">>>>>>");};加上尖号,加上 分号 生命这是个 block 里面保存了一段代码void (^myblock)() = ^{ NSLog(@">>>>>>");};声明一个blockmyblock();调用 block

2016-05-18 23:15:26 194

原创 单个文件转换非ARC

1、项目上单击2、右侧 targets -> build Phases -> compile Sources 里面有编译的 .m 文件3、文件上双击,或者回车 填入 -fno-objc-arc 4、想要某个文件是 ORC 填入 -f-obj-arc

2016-05-18 22:49:09 273

原创 ARC和非ARC区别

ARC 是编译器特性看到 @property (retain), 自动在 dealloc 里面添加相关属性的 release ,看到 你在main 方法里面调用 alloc ,就在后面自动给你添加 release注意不是垃圾回收,垃圾回收是运行时特性

2016-05-17 23:12:31 842

原创 autorelease 的封装

由于代码Person *p = [[[Person alloc]init]autorelease];太长,所以可以用类方法对他进行封装+ (id)person{ return [[[Person alloc]init]autorelease];}这样可以快速返回一个 autorelease 的对象

2016-05-17 22:23:36 186

原创 autorelease

自动释放手动内存管理的时候由于每次 alloc 以后都要调用 release 方法,为了简化管理,可以使用自动释放池使用方法是Person *p = [[[Person alloc]init]autorelease]这句话的意思是把 Person 对象放到自动释放池中,当自动释放池销毁的时候,会把自动释放池中的对象统一进行一次 release如何创建自动释放池 @autorelease{}大括号开

2016-05-17 20:46:50 166

原创 循环引用

解决循环引用的问题就是一端用 retain 一端用 assign 这是个特例

2016-05-16 23:21:13 173

原创 @class

@class 的作用:仅仅告诉编译器这是一个类开发中引用类的规范 1、在 .h 文件中用 @class 来声明类 2、在.m 文件中用 #import 来包含类的所用东西

2016-05-16 23:14:54 170

原创 @property 的属性

OC的 @property 语法可以自动帮助生成 成员变量,get 方法,和set 方法,但是 @property 还可以有一些属性可以对生成的方法进行精细化控制。 这些精细化控制主要分几类:1、跟set 方法内存管理相关的 * assign : 默认的,直接生成 set 方法 (适用于非 OC 对象) * retain : release 旧值,retain 新值,(适用于 OC 对象) *

2016-05-15 23:36:35 206

原创 自动生成 get set

@property 会自动生成 get 方法, set 方法 和 _ 成员变量,但是你要是自己实现了 get 方法,set 方法,@property 就不会生成 get 方法 和 set 方法,要是自己实现了一个,系统还是会给生成你没有实现的那个

2016-05-15 22:11:20 907

原创 内存管理原则

有 alloc 必须有 releaseset 方法规范 基本数据类型,直接赋值 - (void) setAge:(int)age { _age = age; }OC 对象类型- (void)setCar:(Car *)car{ if(car != _car) { [_car release]; _car = [car retain

2016-05-15 12:54:50 205

原创 空指针和野指针

空指针: 指针不指向任何对象野指针:指针指向的对象已经被销毁

2016-05-11 22:47:07 217

原创 引用计数器

alloc new copy 以后新创建的对象的引用计数器是1引用计数器 +1 调用 retain 应用计数器 -1 调用 releaseretainCount 方法 返回当前的引用计数器当引用计数器为 0 的时候对象会被销毁,当一个对象被销毁的时候,系统会自动向对象发送一条 dealloc 消息,遗言,让他释放对象用的

2016-05-11 22:45:48 283

原创 SEL

OC 中方法会被封装成 SEL 对象,当我们调用一个方法的时候,其实会在实例对象中把要调用的方法封装成 SEL 对象,然后通过 isa 指针找到 类对象的方法列表,调用对应的方法SEL 类型的定义 typedef struct objc_selector *SEL

2016-05-10 21:38:13 227

原创 description 方法

我们打印一个类的时候通常是使用 %@ ,但是 NSString 对象会把字符串的值打印出来,其他的对象只会打印出来 <类名:0X99898989> 类名:地址,这是因为 NSString 重写了description 方法。NSObject 有两个 description 方法,一个是 -description 一个是 +description ,当我们重写了 -description 的时候,在调

2016-05-09 23:40:17 384

原创 类的初始化过程

类的初始化过程中有两个比较重要的方法 + (void)load +(void)initialize 这两个方法是自动调用的load 方法在程序启动的时候的每个类的 load 方法都会被调用一次,注意是每个类的 load 方法,不是对象的,程序启动的时候initialize 方法在类被初始化的时候会调用一次,注意初始化,调用顺序是先调用 父类的,再调用子类的

2016-05-08 18:23:58 205

原创 OC 类对象

OC 中类也是一种对象,叫 Class 对象类对象的作用,可以用类对象直接调用类方法 获取类对象,一般直接调用 类的 class 方法就可以 Class c = [Animal class]; // Class 不用加 * 内部已经自动加 * [c test]; // test 是类方法,就是以 + 开头的还可以通过 Class 对象创建对象 Class c = [Animal

2016-05-08 17:55:45 227

原创 OC 分类注意事项

分类会覆盖原来类中已经实现的方法分类可以访问原来类中的成员变量,但是不能添加成员变量如果两个分类中都实现了某个方法,执行哪个方法和分类的编译顺序有关,编译顺利那里看 项目名称 -> build phased -> compile sources查看编译顺序的时候就能看出来,.h 文件是不被编译的,就是被别人 import 的

2016-05-07 10:57:21 170

原创 OC 构造方法

重写父类 init 方法,创建对象的时候尽量是用 alloc 和 init方法- (id)init{ self = [super init]; if(self != nil) { _age = 10; } return self;}精简写法- (id)init{ if(self = [super init]) {

2016-05-03 23:18:24 144

原创 OC id 类型

OC 中有一个万能的指针是可以执行任何对象,id 小写的例如:id p = [Person new];注意这个 id 指针是没有 * 号的

2016-05-01 16:01:21 259

原创 @property @synthesize

Xcode 中没有自动生成 set get 方法的快捷方式,OC 中提供了标签来进行 成员变量 get set 方法的声明和实现.h 文件声明{ int _age;}@property age;// 自动生成 age 属性的get方法声明 和 set 方法声明.m 文件实现@synthesize age = _age;// 前面一个age 后面一个_age 前面的 age 是生成@prop

2016-05-01 09:40:51 168

原创 OC 成员变量的作用域

OC 中成员变量有四个作用域@private@protected@package@public这四个作用域的作用范围是从小到大的@private 的作用域只能在当前类的对象方法中使用,外部的类想要使用只能调用 get 方法 和 set 方法@protect 的作用域是只能在当前类 或者当前类的子类中直接访问@public 的作用域是可以在任何地方通过 -> 访问@package 的作用域是

2016-04-29 22:43:31 315

原创 OC 点语法

OC 中有一种特殊的语法叫 点语法 先看例子#import <Foundation/Foundation.h>#import "Person.h"int main() { Person *p = [Person new]; p.age = 10;// 内部是 [p setAge:10] NSLog(@"这个人的年龄是 %d", p.age);// 内部是 [p age]

2016-04-29 21:56:24 241

原创 为什么引入 .h 而不是 .m

.h 文件里面存的是函数的声明 .m 文件里面存的是函数的实现使用 #import 的时候相当于 把.m 的文件整个拷贝到新的文件里面了,而 xcode 是多文件同时编译、链接,这时候如果 编译没有问题,链接的时候就会出现重复定义的错误duplicate symbol _OBJC_CLASS_$_Person in: /Users/apple/Library/Developer/Xcode

2016-04-27 23:38:29 236

原创 C和OC 字符串

#import <Foundation/Foundation.h>int main(){ char *str = "1234567"; NSString *str2 = @"7654321"; NSLog(@"%s", str); NSLog(@"%@", str2);}

2016-04-24 20:56:29 169

原创 OC 继承

#import <Foundation/Foundation.h>@interface Person : NSObject{ int _age;}@end@implementation Person@end@interface Student : Person{ int _age;}@end@implementation Student@end这里 student 继承 p

2016-04-24 17:38:33 209

原创 C 枚举类型

typedef enum{ SexMal, SexFemal} Sex;typedef struct{ int year; int month; int date;} Date;区别 枚举中间用逗号隔开, 最后没有符号 结构体 中间用分号隔开

2016-04-23 18:20:31 311

原创 isa 指针

每个对象都有一个 isa 指针,指向内存里面的对象,对象里面保存的是方法列表,调用对象的方法的时候就是通过 isa 指针找到对应的类的地址,调用方法列表

2016-04-23 15:35:51 187

原创 使用 OC 创建一个类

利用 OC 可以的面向对象可以创建一个类具体步骤声明接口 注意继承 NSObject 父类,NSObject 是 Foundation 框架里面的,所以需要 import Foundation 框架声明实现调用 new#import <Foundation/Foundation.h>@interface Car : NSObject{ int wheel; int peed;

2016-04-21 22:03:42 317

原创 宏定义

#define YES (BOOL)1#define NO (BOOL)0宏定义是预编译指令,会在代码编译之前把前面的内容都替换成后面的内容取消宏定义用#undef YES

2016-04-20 23:31:49 355

原创 使用OC调用C语言的函数

one.m#import "two.h"int main(){ test(); return 0;}two.hvoid test();two.c#include <stdio.h>void test(){ printf("调用了C语言的函数\n");}编译cc one.m two.c得出结果

2016-04-20 23:24:55 919

原创 命令行创建的第一个OC程序

touch 01-第一个OC程序.m用这个命令创建了第一个 OC 文件,程序内容简单,只有一句话int main(){ NSLog(@"第一个OC程序"); return 0;}main 函数和 C 语言一模一样,就是调用 OC 的框架函数 NSLog,OK,接下来 cc -c 编译 报错,缺少头文件#import <Foundation/NSObjCRuntime.h>这里和

2016-04-18 22:55:27 265

原创 C 语言static

c语言static 修饰局部变量,局部变量生命周期变成程序结束,作用域不变 例如:#include <stdio.h>void test(){ static int a = 0; a++; printf("%d\n", a);}int main(){ test(); test(); test(); return 0;}这里 static

2016-04-17 22:28:04 284

原创 typedef的使用

c 语言可以利用 typedef 给类型取一个别名,特别是比较长的类型,这样用起来会感觉方便很多例如:#include <stdio.h>int add (int a, int b){ return a + b;}int minus (int a, int b){ return a - b;}int main(){ typedef int myint; typed

2016-04-17 11:21:20 186

单片机C语言程序100例

里面包含了100个51单片机的protus仿真电路图,对学习单片机的各项功能很有帮助

2012-06-01

空空如也

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

TA关注的人

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