2010年12月15日

一些常识

【五脏】心、肝、脾、肺、肾

 

【六腑】胃、胆、三焦、膀胱、大肠、小肠

【七情】喜、怒、哀、乐、爱、恶、欲

【五常】仁、义、礼、智、信

【五伦】君臣、父子、兄弟、夫妇、朋友

【三姑】尼姑、道姑、卦姑

【六婆】牙婆、媒婆、师婆、虔婆、药婆、稳婆

【九属】玄孙、曾孙、孙、子、身、父、祖父、曾祖父、高祖父

【五谷】稻、黍、稷、麦、豆

【中国八大菜系】四川菜、湖南菜、山东菜、江苏菜、浙江菜、广东菜、福建菜、安徽菜

【五毒】石胆、丹砂、雄黄、矾石、慈石

【配药七方】大方、小方、缓方、急方、奇方、偶方、复方

【五彩】青、黄、赤、白、黑

【五音】宫、商、角、徵、羽

【七宝】金、银、琉璃、珊瑚、砗磲、珍珠、玛瑙

【九宫】正宫、中吕宫、南吕宫、仙吕宫、黄钟宫、大面调、双调、商调、越调

【七大艺术】绘画、音乐、雕塑、戏剧、文学、建筑、电影

【四大名瓷窑】河北的瓷州窑、浙江的龙泉窑、江西的景德镇窑、福建的德化窑

【四大名旦】梅兰芳、程砚秋、尚小云、荀慧生

【六礼】冠、婚、丧、祭、乡饮酒、相见

【六艺】礼、乐、射、御、书、数

【六义】风、赋、比、兴、雅、颂

【八旗】镶黄、正黄、镶白、正白、镶红、正红、镶蓝、正蓝

【十恶】谋反、谋大逆、谋叛、谋恶逆、不道、大不敬、不孝、不睦、不义、内乱

【九流】儒家、道家、阴阳家、法家、名家、墨家、纵横家、杂家、农家

【三山】安徽黄山、江西庐山、浙江雁荡山

【五岭】越城岭、都庞岭、萌诸岭、骑田岭、大庾岭

【五岳】〖中岳〗河南嵩山、〖东岳〗山东泰山、〖西岳〗陕西华山、〖南岳〗湖南衡山、〖北岳〗山西恒山

【五湖】鄱阳湖〖江西〗、洞庭湖〖湖南〗、太湖〖江苏〗、洪泽湖〖江苏〗、巢湖〖安徽〗

【四海】渤海、黄海、东海、南海

【四大名桥】广济桥、赵州桥、洛阳桥、卢沟桥

【四大名园】颐和园〖北京〗、避暑山庄〖河北承德〗、拙政园〖江苏苏州〗、留园〖江苏苏州〗

【四大名刹】灵岩寺〖山东长清〗、国清寺〖浙江天台〗、玉泉寺〖湖北江陵〗、栖霞寺〖江苏南京〗

【四大名楼】岳阳楼〖湖南岳阳〗、黄鹤楼〖湖北武汉〗、滕王阁〖江西南昌〗、大观楼〖云南昆明〗

【四大名亭】醉翁亭〖安徽滁县〗、陶然亭〖北京先农坛〗、爱晚亭〖湖南长沙〗、湖心亭〖杭州西湖〗

【四大古镇】景德镇〖江西〗、佛山镇〖广东〗、汉口镇〖湖北〗、朱仙镇〖河南〗

【四大碑林】西安碑林〖陕西西安〗、孔庙碑林〖山东曲阜〗、地震碑林〖四川西昌〗、南门碑林〖台湾高雄〗

【四大名塔】嵩岳寺塔〖河南登封嵩岳寺〗、飞虹塔〖山西洪洞广胜寺〗、释迦塔〖山西应县佛宫寺〗、千寻塔〖云南大理崇圣寺〗

【四大石窟】莫高窟〖甘肃敦煌〗、云岗石窟〖山西大同〗、龙门石窟〖河南洛阳〗、麦积山石窟〖甘肃天水〗

【四大书院】白鹿洞书院〖江西庐山〗、岳麓书院〖湖南长沙〗、嵩阳书院〖河南嵩山〗、应天书院〖河南商丘〗

