从一个小需求谈谈如何锻炼编程思维

怎样建立编程思维 请看这里 浅谈个人对编程的学习方法和学习思路 阅读详情

大家好,我是程序员青戈,一个被Bug耽误了才艺的程序员👦专注于Java领域的知识分享和技术交流,每天会给大家带来Java学习的干货教程📚

微信搜索公众号 Java学习指南,回复 面试 领取一线大厂面试题一套😋加号主微信 xia_qing2012,可以进技术交流学习群一起共同进步哦😊

在这里插入图片描述


故事

话说这天,夜里11点多了,我在公司加班刚写完bug,正悠哉悠哉地准备掏出手机搞一把农药再走(话说最近好坑>_<单排连跪,难受),突然远处晃晃悠悠的出现一个身影。

我一惊,这么晚了,是谁?

走近一看,卧槽,原来是公司刚来的实习生小哥哥。

我: 我靠,老弟,你要吓死我吗?这么晚了你咋还不回去啊?

小哥哥: (抓了把头发,苦着脸) 啊,老哥你还在啊,我这不正发愁呢吗…

我: (搬了个椅子坐下,顺手剥了小哥哥的橘子🍊吃了起来) 怎么讲,老弟?跟我说说呗,让我给你分析分析

小哥哥: (偷偷的把剩下的一个香蕉藏了起来) 啊…是这样的。这周老板给了我一个任务,让我写一个登录的接口,我感觉挺简单的,就一口答应了。结果都到了周四晚上了,我还没想好从哪开始写…我是不是很菜啊?难道我不适合编程么…(又抓了一把头发)

我: (开始心疼小哥哥…的头发,毕竟程序员最宝贵的就是头发了,他这么一把一把的抓,到最后肯定跟我一样,秃了半边) emm…小哥,你先别摧残你的发际线了,听我说。这个登录功能虽然挺简单的,但是如果是新手,没怎么写过代码,确实不好实现,我来带你分析分析需求和功能设计吧

小哥哥: (忙停下了抓头发的手,把刚才藏起来的香蕉🍌掏出来给我) 真的哈,老哥,你太好了!

我: (一边剥香蕉皮,一边开始拿出纸笔) 嗯,你想想,如果你打开一个陌生的网站,比如全球最大的同性交友网站 github ,你想登录进去看看大佬们写的骚代码,第一步干什么?

小哥哥: 那肯定是先输入账号密码咯…

我: 对呀,这个账号密码不就是用户发送给后台服务用于检验权限的凭证吗?那我们的登录接口是不是有两个参数?账号(account)和密码(password)。

小哥哥: 是的,那有了账号密码之后呢?

我: 用户输入完账号密码,是不是就点击登录按钮?那这个登录,是不是就是前端向你的服务端发起请求?这个请求就是前端把账号密码通过接口传递给你,至此,用户的操作就完成了,剩下的就是你服务端的工作了。

小哥哥: (扶了一下黑框眼镜) 噢噢,我有点懂了。那么我的接口拿到了用户的账号密码,是不是就开始检验用户是不是合法了?

我: 对,但是你还需要做一个工作。一般用户的账号密码是存在数据库的,所以你需要写一个从数据user表根据账号密码查询用户的数据库接口,也就是说你将前端传来的账户和密码作为参数去数据库查询一次。

小哥哥: 嗯嗯,这个我知道。我学过springboot,可以用mybatis或者jpa操作数据库。

我: 哈哈,数据库访问的工具有很多,不同的场景我们可以使用合适的工具。那么从数据库查询了结果出来,我们就可以判断了,如果数据库查询到了记录。说明用户真实存在,返回给前端一个成功的状态码,否则,用户不存在,也给出相应的提示。返回结果一般是这样的:

//验证成功
{
"code": 0,
"msg": "登录成功",
"data": userInfo
}
//验证失败
{
"code": -1,
"msg": "账号或密码错误",
"data": null
}

前端拿到后端返回的信息,可以直接把json里msg返回给用户,也可以根据code自定义相关的提示话术。

