大四技术复盘
大四技术复盘
整体回顾
之前大一的时候就开始接一些单子做,从一开始的 50,100,帮人写写脚本,做做课设作业,再到后来慢慢开始改 bug,开发功能模块,最后做完整的商单,单价也慢慢涨到 200,500,1000,也学了全套的技术栈,运维,后端,前端
期间也接触了很多方向,我认为本科期间比起学习一条专精技术栈,更重要的是培养自己的学习能力,对前沿技术的足够敏感,同时找到自己真正感兴趣的方向
运维(linux 方向)
如果让我在技术栈里找一个最有前景、最有普适性的,那我一定会毫不犹豫说是 Linux,为什么?
操作系统是现代所有计算机设备的基石,这么重要的基础设施不应该属于私人,因此免费开源才是真正的发展方向,并且由于国家需要自主可控,所以政策上也会有一定的倾斜。同时 win 服务器需要一笔版权费,国际上同配置的 win 服务器往往要比 linux 服务贵(授权费)
同时熟悉 Linux 系统也可以更好地适应技术发展,简单列举几个方向
技术方向 | 代表技术 | 共同点 |
---|---|---|
大数据方向 | Hadoop | 基本和 Linux 基础操作兼容 (文件管理,组、用户管理,管道等) |
容器化 | docker | 基本和 Linux 基础操作兼容 |
人工智能、机器学习 | AIGC(stable diffusion) | 炼丹、AI 绘画、大模型基本都是在 Linux 下训练 |
如果足够熟悉 Linux,其实这些技术都可以很快上手
我的水平
linux 到目前日用了五年左右,市面上几乎所有主流的发行版我都深度体验过,他们的区别也都信手拈来
debian 系 redhat 系 arch 系甚至 opensuse 我都用过,目前我个人使用Arch
,服务器使用Debian
.
截至 2023-11-24, Centos 已经转换为 stream(滚动发行版)并且变成 redhat 的上游,不再稳定,强烈建议转到 Debian
,包管理器 apt 和 rpm 基本无缝衔接.并且Debian
的内存管理更加优秀,裸机内存占用不到 200M,安全性也很有保障。
nginx,docker 这些建站常用的技术栈不必说,内网穿透,隧道,ssr 加速这些我也都实际使用也踩过坑,可以说超过大部分应届生甚至水一点的三五年运维是没有问题的
软件开发
其实软件开发本质上就是抽象和封装。也就是常用的MVC模式(Model->View->Controller) 前后端分离开发,本质上解决的是如何获取数据,数据如何存储的问题 说大白话就是服务员->厨子->库房
- 前端(服务员)
- 用户来了找前台/服务员下单,通过菜单下单(菜单就是漂亮的前端界面/框架,react,vue),服务员拿到单子去找厨师报菜(前后端交互)
- 后端(厨师)
- 厨师根据单子开始协调各方(作为前端和数据库的中间层)、向库房要求做菜需要的原材料(从数仓获取数据)、做菜(数据处理,比如单纯的增删改查,或是推荐系统等)、做好的菜给服务员(处理好的数据返回)
- 数据库(库房)
- 仓库管理员(DBA)要保证库房始终可用,使用人数太多会不会把库房冲烂,库房里东西很值钱,如何避免丢失(灾备),如何避免用户把东西拿走了不掏钱(事务)
社会分工是一种标志人类文明飞速进步的经济现象和生产方式。
这也就是为什么早期互联网开发一把梭,现在需要前后端分离开发,因为分离之后,其中每一部分负责的人水平都更高了,更加专业化
个人参与项目总览
- 个人微信小程序项目(微信可直接搜索)
- Abiya(蒙语学习项目,使用云开发,主要提供蒙语的元音辅音学习,内蒙古大学研究生合作项目)
- 灵洋帮(个人2020开始运营,不断美化UI,添加功能,注册用户达2500余人,2023年停运)
- 初心cake蛋糕外送(参与的商业项目,对接青岛某蛋糕店,累计用户达4.65w人,目前长期负责项目的运行维护)
前端开发
前端开发的技术栈主要就是Vue以及相关框架,网页做的比较少,主要集中在微信小程序开发,一开始使用原生三件套开发(html,css,js),后面开始使用uniapp和组件库/UI库(ColorUI/vant),使用组件库开发页面没有问题
后端开发
主要学习 java 后端,大二一整年从基础开始,按照后端所处的位置(前端与数据库之间)分两条路,一方面是使用数据库持久化数据,另一方面就是前后端分离之后, 面向网络请求/前端的 api 开发
- 数据持久化
- 从一开始的 jdbc 手搓 sql,再到后来的 orm 框架 mybatis.因为jdbc需要手动拼接sql极其容易出错,所以通过mybatis映射数据库模型,不容易出错
- 前后端交互
- 从 servlet 开始实现接口,分别实现get/post方法,把重复的操作提取出来,就到了springMVC,通过controller层接收请求,service层处理请求,mapper层映射数据库