[Java工程師成神之路](http://www.importnew.com/17389.html)
[TOC]
原文出處:?[hollischuang(@Hollis_Chuang)](http://www.hollischuang.com/archives/489)
**一、基礎篇**
**1.1 JVM**
**1.1.1\. Java****內存模型,****Java****內存管理,****Java****堆和棧,垃圾回收**
[http://www.jcp.org/en/jsr/detail?id=133](http://www.jcp.org/en/jsr/detail?id=133)
[http://ifeve.com/jmm-faq/](http://ifeve.com/jmm-faq/)
**1.1.2.?****了解****JVM****各種參數及調優**
**1.1.3.?****學習使用****Java****工具**
[jps](http://www.hollischuang.com/archives/105),?[jstack](http://www.hollischuang.com/archives/110),?[jmap](http://www.hollischuang.com/archives/303), jconsole, jinfo, jhat, javap, …
[http://kenai.com/projects/btrace](http://kenai.com/projects/btrace)
[http://www.crashub.org/](http://www.crashub.org/)
[https://github.com/taobao/TProfiler](https://github.com/taobao/TProfiler)
[https://github.com/CSUG/HouseMD](https://github.com/CSUG/HouseMD)
[http://wiki.cyclopsgroup.org/jmxterm](https://github.com/CSUG/HouseMD)
[https://github.com/jlusdy/TBJMap](https://github.com/jlusdy/TBJMap)
**1.1.4.?****學習****Java****診斷工具**
[http://www.eclipse.org/mat/](http://www.eclipse.org/mat/)
[http://visualvm.java.net/oqlhelp.html](http://visualvm.java.net/oqlhelp.html)
**1.1.5.?****自己編寫各種****outofmemory****,****stackoverflow****程序**
* HeapOutOfMemory
* Young OutOfMemory
* MethodArea OutOfMemory
* ConstantPool OutOfMemory
* DirectMemory OutOfMemory
* Stack OutOfMemory Stack OverFlow
**1.1.6.?****使用工具嘗試解決以下問題,并寫下總結**
當一個Java程序響應很慢時如何查找問題 當一個Java程序頻繁FullGC時如何解決問題,如何查看垃圾回收日志 當一個Java應用發生OutOfMemory時該如何解決,年輕代、年老代、永久代解決辦法不同,導致原因也不同
**1.1.7.?****參考資料**
[http://docs.oracle.com/javase/specs/jvms/se7/html/](http://docs.oracle.com/javase/specs/jvms/se7/html/)
[http://www.cs.umd.edu/~pugh/java/memoryModel/](http://www.cs.umd.edu/~pugh/java/memoryModel/)
[http://gee.cs.oswego.edu/dl/jmm/cookbook.html](http://gee.cs.oswego.edu/dl/jmm/cookbook.html)
**1.2\. Java****基礎知識**
**1.2.1.?****閱讀源代碼**
java.lang.String java.lang.Integer
Java.lang.Long
java.lang.Enum java.math.BigDecimal java.lang.ThreadLocal java.lang.ClassLoader & java.net.URLClassLoader java.util.ArrayList & java.util.LinkedList“ java.util.HashMap & java.util.LinkedHashMap & java.util.TreeMap java.util.HashSet & java.util.LinkedHashSet & java.util.TreeSet
**1.2.2.?****熟悉****Java****中各種變量類型**
**1.2.3.?****熟悉****Java String****的使用,熟悉****String****的各種函數**
**1.2.4.?****熟悉****Java****中各種關鍵字**
**1.2.5.?****學會使用****List****,****Map****,****Stack****,****Queue****,****Set**
上述數據結構的遍歷 上述數據結構的使用場景 Java實現對Array/List排序java.uti.Arrays.sort()?java.util.Collections.sort()?Java實現對List去重 Java實現對List去重,并且需要保留數據原始的出現順序 Java實現最近最少使用cache,用LinkedHashMap
**1.2.6\. Java IO&Java NIO****,并學會使用**
java.io.*?java.nio.*?nio和reactor[設計模式](http://www.amazon.cn/gp/product/B001130JN8/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=importnew-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B001130JN8 "設計模式:可復用面向對象軟件的基礎")?文件編碼,字符集
**1.2.7\. Java****反射與****javassist**
反射與工廠模式?java.lang.reflect.*
**1.2.8\. Java****序列化**
java.io. Serializable?什么是序列化,為什么序列化 序列化與單例模式 google序列化protobuf
**1.2.9.?****虛引用,弱引用,軟引用**
java.lang.ref.*?實驗這些引用的回收
**1.2.10.?****熟悉****Java****系統屬性**
java.util.Properties
**1.2.11.?****熟悉****Annotation****用法**
java.lang.annotation.*
**1.2.12\. JMS**
javax.jms.*
**1.2.13\. JMX**
java.lang.management.*?javax.management.*
**1.2.14.?****泛型和繼承,泛型和擦除**
**1.2.15.?****自動拆箱裝箱與字節碼**
**1.2.16.?****實現****Callback**
?**1.2.17\. java.lang.Void****類使用**
?**1.2.18\. Java Agent****,****premain****函數**
java.lang.instrument
**1.2.19.?****單元測試**
Junit,[http://junit.org/](http://junit.org/)
Jmockit,[https://code.google.com/p/jmockit/](https://code.google.com/p/jmockit/)
djUnit,[http://works.dgic.co.jp/djunit/](http://works.dgic.co.jp/djunit/)
**1.2.20\. Java****實現通過正則表達式提取一段文本中的電子郵件,并將****@****替換為****#****輸出**
java.lang.util.regex.*
**1.2.21.?****學習使用常用的****Java****工具庫**
commons.lang,?commons.*…?guava-libraries?netty
**1.2.22.?****什么是****API&SPI**
[http://en.wikipedia.org/wiki/Application_programming_interface](http://en.wikipedia.org/wiki/Application_programming_interface)
[http://en.wikipedia.org/wiki/Service_provider_interface](http://en.wikipedia.org/wiki/Application_programming_interface)
**1.2.23.?****參考資料**
JDK src.zip 源代碼
[http://openjdk.java.net/](http://openjdk.java.net/)
[http://commons.apache.org/](http://commons.apache.org/)
[https://code.google.com/p/guava-libraries/](https://code.google.com/p/guava-libraries/)
[http://netty.io/](http://netty.io/)
[http://stackoverflow.com/questions/2954372/difference-between-spi-and-api](http://stackoverflow.com/questions/2954372/difference-between-spi-and-api)
[http://stackoverflow.com/questions/11404230/how-to-implement-the-api-spi-pattern-in-java](http://stackoverflow.com/questions/11404230/how-to-implement-the-api-spi-pattern-in-java)
**1.3\. Java****并發編程**
**1.3.1.?****閱讀源代碼,并學會使用**
java.lang.Thread
java.lang.Runnable
java.util.concurrent.Callable?java.util.concurrent.locks.ReentrantLockjava.util.concurrent.locks.ReentrantReadWriteLockjava.util.concurrent.atomic.Atomic*?java.util.concurrent.Semaphorejava.util.concurrent.CountDownLatch?java.util.concurrent.CyclicBarrierjava.util.concurrent.ConcurrentHashMap?java.util.concurrent.Executors
**1.3.2.?****學習使用線程池,自己設計線程池需要注意什么**
**1.3.3.?****鎖**
什么是鎖,鎖的種類有哪些,每種鎖有什么特點,適用場景是什么 在并發編程中鎖的意義是什么
**1.3.4\. synchronized****的作用是什么,****synchronized****和****lock**
**1.3.5\. sleep****和****wait**
**1.3.6\. wait****和****notify**
**1.3.7.?****寫一個死鎖的程序**
**1.3.8.?****什么是守護線程,守護線程和非守護線程的區別以及用法**
**1.3.9\. volatile****關鍵字的理解**
C++ volatile關鍵字和Java volatile關鍵字 happens-before語義 編譯器指令重排和CPU指令重排
[http://en.wikipedia.org/wiki/Memory_ordering](http://en.wikipedia.org/wiki/Memory_ordering)
[http://en.wikipedia.org/wiki/Volatile_variable](http://en.wikipedia.org/wiki/Volatile_variable)
[http://preshing.com/20130702/the-happens-before-relation/](http://preshing.com/20130702/the-happens-before-relation/)
**1.3.10.?****以下代碼是不是線程安全?為什么?如果為****count****加上****volatile****修飾是否能夠做到線程安全?你覺得該怎么做是線程安全的?**
|
1
2
3
4
5
6
7
8
9
10
11
|
`public` `class` `Sample {`
`private` `static` `int` `count =` `0``;`
`public` `static` `void` `increment() {`
`count++;`
`}`
`}`
|
**1.3.11.?****解釋一下下面兩段代碼的差別**
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
`// 代碼1`
`public` `class` `Sample {`
`private` `static` `int` `count =` `0``;`
`synchronized` `public` `static` `void` `increment() {`
`count++;`
`}`
`}`
`// 代碼2`
`public` `class` `Sample {`
`private` `static` `AtomicInteger count =` `new` `AtomicInteger(``0``);`
`public` `static` `void` `increment() {`
`count.getAndIncrement();`
`}`
`}`
|
**1.3.12.?****參考資料**
[http://book.douban.com/subject/10484692/](http://book.douban.com/subject/10484692/)
[http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)
**二、****進階篇**
**2.1\. Java****底層知識**
**2.1.1.?****學習了解字節碼、****class****文件格式**
[http://en.wikipedia.org/wiki/Java_class_file](http://en.wikipedia.org/wiki/Java_class_file)
[http://en.wikipedia.org/wiki/Java_bytecode](http://en.wikipedia.org/wiki/Java_bytecode)
[http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings](http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings)
[http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
[http://asm.ow2.org/](http://asm.ow2.org/)
**2.1.2.?****寫一個程序要求實現****javap****的功能(手工完成,不借助****ASM****等工具)**
如Java源代碼:
|
1
2
3
4
5
6
7
8
9
10
11
|
`public` `static` `void` `main(String[] args) {`
`int` `i =` `0``;`
`i +=` `1``;`
`i *=` `1``;`
`System.out.println(i);`
`}`
|
編譯后讀取class文件輸出以下代碼:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
`public` `static` `void` `main(java.lang.String[]);`
`Code:`
`Stack=``2``, Locals=``2``, Args_size=``1`
`0``:?? iconst_0`
`1``:?? istore_1`
`2``:?? iinc` `1``,` `1`
`5``:?? iload_1`
`6``:?? iconst_1`
`7``:?? imul`
`8``:?? istore_1`
`9``:?? getstatic?????? #``2``;` `//Field java/lang/System.out:Ljava/io/PrintStream;`
`12``:? iload_1`
`13``:? invokevirtual?? #``3``;` `//Method java/io/PrintStream.println:(I)V`
`16``:` `return`
`LineNumberTable:`
`line` `4``:` `0`
`line` `5``:` `2`
`line` `6``:` `5`
`line` `7``:` `9`
`line` `8``:` `16`
|
**2.1.3\. CPU****緩存,****L1****,****L2****,****L3****和偽共享**
[http://duartes.org/gustavo/blog/post/intel-cpu-caches/](http://duartes.org/gustavo/blog/post/intel-cpu-caches/)
[http://mechanical-sympathy.blogspot.com/2011/07/false-sharing.html](http://mechanical-sympathy.blogspot.com/2011/07/false-sharing.html)
**2.1.4.?****什么是尾遞歸**
**2.1.5.?****熟悉位運算**
用位運算實現加、減、乘、除、取余
**2.1.6.?****參考資料**
[http://book.douban.com/subject/1138768/](http://book.douban.com/subject/1138768/)
[http://book.douban.com/subject/6522893/](http://book.douban.com/subject/6522893/)
[http://en.wikipedia.org/wiki/Java_class_file](http://en.wikipedia.org/wiki/Java_class_file)
[http://en.wikipedia.org/wiki/Java_bytecode](http://en.wikipedia.org/wiki/Java_bytecode)
[http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings](http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings)
**2.2.?****設計模式**
**2.2.1.?****實現****AOP**
CGLIB和InvocationHandler的區別?[http://cglib.sourceforge.net/](http://cglib.sourceforge.net/)
動態代理模式 Javassist實現AOP?[http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
ASM實現AOP?[http://asm.ow2.org/](http://asm.ow2.org/)
**2.2.2.?****使用模板方法設計模式和策略設計模式實現****IOC**
**2.2.3.?****不用****synchronized****和****lock****,實現線程安全的單例模式**
**2.2.4\. nio****和****reactor****設計模式**
**2.2.5.?****參考資料**
[http://asm.ow2.org/](http://asm.ow2.org/)
[http://cglib.sourceforge.net/](http://cglib.sourceforge.net/)
[http://www.javassist.org/](http://www.javassist.org/)
**2.3.?****網絡編程知識**
**2.3.1\. Java RMI****,****Socket****,****HttpClient**
**2.3.2.?****用****Java****寫一個簡單的靜態文件的****HTTP****服務器**
實現客戶端緩存功能,支持返回304 實現可并發下載一個文件 使用線程池處理客戶端請求 使用nio處理客戶端請求 支持簡單的rewrite規則 上述功能在實現的時候需要滿足“開閉原則”
**2.3.3.?****了解****nginx****和****apache****服務器的特性并搭建一個對應的服務器**
[http://nginx.org/](http://nginx.org/)
[http://httpd.apache.org/](http://httpd.apache.org/)
**2.3.4.?****用****Java****實現****FTP****、****SMTP****協議**
**2.3.5.?****什么是****CDN****?如果實現?****DNS****起到什么作用?**
搭建一個DNS服務器 搭建一個 Squid 或 Apache Traffic Server 服務器?[http://www.squid-cache.org/](http://www.squid-cache.org/)
[http://trafficserver.apache.org/](http://trafficserver.apache.org/)
[http://en.wikipedia.org/wiki/Domain_Name_System](http://en.wikipedia.org/wiki/Domain_Name_System)
**2.3.6.?****參考資料**
[http://www.ietf.org/rfc/rfc2616.txt](http://www.ietf.org/rfc/rfc2616.txt)
[http://tools.ietf.org/rfc/rfc5321.txt](http://tools.ietf.org/rfc/rfc5321.txt)
[http://en.wikipedia.org/wiki/Open/closed_principle](http://en.wikipedia.org/wiki/Open/closed_principle)
**2.4.?****框架知識**
spring,spring mvc,閱讀主要源碼 ibatis,閱讀主要源碼 用spring和ibatis搭建java server
**2.5.?****應用服務器知識**
熟悉使用jboss,[https://www.jboss.org/overview/?](https://www.jboss.org/overview/)
熟悉使用tomcat,[http://tomcat.apache.org/?](http://tomcat.apache.org/)
熟悉使用jetty,[http://www.eclipse.org/jetty/](http://www.eclipse.org/jetty/)
**三、****高級篇**
**3.1.?****[編譯原理](http://www.amazon.cn/gp/product/B001NGO85I/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=importnew-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B001NGO85I "編譯原理")知識**
**3.1.1.?****用****Java****實現以下表達式解析并返回結果(語法和****Oracle****中的****select sysdate-1 from dual****類似)**
|
1
2
3
4
5
6
7
|
`sysdate`
`sysdate -` `1`
`sysdate -` `1``/``24`
`sysdate -` `1``/(``12``*``2``)`
|
**3.1.2.?****實現對一個****List****通過****DSL****篩選**
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
`QList<Map<String, Object>> mapList =` `new` `QList<Map<String, Object>>;`
`mapList.add({``"name"``:` `"hatter test"``});`
`mapList.add({``"id"``: -``1``,``"name"``:` `"hatter test"``});`
`mapList.add({``"id"``:` `0``,` `"name"``:` `"hatter test"``});`
`mapList.add({``"id"``:` `1``,` `"name"``:` `"test test"``});`
`mapList.add({``"id"``:` `2``,` `"name"``:` `"hatter test"``});`
`mapList.add({``"id"``:` `3``,` `"name"``:` `"test hatter"``});`
`mapList.query(``"id is not null and id > 0 and name like '%hatter%'"``);`
|
要求返回列表中匹配的對象,即最后兩個對象;
**3.1.3.?****用****Java****實現以下程序(語法和變量作用域處理都和****JavaScript****類似):**
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
`代碼:`
`var a =` `1``;`
`var b =` `2``;`
`var c = function() {`
`var a =` `3``;`
`println(a);`
`println(b);`
`};`
`c();`
`println(a);`
`println(b);`
`輸出:`
`3`
`2`
`1`
`2`
|
**3.1.4.?****參考資料**
http://en.wikipedia.org/wiki/Abstract_syntax_tree https://javacc.java.net/ http://www.antlr.org/
**3.2.?****操作系統知識**
Ubuntu Centos 使用linux,熟悉shell腳本
**3.3.?****數據存儲知識**
**3.3.1.?****關系型數據庫**
MySQL 如何看執行計劃 如何搭建MySQL主備 binlog是什么 Derby,H2,PostgreSQL SQLite
**3.3.2.?[NoSQL](http://blog.jobbole.com/1344/ "8種Nosql數據庫系統對比")**
Cache Redis Memcached Leveldb Bigtable HBase Cassandra Mongodb 圖數據庫 neo4j
**3.3.3.?****參考資料**
[http://db-engines.com/en/ranking](http://db-engines.com/en/ranking)
[http://redis.io/](http://redis.io/)
[https://code.google.com/p/leveldb/](https://code.google.com/p/leveldb/)
[http://hbase.apache.org/](http://hbase.apache.org/)
[http://cassandra.apache.org/](http://cassandra.apache.org/)
[http://www.mongodb.org/](http://www.mongodb.org/)
[http://www.neo4j.org/](http://www.mongodb.org/)
**3.4.?****大數據知識**
**3.4.1\. Zookeeper****,在****linux****上部署****zk**
**3.4.2\. Solr****,****Lucene****,****ElasticSearch**
在linux上部署solr,solrcloud,,新增、刪除、查詢索引
**3.4.3\. Storm****,流式計算,了解****Spark****,****S4**
在linux上部署storm,用zookeeper做協調,運行storm hello world,local和remote模式運行調試storm topology。
**3.4.4\. Hadoop****,離線計算**
Hdfs:部署NameNode,SecondaryNameNode,DataNode,上傳文件、打開文件、更改文件、刪除文件
MapReduce:部署JobTracker,TaskTracker,編寫mr job
Hive:部署hive,書寫hive sql,得到結果
Presto:類hive,不過比hive快,非常值得學習
**3.4.5.?****分布式日志收集****flume****,****kafka****,****logstash**
**3.4.6.?****數據挖掘,****mahout**
**3.4.7.?****參考資料**
[http://zookeeper.apache.org/](http://zookeeper.apache.org/)
[https://lucene.apache.org/solr/](https://lucene.apache.org/solr/)
[https://github.com/nathanmarz/storm/wiki](https://github.com/nathanmarz/storm/wiki)
[http://hadoop.apache.org/](http://hadoop.apache.org/)
[http://prestodb.io/](http://prestodb.io/)
[http://flume.apache.org/](http://flume.apache.org/)
[http://logstash.net/](http://logstash.net/)
[http://kafka.apache.org/](http://kafka.apache.org/)
[http://mahout.apache.org/](http://mahout.apache.org/)
**3.5.?****網絡安全知識**
**3.5.1.?****什么是****DES****、****AES**
**3.5.2.?****什么是****RSA****、****DSA**
**3.5.3.?****什么是****MD5****,****SHA1**
**3.5.4.?****什么是****SSL****、****TLS****,為什么****HTTPS****相對比較安全**
**3.5.5.?****什么是中間人攻擊、如果避免中間人攻擊**
**3.5.6.?****什么是****DOS****、****DDOS****、****CC****攻擊**
**3.5.7.?****什么是****CSRF****攻擊**
**3.5.8.?****什么是****CSS****攻擊**
**3.5.9.?****什么是****SQL****注入攻擊**
**3.5.10.?****什么是****Hash****碰撞拒絕服務攻擊**
**3.5.11.?****了解并學習下面幾種增強安全的技術**
http://www.openauthentication.org/
HOTP http://www.ietf.org/rfc/rfc4226.txt
TOTP http://tools.ietf.org/rfc/rfc6238.txt
OCRA http://tools.ietf.org/rfc/rfc6287.txt
http://en.wikipedia.org/wiki/Salt_(cryptography)
**3.5.12.?****用****openssl****簽一個證書部署到****apache****或****nginx**
**3.5.13.?****參考資料**
[http://en.wikipedia.org/wiki/Cryptographic_hash_function](http://en.wikipedia.org/wiki/Cryptographic_hash_function)
[http://en.wikipedia.org/wiki/Block_cipher](http://en.wikipedia.org/wiki/Block_cipher)
[http://en.wikipedia.org/wiki/Public-key_cryptography](http://en.wikipedia.org/wiki/Public-key_cryptography)
[http://en.wikipedia.org/wiki/Transport_Layer_Security](http://en.wikipedia.org/wiki/Transport_Layer_Security)
[http://www.openssl.org/](http://www.openssl.org/)
[https://code.google.com/p/google-authenticator/](https://code.google.com/p/google-authenticator/)
**四、****擴展篇**
**4.1.?****相關知識**
**4.1.1.?****云計算,分布式,高可用,可擴展**
**4.1.2.?****虛擬化**
[https://linuxcontainers.org/](https://linuxcontainers.org/)
[http://www.linux-kvm.org/page/Main_Page](http://www.linux-kvm.org/page/Main_Page)
[http://www.xenproject.org/](http://www.xenproject.org/)
[https://www.docker.io/](https://www.docker.io/)
**4.1.3.?****監控**
[http://www.nagios.org/](http://www.nagios.org/)
[http://ganglia.info/](http://ganglia.info/)
**4.1.4.?****負載均衡**
[http://www.linuxvirtualserver.org/](http://www.linuxvirtualserver.org/)
**4.1.5.?****學習使用****git**
[https://github.com/](https://github.com/)
[https://git.oschina.net/](https://git.oschina.net/)
**4.1.6.?****學習使用****maven**
[http://maven.apache.org/](http://maven.apache.org/)
**4.1.7.?****學習使用****gradle**
[http://www.gradle.org/](http://www.gradle.org/)
**4.1.8.?****學習一個小語種語言**
Groovy Scala LISP, Common LISP, Schema, Clojure R Julia Lua Ruby
**4.1.9.?****嘗試了解編碼的本質**
了解以下概念 ASCII, ISO-8859-1 GB2312, GBK, GB18030 Unicode, UTF-8 不使用 String.getBytes() 等其他工具類/函數完成下面功能
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
`public` `static` `void` `main(String[] args)` `throws` `IOException {`
`String str =` `"Hello, 我們是中國人。"``;`
`byte``[] utf8Bytes = toUTF8Bytes(str);`
`FileOutputStream fos =` `new` `FileOutputStream(``"f.txt"``);`
`fos.write(utf8Bytes);`
`fos.close();`
`}`
`public` `static` `byte``[] toUTF8Bytes(String str) {`
`return` `null``;` `// TODO`
`}`
|
想一下上面的程序能不能寫一個轉GBK的? 寫個程序自動判斷一個文件是哪種編碼
**4.1.10.?****嘗試了解時間的本質**
* 時區 & 冬令時、夏令時?[http://en.wikipedia.org/wiki/Time_zone?](http://en.wikipedia.org/wiki/Time_zone)
* [ftp://ftp.iana.org/tz/data/asia?](ftp://ftp.iana.org/tz/data/asia)
* [http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9C%8B%E6%99%82%E5%8D%80](http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9C%8B%E6%99%82%E5%8D%80)
* 閏年
* [http://en.wikipedia.org/wiki/Leap_year](http://en.wikipedia.org/wiki/Leap_year)
* 閏秒?[ftp://ftp.iana.org/tz/data/leapseconds](ftp://ftp.iana.org/tz/data/leapseconds)
* System.currentTimeMillis()?返回的時間是什么
**4.1.11.?****參考資料**
* [http://git-scm.com/](http://git-scm.com/)
* [http://en.wikipedia.org/wiki/UTF-8](http://en.wikipedia.org/wiki/UTF-8)
* [http://www.iana.org/time-zones](http://en.wikipedia.org/wiki/UTF-8)
**4.2.?****擴展學習**
**4.2.1\. JavaScript****知識**
**4.2.1.1.?****什么是****prototype**
修改代碼,使程序輸出“1 3 5”:?[http://jsfiddle.net/Ts7Fk/](http://jsfiddle.net/Ts7Fk/)
**4.2.1.2.?****什么是閉包**
看一下這段代碼,并解釋一下為什么按Button1時沒有alert出“This is button: 1”,如何修改:?[http://jsfiddle.net/FDPj3/1/](http://jsfiddle.net/FDPj3/1/)
**4.2.1.3.?****了解并學習一個****JS****框架**
jQuery ExtJS ArgularJS
**4.2.1.4.?****寫一個****Greasemonkey****插件**
http://en.wikipedia.org/wiki/Greasemonkey
**4.2.1.5.?****學習****node.js**
[http://nodejs.org/](http://jsfiddle.net/FDPj3/1/)
**4.2.2.?****學習****html5**
ArgularJS,[https://docs.angularjs.org/api](https://docs.angularjs.org/api)
**4.2.3.?****參考資料**
* [http://www.ecmascript.org/](http://www.ecmascript.org/)
* [http://jsfiddle.net/](http://jsfiddle.net/)
* [http://jsbin.com/](http://jsbin.com/)
* [http://runjs.cn/](http://runjs.cn/)
* [http://userscripts.org/](http://runjs.cn/)
**五、****推薦書籍**
《深入Java虛擬機》
《深入理解Java虛擬機》
《[Effective Java](http://www.amazon.com/gp/product/B000WJOUPA/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B000WJOUPA&linkCode=as2&tag=job0ae-20 "Effective Java")》
《七周七語言》
《七周七數據》
《Hadoop技術內幕》
《Hbase In Action》
《Mahout In Action》
《這就是搜索引擎》
《Solr In Action》
《深入分析Java Web技術內幕》
《大型網站技術架構》
《高性能MySQL》
《[算法導論](http://www.amazon.cn/gp/product/B0011BVTRK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=importnew-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0011BVTRK "算法導論")》
《[計算機程序設計藝術](http://www.amazon.cn/gp/product/B00478TO44/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=importnew-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B00478TO44 "計算機程序設計藝術")》
《[代碼大全](http://www.amazon.cn/gp/product/B0011BYWL0/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=importnew-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0011BYWL0 "代碼大全")》
《[JavaScript權威指南](http://www.amazon.cn/mn/detailApp/ref=as_li_qf_sp_asin_tl?_encoding=UTF8&tag=importnew-23&linkCode=as2&asin=B0012UMVYA&camp=536&creative=3200&creativeASIN=B0012UMVYA "JavaScript權威指南")》
- JVM
- 深入理解Java內存模型
- 深入理解Java內存模型(一)——基礎
- 深入理解Java內存模型(二)——重排序
- 深入理解Java內存模型(三)——順序一致性
- 深入理解Java內存模型(四)——volatile
- 深入理解Java內存模型(五)——鎖
- 深入理解Java內存模型(六)——final
- 深入理解Java內存模型(七)——總結
- Java內存模型
- Java內存模型2
- 堆內內存還是堆外內存?
- JVM內存配置詳解
- Java內存分配全面淺析
- 深入Java核心 Java內存分配原理精講
- jvm常量池
- JVM調優總結
- JVM調優總結(一)-- 一些概念
- JVM調優總結(二)-一些概念
- VM調優總結(三)-基本垃圾回收算法
- JVM調優總結(四)-垃圾回收面臨的問題
- JVM調優總結(五)-分代垃圾回收詳述1
- JVM調優總結(六)-分代垃圾回收詳述2
- JVM調優總結(七)-典型配置舉例1
- JVM調優總結(八)-典型配置舉例2
- JVM調優總結(九)-新一代的垃圾回收算法
- JVM調優總結(十)-調優方法
- 基礎
- Java 征途:行者的地圖
- Java程序員應該知道的10個面向對象理論
- Java泛型總結
- 序列化與反序列化
- 通過反編譯深入理解Java String及intern
- android 加固防止反編譯-重新打包
- volatile
- 正確使用 Volatile 變量
- 異常
- 深入理解java異常處理機制
- Java異常處理的10個最佳實踐
- Java異常處理手冊和最佳實踐
- Java提高篇——對象克隆(復制)
- Java中如何克隆集合——ArrayList和HashSet深拷貝
- Java中hashCode的作用
- Java提高篇之hashCode
- 常見正則表達式
- 類
- 理解java類加載器以及ClassLoader類
- 深入探討 Java 類加載器
- 類加載器的工作原理
- java反射
- 集合
- HashMap的工作原理
- ConcurrentHashMap之實現細節
- java.util.concurrent 之ConcurrentHashMap 源碼分析
- HashMap的實現原理和底層數據結構
- 線程
- 關于Java并發編程的總結和思考
- 40個Java多線程問題總結
- Java中的多線程你只要看這一篇就夠了
- Java多線程干貨系列(1):Java多線程基礎
- Java非阻塞算法簡介
- Java并發的四種風味:Thread、Executor、ForkJoin和Actor
- Java中不同的并發實現的性能比較
- JAVA CAS原理深度分析
- 多個線程之間共享數據的方式
- Java并發編程
- Java并發編程(1):可重入內置鎖
- Java并發編程(2):線程中斷(含代碼)
- Java并發編程(3):線程掛起、恢復與終止的正確方法(含代碼)
- Java并發編程(4):守護線程與線程阻塞的四種情況
- Java并發編程(5):volatile變量修飾符—意料之外的問題(含代碼)
- Java并發編程(6):Runnable和Thread實現多線程的區別(含代碼)
- Java并發編程(7):使用synchronized獲取互斥鎖的幾點說明
- Java并發編程(8):多線程環境中安全使用集合API(含代碼)
- Java并發編程(9):死鎖(含代碼)
- Java并發編程(10):使用wait/notify/notifyAll實現線程間通信的幾點重要說明
- java并發編程-II
- Java多線程基礎:進程和線程之由來
- Java并發編程:如何創建線程?
- Java并發編程:Thread類的使用
- Java并發編程:synchronized
- Java并發編程:Lock
- Java并發編程:volatile關鍵字解析
- Java并發編程:深入剖析ThreadLocal
- Java并發編程:CountDownLatch、CyclicBarrier和Semaphore
- Java并發編程:線程間協作的兩種方式:wait、notify、notifyAll和Condition
- Synchronized與Lock
- JVM底層又是如何實現synchronized的
- Java synchronized詳解
- synchronized 與 Lock 的那點事
- 深入研究 Java Synchronize 和 Lock 的區別與用法
- JAVA編程中的鎖機制詳解
- Java中的鎖
- TreadLocal
- 深入JDK源碼之ThreadLocal類
- 聊一聊ThreadLocal
- ThreadLocal
- ThreadLocal的內存泄露
- 多線程設計模式
- Java多線程編程中Future模式的詳解
- 原子操作(CAS)
- [譯]Java中Wait、Sleep和Yield方法的區別
- 線程池
- 如何合理地估算線程池大小?
- JAVA線程池中隊列與池大小的關系
- Java四種線程池的使用
- 深入理解Java之線程池
- java并發編程III
- Java 8并發工具包漫游指南
- 聊聊并發
- 聊聊并發(一)——深入分析Volatile的實現原理
- 聊聊并發(二)——Java SE1.6中的Synchronized
- 文件
- 網絡
- index
- 內存文章索引
- 基礎文章索引
- 線程文章索引
- 網絡文章索引
- IOC
- 設計模式文章索引
- 面試
- Java常量池詳解之一道比較蛋疼的面試題
- 近5年133個Java面試問題列表
- Java工程師成神之路
- Java字符串問題Top10
- 設計模式
- Java:單例模式的七種寫法
- Java 利用枚舉實現單例模式
- 常用jar
- HttpClient和HtmlUnit的比較總結
- IO
- NIO
- NIO入門
- 注解
- Java Annotation認知(包括框架圖、詳細介紹、示例說明)