博学,审问、慎思、明辨、笃行
读实用书时要提出的四个问题:
(1)整体来说,这本书到底在谈些什么?big what? 并没有改变多少。
(2)作者细部说了什么,怎么说的? small what? how?
(3)这本书说得有道理吗? 是全部有道理,还是部分有道理?why?
作者最终的目标,加上他建议的达成目标的方法--这要看你认为追求的是什么,以及什么才是最好的追求方法而定。
在什么范围,什么条件下适用,在什么范围,什么条件下不适用。要知道它能做什么,它不能做什么
(4)这本书跟你有什么关系? 理论联系实际
赞同一本实用性的书,确实需要你采取行动。 照着作者希望你做的方式来行动。How
不断操练身体和头脑,首先从不会到会、其次由会到熟练、再其次熟练到精,最后由精到通(融汇贯通),举一反三,触类旁通,
行动:为达到某种目的而进行的活动。行动目标,行动方法,行动开始时间,结束时间,行动人,行动地点,行动方式。
完全扔掉书,进行实践。
如学车:刚开始不会按着书和师傅指令动作比较慢而且经常出现错误练习着,在不停的训练过程中动作越来越快、错误越来越少进入半会不会的状态;
然后提高训练标准再继续操练,偶尔会犯点小错误,基本上不会犯大错误,进入会开状态,但不熟练;
然后继续加强操练,经过一段时间有意识的操练,慢慢地开始熟练了,能够上路上跑了初步达到初级驾驶员(拿到证),
再然后在路上继续练习,能够处理在各种异常情况,而且又快又好的在路上行驶,初步达到中级驾驶员的层次(在路上跑个1-2年,在各种汽车比赛中成绩比较好)
最后,在精的层次上继续操练、思考能够将驾驶技术方法迁移到其他领域:如学游泳、学骑自行车、学烹饪、学裁缝等就达到通(学)的层次。(需要多年的实践、思考、领悟)
学车/骑自行车:理论就是要做题,实践:就是要上车操练。
武术:主要是实践
厨艺:理论就是看菜谱,实践:按菜谱买菜,配菜,实际炒菜,品尝,调整
木匠/铁匠/建筑师:设计、实践,调整,在设计,在实践。
美容美发:
装修
裁剪
编程/软件工程/建筑工程在道的层次上很相近
最忌讳:1 没有目标/提不出问题,没有时间和资源限制,自己太放松,要有适当的紧迫感和压力感
2 重“看书”,轻“提问题,思考,讨论,实践” 有没有收获 关键看思考的深度是否能够表达出来,实践出的东西是否是可见的,并基于这个一个原型反馈不断改进
1 什么是容器?容器做什么用的? java容器放在内存中还是放在外存中呢?java有几种类型的容器,每一种容器主要做什么用途呢?
2 每一节说了什么,怎么说的?
3 这一章说的有道理吗? 是全部有道理,还是部分有道理? why要用容器?
4 这一章跟自己有什么关系?
赞同一本实用性的书,确实需要你采取行动。 照着作者希望你做的方式来行动。How
连接网络、连接数据库、读写文件、Spring、Hibernate、Struts启动过程中如何读写文件的呢?
计算机启动顺序及原理是什么?OS(Linux/Windows)启动加载原理是什么? DB(Oracle/Mysql)启动加载原理是什么? 应用服务器(Tomcat)启动原理?JVM启动原理?应用程序启动原理是什么?
实际操作(编写代码),做实验。
编程与开车,厨艺 有想通的地方,理论指导,以实践为主。
能力级别:不会(了解)——领会(理解)——熟练——精(why)——通(融汇贯通)
练习题没做:(8)(10)(16)(17)(18)(26)(27)(28) - (42)
本章涉及到得算法和数据结构:数据结构 数组、栈、队列、链表、递归、红黑-树、哈希表(但没包括图,串结构在String中):Array/List/Set/Queue/Map/......
(内存的)排序、查找:Arrays和Collections(但没包含外存排序、查找) 理清数据结构特性和算法思想从而可以帮助较好的理解和使用
本章涉及到得编程思想及设计模式:迭代器模式Iterator、CollectionData是适配器设计模式的一个实例、生成器模式、享元模式、模板方法
本章涉及到比较好的工具:net.mindview.util.Stack
本章设计到得计算机理论知识:java内存管理
第17章容器深入研究 (研习:掌握层次:)P495 课后练习在P427
17.1 完整的容器分类法(研习:1掌握层次:领会)P495
Java SE5新添加了:
Queue接口及其实现PriorityQueue和各种风格的BlockingQueue,其中BlockingQueue将在第21章中介绍
ConcurrentMap接口及其实现ConcurrentHashMap,它们也是用于多线程机制的,在第21章中介绍
CopyOnWriteArrayList和CopyOnWriteArraySet,也是用于多线程机制的。
EnumSet和EnumMap,为使用enum而设计的Set和Map的特殊实现,在19章介绍
在Collections类中的多个便利方法。
17.2 填充容器(研习:1掌握层次:领会)P496
17.2.1 一种Generator解决方案P497
17.2.2 Map生成器P498
17.2.3 使用Abstract类
17.3 Collection的功能方法(研习:1掌握层次:领会)P506
17.4 可选操作(研习:1掌握层次:领会)P508
17.4.1 未获支持的操作:
Arrays.asList():返回固定尺寸的List, 抛出UnsupportedOperationExcepton
Collections.unmodifiableList():产生不可修改的列表。目标是产生“常量”容器对象。 抛出UnsupportedOperationExcepton
17.5 List的功能方法(研习:1掌握层次:领会)P511
17.6 Set和存储顺序(研习:1掌握层次:领会)P513
Set(interface):实现equals()方法以确保对象的唯一性。
HashSet和LinkedHashSet: 对存入HashSet的元素必须定义hashCode()
TreeSet:保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。元素必须实现Comparable接口。
对于良好的编程风格而言,你应该在覆盖equals()方法时,总是同时覆盖hashCode方法。
一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。
Comparator可以看成一种算法的实现,将算法和数据分离,Comparator也可以在下面两种环境下使用:
1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身
2、可以使用多种排序标准,比如升序、降序等
17.6.1 SortedSet
17.7 队列(Queue)(研习:1掌握层次:领会)P516
除了并发应用,Queue在JavaSE5中仅有的两个实现是LinkedList和PriorityQueue,差别是在于排序行为而不是性能。
17.7.1 优先级队列
17.7.2 双向队列P518
17.8 理解Map(研习:1掌握层次:领会)P519
基本思想是它维护的是键-值(对)关联,可以使用键来查找值。
标准的Java类库中包含了Map的几种基本实现,包括:HashMap(效率), TreeMap(键值对的保存及呈现次序), LinkedHashMap, WeakHashMap,ConcurrentHashMap(并发),IdentityHashMap.
17.8.1 性能P520
ConcurrentHashMap 一种线程安全的Map, 它不涉及同步加锁。
17.8.2 SortedMapP522
SortedMap现阶段的唯一实现是TreeMap,可确保键处于排序状态
17.8.3 LinkedHashMap
17.9 散列与散列码P524
自定义对象作为HashMap的键时,要重载自定义对象的hashCode()和equals()方法,否则内存地址不同的两个自定义对象将作为2个不同的键
17.9.1 理解hashCode()(研习:1掌握层次:不会)P526
17.9.2 为速度而散列P528 练习题P454
查询一个值得过程:首先是计算散列码,然后使用散列码查询数组,最后在该数组位置的list中使用equals()方法进行线性的查询,将结果返回。
17.9.3 覆盖hashCode()(研习:1掌握层次:领会)P531
17.10 选择接口的不同实现(研习:1掌握层次:走马观花)P535
17.10.1 性能测试框架
17.10.2 对List的选择
17.10.3 微基准测试的危险P543
17.10.4 对Set的选择
17.10.5 对Map的选择P545
17.11 使用方法(研习:1掌握层次:走马观花)P548
17.11.1 List的排序和查询
17.11.2 设定Collection或Map为不可修改P552
17.11.3 Collection或Map的同步控制
17.12 持有引用(研习:1掌握层次:没看明白)P554
17.12.1 WeakHashMap p555
17.13 Java 1.0/1.1的容器(研习:1掌握层次:没看明白)(历史遗留问题)P556
17.13.1 Vector和Enumeration
17.13.2 Hashtable
17.13.3 Stack
17.13.4 BitSet
17.14 总结P560
第17章容器深入研究--java编程思想中文第四版
《Thinking in Java》热门书评
-
《Java编程思想》阅读指南
223有用 8无用 Yuguo 2008-09-23
文:@yuguo//08年9月26日更新终于决定为这本心目中五星的书籍写一篇评论,因为目前的普遍舆论对这本书有一些误读,这些误读可能会误导初学者。我只想尽量客观的提出自己的观点,也许这不太可能,因为我认为这本书是五星的,那么多少我会作者持有偏好。那么请花一些时间阅读本书,也许你也会喜欢上Bruce ...
-
写给没有基础却想干JAVA的学弟学妹
72有用 0无用 BAY 2014-04-27
如题。。先分享三句话。“《Java编程思想》这本书很好,但还不适合你们现在去读,在合适的时候做合适的事,OK?”一心想速成的我并没有把教学视频中的这句小插曲放在心上,只是依稀记住了这本书。。然后快乐地学着速成JAVA。“你学这些框架,做这种项目有什么用?你知道大连软件园(外包公司居多)里有多少人写得...
-
基础?
54有用 16无用 学习机器人 2010-09-18
我it行业工作10年,这本书我读了8遍,对于那些一遍都读不下来的,一张口要8K-15K的程序员来说,你真的认为你值那么多,坑爹呢吧Update:以上是过去的一些评论,那时的认知还存在偏差,而且有些激进。其实,读书是为了超越自己,而非凌驾于某人之上,更没有资格对任何人、任何现象妄加评论。如果重新评论应...
-
不适合初学者
44有用 10无用 oya.aya 2006-04-07
很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识...
-
初级程序员读书方法论
33有用 1无用 hossN 2011-05-13
这本书购于去年七月,八百多页。纸张大,印刷密度大,不到600页的《C++ Primer》就够厚了,这本更是让人望而生畏。我本专业并不是软件开发,属于半道出家,一提程序就头疼,去年买了这本书后就束之高阁,直到今年年初认为本来程序就烂,买了书还不读,再这么下去就是自取灭亡,于是制定了详细的读书计划,每天...
书名: Thinking in Java
作者: [美] Bruce Eckel
出版社: Prentice Hall
出版年: 2006-2-20
页数: 1150
定价: USD 74.99
装帧: Paperback
ISBN: 9780131872486