07 2011 档案

摘要:bootmem分配器是系统初始化的时候用的内存分配器,用到的结构为: 30 typedef struct bootmem_data { 31 unsigned long node_boot_start; 32 unsigned long node_low_pfn; 33 void *node_bootmem_map; 34 unsigned long last_offset; 35 unsigned long last_pos; 36 unsigned long last_success; /* Previous allocation point. To speed 37 * up searc 阅读全文
posted @ 2011-07-31 23:47 GG大婶 阅读(1924) 评论(0) 推荐(1)
摘要:生成能自动判别类型的Vector: 1 import java.util.*; 2 class Gopher { 3 private int gopherNumber; 4 Gopher(int i) { 5 gopherNumber = i; 6 } 7 void print(String msg) { 8 if(msg != null) 9 System.out.println(msg);10 System.out.println("Gopher number " + gopherNumber);11 }12 }13 class GopherTrap {14 stati 阅读全文
posted @ 2011-07-27 23:15 GG大婶 阅读(249) 评论(0) 推荐(0)
摘要:虽然是第二次看,感觉这部分还是要仔细看。多形性是面向对象编程语言的第三中特性。首先是上溯造型(这个是什么意思就不说了),为什么需要上溯造型呢?很多书上都会用“画图”或者“乐器”的程序来和大家解释:class Note{ private int value; private Note(int val) { value = val; } public static final Note middleC = new Note(0), cSharp = new Note(1), cFlat = new Note(2);} // Etc.class Instrument { public void pl 阅读全文
posted @ 2011-07-26 22:45 GG大婶 阅读(488) 评论(0) 推荐(0)
摘要:HTTP协议是基于“请求与响应”模式的无状态、应用层的协议,常基于TCP。 HTTP请求分为三个部分:请求行、消息报头、请求正文。在接收和接收请求消息之后,服务器返回一个HTTP响应消息,包括三个部分:状态行、消息报头、响应正文。下面分别说这三个部分。 请求行的格式是“请求方式”“资源路径”“HTTP版本号”,一个例子:GET /test.html HTTP/1.1。请求的方式可以是“GET”,“POST”,“PUT”,“DELETE”,“OPTIONS”,“TRACE”,“HEAD”。(现在大部分框架是基于“GET”和“POST”,不过现在也有框架是根据HTTP协议的初衷来做的,在哪里看到. 阅读全文
posted @ 2011-07-25 22:13 GG大婶 阅读(312) 评论(0) 推荐(0)
摘要:Java的一个引人注意的特性就是代码的重复使用或者再生。 Java有两种方法来实现:合成和继承。合成看起来比较简单,也就是声明一个新的类型,其中包括了几个现在以后的类型。用汽车的例子来说明就是避免“重复制造轮子”。至于“轮子”应该什么时候被造出来?可以是在准备生产汽车之前就造(在定义处)、可以边造汽车边造(构建器内)、可以早完汽车然后等到要用轮子的时候(在使用之前)。 继承的实现很简单:“extends”。虽然简单,不过还是要想几个问题,这样一串的东西,先初始化哪个?其实写个简单的程序就可以验证了(基类的初始化完成之后才开始衍生类的初始化,其实简单想想也应该是这样的): 1 class Ar. 阅读全文
posted @ 2011-07-25 21:21 GG大婶 阅读(250) 评论(0) 推荐(0)
摘要:在“库”之类的程序的设计中,只有部分的代码是公布给使用者的。可以通过访问权限的控制来实现。“库”是由一个一个的“包”组成的,用“package”打包(这句话必须在非注释的第一行),而使用者用“import”引入就可以了。在封装包的时候用反过来的域名的唯一的标志一个包(因为域名是唯一的,所以所发行的包名也是唯一的)。Java解释器在执行的时候,先找到“CLASSPATH”,以此为根目录开始找“.class”文件。Java中的“访问控制符”只有一个是比较特别的:如果一个变量前面什么都不写(也就是默认)说明这个变量是“包”级访问权限。“private”的用法还有下面的这种情况,可以使得对象“new” 阅读全文
posted @ 2011-07-24 14:39 GG大婶 阅读(182) 评论(0) 推荐(0)
摘要:#!/bin/sh#当前程序的名称echo $0#当前程序的第n个参数echo $1#当前程序的所有参数echo $*#当前程序的参数个数echo $##当前程序的PIDecho $$#执行上一个指令的PIDecho $!#上个指令的返回值echo $?#!/bin/sh#shell中字符串的比较s1="abc "s2="abc"s3="bcd"s4=""if [ "$s1"="$s2" ];then echo "s1等于s2"fiif [ "$ 阅读全文
posted @ 2011-07-23 20:51 GG大婶 阅读(350) 评论(0) 推荐(0)
摘要:用构建器自动初始化构造函数不需要返回参数。在new一个对象的时候就调用构造函数来初始化一个对象。在没有定义构造函数的时候会有一个默认的构造函数。“在程序中什么时候调用哪个构造函数”?这个在下面详细说明。方法过载不同的方法用同一个名称,不过它们的参数必须不同。public class test { public static void func(int a){ System.out.println("int"); } public static void func(long a){ System.out.println("long"); } public 阅读全文
posted @ 2011-07-23 16:51 GG大婶 阅读(283) 评论(0) 推荐(0)
摘要:用句柄操纵对象JVM是怎么通过句柄访问对象的(或者说句柄究竟是个什么东西),给我的感觉就像指针或者引用。也有人说句柄就是“受到了严格限制和防范的指针”。在给方法传参数的时候需要注意。所有的对象必须创建程序运行时可以保存数据的六个地方:寄存器、堆栈(对象句柄)、堆(对象)、静态存储(JAVA对象永远不会置于静态存储空间)、常熟存储、非RAM存储。8种不用new初始化的变量:boolean、byte、short、char、int、float、long、double。从小到大排序。java里面是没有unsigned类型的,曾今写加密程序的时候在这个问题上的纠结,好菜。另外还有两种高精度:BigInt 阅读全文
posted @ 2011-07-23 13:53 GG大婶 阅读(238) 评论(0) 推荐(0)
摘要:数据读取流程Cassandra会根据需要读取的ColumnFamily查询该ColumnFamily下的Memtable以及所有的SSTable,合并查询结果,将最新的结果返回给客户端。Cassandra从SSTable中读取数据时,先要读取Bloom Filer文件判断该Key是否在被SSTable中,如果在,再从Index文件中定位到数据的位置,最后从Data文件中读取需要查询的信息。弱读取的执行流程如下:从集群中找出一台最适合读取的服务器。从这个服务器读取数据,如果是本机则对本机的数据进行异步读取。如果不是本机,向该服务器请求需要的数据,并根据一定的概率进行计算是否进行读取修复操作。等待 阅读全文
posted @ 2011-07-23 10:29 GG大婶 阅读(963) 评论(0) 推荐(0)
摘要:其实看了上个文章这个流程就基本能猜到了哈。数据更新流程更新数据写入Commitlog。更新数据写入Memtable。更新数据写入SSTable。集群数据跟新策略为了保证高可用性,写入操作不必等待所有的服务器都相应写入成功,提供六种一致性写入策略:ANY:有一个成功响应就通知客户端成功(包括HINT消息)。ONE:和ANY不同的是不包括HINT消息。QUORUM:成功的服务器数目不小于“ReplicationFactor/2+1”(不包括HINT消息)。LOCAL_QUORUM:与3不同的是写入成功的节点中有一台与接受写入操作的服务器处于同一个数据中心时返回更新成功。EACH_QUORUM:与4 阅读全文
posted @ 2011-07-21 23:32 GG大婶 阅读(594) 评论(0) 推荐(0)
摘要:Cassandra中数据存放规则data:存储真正的数据文件,既后面的SStable文件,可以指定多个目录。commitlog:存储未写入SSTable中的数据(在每次写入之前先放入日志文件)。cache:存储系统中的缓存数据(在服务重启的时候从这个目录中加载缓存数据)。合理安排上面节点之间的位置以提高性能。CommitlogCommilog中包括两个部分:Commilog-XXXX.log和Commilog-XXXX.log.header。Commitlog-XXXX.log文件中保存上次更新操作的值,Commitlog-XXXX.log.header记录了那些数据已经从Memtable中写 阅读全文
posted @ 2011-07-21 22:56 GG大婶 阅读(1334) 评论(0) 推荐(0)
摘要:用户输入URL:XXXX/Login.htm。分析URL获取target:/Login.vm。根据target找到模板/screen/Login.vm。根据target找screen模板的类。渲染screen。根据target找layout模板。渲染layout模板。渲染layout中的controller。感觉这些开发中要注意的就是参数的传递。 阅读全文
posted @ 2011-07-21 10:15 GG大婶 阅读(288) 评论(0) 推荐(0)
摘要:今天看了一下Cassandra,安装运行起来还是很简单的。Cassandra中的4个结构如下:Column是Cassandra中最小的单元:{name,value,timestamp}。SuperColumn(那么对应的value有一组值):{name,value:{{},{},{}...}}。ColumnFamily可以看做数据库中的表:{key1:{{},{}...},key2:{{},{}....}...}。KeySpace(我对这个的理解是从字面上猜的),每个KeySpace可以包括多个表(ColumnFamily)。在cassandra.thrift文件中定义了各种程序和Cassan 阅读全文
posted @ 2011-07-20 20:01 GG大婶 阅读(785) 评论(0) 推荐(0)
摘要:Session和Cookie对于做web开发的来说应该是熟悉的不能在熟悉的东西了,刚开始(严格说是还没有)接触过这些东西,记录一下,给自己扫盲。为什么需要Session?HTTP无状态导致了在页面跳转之后,不知道他之前做了什么事情。比如如果一个用户登录了,那跳转之后就不知道这是一个登录用户。那处理HTTP无状态在跳转时候的麻烦还有没有其他的办法?另一个解决方法就是Cookie,不过这个是保存在用户端的,如果用户吧Cookie禁用了那就没办法了。还有一个,Cookie是有限制的(好像以前记得有人说过解决这个的方法),所以Session更加自由,但是会消耗服务器的资源。Cookie还有一个用处就是 阅读全文
posted @ 2011-07-20 14:14 GG大婶 阅读(205) 评论(0) 推荐(0)
摘要:看了一些网上关于GET和POST方法的区别:GET吧请求的内容添加在URL的后面(用‘?’来划分URL和数据)。而POST方法则把请求内容放在HTTP头中,所有POST会更安全。至于关于GET和POST对长度的限制网上也有一些说法,有时间了仔细再看看具体是在哪里做的这些限制。个人理解,欢迎拍砖。 阅读全文
posted @ 2011-07-20 13:20 GG大婶 阅读(291) 评论(0) 推荐(0)