【四大佛教名山】浙江普陀山〖观音菩萨〗、山西五台山〖文殊菩萨〗、四川峨眉山〖普贤菩萨〗、安徽九华山〖地藏王菩萨〗

【四大道教名山】湖北武当山、江西龙虎山、安徽齐云山、四川青城山

【五行】金、木、水、火、土

【八卦】乾〖天〗、坤〖地〗、震〖雷〗、巽〖风〗、坎〖水〗、离〖火〗、艮〖山〗、兑〖沼〗

【三皇】伏羲、女娲、神农

【五帝】五帝有五种说法①黄帝、颛顼、帝喾、尧、舜
②宓戏(伏羲)、神农、黄帝、尧、舜
③太昊、炎帝、黄帝、少昊、颛顼
④少昊、颛顼、帝喾、尧、舜
⑤黄帝、少昊、颛顼、喾、尧
其中第三种说法最为流行,意指东西南北中五个方位的天神,东方太昊,南方炎帝,西方少昊,北方颛顼,中央黄帝。

【三教】儒教、道教、佛教

【三清】元始天尊〖清微天玉清境〗、灵宝天尊〖禹余天上清境〗、道德天尊〖大赤天太清境〗

【四御】昊天金阙无上至尊玉皇大帝、中天紫微北极大帝、勾陈上宫天后皇大帝、承天效法土皇地祗

【八仙】铁拐李、钟离权、张果老、吕洞宾、何仙姑、蓝采和、韩湘子、曹国舅

【十八罗汉】布袋罗汉、长眉罗汉、芭蕉罗汉、沉思罗汉、伏虎罗汉、过江罗汉、欢喜罗汉、降龙罗汉、静坐罗汉、举钵罗汉、开心罗汉、看门罗汉、骑象罗汉、探手罗汉、托塔罗汉、挖耳罗汉、笑狮罗汉、坐鹿罗汉

【十八层地狱】[第一层]泥犁地狱、[第二层]刀山地狱、[第三层]沸沙地狱、[第四层]沸屎地狱、[第五层]黑身地狱、[第六层]火车地狱、[第七层]镬汤地狱、[第八层]铁床地狱、[第九层]盖山地狱、[第十层]寒冰地狱、[第十一层]剥皮地狱、[第十二层]畜生地狱、[第十三层]刀兵地狱、[第十四层]铁磨地狱、[第十五层]寒冰地狱、[第十六层]铁册地狱、[第十七层]蛆虫地狱、[第十八层]烊铜地狱
【四大名绣】苏绣〖苏州〗、湘绣〖湖南〗、蜀绣〖四川〗、广绣〖广东〗

【四大名扇】檀香扇〖江苏〗、火画扇〖广东〗、竹丝扇〖四川〗、绫绢扇〖浙江〗

【四大名花】牡丹〖山东菏泽〗、水仙〖福建漳州〗、菊花〖浙江杭州〗、山茶〖云南昆明〗

【十大名茶】西湖龙井〖浙江杭州西湖区〗、碧螺春〖江苏吴县太湖的洞庭山碧螺峰〗、信阳毛尖〖河南信阳车云山〗、君山银针〖湖南岳阳君山〗、六安瓜片〖安徽六安和金寨两县的齐云山〗、黄山毛峰〖安徽歙县黄山〗、祁门红茶〖安徽祁门县〗、都匀毛尖〖贵州都匀县〗、铁观音〖福建安溪县〗、武夷岩茶〖福建崇安县〗

【扑克人物】
黑桃J:查尔斯一世的侍从,丹麦人霍克拉
红桃J:查尔斯七世的宫廷随从拉海亚
梅花J:亚瑟王的著名骑士兰斯洛特
方块J:查尔斯一世的侍从罗兰
黑桃Q:帕拉斯o阿西纳,古希腊神话中智慧与战争女神
红桃Q:朱尔斯,德国人,查尔斯一世的妻子
梅花Q:英国的兰开斯特王族的约克王后
方块Q:是《圣经o旧约》中的约瑟夫的妹妹,莱克尔皇后
黑桃K:戴维,公元前10世纪的以色列国王索洛蒙的父亲,擅长弹奏竖琴
红桃K:查尔斯一世,弗兰克国王沙勒曼
梅花K:马其顿国的亚历山大大帝,最早go-vern-ment世界
方块K:罗马名将和政治家朱亚斯o西泽,罗马统一后成为独裁统治者

