走上It之路

710 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
710
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

走上It之路

  1. 1. ⾛走向IT之路 谢凌(David Xie) david.scriptfan@gmail.comSaturday, 27 October, 12
  2. 2. 何为IT之路? • 无休止的编程? • 开发人员都是屌丝? • 永远没有出路?Saturday, 27 October, 12
  3. 3. 如何学习编程? • 英语. 第一步永远是英语 • 基础. 计算机组成原理, 编译原理 • 工具. 语言, 数据库, 服务器 • 协议. 食物链的顶层Saturday, 27 October, 12
  4. 4. 如何编程?Saturday, 27 October, 12
  5. 5. • 会写代码就可以了吗? • 能写出工作的代码就可以了吗? • 能完成任务就可以了吗?Saturday, 27 October, 12
  6. 6. 远远不够!Saturday, 27 October, 12
  7. 7. 1. 选择⼀一个操作系统Saturday, 27 October, 12
  8. 8. 操作系统 • Windows • Linux • Mac OS XSaturday, 27 October, 12
  9. 9. 选个⼀一个Linux/Unix吧!Saturday, 27 October, 12
  10. 10. 有很多选择 • Ubuntu/Debian • Fedora/CentOS • OpenSUSE • ArchLinux • Gentoo • FreeBSDSaturday, 27 October, 12
  11. 11. kernel • 什么是kernel • kernel能干什么 • 如何编译kernelSaturday, 27 October, 12
  12. 12. 操作系统原理Saturday, 27 October, 12
  13. 13. • 内存管理 • 进程管理 • I/O管理 • 设备管理 • 文件系统管理Saturday, 27 October, 12
  14. 14. 最好的选择 FreeBSD • 学院派 • 质量高 • 代码严谨 • 性能好Saturday, 27 October, 12
  15. 15. 2. 选择⼯工具Saturday, 27 October, 12
  16. 16. 编程语⾔言Saturday, 27 October, 12
  17. 17. 写在选择之前 • 不要参与语言之争 • 了解语言的特性 • 了解语言的应用场景 • 不是有了锤子后, 眼里都是钉子Saturday, 27 October, 12
  18. 18. 语⾔言 • C • C++ • Java • Python • Ruby • PHP • ......Saturday, 27 October, 12
  19. 19. 数据结构 • 数组 • 队列 • 树 • 链表 • 图Saturday, 27 October, 12
  20. 20. 算法 • 排序 • 寻址 • 最优解 • ...Saturday, 27 October, 12
  21. 21. ⾯面向对象 • 封装 • 继承 • 复用Saturday, 27 October, 12
  22. 22. 设计模式 • KISS (Keep It Simple, Stupid) • DRY (Don’t Repeat Yourself) • 23个设计模式 • 工厂, 单例, 适配器, 观察者....Saturday, 27 October, 12
  23. 23. 推荐⼀一本书Saturday, 27 October, 12
  24. 24. 数据库Saturday, 27 October, 12
  25. 25. 有哪些数据库 • Oracle • MS SQL Server • MySQL • PostgreSQL • SQLite • Redis • MongoDBSaturday, 27 October, 12
  26. 26. 数据库设计 • 1NF • 2NF • 3NF • BCNFSaturday, 27 October, 12
  27. 27. 数据库事务 • 什么是数据库事务 • 数据库事务的准则 • ACID • 原子性, 一致性, 独立性, 持久性Saturday, 27 October, 12
  28. 28. SQL • 标准化查询语言 • select, insert, delete, update... • left join, right join, inner join, union...Saturday, 27 October, 12
  29. 29. SQL Injection • SQL注入 • 原因? • 如何解决?Saturday, 27 October, 12
  30. 30. ORM • 对象关系映射 • 用对象来操作表 • 表与表之间的关联 • 更直观 • 屏蔽数据库间的差异Saturday, 27 October, 12
  31. 31. DAO • Data Access Objects • 继续封装数据操作 • 一个DAO的方法涵盖一系列的数据操作Saturday, 27 October, 12
  32. 32. 编辑器/IDESaturday, 27 October, 12
  33. 33. 编辑器 • Vim • Emacs • Notepad++ • EditPlusSaturday, 27 October, 12
  34. 34. IDE • Eclipse • NetBeans • Intellij IDEASaturday, 27 October, 12
  35. 35. 如何选择? • 初学以编辑器为主, 加强自己的coding能 力 • 以用着顺手为前提, 工具只是为了提高生 产力 • 写Java这样的语言, 建议用IDESaturday, 27 October, 12
  36. 36. 不要做 • 参与编辑器/IDE之争 • 不停的更换编辑器/IDE • 做编辑器/IDE的奴隶, 离开了不会写程 序Saturday, 27 October, 12
  37. 37. 版本控制软件Saturday, 27 October, 12
  38. 38. 关于版本控制软件 • 什么是版本控制软件 • 为什么要使用版本控制软件Saturday, 27 October, 12
  39. 39. 有哪些版本控制软件 • ClearCase • CVS • SVN • GIT • Mercurial(HG)Saturday, 27 October, 12
  40. 40. 现在最流⾏行的是什么呢?Saturday, 27 October, 12
  41. 41. GIT!!!Saturday, 27 October, 12
  42. 42. 为什么流⾏行? • 分布式版本控制 • 速度快 • 功能强大Saturday, 27 October, 12
  43. 43. 3. 选择⽅方向Saturday, 27 October, 12
  44. 44. web开发Saturday, 27 October, 12
  45. 45. 前端/后端Saturday, 27 October, 12
  46. 46. 前/后 端的区别 • 何为前端? • 何为后端?Saturday, 27 October, 12
  47. 47. WEB开发中, Java算哪端?Saturday, 27 October, 12
  48. 48. 前端需要掌握哪些技能? • HTML • CSS • JavaScript • HTML5/CSS3Saturday, 27 October, 12
  49. 49. 后端需要掌握那些技能? • 后端语言(Java, PHP, Python, Ruby) • 数据库 • 服务器优化(Apache, Nginx)Saturday, 27 October, 12
  50. 50. WEB开发中最推崇的MVCSaturday, 27 October, 12
  51. 51. MVC模型 • Model 模型 • View 模型 • Controller 控制器Saturday, 27 October, 12
  52. 52. 4. 开始开发Saturday, 27 October, 12
  53. 53. 开发过程 • 文档先行 • 架构在后 • 测试优先 • 编码保证Saturday, 27 October, 12
  54. 54. 优秀的⽂文档 • 格式化语言 • wiki语法 • 可以导成HTML格式 • 清晰的说明程序的作用和想法Saturday, 27 October, 12
  55. 55. 优秀的架构 • 优秀的数据结构是程序优良与否的关键 • 优秀的架构是程序优良的保证Saturday, 27 October, 12
  56. 56. “烂程序员关心的是代码. 好程序员关心的 是数据结构和它们之间的关系.” - LinusSaturday, 27 October, 12
  57. 57. “git的设计其实非常的简单, 它的数据结构很 稳定, 并且有丰富的文档描述. 事实上, 我非常 的赞同应该围绕我们的数据结构来设计代码, 而不是依据其它的, 我认为这也是git之所以成 功的原因之一[...]依我的观点, 好程序员和烂程 序员之间的差别就在于他们认为是代码更重要 还是数据结构更重要.”- LinusSaturday, 27 October, 12
  58. 58. 测试的重要性 • 代码质量的关口 • 功能的保证 • 最不能小视, 缺最容易被小视 • 单元测试/TDDSaturday, 27 October, 12
  59. 59. 编码实现 • 代码风格 • 函数/变量命名 • 注释 • 代码是写给人看的, 机器码才是给机器读 的Saturday, 27 October, 12
  60. 60. 5. 解决问题Saturday, 27 October, 12
  61. 61. 解决问题的⽅方法 • Google/Baidu • 问答网站(StackOverflow) • 论坛 • wiki • mail list • ircSaturday, 27 October, 12
  62. 62. 提问的艺术 • 查询有没有相同的问题 • 在问题中把问题描述清楚 • 举例Saturday, 27 October, 12
  63. 63. 6. 如何提⾼高Saturday, 27 October, 12
  64. 64. 提⾼高的⽅方法 • 阅读 • 实践 • 和有经验的人交流 • 阅读别人的代码 • 参与开源Saturday, 27 October, 12
  65. 65. 阅读 • 计算机书籍(语言类, 协议类, 基础类) • 编程技巧文章 • 他人经验的总结Saturday, 27 October, 12
  66. 66. 推荐⼏几个开源⺴⽹网站 • http://sourceforget.net/ • http://code.google.com/ • http://github.com/ • http://bitbucket.org/Saturday, 27 October, 12
  67. 67. 如何参与开源 • 写文档 • 测试 • 提交功能申请 • 修改bug • 参与开发Saturday, 27 October, 12
  68. 68. 以github为例Saturday, 27 October, 12
  69. 69. http://github.com/Saturday, 27 October, 12
  70. 70. Saturday, 27 October, 12
  71. 71. github能干什么? • 托管开源代码 • 团队协作 • 管理项目 • 文档管理 • bug追踪Saturday, 27 October, 12
  72. 72. 总结Saturday, 27 October, 12
  73. 73. • 善于阅读 • 善于总结 • 善于提问 • 善于抽象 • 善于动手Saturday, 27 October, 12
  74. 74. 优秀的程序员都是懒惰的程序员, 因为 只有他们才会开发出更多让⼈人可以更懒 惰的程序Saturday, 27 October, 12
  75. 75. 愿⼤大家都能成为那个懒惰的程序员!Saturday, 27 October, 12
  76. 76. Thanks!Saturday, 27 October, 12

×