标签:
1. Living without an aim is like sailing without a compass. 生活沒有目標,猶如航海沒有羅盤。
2. 無論是現實世界還是計算機世界,可讀性都是相當重要的,因為這涉及到人們的意識或者是認識效率,一般文字比數字的可理解性和可讀性要好,圖片的可讀性最強。
a) 一般數學是比較抽象的,因為其中充滿著各種阿拉伯數字和已經不能再簡化的希臘字符。
b) 數學家的得意之作就是覺得自己是在世界科學界的最巔峰。
c) 我們能用數學工具處理日常生活中的一些必要的計算工作足矣,人們發明了計算機,它計算的速度和效率是無法比擬的。
d) 適當地簡化有利於工作效率的提高,但是過分簡化不利於信息的有效傳播。
e) 易用性是我們的終極目標,計算機中的封裝思想就是在不斷的封裝底層的工作原理,簡化各種操作,提高程序員的編程效率。
f) 封裝思想和簡化思想如出一轍,但是推薦對工作原理進行簡化,而不是對各種表示符號進行過分簡化。
3. 計算機思維就是線性思維,因為數據在計算機的內存中線性存儲,中央系統處理器的工作就是快速的線性處理這些在內存中的數據。
a) 所有數據結構都是基於指針和數組的。
4. 在編程級別,不要濫用操作符和各種標識符,在認知可承受的範圍內進行簡化操作,推薦用有意義的代碼組合代替各種操作符。
a) 在設計級別,因為要均衡各種性能優化和語言的易用性,會有更多的考慮和權衡。
b) 語言的用戶是程序員,應用程序的終端用戶是各類消費者。
1. Cease to struggle and you cease to live. 生命不止,奮鬥不息。
2. Java類的內存結構就是樹形結構,但需要遠程訪問本地的Java類的時候,需要對實體類進行序列化(serializable)之後再進行網絡傳輸。
3. 方法的參數是數據傳輸的通信接口,方法的代碼塊的作用是處理數據之後返回數據。
4. 在JavaScript 中函數function ,類class和對象object是可以等價的,因為在JavaScript中一切皆對象。
a) JavaScript中內置了很多的BOM(Broswer Object Model)和DOM(Document Object Model)對象,程序員可以直接調用。
b) JavaScript是動態弱類型語言,使用變量對象前可以不用指定變量的類型,可以動態綁定。
c) JavaScript是基於函數式function的編程。
d) JavaScript的數據類型:
i. Undefined
ii. Boolean
iii. Object
iv. String
v. Number
1. There is no such thing as a great talent without great will power. 沒有偉大的意志力,便沒有雄才大略。
2. 函數和對象是可以等同的,類和它們的區別其實就是沒有在內存空間分配內存。通過構造器函數就可以實例化類對象,給類在內存中分配內存。
3. 我們一般通過屬性來描述對象的信息。
1. A strong man will struggle with the storms of fate. 強者能同命運的風暴抗爭。
2. 體積龐大的物件永遠都是輸在靈活性能,就像大公司懼怕小型的創業公司,越複雜的東西出問題的可能性就越多。
a) 大國懼怕小國也是同樣的道理。
b) 最好的設計師是自然,能在地球大自然下生存下來的物種都是上帝最優化的藝術品。
3. 《JavaScript 編程指南》:
a) “JavaScript”這個名字經常被誤解。除了看起來和Java類似之外,JavaScript和Java是完全不同的兩種語言。JavaScript早已超出了其“腳本語言”(JavaScript-language)本身的範疇,而成為一種集健壯性、高效性和通用性為一身的編程語言。
4. 計算機毫無用處,除了答案什麼也沒有。--畢加索
5. 《Java NIO》:
a) 高效的I/O往往意味著您要選擇從A到B的最短路徑,而執行大量I/O操作時,複雜性毀了執行效率。
b) Java的劣勢源於其最大的優勢:一次編寫,到處運行。Java需要運行與虛擬機上,為了保證Java字節碼在各種JVM部署平台上運行效果一致,做些妥協是必須的。既然需要通用不同的操作系統平台,那麼,某種程度上就必須選擇各種平台都接受的處理方案。
c) 面向對象的程序設計講的無非就是封裝。封裝是個好東西:它分解任務,隱藏實施細節,提高對象的重複利用率。這樣的分解、整合即適用於程序,也適用於程序員。您沒準就是以一位藝高超的程序員,創建極其複雜的對象,完成驚世駭俗的任務,而對支撐Java平台的基本I/O概念卻一無所知。
6. 先把事實搞清楚,歪曲是以後的事。--馬克.吐溫
1. 我分不清海跟天,我也分不清好人跟坏人。--《城南舊事》
2. We fear the thing we want the most. 心之熱盼,敬而求之。
3. 計算機可以模擬現實世界,只要想做,辦法總是有的。為了提高人麼生活的便捷和工作的效率,在保證通信安全和網絡帶寬的情況下,我們可以盡量地把資源提取到服務器端,因為它是非移動的,可以在損失靈活性的條件下盡可能的增加複雜性。移動端主要的目標是靈活高效,所以越簡單越好。
a) 架構師的責任就是保證軟件的資源和速度。資源以後可以盡量得放到服務器端,速度可以通過網絡帶寬解決,就像是對現實生活中的高速公路或者是高鐵一樣進行提速。
b) 互联网软件的性能一般对用户体验的影响:
i. 服务器的响应速度是微乎其微的,因为大多数时候是可以忽略不计。
ii. 经验告诉我们互联网软件的性能更多(80%)的是和前端的性能优化有关。
iii. 標籤語言比編譯語言的訪問路徑更深,訪問效率會受到影響。
c) 圖示:
1. 全局變量和static關鍵字的作用都是為了增加變量的生命週期,編程的原則就是盡量減小變量的作用域和生命週期,從而節省內存資源。
a) 全局變量一般就是公共資源,供各個子程序對其進行訪問存取數據。
2. Myths are public dreams, dreams are private myths. 神話是大眾的夢想,夢想是個人的神話。
3. 前端編程中的事件(Event)用的最多的是單擊事件。
4. 軟件即服務。(Software is a service.)abbreviation:SsaS
5. 所有函數有返回值,函數的作用就是處理數據之後返回值,若沒有返回值,可以用void或者是返回空代替。
a) 在面向對象編程中,我們其實可以把函數和變量都稱作對象。
b) 編程語句就是賦值語句,本質上都是key-value的數據模型。
6. 一對多的實體之間的關聯關係在設計實體類之間的關係的時候用得最多,一對一的關聯關係就是特殊的一對多的關聯關係,而多對多的關聯關係可以理解為一對多關聯關係的復合。
a) 繼承(extends)父類,實現接口(Interface),類型和該類實例化對象的關係都可以作為一對多的關係。
7. 編程為了不斷地提高易用性和程序員的編程效率,原則是就是不斷對底層操作指令的封裝。因為C/C++在各個操作系統中兼容可移植,所以大多數語言多是基於C函數庫和C++類庫設計成型。
a) 從指令到函數再到方法,都是一些操作數據的動作。
b) 基本數據類型到引用數據類型,都是為了更好的存儲組織數據而設計的。
c) 對數據和操作數據的封裝就是現代編程語言的類class.
8. 面向對象編程是基於數據的編程,如何用編程語言更好地描述現實生活中的數據最為關鍵。面向過程的編程我們最多的是如何讓要處理的數據更好的適應代碼。這兩者代碼的執行效率和程序員的編程效率是負相關的,各有長短,程序員在用的時候會有自己的選擇。
9. A life with love will have some thorns, but a life without love will have no roses. 有愛的人生會有荊棘,但沒有愛的人生將沒有玫瑰。
1. A man, as a general rule, owes very little to what he is born with-a man is what he makes of himself. --Alexander Graham Bell 人一般而言,天生的能力对它影响不大-他如何造就自己決定他的人生。
2. 編程語言中的關鍵字也可以理解為經過封裝之後的函數,函數我們一般用動詞表示。自定義的方法用動賓結構,可讀性更強。
a) Key Value
b) 函數 返回值
c) //C語言
d) if true
e) else false
f) goto address
g) break address
h) return value
i) while void
j) for void
k) //Java語言
l) try void
m) catch Exception
n) throws Exception
o) throw throwable
p) extends Object
q) implements Interface
r) ...
3. 程序的處理方向是線性的,循環語句(for)是對重複處理相同數塊的封裝,而判斷語句(if)是對條件數據真假的判斷。編程用得最多的是線性的賦值語句,當程序複雜的時候我們就會對程序語句進行重構優化封裝成方法,使程序的結構清晰,可讀性增強且冗餘度減少。
a) 編程到最後,認真的程序員會檢查程序語句的優雅程度,這對程序以後的維護是有很大的幫助的。
b) 所有程序方法都是基於線性賦值語句,循環語句,判斷語句和中斷語句組成的。
1. The most wasted of all day is one without laughter. 若無歡顏,虛度日間。
2. 變量和函數都稱作為對象,只要是對象都會在內存中分配內存。在C/C++中自定義的對象的內存分配和釋放是需要程序員自己管理,在Java或者是C#中對象的管理內存回收工作是由垃圾回收器自動處理的。
a) 基本數據類型的數據是分配在棧stack中,在數據結構的內存管理工作是計算機編譯器自主管理的。
b) 引用類型的數據是在棧中保存數據對象的引用地址,在堆heap中給其分配內存空間。
c) 編程要分清處變量對象和函數對象,一般變量對象是用名詞來表示而函數對象是用動詞表示。變量一般對應的是實體對象的描述,函數是功能實現的映射。這裡更難的是實體類的屬性結構設計,函數對象本質就是變量賦值語句的集合。
3. 轉義字符的作用就是用字符表示第二種意義,一般用作轉義的操作符是“\”。
4. 函數function的key-value結構:
标签:
原文地址:http://www.cnblogs.com/liaowanzhong/p/5225305.html