【十二生肖】
〖中国〗子鼠、丑牛、寅虎、卯兔、辰龙、巳蛇、午马、未羊、申猴、酉鸡、戌狗、亥猪
〖埃及〗牝牛、山羊、狮子、驴、蟹、蛇犬、猫、鳄、红鹤、猿、鹰
〖法国〗摩羯、宝瓶、双鱼、白羊、金牛、双子、巨蟹、狮子、室女、天秤、天蝎、人马
〖印度〗招杜罗神的鼠、毗羯罗神的牛、宫毗罗神的狮、伐折罗神的兔、迷立罗神的龙、安底罗神的蛇、安弥罗神的马、珊底罗神的羊、因达罗神的猴、波夷罗神的金翅鸟、摩虎罗神的狗、和真达罗神的猪,

【年龄称谓】
襁褓:未满周岁的婴儿
孩提:指2——3岁的儿童
垂髫:指幼年儿童(又叫“总角”)
豆蔻:指女子十三岁
及笄:指女子十五岁
加冠:指男子二十岁(又“弱冠”)
而立之年:指三十岁
不惑之年:指四十岁
知命之年:指五十岁(又“知天命”、“半百”)
花甲之年:指六十岁
古稀之年:指七十岁
耄耋之年:指八、九十岁
期颐之年:一百岁

【古代主要节日】
元日:正月初一,一年开始。
人日:正月初七,主小孩。
上元:正月十五,张灯为戏,又叫“灯节”
社日:春分前后,祭祀祈祷农事。
寒食:清明前两日,禁火三日(介子推 )
清明:四月初,扫墓、祭祀。
端午:五月初五,吃粽子,划龙(屈原)
七夕:七月初七,妇女乞巧(牛郎织女)
中元:七月十五,祭祀鬼神,又叫“鬼节”
中秋:八月十五,赏月,思乡
重阳:九月初九,登高,插茱萸免灾
冬至:又叫“至日”,节气的起点。
腊日:腊月初八,喝“腊八粥”
除夕:一年的最后一天的晚上,初旧迎新

【婚姻周年】第1年§纸婚、第2年§棉婚、第3年§皮革婚、第4年§水果婚、第5年§木婚、第6年§铁婚、第7年§铜婚、第8年§陶婚、第9年§柳婚、第10年§铝婚、第11年§钢婚、第12年§丝婚、第13年§丝带婚、第14年§象牙婚、第15年§水晶婚、第20年§瓷婚、第25年§银婚、第30年§珍珠婚、第35年§珊瑚婚、第40年§红宝石婚、第45年§蓝宝石婚、第50年§金婚、第55年§绿宝石婚、第60年§钻石婚、第70年§白金婚

【科举职官】〖乡试〗:录取者称为"举人",第一名称为"解元"、〖会试〗:录取者称为"贡生",第一名称为"会元"、〖殿试〗:录取者称为"进士",第一名称为"状元",第二名为"榜眼",第三名为"探花"

【四书】《论语》、《中庸》、《大学》、《孟子》

【五经】《诗经》、《尚书》、《礼记》、《易经》、《春秋》

【八股文】破题、承题、起讲、入手、起股、中股、后股、束股

【六子全书】《老子》、《庄子》、《列子》、《荀子》、《扬子法言》、《文中子中说》

【汉字六书】象形、指事、形声、会意、转注、假借

【书法九势】落笔、转笔、藏峰、藏头、护尾、疾势、掠笔、涩势、横鳞竖勒

【竹林七贤】嵇康、刘伶、阮籍、山涛、阮咸、向秀、王戎

【饮中八仙】李白、贺知章、李适之、李琎、崔宗之、苏晋、张旭、焦遂

【蜀之八仙】容成公、李耳、董促舒、张道陵、严君平、李八百、范长生、尔朱先生

【扬州八怪】郑板桥、汪士慎、李鱓、黄慎、金农、高翔、李方鹰、罗聘

【北宋四大家】黄庭坚、欧阳修、苏轼、王安石

