×

20170923《内外兼修》

96
im天行
2017.09.23 16:54* 字数 2582

缘起

  • 2017-09-10偶然从图书馆看到然后借回来读的。
  • 作者 罗飞伍星编著,机械工业出版社2016年9月第1版第1次印刷。
  • 2017-09-23全书读完,花了7个番茄钟。

内容

  • 序一 李开复
  • 序二 PHP技术专家 惠新宸
  • 前言 罗飞
  • 目录

Part1 程序篇 1/176

  • 程序员的三个阶段:实现(1-2年)->借鉴(1-2年,看源代码)->优化

第一阶段:实现

  • 我的学习经历
    • 高三没读完,后来自学编程。
  • 大脑学习知识的原理 6/176
    • 认识 缘脑
      • 任何一种新的行为模式对于 缘脑来说都是一种挑战。我也不知道是不是科学?
    • 宏观定位
      • 找到新知识与已学过知识的关联。
    • 了解整体
    • 对待新知识的态度
    • 缘脑的其他应用
  • 理解-记忆-练习 12/176
    • 理解
      • 对一个知识看三个不同作者的观点,综合多个人的不同观点才能形成自己的理解。
    • 记忆
      • 左右脑的理论方面的知识。
      • 要记住某条信息,必须充分调动自己的五大感官
      • 随时随地训练自己的感官。瀑布练习
      • 思维导图的步骤:
        • 提取关键词
        • 摆放关键词
        • 连线关键词
        • 复习增加记忆
    • 练习
      • 最难熬却是最关键的其实是同一水平层次上停滞不前的那段时间, 也就是所谓的平台期。
      • 学习的4个阶段
        • 不知己不能
        • 知己不能之
        • 知己已能之
        • 不知己能之(形成意识了
  • 如何解决程序问题
    • 不要像小白用户那样提问 程序的错误信息,错误码,以及哪个类或函数里?
    • 重现问题
    • 查找程序报错信息
    • 排除法找问题 建个demo验证
    • 奇怪问题一般是因为粗心
    • 用好搜索引擎(google不行的话,就用aolsearch
    • 求助别人
    • 解决问题后 必须做好笔记,以及顺便修复好svn中的其它相关错误。
  • 技术方向的选择 32/176
    • 选择方向
      • 大势:国家、产业、技术趋势。
      • 人个情况:个人的背景技能、知识、兴趣及身体状况
    • 大势
      • 国家大势
      • 产业大势
      • 技术趋势
        • 操作系统和底层服务开发
        • 桌面端应用开发
        • 浏览器端应用开发
        • 后端业务逻辑开发
        • 客户端开发
    • 个人情况
      • 学历背景
        • 英语水平
        • 从业圈子
        • 工作机会
      • 专业背景
      • 性格兴趣
      • 家庭环境
  • 编程要学什么
    • 后端开发方向
      • LAMP(Apache换成Nginx) 互联网公司用得多
      • Spring+Strust2+Mybatis+MySQL
      • 小语种(Windows+IIS+SQLServer+C#)传统软件用得多
    • Web前端开发方向 代表了发展趋势
      • HTML、JS、CSS学习得更深入和专业,以及相应的前端库和构建工具,以及框架。
    • 原生移动开发方向
    • 底层开发方向
    • 游戏开发方向
    • 智能硬件方向
    • 其他相关方向
    • 全栈工程师与架构师 59/176
      • 技能的延伸与总结
        • 本身技术链条上的延伸
        • 技术栈上的延伸
        • 技术广度上的延伸
        • 万变不离其宗
          • “缓存”、“效率”、“优化”都需要考虑
          • 编程语言的核心和精髓是一样的
          • 基础的核心的东西都一样,操作系统原理,计算机组成,网络,数据结构、算法。
      • 全栈工程师与架构师
        • 全栈工程师的四点要求
          • 技术全面
          • 思维心态
          • 上升能力
          • 职业价值
        • 架构师 ( 全栈发展的下一个目标

第二阶段:借鉴 67/176

  • 分析程序的方法
    • 先看文档了解程序功能 (注释生成文档的工具
    • 断点调试
    • 内置函数(PHP为例)
      • debug_backtrace看调用栈
        • 在C函数中,用debug_backtrace获得调用栈并用var_dump输出。
        • debug_print_backtrace函数打出一个简单的调用栈
      • get_included_files看加载了哪些文件
      • 变量的输出方法
        • echo()var_dump()调试输出
        • 如果写入文件是一个对象或数组,我们要用var_export
    • SocketLog
    • 整理思维
      • 用UML和xmind工具进行代码执行流程的整理。
  • 利用开源程序快速开发
    • 从实际出发,通过github做了一个例子

第三阶段: 优化 84/176

  • 可读性
  • 可扩展性
    • 需求分析 (在需求分析这一层就开始扩展
    • 架构设计
      • 明白各种架构设计的优缺点,以及应用场景 ,而不是怼名词。87/176
      • 正交设计
      • **做架构要以“控制变化发生在固定的层”为目的。
      • 类的设计要做区分,把相同的归为一类。
      • 为什么委托优于继承?继承容易出现组合爆炸的问题。
  • 安全性
    • XSS(Cross-Site Scripting)跨站脚本攻击。
      • 绕过strip_tags的过滤
      • 用Unicode编码绕过过滤
      • 其他注意的地方
      • 两个方法
        • 设置httponly
        • 强制重置session_id
    • SQL注入
      • 一般用sleep来测试是否有SQL注入漏洞。select 'title',FROM 'article' WHERE 'id'='1' and sleep(10)--
      • 编程语言都会提供专门的过滤函数用于防止SQL注入,这些过滤函数都是在转义单引号,防止黑客使用单引号做闭合。
      • 除了用编程语言提供的过滤函数进行过滤,还要注意以下
        • SQL语句中的值都要用单引号
        • 整数值的转换
        • 变量在拼接SQL语句时过滤
        • 设置好数据库权限
        • 增加表前缀
        • 增强加密算法
        • 使用php-taint模块
    • CSRF漏洞
      • Cross-Site Request Forgery的缩写,跨站请求伪造
      • 防止CSRF攻击的三种方法
        • 判断请求来源
        • 验证码
        • 令牌验证
    • 其它安全问题
  • 服务器的优化
    • 技术人员不能犯两种问题,安全问题和高并发问题。
    • 要承受高并发,6个要点
      • 做好数据库优化
        • join查询的性能比较低,group by查询的性能更低。
        • explain来分析MySQL语句的性能;
        • mysqlreport来分析MySQL的健康状况
      • 使用缓存
        • 使用MemCacheXcache对数据库的查询结构进行缓存。
      • 使用队列
      • 搭建分布式环境
      • 压缩文件
      • 使用云计算
  • 技术团队的管理
    • 接触到管理岗位后,要注意以下三个方面:制度、精神和物质。
    • 开发流程
      • 分析
        • “做什么”是固定不变的,而“怎么做”可能会经常变。
        • 分析需求和难点
      • 设计
        • 建立哪些程序文件,哪些类,以及类有哪些方法,方法的具体处理过程。
      • 编码
        • 防卫式编程
      • 测试
        • 人工测试
        • 单元测试
        • 做好报警
          • 如何防止重复的报警信息
          • 如何跟踪触发报警的用户
          • slack的国内类似产品 纷云
        • CodeReview
          • 如果很难静下心来看别人的代码,那证明还处于实现阶段未进入借鉴阶段。
    • 开发排期
      • 估算时间
        • 通过估算时间可以发现问题(不同的人估计时间不一样的原因
      • trello看板
      • 番茄工作法
    • 团队精神
      • 一个技术主管应该拥有的素质
        • 认可
        • 乐观
        • 关怀
        • 跟我冲
        • 不专制
        • 产品心态
        • 用批判性思维讨论问题
        • 不等待、不欺骗
        • 解决问题的心态
        • 换位思考

Part2 人生篇 133/176

第一阶段:认识困难

  • 面对困难
    • 人其实有一个弱点:往往只关注到不好的地方。
  • 把困难看小,把前进看大
  • 有失必有得
  • 提高挫折商
    • 武志红《感谢自己的不完美》
    • 1997年,斯托茨《挫折商:变挫折为机会》,2000年又出了本《工作中的挫折商》,AQ分为四部分
      • 控制(Control)
      • 归因(Ownership)
      • 延升(Reach)
      • 忍耐(Endurance)
  • 理解重要的事情,学会放下
  • 程序员思维

第二阶段:认识潜意识

  • 了解潜意识
    • 潜意识:是未经过大脑深思的快速心理活动过程。
  • 后天形成的潜意识
    • 认识自己的情绪
      • 有时候我们当下的情绪并不是因为眼前的事情而产生的。
    • 认识自己的思想
      • 有时候我们讨厌某个人可能并不是这个人的问题,而和自己的潜意识有关。
  • 先天形成的潜意识
    • 紧张
    • 逃避和懒惰
    • 成名的欲望
    • 先天的品质
  • 人类的三层意识模型
    • 意识->后天潜意识->先天潜意识。
    • 我们内心不舒服或者表现不自然是因为出现了以上三层意识不统一的情况。
  • 心理暗示
  • 坚持不懈地改善自己的潜意识

第三阶段:认识本体

  • 向内的寻找
    • 为什么要向外寻找
    • 如何向内寻找
      • 找到内心无条件的主观判断法则
        • 《全息智慧》
      • 铲除内心的坑洞
  • 感悟本体
    • 写感悟笔记是一种感悟本体的好方法。
    • 尼尔.唐纳德.沃尔什写的《与神对话》

程序员的人生职业规划 165/172

  • 继续人生的修行
    • 推荐了一些心理学方面的书。《砖石途径》有4册;《少有人走的路》有4册。
  • 如何做人生职业规划
    • 互联网行业趋势
      • 全栈是现在的趋势,标准化是未来的趋势
        • 对技术人员要求比较高,没有那种就届毕业生能干好的工作。
      • 产业互联网的时代
      • 社群经济的时代

收获

  • 算是作者的随笔,也是一个码农的成长指南。
读书摘要
Web note ad 1