【跃迁之路】【592天】每日存量知识总结技术3302018.09.20

@(跃迁之路)专栏

[叨叨两句]

  1. 【改版】未来该系列将针对已经掌握的知识,挑选我认为的重点进行规律总结
  2. 精进技术的目的,是为了实现自己的三个目标,而每日进行思考总结,只是具体的方法论
  3. 每日存量思考总结的目的:

    1. 为了杜绝大脑的“自动化”,脱离“舒适区”,持续精进技术
    2. 为了提供及时反馈,进行纠偏,防止目标方向错误
  4. 该系列正式纳入【跃迁之路】专栏,将持续更新

硬知识

一、碎片知识归类【存放“偶遇”的知识】

Java基础

  1. 异常——[【跃迁之路】Java基础(异常)(20180815v1.0)]()
  2. IO流——[【跃迁之路】Java基础(IO流)(20180816v1.0)]()
  3. 数据类型——[【跃迁之路】Java基础(数据类型)(20180817v1.0)]()
  4. 多线程——[【跃迁之路】Java基础(多线程)(20180818)]()
  5. 枚举——[【跃迁之路】枚举常见问题及解决方案汇总(20180902v1.0)]()
  6. 集合——[【跃迁之路】集合常见问题及解决方案汇总(20180904v1.0)]()
  7. 时间类——[【跃迁之路】时间类常见问题及解决方案汇总(20180905v1.0)]()

