- 博客(35)
- 收藏
- 关注
原创 Java初入其径(1): 接口也能继承
阅读代码时,窥得接口继承其它的接口,想着“接口也能被继承,不是实现接口吗?”,思忖之后,区分了继承和实现之间的语义差别,继承是“获取父辈流传下来的东西”,Java中,并不是说只有类可以继承类,当有接口需要获取另个接口的定义时,它也可以继承那个接口,这是符合语义的。而实现的语义是将已定义过的方法,填充它的内部运行机制。import sun.misc.Lock;/** * Created b
2014-01-26 14:55:54 546
原创 barbecue
#include "barbecue.h"#include void barbecue::add_guest(int arrival){ guest* gst = new guest(this, arrival); _schedule_table.push(gst);}void barbecue::serve_guest(guest* gst){ _schedule_tabl
2013-10-24 17:24:17 436
原创 c++获取操作系统的版本(vs2013)
在vs2013下,使用GetVersionEx来获取操作系统的版本信息,vs报错error: `GetVersionEx‘ declared deprecated,于是去msdn查看了一下,推荐使用VerifyVersionInfo来进行版本判断,官方解释是因爲一般只要判断是否windows的版本大于某个特定的版本号。于是我查看了一下VerifyVersionInfo,这个函数的使用就是针对特
2013-10-16 21:52:12 6402 4
原创 c#文件读写之内存映射和StreamReader
契机:这两天写逐行分析文件的程序,文件是GB量级的,我用来分析的文件大小是2GB大小。分析: 考虑到内存大小有限(本机2GB),那么不能将2GB的文件全部加载如内存,想到2个读取方法: c#本身有StreamReader类,可以通过指定path读取文件,并且有ReadLine的方法,逐行读取。 通过内存映射,将文件映射到虚拟内存空间,由操作系统管理,需要对虚拟内存中
2013-09-18 20:18:20 2780
原创 毕业设计之模块整合
之前完成了VolumeDelegateService,以及VmmDelegateService,于是最后是把这些模块进行整合。在最后最后的模块vssService里,已知卷服务器们的ip地址,和vmm服务器的ip地址。volumes表记录创建的volume的信息:卷id 卷所在的卷服务器url 卷大小 卷的创建时间 卷的使用状态volId serve
2013-04-25 21:45:35 299
原创 毕业设计之多卷服务器
想到一开始拿到这个项目的时候,多卷的概念很模糊,现在经过学习之后,明白了,卷服务器是作为存储管理者的身份存在的,它们共享整个存储池,就算一个卷服务器挂掉了,也可以重启一个代替。可是我现在的问题是,我没有一块存储池,所以我改用每个卷服务器都自己提供存储,而不是共享。假设有两个卷服务器作为后端,卷服务器A,卷服务器B,那么用户执行createVolume时,这个操作会在哪个卷服务器上执
2013-04-24 22:05:06 445
原创 最后的遗言:虚拟机中的虚拟机
为了毕设,很蛋疼地在mac的vmware fusion里装了一个ubuntu,更蛋疼地在ubuntu里的xen虚拟机中装了一个centOS。像盗梦空间的层层梦境,最后在centOS里的时候,鼠标终于无法正常移动了!主要是为了使用xen的块绑定的操作,可以将从卷服务器上通过iSCSI获取的逻辑卷分配给自己的xen中的虚拟机,很拗口!xen命令行操作表=>xm list:所有已知的虚拟机列
2013-04-23 15:29:45 438
转载 ubuntu xen安装
//转载自http://www.360doc.com/content/12/1122/21/4171006_249630254.shtml# 最近看了些有关虚拟化的东西,几种虚拟化技术中最常用的就是全虚拟化技术和半虚拟化技术。想在Ubuntu下尝试安装一下运用这两种技术的虚拟机。 全虚拟化技术的典型代表就是VMware虚拟机了,VirtualBox也是。这两种虚拟机安全起来非常
2013-04-22 15:51:37 1309 1
原创 毕设学习之iSCSI的使用
lvm的作用以及使用方法:http://linux.vbird.org/linux_basic/0420quota.php#lvm创建一个20G的逻辑卷:首先,利用fdisk进行分区,我将未分配的20G空间转换成LVM格式的逻辑分区,并且使用pvcreate将一创建的分区创建成物理卷,之后,将创建的物理卷添加入新的卷组srgvg,vgcreate -s 16M srgvg /dev
2013-04-22 15:09:34 597
转载 一直不知道__P干嘛用的,这次记录一下
On 2006-06-08 10:45, Saifi saifi at twincling.org> wrote:> Hi:>> Most of the racoon code uses __P macro.>> and the __P macro is defined as ->> #undef __P> #ifndef __P> #if __STDC__> #define
2013-04-19 11:48:01 426
原创 毕业设计学习(2)
iscsi-target提供了磁盘块存储,通过tcp/ip向客户端传送iscsi控制/存储数据,用网络来作为媒介,让客户端像使用本地磁盘一样使用非本地的磁盘,这样的好处就是能够动态地增加磁盘空间,可以通过增添服务器来提供这一操作。iscsi-initiator就是这样一个客户端,它去侦测指定服务器,并且将iscsi-target发布的可用磁盘加载到本地/dev目录下,这样在自己的系统里也可以像
2013-04-13 08:46:13 142
原创 毕业设计学习(1)
不知道自己无知是幸福的,知道自己无知是烦躁的起源。听着林宥嘉的美妙生活,感觉像是在听悲惨世界...基于多卷服务器的云存储管理系统,作为毕业课题,我这么无知的人,真的diao都不懂,网上查了些资料,看了下论文,还是不敢说自己懂,因为没写过... 但是有前辈的java源码在前,总可以学习一下吧,不然就太懒了。但是java 几乎0基础的我,真的是慢慢啃,连基础平台都搭建不起来,更别谈写出
2013-04-13 08:43:43 514
原创 epoll读写事件如何触发?
为了理解一下epoll的读写事件如何触发,自己写了一些测试程序。Example 1:#include #include #include #include #include #include #include #include #include #include #define MAXLINE 10#define OPEN_MAX 100#define LI
2012-12-20 16:49:14 1114
转载 python使用lock
Python定时器是计算机常用的计算机语言,在其广泛的实际应用操作中会涉及到Lock的实际应用,如果你对Python定时器中Lock的实际应用感兴趣的话,你可以通过我们的文章对其有更深的了解。在Python定时器中Lock的实际应用Lock/RLock 和 C# lock 关键字差不多意思。不同的是,Lock/RLock 只需 "锁定" 自己,而 C# lock 还得另外找个引用类
2012-12-20 13:12:53 1483
转载 kqueue && epoll
int kqueue(void);=> 返回一个文件描述符,用来操作新建的kqueue实例int kevent(int kq, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout);=> kq: k
2012-12-15 22:34:10 1887
原创 大杭电OS 文件系统实现 (tab补全乱入)
我大杭电的十年如一日的操作系统课程设计, 内容还是不错的, 手册也够详细, 文件系统这块看的不是太清晰, 按自己想的实现了一下,实现了才知道不易!block为内存块,大小为1024 B,系统由1000个block组成。block 0储存文件系统信息,紧接着2个block为 fat16,用来标记块的分配情况和连续性,它有一个相同大小的备份紧接着, 剩下的995个block是储存目录和文件的区
2012-12-07 21:46:11 317
原创 有多少bug可以重来
那些尝试过的bug、bug 1: malloc(sizeof(1024)) why always segmentation fault?本着分配1024字节空间的伟大使命,使用这条命令,sizeof(1024),真的不是sizeof(int)的意思吗。。bug 2: 宏=请加括号!#define min(a,b) (a)<(b)?(a):(b
2012-11-25 12:27:25 468
原创 python 元编程
from abc import ABCMeta, abstractmethod, abstractpropertydef method_a(cls): print "method A"def method_b(cls): print "method B"method_dict = { 'ma' : method_a, 'mb' : method_b,}
2012-11-22 22:12:55 127
python 元编程
元编程=> 用代码写代码classes are themselves objects that can be passed around and introspected. 类本身是可传递的对象,能够自省、
2012-11-22 17:34:19 96
原创 python成员访问
import mathclass Circle: def __init__(self): self.radius = 1 def __getattr__(self, item): if item is 'area': print 'area called' return math.pi*self.
2012-11-22 13:46:12 558
原创 笔试面试带来什么?
最早的笔试是大二下半学期的时候支付宝的校园招聘,那时候自己刚看完csapp,终于给了自己一个基本计算机概念,没那么不知所措了。。被marine鼓励了一下,参加了这个笔试,这笔试考的是linux使用的一些基础知识,比如指令,shell脚本的一些编写,还有一些IQ问题、过了几天,alipay让我去面试,人生的第一次面试就这么诞生了,犹记得在那晚等着电话的我,单曲循环曹方姐姐的门这首歌,在微冷的租的
2012-11-17 23:12:35 561
原创 我的第一个解释器--scheme
scheme是这个暑假弄的,实现了一下它的基本框架我的实现比较学术,毕竟是看了编译原理的前5章,之后弄的,所以思路简洁清晰!Q:scheme是什么?A:scheme是MIT人工智能实验室开发的一种lisp方言,一种用括号包围的语言Q:为什么是scheme?A:因为sicp(推荐)Q:我的解释器用的是怎样的分段开发?A:lexer(词法分析) ->
2012-11-11 16:02:43 1241
原创 hdu 2442
#include #include #include using namespace std;int main(int argc, const char * argv[]){ int cas,n,m,t; priority_queue,greater >Q0; priority_queue,less >Q1; int tmp_arr[2001],arr[2001]; cin
2012-11-01 20:14:00 485
原创 hdu 1442
题意:有两种操作,add(x),get()The Black Box algorithm supposes that natural number sequence u(1), u(2), ..., u(N) is sorted in non-descending order, N <= M and for each p (1 <= p <= N) an inequality p <= u(p
2012-11-01 19:20:23 355
原创 java中的static
static可以修饰成员方法,成员变量//:Static.javaimport java.io.*;import java.util.*;class A {A() { System.out.println("A init"); }}class B {static A a = new A();static void f1() { System.ou
2012-10-26 21:41:42 262
原创 usaco之a game
首先,player1和player2都是最聪明的人,他们会选择在他们选择最好的选择玩家如何能做出最好的选择,依赖于他选择array的head端还是tail端,所以最佳选择是best_choice(head,tail)=max(array[head]+sum_from_to[head+1][tail]-best(head+1,end),array[tail]+sum_from_to[head
2012-10-07 22:15:20 381
原创 usaco之camelot
这道题真的有太多小细节要注意了,如果没有usaco的测试数据指引,真的会漏掉非常多的细节1. 首先我本地化了每个骑士(knightr,knightc){1=2. 同样,固化了国王的行路最小步数,当然国王只有一个.3. 分析可能的情况: condition 1: 国王不要骑士带领,直接走到汇合点,则步数为(all knights -> destina
2012-10-07 02:22:03 573
原创 表达式求值-二叉树实现
本来用栈实现表达式求值,这次用二叉树来实现,DRY`一开始做的时候,脑子里没有一点概念,而没概念是最要命的,所以在网上乱晃,希望有个解释,但可能实在太浮躁了,代码是不想看的,而思路自己也看不大懂,所以本来想TJ, 最终忍住了,直接买了本数据结构(C语言版),慢慢看,它上面的思路很连续,看了之后终于懂了。为了连续性,我先把后缀表达式的栈实现描述一下,因为栈实现
2012-03-21 16:50:29 3172 3
原创 thread
#include #include #include #define NTCB 1000#define FINISHED 0#define RUNNING 1#define READY 2#define BLOCKED 3typedef struct thread { char name[10]; unsigned ss; unsigned sp;
2011-11-07 14:55:45 179
原创 ratios
/*ID:songrgg1PROG:ratiosLANG:C*/#include typedef struct feed { int one; int two; int three;} feed;void get_feed(FILE *
2011-10-18 20:05:27 203
原创 FAT表寻址 取数据
于渊的Orange‘s将boot设置为dos可识别,而要做的工作中,除了将在软盘中的部分提到内存中,还存在将内存中的FAT表中的地址取出,我一开始非常吃力,这内存存储方式真是恶心,什么小端法的存储模式,你最好把他们在脑海里用栈的模型来想象,这样就很轻松的能够对数据的组织方式有所了
2011-08-10 05:58:49 280
原创 ldt in gdt
由于ldt是在gdt里的, 所以必须先从RM跳到PM下,将gdt中的ldt装载, 才能跳到ldt段里,实际上要将ldt看成一个中转段,只是一个拐角,到了那里,然后转到ldt真正的段...至于ldt中的选择子, 则是LABEL_LDT_DESC_A - LABEL_LDT+SA
2011-08-04 15:21:20 92
原创 GDT的始末缘由
<br />1. What is GDT<br />在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。<br />为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型:<br />在Real Mode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的Base Address,一个Segment的最大长度是64 KB,这是16-bit系统所能表示的最大长度。而Offs
2011-04-29 10:41:00 141
原创 hdu 1003
<br />求最大连续和,想了一下,觉得这还必须考虑所有的情况,至少需要把所有的都试一下<br /> <br />于是我就想到,考虑1个,2个...N个元素各自的最大值,然后取里面最长的最先出现的...<br /> <br />我先去试试靠谱不靠谱...<br /> <br />试过了,思想是正确的,可是也是愚蠢的,潮湿了<br /> <br />还是典型的dp,就是列出了状态转移方程:<br />sum[i]=sum[i-1]>0?sum[i-1]+a[i]:a[i]<br />基于前面的情况,只要判断前
2011-04-12 22:52:00 96
原创 orange‘s 中的寻址
<br /> 寻址是我觉得入门时遇到的最难的最大的问题, 因为这是有许多年轻人不知道的历史典故的, 必须有历史的积淀<br /> <br /> 看orange‘s的时候, 寻址是最先的一个坎, 8086的历史告诉我们, 20位地址线 16位的寄存器 所产生的是无法直接寻址的痛苦, 这里的直接是 单用一个16位的寄存器来提交给cpu 因为毕竟还有4位的空间告诉我们 可以寻址1MB=1024KB=2^20B的内存地址空间 而非仅仅2^16B<br />(当然那时候的寄存器没有32位,
2011-04-03 22:03:00 122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人