小哥哥: 搜嘎!我好像知道怎么做了!我来理一下:

  1. 用户打开交友网站,输入账号和密码,点击登录
  2. 前端请求我写的登录接口把用户的账号密码发送给我
  3. 我有一个登录的controller,里面有一个登录的接口,接口的请求路径是: /session,请求方式是post,请求数据格式是 url参数,把这些跟前端约定好,他就可以顺利把数据传给我
  4. 我拿到账户密码后就开始把它们作为参数查询数据库,看看用户是否存在
  5. 根据查询的结果返回给前端相应的json数据
  6. 前端根据我返回的结果再给出相应的提示,告诉用户登录成功或失败

我: (趁他讲的时候不动声色的又把小哥哥的面包🍞偷吃了) 嗯哼,小哥,思路清晰了吧?哈哈,其实啊这个只是最最简单的登录模型呢。一个商用网站的登录往往比这个复杂的多哦。比如前端用户可登录次数的限制,密码传输的加密,短信登录,免密登录,验证码检验,服务端网关拦截非法请求,服务端在用户登录之后做的一系列的业务操作等等…

小哥哥: 啊,这么多?我又懵圈了…

我: 没关系,小哥。我刚才帮你分析的过程你还记得吧。记住从用户的需求出发,模拟用户的操作,再想一想用户操作对应的前端请求是什么,前端请求来了后端做什么业务操作,返回什么样的信息给前端。最好你画一个流程图,就像你刚才那几个步骤一样,根据流程图把每一个小点都列出来,画好他们之间的前后关系,这对你写代码帮助非常大哦~

小哥哥: 嗯嗯,是这样的。刚才我理了一下,思路清晰多了。其实后端的话就接口层,业务层,数据库访问层这些,层次还是比较清晰的。接口层可以对用户输入的参数做一些检验,比如用户输入的账号密码是否为空,长度是否合法等等;业务层主要是解决一些需要逻辑处理的业务,比如账号密码的校验,发送邮件,发送短信,缓存用户信息等等;数据库层呢负责数据访问,比如用户的增删改查等。

我: 哇小哥哥,你真棒!总结的很好呢。

小哥哥: (有点不好意思) 老哥,谢谢你,我请你吃夜宵吧…

我: 好嘞,走着~

每天一个Java小技巧,今天你学废了吗?


感谢大家的阅读,能否请您小手点一点下方的 一键三连 支持一下作者呢😊

最后送诸位一句话:但行好事,莫问前程。再见~

软件测试学习:从课后习题到实战能力的思维构建指南 软件测试是保障软件质量的关键环节,其核心在于通过系统性的方法验证软件功能、性能及安全性。其基本原理涉及需求分析、测试用例设计、缺陷管理与报告等标准化流程。掌握软件测试技术,对于提升软件可靠性、优化用户体验和降低项目风险具有重要价值,广泛应用于金融、电商、物联网等各类软件开发场景。本文聚焦于如何高效利用课后习题这一核心学习工具,通过模拟真实工作场景,将孤立的知识点串联成网状的测试思维体系。文中将深入探讨如何将习题作为知识点的“压力测试场”,并分享一套遇到难题时的“自救”方法论与资源指南,旨在帮助学习者跨越从“ 阅读详情

相关推荐

女生适不适合学编程?女程序员吃不吃香呢?

今天就来谈谈这个话题吧:女生到底适不适合学编程?女程序员吃不吃香呢? 大多数人觉得编程工作应该都是男孩子的事情,程序员不都是一些男生吗,在学校学it的,学编程的专业里好像女生凤毛麟角。 职场中,女性能顶半边天 这都是比较传统的想法,如今中国女性的地位越来越高,在正常的职场中,女性也能顶半边天。 中国这10年进步太快,除了传统的观念女生学习教师、护士、会计等专业外,越来越多的女生随着社会的开放打破传统思想,选择时下比较热门的IT专业,IT行业对人才的需求逐年增加,越来越多的女生投身IT白领岗位。 如今这个时代

