@(跃迁之路)专栏
[叨叨两句]
硬知识
一、碎片知识归类【存放“偶遇”的知识】
Java基础
- 异常——[【跃迁之路】Java基础(异常)(20180815v1.0)]()
- IO流——[【跃迁之路】Java基础(IO流)(20180816v1.0)]()
- 数据类型——[【跃迁之路】Java基础(数据类型)(20180817v1.0)]()
- 多线程——[【跃迁之路】Java基础(多线程)(20180818)]()
- 枚举——[【跃迁之路】枚举常见问题及解决方案汇总(20180902v1.0)]()
- 集合——[【跃迁之路】集合常见问题及解决方案汇总(20180904v1.0)]()
- 时间类——[【跃迁之路】时间类常见问题及解决方案汇总(20180905v1.0)]()
JavaEE
- [【跃迁之路】SSM框架常见问题及解决方案汇总(20180614v1.4)]()
- [【跃迁之路】SpringBoot框架常见问题及解决方案汇总(20180725v1.0)]()
- [【跃迁之路】SpringCloud常见问题及解决方案汇总(20180903v1.0)]()
- [【跃迁之路】Spring常见问题及解决方案汇总(20180901v1.0)]()
- [【跃迁之路】Java常见问题及解决方案汇总(20180906v1.10)]()
- [【跃迁之路】MyBatis Generator常见问题及解决方案汇总(20180824v1.1)]()
- [【跃迁之路】Spring Security常见问题及解决方案汇总(20180628v1.0)]()
- [【跃迁之路】MyBatis常见问题及解决方案汇总(20180901v1.2)]()
- [【跃迁之路】Executor 常见问题及解决方案汇总(20180820v1.1]()
- [【跃迁之路】POI常见问题及解决方案汇总(20180825v1.1)]()
- [【跃迁之路】FastJSON常见问题及解决方案汇总(20180826v1.0)]()
不同语言交互
前端
- [【跃迁之路】HTML常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】CSS常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】JavaScript常见问题及解决方案汇总(20180630v1.1)]()
- [【跃迁之路】EasyUI常见问题及解决方案汇总(20180709v1.12)]()
- [【跃迁之路】jQuery常见问题及解决方案汇总(20180825v1.0)]()
- [【跃迁之路】其它前端常见问题及解决方案汇总(20180801v1.0)]()
数据库
- [【跃迁之路】Oracle常见问题及解决方案汇总(20180608v1.0)]()
- [【跃迁之路】Redis常见问题及解决方案汇总(20180717v1.0)]()
- [【跃迁之路】MongoDB常见问题及解决方案汇总(20180814v1.2)]()
数据库可视化工具
- [【跃迁之路】Navicat常见问题及解决方案汇总(20180828v1.1)]()
数据库设计工具
- [【跃迁之路】PowerDesigner常见问题及解决方案汇总(20180821v1.0)]()
IDE
- [【跃迁之路】Eclipse常见问题及解决方案汇总(20180824v1.5)]()
- [【跃迁之路】IDEA常见问题及解决方案汇总()]()
操作系统
- [【跃迁之路】Linux常见问题及解决方案汇总(20180610v1.0)]()
测试工具
- [【跃迁之路】Junit常见问题及解决方案汇总(20180807v1.0)]
- [【跃迁之路】Log4j常见问题及解决方案汇总(20180808v1.0)]
- [【跃迁之路】SLF4J常见问题及解决方案汇总(20180808v1.0)]
版本控制
- [【跃迁之路】Git常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】SVN常见问题及解决方案汇总(20180905v1.2)]()
项目构建
- [【跃迁之路】Maven框架常见问题及解决方案汇总(20180814v1.2)]()
项目管理
- [【跃迁之路】需求分析常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】概要设计常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】详细设计常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】数据库设计常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】团队协作常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】环境搭建常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】测试常见问题及解决方案汇总(20180711v1.4)]()
- [【跃迁之路】项目部署常见问题及解决方案汇总(20180716v1.0)]()
操作系统
- [【跃迁之路】Windows常见问题及解决方案汇总(20180812v1.0)]
数学
- [【跃迁之路】自然语言处理必备数学知识(20180803v1.0)]
设计模式
- [【跃迁之路】设计模式(单例)常见问题及解决方案汇总(20180902v1.0)]
算法
- [【跃迁之路】递归(20180816v1.0)]()
计算机基础
- [【跃迁之路】计算机基础(其它)(20180901v1.1)]()
云服务
- 【跃迁之路】科大讯飞云服务常见问题及解决方案汇总(20180826v1.0)
其它
- [【跃迁之路】虚拟机常见问题及解决方案汇总(20180519v1.0)]()
- [【跃迁之路】PhotoShop常见问题及解决方案汇总(20180716v1.0)]()
- [【跃迁之路】正则表达式常见问题及解决方案汇总(20180907v1.1)]()
- [【跃迁之路】XML常见问题及解决方案汇总(20180905v1.0)]()
- [【跃迁之路】API文档工具常见问题及解决方案汇总(20180905v1.0)]()
二、体系化知识总结【存放个人规划的知识】
一、编程语言
Java
SQL
Cron
[【跃迁之路】Cron表达式(20180803v1.0)]()
PowerDesgin
Python
数学
三、功能实现思路总结【存放成熟的功能实现思路】
-
文本相似度
- [【跃迁之路】计算文本相似度算法(20180809v1.2)]()
-
音频分贝
- [【跃迁之路】音频分贝计算算法(20180817v1.1)]()
-
数据加密
- [【跃迁之路】数据加密方法(20180816v1.0)]()
-
多级树形结构遍历
- [【跃迁之路】多级树形结构遍历方法(20180824v1.0)]()
学习方法
针对新知识快速上手
-
快速了解
- 先用视频
-
权威社区入门读物
- 知乎
- 掘金
-
再找靠谱资料深入
-
书籍
- 多数人认可
- 较新版本
-
- 写Demo
二、性能优化
三、原理探索
四、设计模式
- 单例
- 工厂
- 代理
- 适配器
五、常见算法
六、环境搭建
- [【跃迁之路】从0开始搭建开发环境——JavaEE(20180608v1.6)]()
七、数据库设计
- 原则
八、软件架构
九、软件工程
软实力
二、思路总结
增删改查
SSM
两种上传文件的方式
1. 表单提交
2. ajax提交
搜索技术
Lucene
创建索引的过程
- 采集数据
- 将数据放到docment对象中,进行结构化(文档域、文档、域)
- 寻得一个存储索引库的位置
- 建立分词器
- 创建写出IO流
- 向索引库写入索引
分词的目的,是获得语汇单元tokens【个人理解:最小化语义单元集合】
分词的过程,就是切分+过滤的过程(过滤标点、大小写转换、停用词、同义词等等),它最终获得语汇单元tokens
搜索的过程(JDBC)
- 先将用户输入封装成查询对象,
- 找到索引库位置
- 建立读取IO流
- 建立搜索执行器
- 搜索执行器根据查询对象查出结果集
三个field
- 是否分词:取决于是否要模糊搜索
- 是否索引:取决于是否需要根据该数据进行搜索
- 是否存储:取决于搜索结果是否需要展示
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
安全框架
- Spring Security
- Shiro
在线播放音频
思路一:本地+虚拟路径
-
步骤
- 前端找个audio标签,链接为虚拟路径
- 服务器tomcat配置虚拟路径、绝对路径
- 文件存储在绝对路径
-
特点
- 优点:简单
- 缺点:文件都放在一台服务器
思路二:fastdfs
-
步骤
- 特点
三、项目知识点总结
网上商城
呼叫中心后台管理系统
企业运营管理系统
- [【跃迁之路】开发问题AND解决方案随手记——企业运营管理系统(20180721v1.0)]()
编程思想
-
MVC模式
面试
Java常考重点
九、其它
- 理解'classpath:'的含义:指项目目录的builder/classes目录下的文件
[我的思考]
一、创新灵感
二、个人启发(20180719v1.7)
- 快速从宏观上了解一个项目的方式,就是搞清楚它究竟有哪些功能模块
- 各种框架的设计,都是在尝试完成,模块间通信、模块定义、模块使用的问题
- 拆解一个复杂的软件系统,一个有效的方式是寻找其中的最小功能模块单元,然后寻求单元间的通讯规则
- 编程的难有两种,一种是太复杂,一种是没思路,面对一个感到困难的知识点,若是前者,不要担心,慢慢梳理总能清除,若是后者,则要高度重视,自己不行可以尝试请教高人
- 编程技术的提高,不在于你知识见了多少,而是知识往你脑子装进了多少
- 编程技术的提高,除了理解,也需要体会【手感】,前者靠思考,后者靠练习
- 编程练习的价值,在于降低本能自我对陌生事物本能的恐惧,为内化进大脑做准备
- 何为真正的系统化学习?拆解一个功能至功能模块,然后确定功能模块之间的通讯规则
- 做一个项目有很多垃圾时间(仅用于增加熟练度),这些时间的东西不值得记录,值得记录的是那些解决的问题及解决的方案
- 完成一个项目的过程中,一定要做记录,让自己知道解决了哪些问题
- 关于解决问题的速度,你永远比你想的要慢,想要早睡,预估时间永远提前3小时
- 学习编程开发不靠记忆,靠建立记忆索引,资料整理,然后再天马行空的去实现高性能,遇到不会的就找资料
- 先求知识广度,见识多了,再挑一个求深度
- 程序员的实力考技术体现不出来,得靠明星项目或者炫技项目体现
三、学习方法(20180526v1.0)
-
技术能力——在时间有限的客观限制下,以成为技术大牛为目标
-
面对框架
- 老框架:完成任务即可【用什么学什么】
- 主流框架:熟练掌握【工作时间主力研究,以实现工作需求为导向】
- 新框架:熟悉掌握【工余时间主力研究,以实现长期目标为导向】
-
面对编程语言:
- 主力语言: 精通(但不要追求80%的高性能,不要钻牛角尖,追求极致)【工作时间主力研究:当天工作任务可在半天内完成时,开始学习性能优化,看源码,理解底层】
- 新语言: 熟练【工余时间主力研究,以实现长期目标为导向】
- 面对数据库
- 面对架构
-
- 产品思维——
- 个人品牌——
-
项目管理
-
软件工程
- 需求分析
-
概要设计
- 数据库设计
- 接口设计
- 原型图设计
- 详细设计
-
进度管控
- 熟悉团队成员
-
三、项目心得总结
1. 前端
基础
- HTML
-
CSS
-
架构
- 全局CSS设置(类别基类)
- 每个页面单独的CSS(类比继承父类)
- 单独的功能模块CSS(类比实现接口)
-
- JavaScript
框架
- easyUI
- angularJS
架构
1.确定全局JS、CSS文件(可抽取的公共部分)
- 增删改查
- 独立的功能模块
- 验证部分
2.每个页面单配一个CSS、JS文件
3.公共的模块放单独的目录
目录结构
- 自定义文件与外部依赖要进行区分
其它
从网上找的代码,过于复杂时,就看它的输入输出是什么,做为一个黑箱来处理
2. SSM
3. 数据库
4. 测试类
5.设计模式
- 当一个对象需要经过重重判断筛选计算出另一值的时候,可以设置一个初始值,然后不断在每一个环节改变这个初始值,最终返回计算结果
6.性能优化
- 可以把经常用的值提前从数据库查出来,放入内存取用速度会快很多
四、团队协作心得(20180331v1.0)
1. 帮人解决问题的思路
-
解决问题前,边看代码,边向当事人确定:
-
必做
- 【确定当前需求】你想要的效果是什么?
- 【确定当前事故状态】你现在是什么状态?你做了哪些操作
-
选做
- 【确定上次正常状态】你上一次正常的状态是什么
-
注意事项
- 由于当事人有可能出错,所以替当事人解决问题时,ta的意见、观点只能参考,不可相信
-
- 解决问题中
- 解决问题后
五、职业发展(20180616v1.2)
1.源码阅读
2.技术路径
- Java工程师
- Java架构师
3.求职心得
-
沟通方式
- 问:技术面试中遇到不会的技术点,如何回答才不至于让面试官感觉你很糟糕?
- 答:注意三点:1.这个XXX我不太清楚,但是我之前用过/看过/学过,或者如果工作需要,我可以继续研究
-
简历撰写
-
待遇常识
- 五险
- 一金
4.技术圈最待提供的核心价值
- 连接的程序员大牛+连接的大平台
六、快速学习(20180721v1.0)
快速熟悉新项目
JavaEE
- 建一个文件记录之后的疑问
- 搭好环境让项目先跑起来
- 站在用户角度查看项目要解决什么问题
-
了解一遍框架流程
- 前端页面
- controller
- service
- dao
-
了解表结构设计
- 如果表不多,从一个表缕清关系
- 针对自己的需求画脑图缕清思路
- 将疑问与相关方进行了解
- 重整思路
- 与需求方确认自己思路是否正确
-
开发
- 先写出结果集
- 从数据库查出结果集所需要的条目
七、测试
针对复杂计算功能的测试
- 先写好测试用例
- 再人工得出预期结果
- 再用程序算出预期结果
-
二者对比,若出现问题
- 使用DeBug跟踪程序运行流程
- 每个功能模块进行测试
-
JavaEE(SSM+AngularJS+MySQL)
-
- 确定前端需要哪些数据?【筛选后的数据】
- 确定要获取这些数据,前端需要往后台发送什么?【用户输入的查询条件】
- 确定这些数据往后端发送时的封装方式【将查询条件打包成POJO】
- 确定控制层对这些数据的接收方式(后端数据处理的起点)【用POJO类接收打包的查询条件】
- 确定前端的响应接收方式(后端数据处理的终点)【确定要转换成JSON格式】
-
根据情况完成数据转换,以下同时考虑:
- 确定持久层从数据库查出什么?【可以一次性直接查出来,也可以查出个中间数据,再由服务层和控制层去转换成JSON】
- 确定服务层如何转换?【可以不做处理直接传递,也可以帮着做个转换】
- 确定控制层如何转换【无论如何,在这应该转换成前端可以接收的JSON格式了】
二、框架基础练习
SpringMVC
Spring
[【跃迁之路】框架基础练习——Spring(最近更新:)]()
MyBatis
[【跃迁之路】框架基础练习——MyBatis(最近更新:)]()
EasyUI
[【跃迁之路】框架基础练习——EasyUI(最近更新:2018.6.4)]()
三、框架整合练习
SSM整合
[【跃迁之路】框架整合练习——SSM(最近更新:2018.6.13)]()
其它
测试类
- springBoot测试类
- SSM测试类
搭建环境
[【跃迁之路】从0开始搭建开发环境——JavaEE(20180608v1.6)]()