- 博客(17)
- 收藏
- 关注
原创 spring 总结一
一些重要的知识点TIME:2/27IOC创建对象在配置文件beans.xml加载的时候,容器中管理的对象就已经被初始化了 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml"); Hello hello=(Hello) applicationContext. getBean("hello");Hello1Person能知道,ioc管理的Hello
2022-02-28 00:07:27
108
原创 SQLite学习之路⑭Wal文件相关(2021SC@SDUSC)
2021SC@SDUSCWal文件格式 WAL日志包括一个头和0到多个框(frames),每个框记录一个页(page)修改的内容。对数据库所有的修改都通过修改框的方式写入WAL日志。单个的WAL日志可记录多个事务。WAL日志中的内容会定期修改到数据库文件中,这个操作成为检查点。3 单个WAL日志可多次使用。也就是说,WAL可以被框占满,当检查点动作过后,其他的框又能写到原来的位置上。WAL日志总是从开始到结尾顺序增长。附加到框后面的检查总数(checksums)和计数(counters)用
2021-12-27 22:39:44
478
原创 SQLite学习之路⑬ wal读写事物(2021SC@SDUSC)
SQLite 学习之路 第十二节 wal读写事物开始一个读事务时,读者记录WAL中最后一个有效的框的索引。读者用myFrame值记录所有的子顺序读操作。新的事务能被添加到WAl中,只要读者使用原始的myFrame值并且忽略新的增加的内容它将看到一个快照。这个技术允许多事务并行读不同的数据库内容。/*** Begin a read transaction on the database.**** This routine used to be called sqlite3OpenSnapshot()
2021-12-20 00:10:24
554
原创 SQLite学习之路⑫ WAL介绍(2021SC@SDUSC)
SQLite 学习之路 第十二节 WAL介绍WAL 的全称是 Write Ahead Logging(预写日志),它是很多数据库中用于实现原子事务的一种机制,是数据库中一种高效的日志算法从数据库原理而言,它实现的是redo日志模式。即修改数据库时,不直接修改数据库内容,而是将修改完的数据写入日志中,并同步到磁盘上,这样对其他读进程就没有影响。如果数据库崩溃,重启后扫描日志文件,然后更新的数据库中。为了提高效率,WAL日志模式提供checkpoint操作,来定时进行数据更新操作。SQLite中WAL的实现
2021-12-19 23:06:14
651
原创 SQLite学习之路⑪ 请求锁和销毁锁(2021SC@SDUSC)
SQLite 学习之路 第十一节 请求锁和销毁锁请求互斥锁,sqlite3_mutex_enter()导致阻塞,sqlite3_mutex_try()返回SQLITE_BUSY。sqlite3_mutex_enter() 和 sqlite3_mutex_try()例程尝试键入一个互斥锁,如果另一个线程已经拥有这个互斥锁,sqlite3_mutex_enter()将阻塞,sqlite3_mutex_try()将返回SQLITE_BUSY,一旦成功键入, sqlite3_mutex_try() 接口将返回SQ
2021-12-05 23:56:08
2055
原创 SQLite学习之路⑩ 互斥锁(2021SC@SDUSC)
SQLite 学习之路 第十节 互斥锁互斥锁部分由mutex.c、mutex_w32.c、mutex_unix.c和mutex_noop.c实现mutex.c的头文件mutex.h如下所示#ifdef SQLITE_MUTEX_OMIT/*** If this is a no-op implementation, implement everything as macros.//宏定义了一系列的函数,需声明SQLITE_MUTEX_OMIT*/#define sqlite3_mutex_al
2021-11-28 21:53:48
4005
原创 SQLite学习之路⑨ DBMS介绍(2021SC@SDUSC)
SQLite 学习之路 第九节 锁文件加锁方法主要有POSIX Locking、No-op Locking、dotfile-file Locking、flock Locking、Named Semaphore Locking以及 AFP Locking6种。介绍如下代码下文分析:POSIX Locking:POSIX locking(POSIX咨询锁)主要依靠设计。ANSI标准1003.1(1996)部分6.5.2.2 的483到490行规定,当一个进程设置或者清除一个锁的时候,这个操作将会覆盖任何之
2021-11-21 23:59:06
3648
原创 SQLite学习之路⑧ DBMS介绍(2021SC@SDUSC)
SQLite 学习之路 第八节 事务管理介绍数据库管理系统(DBMSs)的主要职责是帮助用户对数据库应用操作来操作存储在那里的数据。此外,DBMS保护数据库不受多个并发用户的影响,并在应用程序、系统或电源故障时将数据库恢复到可接受的一致状态。几乎所有DBMSs都使用锁定机制进行并发控制,并使用日志保存恢复信息。在事务修改数据库项之前,DBMS写入一些日志记录在日志中包含恢复信息(例如,事物的旧值和新值)。DBMS确保日志记录在原始数据项被修改之前到达稳定,以至于在事务中止或其他失败的情况下,DBMS有足
2021-11-14 21:30:06
1223
原创 SQLite学习之路⑦ 位图(2021SC@SDUSC)
SQLite 学习之路 第七节 位图位图(Bit-map),是一种数据结构,即用一个bit位来标记某个元素对应的Value, Key是该元素。一个位图就是用来记录在一个事务处理过程中数据库的哪些页被日 志记录,或者哪些页有"dont-write"的性质。Bitvec对象,作为页面缓存的一部分,就是用来追踪那些已记录在日志 的页面(也就是脏页),以提高速度和减少内存的消耗,特别是对于一些大的数据库文件。它实现了用一个对象来表示一个固定长度的位图(Bit-map)。Bitvec 结构体如下,它实现了一个对
2021-11-07 19:46:23
513
原创 SQLite学习之路⑤ Page Cache脏页(2021SC@SDUSC)
SQLite 学习之路 第五节 Page Cache脏页所有的脏页通过一个双向链表来连接在一起,其结构关系如下图所示:脏页的添加和删除:按照LRU的顺序来维护,新的链表元素是从头部插入,即页面p比p->DirtyNext更新。pCache->pDirty指向最新的页面,pCache->pDirtyTail指向最老的页面。通过pcacheManageDirtyList()函数来添加和删除:/* Allowed values for second argument to pcache
2021-10-31 22:01:33
253
原创 SQLite学习之路④ cache具体结构(2021SC@SDUSC)
SQLite 学习之路 第四节 cache具体结构PgHdr1在pcache1.c里定义,PgHdr在pcache.c里定义,MemPage在btree.c里定义。PgHdr1的头是sqlite3_pcache_page的子类pghdr1包含需要查找的页面的页号信息;PgHdr保存了哪些页面是脏页;MemPage包含了数据库页的一些信息,可以理解为MemPage结构体。sqlite3_pcache_page中的pBuf指向数据库页内容的开始地方,pExtra指向PgHdrsqlite3_pcache
2021-10-24 18:10:43
1744
原创 SQLite学习之路③ Page Cache(2021SC@SDUSC)
SQLite 学习之路 第三节 Page Cachepage cache ,即页高速缓冲存储器,用来缓存数据页面。page cache的管理独立于操作系统,当一个线程打开一个数据库连接时就会建立一个page cache,对于一个进程中的多线程,它们可以有独立的cache也可以共享一个cahce。在图中,两个进程(一个是多线程的)访问同一个数据库文件。他们有自己的缓存。即使线程打开相同的数据库文件两次或多次,在默认操作模式下,SQLite为打开的数据库连接分配单独的缓存。缓存被访问通过其不同的所有者Pag
2021-10-17 17:48:58
292
原创 Spring 学习笔记③:第一个Hello例子
Spring 学习笔记③:第一个Hello例子使用xml配置在Maven中导入依赖包编写Hello类编写xml文件测试类使用xml配置在Maven中导入依赖包 <dependencies> <!-- Spring jdbc依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactI
2021-10-07 18:53:17
94
原创 Spring 学习笔记②:IOC理论推导及本质
Spring 学习笔记②:IOC理论推导思想推导:IOC原型前言:此为学习【狂神说Java】过程中所做笔记…思想推导:IOC原型首先了解dao层、service层、controller层:1、dao层:数据访问层,直接操作数据的底层。2、service层:粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务3、controller层:接受页面过来的参数,传给Service处理,接到返回值,再传给页面。然后是代码实现来推到IOC理论:1、UserDao接口public interf
2021-10-07 14:09:48
209
原创 Spring 学习笔记①:基本概念
Spring 学习笔记①:基本介绍框架的导入框架的介绍框架的组成前言:此为学习【狂神说Java】过程中所做笔记…框架的导入框架的介绍1.一个开源的免费的容器(框架)2.轻量级的框架3.以控制反转IOC和面向切面编程AOP为核心4.支持事务的处理总结来说:Spring就是一个轻量级的控制反转和面向切面编程的框架框架的组成使用Spring Boot构建,使用Spring Cloud协调,使用Sping Cloud Data Flow连接。Spring Boot:一个快速开发的脚手
2021-10-06 21:36:29
100
原创 SQLite学习之路② Pager模块介绍和Pager对象(2021SC@SDUSC)
SQLite 学习之路 第二节 模块介绍和Pager对象Pager介绍Pager对象Pager介绍根据上图我们能够大致了解Pager模块在SQLite占据的地位,它是底层模块了,能够对数据库文件进行直接的读与写。在SQLite里面,BTree模块不会直接和磁盘上的数据文件打交道,而是通过Pager对象里面的各种资源来操作数据文件。上图表示,Pager模块包含四个模块,事务管理模块,锁管理模块,缓存模块和日志管理模块,其中事务管理模块的实现依赖于另外三个模块。对于Lock manager:为了实验数据
2021-10-05 22:33:46
681
原创 SQLite学习之路① 准备工作(2021SC@SDUSC)
SQLite学习之路(2021SC@SDUSC)思想准备SQLite介绍结构分析主要任务思想准备这是我第一篇博客,同时也是我第一次“解剖”轻型库——SQLite。其实以前听闻SQLite,但一直以来都使用的是MySQL。因此在分析SQLite背后代码的实现过程中,也是学习一门新技术的过程。我相信,这条路一定是苦尽甘来的…SQLite介绍SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌
2021-09-30 20:08:19
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人