dirft_lez的博客 1279

最简洁的Java基础概述,编程思维训练

在学习Java编程基础的过程中,我们通过编写一些基本的算法题来训练我们的编程思维,进而巩固我们之前的编程基础基础知识。本章通过《买飞机票》、《找素数》、《开发验证码》、《复制数组》、《数字加密》、《评委打分》、《双色球案例》算法思维训练题来锻炼我们的编程思维和巩固之前学习的基础知识。

bryceYangYu的博客 724

平行趋势检验没通过怎么办?别慌,试试三重差分DDD与事件研究法

本文探讨了当平行趋势检验未通过时,如何运用三重差分法(DDD)与事件研究法进行政策评估。通过Stata代码示例和实战案例,详细介绍了DDD的原理、适用场景及实现步骤,并提供了替代方案如合成控制法和匹配DID,帮助研究者获得更准确的因果推断结果。

weixin_28732953的博客 615

一行代码学会C语言(手动狗头)

#include <stdio.h> #include <stdbool.h> int main() { #if 1 printf(&true["\021%sck\012\0"], true["have"] + "fro" - 0x60); #else 解析: printf("true = %d\n", true); printf("%s\n","fro"+1); printf("%c\n","have"[1]); printf("%d\n",'a'.

weixin_66885166的博客 1400

Clipper库中文帮助文档

引言: 第一次接触Clipper,主要是想用来处理DXF中的图形,网上也有博友翻译过,但是可惜打不开,好像那个网站https://love2.io凉凉了,但是优快云上也有博友分享了CHM,看着只剩3个下载币的我好无奈,一怒之下花费两天的时间将英文CHM也翻译了一遍,主要还是想在翻译的同时好好的理解Clipper,为使用打下坚实的基础。当然我也会无私的奉献出来。 简单的认识一下Clipper:...

zefllj的博客 3423

OBD诊断协议:OBDⅡ (SAE J1979) 和 OBDonUDS (SAE J1979-2) 和ZEV OBD技术架构的详细对比

摘要:文章对比了2025年最新OBD技术标准(SAEJ1979系列)的三大架构:传统OBD-II(已淘汰)、OBDonUDS(燃油/混动车)和ZEVOBD(新能源车)。核心发现:1)OBDonUDS与ZEVOBD共享UDS协议栈和DoIP通信标准,仅应用层数据(DID/DTC)不同;2)物理层统一为CAN+以太网,支持远程诊断和OTA;3)诊断工具需同时兼容J1979-2/3数据库。技术演进呈现"协议统一化、数据专用化"趋势,2027年后所有新车将强制采用新标准。

m0_56482679的博客 2393

学习程序设计语言的思维

• 区分语法错误(Syntax Error)、运行时错误(NullPointerException)、逻辑错误(错误算法)。• 实战:对比冒泡排序(O(n²))和快速排序(O(n log n))在10³ vs 10⁶数据量下的性能差异。• 建立对O(n²)与O(n log n)的敏感性(如数据量翻倍时,前者耗时变4倍,后者变约2.2倍)。• 基线条件(Base Case)+问题拆分(Divide)+结果合并(Combine)。• 训练:在LeetCode做题时,先判断问题类型(贪心/回溯/分治)再编码。

qq_39580065的博客 1126

ESP32搭配LVGL显示图片的两种方法详解:内部存储 vs 外部文件

本文详细介绍了ESP32搭配LVGL显示图片的两种方法:内部存储与外部文件。内部存储方案适合快速响应的小图片,而外部文件方案则适用于需要灵活更新和大容量图片的场景。通过对比分析,帮助开发者根据项目需求选择最优方案,提升嵌入式系统的UI性能。

weixin_30399821的博客 519

编写程序的主要步骤