【唐宋古文八大家】韩愈、柳宗元、欧阳修、苏洵、苏轼、苏辙、王安石、曾巩

【十三经】《易经》、《诗经》、《尚书》、《礼记》、《仪礼》、《公羊传》、《榖梁传》、《左传》、《孝经》、《论语》、《尔雅》、《孟子》

【四大民间传说】《牛郎织女》、《孟姜女》、《梁山伯与祝英台》、《白蛇与许仙》

【四大文化遗产】《明清档案》、《殷墟甲骨》、《居延汉简》、《敦煌经卷》

【元代四大戏剧】关汉卿《窦娥冤》、王实甫《西厢记》、汤显祖《牡丹亭》、洪升《长生殿》

【晚清四大谴责小说】李宝嘉《官场现形记》、吴沃尧《二十年目睹之怪现状》、刘鹗《老残游记》、曾朴《孽海花》

【莎士比亚四大悲剧】《汉姆莱特》、《李尔王》、《麦克白》、《奥赛罗》

posted @ 2010-12-15 16:35 ddatsh 阅读(81) 评论(0) 编辑

2010年12月13日

2010年度关于InnoDB最给力的资料连载:《MySQL技术内幕:InnoDB存储引擎》

http://www.javaeye.com/wiki/hzbook/2906-MySQL-InnoDB

posted @ 2010-12-13 17:19 ddatsh 阅读(80) 评论(0) 编辑

Chew-WGA 好使啊

陪同学买了三星R439的本,WIN7发现常见的几个基于GRLDR的LOADER不起作用

无法进系统

 

用这个就搞定了

posted @ 2010-12-13 12:02 ddatsh 阅读(183) 评论(2) 编辑

2010年12月10日

喜欢的软件

beyond compare 

sql assistant

emeditor

posted @ 2010-12-10 10:05 ddatsh 阅读(41) 评论(0) 编辑

2010年12月9日

ORACLE 多表连接与子查询

Oracle表连接

SQL/Oracle使用表连接从多个表中查询数据

语法格式:

select 字段列表
from table1,table2
where table1.column1=table2.column2;

说明:

在where子句中指定连接条件

当被连接的多个表中存在同名字段时,必须在该字段前加上"表名"作为前缀.

连接的类型

Oracle8i之前的表连接:

等值连接(Equijoin)

非等值连接(Non-Equijoin)

外连接(Outer join):-->左外连接-->右外连接

自连接(Self join)

  

Oracle9之后新引入的连接形式(支持SQL99规范)

交叉连接(Cross join)

自然连接(Natural join)

使用Using子句建立连接

使用on子句建立连接

外连接(Outer join):-->左外连接-->右外连接-->全外连接

等值连接(Equijoin)

select empno,ename,sal,emp.deptno,dname from emp,dept
where emp.deptno = dept.deptno;

 多表连接中:

  • 可使用AND操作符增加查询条件
  • 使用表别名可以简化查询
  • 使用表名(表别名)前缀可提高查询效率
  • 为了连接n个表,至少需要n-1个连接条件

非等值连接(Non-Equijoin)

外连接(Outer join)

使用外连接可以看到参与连接的某一方不满足连接条件的记录

外连接运算符为(+)

传统的外连接分为左外连接和右外连接两种

语法格式:

select 字段列表
from table1,table2
where table1.column1(+)=table2.column2;
select 字段列表
from table1,table2
where table1.column1=table2.column2(+);
自连接(Self join)

select a.enpno,a.ename,a.ngr,b.ename
from emp a,emp b
where a.ngr = b.enpno;

 SQL99连接语法

SQL1999规范中规定的连接查询语法


select 字段列表
from table1
[cross join table2] |
[natural join table2] |
[join table2 using(字段名)] |
[join table2 on(table.column_name=table2.column_name)] |
[(left | right | full out ) join table2
on(table1.column_name=table2.column_name)
];

交叉连接(Cross join)

Cross join 产生了一个笛卡尔集,其效果等同于再两个表进行连接时未使用where子句限定连接条件;

 

 

select empno,ename,sal,emp.deptno,dname
from emp cross join dept;

 

 

自然连接(Natural join)

