Web后端开发
可选语言挺多,接触最多,会的最多的就是Java了,但其他的可选项也非常多,python、C、C#、C++,Go,甚至还可以是nodejs!
不过也并非所有领域都适用,他们各有强项和特点:
接下来就是JavaWeb,学习下网站的组成、网页元素的解析、数据库的知识、javaEE的基础架构。但说实话现在基本上是Spring一统的天下了,应该没人按照原生的方法去写了,ssm、ssmp整合这些名词也很遥远了。但借此了解下Web技术名词还是很有用的比如拦截器、请求响应,cookie、session,甚至还可以回忆计算机网络的知识
在之前Jar包都需要手动导入Library,一个两个还好,多了呢?首先管理不方便,其次这样不科学。当下,包管理器这个概念已经很普及了,像Java的包管理器常见的就有Maven和Gradle。Maven早于Gradle,分别使用的是xml和Json的文档格式管理依赖,见证的是技术的迭代,虽说如此Maven占据了出现早的优势依旧是主流占据广大市场,而Gradle则多见于安卓开发的依赖管理
前面这些掌握的差不多了,就可以正式接触Spring家族了,家族很大,我们学习入门依次掌握SpringFrame(SpringIOC、SpringMVC、Spring AOP、Spring事务......)、SpringBoot、SpringCloud(SpringCloudAlibaba是阿里对Spring家族的一个扩展)以及其他的技术栈组件如SpringDataview、SpringCache、SpringSecurity、Gateway等按需学习
在这个过程,我们也经历了单体应用、分模块分布式应用、微服务 的迁移
微服务,讲究的是分布式,多集群,为了更高的性能,有负载均衡算法选择,由此也引入了很多中间件相关的概念,比如:反向代理、消息队列、缓存、分布式搜索、容器虚拟化,在这种项目量级越发庞大架构越发升级的时候数据库的设计和优化也是跟着迭代:索引的设计和优化、主从架构读写分离、分库分表等
Spring可以说是一个大家族,统一了Java的江山,但是他只是基石,相当于制定了规范让别人去使用和遵循它,围绕Spring而衍生的各种组件和开源框架才是Spring生态强大的体现。
项目最终是要上线的,为了稳定我们的云服务器都基本上采取的Linux系统,掌握一些Linux基础语法和常用命令是不错的选择,虽然现在很多终端的可视化界面都已经能够完成大部分基础的命令。上线的项目需要日志记录和收集方便出现问题的时候追踪,肯定不会使用System.print.out在控制台打印,我们应当有选择的在关键位置记录日志这也被称之为“埋点”
这整个项目的开发过程中我们还会使用版本控制软件比如 分布式版本控制:Git 初始化项目仓库、提交、推送到远程仓库进行协同开发并根据需求创建分支代码,合并审核发布,实现合理的版本控制和分支管理
作为大公司大项目,还会上CI/CD服务也就是持续集成,它的底层原理大体是shell和定时任务,这是非常简单的demo可以参考:Linux > 项目部署,作为个人简单使用其实也够了,当然我们还可以使用Github的Action,gitea也可。复杂项目,公司一般就是K8S了。
最后记一下,常用中间件的搭建,这在开发初期真的很烦人:打造舒适开发环境