2. 设计程序结构:在确定了需求之后,接下来要进行程序结构的设计。这包括确定程序的模块划分、函数的设计以及数据的组织方式等。一个好的程序结构能够提高代码的可读性和可维护性。3. 编写代码:在完成程序结构的设计之后,就可以开始编写代码了。编写代码是实现程序功能的关键步骤,需要根据需求和设计思路将代码逐步实现。1. 确定需求:在编写程序之前,首先需要明确自己的需求。要清楚地知道程序需要完成什么功能,这样才能更好地进行后续的工作。

2301_80227569的博客 842

保姆级教程:从Salmon输出到DESeq2,搞定RNA-seq表达矩阵标准化与下游分析准备

本文提供从Salmon输出到DESeq2标准化的RNA-seq数据分析全流程指南,详细解析表达矩阵构建、标准化方法选择及下游分析准备。重点介绍如何将Salmon定量结果转换为DESeq2兼容格式,包括TPM与原始计数的处理技巧,以及常见问题排查方法,帮助研究人员高效完成RNA-seq数据分析。

weixin_42699679的博客 304

OpenClaw进阶实战(二十五):抖音企业号——私信回复与视频评论分析

摘要:本文介绍抖音企业号自动化运营方案,突破抖音强风控体系的技术挑战。针对内容生产、私信互动和账号矩阵三大场景,提出混合架构解决方案: 私信自动化:结合关键词触发与随机延迟(45秒±15),实现拟人化回复,支持价格咨询/商务合作等高优先级消息识别 混合技术栈:官方API(合规)+真机RPA(覆盖长尾需求)+AI辅助生成(脚本→剪辑→发布闭环) 安全策略:通过设备指纹模拟、行为间隔随机化和内容差异化处理规避风控,提供每日200条的安全操作阈值。配套OpenClaw技能实现一键部署,包含cookie配置、回复规

PeterPan的博客 144

再谈软件测试如何提升编程能力?

现在是2020年了,快60岁的SOHO中国创始人潘石屹在个人微博上宣布开始学习python,令人佩服。

公众号已改名为-程序员阿沐 567

红薯游客小眼睛接口分析与Python脚本实现

小眼睛接口与请求流程分析,使用Python实现小眼睛+1

吴秋霖的博客 2615

谈谈技术能力

在程序员中,围城现象非常严重,是技术人在职业发展过程中必定会面临的困境。但要回答清楚这个问题,其根源不在于是写不写代码或者代码量的多少,其本质还是要回到什么叫技术能力以及如何提升技术能力这个根节点上来。我把我的一些观察和思考总结下来,供大家参考。...

阿里云云栖号 1172

基于matlab不变矩的数字验证码识别系统

随着互联网技术的快速发展和应用,网络给人们提供了丰富的资源和极大的便利,但随之而来的是互联网系统的安全性问题,而验证码正是加强 Web 系统安全性的产物。全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)也是验证码的一个应用程序,可以区分用户是人类还是计算机智能单击对象。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 917

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java-01谈谈你过去学习编程语言的方法,经验和教训

编程语言 编程语言的本质就将自己的想法和需求逻辑地组织起来,然后通过代码让计算机执行,从而达到你想要的目的。 目前自己已经学习了C,C++,Python等编程语言,现在正在学习Java语言,下面是我自己对于编程语言学习 的总结与反思。 学习方法 我自己学习编程语言主要在课后学习,老师上课只是起一个引领作用,还需自己亲身实践,去领悟。遇到不会的 我通常会到网上去搜索问题,然后将它搞清楚,弄明白,然后适当记笔记。然后我觉得编程也要培养自己的手感, 经常写代码不仅是对自己熟练度的提升,而且是对自己逻辑思维能力的锻

Galaxy 234

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python可以自学吗需要什么基础-python自学行吗?给编程初学者零基础入门的建议...

前言编程是一门高深的学问,对很多人来说都很难掌握,十分晦涩难懂。然而,还是有非常多人喜欢编程,喜欢「写编程」带给自己的乐趣、与满满的成就感。听很多朋友问过,如果是零基础的初心者,想转换跑道学编程该如何下手呢?今天就要针对「零基础如何自学编程」这个主题来谈谈。为什么大家都推荐新手从Python开始学起,再钻研其他语言呢?原因很简单,实务上来说: Python最近几年发展的非常迅速,尤其是2017年,...

