自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 关于个人博客的所有有关说明

概述  这篇文章主要用给以后的文章的写作内容和规范做一个总体介绍。  首先,这里简单说明一下理由。虽然博客最早的文章比较早但是相当长时间内文章的质量和数量都相当低。但是近来确实觉得博客是一个很好的学习资源,而且对个人来说也是一个很好的总结自己学习知识和经验的机会。通过对今后的文章做一些简单的规划和约定,望有助于提高文章的质量和数量,也更加明确当前的学习任务,希望以此对自己增加一些约束。

2016-07-25 17:53:37 1585

原创 日常小结-python2.x和python3.x之间关于String的区别

本文内容主要来自于GTK+3 教程4How to Deal With Strings 我觉得内容写的挺好的,这里总结一下。Unicode 及UTF-8首先字符串可以看成是一串字符的表示,每个字符都可以用一串编码表示,全部的编码范围在0到0X10FFFF之间表示。这也就是所谓的Unicode。 Unicode是一种概念。这个概念是为了将全世界范围内每个字符都采用统一的规则来用唯一的数字来表示。U

2016-07-28 22:24:07 3186 1

原创 源码分析-java-ArrayList-基本方法及实现

ArrayListAPI文档大小的可变数组的List接口的实现。实现了所有的List可选操作,允许所有(包括null)在内的元素。为了实现这List接口,这个类提供了操作数组(这个数组用于内部储存)大小的方法。(这个类类似于Vector,只是这个类不是同步的)size、isEmpty、get、set、Iterator和ListIterator以固定的时间运行。add操作的摊还时间为添加n个操作需要O

2016-07-25 18:08:01 1715

原创 读书笔记-现代操作系统-8多机处理-8.4分布式系统

8.4 分布式系统分布式系统(distributed system)和多计算机有什么区别多计算机的节点通常有CPU、RAM、网卡,可能还有用于分页的硬盘。而分布式系统的中的每个节点都是一台计算机一台多计算机的所有节点一般都在一个房间里,而分布式系统可能分布在全球范围内一台多计算机的所有节点运行相同的操作系统,而分布式可以运行不同的系统从技术角度多处理机有共享内存 从应用角

2016-07-23 21:35:47 1040

原创 读书笔记-现代操作系统-8多处理机-8.3虚拟化

8.3 虚拟化虚拟化(virtualization)这种技术允许一台机器中存在多台虚拟机,每一台虚拟机可能运行不同的操作系统。 虚拟化起作用的原因是: 大部分服务器停机的原因不是因为硬件的故障,而是因为臃肿、不可靠、有漏洞的软件,特别是操作系统。使用虚拟化技术,唯一一个运行在内核态的软件是管理程序(hypervisor),它的代码量比一个完整操作系统的代码量少两个数量级,漏洞更少。优势: -

2016-07-22 21:56:22 767

原创 读书笔记-现代操作系统-8多处理机系统-8.2多计算机

8.2 多计算机为了避免多处理机的构造困难,造价高昂的问题,多计算机(multicomputes)成为一个更加容易构建的系统。因为其基本部件只是一台配有高性能网络接口卡的PC裸机。获得高性能的设计互联网络以及接口卡。这与多处理机中构造共享储存器是完全类似的。8.2.1 多计算机硬件1.互联技术 也就网络拓扑有多种连接方式主要的有: 两种交换机制: 包交换:每个消息首先被分解成

2016-07-22 14:24:44 1356

原创 源码分析-java-LinkedList

LinkedListAPI文档LinkedList是一个基于双向链表的List和Deque的实现。对所有元素(包括null内)实现了所有可选的操作。所有的操作性能可以从双端队列的list来估计。基于下标的操作需要从list的头或者尾(根据具体位置)遍历到相应的位置才可以特别注意这个实现不是同步的。如果多线程访问同时访问一个list,且只是有一个线程结构性的调整了list,这样的操作需要外部特性保持同

