读书笔记(技术相关)--2018.6.25更新

2018.4.24

1.使用线程池的三大好处:
一是降低资源的消耗,通过重用已创建的线程来降低线程的创建和销毁的消耗。
二是提高响应速度,任务到达时不需要等待线程的创建就可以立即执行。
三是提高线程的可管理性,线程池可以统一管理、分配、监控和调优。
参考地址

2.Java通过ThreadPoolExecutor来实现对线程池的支持。

2018.5.2

使用LLVMClang 编译器的语法格式如下:

clang -fobjc-arc -framework <所需依赖的框架> <源文件> -o <生成文件>

举例如下:

clang -fobjc-arc -framework Foundation  hello.m -o hello.out

2018.5.3

1.ObjectC提供了一个id类型,这个id类型可以代表所有对象的类型。也就是说,任意类的对象可赋值给id的类型的变量。
2.动态绑定是指ObjectC将会跟踪对象所属的类,它会在运行时判断该对象所属的方法,并在运行时确定动态需要调用的方法,而不是在编译时确定要调用的方法。
3.ObjectC形参个数可变的方法

-(void)test:(NSString*)name,...
{
  va_list argList;
  if(name)
  {
    NSLog(@"%@",name);
    va_start(argList,name);
    NSString* arg=va_arg(argList,id);
    while(arg)
    {
      NSLog(@"%@",arg);
      arg=va_arg(argList,id);
      }
   va_end(argList);
  }
}

关键地方说明如下:

a.va_list:这是一个类型,用于定义指向可变参数列表的的指针。
b.va_start:这是一个函数,该函数指定开始处理可变形参的列表,并让指针变量指向可变形参列表的第一个参数
c.va_end:结束处理可变形参,释放指针变量。
d.var_arg:该函数返回获取指针当前指向的参数的值,并将指针移动到指向下一个参数。

4.ObjectC中static的说明

虽然Object-C也提供了static关键字,但是这个static关键字不能用于修饰成员变量,它只能修饰局部变量、全局变量和函数,
static修饰局部变量表示将该局部变量存储到静态存储区;
static修改全局变量用于限制该全局变量只能在当前源文件中访问;
static修改函数用于限制该函数只能在当前源文件中调用;

5.ObjectC中@package访问权限的说明


映像访问.png

2018.5.4

  1. ObjectC中让系统合成setter和getter方法只要如下两步:
a.在类接口部分使用@property指令定义属性。
b.在类实现的部分使用@synthesize指令声明该属性即可。
  1. ObjectC 指示符
    1. assign:该指示符指定对属性只是进行简单赋值,不更改对所赋的值的引用计数。这个指示符主要适用于NSInteger等基础类型,以及short,float,double,结构体等各种c数据类型。
  • 2.atomic(nonatomic):指定合成的存取方法是否为原子操作。所谓原子操作,主要指是否线程安全。如果使用atomic,那么合成的存、取方法都是线程安全的——当一个线程进入存、取方法的方法之后,其它线程无法进入该存、取方法,这样就可以避免多线程并发破坏对象的数据完整性,atomic是默认值。虽然atomic可以保证对象数据的完整性,但是atomic的线程安全会造成性能下降,因此,大多数单线程环境下,我们都会考虑使用nonatomic来提高存取方法的访问性能。
  • 3.copy:如果使用copy指示符,当调用setter方法对成员变量赋值时,会将被赋值的对象复制一个副本,再将该副本赋值给成员变量。copy指示符会将原成员变量所引用的对象的引用计数减1.当成员变量的类型是可变类型,或其子类是可变类型时,被赋值的对象有可能在赋值之后被修改,如果程序不需要这种修改影响setter方法设置成员变量的时候,此时就可考虑使用copy指示符。
  • 4.retain:使用retain指示符定义属性时,当把某个对象赋值给该属性时,该属性原来所引用的对象的引用计数减1,被赋值对象的引用计数加1.
  • 5.strong、weak:strong指示符指定该属性对被赋值对象持有强引用,而weak指示符指定该属性对被赋值对象持有弱引用。强引用的意思是:只要该强引用指向被赋值的对象,那么该对象就不会自动回收;弱引用的意思:即使该弱引用指向被赋值的对象,该对象也可能被回收。
  • 6.unsafe_unretained:这个指示符与weak指示符基本相似,对于只被unsafe_unretained指针所指向的对象,该对象也可能被回收。与weak指针不同的是,当unsafe_unretained指针所引用的对象被回收后,unsafe_unretained不会被赋为nil.因此可能导致程序崩溃。一般来说,使用unsafe_unretained指示符不如使用weak指示符。
  1. setValue:id forKey:@"name"底层执行如下
  • (1)程序优先考虑调用“setName:属性值;”代码通过settter方法完成设置。
  • (2)如果该类没有setName:方法,KVC机制会搜索该类名为_name的成员变量,无论该成员变量是在类接口部分定义,还是在类实现部分定义,也无论用哪个访问控制符修饰,这个KVC代码底层实际上就是对_name成员变量赋值。
  • (3)如果该类既没有setName:方法,也没有定义_name成员变量,KVC机制会搜索该类名为name的成员变量,无论该成员变量是在类接口部分定义,还是在类实现部分定义,也无论用哪个访问控制符修饰,这条KVC代码底层实现就是对name成员变量赋值。
  • (4)如果上面3条都没有找到,系统会执行该对象的setValue:
    forUnderfindedKey:方法。
  1. "valueforKey@"name";"代码,底层的执行机制如下
  • (1)程序优先考虑调用“name;”代码来获取该getter方法的返回值。
  • (2)如果该类没有name方法,KVC机制会搜索该类名为_name的成员变量,无论该成员变量是在类接口部分定义,还是在类实现部分定义,也无论用哪个访问控制符修饰,这条KVC代码底层实际就是返回_name成员变量的值。
  • (3)如果该类既没有name方法,也没有定义_name成员变量,KVC机制会搜索该类名为name的成员变量,无论定义在接口还是在类实现,也无论用哪个访问控制符修饰,这条KVC代码底层实际就是返回name成员变量的值。
  • (4)如果上面3条都没有找到,系统将会执行该对象的valueforUndefinedKey:方法。

