这个作业属于哪个课程 | 2302软件工程 |
---|---|
这个作业要求在哪里 | 软件工程实践寒假作业 |
这个作业的目标 | 回首过去、立足当下、展望未来、思维导图和学习路线 |
其他参考文献 | … |
准备工作
上传
回首过去
-
2.1 当初我为什么选择软件工程这个专业?
家里人能提供的经验有限,我只能通过网络以及周围老师同学的建议来选择最好的路。当时最火热的专业就是计算机,就业前景最好,而且软件工程还能学到有趣的编程知识。 -
2.2 当初对软件工程这个专业的期待和想象是什么?
能学到很多新奇的电脑知识,甚至可以写出自己的游戏,能够用编程语言创造出各种程序
-
2.3 当初希望自己是如何投入这个专业的学习的?曾经做过什么准备,或者立下过什么FLAG吗?
当初希望每天都能跟着厉害的同学、老师学习编程,能不停进步,写出自己的项目。曾经做的准备就是看黑马、尚硅谷等网课视频,flag就是独立开发项目。
立足当下
以下是我的个人简历
- 姓名/昵称: 阿伟
- 照片/头像: 个人头像链接
- 兴趣爱好: 编程、游戏、音乐
- 特长: 逻辑思维、团队合作
成果和获奖经历: 四六级英语证书、优秀学生三等奖
专业水平:
- 掌握的编程语言: Java
- 技术框架: SpringMVC、SpringBoot、MyBatisPlus、SpringCloudAlibaba、RocketMQ、ShardingSphere
- 开发软件: Maven、Git、IDEA、Docker
- 累计代码量: 1w以上
项目经历
12306铁路购票系统 (2023.10-2023.11)
- 描述: 12306 铁路购票系统,采用 JDK17、SpringBoot3 和 SpringCloud Alibaba 构建,完成会员注册、车票查询、车票下单以及支付等业务。底层采用缓存、消息队列以及分库分表等技术支持海量用户购票以及数据存储。
- 核心技术: SpringBoot + SpringCloudAlibaba + RocketMQ + ShardingSphere + Redis + MySQL + Sentinel
- 项目亮点:
- 使用责任链模式重构请求数据准确性检验,比如:查询购票、购买车票下单等业务。
- 通过 RocketMQ 延时消息特性,完成用户购票 10 分钟后未支付情况下取消订单功能。
- 封装缓存组件库,使用布隆过滤器解决用户名注册带来的缓存穿透问题,减轻数据库访问压力。
- 使用 Canal 配合 RocketMQ 完成余票数据在 MySQL 与 Redis 之间的最终一致性,延迟在 1~3s 之间。
- 通过 Redis Lua 脚本原子特性,完成用户购票令牌分配,通过令牌限流以应对海量用户购票请求。
- 通过订单号和用户信息复合分片算法完成订单数据分库分表,支持订单号和用户查询维度。
- 使用 Redis 管道优化车票查询性能,QPS 从 1000 提升至 1900,接近一倍。
展望未来
构建之法社区问题的思考
1. 学生用GPT-4来做作业,老师要如何甄别呢?
用gpt这种语言模型来做作业通常可以通过作业的格式、语言习惯、链接真实性等方面进行检查,比如一个学生平时作业都是很随便写的,而某次作业突然变得非常正式,语言习惯和chatgpt的回答方式十分类似,或者链接无法打开(因为chatgpt经常会胡编乱造一些虚假信息)等,都可以充分怀疑其真实性。
2. 我都是大学生了,上课还要认真听老师讲课么?
我个人认为如果是必修课或者专业对口的课都要认真听讲,而比如文化解读、电影赏析等不太严肃的课可以不那么认真,只需要不违反课堂纪律,能保证期末和平时分都及格就行,主要看个人的价值观。我认为在这些不得不选但是又对我的未来就业、发展不太重要的课上来看几篇别人写的编程文章,比如redis的高可用部署等等能更好地提升自己。
3.程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?
如果是公司的要求那你不得不去做。如果是我以个人开发者的角度来看待,我觉得可以满足。我前几天就看到了不少外国个人开发者会为一些小需求去单独开发一个app,比如windows到macOS的图片、文件互传,应用的定时启动,chrome浏览器的web clipper拓展程序员等等。这些软件或者功能都是很少的需求,但是一旦碰到了却又有点麻烦,而这些软件可以很方便的解决这些需求,能收获到大家的一致好评。
4. AI辅助编程,是一个银弹么?
copiltx、chatgpt4等等ai辅助编程都是广受程序员好评的,一些重复性的工作让ai来做可以极大的提高开发效率。最近大火的幻兽帕鲁游戏就使用了ai。但是ai编程并不是银弹,它可能会让程序员过度依赖ai,也降低了程序员对项目本身的掌控力,项目未来的管理混乱、可能变成一座屎山等等。我暂时没有或者说很少用到ai辅助编程
5.有了GPT类的应用,传统的搜索引擎是否会被完全替代?
个人认为完全不可能,这两个就不是同一类东西。gpt的内容来源于各种搜索引擎的内容筛选,但由于是语言模型,所以特别容易出现胡编乱造的内容。比如你问gpt一篇文章,可能互联网上根本就没有这篇文章,但是它还能讲得头头是道,甚至给出链接,但链接却是无效的。
gpt更像是个助手,帮助回答你不便在搜索引擎上搜索的复杂问题,但是信息的来源都是被筛选过的(防止违法内容),而且容易编造,最好自己检查一下。而搜索引擎才是真正获取信息的首要渠道,任何内容都是实时更新的。
未来的职业规划是什么
从事Java后端开发相关的工作,成为github开源项目的commiter,如果有需求也可以转golang或者其他语言。
对于软件工程实践课程,你有什么理解和期望?
1.希望通过软件工程课程学习到什么技术?
我希望学到Java后端知识,特别是各种框架、中间件在生产环境的应用、开发,高可用部署,未来工作的实际内容等等。
2.你对老师助教有什么期待?
课上或者作业有不清楚的内容可以问助教,能及时回答问题,能帮助解答学生关于学习、作业上的问题
思维导图和学习路线
思维导图
学习路线