2016-07-21 21:27:01 1879

原创 读书笔记-现代操作系统-8多处理机系统-8.1多处理机

多处理通常来说分为3类:共享内存的多处理,多个cpu共享同一个储存器,单向通信时间2-10ns消息传递多计算机,每个储存器局部对应一个cpu,且只能被该cpu访问,这些cpu通过互联网网络发送多字消息通信,典型通信时间10-50us广域分布式系统,所有计算机都有自己的储存器,通过消息传递进系统通信,与2不同的是这里使用了完整的计算,典型的通信时间10-100ms 8.1 多处理机

2016-07-21 16:47:11 1417

原创 源码分析-java-AbstractSequentialList

AbstractSequentialListAPI文档这个类提供了一个基本的List接口实现,为实现序列访问的数据储存结构的提供了所需要的最小化的接口实现。对于支持随机访问数据的List比如数组,应该优先使用AbstractList。这里类是AbstractList类中与随机访问类相对的另一套系统,采用的是在迭代器的基础上实现的get、set、add和remove方法。为了实现这个列表。仅仅需要拓展

2016-07-19 17:28:40 2672

原创 源码分析-java-AbstractList-subList、RandomAccess、equals和hashCode

上一个小结说完了AbstractList的迭代器Itr和ListItr的实现。 这一小结把RandomAccess和subList说完。RandomAccess首先说明一些RandomAccess接口。 这个接口没有任何需要实现的方法。这中类型的接口其实在java中比较常见。API文档List实现的标记方法用来指示他们支持快速随机访问(通常是常数时间)。这个接口的主要目的是

2016-07-19 15:43:31 978

原创 读书笔记-现代操作系统-7多媒体操作系统-7.8 高速缓存7.9多媒体磁盘调度

7.8 高速缓存7.8.1 块高速缓存如果两个观众观看的时间点不超过ΔT\Delta T的帧缓存起来,这样就可以不必在重复读取,但是也需要考虑到内存使用率和高速缓存的时间等等诸多因素另一个扩展的思想是。通过缓慢的调整播放的速率来使高速缓存的两个帧逐渐迁移到一起,实现同步。这个与之前的近似点播的思想相似。7.8.2 文件高速缓存可以将最流行的文件放入高速缓存。或者将流行的文件的前几分钟放入高速缓存。这

2016-07-17 22:07:31 503

原创 读书笔记-现代操作系统-7多媒体操作系统-7.6多媒体文件系统泛型7.7文件存放

7.6 多媒体文件系统泛型多媒体系统和传统的文件系统有很大的不同,采用的是类似VCR工作方式一样的拉取型服务器(pull server): 用户进程发出start系统调用,指定要读取的文件和其他各种参数,然后用户进程以帧进来的速率对他们进行处理。直到用户发出stop停止命令停止数据退给用户。7.6.1 VCR控制功能视频服务通常也需要实现VCR控制功能,包括暂停、快进和倒带。暂停:用户发送一个消息

2016-07-17 21:43:20 1120

原创 源码分析-java-AbstractList-Itr和ListItr的实现

AbstractListAPI文档AbstractList实现了List接口,又因为List继承自Collection,Collection继承自Iterable。因此List接口包含很多的方法。AbstractList实现了List接口的最小实现。 他是针对随机访问储存数据的方式的,如果需要使用顺序访问储存数据方式的List还有一个AbstractSequentialList它是继承自Abstr

2016-07-17 16:02:51 3102

原创 读书笔记-现代操作系统-7多媒体操作系统-7.5多媒体进程调度

多媒体操作系统和传统操作系统有三个部分由区别:进程调度文件系统磁盘调度7.5.1 调度同质进程最简单的视频服务器可以支持显示固定书名的电影,所有电影都使用相同的帧率、视频分辨率、数据率以及其他参数。 可以简单的采用轮转调度,唯一的区别是需要定时机制,以确保每一进程以恰当的频率调度。7.5.2 一般实时调度但是通常来说不同电影的帧率大小等等参数都不一样,所有通常需要考虑一般的模型: 多个进

