摘要:
数据结构大体成上可以分成两种:1. 线性结构.2. 非线性结构( 树,图)1. 什么是线性结构 大概上可以这样定义: 加入所有的节点可以用一条直线连接起来. 就是线性结构...2. 线性机构也可以分成两种: 1) 连续存储 (数组) 也就是指每1个节点在物理内存上是相连的. 2) 离散存储(链表) 节点在物理内存上并不一定相连, 而是利用指针来关联. 这篇文章主要讲的第一种.3. 什么是数组 数组就是在内存里物理连续的一段元素的集合 注意: 数组里面的元素不一定是数. 可以是任何类型, 但是每个元素的类型和大小必须相等. 而且这里的数组并不是指C语言里的数组类型, 而是数据结构的一种. 通常在 阅读全文
摘要:
1. 函数执行完成时,里面的局部静态变量所占的内存会被自动释放 首先看个简单的例子程序:
#include <stdio.h> int f(){ int j=20; return j;
} int main(){ int i; i = f(); return 0;
}
可以见到上面 mian函数 调用了f()函数, 而f()里面定义了1个整形变量j.问题是, 如果f()被调用完成和偶, 也就是 i=f(); 这条语句执行完后, f()里面的j所占的内存还存在吗?答案是否. 首先j是1个局部变量, 而且j是1个静态变量, 所以当f() 结束时, f... 阅读全文
摘要:
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int a[5]={1,2,3,4,5}; //合法int b[6]; //合法int c[]; //错误 因为没有指定长度但是下面语句是正确, 它隐形定义了数组的长度, 就是赋值元素的个数int d[] ={4,5,6,7,8,9} //合法 长度为62. 静态数组 什么是静态数组, 其实上面合法定义的数组都是静态数组. 静态数组并不是指数组里面的元素是静态的, 上面的数组都可以修改指定元素的指 而是指数组的元素个数是静态的, 也就是某1个静态数组一旦被定义, 那么在程序运行结束的这段时间里它的长度的都是... 阅读全文
摘要:
这篇文章是参考甲骨论老相老师的视频:http://v.youku.com/v_show/id_XNDAwOTY3MTU2.html所做的学习笔记1. LRU chain 和 LRUW chain 和CBC chain 先复习一下: 如上图, 在database buffer cache中, 里面的buffer被若干条链串联在一齐(通过头尾部指针实现) LRU(Least recent used) chain 这是一条用于查找最近最少使用的buffer的链, 当buffer不够用时会从这条链冷端找出buffer来重用. LRUW(Least recent used writed) chain . 阅读全文
摘要:
由于网易博客的代码模式并不好用而且日志还存在显示不正确的问题. 见我这个日志:http://nvd11.blog.163.com/blog/static/20001831220132290183319/编辑的内容无法正确显示在博文中.所以我会将博客搬去csdn.http://blog.csdn.net/nvd11 阅读全文
摘要:
接上文 Oracle 段区块 分配 (1)六, oracle 的行迁移和行链接. (Row Chaining and Migrating) 上面提过了, oracle是允许把多个数据行放到同1个块中的。 而且, oracle会尽量把同1个数据行的所有数据放到同1个块中, 这样避免读取1个数据行要访问2个或以上的块. 而oracle是怎么避免这个问题呢。1个关键就是pctfree 和 pctused 的设置6.1 pctfree 这个参数在新建1个table/cluster的时候可以被指定。 默认是10% 假如 pctfree 的值是10%, 那么当1个block的剩余空间一但只剩下10%时, 阅读全文
摘要:
这篇文章是参考甲骨论老相老师的教学视频 http://v.youku.com/v_show/id_XNDAwMzYzODI0.html 所做的学习笔记 关于段区块的定义以前都将过几次了. 视频中介绍了两个知识点: 1. 区(extends)的分配 1个段(segment) 被建立后, oracle 如何为其分配新的extends 2. 段空间管理方式. 1个新的extend 被分配到1个segment后, segment就相当于拥有一些空闲空间了, oracle怎么管理这些空间. 一. 利用em(Enterprise Manager) 演示如何建立1个新的表空间(table spa... 阅读全文
摘要:
大伙都知道int类型的 取值范围是 -2147483648 到 2147483647 那为什么不是 -2147483647 到 2147483648 呢? 因为int类型占4个byte, 就是32个bit 了, 而32个二进制位中最高位的那个一位是表示正负的。 所以只有31 个位来表示int 类型本身的大小了。 从 0000000 00000000 00000000 00000000 到 1111111 11111111 11111111 11111111 其中后面31个1 就是 2147483647 啊(2^31 - 1) 所以不算上最高位的符号位的话, 31位 共可以表示 21474... 阅读全文
摘要:
写这篇文章时由于没有参考过什么权威资料教材,所以有些观点可能是错误的, 不过我本人都是经过大量调试后才写出来的啦..1. 内存由多个单位为8bit = 1byte的单元组成,每1个单元都配有1个编号,这个就是内存地址。 计算机的主存储器是内存,而不是硬盘,因为cpu只能直接访问内存... 而cpu访问内存是根据内存的编号来访问的,这个编号就是内存地址,cpu获得内存地址就能直接寻址到对应的内存单位。2.指针就是内存地址..它们是同一概念 很多人都讲指针就是指向内存地址的东西, 但是我认为指针就是内存地址..3.指针变量的概念 首先,指针变量是1个变量, 也就是它的值是可以变的。 其次,指针变. 阅读全文
摘要:
1.什么是表空间 表空间是Oracle 1个虚拟概念,它用于存放数据文件dbf, 也就是说表空间是oracle表数据存放到数据文件的一个中间结构。一般来讲,oracle 一张表(非分区表)只属于1个表空间, 它的数据可以分散存储在这个表空间内多个数据文件中。 如下图: 当然上图还包括 block, extend, segment的信息,将就看吧..2.查看oracle的表空间 可以用如下视图来查看oracle的表空间: select * from dba_tablespaces; 可以见到有6个表空间。 2.1 System 表空间. system 表空间存放的是Oracle数据库本身的信.. 阅读全文
摘要:
一,为什么要使用结构体 在语言中,为了表示一些复杂的数据, 而普通的基本变量类型无法满足要求。 例如要定义1个学生类型, 学生有3个属性 sid, name, age 那么在面向对象语言里(例如java),我们可以写1个类 Class Student { int sid; String name; int age; void inputStudent(){ } void showStudent(){ ... 阅读全文
摘要:
这篇文章是参考甲骨论老相老师的教学视频http://v.youku.com/v_show/id_XMzk4NjkzMDY0.html所做的学习笔记构成oracle数据库的文件可以包括如下图的几种..其种最重要的是下面这种文件:控制文件, 数据文件, 联机重做文件。因为这3种文件一旦出错, 数据库就会崩溃, 所以这3种文件也统称为联机文件, 也就是支持oracle数据库运行的必须文件。1.控制文件 包含有关数据库本身的数据和物理结构信息。 数据文件对数据库而言至关重要,没有这些文件,就无法打开访问数据库数据的数据文件。 1.1 查看控制文件 可以用如下语句来查看数据库控制文件的位置。 selec 阅读全文
摘要:
在Oracle 9i以后 支持两种PGA 管理支持两种管理模式, 一重就是手动管理模式, 另一种就是自动管理模式。1.PGA 手动管理模式 所谓手动管理模式就是手动设置PGA里的各个模块(sort_area_size/ hash_area_size/bitmap_merge_are_size 等)的大小值, 这些值不会根据负荷弹性变化, 而且一旦手动设置为手动模式。 则应用到服务器中每1个server process, 也就是说每个server process所占的PGA将会是一样的。 1.1 设置方法 alter system set workarea_size_policy=manua.. 阅读全文
摘要:
Oracle可以分成两种工作模式, 分别是 Dedicated Server 和 Shared Server 1 Dedicated Server 从字面上理解的就是专用服务器模式, 实际上意思就是指每当有1个新的用户客户端提出连接请求. 建立1个session时, Oracle 服务器端都会启动1个对应的服务器进程(server process)与其对接. 那么这个server process就专门为这个session服务了. 简单d来讲 Dedicated Server 模式下, 每1个连接中的session都会有1个server process与其对接. Dedicated Ser... 阅读全文
摘要:
1. 时间复杂度 算法核心部分大概要执行的次数. 而非执行时间. 为什么不能是执行时间. 是因为1个算法在不同的机器和不同的环境中执行时间可能有巨大的差别. 而什么是核心部分大概要执行的时间? 就是假设算法是1个循环, 那么循环里面的部分被循环执行的次数. 例如1个算法 for (i =0; i <n ;i++){ main_part(); } 他的核心部分main_part() 被执行了n次, 也就是说随着n的增长. 被执行的次数也随着线性增长. 我们可以说这个算法的时间复杂度是 O(n) 而另1个算法 for (i=0; i<n; i++){ for (j=0; j<n; 阅读全文
摘要:
这篇文章是参考甲骨论老相老师的教学视频http://v.youku.com/v_show/id_XMzk2NjAxODQ4.html?f=17419200所做的学习笔记.1. 什么是PGA, PGA的作用 PGA的全程是Program global area, 是Oracle数据库系统的进程(包括前台进程server process 和 后台进程各种daemon)的专用的内存空间, 每1个进程都配1个PGA, 不过实在我们说的PGA通常指的是server process的PGA. 每1个server process的PGA都只能被这个server process访问. 2. PGA的构成 1. 阅读全文
摘要:
1.安装内核后重启失败. 只见到这个提示:kernel panic: VFS: can't mount root on unknown block(0,0) 通常这种情况有3种原因: a. grub 配置错了, 不过因为各发行版编译内核的工具都会自动更新grub配置的, 这个种情况很少。 除非你是手动更新grub的, 这是就是就要检查下grub.cfg, 是不是/ or /boot分区指定错误。 b. 编译内核没有把/boot 或 / 的文件系统格式编入内核, 例如/boot 和 / 所在分区的文件格式是ext3 . 但你没有把ext3格式支持编入内核。 c. 这个情况也是我遇上的, 阅读全文
摘要:
Fedora作为linux发行版的地沟油...有时候是比较坑爹的。 Fedora有1个很出名特点,就是更新很快很激进, 本来这个是优点啦, 但是它连内核也更新的超快, 基本上2周更新一次内核, 后果就是你要不断清理就内核.. 这个还是小事。 用过virtualbox的都知道, virtualbox是1个虚拟机软件, 它不必须根据当前的内核版本紧密配合, 对应的产物就是virtualbox模块。 virtualbox的模块有很多个, 例如最重要的vboxdrv, 还有vboxnetadp vboxnetflt 等等, fedora 为这些模块做成了1个包,就叫kmod-Virtualbox, . 阅读全文
摘要:
大部分发行版安装就自带1个linux内核, 是不需要用户自己编译的. 那么编译1个内核到底有什么好处呢, 其实好处无非有两点: 1. 精简内核 通用发行版的内核特点就是兼容性好, 这里的兼容性是只硬件兼容性啦, 也就是说通用的内核集成了很多种硬件的驱动和功能,而其实绝大部分的硬件驱动和部分功能(如raid支持,偏门的文件系统格式支持)是一般家用机用不上的。 而自己编译内核能在选项里去除这些多余的选项, 只挑选当前机器适用的硬件驱动, 往往能得到1个更精简的内核,理论上是比1个臃肿的内核更加稳定和快速的。 再讲,对于任何软件来讲。理论上用当前机器自己编译出来的会比用其他环境机器编译出来的性能.. 阅读全文
摘要:
一般安装windows 和 linux双系统, 都是先安装windows, 然后安装linux, 那么linux的grub安装会加入windows启动的选项, 开机时就能选择启动进入哪个系统了。 但是如果重装了windows, windows会重写mbr分区表, 导致grub的信息丢失, 开机就不能进入linux了。 下面就用ubuntu例子来修复grub启动项。 第一步, 用livecd 启动系统 进入livecd里的ubuntu, 连这一步都不知道的代表你没硬盘安装过Ubuntu,用wubi重装一次吧... 第二步, 获取root权限 打开终端,输入如下命令: sudo passwd #. 阅读全文