周筠: 由于同時進行的學習內容較多, 也較雜, 我看是慢慢摸索出一套自己的學習方法: 對于每樣要學的科目, 都堅持記筆記, 有時甚至是抄書. 這看似枯燥而無聊的動作, 整個知識體系就在不知不覺中鞏固和形成了.編程你大腦的一部分.
<<大道至簡>> 周愛民 (Aimingoo)
編程的根本 = 順序(像公路) + 分支(像路口) + 循環(像立交橋)
分析事情: 邏輯關系, 依賴關系
面向過程時代:
程序 = 算法 + 結構 , 算法是一個程序的邏輯實現的描述
單元: unit, 過程: procedure, 模塊: module
CISC —->(分析統計)—> RISC
復雜指令集 精簡指令集
80%的指令只是用在20%的時間里.
最常用的10條執行中, 包含流程控制的只有’條件分支(if….then)’, ‘跳轉(jump)’, 和’調用返回(CALL/RET)’.
面向對象時代:
程序 = 算法 + 結構 + 方法, 方法分為事件驅動和模型驅動.
soul說:
總體結構: 用面向對象
關系: 用數據結構
實現: 用算法
RUP/RAD/螺旋模型: 都市過程模型.
語言只是工具, 無論是JAVA/C++還是Delphi, 它都是程序員用來和機器交流的工具.
建立模型其實可以使用甲骨文來寫的.
工程說的是很多人(團隊) 如何組織在一起進行開發的問題. 它首先把工程中的環節分解出來, 這樣, 有了環節就有了角色, 有力角色就有了溝通.
因此, 工程的問題其實就是: 環節, 角色和溝通的問題.
沒有團隊意識的軟件公司在高度過程化的, 通宵fangfalun,擁有大量工具的集團軍面前必將一觸即潰.
模型驅動體系: Model Driven Architecture
事件觸發提醒: Event Happen Architecture
其實所謂的經典也是對既有知識的總結, 大師們所知道的, 與你所思考的未必就有天壤之別.
2011年1月19日, 讀完<<大道至簡>>
<<大話設計模式>> 筆記
a) 如果你想成為一名更加優秀的軟件設計師, 了解優秀軟件設計的進化過程比學習優秀設計本身更有價值, 因為i設置的演變過程蘊藏了大智慧.
– <<重構與模式>>
b) 重要的不是你將來會不會用到這些設計模式, 而是通過這些模式讓你找到’封裝變化’, ‘對象間松散耦合’, ‘針對結構編程’的感覺, 從而設計出更易維護, 易擴展, 容易復用, 靈活性好的程序.
聚合關系(Aggregation): 表示一種弱的’擁有’關系, 體現的是A對象可以包含B對象, 但B對象不屬于A組合的一部分, 如大雁和雁群的關系.
組合關系(Composition): 表示一種強的’擁有’關系, 體現了嚴格的部分與整體的關系, 部分和整體的生命周期是一樣的, 比如大雁和翅膀.
當你發現自己已經可以掌握此程序語言之后, 你可以選擇:
a) 向上延伸: 學習面向對象設計, 設計模式, 重構以及軟件工程, 讓自己具備做大型項目的能力.
b) 向下延伸: 深入了解程序內部底層的運行機制, 例如數據結構, 操作兄臺那個原理, 計算機組成與結構.
c) 向旁延伸: 學習不同應用領域的API, 例如: 多媒體, 數據庫, 分布式運算.
JAVA變量的種類:
Class MyClass{
static int a;
int b;
public static void myMethod(int c ){
try{
int d;
}catch(Exception e){
}}}
MyClass( int f ){
int[] g = new int[10];
}
1) class variable: 生命在class內, method外, 且使用static修飾的變量, 例如上面的變量a.
2) instance variable: 聲明在class內, method外, 且未使用static修飾的變量, 如變量b.
3) method parameter: 聲明在method小括號內的變量, 如變量c.
4) 狹義的local variable: 聲明在method內的變量, 如變量d/g.
5) exception hanle parameter: 聲明在catch小括號內的變量, 如變量e.
6) constructor parameter: 聲明在construtor的小括號內的變量, 如變量f.
7) 數據元素: 數組的元素沒有識別名稱, 必須通過數據和索引來識別, 如g[0].
悟道:
道勝于行, 行勝于言.
OOA –> OOD –> OOP
成功仰仗:
1) 過往的經驗: 已有之思想和實踐總結.
2) 未來思創: 新的思想和創新.
固本培元, 開拓創新: 爆發力和持久力, 剛柔并濟.
思維導圖
大腦 = 超大容量的圖書館.
你 -> 首席管理員(可能存在別的管理員, 就是那個了解你勝過于你自己的人)
意識:
1) 健康保密
2) 思想保密
3) 財產保密
你如何管理你的大腦(超大容量的圖書館)?
一閃而過的想法:
1) 出色的數據索引(能夠快速檢索)
2) 優秀的存取系統(數據持久化, 講究容量和效率)
思維導圖: 幫助你學習, 組織和存儲你想要的所有信息, 然后以自然的方式對信息進行分類, 使你得到你想要的一切(完美的記憶).
Data Struture: type, size, default value, constraint.
Algorism: method name, argument list, return value, throw exception, access constraint.
大腦的工作機制: 聯想, 想象.
發散性: 樹形, 圖形: 在日常生活中, 你能夠如此輕松自如的接收數據流, 就是因為大腦就是一臺超級計算機.
思維導圖: ‘圖像’和網絡般的’聯想’.
繪制思維導圖:
1. start draw from empty paper center photograph.
2. use a picutre or draw express yourself.
3. drawing your draw using colors.
4. connect
5. not straight.
6. keyword
7. only photograph.
哪些場合可以使用思維導圖?
1) 演講
2) 家庭事務
3) 說服吧別人和談判.
4) 浪漫周某的計劃.
5) 打電話
6) 商務投資
7) 購物
人類具有的10種智能:
語言智能, 精神智能, 創造智能, 身體智能, 性智能,社交智能,
人際關系智能, 感性智能, 空間智能, 數學智能.
你的目的是什么? 如何達到你的目的? 別人需要的是什么? 你能給他們什么?
Hibernate筆記
Hibernate
對象持久化:
物理上: 內存已中斷, 容易丟失數據, 使用作為計算場所. 這是可以突破的.
業務上: 信息是一切活動的先導性條件. 信息具有流動性(可共享), 安全性, 集中性.
信息經過采集, 加工(抽取/轉換), 傳送, 存儲.
數據持久化:
遠古時期: 繩文記事, 甲骨文記事
近代時期: 電報, 電話.
現代: 網絡.
它是手段, 不是目的.
為什么說信息是一切社會活動的先導性條件?
信息載體 -> 訂單 -> 銷售科 -> 生產計劃科 -> 生產科 -> 庫房調度生產資料 -> 生產.
Hibernate: 對象持久化工具.
為什么需要對象持久化工具?
面向對象編程和數據庫的面向關系存在矛盾.
面向對象編程是必須的.
面向關系型數據庫也是必須的.
而序列化不能使信息持久化到DB中.
對象持久化的方法有哪些呢?
JDBC:
優點: 理論上高效, 功能全面.
缺點: 代碼量大, 開發難度大.
EJB:
優點: 封裝了JDBC.
缺點: 重量級的解決方案, 成本高, 維護困難, 測試復雜, 功能不全.
Hibernate:
優點: 輕量級解決方案, 成本低, 容易維護, 測試簡單, 功能全面.
缺點: 理論上低效.
所以, 必須選擇Hibernate. 一個企業最核心的就是數據庫了.
所謂的關鍵點就是與錢和命相關的方面.
如何使用Hibernate?
寫持久化類: 要求是POJO, 存在oid, 空構造, setters/getters.
寫映射文件:
映射規則: 類 -> 表, 屬性 -> 字段, oid -> id
id的映射方法有: hilo, seqhilo, sequence, identity, native, foreign, assigned, auto.
包括實體的映射和關系的映射.
寫配置文件hibernate.cfg.xml
對象在Hibernate的存在三種狀態?
Transient(暫態): session和DB中都沒有該對象.
Persistent(持久太): session和DB中都有該對象.
Detached(游離態): session中沒有, 而DB中有該對象.
Transient -> save()/ saveOrUpdate() -> Persistent -> close()|clear()|evint() -> Detached
Detached -> update() -> Persistent -> delete() -> Transient
load()和get()的區別?
load()先到session cache中找, 如果沒有則返回一個假的Proxy對象, 只有在第一次使用時才到數據庫中找, 如果在數據庫中沒有找到, 則報NullPointerException.
get()也是先到session cache中找, 若果沒有則繼續道數據庫中找.
load()起到了一個延遲加載的效果.
延遲加載可以在映射文件中配置lazy=’true’, 如果想直接加載, 則在HQL中寫: from User u join fetch u.accounts where …
關系映射:
寫入映射文件.
關系的維護: 取消關系維護用inverse=”true”
級聯操作: cascade=”[all | all-delete-orphan]”
延遲加載: lazy = “true” -> join fetch
參考: Java筆記/Hibernate/hibernate關系映射相關.TXT
高級查詢:
1) 靜態查詢: HQL, get(id), load(id), 精確不靈活
2) 動態查詢:
Criteria: 標量查詢
Criteria criteria = session.createCriteria(Book.class);
if(name != null && name.length() > 0){
criteria.add(Restrictions.like(“name”,”%”+name+”%”));
}
criteria.createAlia(“categorys”,”cate”);
criteria.add(Restrictions.eq(“cate.id”,id));
Restrictions: eq, like, gt, lt, le, ge, between, in.
XML
XML定義:
1) 可擴展的標記語言.
2) 電子數據交換.
3) 面向對象.
缺點: XML是BTree結構, 查詢很快, 但修改和刪除較慢.
XML的數據結構:
BTree結構.
數據類型: Root Element, Child Element, Text Content
元數據類型:
Element(empty|any|childelement|fixed),
Attribute: 類型: CDATA, ID, ID-REF, Enum.
XML DTD:
介紹: 市場主流, 簡單, 表達力弱, 外生語法, 前景不大.
Document Type Defind:
Element: pure text, child element.
Attribute:
type: CDATA, ID: ID-REF, Enumerated
value: #REQUIRED, #IMPLIED, any, #FIXED
fmt:
<<大話設計模式>>筆記
設計模式的分類:
創建型:
工廠方法, 抽象工廠, 單例模式, 建造者模式, 原型/模版模式
結構型:
享元模式: 分為內部對象和外部對象. 其中以一個集合對象存放對象作為成員變量.
應用: 五子棋/String常量池/圍棋
適配器模式:
橋接模式: 組合聚合復用原則, 低耦合, 應用: 手機和手機軟件
組合模式: 應用: 分公司 = 一部門
裝飾器模式: 小菜超人
門面模式: 新生報到
行為型:
觀察者模式, 模版模式, 命令模式: 門外賣羊肉串和店內經營, 狀態模式: 記事本, 職責鏈模式: 小菜請假, 加薪.
解釋器模式: 音樂播放器,
中介者模式: 聯合國安理會,美國,伊拉克,
訪問者模式: 男人女人的比較
策略模式: 商場打折促銷
備忘錄模式:
迭代器模式
MVC中的絕對地址和相對地址
地址:
鏈接,
表單提交: 可以使用絕對路徑, 也就是從應用根’/’開始; 也可以使用
重定向: 在應用前加上’/’, 可以重定向到外部的應用.
轉發: 只能轉發應用內部的組件, 絕對路徑: 從應用名后開始, 比如 ‘/a/1.jsp’是正確的, 而’/MVC-2nd/a/1.jsp’是錯誤的.
絕對地址, 前部以’/’, 從應用根開始. 相對地址: 前部無’/’.
Ajax:
Overview:
1. 用于提升用戶體驗, 在不刷新頁面的情況下提交數據. 達到桌面應用程序的效果.
2. 多種技術組合的結果, Asynchronous JavaScript And Xml:表示異步JS和XML.
這里的異步是相對于請求<->響應的同步方式而言的.
請求 <-> 響應模型:
用戶發送請求到服務器, 然后一直等待服務器響應為止.
Ajax模型:
用戶發送一個Ajax請求到Ajax引擎, 然后斷開連接. 由Ajax引擎把HTTP請求發送到服務器, 并不停輪詢響應狀態, 一旦服務器端響應完成, 則觸發頁面的Ajax響應函數.
XMLHttpRequest: 核心對象
專門用于對Ajax進行封裝, 而服務器端編程可以使用JSP/PHP/ASP.
所有的Ajax都是直接或者間接使用XMLHttpRequest對象.
與JSP/Servlet對象進行數據交互.
采用JS技術發送客戶端請求. 同時呈現服務器端響應數據.
數據格式:
少量數據使用字符串, 大量數據使用XML文檔.
Ajax編程流程:
1. 獲取XMLHttpRequest對象.
IE瀏覽器是使用ActiveXObject對象, 分為MSXml2.XMLHTTP和Microsoft.XMLHTTP
2. 創建發送請求:
req.Open(“get|post”,”/ajax/1st/valid.do?user=”+user);
// get 方式, 需要進行2次編碼
req.send(null);
// post方式, 只需要編碼一次即可
req.setRequestHead(“Content-type”,”application/x-form-data”);
req.send(“id=123&user=”+user); // post 方式
3. 制定處理響應信息的函數名:
req.onreadystatechnage = processResponse();
XMLHttpRequest API:
1. 屬性:
readyState: 0: 未加載, 1: 正在加載, 2: 已經加載, 3: 正在處理, 4: 處理完成 -> 表示發送完畢, 響應信息正在填充到XMLHttpRequest對象中.
status: HTTP服務器響應狀態碼, 200: OK, 404: 頁面未找到, 500: 資源內部程序異常.
2. 響應信息對象:
responseXml: xml類型的DOM對象, 針對響應內容為XML的內容.
responseText: 針對字符串內容.
MYSQL 授權語句:
表級授權:
grant privilege(select, insert, delete)
on db_name.table_name
to username@host identified by ‘123456’, username2@host identified by ‘123456’.
mysql> grant select, delete, insert
on apax.user
to demo@localhost identified by ‘123456’.
撤銷授權:
mysql> revoko insert, delete, select
on apax.user
from demo@localhost .
數據庫級授權:
mysql> grant reload, process, select, delete, insert
on *.*all
to demo@localhost identified by ‘123456’.
數據庫級取消權限:
mysql> revoke create, drop, alter
on apax.*
from demo@localhost
Column級授權:
mysql> grant select(oid,username), update(oid,username)
on apax.user
to demo@localhost indetified by ‘123456’.
All Privileges:
mysql> grant all
on apax.*
to demo@localhost
identified by ‘123456’;
remoke all
on apax.*
from demo@localhost;
Only create User, not grant privilege:
mysql> grant usage
on apax.*
to yufei@localhost;
mysql授權機制:
mysql> grant [select, insert, delete] [all] [select(oid,username)]
on [apax.*][apax.user]
to demo@localhost
identified by ‘123456’
[with grant option]
mysql> flush privileges; // 立即啟用權限
mysql> revoke [grant option][all][select, insert]
on [apax.*][apax.user]
from demo@localhost;
Ajax框架:
prototype:
1. 簡單封裝了XMLHttpRequest, 常用函數: F("").
2. 應用: 部門員工下拉列表
3. 常用函數:
Ajax.Request(""):
封裝了請求, 并將響應信息自動填充到div或span.
參數列表: url, json{method: 'get', parameters: {id: '123', username: 'yufei'}, onSuccess: function(){...} }
Ajax.update("left","/ajax/hello.do", {method: 'get'});
參數列表: div/span元素, url, json{}.
Ajax.periodicalUpdater():
參數列表: div/span元素, url, json{}.
實時更新應用: 股票, 時刻表, 論壇, 聊天室.
Ajax處理響應的XML:
var doc = req.responseXML;
var deps = doc.getElementsByTagName(“dept”);
for(var i=0;i
<
Struts2筆記:
Struts1體系結構:
```
Web Brower struts-config.xml
| | 分控制器: Action-----
| | | |
| | | |
Web Server ------> 主控制器: ActionServlet ---> ----> ActionForm和JavaBean --> Service + DAO
| | | |
| | | |
| | 分控制器: Action-----
|<------------------試圖: JSP
|_____struts2支持諸如freemarker/velocity,報表,流等技術.
```
struts1詳細流程圖:
```
Web Brower struts-config.xml
| | 分控制器: Action-----
| | | |
| | | |
Web Server ------> 主控制器: ActionServlet ---> ----> ActionForm和JavaBean --> Service + DAO
```
- 職業生涯
- 如何提升你的能力?給年輕程序員的幾條建議
- 那些年,那些事
- 阿里巴巴離職DBA 35歲總結的職業生涯
- 人生的四種選擇
- 程序人生的四個象限和兩條主線
- 幾縷代碼與閑思
- 張小龍-學習筆記
- Web前端
- 移動Web手冊
- 精通CSS: 高級Web標準解決方案
- 悟透JavaScript
- 架構設計
- 大型網站技術架構
- 周愛民-大道至簡
- RESTful Web Services Cookbook - 讀書筆記
- 大話設計模式
- Unix編程藝術
- 把程序員修煉之道讀薄
- 學習能力
- 奇特的一生:讀書筆記
- zhh-看源碼那些事
- 一個創業者怎么看待讀書和寫作
- 程序員修煉之道
- 2015/1/5 頭腦風暴
- 書單計劃
- 2014年我讀過的那些書
- 我的后端開發書架2015
- 別人的書單
- 讀書筆記
- 浪潮之巔
- 達內時期自己筆記整理
- Effective Java
- 打造facebook: 讀書筆記
- 面試整理
- 阿里面試的一點感受
- 騰訊的三輪面試
- 三十之惑–面霸
- 前端面試問題匯總
- 八爪網絡面試總結
- 2015面試總結總結
- 找工作流程梳理
- 最全前端面試問題及答案總結
- 前端開發面試題收集
- 百度web前端--2015一面
- 百度web前端--2015二面