讀書筆記(技術(shù)相關(guān))--2018.6.25更新

2018.4.24

1.使用線程池的三大好處:
一是降低資源的消耗双抽,通過重用已創(chuàng)建的線程來降低線程的創(chuàng)建和銷毀的消耗募狂。
二是提高響應速度骤宣,任務到達時不需要等待線程的創(chuàng)建就可以立即執(zhí)行。
三是提高線程的可管理性撞牢,線程池可以統(tǒng)一管理、分配叔营、監(jiān)控和調(diào)優(yōu)屋彪。
參考地址

2.Java通過ThreadPoolExecutor來實現(xiàn)對線程池的支持。

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.動態(tài)綁定是指ObjectC將會跟蹤對象所屬的類,它會在運行時判斷該對象所屬的方法,并在運行時確定動態(tài)需要調(diào)用的方法勘究,而不是在編譯時確定要調(diào)用的方法矮湘。
3.ObjectC形參個數(shù)可變的方法

-(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);
  }
}

關(guān)鍵地方說明如下:

a.va_list:這是一個類型,用于定義指向可變參數(shù)列表的的指針口糕。
b.va_start:這是一個函數(shù)缅阳,該函數(shù)指定開始處理可變形參的列表,并讓指針變量指向可變形參列表的第一個參數(shù)
c.va_end:結(jié)束處理可變形參景描,釋放指針變量十办。
d.var_arg:該函數(shù)返回獲取指針當前指向的參數(shù)的值,并將指針移動到指向下一個參數(shù)超棺。

4.ObjectC中static的說明

雖然Object-C也提供了static關(guān)鍵字向族,但是這個static關(guān)鍵字不能用于修飾成員變量,它只能修飾局部變量棠绘、全局變量和函數(shù)件相,
static修飾局部變量表示將該局部變量存儲到靜態(tài)存儲區(qū);
static修改全局變量用于限制該全局變量只能在當前源文件中訪問氧苍;
static修改函數(shù)用于限制該函數(shù)只能在當前源文件中調(diào)用夜矗;

5.ObjectC中@package訪問權(quán)限的說明


映像訪問.png

2018.5.4

  1. ObjectC中讓系統(tǒng)合成setter和getter方法只要如下兩步:
a.在類接口部分使用@property指令定義屬性。
b.在類實現(xiàn)的部分使用@synthesize指令聲明該屬性即可让虐。
  1. ObjectC 指示符
    1. assign:該指示符指定對屬性只是進行簡單賦值紊撕,不更改對所賦的值的引用計數(shù)。這個指示符主要適用于NSInteger等基礎(chǔ)類型赡突,以及short,float,double,結(jié)構(gòu)體等各種c數(shù)據(jù)類型对扶。
  • 2.atomic(nonatomic):指定合成的存取方法是否為原子操作。所謂原子操作麸俘,主要指是否線程安全辩稽。如果使用atomic,那么合成的存、取方法都是線程安全的——當一個線程進入存从媚、取方法的方法之后逞泄,其它線程無法進入該存、取方法拜效,這樣就可以避免多線程并發(fā)破壞對象的數(shù)據(jù)完整性喷众,atomic是默認值。雖然atomic可以保證對象數(shù)據(jù)的完整性紧憾,但是atomic的線程安全會造成性能下降到千,因此,大多數(shù)單線程環(huán)境下赴穗,我們都會考慮使用nonatomic來提高存取方法的訪問性能憔四。
  • 3.copy:如果使用copy指示符膀息,當調(diào)用setter方法對成員變量賦值時,會將被賦值的對象復制一個副本了赵,再將該副本賦值給成員變量潜支。copy指示符會將原成員變量所引用的對象的引用計數(shù)減1.當成員變量的類型是可變類型,或其子類是可變類型時柿汛,被賦值的對象有可能在賦值之后被修改冗酿,如果程序不需要這種修改影響setter方法設(shè)置成員變量的時候,此時就可考慮使用copy指示符络断。
  • 4.retain:使用retain指示符定義屬性時裁替,當把某個對象賦值給該屬性時,該屬性原來所引用的對象的引用計數(shù)減1貌笨,被賦值對象的引用計數(shù)加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"底層執(zhí)行如下
  • (1)程序優(yōu)先考慮調(diào)用“setName:屬性值;”代碼通過settter方法完成設(shè)置座哩。
  • (2)如果該類沒有setName:方法,KVC機制會搜索該類名為_name的成員變量粮彤,無論該成員變量是在類接口部分定義根穷,還是在類實現(xiàn)部分定義,也無論用哪個訪問控制符修飾导坟,這個KVC代碼底層實際上就是對_name成員變量賦值屿良。
  • (3)如果該類既沒有setName:方法,也沒有定義_name成員變量,KVC機制會搜索該類名為name的成員變量惫周,無論該成員變量是在類接口部分定義尘惧,還是在類實現(xiàn)部分定義,也無論用哪個訪問控制符修飾递递,這條KVC代碼底層實現(xiàn)就是對name成員變量賦值喷橙。
  • (4)如果上面3條都沒有找到啥么,系統(tǒng)會執(zhí)行該對象的setValue:
    forUnderfindedKey:方法。
  1. "valueforKey@"name";"代碼重慢,底層的執(zhí)行機制如下
  • (1)程序優(yōu)先考慮調(diào)用“name;”代碼來獲取該getter方法的返回值饥臂。
  • (2)如果該類沒有name方法,KVC機制會搜索該類名為_name的成員變量似踱,無論該成員變量是在類接口部分定義,還是在類實現(xiàn)部分定義稽煤,也無論用哪個訪問控制符修飾核芽,這條KVC代碼底層實際就是返回_name成員變量的值。
  • (3)如果該類既沒有name方法酵熙,也沒有定義_name成員變量轧简,KVC機制會搜索該類名為name的成員變量,無論定義在接口還是在類實現(xiàn)匾二,也無論用哪個訪問控制符修飾哮独,這條KVC代碼底層實際就是返回name成員變量的值。
  • (4)如果上面3條都沒有找到察藐,系統(tǒng)將會執(zhí)行該對象的valueforUndefinedKey:方法皮璧。

