项目实战7——在线人员列表逻辑混乱反例

简介: 项目实战7——在线人员列表逻辑混乱反例

在线人员列表逻辑混乱的七个问题:

1.类中写了公共变量导致数据混乱现象

2.保存数据没有考虑业务的隔夜覆盖导致的逻辑漏洞

3.如果涉及到继承,你这个this,如果父类有同样的成员,你最终用哪个呢?

4.参数传递问题

5.参数不一致导致后续维护混乱

6.雪花算法的外键使用varchar类型,后续级联导致类型不一致而产生的索引失效问题;进而产生慢SQL

7.SQL不考虑业务导致的明确的逻辑漏洞

问题分析:

1.类中写了公共变量导致数据混乱现象

既然是公共变量,那么在业务中就是共享的,涉及到修改这个变量的地方可能有很多,同时在可能存在的高并发多线程的状态下,作为线程共享的全局变量。容易出现数据显示混乱的问题

2.保存数据没有考虑业务的隔夜覆盖导致的逻辑漏洞

考虑问题不能只被当前的时间所局限,如果查询加入了createDate,那么如果出现了一个学生从第一天到第二天一直在线的话,那么就查询不到第二天的在线数据。然后导致重复插入的连锁反应。

3.如果涉及到继承,你这个this,如果父类有同样的成员,你最终用哪个呢?

这个问题体现了一个边界是否清晰的问题,成员变量和全局变量之间的边界是要清晰的,否则容易导致数据混乱。如果涉及到继承,这个this,如果父类有同样的成员你最终用的是哪个呢?

5.参数不一致导致后续维护混乱

原本入参里面已经包括了所有需要传的参数,而实体里的参数可以赋不同的值,比如红框里表示状态的参数是“1”,但涉及到了不同的状态也可能是0或者2,那么这里参数写1就不合适了,所以要保持和方法传进来的入参一致。这也可以理解为一种对数据的抽象,支持变化和拓展。

6.雪花算法的外键使用varchar类型,后续级联导致类型不一致而产生的索引失效问题;进而产生慢SQL

7.SQL不考虑业务导致的明确的逻辑漏洞

问题1:update_time=NOW(),在这里的作用是,把所有人的最近登陆时间都修改成了当前时间,表里的最近登录时间变成了一样的,显然这样是不符合逻辑的。

问题2:create_date与接收的createDate一致的时候,条件才成立,但是问题来了,这个字段的值是具体到日期的时间,所以只有在当天两个值才相等,超过24点,则createDate日期加一,那么就不会满足这个条件了,所有在线的人就无法下线了

思想总结:

在做项目的时候,不能只顾着逻辑实现,还要从需求的角度,实际使用的角度,结合业务场景来思考。毕竟项目最终是需要现实中的用户使用的,要避免不合常理的逻辑问题。

相关文章
预约抢单互助系统开发详细功能/需求方案/步骤功能/逻辑项目/源码案例
The development model of appointment and order grabbing mutual assistance system is a widely used development model on mutual assistance service platforms. It adopts a combination of appointment and order grabbing modes, allowing users to make appointments or actively participate in mutual assistanc
|
7月前
|
安全
dapp互助预约排单系统开发步骤指南/案例设计/规则详细/方案逻辑/源码程序
-Determine the core functions and objectives of the system, understand user needs and expectations.
|
开发者
氚云丨开发课— 05 后端代码调试与业务对象操作| 学习笔记
快速学习氚云丨开发课— 05 后端代码调试与业务对象操作。
470 0
|
5月前
|
算法 Perl
技术下午茶:产品经理是如何工作的?如何才算一份好的需求文档?如何设计一个简单的列表,它应该具备哪些基本功能?
技术下午茶:产品经理是如何工作的?如何才算一份好的需求文档?如何设计一个简单的列表,它应该具备哪些基本功能?
59 1
|
2月前
|
安全
dapp农场养成游戏系统开发规则详细/方案设计/步骤逻辑/源码案例
Developing a decentralized application (DApp) farm development game system based on blockchain technology requires considering various rules and implementation steps. The following are some detailed rules and guidelines for reference:
|
8月前
|
安全
交易所系统开发规则案例丨需求分析丨功能设计丨详细步骤丨源码逻辑
Before developing a digital currency exchange system, a detailed requirement analysis is required. Firstly, it is necessary to clarify the types of digital currencies and trading varieties that the system needs to support. Secondly, it is necessary to determine the user roles and permission manageme
|
8月前
|
新零售 人工智能 供应链
链动2+1开发运营版丨链动2+1系统开发案例详情/方案项目/功能说明/逻辑规则/源码程序
新零售是指传统零售业与互联网技术相结合,通过数字化、数据化和智能化的手段,重新定义和升级传统零售业态的模式和经营方式。
|
9月前
|
SQL 安全 关系型数据库
项目实战典型案例7——在线人员列表逻辑混乱反例
项目实战典型案例7——在线人员列表逻辑混乱反例
121 0
项目实战典型案例7——在线人员列表逻辑混乱反例
|
6月前
|
存储 开发框架 安全
dapp去中心化大小公排项目系统开发案例详情丨规则玩法丨需求逻辑丨方案项目丨源码程序
区块链技术的去中心化应用(DApp)开发在近年来逐渐受到广泛关注。大小公排互助系统是一种较为流行的DApp模式之一,其基本特点是参与者按照加入顺序依次排队,
|
6月前
|
存储 前端开发 安全
dapp矩阵公排互助预约排单抢单项目系统开发指南流程丨案例设计丨功能逻辑丨规则玩法丨项目方案丨源码程序
需求分析:与团队明确系统的需求和目标,包括公排互助预约排单抢单项目系统的功能、规则、奖励机制等方面。