发表于: 2025-04-20 20:27:33

0 108


今天完成的事情:

学习深度思考

为什么要用Log4j来替代System.out.println?

用 Log4j 替代 System.out.println 的主要原因是 Log4j 提供了更强大、灵活和专业的日志管理功能。

为什么DB的设计中要使用Long来替换掉Date类型?

在数据库设计中使用 Long 类型(时间戳)替代 Date 类型,主要是为了提高跨平台兼容性、确保时间的精确性和一致性、避免时区问题,并支持更广泛的时间范围和分布式系统需求。

自增ID有什么坏处?什么样的场景下不使用自增ID?

自增ID在高并发环境下可能导致性能瓶颈、数据隐私与安全问题、在分布式系统中维护全局唯一性较为困难、以及可能引发的数据迁移和合并问题。

在需要高安全性、处理跨多个数据库实例的分布式环境、涉及数据合并或拆分操作、或者希望ID包含业务意义的情况下,不宜使用自增ID

什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?

数据库索引是一种数据结构,用于加速数据检索,通过创建指向实际表中数据行的指针集合来提高查询效率。通常在数据量超过数万条记录时,建立索引能显著提升性能;对于小数据集,索引的效果可能不明显。应在频繁作为搜索条件、参与连接操作、用于排序或分组的字段上建索引,同时需权衡查询性能增益与写入操作成本,避免过度索引以维持系统整体性能。

唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。

唯一索引和普通索引的主要区别在于唯一索引确保索引列中的所有值都是唯一的(除NULL外),而普通索引允许重复值,前者在保证数据唯一性的同时提供查询优化。应在需要防止数据重复,如用户邮箱或产品代码等必须唯一的字段上建立唯一索引,以维护数据完整性和提高相关查询的效率。而在仅需加速数据检索而无需保证值唯一性的场景下,则可使用普通索引。

如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?

不需要,唯一索引不存在重复值无法插入。

CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?

CreatedAtUpdatedAt分别用于记录数据的创建时间和最后一次修改时间,应在数据首次插入时为CreatedAt赋值且此后保持不变,而UpdatedAt应在每次数据更新时更新为当前时间。为了保证数据的一致性和准确性,这两个时间戳应由系统自动管理而不开放给外部接口直接调用,避免手动设置带来的不准确性和潜在的数据完整性问题。

修真类型应该是直接存储Varchar,还是应该存储int?

使用 VARCHAR 存储

直观性:直接存储如 "炼气"、"筑基" 等字符串,数据表中的值可读性强,调试和查询时无需额外解释。

灵活性:如果未来需要新增或修改修真类型,只需在应用层调整即可,不需要修改数据库结构。

避免映射开销:无需在代码中维护从数字到具体类型的映射关系。

明天计划的事情:(一定要写非常细致的内容)

完成深度思考开始任务二

遇到的问题:(遇到什么困难,怎么解决的)

收获:(通过今天的学习,学到了什么知识)



返回列表 返回列表
评论

    分享到