小记:
21年我找到实习的时候是以前端工程师的title拿到offer的,那时候我老说自己是程序员,甚至不记得是鹏哥还是杨哥说我的,有些太妄自菲薄了,我们应该自认为是工程师。那时候我还自嘲说这没什么大不了的,但是现在真觉得,我们应该有那么一点心气,作为一个软件开发工程师。
我发现市面上大部分的教程都不好,讲不清又或者讲不全开发的全貌,又或者有人会直接告诉你就去学java,去学c,去学javascript,去学vue,去学spring boot,去学前端,去学后端。可是你都不知道那些是起什么作用就盲目去学有什么用呢?
简而言之,开发分为两部分,一部分是面对客户端,一部分是面向逻辑端的。
举个例子,我们现在要开发一个论文管理系统,学生可以用这个系统来提交自己的论文,老师可以用这个系统来管理学生的论文。那么要实现学生把自己的论文提交到这个系统来这个功能,这个过程中都发生了什么?用到了哪些技术和知识点呢?
在“学生提交论文”这个过程中,我们会用到:
- 前端技术:构建界面,上传数据。
- 网络通信:HTTP/HTTPS 协议传输数据。
- 后端技术:处理请求,验证数据,存储论文。
- 数据库:保存论文信息和元数据。
- 安全措施:登录认证,数据加密。
- 运维工具:容器化部署,监控系统。
而这里我们重点详解一下后端的部分:
简单来说:
-
后端开发是个大圈子
后端开发指的是写所有不直接在浏览器或用户界面上显示的代码,包含:- 服务器开发
- 数据库管理
- 接口设计
- 安全管理
-
服务器开发是后端开发的一部分
服务器开发就是后端开发中专门处理网络请求、接收数据、做逻辑处理并返回结果的那部分。比如,前端发请求“我要提交论文”,服务器接收请求后,把论文存到数据库,告诉前端“存好了”。这个就是服务器开发的内容。
换个比喻
想象你要去快餐店点餐,流程是这样的:
- 你(前端)走到柜台(服务器),说“我要一份汉堡”。
- 柜台工作人员(后端开发的服务器部分)接收你的需求,告诉后厨(后端开发的数据库部分)去做汉堡。
- 后厨做完汉堡后,交给柜台工作人员(服务器),工作人员把汉堡交到你手上。
在这里:
- 柜台(服务器开发)是整个后端的一个部分。
- 后端包括柜台(服务器)和后厨(数据库)。
名词解析:
maven是什么?Maven 是一个帮助程序员更轻松地管理和组织项目的工具。用最简单的话来说:
想象你在做一个大拼图,拼图里有很多小块。这些小块可能是别人已经做好的,你只需要拿来用就行。Maven 就像一个帮你找拼图块的助手,不仅能帮你找到它们,还会把它们摆在合适的地方,并保证它们都能正确地拼在一起。
用更具体的比喻:
- 自动获取工具:如果你在做模型需要胶水、颜料和零件,Maven 可以帮你一键买齐所有材料,你不需要自己一家家店去找。
- 统一标准:Maven 还会告诉你胶水放哪儿、零件怎么组合,按照一定的规则帮你整理工具和材料。
- 节省时间:以前你需要自己装零件、检查每个零件是否合适,现在 Maven 会帮你完成这些事,让你专注于拼模型的乐趣。
所以,Maven 是程序员用来管理代码、找工具(比如依赖的包),并快速搭建和运行项目的一种神器!
什么是 SpringBoot?
想象一下,你在家里想煮一碗面。如果没有工具,你需要:
- 自己生火。
- 自己造锅。
- 自己去找材料。
这样做非常复杂,对吧?
SpringBoot 就像一个“超级方便的厨房工具箱”。它已经帮你准备好了一切:
- 火已经生好了。
- 锅已经架好了。
- 材料都已经洗好、切好了。
你只需要往锅里加材料,然后煮就行了!简单又快速。
那 SpringBoot 做什么呢?
SpringBoot 是用来帮你快速搭建一个软件项目的工具。比如说:
- 你想做一个小程序来记录每天的花销。
- 你想做一个餐厅的点单系统。
- 你想做一个网站,让别人看到菜单。
这些都需要写很多代码,但 SpringBoot 帮你自动做好了很多复杂的准备工作,你只需要专注于实现功能。
为什么用 SpringBoot?
方便:SpringBoot 自己会帮你做好很多“底层”的事情,比如连接数据库、管理用户信息等等。就像快餐店一样,点单后很快就能上菜。
省时间:不用花很多时间去配置各种复杂的东西,像“加水”、“生火”这些都交给 SpringBoot 来做。
简单:对新手很友好,像搭积木一样,只要跟着模板来写就能做出你想要的东西。
举个例子:做一个点单系统
假设你有一个餐厅,想做一个“点单系统”:
- 以前你得手动写代码来:
- 储存菜单信息。
- 记录客户点的菜。
- 计算总价。
- 存进数据库。
- 用了 SpringBoot 后:
- 你只需要告诉它:“这是我的菜单,这是我的数据库地址。”它就能自动帮你做好大部分的事情。
- 你只要再写一小部分代码,就可以让点单系统上线!
SpringBoot 和 Java 的关系
SpringBoot 是 Java 的一个“工具”。就像:
- Java 是做东西的“原材料”(像砖头、钢筋)。
- SpringBoot 是“施工队”,它帮你快速盖房子。
什么是Mybatis?
MyBatis 和传统方式的区别:
在没有 MyBatis 的时候:
- 开发者需要自己写很多冗长的代码来操作数据库,比如手动打开连接、写 SQL、处理结果集等等。
有了 MyBatis 后:
- 开发者只需要专注于写 SQL 语句和逻辑,MyBatis 会帮你处理大部分重复性工作,比如数据的转换和连接的管理。
总结:
- MyBatis 是一个帮助程序与数据库沟通的工具。
- 它让操作数据库变得更简单、更高效,同时又非常灵活。
- 适合需要自定义复杂 SQL 的场景,深受开发者和企业的喜爱。
什么是 config
包?
- 在 Java 项目中,
config
是一个通常约定俗成的包名,用于存放项目的配置类。- 配置类的作用是集中管理项目中与配置相关的代码,比如:
- 数据库连接池配置。
- API 接口路径、白名单、黑名单等安全配置。
- 应用启动时需要加载的初始化参数。
通过将这些配置代码统一放在
config
包中:
- 代码清晰:让项目结构更整洁,配置逻辑集中在一处。
- 易于维护:修改配置时,只需要调整这个包里的类,而不影响其他代码。
什么是 Druid?
Druid 是一个数据库连接池的工具,它主要被用于管理和优化 Java 应用程序与数据库之间的连接。简单来说,它就像一个“中间人”,帮忙管理 Java 应用程序和数据库之间的数据传输,并提供各种强大的监控和管理功能。
数据库连接池:
假设数据库是一个餐馆,而 Java 程序是顾客。每次顾客想点菜,都需要一个服务员(数据库连接)去拿菜单(数据)。
如果每次顾客都需要重新找服务员,就会非常浪费时间(每次都重新建立数据库连接)。
Druid 的作用是:
- 在“餐馆”里提前准备好一些服务员(数据库连接池)。
- 当顾客来了,直接用现成的服务员(连接),大大提高效率。
性能监控:
Druid 还提供了一个监控后台页面(如你图片中的登录界面),你可以用它来:
- 查看当前有多少“服务员”(数据库连接)在忙。
- 哪些查询特别慢(性能问题)。
- 有没有出错的请求(错误日志)。
安全功能:
Druid 提供了黑白名单、用户登录等安全功能,确保只有授权的人能访问数据库或监控页面。
什么是 AJAX?
用最简单的话来说,AJAX 是一种技术,可以让网页在不重新加载整个页面的情况下,向服务器请求或发送数据。
为什么要用 AJAX?
想象一下,你在一个购物网站上填写收货地址。当你输入一个邮政编码时,网页自动加载出对应的城市名字,而你不用刷新整个网页。这就是 AJAX 的作用:
- 局部更新:只更新你需要的部分,而不是整个网页。
- 更快更流畅:减少等待时间,提升用户体验。
- 节省资源:只请求需要的数据,减少流量。
AJAX 就像一个快递员:
- 你(用户)告诉快递员(浏览器)需要什么。
- 快递员去仓库(服务器)拿到你要的东西。
- 快递员把东西送回来,而你不用离开座位(不用刷新整个网页)。
这个技术让网页变得更“聪明”和“快速”,是现代网页开发中不可缺少的一部分!
为什么叫 AJAX?
AJAX 是 "Asynchronous JavaScript and XML" 的缩写,意思是:
- Asynchronous(异步):请求是非阻塞的,网页可以一边加载数据,一边让用户继续操作。
- JavaScript:用 JavaScript 写的代码,用来发送请求和处理响应。
- XML:早期用来传输数据的格式,现在更多使用 JSON。
虽然名字里有 XML,但现代开发中已经很少用它,大部分时候使用更简洁的 JSON 格式来传递数据。
什么是 CORS?
CORS(Cross-Origin Resource Sharing)是一种允许浏览器跨域访问资源的机制,用来解决不同网站之间无法直接请求数据的问题。
举例说明
没有 CORS 的情况:
- 你在
http://www.a.com
上的页面中,前端代码请求http://www.b.com/api/data
。- 浏览器阻止请求,报错:
No 'Access-Control-Allow-Origin' header is present.
- 原因:浏览器默认禁止跨域请求,保护数据安全。
有 CORS 的情况:
- 如果
http://www.b.com
的服务器返回:
Access-Control-Allow-Origin: http://www.a.com
- 浏览器检查到这个头信息,允许请求通过。
- 请求成功,返回数据。
总结
CORS 是一种服务器设置的机制,通过设置
Access-Control-Allow-Origin
等头信息,让浏览器允许跨域访问资源,解决浏览器的安全限制。
什么是微服务?
- 微服务是一种软件开发的架构风格。
- 把一个复杂的软件系统拆分成多个小型、独立的服务,每个服务专注完成一个具体功能。
- 比如:
- 订单服务:只处理订单相关逻辑。
- 用户服务:管理用户信息。
- 支付服务:专门负责支付和交易。
每个服务可以单独开发、部署和扩展,各服务之间通过网络通信(如 HTTP 请求或消息队列)进行协作。
导出Excel报表功能:
官网文档:http://poi.apache.org/
教程:https://www.yiibai.com/apache_poi