Markyan04
Markyan04
发布于 2025-04-30 / 105 阅读
0
1

软件开发岗方向 & 技术栈杂谈


前些日子,有几个同学过来问问软件开发岗有哪些实用技术是值得学习的,因为学校教的东西要么太理论,要么完全没用。也因为现在也到了大二下了,要开始考虑实习的事了。我便在我目前的知识范围内,蜻蜓点水地给出一些概述。希望可以帮到想要进入这一行业的大一/大二学生。

【注:我也只是想要进入这一行的大二本科生,并非行内人士,所以仅作参考。未来真的进入这一行后这篇文章或许还会更新吧。】


一、介绍技术栈前的一些闲话

  1. 方法论 > 技术栈,虽然说下面的内容会简要介绍一些常用技术栈(并非都要学,我或许列出来了但是我一次没用过哈哈哈),但是在开发过程中,合理的工程化思路比浅学一堆技术路线更重要。技术栈不在多,在精。框架只是工具,只是用来解决问题的技术路线,核心是思路与设计。或许有一些同学喜欢在自己的项目中堆砌大量技术栈,如果出于学习目的的项目,倒无伤大雅。如果是需要实际投入生产环境的项目,这种行为一方面加大团队的学习成本和沟通成本,另一方面可能会出现自己设计了一堆不存在的需求加大系统复杂度,然后投产后发现根本没有这么大的需求。

  2. 如果是真萌新,可能下文中很多东西看不懂,最好的方案是去搜搜这些都是啥。下面给出两张图,是某一平台的系统架构图和软件工程流程图。估计可以帮你串起来软件工程化的思路和组件(而非期末大作业那种东西)。

软件开发流程图

软件系统架构图

  1. 现在开发一定要会用AI工具辅助,不论是IDE内置还是去其他地方搜索,要知道怎么问。

  2. 入门这些知识时,一开始可能会去看教程,但做到后面一定是更经常去查文档/看开发社区(当然现在会问AI也很重要)。

  3. 如果有可以参加的项目,大胆加入。别怕不会写,先写,写的时候用才学得会。只看理论/教程而不实践,是没法真正学会的。

  4. 程序员的工作约等于复制粘贴,但是,你的工资的50%是你知道去哪复制,另外50%是你知道粘贴到哪。

  5. 学服务器(或Linux)最好的方式就是自己买一个来玩,比如试着搭建一个自己的博客网站(推荐用现成的博客应用框架搭建,当然你自己写也博客应用,可以当作一种练手,就是有亿点费时间)

  6. 要习惯用Git工具做版本管理和协同开发、用习惯Github(当然你未来的公司可能会用自己的Git仓库而非Github,如果你过于依赖于Github Desktop,到时候可能会遇到一些麻烦,属性Git命令是必要的)。


二、前端开发:用户界面的魔法师

1. 基础三剑客

  • HTML5/CSS3:页面结构与样式的基石

    • 核心能力:语义化标签(header/footer/section)、Flex/Grid 布局系统、CSS 变量与计算属性、媒体查询响应式设计

    • 现代实践:CSS Modules 解决样式冲突、CSS-in-JS 方案(Styled Components)、CSS 预处理器(Sass/LESS)

  • JavaScript/TypeScript:动态交互的核心

    • JS 核心:异步编程模型(Promise/async-await)、闭包与作用域、原型链与继承、ES6 + 特性(解构 / 扩展运算符 / 类)

    • TS 优势:静态类型检查、接口定义、泛型编程、类型推断,大幅提升大型项目可维护性

2. 主流前端开发框架

框架

核心特点

技术架构

适用场景

Vue3

渐进式框架、Composition API、响应式系统(Proxy)

选项式 API + 组合式 API 并存

中小型应用、快速迭代项目、全栈开发

React

组件化思想、虚拟 DOM、JSX 语法、函数式编程

函数组件 + Hooks 机制

大型复杂应用、交互密集型产品、跨平台开发

Angular

全量框架、依赖注入、TypeScript 原生支持

模块化架构 + RxJS 响应式编程

