<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[astralcon的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/astralcon</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; astralcon]]></copyright><item><title><![CDATA[算法第四版习题解答（1.1 Basic Programming Model）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/132985134</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/132985134</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:24:00 +0800</pubDate><description><![CDATA[前言
使用的是《算法》第四版英文版，主要是习题解答。
书中jar包的导入请戳：算法(第四版)中algs4.jar下载和使用
EXERCISES
1.1.1

1.1.2

1.1.3
import java.util.Scanner;

public class Something {
    public static void main(String[] args) {
        Sc...]]></description><category></category></item><item><title><![CDATA[C++实现太阳系行星系统]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133062754</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133062754</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:22:00 +0800</pubDate><description><![CDATA[实验楼项目：C++实现太阳系行星系统
关于详细知识跟着实验做比较好
基础知识
做这个项目需要知道一些基础知识：

OpenGL
GLUT

类设计
main.cpp
#include&lt;GL/glut.h&gt;
#include "solarsystem.hpp"

#define WINDOW_X_POS 50
#define WINDOW_Y_POS 50
#define WIDHT ...]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎：事务]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/132985127</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/132985127</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:21:00 +0800</pubDate><description><![CDATA[认识事务
概述
事务：访问并更新数据库中各种数据项的一个程序执行单元。
数据库引入事务的主要目的：事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时，可以确保要么所有修改都已经保存了，要么所有修改都不保存。
InnoDB存储引擎中的事务完全符合ACID的特性：

原子性(atomicity)(整个数据库事务是不可分割的工作单位)
一致性(consistency)(事务将数据库从...]]></description><category></category></item><item><title><![CDATA[备份、恢复与性能调优]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/132985112</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/132985112</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:21:00 +0800</pubDate><description><![CDATA[备份与恢复
概述
根据备份的方法将备份分为：

Hot Backup(热备)(在线备份)
Cold Backup(冷备)(离线备份)
Warm Backup(温备)

热备是指数据库运行中直接备份，对正在运行的数据库操作没有任何的影响；冷备是指备份操作是在数据库停止的情况下，一般只需要复制相关的数据库物理文件即可；温备同样是在数据库运行中备份，但是会对当前数据库的操作有所影响。
按照备份后的内容...]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133063100</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133063100</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:20:00 +0800</pubDate><description><![CDATA[1. InnoDB体系架构

1.1 后台线程
后台线程的主要作用是负责刷新内存池中的数据，保证缓冲池中的内存缓存的是最近的数据；此外将已修改的数据文件刷新到磁盘文件，同时保证在数据库发生异常的情况下InnoDB能够恢复到正常状态。
后台线程有三种：

Master Thread(核心线程；主要负责将缓冲池中的数据异步刷新到磁盘，保证数据的一致性)
IO Thread(负责IO请求的回调处理)
...]]></description><category></category></item><item><title><![CDATA[MySQL体系结构和存储引擎]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/132985109</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/132985109</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:20:00 +0800</pubDate><description><![CDATA[1. 数据库和实例
数据库：物理操作系统文件或其他形式文件类型的集合。实例：MySQL数据库由后台线程以及一个共享内存区组成。(数据库实例才是真正用于操作数据库文件的)
实例与数据库的关系通常是一一对应的，但是在集群情况下可能存在一个数据库被多个数据实例使用的情况。
MySQL被设计为一个单进程多线程架构的数据库，也就是说MySQL数据库实例在系统上的表现就是一个进程。
从概念上说，数据库是文件...]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎：文件和表]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/132985106</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/132985106</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:19:00 +0800</pubDate><description><![CDATA[文件
构成MySQL数据库和InnoDB存储引擎表的各种类型文件：

参数文件(告诉MySQL实例启动时在哪里可以找到数据库文件，并且指定某些初始化参数)
日志文件(用来记录MySQL实例对某种条件做出响应时写入的文件)
socket文件(当用UNIX域套接字方式进行连接时需要的文件)
pid文件(MySQL实例的进程ID文件)
MySQL表结构文件(用来存放MySQL表结构定义文件)
存储引擎...]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎：锁]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/132985103</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/132985103</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:18:00 +0800</pubDate><description><![CDATA[什么是锁
锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。
数据库使用锁是为了支持对共享资源进行并发访问，提供数据的完整性和一致性。
InnoDB 存储引擎锁的实现和 Oracle 数据库非常类似，提供一致性的非锁定读、行级锁支持。行级锁没有相关额外的开销，并可以同时得到并发性和一致性。
lock 与 latch
在数据库中，lock 与 latch 斗可以被称为...]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎：索引与算法]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/132985097</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/132985097</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:18:00 +0800</pubDate><description><![CDATA[InnoDB存储引擎索引概述
InnoDB支持以下几种常见的索引：

B+ 树索引 (传统意义上的索引，这是目前关系型数据库系统中查找最为常用和最为有效的索引；B+ 树索引并不能找到一个给定键值的具体行，能找到的只能是被查找数据行所在的页)
全文索引 (将存储于数据库中的整本书或整篇文章中的任意内容信息查找出来的技术)
哈希索引 (自适应，InnoDB存储引擎会根据表的使用情况自动为表生成哈希索...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（41. Fast File System (FFS)）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133028595</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133028595</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:14:00 +0800</pubDate><description><![CDATA[Locality and The Fast File System
"old UNIX file system" looked like this:super block(S): contains information about the entire file systeminode region: contains all the inodes for the file systemdat...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（40. File System Implementation）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133001845</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133001845</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:13:00 +0800</pubDate><description><![CDATA[File System Implementation
这章会介绍一个简单的文件系统vsfs(Very Simple File System)。该系统为简化版的UNIX系统，纯软件；有现在大部分文件系统中的基本磁盘结构、访问方法和各种策略。
带着问题学习：如何实现一个简单的文件系统？
1. The Way To Think
要想理解文件系统如何工作，就要理解文件的系统的两个不同方面：

数据结构(...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（38. Redundant Disk Arrays (RAID)）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133048942</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133048942</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:12:00 +0800</pubDate><description><![CDATA[Redundant Arrays of Inexpensive Disks (RAIDs)
带着问题学习：如何制作容量大、速度快、可靠的磁盘？
解决上述问题使用了一种技术叫做Redundant Array of Inexpensive Disks(RAID)：协同使用多个磁盘。
RAIDs相对于单个磁盘有如下几点优势：

性能(performance)
容量(capacity)
可靠性(reli...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（37. Hard Disk Drives）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133048935</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133048935</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:12:00 +0800</pubDate><description><![CDATA[Hard Disk Drives
带着问题：磁盘是如何存储和获取数据的？
1. The Interface
磁盘可以看作n个扇区的数组(驱动器地址空间从0到n - 1)。
多扇区操作是可以的。许多文件系统一次将读或写很大字节的内容。但是，在更新磁盘时，驱动制造商唯一保证的就是单个512字节扇区的写入是原子级别的。如果发生不合时宜的功率损耗，则仅较大部分写入的可能完成(破损写入(torn writ...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（39. Files and Directories）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133001842</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133001842</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:12:00 +0800</pubDate><description><![CDATA[Interlude: Files and Directories
带着问题学习：操作系统应如何管理持久性设备？什么是API？实施的重要方面是什么？
1. Files And Directories
在虚拟化存储方面有两个重要的抽象：

文件(file)
目录(directory)

文件：一组字节的线性组合，每个文件你都能进行读或写。每个文件都有一个低级名字(low-level name)，文件...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（33. Event-based Concurrency）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133076579</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133076579</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:11:00 +0800</pubDate><description><![CDATA[Event-based Concurrency (Advanced)
我们前面讨论并发问题都是使用多线程。但是，关于并发的问题不止这一方面，还有使用基于GUI的应用程序和因特网服务器的并发，这些叫做基于事件的并发(event-based concurrency)。
要解决的基于事件的并发问题有两个：

在多线程应用程序中如何正确管理并发性
在多线程应用程序中开发人员如何控制在给定时刻的调度内容
...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（36.  I/O Devices）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133001836</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133001836</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:11:00 +0800</pubDate><description><![CDATA[I/O Devices
带着问题学习：如何将I/O集成到系统中？一般机制是什么？如何使它们高效？
1. System Architecture

上图所示，I/O设备被分成三层。但是为什么需要将其分层？
最直接的原因：物理(physics)和成本(cost)。高性能通道没有太多空间插入设备且设计总线的成本高。采用分层结构，使性能越高的通道离CPU越近。
当然，随着科技的发展，现今的系统结构又进一...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（32. Concurrency Bugs）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133076576</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133076576</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:10:00 +0800</pubDate><description><![CDATA[Common Concurrency Problems
带着问题：如何处理常见的并发错误问题？
1. What Types Of Bugs Exist?
主要研究4个开源应用：

MYSQL
Apache
Mozilla
OpenOffice


2. Non-Deadlock Bugs
大部分并发问题都是non-deadlock bugs。此类问题主要分为两类：

atomicity viol...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（31.  Semaphores）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133043215</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133043215</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:10:00 +0800</pubDate><description><![CDATA[Semaphores
带着问题学习：如何使用信号量(semaphores)？
1. Semaphores: A Definition
semaphore是一个具有整数值的对象，可以使用两个例程来对其进行操作。
POSIX中两个例程为sem_wait()和sem_post()。
在使用之前必须初始化，如下所示：
该例程sem_init()的第三个参数表示初始化值为1，第二个参数0表示在一个进程中线...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（28. Locks）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133050852</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133050852</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:09:00 +0800</pubDate><description><![CDATA[Locks
为了解决在执行一系列指令时中间发生中断事情，引入了lock。
1. Locks: The Basic Idea

使用lock，关键部分为balance = balance + 1。
2. Pthread Locks

传递了一个变量来锁定和解锁，因为可能使用不用的锁来保护不同的变量(提高并发性)；还可以保护不同的数据和具有不同锁的数据结构，从而允许更多线程进入一次锁定代码。
3. ...]]></description><category></category></item><item><title><![CDATA[操作系统导论习题解答（29. Locked Data Structures）]]></title><link>https://blog.youkuaiyun.com/astralcon/article/details/133048930</link><guid>https://blog.youkuaiyun.com/astralcon/article/details/133048930</guid><author>astralcon</author><pubDate>Fri, 14 Oct 2022 19:09:00 +0800</pubDate><description><![CDATA[Lock-based Concurrent Data Structures
带着问题：给定一个数据结构，如何给其添加锁使其拥有正确性和高效性？
1. Concurrent Counters
1.1 Simple But Not Scalable

上述代码满足了正确性，但是对于性能，我们一无所知。为了了解性能优劣，做了一个基准测试，如下所示(precise)：从上图可以看出，单线程性能可以，但是...]]></description><category></category></item></channel></rss>