第一卷 生存法则

第1章 知己知彼,百战不殆

1.1 问题1:这个职业赚钱吗?赚多少钱
      1.1.1 修炼第一层境界:剑指四方,试问天下谁与争锋 
      1.1.2 修炼第二层境界:世界如此之大,要学的东西很多 
      1.1.3 修炼第三层境界:最深即最浅,最浅即最深,不过如此 
      1.1.4 点评“修炼三层境界” 
      1.1.5 回答这个问题 
1.2 问题2:大学毕业生找不到职业入口 
      1.2.1 工作经验都是什么经验 
      1.2.2 他们为什么面试的时候这么问? 
      1.2.3 程序员的笔试 
      1.2.4 回答这个问题 
1.3 问题3:跨行业真的这么难吗? 
      1.3.1 跨行业最难的是什么 
      1.3.2 跨行业的入口——原来从事行业的业务知识 
      1.3.3 农民造出了飞机,为什么他还是农民 
      1.3.4 回答这个问题 
1.4 秘诀:经营自己的优势 
      1.4.1 善于发掘和积累自己的优势 
      1.4.2 善于展示与利用自己的优势 
      1.5 点评“经营自我”

第2章 软件开发职业的误区

2.1 误区1:软件开发职业是青春饭 
      2.1.1 不必为30岁以后烦恼 
      2.1.2 30岁以后照样可以编程序 
      2.1.3 50多岁的程序员多的是 
      2.1.4 点评“青春饭” 
2.2 误区2:做软件开发必须要加班熬夜的工作 
      2.2.1 程序员们熬夜工作的借口 
      2.2.2 常态加班的危害 
      2.2.3 控制好工作的一日时间表才是关键 
      2.2.4 “偏执与狂热”不等于加班加点 
      2.2.5 程序员的大脑与第二大脑 
      2.2.6 点评“加班熬夜” 
2.3 误区3:开发一个软件产品一定是集团作战 
      2.3.1 几百人的公司其他人都在干什么 
      2.3.2 需要较全的人员配置的项目 
      2.3.3 坚信,只要是“人”做到的我就能做到 
      2.3.4 点评“集团作战” 
2.4 误区4:程序员不是一般人 
      2.4.1 程序员的与众不同与平凡 
      2.4.2 程序员们就是一般人 
      2.4.3 点评“一般人” 
2.5 误区5:存在“软件蓝领”岗位 
      2.5.1 “软件蓝领”是个“美梦” 
      2.5.2 “让程序员放弃思考?”是个“噩梦” 
      2.5.3 软件开发流程“理想”的“不理想” 
      2.5.4 “软件蓝领概念”忽略的东西 
      2.5.5 现实中的软件开发团队 
      2.5.6 点评“拧螺丝” 
2.6 关于误区 

第3章 程序员的“菜鸟心态综合症”

3.1 症状1:指望着公司里有一个老师 
      3.1.1 临床表现 
      3.1.2 治疗1:弄明白她为什么辞职 
      3.1.3 治疗2:理解公司的本质是什么 
      3.1.4 治疗3:要搞清楚你的主管是你的老板,他绝对不是你的老师 
3.2 症状2:不知道怎么让自己前进 
      3.2.1 临床表现 
      3.2.2 治疗1:你只管低着头上山,暂时不要向山上看 
      3.2.3 治疗2:明知山有虎,偏向虎山行 
      3.2.4 治疗3:没有过不去的火焰山 
      3.2.5 治疗4:虚心使人进步,骄傲自满要不得 
3.3 症状3:想做圈养的羊,不想做野生的狼 
      3.3.1 临床表现 
      3.3.2 治疗1:理解“丛林法则”生存的法则 
      3.3.3 治疗2:向掠食动物学习如何生存 
3.4 症状4:缺乏自信,总对自己说No 
      3.4.1 临床表现 
      3.4.2 治疗1:生活取决于自己 
      3.4.3 治疗2:找到通往高楼的那扇门 
      3.4.4 治疗3:逐个排除你恐惧的理由 
3.5 症状5:缺少幸福感,内心总在跳跃 
      3.5.1 临床表现 
      3.5.2 治疗1:比一比到底谁最幸福 
      3.5.3 治疗2:要努力进取也要找到幸福的理由 
3.6 症状6:困兽心态,焦躁与不安 
      3.6.1 临床表现 
      3.6.2 治疗1:像猴子一样生活 
      3.6.3 治疗2:多和团队成员沟通 
3.7 症状7:缺少感激心,心存感激让你受益匪浅 
      3.7.1 临床表现 
      3.7.2 治疗1:心存感激不等于低人一等 
      3.7.3 治疗2:首先应该对你的领导心存感激 
      3.7.4 真心换真心 
3.8 症状8:不知道什么是“团队合作” 
      3.8.1 临床表现 
      3.8.2 治疗1:分析在公司上班的三个目标 
      3.8.3 治疗2:团队合作——就是团队主管的目标 
3.9 点评“心态” 
 
第4章 换位思考,项目主管的招聘技巧 
 