企业级应用、大型管理系统、团队协作项目

3. 进阶方向

  • 工程化体系:模块化规范(ES Module/CommonJS)、构建工具(Webpack/Vite/Rollup)、CI/CD 流程

  • 性能优化:代码分割、Tree-shaking、图片优化(WebP/AVIF)、首屏加载优化、Core Web Vitals 指标优化

  • 跨端方案

    • 桌面端:Electron(VSCode 同技术栈)、Tauri(轻量替代方案)

    • 移动端:React Native(原生渲染)、Flutter(Dart 跨平台)、小程序开发(Taro/Uniapp)

三、后端开发:业务逻辑的守护者

1. Java生态体系

  • 数据库技术

    • 关系型:MySQL(InnoDB 引擎原理、事务隔离级别)、PostgreSQL(JSON 支持、复杂查询优化)

    • 非关系型:MongoDB(文档模型、索引优化)、Redis(数据结构实战、持久化机制、集群方案、缓存方案)

    • 存储进阶:分库分表(ShardingSphere)、读写分离、数据同步(Canal)

  • 核心框架体系

    • 基础层:Spring Core(IOC 容器、AOP 编程)、Spring Context(资源管理)

    • Web 层:Spring MVC(请求处理流程、拦截器机制)、Spring WebFlux(响应式编程)

    • 数据层:MyBatis(SQL 优化、插件开发)、MyBatis-Plus(CRUD 增强)、Spring Data JPA(ORM 映射)

    • 快捷开发框架:Spring Boot(自动配置、starter 机制、Actuator 监控)

  • 微服务架构

    • 服务治理:Spring Cloud Alibaba(Nacos 注册配置、Sentinel 限流熔断、Seata 分布式事务)

    • 服务通信:OpenFeign(声明式调用)、Dubbo(RPC 框架)、Gateway(API 网关)

    • 架构实践:服务拆分原则、API 版本管理

  • 性能与安全

    • JVM 调优:内存模型、垃圾回收机制(G1/ZGC)、性能监控(Arthas)

    • 安全防护:OAuth2.0 认证授权、JWT 令牌机制、接口加密......

2. Python轻量级开发

  • 用Python做后端开发的,真的不多,基本上应用有AI或大数据背景才可能会用。

  • 数据库的基础和Java部分类似,但是Python3对SQLite3支持挺好的,在Python应用中,SQLite3的应用场景挺多。

  • Web 框架对比

    • Django:"电池包含" 哲学,内置 Admin 后台、ORM 系统、认证模块,适合快速开发完整应用

    • FastAPI:基于 Pydantic 的类型提示,异步性能优异,自动生成 OpenAPI 文档,适合 API 服务开发

    • Flask:微框架设计,高度灵活,需自行组合扩展(Flask-SQLAlchemy/Flask-RESTful)

  • 数据处理:SQLAlchemy(ORM)、Pandas(数据分析集成)

  • 典型场景:数据分析接口、AI 模型服务化、轻量级管理系统、爬虫后端

3. Go语言新势力

  • 现在越来越多的Java后端开发有Go背景了,因为Go在多线程上的优势确实大,且有良好的原生支持。

  • 核心优势:goroutine 并发模型(百万级并发支持)、channel 通信机制、内存安全、静态编译

  • Web 框架

    • Gin:高性能 HTTP 框架,路由分组、中间件机制,适合 API 服务

    • Echo:轻量级高性能,支持 HTTP/2,适合微服务开发

    • Go-zero:集成配置中心、服务发现、限流熔断的微服务全栈框架

  • 生态工具:GORM(ORM 框架)、Viper(配置管理)、Go-micro(微服务组件)

  • 应用领域:云原生开发(K8s 相关工具)、高并发服务、中间件开发、区块链应用