Natural join基于两个表中的全部同名列建立连接

  • 从两个表中选出同名列的值均对应相等的所有行
  • 如果两个表中的同名列的所有数据类型不同,则出错
  • 不允许在参照列上使用表名或者别名作为前缀

 

select empno,ename,sal,emp.deptno,dname
from emp natural join dept;

 

Using子句 

如果不希望参照被连接表的所有同名列进行等值连接,自然连接将无法满足要求,可以在连接时使用USING子句来设置用于等值连接的列(参照列)名.


select empno,ename,sal,emp.deptno,dname
from emp join dept
using(deptno);

不允许在参照列上使用表名或者别名作为前缀

On子句

如果要参照非同名的列进行等值连接,或想设置任意的连接条件,可以使用On子句

select empno,ename,sal,emp.deptno,dname
from emp join dept
on(emp.deptno=dept.deptno);

多表连接

使用SQL99连接语法,两个以上的表进行连接时应依次/分别指定相临的两个表之间的连接条件.


select 字段列表
from table1
[cross join table2] |
[natural join table2] |
[join table2 using(字段名)] |
[join table2 on(table.column_name=table2.column_name)] |
[(left | right | full out ) join table2
on(table1.column_name=table2.column_name)
]
[cross join table3] |
[natural join table3] |
[join table3 using(字段名)] |
[join table3 on(table.column_name=table3.column_name)] |
[(left | right | full out ) join table3
on(table2.column_name=table3.column_name)
]...;

内连接和外连接

内连接(Inner join)

在SQL99规范中,内连接只返回满足连接条件的数据.

外连接(Outer join)

左外连接(Left Outer Join)

两个表在连接过程中除返回满足连接条件的行为外,还返回左表中不满足条件的行为,这种连接称为左外连接.

右外连接(Right Outer Join)

两个表在连接过程中除返回满足连接条件的行为外,还返回右表中不满足条件的行为,这种连接称为右外连接.

满外连接(Full Outer Join)

Oracle9开始新增功能,两个表在连接过程中除返回满足连接条件的行为外,还返回两个表中不满足条件的所有行为,这种连接称为满外连接.

子查询(Sub Query)

子查询子查询在主查询前执行一次

主查询使用子查询的结果


select 字段列表
from table
where 表达式 operator (select 字段列表 from table);

使用子查询注意事项

  • 在查询时基于未知时应考虑使用子查询
  • 子查询必须包含在括号内
  • 将子查询放在比较运算符的右侧,以增强可读性.
  • 除非进行Top-N分析,否则不要再子查询中使用Order by子句
  • 对单行子查询使用单行运算符
  • 对多行子查询使用多行运算符

单行子查询

单行子查询只返回一行记录

对单行子查询可使用单行记录比较运算符

=--------------等于

>--------------大于

>=------------大于等于

<--------------小于

<=--------------小于等于

<>--------------不等于


select * from emp
where sal>(select sal from emp where empno=7000);

子查询空值/多值问题

  • 如果子查询未返回任何行,则主查询页不会返回任何结果
  • 如果子查询返回单行结果,则为单行子查询,可以在主查询中对其使用相应的单行记录比较运算符
  • 如果子查询返回多行结果,则为多行子查询,此时不允许对其使用单行记录比较运算符

多行子查询

多行子查询返回多行记录

对多行子查询只能使用多行记录比较运算符

in--------------等于列表中的任何一个

any--------------和子查询返回的任意一个值比较

all--------------和子查询返回的所有值比较


select * from emp
where sal>any(select avg(sal) from emp group by deptno);
select * from emp
where sal>all(select avg(sal) from emp group by deptno);
select * from emp
where job in(select job from emp where ename='martin' or ename='ssss');

TopN查询

在oracle中通常采用子查询的方式来实现Top n查询

select 字段列表
from(select 字段列表 from table order by 排序字段)
where rownum <=n;
------------------------------------------------------------
select *
from(select * from emp order by sal desc)
where rownum <=5;

 


posted @ 2010-12-09 16:31 ddatsh 阅读(2952) 评论(1) 编辑

2010年12月7日

c中内存对齐

内存对齐问题要追溯到汇编时期

 

在C中如下结构:

struct foo
{
char c1;
short s;
char c2;
int i;
};


假设结构成员在内存中紧凑排列,c1地址0,s地址应该是1,c2地址3,i地址4
   