4.1 招聘就像大海捞针 
4.2 技巧1:是否有独立完成项目的经验 
      4.2.1 独立完成一个项目的经验是什么经验 
      4.2.2 没有独立生存的能力不能有最佳团队合作 
      4.2.3 测试手段 
      4.2.4 锻炼攻略:需要主动寻找独立工作的机会 
4.3 技巧2:是否有独立解决问题的能力 
      4.3.1 见招拆招的能力
      4.3.2 程序员的韧性 
      4.3.3 测试手段 
      4.3.4 锻炼攻略:训练创意思维 
4.4 技巧3:评价程序员的思考方式 
      4.4.1 一切皆程序 
      4.4.2 找到规律 
      4.4.3 锻炼攻略:抓住中心把复杂的事情变简单 
4.5 点评“换位思考” 
 
第5章 程序员,保持你前进的步伐 
 
5.1 程序员前进的四个阶段 
      5.1.1 第一阶段,找到一个编程语言去入门 
      5.1.2 第二阶段,用所这门语言去分析和推理 
      5.1.3 第三个阶段,新知识新技术的积累 
      5.1.4 第四个阶段,大道无形 
5.2 学习与积累 
      5.2.1 找到好书,相当于找到一个好老师 
      5.2.2 每本书都没有从头看到尾是不是等于不用功? 
      5.2.3 学会建立沉淀目录 

第二卷 制胜法宝
 
第6章 Java程序员的七种武器 
 
6.1 武器1:编程IDE开发工具 
      6.1.1 Team Leader的嗜好 
      6.1.2 什么功能是程序员最需要的 
      6.1.3 下面这些IDE你都用得到 
      6.1.4 点评“开发工具” 
6.2 武器2:数据库系统 
      6.2.1 广告与市场的力量 
      6.2.2 不要盲目选择数据库,根据用途选择合适的数据库 
      6.2.3 以下这些数据库绝不能仅仅是“眼熟” 
      6.2.4 研究一下JDBC源程序 
      6.2.5 不熟悉数据库就会“绕远” 
      6.2.6 点评“真相” 
6.3 武器3:Web服务器软件 
      6.3.1 Web服务器是如何工作的 
      6.3.2 支持JSP的Web服务器的原理 
      6.3.3 常用的WebServer 
      6.3.4 研究一下Web Server的源程序 
      6.3.5 点评“深入研究” 
6.4 武器4:操作系统 
      6.4.1 让我们看看这个招聘启事 
      6.4.2 Java程序员为什么需要研究操作系统 
      6.4.3 我们应该更关心操作系统的哪些方面 
      6.4.4 哪些操作系统我们要重点关注 
      6.4.5 点评“Linux” 
6.5 武器5:编程语言 
      6.5.1 Java程序员只会Java语言行吗 
      6.5.2 各个编程语言的特长 
      6.5.3 点评“第二门语言” 
6.6 武器6:辅助设计工具 
      6.6.1 UML图设计工具 
      6.6.2 常用UML设计工具
      6.6.3 UML要“灵活”的掌握 
6.7 武器7:版本控制工具 
      6.7.1 工作原理 
      6.7.2 常用版本控制工具 
      6.7.3 融入团队的开发氛围 
6.8 点评“武器” 
 
第7章 破除Java开发中的封建迷信
 
7.1 迷信1:Java占内存到底大不大 
      7.1.1 测试一:让程序去裸奔 
      7.1.2 测试二:针尖对麦芒 
      7.1.3 让人不再“迷信”的测试结果 
      7.1.4 先天与后天 
7.2 迷信2:Java和C到底谁快 
      7.2.1 测试一:让程序转起来 
      7.2.2 测试二:读取个大文件吧 
      7.2.3 测试三:内存处理的速度 
      7.2.4 测试结果分析 
      7.2.5 也不要过于迷信C语言 
      7.2.6 Java语言与C语言之间的应用比较 
7.3 迷信3:Java就等于JSP吗 
      7.3.1 一个面试的现象 
      7.3.2 JSP开发时间长了的误解 
      7.3.3 Java的纯真年代 
      7.3.4 Java绝对不等于JSP 
      7.3.5 努力保持一个纯真的心态 
      7.3.6 点评“纯真” 
7.4 迷信5:C/S与B/S相比一无是处 
      7.4.1 B/S是一个很好的创意
      7.4.2 B/S程序本身也是一个C/S程序 
      7.4.3 C/S程序的优势——速度 
      7.4.4 C/S程序的应用领域 
7.5 迷信6:J2EE的开发必须用EJB 
      7.5.1 EJB真人真事 
      7.5.2 我们不禁要问,什么是“服务集群”?什么是“企业级开发”? 
      7.5.3 把EJB掰开了揉碎了 
      7.5.4 EJB的最底层究竟是什么 
      7.5.5 EJB中所谓的“服务群集” 
      7.5.6 这种部署难道是无懈可击 
      7.5.7 EJB活学活用,J2EE不是必须使用EJB 
      7.5.8 “技术”不是神,不要动不动就“崇拜” 