2018.5.8

Java 類的加載過程 Person person=new Person() 為例進行說明。
  • (1)因為new用到Person.class,所以會先找到Person.class文件分飞,并加載到內(nèi)存中悴务;
  • (2)執(zhí)行該類中的static代碼塊,如果有的話譬猫,給Person.class類進行初始化讯檐。
  • (3)在堆內(nèi)存中開辟空間分配內(nèi)存地址。
  • (4)在堆內(nèi)存中建立對象的特有屬性染服,并進行默認初始化别洪;
  • (5)對屬性進行顯示初始化
  • (6)對對象進行構(gòu)造代碼塊初始化;
  • (7)對對象進行與之對應的構(gòu)造函數(shù)進行初始化柳刮;
  • (8)將內(nèi)存地址付給棧內(nèi)存中的person變量挖垛。

2018.5.9

Lua知識點
LUA遞歸定義易錯點.png
LUA重要知識點.png

2018.5.13

android 知識點

BitmapFactory.options 重要屬性

  • (1)inJustDecodeBounds是boolean型變量,如果把它設(shè)置為true诚亚,在BitmapFactory.decodeXxx的時候并不會真正的返回一個Bitmap而是返回Bitmap的width和height晕换,而且把這個width和height傳到outWidth和outHeight這兩個字段中。
  • (2)inSampleSize是采樣率站宗,通過這個采樣率我們可以極大的減少圖片內(nèi)存占用闸准。

2018.5.22

JAVA編程思想
java.png
2018.5.25
java transient關(guān)鍵字使用

文章地址

我們都知道一個對象只要實現(xiàn)了Serilizable接口,這個對象就可以被序列化梢灭,java的這種序列化模式為開發(fā)者提供了很多便利夷家,我們可以不必關(guān)系具體序列化的過程蒸其,只要這個類實現(xiàn)了Serilizable接口,這個類的所有屬性和方法都會自動序列化库快。

然而在實際開發(fā)過程中摸袁,我們常常會遇到這樣的問題,這個類的有些屬性需要序列化义屏,而其他屬性不需要被序列化靠汁,打個比方,如果一個用戶有一些敏感信息(如密碼闽铐,銀行卡號等)蝶怔,為了安全起見,不希望在網(wǎng)絡操作(主要涉及到序列化操作兄墅,本地序列化緩存也適用)中被傳輸踢星,這些信息對應的變量就可以加上transient關(guān)鍵字。換句話說隙咸,這個字段的生命周期僅存于調(diào)用者的內(nèi)存中而不會寫到磁盤里持久化沐悦。

總之,java 的transient關(guān)鍵字為我們提供了便利五督,你只需要實現(xiàn)Serilizable接口藏否,將不需要序列化的屬性前添加關(guān)鍵字transient,序列化對象的時候概荷,這個屬性就不會序列化到指定的目的地中秕岛。

