一位普通Javaer的成长之路

前言

此文章用于记录自己作为Java开发者的成长历程
永远置顶于我的博客

读过的书与看过的视频

程序员基地

Java

为什么要做Java

其实本来是想学C#做桌面应用程序的,奈何Java的火热和易上手,加上好找工作些,所以入行了Java

当然,也不影响我现在偶尔会学学C#,做windows下的桌面应用程序

Java基础

入门级别,学完了也仅限于刚刚入门能看懂代码,自我编写的能力有限

有C语言基础的情况下,很快就能学会
从零开始重学Java 第0天

JavaWeb

Java强大的地方在于做Web服务,访问密集,计算相对较少

Java基础学习结束,能做到的系统仅仅局限于普通的命令行程序,想要做一个大众能看能用的系统,就需要JavaWeb了

熟悉又陌生的JavaWeb 第0天

Spring与ORM

虽然已经可以用JavaWeb开发网页,但仅限简单网页,如果网页数量较多,项目整体的开发和管理是很痛苦的,而且前后端开发人员会同时操作一个项目
于是有了前后端分离,前端负责页面展示交互,后端负责数据逻辑,以约定好的(JSON)数据格式交互,前后端开发人员专心自己负责的部分就可以了

Spring与SpringMVC

SpringBoot

一键启动,约定大于配置,Java框架的里程碑,Java不再需要繁杂的xml配置

ORM

数据库与Java直接交互的封装,再也不需要自己new Statement啦,框架帮你处理

日志分析追踪

假如没有日志,系统出现了问题,都无从排查,记录日志是一个好习惯
利用好切面等统一处理的方式来记录通用日志,重点代码处单独记录日志

日志记录

不想每次都去拉取log文件排查,那就异步记录到数据库里吧

日志追踪

涉及到微服务多模块调用,如何确定是同一笔请求,就需要利用TraceId在模块间传递

单体系统出现性能瓶颈

单体系统,已经用了加内存,加线程数量,仍不足以解决当前业务并发量,需要想新的办法

Nginx

单体模块性能有些不够用,我们部署2台,靠Nginx反代均衡负载
新老系统并行,利用Nginx分发请求到不同系统

搜索引擎

大文本数据的搜索,多种类型数据的聚合搜索,仍然傻傻的用 like '%xx%',数据量访问量日趋增大,数据库不堪重负
于是引入搜索引擎,方便客户端快速检索到需要的数据

微服务,Duboo或者SpringCloud

多种业务代码全部写在一个模块里总是不好的,不利于优化代码,也不利于分工协作,启动也越来越慢,一些公用代码也难以改动
我们可以把每个模块都独立出去,各自管理自己分内的事情

Redis

单模块下,缓存可以用本地Map来处理,业务加锁也只需要关注自身
微服务多模块,就不能再使用单模块方案,于是有了Redis来解决这种情况

消息中间件

单模块下,多任务可以本地使用线程池来解决
微服务多模块,注重解耦,两处代码不在一个模块里,需要通知另一处代码协作处理

Jenkins流水线

模块太多啦,每次版本发布升级都需要处理很多台服务器,容易出错
重复的操作都可以被程序替代,Jenkins为你解忧

继续深入学习架构

分布式数据库

深入浅出JVM

C#

Python

Go

php

C/C++

Shell

数据库

前端

posted @ 2024-02-19 11:20  迷路的哨兵甲  阅读(19)  评论(0编辑  收藏  举报