此笔记中略的部分,在宋红康老师的视频中和其附带的笔记,都有详细内容,这里给出视频地址。 本章专题与脉络 1.Java版本迭代概述 1.1发布特点(小步快跑,快速迭代) 发行版本 发行时间 备注 Java1.0 1996.01.23 Sun公司发布了Java的第一个开发工具包 Java5.0 2004.09.30 ①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME Java8.0 2014.03.18 此版本是继Java5.0以来变化最大的版本。是长期支持版本(Long-TermSupport)缩写LTS Java9.0 2017....

  2Vtxr3XfwhHq   11天前   33   0   0 Java

该篇笔记,是因为想重新学一下SpringCloud和SpringCloudAlibaba框架,但是b站尚硅谷的最新课程,使用SpringBoot3作为,单体服务的框架,而SpringBoot3最低要求JDK17,所以必须要学一下JDK8-JDK17之间的新特性。本来只想看,宋红康老师课程的第18章JDK8-17新特性,但是觉得反射的API有点忘记,遂顺便看了第17章_反射机制,故有此笔记。 本章专题与脉络 1.反射(Refection)的概念 1.1反射的出现背景 Java程序中,所有的对象都有两种类型:编译时类型和运行时类型,而很多时候对象的编译时类型和运行时类型不一致。Objectobj...

  2Vtxr3XfwhHq   17天前   44   0   0 Java

C-17.其他数据日志 在之前的数据库事务的章节中,已经讲过,redolog和undolog。 对于线上数据库应用系统,突然遭遇数据库宕机怎么办?在这种情况下,定位宕机的原因就非常关键。我们可以查看数据库的错误日志。因为日志中记录了数据库运行中的诊断信息,包括了错误,警告和注释等信息。比如:从日志中发现某个连接中的SQL操作发生了死循环,导致内存不足,被系统强制终止了。明确了原因,处理起来也就轻松了,系统很快就恢复了运行。 除了发现错误,日志在数据复制,数据恢复,操作审计,以及确报数据的永久性和一致性等方面,都有着不可替代的作用。 千万不要小看日志。很多看似奇怪的问题,答案往往就藏在日志里。很...

  2Vtxr3XfwhHq   2024年08月07日   33   0   0 Java

C-18.主从复制 1.主从复制概述 1.1如何提升数据库并发能力 在实际工作中,我们常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再方法数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。但并不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的。 如果我们的目...

  2Vtxr3XfwhHq   2024年08月07日   50   0   0 Java

C-19.数据库备份与恢复 在任何数据库环境中,总会有不确定的意外情况发生,比如例外的停电、计算机系统中的各种软硬件故障、人为破坏、管理员误操作等是不可避免的,这些情况可能会导致数据的丢失、服务器瘫痪等严重的后果存在多个服务器时,会出现主从服务器之间的数据同步问题。 为了有效防止数据丢失,并将损失降到最低,应定期对MySQL数据库服务器做备份。如果数据库中的数据丢失或者出现错误,可以使用备份的数据进行恢复。主从服务器之间的数据同步问题可以通过复制功能实现。 1.物理备份和逻辑备份 物理备份:备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL中可以...

  2Vtxr3XfwhHq   2024年08月07日   28   0   0 Java