c1    00000000
s    00000001
c2    00000003
i    00000004

     

但VC6 中

#include<stdio.h>
struct foo
{
char c1;
short s;
char c2;
int i;
};
int main()
{

struct foo a;
printf(
"c1\t%p\ns\t%p\nc2\t%p\ni\t%p\n",
(unsigned
int)(void*)&a.c1 - (unsigned int)(void*)&a,
(unsigned
int)(void*)&a.s - (unsigned int)(void*)&a,
(unsigned
int)(void*)&a.c2 - (unsigned int)(void*)&a,
(unsigned
int)(void*)&a.i - (unsigned int)(void*)&a);
printf(
"sizeof(foo)=%d\n",sizeof(foo));
return 0;
}

c1    00000000
s    00000002
c2    00000004
i     00000008

 

这就是内存对齐而导致的问题

为什么会有内存对齐

    以下内容节选自《Intel Architecture 32 Manual》。
    字,双字,和四字在自然边界上不需要在内存中对齐。(对字,双字,和四字来说,自然边界分别是偶数地址,可以被4整除的地址,和可以被8整除的地址。)
    无论如何,为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。
    一个字或双字操作数跨越了4字节边界,或者一个四字操作数跨越了8字节边界,被认为是未对齐的,从而需要两次总线周期来访问内存。一个字起始地址是奇数但却没有跨越字边界被认为是对齐的,能够在一个总线周期中被访问。
    某些操作双四字的指令需要内存操作数在自然边界上对齐。如果操作数没有对齐,这些指令将会产生一个通用保护异常(#GP)。双四字的自然边界是能够被16整除的地址。其他的操作双四字的指令允许未对齐的访问(不会产生通用保护异常),然而,需要额外的内存总线周期来访问内存中未对齐的数据。

编译器对内存对齐的处理
    默认将结构、栈中成员数据进行对齐
    因此输出变成
   
c1    00000000
s    00000002
c2    00000004
i     00000008

    编译器将未对齐的成员向后移,将每一个都成员对齐到自然边界上,导致整个结构尺寸变大。尽管会牺牲一点空间(成员之间有空洞),但提高了性能。
也正是这个原因,不可以断言sizeof(foo) == 8。在这个例子中,sizeof(foo) == 12。

避免内存对齐的影响
    达到提高性能的目的,又节约一点空间

小技巧,改结构

struct bar
{
char c1;
char c2;
short s;
int i;
};
    这样每个成员都对齐在其自然边界上,避免编译器自动对齐
    sizeof(bar) == 8


此结构作为API一部分给第三方开发使用时
第三方开发者可能改变默认对齐选项,而造成此结构在发行的DLL中使用某种对齐方式,而在第三方开发者那却使用另外一种对齐方式,导致重大问题

 

 

使用c/c++中对齐选项

    vc6中编译选项有 /Zp[1|2|4|8|16|n] ,/Zp1 以1字节边界对齐
       
    min ( sizeof ( member ),  n)

实际上,1字节边界对齐也就表示了结构成员之间没有空洞

/Zpn用于整个工程,影响所有的参与编译的结构

vc6工程属性,c/c++,Code Generation,Struct member alignment
   
要专门针对某些结构定义使用对齐选项,可用
#pragma pack编译指令

#pragma pack( [ show ] | [ push | pop ] [, identifier ] , n  )
意义和/Zpn选项相同

#pragma pack(1)
struct foo_pack
{
char c1;
short s;
char c2;
int i;
};
#pragma pack()

 

栈内存对齐
    vc6中栈对齐方式不受结构成员对齐选项的影响。(本来就是两码事)。它总是保持对齐,而且对齐在4字节边界上

 

验证代码


#include
<stdio.h>

struct foo
{
char c1;
short s;
char c2;
int i;
};

struct bar
{
char c1;
char c2;
short s;
int i;
};

#pragma pack(1)
struct foo_pack
{
char c1;
short s;
char c2;
int i;
};
#pragma pack()


int main(int argc, char* argv[])
{
char c1;
short s;
char c2;
int i;

struct foo a;
struct bar b;
struct foo_pack p;

printf(
"stack c1 %p, s %p, c2 %p, i %p\n",
(unsigned
int)(void*)&c1 - (unsigned int)(void*)&i,
(unsigned
int)(void*)&s - (unsigned int)(void*)&i,
(unsigned
int)(void*)&c2 - (unsigned int)(void*)&i,
(unsigned
int)(void*)&i - (unsigned int)(void*)&i);

printf(
"struct foo c1 %p, s %p, c2 %p, i %p\n",
(unsigned
int)(void*)&a.c1 - (unsigned int)(void*)&a,
(unsigned
int)(void*)&a.s - (unsigned int)(void*)&a,
(unsigned
int)(void*)&a.c2 - (unsigned int)(void*)&a,
(unsigned
int)(void*)&a.i - (unsigned int)(void*)&a);

printf(
"struct bar c1 %p, c2 %p, s %p, i %p\n",
(unsigned
int)(void*)&b.c1 - (unsigned int)(void*)&b,
(unsigned
int)(void*)&b.c2 - (unsigned int)(void*)&b,
(unsigned
int)(void*)&b.s - (unsigned int)(void*)&b,
(unsigned
int)(void*)&b.i - (unsigned int)(void*)&b);

printf(
"struct foo_pack c1 %p, s %p, c2 %p, i %p\n",
(unsigned
int)(void*)&p.c1 - (unsigned int)(void*)&p,
(unsigned
int)(void*)&p.s - (unsigned int)(void*)&p,
(unsigned
int)(void*)&p.c2 - (unsigned int)(void*)&p,
(unsigned
int)(void*)&p.i - (unsigned int)(void*)&p);

printf(
"sizeof foo is %d\n", sizeof(foo));
printf(
"sizeof bar is %d\n", sizeof(bar));
printf(
"sizeof foo_pack is %d\n", sizeof(foo_pack));

return 0;
}

 

stack c1 0000000B, s 00000008, c2 00000007, i 00000000
struct foo c1 00000000, s 00000002, c2 00000004, i 00000008
struct bar c1 00000000, c2 00000001, s 00000002, i 00000004
struct foo_pack c1 00000000, s 00000001, c2 00000003, i 00000004
sizeof foo is 12
sizeof bar is 8
sizeof foo_pack is 8

posted @ 2010-12-07 17:50 ddatsh 阅读(1531) 评论(0) 编辑

2010年12月6日

c++ primer plus 笔记二

摘要: 第10章 对象和类1、OPP最重要的特性:抽象,封装和数据隐藏,多态,继承,可重用的代码2、类规范由两部分组成:①类声明:以数据成员的方式描述数据部分,以成员函数的方式描述公有接口; ②类方法定义:描述如何实现类成员函数。3、类和结构:类描述看上去很像是包含成员函数以及public和private可见性标签的结构声明。实际上。C++对结构进行了扩展,使之具有与类相同的特性。它们之间唯一的区别是,结构的默认访问类型是public,而类为private。C++程序员通常采用类来实现类描述,而把结构限制为只表示纯粹的数据对象或者私有部分的类。4、strncpy(s2,s1,n)将s1复制到s2或从s阅读全文

posted @ 2010-12-06 16:15 ddatsh 阅读(82) 评论(0) 编辑

c++ primer plus 笔记

摘要: 贵在坚持 给自己加加油C++新版中推荐#include<iostream.h>改成#include<iostream> using namespace std;cin.get();防止程序运行完毕自动退出,或如codeblocks这类IDE默认运行console_runner 工具已经具备此功能,无侵入\n endl 场合要注意头文件climits是ANSI C头文件limits.h的C++版本SIZEOF相关文章太多了有符号无符号也一样 比如有无数算法相关优化[代码]无cout.setf(ios_base::fixed,ios_base::floatfield);num1=3.33333mi阅读全文

posted @ 2010-12-06 14:52 ddatsh 阅读(106) 评论(0) 编辑

IE6的三大靠山分别是盗版,网银,无知的用户

摘要: RT阅读全文

posted @ 2010-12-06 09:39 ddatsh 阅读(40) 评论(0) 编辑

2010年12月3日

求0~num所有数中的1的总个数

摘要: [代码]阅读全文

posted @ 2010-12-03 17:08 ddatsh 阅读(25) 评论(0) 编辑