2018.5.26
java 不可變類的創(chuàng)建

文章地址

JAVA不可變類的創(chuàng)建.png

2018.5.28
java 并發(fā)

在run()中對靜態(tài)方法Thread.yield()的調(diào)用是對線程調(diào)試器(Java線程機制一部分,可以將cpu從一個線程轉(zhuǎn)移到另一個線程)的一種建議误证,它在聲明:"我已經(jīng)執(zhí)行完生命周期中最重要的部分了继薛,此刻正是切換給其他任務執(zhí)行一段時間的大好時機。"這就完全是選擇性的愈捅。

Java提供了volatile關(guān)鍵字來保證可見性遏考。文章地址

對于可見性,Java提供了volatile關(guān)鍵字來保證可見性蓝谨。當一個共享變量被volatile修飾時灌具,它會保證修改的值會立即被更新到主存,當有其他線程需要讀取時譬巫,它會去內(nèi)存中讀取新值咖楣。而普通的共享變量不能保證可見性,因為普通共享變量被修改之后芦昔,什么時候被寫入主存是不確定的诱贿,當其他線程去讀取時,此時內(nèi)存中可能還是原來的舊值,因此無法保證可見性珠十。另外料扰,通過synchronized和Lock也能夠保證可見性,synchronized和Lock能保證同一時刻只有一個線程獲取鎖然后執(zhí)行同步代碼焙蹭,并且在釋放鎖之前會將對變量的修改刷新到主存當中晒杈。因此可以保證可見性。

2018.5.30

webview加載網(wǎng)頁出錯

webview加載網(wǎng)頁出錯:ERR_UNKNOWN_URL_SCHEME
參考文章

2018.6.3

java元組 使用與存在意義
來自<java編程思想> p 355
元組的使用

元組存在的意義
java 注解的概念

注解也被稱為元數(shù)據(jù)為我們在代碼中添加信息提供一個形式化的方法孔厉,使我們可以稍后某個時刻非常方便地使用這些數(shù)據(jù)拯钻。

2018.6.22

1.注解元素可以的類型如下所示:
  • 所有的基本類型(int float,boolean 等)
  • String
  • Class
  • enum
  • Annotation
  • 以上類型的數(shù)組。
2.注解不支持繼承

2018.06.25

1.阻塞隊列

阻塞隊列(BlockingQueue)是一個支持兩個附加操作的隊列撰豺。這兩個附加的操作是:在隊列為空時说庭,獲取元素的線程會等待隊列變?yōu)榉强铡.旉犃袧M時郑趁,存儲元素的線程會等待隊列可用。阻塞隊列常用于生產(chǎn)者和消費者的場景姿搜,生產(chǎn)者是往隊列里添加元素的線程寡润,消費者是從隊列里拿元素的線程。阻塞隊列就是生產(chǎn)者存放元素的容器舅柜,而消費者也只從容器里拿元素梭纹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市致份,隨后出現(xiàn)的幾起案子变抽,更是在濱河造成了極大的恐慌,老刑警劉巖氮块,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绍载,死亡現(xiàn)場離奇詭異,居然都是意外死亡滔蝉,警方通過查閱死者的電腦和手機击儡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝠引,“玉大人阳谍,你說我怎么就攤上這事◇Ω牛” “怎么了矫夯?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吊洼。 經(jīng)常有香客問我训貌,道長,這世上最難降的妖魔是什么融蹂? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任旺订,我火速辦了婚禮弄企,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘区拳。我一直安慰自己拘领,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布樱调。 她就那樣靜靜地躺著约素,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笆凌。 梳的紋絲不亂的頭發(fā)上圣猎,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音乞而,去河邊找鬼送悔。 笑死,一個胖子當著我的面吹牛爪模,可吹牛的內(nèi)容都是我干的欠啤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼屋灌,長吁一口氣:“原來是場噩夢啊……” “哼洁段!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起共郭,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤祠丝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后除嘹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體写半,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年憾赁,在試婚紗的時候發(fā)現(xiàn)自己被綠了污朽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡龙考,死狀恐怖蟆肆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晦款,我是刑警寧澤炎功,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站缓溅,受9級特大地震影響蛇损,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一淤齐、第九天 我趴在偏房一處隱蔽的房頂上張望股囊。 院中可真熱鬧,春花似錦更啄、人聲如沸稚疹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽内狗。三九已至,卻和暖如春义锥,著一層夾襖步出監(jiān)牢的瞬間柳沙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工拌倍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赂鲤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓柱恤,卻偏偏與公主長得像蛤袒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膨更,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容