JavaEE

  1. [【跃迁之路】SSM框架常见问题及解决方案汇总(20180614v1.4)]()
  2. [【跃迁之路】SpringBoot框架常见问题及解决方案汇总(20180725v1.0)]()
  3. [【跃迁之路】SpringCloud常见问题及解决方案汇总(20180903v1.0)]()
  4. [【跃迁之路】Spring常见问题及解决方案汇总(20180901v1.0)]()
  5. [【跃迁之路】Java常见问题及解决方案汇总(20180906v1.10)]()
  6. [【跃迁之路】MyBatis Generator常见问题及解决方案汇总(20180824v1.1)]()
  7. [【跃迁之路】Spring Security常见问题及解决方案汇总(20180628v1.0)]()
  8. [【跃迁之路】MyBatis常见问题及解决方案汇总(20180901v1.2)]()
  9. [【跃迁之路】Executor 常见问题及解决方案汇总(20180820v1.1]()
  10. [【跃迁之路】POI常见问题及解决方案汇总(20180825v1.1)]()
  11. [【跃迁之路】FastJSON常见问题及解决方案汇总(20180913v1.1)]()
  12. [【跃迁之路】Jsoup常见问题及解决方案汇总(20180920v1.0)]()

不同语言交互

  1. [【跃迁之路】jython常见问题及解决方案汇总(20180901v1.0)]()
  2. [【跃迁之路】Java与MySQL交互常见问题及解决方案汇总(20180905v1.0)]()

前端

  1. [【跃迁之路】HTML常见问题及解决方案汇总(20180913v1.1)]()
  2. [【跃迁之路】CSS常见问题及解决方案汇总(20180716v1.0)]()
  3. [【跃迁之路】JavaScript常见问题及解决方案汇总(20180913v1.3)]()
  4. [【跃迁之路】EasyUI常见问题及解决方案汇总(20180912v1.13)]()
  5. [【跃迁之路】jQuery常见问题及解决方案汇总(20180825v1.0)]()
  6. [【跃迁之路】JSONP常见问题及解决方案汇总(20180920v1.0)]()
  7. [【跃迁之路】其它前端常见问题及解决方案汇总(20180801v1.0)]()

数据库

  1. [【跃迁之路】Oracle常见问题及解决方案汇总(20180608v1.0)]()
  2. [【跃迁之路】Redis常见问题及解决方案汇总(20180717v1.0)]()
  3. [【跃迁之路】MongoDB常见问题及解决方案汇总(20180814v1.2)]()

数据库可视化工具

  1. [【跃迁之路】Navicat常见问题及解决方案汇总(20180828v1.1)]()

数据库连接工具

  1. [【跃迁之路】Xftp常见问题及解决方案汇总(20180908v1.0)]()

数据库设计工具

  1. [【跃迁之路】PowerDesigner常见问题及解决方案汇总(20180821v1.0)]()

IDE

  1. [【跃迁之路】Eclipse常见问题及解决方案汇总(20180824v1.5)]()
  2. [【跃迁之路】IDEA常见问题及解决方案汇总()]()

操作系统

  1. [【跃迁之路】Linux常见问题及解决方案汇总(20180610v1.0)]()

测试工具

  1. [【跃迁之路】Junit常见问题及解决方案汇总(20180807v1.0)]
  2. [【跃迁之路】Log4j常见问题及解决方案汇总(20180808v1.0)]
  3. [【跃迁之路】SLF4J常见问题及解决方案汇总(20180808v1.0)]
  4. [【跃迁之路】HttpUnit常见问题及解决方案汇总(20180920v1.0)]

版本控制

  1. [【跃迁之路】Git常见问题及解决方案汇总(20180716v1.0)]()
  2. [【跃迁之路】SVN常见问题及解决方案汇总(20180905v1.2)]()

项目构建

  1. [【跃迁之路】Maven框架常见问题及解决方案汇总(20180814v1.2)]()

项目管理

  1. [【跃迁之路】需求分析常见问题及解决方案汇总(20180716v1.0)]()
  2. [【跃迁之路】概要设计常见问题及解决方案汇总(20180716v1.0)]()
  3. [【跃迁之路】详细设计常见问题及解决方案汇总(20180716v1.0)]()
  4. [【跃迁之路】数据库设计常见问题及解决方案汇总(20180716v1.0)]()
  5. [【跃迁之路】团队协作常见问题及解决方案汇总(20180716v1.0)]()
  6. [【跃迁之路】环境搭建常见问题及解决方案汇总(20180716v1.0)]()
  7. [【跃迁之路】测试常见问题及解决方案汇总(20180711v1.4)]()
  8. [【跃迁之路】项目部署常见问题及解决方案汇总(20180716v1.0)]()

操作系统

  1. [【跃迁之路】Windows常见问题及解决方案汇总(20180909v1.1)]

数学

  1. [【跃迁之路】自然语言处理必备数学知识(20180803v1.0)]

设计模式

  1. [【跃迁之路】设计模式(单例)常见问题及解决方案汇总(20180902v1.0)]

算法

  1. [【跃迁之路】递归(20180816v1.0)]()

计算机基础

  1. [【跃迁之路】计算机基础(其它)(20180901v1.1)]()

云服务

  1. 【跃迁之路】科大讯飞云服务常见问题及解决方案汇总(20180826v1.0)

其它

  1. [【跃迁之路】虚拟机常见问题及解决方案汇总(20180519v1.0)]()
  2. [【跃迁之路】PhotoShop常见问题及解决方案汇总(20180716v1.0)]()
  3. [【跃迁之路】正则表达式常见问题及解决方案汇总(20180919v1.3)]()
  4. [【跃迁之路】XML常见问题及解决方案汇总(20180905v1.0)]()
  5. [【跃迁之路】API文档工具常见问题及解决方案汇总(20180905v1.0)]()

二、体系化知识总结【存放个人规划的知识】

一、编程语言

Java

代码执行顺序:
反射:

接口:

进制:

构造函数:
继承:

集合:

包装类:
值传递:

并发:

修饰符:
其它:

常见面试题:

SQL

Cron

[【跃迁之路】Cron表达式(20180803v1.0)]()

PowerDesgin

Python

数学

三、功能实现思路总结【存放成熟的功能实现思路】

  1. 文本相似度

    1. [【跃迁之路】计算文本相似度算法(20180809v1.2)]()
  2. 音频分贝

    1. [【跃迁之路】音频分贝计算算法(20180817v1.1)]()
  3. 数据加密

    1. [【跃迁之路】数据加密方法(20180816v1.0)]()
  4. 多级树形结构遍历

    1. [【跃迁之路】多级树形结构遍历方法(20180824v1.0)]()
  5. 抓取网页数据

    1. [【跃迁之路】抓取网页数据方法(20180920v1.0)]()
  6. 跨域

    1. [【跃迁之路】跨域方法(20180920v1.0)]()

学习方法

针对新知识快速上手

  1. 快速了解

    1. 先用视频
    2. 权威社区入门读物

      1. 知乎
      2. 掘金
  2. 再找靠谱资料深入

    1. 书籍

      1. 多数人认可
      2. 较新版本
  3. 写Demo

二、性能优化

  1. [【跃迁之路】MySQL性能优化技巧汇总[专题](20180324v1.0)]()
  2. [【跃迁之路】Java性能优化技巧汇总[专题](20180730v1.0)]()

三、原理探索

  1. [【跃迁之路】白话原理系列002——SpringMVC(20180509v1.0)]()

四、设计模式

  1. 单例
  2. 工厂
  3. 代理
  4. 适配器

五、常见算法

六、环境搭建

  1. [【跃迁之路】从0开始搭建开发环境——JavaEE(20180608v1.6)]()

七、数据库设计

  1. 原则

八、软件架构

九、软件工程

软实力

二、思路总结

增删改查

SSM

两种上传文件的方式

1. 表单提交
2. ajax提交

搜索技术

Lucene

创建索引的过程

  1. 采集数据
  2. 将数据放到docment对象中,进行结构化(文档域、文档、域)
  3. 寻得一个存储索引库的位置
  4. 建立分词器
  5. 创建写出IO流
  6. 向索引库写入索引

分词的目的,是获得语汇单元tokens【个人理解:最小化语义单元集合】
分词的过程,就是切分+过滤的过程(过滤标点、大小写转换、停用词、同义词等等),它最终获得语汇单元tokens

搜索的过程(JDBC)

  1. 先将用户输入封装成查询对象,
  2. 找到索引库位置
  3. 建立读取IO流
  4. 建立搜索执行器
  5. 搜索执行器根据查询对象查出结果集

三个field

  1. 是否分词:取决于是否要模糊搜索
  2. 是否索引:取决于是否需要根据该数据进行搜索
  3. 是否存储:取决于搜索结果是否需要展示
solr
1. 使用solr实现电商网站站内搜索
    2. solr部分 
        1. 搭建环境,保证solr可运行
        2. 将数据库数据导入solr的索引库,建立索引
    3. 其它部分
        4. 前端页面
            5. 将主查询条件+筛选条件一起往controller送
        5. controller
            6. 接收前端页面参数——传给service层
            7. 响应前端页面结果(商品基本信息的List集合、分页信息(当前页、每页条目数、总记录数、总页数))
        6. service
            7. 将controller层的
        7. dao
        8. pojo
            9. 一个响应前端页面的结果集pojo类:ResultModel
            10. 一个展示前端页面商品基本信息的类:ProductModel

安全框架

  1. Spring Security
  2. Shiro

在线播放音频

思路一:本地+虚拟路径

  1. 步骤

    1. 前端找个audio标签,链接为虚拟路径
    2. 服务器tomcat配置虚拟路径、绝对路径
    3. 文件存储在绝对路径
  2. 特点

    1. 优点:简单
    2. 缺点:文件都放在一台服务器

思路二:fastdfs

  1. 步骤

  2. 特点

三、项目知识点总结

网上商城

  1. [【跃迁之路】网上商城-技术选型+功能模块文件分布图(20180426v1.21)]()
  2. [【跃迁之路】网上商城-架构设计(文件归类图)(20180401v1.0)]()

呼叫中心后台管理系统

  1. [【跃迁之路】开发问题AND解决方案随手记——呼叫中心后台管理系统(20180714v1.12)]()

企业运营管理系统

  1. [【跃迁之路】开发问题AND解决方案随手记——企业运营管理系统(20180721v1.0)]()

编程思想

  1. MVC模式

    1. M——模型通常代表程序中的数据+操纵数据的业务逻辑
    2. V——视图是其对应的模型的可视化呈现,视图将模型渲染成适合于交互的形式(通常为用户界面元素)
    3. C——控制器是用户与系统之间的纽带,它接受用户输入,并指示模型和视图基于用户输入执行操作(处理数据、展示数据)

面试

Java常考重点

  1. 基础——
  2. 框架——

九、其它

  1. 理解'classpath:'的含义:指项目目录的builder/classes目录下的文件

[我的思考]

一、创新灵感

二、个人启发(20180719v1.7)

  1. 快速从宏观上了解一个项目的方式,就是搞清楚它究竟有哪些功能模块
  2. 各种框架的设计,都是在尝试完成,模块间通信、模块定义、模块使用的问题
  3. 拆解一个复杂的软件系统,一个有效的方式是寻找其中的最小功能模块单元,然后寻求单元间的通讯规则
  4. 编程的难有两种,一种是太复杂,一种是没思路,面对一个感到困难的知识点,若是前者,不要担心,慢慢梳理总能清除,若是后者,则要高度重视,自己不行可以尝试请教高人
  5. 编程技术的提高,不在于你知识见了多少,而是知识往你脑子装进了多少
  6. 编程技术的提高,除了理解,也需要体会【手感】,前者靠思考,后者靠练习
  7. 编程练习的价值,在于降低本能自我对陌生事物本能的恐惧,为内化进大脑做准备
  8. 何为真正的系统化学习?拆解一个功能至功能模块,然后确定功能模块之间的通讯规则
  9. 做一个项目有很多垃圾时间(仅用于增加熟练度),这些时间的东西不值得记录,值得记录的是那些解决的问题及解决的方案
  10. 完成一个项目的过程中,一定要做记录,让自己知道解决了哪些问题
  11. 关于解决问题的速度,你永远比你想的要慢,想要早睡,预估时间永远提前3小时
  12. 学习编程开发不靠记忆,靠建立记忆索引,资料整理,然后再天马行空的去实现高性能,遇到不会的就找资料
  13. 先求知识广度,见识多了,再挑一个求深度
  14. 程序员的实力考技术体现不出来,得靠明星项目或者炫技项目体现

三、学习方法(20180526v1.0)

  1. 技术能力——在时间有限的客观限制下,以成为技术大牛为目标

    1. 面对框架

      1. 老框架:完成任务即可【用什么学什么】
      2. 主流框架:熟练掌握【工作时间主力研究,以实现工作需求为导向】
      3. 新框架:熟悉掌握【工余时间主力研究,以实现长期目标为导向】
    2. 面对编程语言:

      1. 主力语言: 精通(但不要追求80%的高性能,不要钻牛角尖,追求极致)【工作时间主力研究:当天工作任务可在半天内完成时,开始学习性能优化,看源码,理解底层】
      2. 新语言: 熟练【工余时间主力研究,以实现长期目标为导向】
    3. 面对数据库
    4. 面对架构
  2. 产品思维——
  3. 个人品牌——
  4. 项目管理

    1. 软件工程

      1. 需求分析
      2. 概要设计

        1. 数据库设计
        2. 接口设计
        3. 原型图设计
      3. 详细设计
    2. 进度管控

      1. 熟悉团队成员

三、项目心得总结

1. 前端

基础

  1. HTML
  2. CSS

    1. 架构

      1. 全局CSS设置(类别基类)
      2. 每个页面单独的CSS(类比继承父类)
      3. 单独的功能模块CSS(类比实现接口)
  3. JavaScript

框架

  1. easyUI
  2. angularJS

架构

1.确定全局JS、CSS文件(可抽取的公共部分)

  1. 增删改查
  2. 独立的功能模块
  3. 验证部分

2.每个页面单配一个CSS、JS文件

3.公共的模块放单独的目录

目录结构

  1. 自定义文件与外部依赖要进行区分

其它

从网上找的代码,过于复杂时,就看它的输入输出是什么,做为一个黑箱来处理

2. SSM

3. 数据库

4. 测试类

5.设计模式

  1. 当一个对象需要经过重重判断筛选计算出另一值的时候,可以设置一个初始值,然后不断在每一个环节改变这个初始值,最终返回计算结果

6.性能优化

  1. 可以把经常用的值提前从数据库查出来,放入内存取用速度会快很多

四、团队协作心得(20180331v1.0)

1. 帮人解决问题的思路

  1. 解决问题前,边看代码,边向当事人确定:

    1. 必做

      1. 【确定当前需求】你想要的效果是什么?
      2. 【确定当前事故状态】你现在是什么状态?你做了哪些操作
    2. 选做

      1. 【确定上次正常状态】你上一次正常的状态是什么
    3. 注意事项

      1. 由于当事人有可能出错,所以替当事人解决问题时,ta的意见、观点只能参考,不可相信
  2. 解决问题中
  3. 解决问题后

五、职业发展(20180616v1.2)

1.源码阅读

2.技术路径

  1. Java工程师
  2. Java架构师

3.求职心得

  1. 沟通方式

    1. 问:技术面试中遇到不会的技术点,如何回答才不至于让面试官感觉你很糟糕?
    2. 答:注意三点:1.这个XXX我不太清楚,但是我之前用过/看过/学过,或者如果工作需要,我可以继续研究
  2. 简历撰写

  3. 待遇常识

    1. 五险
    2. 一金

4.技术圈最待提供的核心价值

  1. 连接的程序员大牛+连接的大平台

六、快速学习(20180721v1.0)

快速熟悉新项目

JavaEE

  1. 建一个文件记录之后的疑问
  2. 搭好环境让项目先跑起来
  3. 站在用户角度查看项目要解决什么问题
  4. 了解一遍框架流程

    1. 前端页面
    2. controller
    3. service
    4. dao
  5. 了解表结构设计

    1. 如果表不多,从一个表缕清关系
  6. 针对自己的需求画脑图缕清思路
  7. 将疑问与相关方进行了解
  8. 重整思路
  9. 与需求方确认自己思路是否正确
  10. 开发

    1. 先写出结果集
    2. 从数据库查出结果集所需要的条目

七、测试

针对复杂计算功能的测试

  1. 先写好测试用例
  2. 再人工得出预期结果
  3. 再用程序算出预期结果
  4. 二者对比,若出现问题

    1. 使用DeBug跟踪程序运行流程
    2. 每个功能模块进行测试
  1. JavaEE(SSM+AngularJS+MySQL)

  2. JavaEE开发步骤——查询【示例:条件查询】

    1. 确定前端需要哪些数据?【筛选后的数据】
    2. 确定要获取这些数据,前端需要往后台发送什么?【用户输入的查询条件】
    3. 确定这些数据往后端发送时的封装方式【将查询条件打包成POJO】
    4. 确定控制层对这些数据的接收方式(后端数据处理的起点)【用POJO类接收打包的查询条件】
    5. 确定前端的响应接收方式(后端数据处理的终点)【确定要转换成JSON格式】
    6. 根据情况完成数据转换,以下同时考虑:

      1. 确定持久层从数据库查出什么?【可以一次性直接查出来,也可以查出个中间数据,再由服务层和控制层去转换成JSON】
      2. 确定服务层如何转换?【可以不做处理直接传递,也可以帮着做个转换】
      3. 确定控制层如何转换【无论如何,在这应该转换成前端可以接收的JSON格式了】

二、框架基础练习

SpringMVC

Spring

[【跃迁之路】框架基础练习——Spring(最近更新:)]()

MyBatis

[【跃迁之路】框架基础练习——MyBatis(最近更新:)]()

EasyUI

[【跃迁之路】框架基础练习——EasyUI(最近更新:2018.6.4)]()

三、框架整合练习

SSM整合

[【跃迁之路】框架整合练习——SSM(最近更新:2018.6.13)]()

其它

测试类

  1. springBoot测试类
  2. SSM测试类

搭建环境

[【跃迁之路】从0开始搭建开发环境——JavaEE(20180608v1.6)]()

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...