2018.5.8

Java 类的加载过程 Person person=new Person() 为例进行说明。
  • (1)因为new用到Person.class,所以会先找到Person.class文件,并加载到内存中;
  • (2)执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
  • (3)在堆内存中开辟空间分配内存地址。
  • (4)在堆内存中建立对象的特有属性,并进行默认初始化;
  • (5)对属性进行显示初始化
  • (6)对对象进行构造代码块初始化;
  • (7)对对象进行与之对应的构造函数进行初始化;
  • (8)将内存地址付给栈内存中的person变量。

2018.5.9

Lua知识点
LUA递归定义易错点.png
LUA重要知识点.png

2018.5.13

android 知识点

BitmapFactory.options 重要属性

  • (1)inJustDecodeBounds是boolean型变量,如果把它设置为true,在BitmapFactory.decodeXxx的时候并不会真正的返回一个Bitmap而是返回Bitmap的width和height,而且把这个width和height传到outWidth和outHeight这两个字段中。
  • (2)inSampleSize是采样率,通过这个采样率我们可以极大的减少图片内存占用。

2018.5.22

JAVA编程思想
java.png
2018.5.25
java transient关键字使用

文章地址

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。

然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。

总之,java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

2018.5.26
java 不可变类的创建

文章地址

JAVA不可变类的创建.png

2018.5.28
java 并发

在run()中对静态方法Thread.yield()的调用是对线程调试器(Java线程机制一部分,可以将cpu从一个线程转移到另一个线程)的一种建议,它在声明:"我已经执行完生命周期中最重要的部分了,此刻正是切换给其他任务执行一段时间的大好时机。"这就完全是选择性的。

Java提供了volatile关键字来保证可见性。文章地址

对于可见性,Java提供了volatile关键字来保证可见性。当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。而普通的共享变量不能保证可见性,因为普通共享变量被修改之后,什么时候被写入主存是不确定的,当其他线程去读取时,此时内存中可能还是原来的旧值,因此无法保证可见性。另外,通过synchronized和Lock也能够保证可见性,synchronized和Lock能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主存当中。因此可以保证可见性。

2018.5.30

webview加载网页出错

webview加载网页出错:ERR_UNKNOWN_URL_SCHEME
参考文章

2018.6.3

java元组 使用与存在意义
来自<java编程思想> p 355
元组的使用

元组存在的意义
java 注解的概念

注解也被称为元数据为我们在代码中添加信息提供一个形式化的方法,使我们可以稍后某个时刻非常方便地使用这些数据。

2018.6.22

1.注解元素可以的类型如下所示:
  • 所有的基本类型(int float,boolean 等)
  • String
  • Class
  • enum
  • Annotation
  • 以上类型的数组。
2.注解不支持继承

2018.06.25

1.阻塞队列

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容