摘要:
前言 使用的是《算法》第四版英文版,主要是习题解答。 书中jar包的导入请戳:算法(第四版)中algs4.jar下载和使用 EXERCISES 1.1.1 1.1.2 1.1.3 import java.util.Scanner; public class Something { public st 阅读全文
摘要:
实验楼项目:C++实现太阳系行星系统 关于详细知识跟着实验做比较好 基础知识 做这个项目需要知道一些基础知识: OpenGL GLUT 类设计 main.cpp #include<GL/glut.h> #include "solarsystem.hpp" #define WINDOW_X_POS 5 阅读全文
摘要:
备份与恢复 概述 根据备份的方法将备份分为: Hot Backup(热备)(在线备份) Cold Backup(冷备)(离线备份) Warm Backup(温备) 热备是指数据库运行中直接备份,对正在运行的数据库操作没有任何的影响; 冷备是指备份操作是在数据库停止的情况下,一般只需要复制相关的数据库 阅读全文
摘要:
认识事务 概述 事务:访问并更新数据库中各种数据项的一个程序执行单元。 数据库引入事务的主要目的:事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,可以确保要么所有修改都已经保存了,要么所有修改都不保存。 InnoDB存储引擎中的事务完全符合ACID的特性: 原子性(atomic 阅读全文
摘要:
1. 数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合。 实例:MySQL数据库由后台线程以及一个共享内存区组成。(数据库实例才是真正用于操作数据库文件的) 实例与数据库的关系通常是一一对应的,但是在集群情况下可能存在一个数据库被多个数据实例使用的情况。 MySQL被设计为一个单进程多 阅读全文
摘要:
1. InnoDB体系架构 1.1 后台线程 后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据;此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能够恢复到正常状态。 后台线程有三种: Master Thread(核心线程;主要负责将缓 阅读全文
摘要:
文件 构成MySQL数据库和InnoDB存储引擎表的各种类型文件: 参数文件(告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数) 日志文件(用来记录MySQL实例对某种条件做出响应时写入的文件) socket文件(当用UNIX域套接字方式进行连接时需要的文件) pid文件(M 阅读全文
摘要:
InnoDB存储引擎索引概述 InnoDB支持以下几种常见的索引: B+ 树索引 (传统意义上的索引,这是目前关系型数据库系统中查找最为常用和最为有效的索引;B+ 树索引并不能找到一个给定键值的具体行,能找到的只能是被查找数据行所在的页) 全文索引 (将存储于数据库中的整本书或整篇文章中的任意内容信 阅读全文
摘要:
什么是锁 锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。 数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。 InnoDB 存储引擎锁的实现和 Oracle 数据库非常类似,提供一致性的非锁定读、行级锁支持。行级锁没有相关额外的开销,并可以同时 阅读全文
摘要:
Locality and The Fast File System "old UNIX file system" looked like this: super block(S): contains information about the entire file system inode reg 阅读全文
摘要:
File System Implementation 这章会介绍一个简单的文件系统vsfs(Very Simple File System)。该系统为简化版的UNIX系统,纯软件;有现在大部分文件系统中的基本磁盘结构、访问方法和各种策略。 带着问题学习:如何实现一个简单的文件系统? 1. The W 阅读全文
摘要:
Interlude: Files and Directories 带着问题学习:操作系统应如何管理持久性设备?什么是API?实施的重要方面是什么? 1. Files And Directories 在虚拟化存储方面有两个重要的抽象: 文件(file) 目录(directory) 文件:一组字节的线性 阅读全文
摘要:
Redundant Arrays of Inexpensive Disks (RAIDs) 带着问题学习:如何制作容量大、速度快、可靠的磁盘? 解决上述问题使用了一种技术叫做Redundant Array of Inexpensive Disks(RAID):协同使用多个磁盘。 RAIDs相对于单个 阅读全文
摘要:
Hard Disk Drives 带着问题:磁盘是如何存储和获取数据的? 1. The Interface 磁盘可以看作n个扇区的数组(驱动器地址空间从0到n - 1)。 多扇区操作是可以的。许多文件系统一次将读或写很大字节的内容。但是,在更新磁盘时,驱动制造商唯一保证的就是单个512字节扇区的写入 阅读全文
摘要:
I/O Devices 带着问题学习:如何将I/O集成到系统中?一般机制是什么?如何使它们高效? 1. System Architecture 上图所示,I/O设备被分成三层。但是为什么需要将其分层? 最直接的原因:物理(physics)和成本(cost)。高性能通道没有太多空间插入设备且设计总线的 阅读全文
摘要:
Event-based Concurrency (Advanced) 我们前面讨论并发问题都是使用多线程。但是,关于并发的问题不止这一方面,还有使用基于GUI的应用程序和因特网服务器的并发,这些叫做基于事件的并发(event-based concurrency)。 要解决的基于事件的并发问题有两个: 阅读全文
摘要:
Common Concurrency Problems 带着问题:如何处理常见的并发错误问题? 1. What Types Of Bugs Exist? 主要研究4个开源应用: MYSQL Apache Mozilla OpenOffice 2. Non-Deadlock Bugs 大部分并发问题都 阅读全文
摘要:
Semaphores 带着问题学习:如何使用信号量(semaphores)? 1. Semaphores: A Definition semaphore是一个具有整数值的对象,可以使用两个例程来对其进行操作。 POSIX中两个例程为sem_wait()和sem_post()。 在使用之前必须初始化, 阅读全文
摘要:
Condition Variables 输出结果如下: 在多线程情况下我们可以尝试使用共享变量,可以但是效率非常低下: 问题来了:在多线程情况下,线程应该如何等待条件? 1. Definition and Routines condition variable有两个操作: wait() // 当一个 阅读全文
摘要:
Lock-based Concurrent Data Structures 带着问题:给定一个数据结构,如何给其添加锁使其拥有正确性和高效性? 1. Concurrent Counters 1.1 Simple But Not Scalable 上述代码满足了正确性,但是对于性能,我们一无所知。为了 阅读全文