ajian005
对
Thinking in Java
的书评
发表时间:2011-05-28 22:05:34
博学,审问、慎思、明辨、笃行
读实用书时要提出的四个问题:
(1)整体来说,这本书到底在谈些什么?big what? 并没有改变多少。
(2)作者细部说了什么,怎么说的? small what? how?
(3)这本书说得有道理吗? 是全部有道理,还是部分有道理?why?
作者最终的目标,加上他建议的达成目标的方法--这要看你认为追求的是什么,以及什么才是最好的追求方法而定。
在什么范围,什么条件下适用,在什么范围,什么条件下不适用。要知道它能做什么,它不能做什么
(4)这本书跟你有什么关系? 理论联系实际
赞同一本实用性的书,确实需要你采取行动。 照着作者希望你做的方式来行动。How
行动:为达到某种目的而进行的活动。行动目标,行动方法,行动开始时间,结束时间,行动人,行动地点,行动方式。
学车/骑自行车:理论就是要做题,实践:就是要上车操练。
武术:主要是实践
厨艺:理论就是看菜谱,实践:按菜谱买菜,配菜,实际炒菜,品尝,调整
木匠/铁匠/建筑师:设计、实践,调整,在设计,在实践。
美容美发:
装修
裁剪
编程/软件工程/建筑工程在道的层次上很相近
最忌讳:1 没有目标/提不出问题,没有时间和资源限制,自己太放松,要有适当的紧迫感和压力感
2 重“看书”,轻“提问题,思考,讨论,实践” 有没有收获 关键看思考的深度是否能够表达出来,实践出的东西是否是可见的,并基于这个一个原型反馈不断改进
1 什么是容器?容器做什么用的? java容器放在内存中还是放在外存中呢?java如何使用内存的或内存管理?java有几种类型的容器,每一种容器主要做什么用途呢?
2 每一节说了什么,怎么说的?
3 这一章说的有道理吗? 是全部有道理,还是部分有道理? why要用容器?
4 这一章跟自己有什么关系?
赞同一本实用性的书,确实需要你采取行动。 照着作者希望你做的方式来行动。How
连接网络、连接数据库、读写文件、Spring、Hibernate、Struts启动过程中如何读写文件的呢?
计算机启动顺序及原理是什么?OS(Linux/Windows)启动加载原理是什么? DB(Oracle/Mysql)启动加载原理是什么? 应用服务器(Tomcat)启动原理?JVM启动原理?应用程序启动原理是什么?
实际操作(编写代码),做实验。
编程与开车,厨艺 有想通的地方,理论指导,以实践为主。
没做练习题:(3)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)(16)(17)-(26)(27)(28)(29)(30)(31)()
本章涉及到得算法和数据结构:数据结构 数组、栈、队列、链表、递归、红黑-树、哈希表(但没包括图,串结构在String中):Array/List/Set/Queue/Map/......
(内存的)排序、查找:Arrays和Collections(但没包含外存排序、查找) 理清数据结构特性和算法思想从而可以帮助较好的使用
本章涉及到得编程思想及设计模式: 迭代器模式Iterator、适配器模式
本章涉及到比较好的工具:net.mindview.util.Stack
本章设计到得计算机理论知识:java内存管理
能力级别:不会(了解)——领会(理解)——熟练——精——通(融汇贯通)
第11章持有对象(容器基础研究) (研习:1 掌握层次:熟练)P252 练习参考P199
容器(数据结构):数组、List(按着插入的顺序保持元素)、Set(对于每个值只保留一个对象)、Queue(队列)和Map(某些对象与其他一些对象关联起来的关联数组)
11.1 泛型和类型安全的容器(研习:1 掌握层次:)P252
通过使用泛型,不仅知道编译器将会检查你放置到容器中的对象类型,而且在使用容器中的对象时,可以使用更加清晰的语法。
11.2 基本概念(研习:1 掌握层次:熟练)P255
Java容器类按用途划分两个不同的概念:
1)Collection:一个独立元素的序列,包含List(ArrayListLinkedList)、Set、Queue
2) Map: 键值对
11.3 添加一组元素(研习:1 掌握层次:熟练)P256
11.4 容器的打印(研习:1 掌握层次:熟练)P257
List(ArrayListLinkedList)、
Set(HashSet(最快的查找技术)TreeSet(按着结果升序排序)和LinkedHashSet(按着插入的顺序保持对象))、
Map(HashMap(最快的查找技术)TreeMap(按着结果升序排序)和LinkedHashMap(按着插入顺序保存键)同时还保留了HashMap的查询速度),就像一个简单的数据库。
11.5 ListP259
ArrayList:擅长随机访问元素,但在ArrayList的中间插入和删除元素时较慢。
LinkedList:在中间插入和删除元素快,顺序访问快,但随机访问相对比较慢。
11.6 迭代器P262
11.7 LinkedListP264
11.8 StackP266
11.9 Set P267
Set不保存重复的元素,Set具有与Collection完全一样的接口,没有任何额外的功能。实际上Set就是Collection只是行为不同。
Set是基于对象的值来确定归属性的。
HashSet 哈希算法,查询时间时间复杂度为:O(1)
TreeSet 将元素存储在红-黑树数据结构中,而HashSet是用的是散列函数。LinkedHashList也用了散列,维护了元素的插入顺序。
11.10Map P269
11.11QueueP272
LinkedList支持队列的行为,并且它实现了Queue接口。
11.11.1 PriorityQueue 队列规则
11.12Collection和IteratorP275
11.13Foreach与迭代器P277
11.14总结P281