1. 概述
1.1 数据库定义
数据是数据库中存储的基本对象,包括数字、图像、音频等形式,在进行逐级抽象后存储在数据库中。数据库是由特定软件,即数据库管理系统(DBMS)搭建、处理、维护的数据及数据间逻辑关系的集合体。它面向多种应用,可以被多个用户、多个应用程序所共享。DBMS是负责数据库搭建、使用和维护的大型系统软件,它对数据进行统一控制管理,以保证数据的完整性和安全性。数据库和数据库管理系统共同组成了数据库系统。
数据是数据库中存储的基本对象,包括数字、图像、音频等形式,在进行逐级抽象后存储在数据库中。数据库是由特定软件,即数据库管理系统(DBMS)搭建、处理、维护的数据及数据间逻辑关系的集合体。它面向多种应用,可以被多个用户、多个应用程序所共享。DBMS是负责数据库搭建、使用和维护的大型系统软件,它对数据进行统一控制管理,以保证数据的完整性和安全性。数据库和数据库管理系统共同组成了数据库系统。
今天聊聊单元测试。
单元测试的概念,在维基百科中是这样描述的:
在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类、抽象类、或者派生类中的方法。
对于大部分的业务而言,在起步阶段,为了快速上线,一般都是单库单表的。但是随着业务的扩张,数据量也随着扩增,单库的性能逐渐变差,就会有数据库的单点压力。因此我们就需要考虑数据库的分库分表方案了。分库分表的目的在于减少单库的负担,提高读写性能。策略可以归纳为拆表和拆分库,拆表是把表的字段进行拆分,即一张表拆分为多张表,这样就使得单表的行数降低,提升查询效率。但是单纯的库内分表只解决了单表的数据过大的问题,并不能解决在同一数据库服务器上的硬件瓶颈,因此需要同时考虑拆库,将原来的单库单表进行拆分数据片,如下图所示:
分布式锁就是应用在分布式环境下多个节点之间进行同步或者协作的锁,分布式锁和普通锁一样,也需要有以下特性:
我们在使用MySQL数据库过程中,如果数据库的读写并发较高,会面对一系列的数据一致性的问题,此时需要对数据表或记录加锁操作来解决并发的一致性问题。
Java语言一直使用GC技术进行JVM自动内存管理,避免手动管理带来的一系列问题,以提升开发人员效率。衡量垃圾回收的三个最重要指标: