前言
这篇我主要将我经常用的工具、软件,以及学习技术、分析问题的思路分享给大家
一、学习步骤
- 先了解项目的整体框架(例如:客户端>>nginx>>接入层>>微服务)
- 然后如果学习nginx,了解nginx在项目中的作用,以及nginx能干什么
- 文档以官网为准、源码可以通过github进行查看、视频教程可以通过B站
- 多搭建几遍环境,跟着视频学习(重要)
- 对于遇到的问题,进行总结,分享
- 最后能把自己所学的内容,表达和实践
总结:一定要对知识有敬畏之心,实践验真知
二、工具篇
- everything 快速搜索工具
- idea 开发工具
- idea插件 很多工具都有好用的插件,这些会让你事倍功半
- xmind 思维导图
- processon 在线思维导图
- git 项目管理工具
- maven/gradle 包管理工具
- vm 虚拟机,linux服务器装机必备
- 向日葵 远程开发必备(推荐)
- nps 内网穿透好手
- teamviewer 远程开发必备
- xshell linux命令行工具
三、java开发过程好用的东西
- 远程调试 可以直接远程调试服务端代码
- jstack 堆栈信息
- lombok 减少getset的编写
- gson java转bean好用的工具
- hutool 三方工具类,很全
四、需要学习
- 要先学习java基本知识(最重要)
- java架构,如:springcloud等(类似如果你学习了整套springcloud,你就会了解里面的网关、负载均衡、注册中心、限流、配置中心)
- jstack等命令:排查堆栈信息的时候,经常会用到
- CICD:持续开发、持续部署(让开发和运维更好的维护项目jenkins\docker\k8s)
- 压测:检验项目是否在高并发的情况下的异常
- postman:调试接口
- git:项目管理工具
五、发散思维
按照我的思路,慢慢的将我所学的技能表达出来
- 刚开始什么都不会,要从基础开始学习,可以通过相关视频,进行跟着学习
- 选择一个开发工具:idea,先使用Main函数编写hello World
- 我们需要代码复用:那就需要工具类(hutools等)、设计模式学习
- 框架很重要,会让我们省了很多无用功:springboot\springcloud等
- 我们如果怕代码丢失或者团队开发:git\gitlab等(项目管理工具)
- 我们需要排查问题,那就需要日志:log4j\logback等,或者可以使用远程调试
- 想让我们代码部署到服务器:linux服务器搭建,linux命令操作
- 更加深入的了解java:反射、泛型、锁、多线程
- 如果怕单台不稳定,负载均衡方案:nginx
- 肯定要对数据进行操作:oracle、mysql
- 需要请求响应比较快,那需要用到缓存:redis
- 多个不同的服务,进行交互,那就需要用到消息队列:kafka、rabbitMQ等
- 所有交互,免不了要跟网络打交道,那就需要了解:http\https\tcp\udp等
- 慢慢的,包越来越多,那就需要管理:maven\gradle\npm等
- 服务端,安全性很重要:spirng-security\oauth2\对称加密\非对称加密等
单体服务大致描述好,现在很多都是微服务架构了,需要了解以下内容:
- 多线程 提高请求响应速度、更好的利用服务器资源
- 锁 在分布式情况下,除了查询的操作,其他都会有数据一致性的问题,锁起到非常重要的作用,分布式锁:redission\zookeeper等可以实现
- 链路 经常会遇到调用一个接口,可能内部会调用无数个微服务,分析问题的时候,非常费劲,这个时候,就需要链路追踪,如:zipkins+sleuth
- 配置中心 微服务,配置非常多,就需要管理起来
- 限流、熔断、降级 服务治理层面,对服务进行适当的优化,会有效的提高用户可用性
- 部署 服务一旦越来越多,上线一次也是非常的麻烦,如果有工具能帮我们就好了,可以通过:jenkins\docker\k8s等工具
- 注册中心 生产者消费者作为微服务的两大端,通过注册中心,就可以解耦,有:nacos\zookeeper\eureka等
- 后续如果遇到问题,排查日志的时候,如果有个平台,可以把所有内容可视化展示,就很方便了,可以通过:普罗米修斯等
总结
技术更迭太快,会用是不够的,一定要理解了,再使用,平时也需要多复习