C-15.锁 事务的隔离性由本章讲述的锁来实现。 1.概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单,金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。 在数据库中,除传统的计算资源(如CPU,RAM,I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL的各个隔离级别提供了保...

  2Vtxr3XfwhHq   2024年08月07日   37   0   0 Java

C-16.多版本并发控制 1.什么是MVCC MVCC(MultiversionConcurrencyControl),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不同等待另一个事务释放锁。 MVCC没有正式的标准,在不同的DBMS中MVCC的实现方式可能是不同的,也不是普遍使用的。这里讲解InnoDB中MVCC的实现机制(MySQL其它的存储引擎并不支持它)。 2.快照读和当前读 M...

  2Vtxr3XfwhHq   2024年08月07日   58   0   0 Java

C-14.MySQL事务日志 事务有4种特性:原子性,一致性,隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由锁机制实现。 事务的原子性,一致性和持久性由事务的redo日志和undo日志来保证。 REDOLOG称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。 UNDOLOG称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性,一致性。 REDO和UNDO本质都可以视为一种恢复操作,但是: redolog:是存储引擎层(innodb)生成的日志,记录的是"物理级别"上页的修改操作,比如页号xxx,偏移量yyy写入了'zz...

  2Vtxr3XfwhHq   2024年08月07日   40   0   0 Java

1.数据库事务概述 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。 1.1存储引擎支持情况 SHOWENGINES命令来查看当前MySQL支持的存储引擎都有那些,以及这些存储引擎是否支持事务。从执行结果来看,在MySQL中,只有InnoDB是支持事务。 1.2基本概念 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。事务处理的原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有...

  2Vtxr3XfwhHq   2024年08月06日   31   0   0 Java

C-12.数据库其他调优策略 1.数据库调优的措施 1.1调优的目标 尽可能节省系统资源,以便系统可以提供更大负荷的服务。(吞吐量更大) 合理的结构设计和参数调整,以提高用户操作响应的速度。(响应速度更快) 减少系统的瓶颈,提高MySQL数据库整体的性能。 1.2如何定位调优问题 不过随着用户量的不断增加,以及应用程序复杂度的提升,我们很难用“更快”去定义数据库调优的目标,因为用户在不同时间段访问服务器遇到的瓶颈不同,比如双十一促销的时候会带来大规模的并发访问;还有用户在进行不同业务操作的时候,数据库的事务处理和SQL查询都会有所不同。因此我们还需要更加精细的定位,去确定调优的目标。 如...

  2Vtxr3XfwhHq   2024年08月06日   26   0   0 Java

C-11.数据库的设计规范 1.为什么需要数据库设计 我们在设计数据表的时候,要考虑很多问题。比如: 用户需要什么数据?需要在数据表中保存那些数据? 如何保证数据表中数据的正确性,当插入,删除,更新的时候该进行怎样的约束检查? 如何降低数据表的数据冗余度,保证数据表不会因为用户量的增长而迅速扩张? 如何让负责数据库维护的人员更方便地使用数据库? 使用数据库的应用场景也各不相同,可以说针对不同的情况,设计出来的数据表可能千差万别。 现实情况中,面临的场景: 当数据库运行了一段时间之后,我们才发现数据表设计的有问题。重新调整数据表的结构,就需要做数据迁移,还有可能影响程序的业务逻辑,以及网站...

  2Vtxr3XfwhHq   2024年08月06日   26   0   0 Java

C-10.索引优化与查询优化 都有那些维度可以进行数据库调优?简言之: 索引失效,没有充分利用到索引-索引建立 关联查询太多JOIN(设计缺陷或不得已的需求)-SQL优化 服务器调优及各个参数设置(缓冲,线程数等)-调整my.cnf 数据过多-分库分表 关于数据库调优的知识点非常分散。不同的DBMS,不同的公司,不同的职位,不同的项目遇到的问题都不尽相同。 虽然SQL查询优化的技术有很多,但是大方向上完全可以分成物理查询优化和逻辑查询优化两大块。 物理查询优化是通过索引和表连接方式等技术来进行优化,这里重点需要掌握索引的使用。 逻辑查询优化就是通过SQL等价变换提示查询效率,直白一点就是...

  2Vtxr3XfwhHq   2024年08月06日   41   0   0 Java

1.数据库服务器的优化步骤 当遇到数据库调优问题时,思考的流程如下图。 整个流程划分成了观察(Showstatus)和行动(Action)两个部分。字母S的部分代表观察(会使用相应的分析工具),字母A代表的部分是行动(对应分析可以采取的行动)。上图,就是数据库调优的思路。如果发现执行SQL时存在不规则或卡顿的时候,就可以采用分析工具帮我们定位有问题的SQL,这三种分析工具你可以理解是SQL调优的三个步骤:慢查询、EXPLAIN和SHOWPROFILING。 小结: 2.查看系统性能参数 在MySQL中,可以使用SHOWSTATUS语句查询一些MySQL数据库服务器的性能参数、执行频率。 S...

  2Vtxr3XfwhHq   2024年05月17日   81   0   0 Java

C-08.索引的创建和设计原则 1.索引的声明和使用 1.1索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从功能逻辑上分类,索引主要有4种,分别是普通索引,唯一索引,主键索引,全文索引。 按照物理实现方式,索引可以分为2种,聚簇索引和非聚簇索引。 按照作用字段个数进行划分,分为单列索引和联合索引。 1.1.1普通索引 在创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可以创建在任何数据类型中,其值是否唯一和非空,要由字段本身的完整性约束条件决定。建立索引以后,可以通过索引进行查询。例如,在表student的字段name...

  2Vtxr3XfwhHq   2024年05月04日   59   0   0 Java

C-07.InnoDB数据存储结构 1.数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般是不同的,甚至有的存储引擎比如Memory都不用磁盘来存储数据。 由于InnoDB是MySQL的默认存储引擎,所以本章剖析InnoDB存储引擎的数据存储结构。 1.1磁盘与内存交互基本单位:页 InnoDB将数据划分为若干个页,InnoDB中页的大小默认为16KB。 以页作为磁盘和内存之间交互的基本单位,也...

  2Vtxr3XfwhHq   2024年04月27日   75   0   0 Java

1.为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。MySQL中的索引也是一样的道理,进行数据查找时,首先查看查询条件是否命中某条索引,符合则通过索引查找相关数据,如果不符合则需要全表扫描,即需要一条条的查找记录,知道找到与条件符合的记录。上图,是在没有索引的情况下,从磁盘读取数据的示意图。建立索引的目的,就是为了减少磁盘I/O的次数,加快查询速率。 2.索引及其优缺点 2.1索引概述 MySQL官方对索引的定义为:索引(index)是帮助MySQL高效的获取数据的数据结构。 索引的本质:索引...

  2Vtxr3XfwhHq   2024年04月22日   66   0   0 Java

C-05.存储引擎 为了方便管理,把连接管理,查询缓存,语法解析,查询优化这些不涉及真实数据存储的功能划分为MySQLServer的功能,把真实存取数据的功能划分为存储引擎的功能。所以在MySQLServer完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。 MySQL中提到了存储引擎的概念。简而言之,存储引擎就是表的类型。其实存储引擎之前叫做表处理器,后来改名为存储引擎,它的功能就是接收上层传下俩的指令,然后对表中的数据进行提取或写入操作。 1.查看存储引擎 查看存储引擎指令 showengines; 查询结果,MySQL8.0支持9...

  2Vtxr3XfwhHq   2024年04月20日   70   0   0 Java

C-04.逻辑架构 1.逻辑架构剖析 1.1服务器处理客户端请求 首先MySQL是典型的C/S架构,即Client/Server架构,客户端使用的是mysql,服务器端程序使用的mysqld。 不论客户端进程和服务器进程是采用那种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。 那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?这里以查询请求为例展示: 下面具体展开看一下: 1.2Connectors Connectors,指的是不同语言中与SQL的交互。MySQL首先是一个网...

  2Vtxr3XfwhHq   2024年03月27日   68   0   0 Java

1.用户管理 MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限。普通用户只拥有被授予的各种权限。 MySQL提供了很多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器,创建用户,删除用户、密码管理和权限管理等内容。 MySQL数据库的安全性需要通过账户管理来保证。 1.1登录MySQL服务器 启动MySQL服务后,可以通过mysql命令来登录MySQL服务器,命令如下: mysql–hhostname|hostIP–Pport–uusername–pDatabaseName–e"SQ...

  2Vtxr3XfwhHq   2024年03月17日   125   0   0 Java

C-02.MySQL的数据目录和表文件解析 1.MySQL8的主要目录结构 [root@LinuxCentOS7-132dbtest1]find/-namemysql /etc/logrotate.d/mysql /etc/selinux/targeted/active/modules/100/mysql /etc/selinux/targeted/tmp/modules/100/mysql /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/local/maven-repo/mysql /var/lib/mysql /var/lib/m...

  2Vtxr3XfwhHq   2024年03月11日   151   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~