“我是谁?我从哪里来?我要到哪里去?” 针对上述问题,其实可以引申到很多领域来思考,比如说当前我自己当前作为程序员的人生思考.
我是谁?(who_am_i?)
作为
我从哪里来?(Why_i_am_here?)
我要到哪里去?(Where_i_am_going?)
今天看到了一篇文章,讲述了作为一个程序员,应该如何注意自己的技术成长路线.自己想到了主要有三个方面:
-
基础知识: 对于一个技术人员来讲,首先要了解自己领域的核心知识能力图谱,而不是将过多的经历放在新出现技术的具体实现方式,以及使用细节上面.
对于一个技术人员的核心能力来说,不是针对具体学习哪些语言,哪些框架,或者某些具体语言的细节实现,这些能力不长久. 而是另外核心原理性的东西,比如Java语言,就需要认真了解 jvm 的原理,真正动了 jvm 的原理之后,才能从底层实现的角度协助进行问题排查等. -
算法知识: 作为技术人员,需要对一些常见的算法比较熟悉,因此需要通过不断刷题的方式进行相关算法的熟悉.一定需要注意不断的刷题
-
编码规范: 编码规范需要不断进行编码,养成编码习惯才可以,这个编码习惯不是看两遍才可以行程,一定要不断的有意识 训练 才可以
打算将编码学习过程中学习到的一些东西分模块的记录下来,主要是需求实现过程中的 设计想法 、 Java相关技术知识 、 设计模式 等开发技能,以及 Redis 、 Mysql 、 Nginx 等中间件组件,和Linux 操作系统等等相关的内容做一个系统性的个人能力树结构的总结
再看技术文档的时候,发现了一个牛人的源码解析博客,记录下来,作为未来的目标去走 田小波-非著名程序员 牛人的博客里面有非常多的源码解析文章,针对刚开始的源码解析入门,有很大的借鉴
关于 RESTful 接口设计相关资料,发现另外有一个小伙伴的仓库中有很多不错的资料,分享一下
下面的是自己整理了一下的相关资料
- bloom过滤器 缺点:有一定的误识别率,删除困难 优点:空间效率和查询时间都比一般的算法要好的多,另外如果判断出不在集合中,那么就一定不在集合中
作为后端,经常与前端进行联调工作,因此也需要了解一些前端知识,这样才能更好的进行问题定位于解决
网络相关技术与协议解析内容,也可以包括一些网络抓包工具使用说明文档等等
杂谈模块主要记录一些工作中的经验与一些非技术方面的感悟随笔
这个模块中主要记录系统架构方面的相关内容
上述目录均为探索过程中不断补充的知识体系结构,但是知识体系结构脱离代码实现,给人的印象不深刻,因此对应相关的知识体系中,如果可以进行代码实现以及模拟,是最好不过的了,列举一下自己目前想到的一些计划来进行实现
-
短期小目标
- 多线程的代码实现
- 反射原理解析相关的代码实现
- 动态代理相关的代码实现
- 设计模式相关的代码实现
-
长期的大目标
- 自己动手编写 Spring 框架
- 自己动手编写 Mybatis 框架
- 自己动手编写 netty 框架
- 微信小程序(技术能力体现相关)编写实现
-
技术文档沉淀
- 维护个人公众号
作为后端研发工程师,重新整理一下整体研发体系的知识,let's go
目前将如下内容放置在 AscendLadder 文件夹中
初级阶段
- Level_01_JavaSE: java 基础语法相关知识
- Java基础
- **Level_02_DataBase: **数据库基础知识
- 数据库基础
- Level_03_FrameWork: spring && springMVC 等框架知识
- 框架基础
- Level_04_WEB: 前端基础知识
- 前端基础
中级阶段
- Level_05设计模式: 常用设计模式相关知识
- Level_06多线程&&高并发: 多线程与高并发编程
- Level_07_JVM: Java虚拟机的核心原理以及 Java 内存回收机制
- Level_08_网络到分布式: 网络负载以及分布式开发知识
- Level_09_NIO&&NETTY: 网络编程
- Level_10_MySQL: 数据库调优
高级阶段
- Level_11消息中间件: 消息中间件知识,rabbitMQ,roketMQ,kafka,etc...
- Level_12源码分析: Spring 框架,SpringMVC 框架,Mybatis 框架,Netty 框架等源码实现原理分析
- Level_13_亿级流量系统设计: 互联网亿级流量项目系统设计
Extra 技能
- Extra_skills: git,svn,maven,gradle,jenkins,ansible ...
- Extra_操作系统原理: 底层实现原理解析
- Extra_区块链技术: 热门技术区块链
- Extra_大数据: BigData
- Extra_AI: 人工智能