7.6 点评“迷信” 
 
第8章 揭秘中大型应用系统 
 
8.1 何谓“中大型应用系统”? 
8.2 无法学习与模拟
 
8.3 资深程序员的“经验” 
8.4 为什么要熟悉系统的运行环境 
8.5 带你进机房里去看看硬件设备
 
      8.5.1 机房的基本情况 
      8.5.2 “U”的概念 
      8.5.3 机房中的设备 
      8.5.4 在机房里我们发现了什么 
8.6 安全与效率——永恒的主题 
      8.6.1 绝对安全是不存在的 
      8.6.2 RAID 
      8.6.3 负载均衡 
      8.6.4 双机、集群的配置模式 
      8.6.5 网络流量与速率 
      8.6.6 带宽 
8.7 一个软硬件部署方案实例 
8.8 点评“经验” 
 
第9章 为什么要学习用框架开发 
 
9.1 学习框架是因为它“火” 
9.2 使用框架开发的好处 
      9.2.1 框架的目的是简化编程工作 
      9.2.2 框架是一个应用程序的半成品 
      9.2.3 框架的好处是代码重用 
9.3 框架不仅仅只有“SSH” 
      9.3.1 WebWork 
      9.3.2 EasyJWeb 
      9.3.3 Click 
      9.3.4 JBlooming 
9.4 用框架的思想去“自由思考” 
9.5 自己也可以试着做一个 
      9.5.1 先看看不用框架怎么编写程序 
      9.5.2 从应用程序中找到共性的东西 
      9.5.3 我们试着做一个最简单的框架
      9.5.4 有了这个框架开发工作被简化
9.6 点评“自由思考”
第三卷 达人策略 
 
第10章 高手有多高菜鸟有多菜
 
10.1 五年工作经验的“菜鸟” 
10.2 高手是怎样炼成的 
      10.2.1 修炼1:Java悟道 
      10.2.2 修炼2:关注程序的品质 
      10.2.3 修炼3:“技术”与“技巧”都很重要 
      10.2.4 修炼4:走入Java的底层程序开发 
      10.2.5 修炼5:从Worker到Maker 
10.3 点评“高手有多高,菜鸟有多菜” 
 
第11章 控制内存的功力 
 
11.1 别指望Java和内存无关 
11.2 容易被搞晕的——堆和栈
 
      11.2.1 堆——用new建立,垃圾自动回收负责回收 
      11.2.2 栈——存放基本数类型,速度快 
      11.2.3 何谓栈的“数据共享” 
      11.2.4 实例化对象的两种方法 
11.3 内存控制心中有数 
      11.3.1 两个读取内存信息函数 
      11.3.2 开发Java程序内存看的见 
      11.3.3 必须要介绍的虚拟机的参数“-Xmx” 
11.4 内存控制效率优化的启示 
      11.4.1 启示1:String和StringBuffer的不同之处 
      11.4.2 启示2:用“-Xmx”参数来提高内存可控制量 
      11.4.3 启示3:二维数组比一维数组占用更多内存空间 
      11.4.4 启示4:用HashMap提高内存查询速度 
      11.4.5 启示5:用“arrayCopy()”提高数组截取速度 
11.5 内存垃圾回收问题 
      11.5.1 什么是内存垃圾,哪些内存符合垃圾的标准 
      11.5.2 JVM垃圾回收的相关知识 
11.6 点评“功力” 
 
第12章 产品和项目是程序员永恒的主题 
 
12.1 什么是项目,什么是产品 
      12.1.1 “产品”的定义 
      12.1.2 “项目”的定义 
      12.1.3 “产品”和“项目”的区别 
12.2 软件产品开发是“艺术” 
      12.2.1 软件产品开发需要灵感 
      12.2.2 程序作品是你的一个传世的艺术作品 
      12.2.3 软件产品开发需要“前瞻性” 
12.3 软件项目开发是“军事行动” 
      12.3.1 开发者就是这个程序的“三军统帅” 
      12.3.2 “项目”开发需要“运筹帷幄” 
      12.3.3 项目控制,一艘船的故事 
      12.3.4 点评“军事行动” 
 
第13章 非技术知识对工作的辅助 
 
13.1 辅助1:“英语”不需要专业,因为它只是工具 
      13.1.1 英语与编程序无关 
      13.1.2 用英语可以看一些英文文档 
      13.1.3 掌握基本的工作交流时的英语词汇 
13.2 辅助2:“Google”不是万能的,但不会用万万不能 
      13.2.1 在网页标题中搜索关键字:intitle 
      13.2.2 在特定站点中搜索关键字:site 
      13.2.3 在url链接中搜索关键字:inurl 
      13.2.4 精确匹配搜索:双引号 
      13.2.5 搜索结果中不希望含某特定查询词:减号 
13.3 辅助3:程序员的常用文档写作 
      13.3.1 程序员在软件开发过程中需要提交的文档 
      13.3.2 程序员在日常工作中需要提交的文档 
13.4 点评“非技术” 
 
第14章 结束语