2016-07-16 22:49:31 504

原创 读书笔记-现代操作系统-7多媒体操作系统-7.3视频编码7.4音频压缩

7.3 视频压缩首先压缩算法需要两个概念一个是在源端对数据进行压缩,另一个是在目的端对数据进行解压缩。或者分别被称为编码和解码 有些算法具有不对称性,这是指压缩和解压缩的复杂度是不一样的。这对实际应用而言是很有意义的。 另一个是有损和无损的概念,文件压缩通常都是需要无损的,但是对于视频来说有损压缩更常见。7.3.1 JPEG标准Joint Photographic Experts Group 联

2016-07-16 22:09:06 664

原创 读书笔记-现代操作系统-7多媒体操作系统-7.1多媒体简介7.2 多媒体文件

7.1多媒体简介多媒体材质:CD-ROM->DVD(5-17G)->Blu-ray(25G/50G)/HD DVD(15G/30G)多媒体应用方向: 1. 从网上下载多媒体 2. 视频本身 3. 游戏制作 4. 视频点播:一个或多个视频服务器、一个分布式网络以及一个在每间房中用来对信号进行解码的机顶盒。多媒体两个关键特征: 1. 多媒体使用极高的数据率 2. 多媒体要求实时回放。NTSC

2016-07-16 21:11:43 598

原创 源码分析-java-AbstractCollection

AbstractCollection概述概述首先AbstractCollection是java自己提供的一个最基本的Collection的实现。当然它依然是一个抽象类。对于一个不可更改的集合,只要继承这个类并且实现迭代器和size()方法就行。对于一个可更改的集合,需要实现add和返回Iterator的方法,当然可选的实现remove方法通常应该提供两个构造器,一个无参的,一个是包含集合元素的pub

2016-07-16 16:37:52 3152 3

原创 源码分析-java-Iterator接口和Iterable<T>接口