weixin_37988176的博客 79

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝桥杯Scratch国赛真题深度解析:从刷题到构建编程思维地图

图形化编程是青少年接触计算机科学的重要入口,其核心在于通过积木式指令培养逻辑思维与问题分解能力。在Scratch等平台中,编程原理体现为事件驱动、消息广播、克隆体管理等机制,这些技术能有效训练学生的顺序、分支与循环结构思维。掌握这些基础概念的技术价值在于,能将抽象问题转化为可执行的程序流程,提升解决复杂任务的系统化能力。在应用场景上,蓝桥杯等赛事真题常围绕多角色协同、列表数据管理、物理模拟等高频考点设计,旨在考察学生的综合应用与创新实践水平。本文以蓝桥杯Scratch国赛真题为样本,深入拆解其命题逻辑,探讨

weixin_30564901的博客 337

python入门指南在线阅读,python初学者指南pdf下载

python语言很适合普通人学习,学习python之后可以从事的工作有数据挖掘及分析、游戏开发、自动化测试、网站开发爬虫等等等。

2401_85422614的博客 362

【十日谈】编程上的追求卓越和圈子论

此处旨在做一做十日谈本身专长的事情,谈一谈过去十天。 自从以一个Coder自居后,日子总是过的很快。但也许日子过得快的原因是因为我毕竟大三了。打开时间清单才发现,这个十天,其实也完成了不少事情了。搜索一下有点儿疼的脑子,又发现,好多事情没有完成。 大学的圆满 我的大学很幸福,有一开始步入大学的懵懂,到后来的感知到世界的花红酒绿,然后是各式各样的体验,大二时陷入学习的深渊,在哪些无味的专业知识中挣扎...

蒸发杰作的博客 956

软件测试如何提升编程能力?

你好,我是小牛。 现在是2020年了,快60岁的SOHO中国创始人潘石屹在个人微博上宣布开始学习python,令人佩服。小到中小学各种少儿编程班层出不穷,再到高中生的OI竞赛,佼佼者可以直接保送各种名校甚至清华姚班...... 在大学本科教育阶段,几乎所有学校的工科专业在大一或者大二都会学习一门编程语言,比如C语言或者python语言。甚至某些学校的经管类的专业也会学习编程语言,编程已经逐渐成为了大学教育阶段的通识课。 这一切,似乎都在预示着,全民编程的时代已经到来。所以,作为一枚互联网从业者,不懂编

Arrion的博客 623

数学建模进阶:从解题思维到建模思维的三大转变与实战流程

数学建模是运用数学语言和方法,通过抽象与简化,对实际问题进行描述、分析和求解的过程。其核心原理在于,面对信息不全、因素众多的现实世界,需要在模型的精确性与可行性之间做出权衡,以构建一个能抓住主要矛盾、在可接受误差范围内提供指导意义的数学框架。这一过程的技术价值在于,它能将模糊的实际问题转化为可量化、可分析、可预测的模型,从而为决策提供科学依据。其应用场景极为广泛,涵盖从传染病传播预测、交通流量优化,到产品销量预测、资源分配等众多领域。本文聚焦于数学建模思维的关键跃迁,深入剖析了从追求精确解到寻求满意解、从套

weixin_30896511的博客 437

结合「我的」个人经历:谈谈程序员到底该如何学习?

【回复“1024”,送你一个特别推送】之前在知乎上回答了一个问题:学习编程照着别人的代码敲进去有效率吗?然后,我就把我的学习方式回答了一下,没想到反响挺好的。其实,通过这...

非著名程序员 519
上一篇: 用费曼学习法教小姐姐学习Java面向对象
下一篇: 程序员只会增删改查被开除?看我如何逆风翻盘!
程序员青戈
程序员青戈 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 3万+粉丝 250原创
评论 45
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员青戈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值