4. Node.js全栈方案

  • Node.js有一定的前后端大一统趋势,前面前端部分已经广泛使用Node.js了,同时,现在有些公司会用JS来做后端开发了。

  • 核心框架

    • Express:轻量灵活,中间件生态丰富,适合快速搭建 API

    • Koa:基于 async/await 的现代框架,洋葱模型中间件,更优雅的异步处理

    • NestJS:企业级框架,依赖注入、模块化架构,TypeScript 友好

  • 数据库交互:Sequelize(ORM)、Mongoose(MongoDB ODM)、Prisma(现代数据库工具)

  • 实时应用:Socket.IO(实时通信)、GraphQL(高效数据查询)

  • 部署模式:PM2 进程管理、Docker 容器化、Serverless 函数(Vercel/AWS Lambda)

  • 典型场景:BFF 层(Backend For Frontend)、实时协作工具、API 网关、全栈 JS 应用

四、移动端开发:掌上世界的构建者

1. Android生态

  • 技术栈演进

    • 语言:Java → Kotlin(官方推荐,空安全、协程、扩展函数)

    • UI 开发:XML 布局 → Jetpack Compose(声明式 UI,更简洁的代码)

  • 架构模式:MVVM(ViewModel + LiveData/Flow)、Clean Architecture

  • 核心组件:Activity 生命周期、Fragment 管理、Service 后台任务、BroadcastReceiver

  • 数据存储:Room(SQLite 封装)、DataStore(替代 SharedPreferences)

  • 性能优化:内存泄漏检测(LeakCanary)、UI 渲染优化(过度绘制检查)、启动速度优化

2. 鸿蒙开发新机遇

  • 技术体系

    • 语言:ArkTS(TypeScript 扩展,声明式语法)

    • UI 框架:ArkUI(跨设备 UI 适配)

    • 应用模型:Stage 模型(现代应用架构)、FA 模型(兼容旧版)

  • 核心特性:分布式能力(多设备协同)、跨端迁移工具、低代码开发支持

  • 开发工具:DevEco Studio(调试、性能分析、模拟器)

  • 生态现状:政府 / 国企项目优先适配、开发者扶持计划、逐步完善的第三方库

  • 我们专业的老师曾推荐过两本书,一本是Linux内核的,另外一本就是鸿蒙的,书咋样我不知道(还没太了解鸿蒙开发),名字叫《Harmony OS NEXT启程 零基础构建纯血鸿蒙应用》

五、服务端运维:系统稳定性的保障

1. 基础设施

  • Linux 系统:核心命令(awk/sed/grep)、Shell 脚本编程、系统调优(ulimit / 内核参数)

  • 容器化技术

    • Docker:镜像构建最佳实践、多阶段构建、容器网络

    • Kubernetes:Pod 管理、Service/Ingress 配置、ConfigMap/Secret、StatefulSet 有状态服务

  • Web 服务器:Nginx(反向代理、负载均衡、动静分离、SSL 配置)、Apache

  • CI/CD 流水线:Jenkins、GitHub Actions,自动化测试与部署

  • 运维的内容也相当多的,我还没做过运维,感兴趣的可以去@tatakal@tainya3这两位大佬

2. 中间件

  • 消息队列

    • Kafka:高吞吐量设计、分区策略、日志压缩、Stream 流处理

    • RabbitMQ:交换机类型(Direct/Topic/Fanout)、死信队列、消息确认机制

    • 应用场景:异步通信解耦、峰值流量削峰、日志采集、事件驱动架构

  • 缓存系统

    • Redis:数据结构(String/Hash/List/ZSet)、持久化(RDB/AOF)、集群模式(主从 / 哨兵 / Cluster)

    • 缓存策略:Cache-Aside、Write-Through、过期淘汰机制、缓存穿透 / 击穿 / 雪崩解决方案

  • 搜索引擎

    • Elasticsearch:索引设计、分词器配置、聚合查询、集群部署

    • 应用场景:日志分析(ELK Stack)、商品搜索、全文检索服务

六、结语

软件开发本质是解决问题的艺术。对于新手来说,最重要的就是不要纸上谈兵,学技术时多实践。Talk is cheap. Show me the code。技术选型没有银弹,适合业务场景的方案才是最优解。保持持续学习的热情,但更要培养工程化思维。


评论