API文档:首先Iterator的出现是为了替代Enumeration.它和Enumeration不同的是,它可以删除迭代的内容。并且被更好的命名这个接口只有四个方法: boolean hasNext() E next() default void remove() default void forEachRemaining(Consumer源码分析:d

2016-07-16 14:46:56 1417

原创 源码分析-java-collection接口

以下内容是api资料的简单汇总:API概述Collection接口是集合继承的根,一个集合表示一组对象,即元素,的集合。Collection是一个抽象层次比较高的类,java没有提供直接的实现,通常都是对子类提供实现。一般的Collection实现应该提供两种标准的构造器: 一个是无参构造器,用于创建一个空集合 另一个是有参的构造器,参数为集合内集合内元素。(当然这个方法并没有办法提供强制类型转

2016-07-13 18:24:49 434

原创 读书笔记-现代操作系统-6死锁-6.7其他问题

6.7 其他问题6.7.1 两阶段加锁数据库中常用的,两阶段加锁: 进程试图对所有所需的记录进行加锁,一次锁一个记录。如果第一阶段加锁成功,就开始第二阶段,完成更新过后然后释放锁。如果第一阶段加锁失败,那么该进程释放它所有加锁的记录,然后重新开始第一阶段。这种方法类似于提取或者至少是未释放一些不可逆操作之前请求所有资源。6.7.2 通信死锁两个或者两个以上进程利用发送信息来通信时,当进程a向进程b

2016-07-13 15:52:54 665

原创 读书笔记-现代操作系统-6死锁-6.6死锁预防

6.6.1 破坏互斥条件如果资源不被一个进程独占,死锁就不会产生。 比如打印机,通过采用假脱机打印机技术可以允许若干个进程同时产生输出。这个模型中唯一正值请求使用物理打印机的进程是打印机的守护进程,由于守护进程绝不会请求别的资源,所以不会因打印机而产生死锁。 从思路的角度说尽量让能请求资源的进程尽可能的少。6.6.2 破坏占有和等待条件只要禁止已持有资源的进程再等待其他资源,可以消除死锁:一种实

2016-07-13 15:39:43 576

原创 读书笔记-现代操作系统-6死锁-6.5死锁避免

6.5 死锁避免系统判断分配资源是否安全,并且只能在保证安全的条件下分配资源。6.5.1 资源轨迹图 当在t点时系统必须做出正确的判断,应该将一部分程序挂起以避免产生死锁6.5.2 安全状态和不安全状态安全状态 如果没有死锁状态,而且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每个进程运行完毕,则该状态是安全的。 如果线程可以通过仔细的调度避免死锁,所有状态时安全的,

2016-07-13 15:26:39 818

原创 读书笔记-现代操作系统-6死锁-6.3鸵鸟算法6.4死锁检测和死锁恢复

6.3 鸵鸟算法不考虑死锁问题。 因为实际工作中很可能有其他更为严重的问题。如果死锁的频率不高可不考虑死锁。6.4 死锁检测和死锁恢复6.4.1 每种类型一个资源的死锁检测步骤: 1. 对图中的每一个节点N,将N作为起始点执行下面5个步骤。 2. 将L初始化为空表,并清除所有的有向边标记。 3. 将当前节点添加到L的尾部,并检测该节点是否在L中已出现两次,如果是。那么该图包含了一个环(已列在

2016-07-13 14:56:15 3693

原创 读书笔记-现代操作系统-6死锁-6.1资源6.2 死锁概述

6. 死锁6.1 资源为了尽可能使关于死锁的讨论通用,我们把这类需要排他性使用的对象成为资源。 资源可以是硬件设备或是一组信息。 资源就是随着时间的推移必须能获得、使用以及释放的任何东西6.1.1 可抢占资源和不可抢占资源可抢占资源(preemptable resource)可以从拥有它的进程中抢占而不会产生任何副作用。 比如进程a和b都占用了打印机,进程a占用了打印机,但是在打印机完成之前用

2016-07-13 14:13:12 601

原创 读书笔记-现代操作系统-4文件系统-4.4文件系统管理和优化

4.4 文件系统管理和优化4.4.1 磁盘空间管理几乎所有的文件系统都是把文件分割成固定大小的块来储存的(各块之间不一定相邻)块大小 通常需要在空间利用率和磁盘数据率之间提供一定平衡,通常用4KB。记录空闲块。 磁盘块链表,每个块包含尽可能多的空闲磁盘块号。如果空闲区域连续的话可以考虑添加空闲块的数量。位图,但是不常用,只有在磁盘接近满的情况下才比较划算。 还有一个问题需要考虑的是如果保

2016-07-13 00:47:11 577

原创 读书笔记-现代操作系统-4文件系统-4.3文件系统的实现

4.3 文件系统的实现4.3.1 文件系统布局磁盘的0号扇区称为主引导记录(Master Boot Record,MBR),用来引导计算机。 MBR之后是分区表,该表记录的每个分区的起始和结束地址。表中的一个分区被标记为活动分区。在计算机被引导的时候,BIOS读入并执行MBR。 MBR做的第一件事是确定活动分区,读入它第一个块,称为引导块(boot block),并执行之。 引导块中程序装在该

2016-07-12 23:43:32 659

原创 读书笔记-现代操作系统-4文件系统-4.1文件4.2目录

4. 文件系统长期储存大量信息的三个基本要求: 1. 能够储存大量信息。 2. 使用信息的进程终止时,信息仍旧存在。 3. 必须能够使多个进程并发存取有关信息。文件的概念: 文件是进程创建的信息逻辑单元。每个文件可以看成是一种地址空间。储存在文件中的信息必须是持久的。 总体上看,操作系统中处理文件的部分称为文件系统(file system)4.1 文件4.1.1 文件命名文件是一种抽象机制

2016-07-12 22:18:49 536

原创 读书笔记-现代操作系统-3储存管理-3.5分页系统中的设计问题

3.7 分段有两个或者多个独立的地址空间可能比只有一个要好得多。因为程序在运行的过程中有些部分会不断增长,如果只用一维的线性空间可能会有很多问题。由此产生了段的概念。通用的解决方案是在机器上提供多个互相独立的称为段(segment)的地址空间。每个段由一个从0到最大的线性地址序列构成。各个段的长度可以是0-某个运行的最大值之间的任何值。不同的段长度一般都是不同的。并且在运行期间可以动态的改变。 这

2016-07-12 12:22:59 402

原创 读书笔记-现代操作系统-3储存管理-3.6有关实现的问题

3.6 有关实现问题3.6.1 与分页有关的工作创建进程时 操作系统确定程序和数据在初始时有多大,并为它们创建一个页表。为页表分配空间并对其初始化。操作系统需要在磁盘交换区中分配空间,以便在一个进程换出时在磁盘上有放置此进程的空间用程序正文和数据对交换区进行初始化,这样当新进程发生缺页中断时,可以调用需要的页面。操作系统必须把有关页表和磁盘交换区的信息储存在进程中进程执行时 为新进程设

2016-07-12 10:52:04 855

原创 读书笔记-现代操作系统-3储存管理-3.5分页系统中的设计问题

3.5 分页系统中的设计问题3.5.1 局部分配策略和全局分配策略怎样在互相竞争的可运行程序之间分配内存。 局部页面置换算法,只在进程内部分配,如果有缺页则置换本进程内的页面。 全局页面置换算法,在所有进程所占内存分配,如果有缺页则置换所有进程中最适合的页面。 通常来说全局页面置换更好,尤其是在工作集的大小随进程运行时间发生变化时这种现象更加明显。若使用局部算法,即使有大量空闲页框存在,工作集

2016-07-11 10:10:14 560

原创 日常小结-java随机数类Random

Random类首先java的Random采用48位的种子用linear congruential formula方法实现了一个生成随机数的类。构造函数Random类有两个构造函数。 一个是无参的,一个是以long为参数的。 这个long就是生成随机数的种子,当然这里需要区别一下,种子和生成随机数的范围为无关。种子的意义简单的说java生成的随机数实际上是伪随机数,也就是一个很大周期的循环,如果两

2016-07-10 13:40:23 722

原创 读书笔记-现代操作系统-3储存管理-3.4页面置换算法

3.4 页面置换算法3.4.1 最优页面置换算法无法实现的算法。简单的说置换出最长指令之后需要访问的页面。3.4.2 最近未使用页面置换算法系统为每一个页面设置两个位,一个是被访问时设置R位,另一个是修改页面被写入时设置M位。 如果在一段时间内(比如说20ms)未访问则将R设置为未访问。 如果已经修改则需要将M设置为访问。所有页面分为四类没有被访问,没有被修改没有被访问

2016-07-10 09:59:09 895

原创 读书笔记-现代操作系统-3储存管理-3.3虚拟内存

3.3 虚拟内存虚拟内存的基本思想: 每个程序拥有自己的地址空间,这个空间被分割成多个块。每一块 称作一页或页面(page)。每一页有连续的地址空间。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行。当程序引用到一部分在物理内存中地址空间时,由硬件立刻执行必要的映射,当程序引用一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。3.3.1 分

2016-07-09 23:17:15 845

原创 读书笔记-现代操作系统-3储存管理-3.1无储存器抽象3.2一种储存器抽象:地址空间

3. 储存管理3.1 无储存器抽象早期计算机没有内存抽象,都采用物理地址,多道程序设计都采用多线程的方式。 也可以采用静态重定位的方式:为每个程序加上一个固定的常数。速度比较慢且容易出错3.2一种储存器抽象:地址空间物理地址暴露带来的严重问题:如果用户程序可以寻址内存每个字节,他们很容易破换操作系统使用绝对的物理地址,多道程序设计很困难3.2.1 地址空间的概念想要互相独立的内存空间,需要解

2016-07-09 22:09:56 573

原创 读书笔记-现代操作系统-2进程与线程-2.4调度

2.4调度计算密集型/IO密集型何时调度:在创建一个新进程后再一个进程退出时在一个进程IO和信号量或其他原因阻塞时中断发生时调度算法分类:批处理交互式实时调度算法的目标:所有系统:公平-给每个进程公平的CPU份额策略强制执行-看到所宣布的策略执行平衡-保存系统的所有部分忙碌批处理:吞吐量-每小时最大作业数周转时间-从提交到终止间的最小时间CPU利用率-保存CPU始终忙碌

2016-07-08 15:23:22 528

原创 读书笔记-现代操作系统-2进程与线程-2.3进程间通信

2. 进程与线程2.3 进程间通信进程间通信(Inter Process Communication)IPC问题:一个进程如何把信息传递给另一个确保两个或更多进程在关键活动中不会出现交叉正确的顺序运行程序 后两个对于线程也成立,通常来说线程可以通过共享地址空间实现信息传递,当然你也可以采用其他方式比如说消息传递机制等等。2.3.1 竞争条件和临界区两个或多个进程读写某些数据,而最后结果取决

2016-07-07 23:17:40 769

原创 读书笔记-现代操作系统-2进程与线程-2.2线程

2 线程的经典模型通常来说经典的线程模型和普通的进程模型都是类似的只是在共享资源的问题上有所不同,这里已经放在了上一节中不再详细描述,这里讨论下线程的两种实现方式,这里也是我看书的时候比较难以理解的部分:2.1 在用户空间中实现线程这种方法将整个线程包放在用户空间中,而内核对此一无所知。通用结构:整个操作系统分为两个部分,内核空间和用户空间,进程当时是分布在内核空间中,在进程内部定义一个运行时系统

2016-07-07 12:23:41 1217

原创 读书笔记-现代操作系统-2进程与线程-2.1进程2.2线程

1. 进程与线程首先,应该考虑的是引入进程和线程需要解决的问题是什么? 以我个人的意见来看,进程的抽象解决了这样的一个问题:使同一台计算机上可以运行多道不相关联的任务,而进程的引入主要目的在于提高同一个任务完成的效率。如果围绕这个进程和线程的目的来看分析进程和线程的区别就比较容易总结了。1.1 进程:由于需要解决多个任务的问题,进程首先需要的就是资源分组处理和执行能力。这些资源和能力定义了进程。

2016-07-07 09:28:02 1022

原创 读书笔记-java网络编程-7URLConnection-缓存

7.5 缓存7.5.1缓存简述通常来说,get通过http访问获得的页面可以缓存,也应当缓存,使用HTTPS或者POST方法访问的页面通常不应该缓存。不过HTTP首部可以对此作出调整:Expires首部(主要用于HTTP1.0)指示可以缓存这个资源表示,直到指定的时间为止Cache-control首部(HTTP1.1)提供了粒度更细的缓存策略: max-age=[seconds]s-maxa

2016-07-06 13:59:57 497

原创 读书笔记-java网络编程-7URLConnection-获取URL首部

7 URLConnection7.1 URLConnection简介URLConnection是一个抽象类,表示指向URL指定资源的活动连接。有两个不同但是相关的用途: 1. 一个是与服务器(特别是HTTP服务器)的交互,可以用来查看服务器发送的首部,设置连接的属性,设置客户端的请求的首部等。利用它也可以实现POST和PUT方法来发送数据。 2. URL是Java的协议处理器机制的一部分。所谓的

2016-07-06 13:48:01 662

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除