代码改变世界

随笔档案-2012年05月

paypal创始人----艾伦·马斯克

2012-05-30 12:43 by youxin, 6090 阅读, 收藏,
摘要: 艾伦·马斯克(Elon Musk),1971年6月28日生于南非。马斯克因是Space X的联合创始人,Tesla Motors 和 X.com(也就是后来成为网上支付系统的PayPal)而闻名。目前,马斯克是Space X的首席执行官和首席设计师,Tesla Motors的CEO和产品架构师以及SolarCity的主席;于此同时,他还是现代第一辆可行电动车-Tesla Roadster的联合设计者之一。 马斯克在自己10岁那年买了第一台计算机,并自学了编程。12岁时,以500美金出售了自己的第一个名为Blastar(一个太空小游戏)的商业软件。17岁(1988年)高中毕业后,没有父 阅读全文

转:汇编寄存器的使用

2012-05-30 12:21 by youxin, 605 阅读, 收藏,
摘要: 一、汇编语言中,为什么SI和DI不能同时使用汇编其实你可以想一下,这两个寄存器的意思,SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器。你要是把这两个寄存器同时使用,那你地址变化的基址都没有,你该怎么变化呢?你在谁的基础上变化(也就是地址偏移)?对于这些汇编中的规定,其实有时并不需要书上详细的介绍,我们都应该可以从中推导出这些规则,书上的那些介绍个人认为只是用来验证我们的推测的。或是对我们所掌握的知识的进行检测,用来说明我们所掌握的是对的!1:数据寄存器,一般称之为通用寄存器组 8086 有8个8位数据寄存器, 阅读全文

汇编语言之寄存器使用bx si di bp

2012-05-29 22:35 by youxin, 1159 阅读, 收藏,
摘要: 这里对这几个寄存器总结一下。通用寄存器的主要用途寄存器的分类寄存器主 要 用 途通用寄存器数据 寄存器AX乘、除运算,字的输入输出,中间结果的缓存AL字节的乘、除运算,字节的输入输出,十进制算术运算AH字节的乘、除运算,存放中断的功能号BX存储器指针CX串操作、循环控制的计数器CL移位操作的计数器DX字的乘、除运算,间接的输入输出变址寄存器SI存储器指针、串指令中的源操作数指针DI存储器指针、串指令中的目的操作数指针变址寄存器BP存储器指针、存取堆栈的指针SP堆栈的栈顶指针指令指针IP/EIP标志位寄存器Flag/EFlag32位CPU的段寄存器16位CPU的段寄存器ES附加段寄存器CS代码段 阅读全文

编写不会产生除法溢出的子程序

2012-05-29 22:20 by youxin, 327 阅读, 收藏,
摘要: divdw: 不溢出除法,被除数为dword,除数为word,结果为dword;参数:(dx):(ax)=被除数高、低16位(cx)=除数;返回:(dx):(ax)=结果的高、低16位(cx)=余数h,L表示被除数H的高16位和低16位,int(h/n)取商,rem(h/n)取余。n代表除数.采用公式:x/n=int(h/n)*65536+[rem(h/n)*65536+L]/n即:int(h/n)作高16位, rem(h/n)做被除数高16位,L做低16位,除以n 的结果做 低16位。最开始相当很复杂,答案很简单:assume cs:codecode segmentst... 阅读全文

汇编语言注释标记符

2012-05-29 21:40 by youxin, 5212 阅读, 收藏,
摘要: 最常用的单行注释符号;分号 多行注释:可以用 comment 语句来成块注释掉的: comment /* 1 2 content 3 .... */Masm 的语法是 comment 语句后的首个非空格字符起到下一个该字符止均为注释内容. 上面就是用 '/ ' 字符来作为注释分隔符的. 以 /* .... */ 的形式出现, 只是为了和 c 类似。可以用别的。 阅读全文

编写在显存中显示字符串的子程序

2012-05-29 20:58 by youxin, 433 阅读, 收藏,
摘要: 第十章 实验十 练习1; 子程序描述; 名称:show_str; 功能:指定位置,用指定颜色,显示一个用0结束的字符串; 参数:(dh) = 行号(0--24),(dl) = 列号(0--79);(cl) = 颜色,ds:si 指向字符串的首地址; 返回:无assume cs:code, ds:datadata segment db 'Welcome to masm', 0data endscode segmentstart: mov ax, data mov ds, ax mov dh, 8 mov dl, 3 mov cl, 2 mov si, 0 call show_st 阅读全文

masm mov指令不支持 内存到内存的转移

2012-05-29 20:46 by youxin, 762 阅读, 收藏,
摘要: mov byte ptr es:[bx+di],ds:[bx+si]编译报错,原因是mov指令规定。两个操作数不能都是存储器–------传送指令很灵活,但主存之间的直接传送却不允许• 8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现mov ax , buffer1;ax←buffer1(将buffer1内容送ax)mov buffer2 , ax;buffer2←ax;这里buffer1和buffer2是两个字变量、;实际表示直接寻址方式段寄存器的操作有一些限制 –----段寄存器属专用寄存器,对他们的操作能力有限• 不允许立即数传送给段寄. 阅读全文

转:cmd和command的区别

2012-05-28 18:08 by youxin, 1422 阅读, 收藏,
摘要: cmd:命令提示符(命令提示行),Cmd则是win2000或更高版的系统中新增的功能,表面看来是一样,但cmd比command功能要强大得多CMD 命令提示符可以当作是 Windows 的一个附件, Ping,Convert 这些不能在图形环境下使用的功能 要借助它来完成。command::DOS命令解释器(command 是精简dos. )。Command 调用的则是系统内置的 NTVDM,一个 DOS 虚拟机。它完全是一个类似 Virtual PC 的虚拟环境,和系统本身联系不大。cmd和command最明显的区别:cmd支持中文,而command只能支持8.3规则。注:8.3规则:8.3 阅读全文

汇编语言debug常用调试 命令详解

2012-05-28 13:33 by youxin, 4896 阅读, 收藏,
摘要: 显示修改寄存器命令RR;★显示所有寄存器和标志位状态;★显示当前CS:IP指向的指令。显示标志时使用的符号:标志 标志=1 标志=0OF OV NVDF DN UPIF EI DISF NG PLZF ZR NZAF AC NAPF PE POCF CY NC显示命令D① D [地址]② D [范围]如不指定范围,一次显示8行×16个字节。-D ;默认段寄存器为DS,当前偏移地址-D DS:100 / -D CS:200-D 200:100-D 200;200为偏移地址,默认段寄存器DS-D DS:100 110/ -D 100 L 10修改命令E① E 地址 ;从指定地址开始,修改 阅读全文

汇编程序运行的过程

2012-05-28 13:23 by youxin, 970 阅读, 收藏,
摘要: DOS中有一个程序command.com,这个程序在DOS中称为命令解释器,也就是DOS系统的shell. DOS启动时,先完成其他重要的初始化工作,然后运行command.com,command,com运行后,执行其他相关任务后,在屏幕上显示出由当前盘符和当前路径级成的提示符。用户可以输入所要执行的命令。这些命令由command执行,command执行完这些命令后,再次显示提示符,等用户的输入。 如果用户想执行一个程序时,则输入该程序的可执行文件的名称,command首先根据文件名找到可执行文件,然后将这个可执行文件中和程序加载入内存,设置CS:IP指向程序的入口。此后,command... 阅读全文

转:c/c++里的 堆区 栈区 静态区 文字常量区 程序代码区

2012-05-28 00:06 by youxin, 556 阅读, 收藏,
摘要: 任何一个运行中的程序,在内存中都被分为代码区和数据区2部分,而数据区又被分为静态存储区,栈区等等。一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 栈(stack):是自动分配变量,以及函数调用所使用的一些空间(所谓的局部变量),地址由高向低减少; 堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长(程序员释放)。2、堆区(heap) —一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式... 阅读全文

C/C++ 0xC0000005: 写入位置 0xcccccccc 时发生访问冲突

2012-05-27 23:57 by youxin, 3728 阅读, 收藏,
摘要: 看下面的一段代码。复制字符串#include<stdio.h>void str_cpy( char *s,char *t){ while((*s=*t)!='\0') { s++; t++; } *s='\0';}void main(){ char *a="I am a teachar."; char *b="you are a student."; str_cpy(a,b); printf("%s\n",a);}但是一运行就会报错,访问内存错误。为什么?因为:char *a="I 阅读全文

图的邻接矩阵表示及DFS

2012-05-27 23:22 by youxin, 816 阅读, 收藏,
摘要: 首先,图(下面指的是有向网)的表示如下:#ifndef GUARD_c7_1_h#define GUARD_c7_1_h #include<limits>#define INFINITY INT_MAX#define MAX_NAME 5 //顶点字符串的最大长度#define MAX_VERTEX_NUM 20 //最大顶点数//enum GraphKind{ DG,DN,AG,AN }; //有向图,有向网 无向图typedef char VertexType[MAX_NAME]; //不能写成typedef char* vertexType,会出现访问内存错误typedef 阅读全文

指向结构体的指针

2012-05-27 21:49 by youxin, 411 阅读, 收藏,
摘要: 在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。创建结构体指针是极常见的。下面是一个例子:typedef struct{ char name[21]; char city[21]; char state[3];} Rec;typedef Rec *RecPointer;RecPointer r;r=(RecPointer)malloc(sizeof(Rec));r是一个指向结构体的指针。请注意,因为r是一个指针,所以像其他指针一样占用4个字节的内存。而malloc语句会从堆上分配45字节的内存。*r是一个结构体,像任何其他Rec类型的结构体一样。下面的代码显示了这个指针变量的典 阅读全文

int main() 和int main(void)的区别

2012-05-22 20:01 by youxin, 9217 阅读, 收藏,
摘要: C89标准的main()函数是可接受的,尽管现在建议是使用C99的标准。C99标准只定义了如下两种可接受的函数原型:int main ( void )int main ( int argc, char *argv[] ) 以上函数原型微小的变形也是可以被接受的,比如int可以被typedef定义为int的名字所代替,argv的类型也可以写成char **argv,等等。第一种函数原型选择适用你不许要访问命令行参数的时候。对于第二种函数原型选择,如果你喜欢的话,标识符argc和argv的名字可以改变,但是坚持使用argc/argv是一个惯例。main()函数的返回值必须是一个int型,返回值给m 阅读全文

c++ new关键字 详解

2012-05-22 19:57 by youxin, 1741 阅读, 收藏,
摘要: 首先必须知道,new是operator,而不是函数。 但是有返回值,返回a pointer to the first element in the newly allocated storage space.我们都知道,使用 malloc/calloc 等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单地把这一招应用到 new 上,那可就不一定正确了。我经常看到类似这样的代码:int* p = new int[SIZE]; if ( p == 0 ) // 检查 p 是否空指针... 阅读全文

汇编操作显存

2012-05-21 22:50 by youxin, 3146 阅读, 收藏,
摘要: 80*25彩色字符模式显示缓冲区(以下简称显示缓冲区)的结构: 内存地址中,b8000h-bffffh共32kb空间,为80*25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容会立即出现在显示器上。 在80*25模式下,显示器可以显示25行,每行显示80个字符,每个字符有256中属性(背景色,前景色等)。这样,一个字符在显示缓冲区就要占2个字节,分别存字符的ascii码和属性。在80*25下,一屏的内容在显示缓冲区中共占4000个字节。显示缓冲区分为8页,每页4kb(约等于4000b),显示器可以显示任意一页的内容。一般情况下,显示第0页的内容,也就是说通常情况下,b8000.. 阅读全文

汇编 .COM 文件

2012-05-21 20:58 by youxin, 1676 阅读, 收藏,
摘要: COM 文件与一般的 EXE 文件在结构上有所不同,COM 文件是在早期没有分段的情况下设计的,具有结构简单,占用内存小,数据及代码都在同一段内等即以 64K 为单位的特点,较实用的汇编程序,如对驻留程序,中断服务程序等的设计,在可能的情况下,一般都采用这样的程序结构。 COM 文件在加载时将 CS, DS, ES, SS段都定义在 PSP 段基址上,IP 定义在 PSP+100H 处,SP 堆栈指针被定位在程序的末端,并在栈顶存放两个字节的00H。编制COM 文件应遵循下列规则:1. 只能建立一个代码段,内含代码和数据段,同时不能单独设置堆栈段。2. 代码和数据只能在 100H 以后设置.. 阅读全文

EMU8086 编译器使用简介

2012-05-21 20:42 by youxin, 1849 阅读, 收藏,
摘要: EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。如何运行1.在开始菜单选在它的图标,或者直接运行Emu8086.EXE2.在"FILE"菜单中选择"SAMPLE"3.点击"Compile and Emulate"按纽(或者按快捷键F5)4.点击"Single Step"按纽(或者按快捷键F8),可以查看代码如何运行. 阅读全文

dos窗口下debug设置屏幕大小

2012-05-21 13:13 by youxin, 941 阅读, 收藏,
摘要: debug 没有窗口滚动功能的. 可以适当地将其所在的 dos 窗口增加行数, 比如 50. 这个即可以修改相应 cmd 的快捷方式属性, 也可以在 debug 前 mode con lines=50windows 7 dos不支持全屏,windows xp支持。 阅读全文

回溯法解八后问题

2012-05-20 22:58 by youxin, 662 阅读, 收藏,
摘要: 在一个8×8国际象棋盘上,有8个皇后,每个皇后占一格;要求皇后间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。问共有多少种不同的方法。 我们用回溯法,现在的目的不是找有多少种解法,而是只要找出一种合适的解法输出即可。先写一个place函数,判断当前位置是否合法:bool place(int x[],int k){ int i; for(i=1;i0) { x[k]=x[k]+1; //在当前列加1的位置开始搜索,这句很重要 while(x[k]0)假设有4个皇后。仔细想想,假设当k=1此时a[k]=4; a[k]还... 阅读全文

回溯法简介

2012-05-20 15:53 by youxin, 1758 阅读, 收藏,
摘要: 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。回溯法的基本做法是搜索,或是一种组织得井井有条的、能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解:如果肯定不包含,则跳过对该. 阅读全文

c++ find_first_of

2012-05-20 15:33 by youxin, 1006 阅读, 收藏,
摘要: find_first_of 函数原型如下: ForwardIterator1 find_first_of ( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2 ); 它从第一个范围里面寻找任何一个是第二个范围里的一个元素,返回第一次匹配的迭代器。如果找不到,返回第一个范围的最后一个迭代器。从两个list中输出匹配的次数:#include<iostream>#include<lis... 阅读全文

masmplus增加调试工具

2012-05-20 14:46 by youxin, 701 阅读, 收藏,
摘要: 菜单---配置---系统配置---工具:在工具属性里填写工具路径 C:\windows\system32\debug.exe再自己指定图标和标题,运行参数,$(FileDir)\$(FileName).exe然后工具栏就有了debug,编译好exe之后直接debug... 阅读全文

汇编链接时 错误:unresolved external symbol _WinMainCRTStartup

2012-05-20 14:43 by youxin, 2242 阅读, 收藏,
摘要: 在masmPlus下,写好asm文件后,编译没问题,链接时报错:“LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup 2.exe : fatal error LNK1120: 1 unresolved externals” 解决办法:“配置”标签那里选择“系统配置”,再在编译/脚本那里勾上单独文件默认使用DOS模式(第二链接器)就可以了。 问题的原因是:把编译Windows程序的选项打开了,这是一个DOS程序,当然不会有“_WinMainCRTStartup”这种东西,这是Windows程序才用,就在外部引用. 阅读全文

java 解析 xml 文档

2012-05-18 13:33 by youxin, 360 阅读, 收藏,
摘要: 为读取和分析xml文档的内容,需要一个xml解析器。解析器是读取文档,检查其语法是否正确并在它除了文档时完成某些工作的程序。有两种xml解析器是经常使用的。一种遵循称为SAX (xml简单api)规范,另一种遵循称为dom 规范。sax解析器是事件驱动的。只要解析器遇到某种结构(例如,开始标签<price> ),它就会调用必须提供的一个方法。相反,dom解析器则构建表示被解析文档的树。一旦解析器建树完毕,就可以分析此树。对需要大量内存来处理树结构的大型xml来说,sax解析器的效率更高。但是,对大多数应用程序来说,dom解析器更容易使用--解析树给出了数据的完成概况,而sax解析器 阅读全文

转:C++中定义类的对象:用new和不用new有何区别?

2012-05-17 20:18 by youxin, 471 阅读, 收藏,
摘要: 举个简单的例子:class Point { private: int x; int y; public: void Set(int a,int b) { x=a; y=b; } void Print() { cout<<"("<<x<<","<<y<<")"<<endl; }}; void main(){ Point p1; Point *p2=new Point(); p1.Set(1,2); p2->Set(4,5); p1.Print(); p2-&g 阅读全文

C++ static 关键字详解

2012-05-17 19:50 by youxin, 2234 阅读, 收藏,
摘要: 全局变量和局部变量在内存里的区别?一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结... 阅读全文

c++ const 成员函数和mutable

2012-05-16 14:13 by youxin, 1454 阅读, 收藏,
摘要: 常量(const)成员函数:承诺不会修改对象的状态double Student_info::grade() const {...} // 成员函数版double grade(const Student_info&) {...} // 旧版 对常量对象只能调用常量成员函数,而不能调用非常量成员函数。... 阅读全文

c++动态创建和销毁二维数组

2012-05-15 23:53 by youxin, 1453 阅读, 收藏,
摘要: 如果二维数组中的高维确定,则可以TYPE (*p)[N] = new TYPE [][N]; 用这种方法。最常用的方法: 使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组 int **b=new int*[row];//分配一个指针数组,将其首地址保存在b中 for(i=0;iusing namespace std;void func(int m,int n){ int x; int **p=new int*[m]; for(int i=0;i>x; p[i][j]=rand();... 阅读全文

c++ new和delete

2012-05-15 23:29 by youxin, 331 阅读, 收藏,
摘要: new和delete运算符用于动态分配和撤销内存的运算符new用法:1.开辟单变量地址空间1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a.2)int *a = new int(5) 作用同上,但是同时将整数赋值为52.开辟数组空间一维: int *a = new int[100];开辟一个大小为100的整型数组空间二维: int **a = new int[5][6]三维及其以上:依此类推.一般用法:new 类型 [初值]delete用法:1. int *a = new int;d 阅读全文

C++ iterator const_iterator 与 const iterator

2012-05-15 23:17 by youxin, 542 阅读, 收藏,
摘要: 所有的标准库容器都定义了相应的迭代器类型。迭代器对所有的容器都适用,现代 C++ 程序更倾向于使用迭代器而不是下标操作访问容器元素。1.iterator,const_iterator作用:遍历容器内的元素,并访问这些元素的值。iterator可以改元素值,但const_iterator不可改。跟C的指针有点像 (容器均可以++iter,而vector还可以iter-n, iter+n,n为一整型,iter1-iter2:结果是difference_type类型,表两元素的距离.)2.const_iterator 对象可以用于const vector 或非 const vector,它自身的值可 阅读全文

字符串分割成单词

2012-05-15 22:11 by youxin, 1189 阅读, 收藏,
摘要: 输出一行字符串,根据空白符来分隔单词。先看如何输出一行(带空白) int main(){ string s; //read and split each line of input while(getline(cin,s)) { vector v=split(s); for(vector split(const string& s){ vector ret; typedef string::size_type string_size; string_size i = 0; // invariant: we ha... 阅读全文

C++对象的拷贝与赋值操作

2012-05-15 21:35 by youxin, 913 阅读, 收藏,
摘要: 转:我的一个同事在用C++编写一个类时,知道什么时候需要实现拷贝构造函数和赋值操作,但不知道什么时候拷贝构造函数被调用,什么时候赋值操作被调用,甚至把二者混为一谈。要弄明白这个问题,最简单的做法莫过于写个测试程序试一下。不过那样做也未必是好办法,实验的结果往往导致以偏概全的结论。不如好好想一下,弄清楚其中的原理,再去写程序去验证也不迟。拷贝构造函数,顾名思义,等于拷贝 + 构造。它肩负着创建新对象的任务,同时还要负责把另外一个对象拷贝过来。比如下面的情况就调用拷贝构造函数:cstringstr=strother;赋值操作则只含有拷贝的意思,也就是说对象必须已经存在。比如下面的情况会调用赋值操作 阅读全文

c++ 字符串直接量

2012-05-15 17:05 by youxin, 875 阅读, 收藏,
摘要: 一个字符串直接量实际上是一个const char 的数组。它包含的元素个数比字面上的字符数多1.这个额外的字符是'\0';const char hello[]="hello";//编译器自动加上去等价于:const char hello[]={ 'h','e','l','l','o','\0' };初始化字符指针数组。假定我们要把数字表示的成绩转换为字母表示的成绩,根据下面的规则:如果成绩不低于 9 0 80 70 60 0 对应字母成绩: A B C D E下面 阅读全文

java 多线程二 线程池

2012-05-15 15:09 by youxin, 231 阅读, 收藏,
摘要: 看下面的一段程序,通过并行运行2个线程。 import java.util.Date; public class GreetingRunnable implements Runnable { int pauseTime; String name; public GreetingRunnable(in 阅读全文

java 多线程一

2012-05-15 13:28 by youxin, 239 阅读, 收藏,
摘要: Java 编程语言使多线程如此简单有效,以致于某些程序员说它实际上是自然的。。要记住的一件重要的事情是 main() 函数也是一个线程,并可用来做有用的工作。程序员只有在需要多个线程时才需要创建新的线程。Thread 类Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员必须覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是必须调用 Thread 的 start() 函数,该函数再调用 run()。下面的代码说明了它的用法:创建两个新线程import java.uti.. 阅读全文

java类型转换总结

2012-05-15 12:43 by youxin, 567 阅读, 收藏,
摘要: 1.原型数据byte,short,int,long,float,double,char,boolean,先看一下基本类型介绍:基本型别大小最小值最大值boolean----------------char16-bitUnicode 0Unicode 2^16-1byte8-bit-128+127short16-bit-2^15+2^15-1int32-bit-2^31+2^31-1long64-bit-2^63+2^63-1float32-bitIEEE754IEEE754double64-bitIEEE754IEEE754void 小类型数据可以直接赋给大类型数据例如int a=1;by.. 阅读全文

java 类和接口之间的转换

2012-05-15 12:35 by youxin, 2548 阅读, 收藏,
摘要: 倘若类实现了接口,就可以将类的类型转换为接口类型。不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例 public class B implements A{} A a = new B(); //引用变量a被定义为A接口类型,引用了B实例 A a = new A(); //错误,接口不允许实例化 阅读全文

C++ main 参数使用

2012-05-13 23:39 by youxin, 1260 阅读, 收藏,
摘要: C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)int main(int argc, char* argv[])int main(int argc, char argv[ ][ ])这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。下面的程序:#include<stdio.h>int main(int argc,char **argv){ int i; for(int i=0;i<argc;i++) printf("Argument %d 阅读全文

java 自动装箱与拆箱 (基本类型与包装类型)

2012-05-13 13:50 by youxin, 1039 阅读, 收藏,
摘要: 基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 10 阅读全文

java 绘图简介

2012-05-13 02:04 by youxin, 1352 阅读, 收藏,
摘要: 要想在JFrame中绘图,必须构造一个组件对象并把它加到框架中,swing中JComponent类表示空组件。public abstract class JComponent extends Container 该类是除顶层容器外所有 Swing 组件的基类。要使用继承自JComponent的组件,必须将该组件置于一个根为顶层 Swing 容器的包含层次结构(containment hierarchy)中。顶层 Swing 容器(如JFrame、JDialog和JApplet)是专门的组件,它们为其他 Swing 组件提供了绘制其自身的场所。有关包含层次结构的解释,请参阅《The Java T 阅读全文

java 注释

2012-05-12 20:33 by youxin, 863 阅读, 收藏,
摘要: 对于Java注释我们主要了解三种:1, // 注释一行2, /* ...... */ 注释若干行 (选中代码,注释ctrl+shift+/",取消ctrl+shift+\)3, /**……*/文档注释 写入javadoc 文档注释文档将用来生成HTML格式的代码报告,所以注释文档必须书写在类、域、构造函数、方法、定义之前。注释文档由两部分组成——描述、块标记。例如:/** * The doGet method of the servlet. * This method is called when a form has its tag value method equals to g 阅读全文

java final 关键字

2012-05-12 20:00 by youxin, 307 阅读, 收藏,
摘要: 一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法。注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。1、final类 final类不能被继承,因此final类的成员方法没有机会被覆盖 阅读全文

java static 关键字

2012-05-12 19:35 by youxin, 461 阅读, 收藏,
摘要: static 修饰 字段 或方法,称为静态字段或静态方法。静态方法不通过对象调用。静态字段属于类,不属于类中的任何对象。 main 方法为什么是静态的。程序开始时,没有任何对象,因此,程序的第一种方法必须是静态方法。 有时,需要在某个对象以外存储值,可以用静态字段实现该目的。下面是一个典型例子。BankAccount中,每个对象都有余额和账号,这里想给账号顺序赋值,即让第一账户为1,第二个为2,以此类推,因此,必须在某个地方存储最后分配的账号。public class BankAccount { private double balance; private int account... 阅读全文

java 一个Icon接口实现的程序

2012-05-11 15:34 by youxin, 2062 阅读, 收藏,
摘要: Icon是一个Interface,里面包含3种空的抽象文法,分别是getIconHeight()、getIconWidth()与paintIcon();若你想使用Icon类 来制作Icon,你必须实现(implements)这3个方法,我们直接来看下面这个例子,你就能清楚如何实现Icon界面建立Icon组件了。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class IconDemo implements Icon { private int height=50; private in... 阅读全文

JFrame 刷新问题

2012-05-11 13:32 by youxin, 6768 阅读, 收藏,
摘要: 先看下面的一段代码:import java.awt.Container;import java.net.URL;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class Icon extends JFrame { private ImageIcon icon; private JLabel label1; private JPanel panel; public Icon() { ... 阅读全文

Java Web Start 简介

2012-05-11 00:03 by youxin, 2121 阅读, 收藏,
摘要: 什么是 Java Web Start 软件?Java Web Start 软件使您可以从 Web 下载和运行 Java 应用程序。Java Web Start 软件:提供一种单击一次即可激活应用程序的便捷方法保证您始终运行最新版本的应用程序避免了复杂的安装或升级过程获得 Java Web Start 软件从 Java 5.0 发布版本开始,Java Runtime Environment (JRE) 中就包含 Java Web Start。这意味着安装 Java 时,将自动安装 Java Web Start。第一次下载采用 Java Web Start 技术的 Java 应用程序时,Java 阅读全文

java中Icon ,imageIcon ,image 区别

2012-05-10 18:02 by youxin, 7764 阅读, 收藏,
摘要: public interface IconA small fixed size picture, typically used to decorate components.intgetIconHeight()Returns the icon's height.intgetIconWidth()Returns the icon's width.voidpaintIcon(Componentc,Graphicsg, intx, inty)Draw the icon at the specified location.javax.swing.ImageIcon An impleme 阅读全文

分治法解选择问题

2012-05-06 23:25 by youxin, 765 阅读, 收藏,
摘要: 选择问题: 求n个元素中的第k小的元素。算法如下:#include<stdio.h>void swap(int &x,int &y){ int t; t=x;x=y;y=t;}//在a[ left: right]中选择第k小的元素int select(int a[],int left,int right,int k) { int i,j,pivot; if(left>=right) return a[left]; pivot=a[left]; i=left+1; j=right; while(1) { while(a[i]<... 阅读全文

分治法求最大最小元素

2012-05-06 23:11 by youxin, 1860 阅读, 收藏,
摘要: 问题:在含n个元素的集合中寻找最大值和最小值。最常见的做法是:max=a[1];min=a[1];for(i=2;i<=n;i++) if(max<a[i]) max=a[i]; else if(min>a[i]) min=a[i];算法中需要比较N-1次,才能得到max,最好的情况是升序,不需要进行与min的比较, 共进行n-1次比较。最坏的情况是降序,要经过n-1次比较得到Min,共进行2*n-2次比较,至于在平均情况下,为3(n-1)/2;用分治法可以用较少的次数解决上述问题。1,将数据等分为2组,目的是分别选取其中的最大值和最小值2,递归分解直到每组元素的个... 阅读全文

筛法求素数

2012-05-06 21:25 by youxin, 766 阅读, 收藏,
摘要: 看通常做法:首先假设要检查的数是N好了,则事实上只要检查至N的开根号就可以了,道理很简单,假设A*B = N,如果A大于N的开根号,则事实上在小于A之前的检查就可以先检查到B这个数可以整除N。不过在程式中使用开根号会精确度的问题,所以可以使用i*i #includebool * prime(int n){ bool *p=new bool[n]; memset(p,n,sizeof(bool)*n);//可以不要p[0]=p[1]=false; for(int i=2;i#include#define mr 10bool notp[mr];//素数判定int pr[10... 阅读全文

欧拉函数

2012-05-06 00:54 by youxin, 1314 阅读, 收藏,
摘要: 在数论中,对正整数n,欧拉函数是小于n且与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。1、递推求解 欧拉函数可以很方便的计算小于某个数N但N互质的数的个数, 即M(1<=M<N)且gcd(M, N)=1, M的个数很容易由欧拉函数来计算出来. 欧拉函数的表达式为N*(1-1/f_1)*(1-1/f_2)*(1-1/f_3)....依次类推, 其中f_1, f_2, f_3等 阅读全文

java Jbutton常用操作

2012-05-05 23:54 by youxin, 15156 阅读, 收藏,
摘要: 首先看下设置大小。 一般用setBounds函数,setSize只能设置大小,setBounds可以设置位置。当容器的布局管理器为null时setSize和setBounds才能起作用,JPanel p = new JPanel();JFrame f = new JFrame();JButton b = new JButton();f.add(p);p.add(b);//b.setBounds(2,2,33,33);//设置Button的位置、大小f.setBounds(0,0,600,600); //设置Frame的位置、大小如果不设置Button的位置、大小,程序只显示了一点点大的按... 阅读全文

Eclipse同时显示两个编辑窗口

2012-05-05 15:07 by youxin, 2124 阅读, 收藏,
摘要: 同时打开两个编辑窗口,点住一个窗口,拖到编辑窗口的最下面时,会出现上下两个编辑窗口的轮廓,松开即可! 如果尽量往右拖,会显示左右2个显示窗口。 阅读全文

eclipse导入一个完整的项目

2012-05-04 17:06 by youxin, 845 阅读, 收藏,
摘要: Eclipse中的菜单File→Import→Existing Projects intoWorkspace中选择Project;再选root directory,选择你要导入的项目,就可以了。 或者整个文件夹直接粘贴到Windows工作区的文件夹下,然后新建工程取和你的工程一样的名字OK,就导进来了 阅读全文

c++流迭代器

2012-05-03 23:25 by youxin, 1068 阅读, 收藏,
摘要: iostream迭代器(iostream iterator):与输入或输出流绑定在一起,用于迭代遍历所关联的IO流。虽然iostream类型不是容器,但标准库同样提供了在iostream对象上使用的迭代器:istream_iterator用于读取输入流,而ostream_iterator则用于写输出流。这些迭代器将它们所对应的流视为特定类型的元素序列。使用流迭代器时,可以用泛型算法从流对象中读数据(或将数据写到流对象中)。iostream迭代器的构造函数istream_iterator<T> in(strm);创建从输入流strm中读取T类型对象的istream_iterator对 阅读全文

使用Vmware安装Linux Redhat 9.0

2012-05-02 20:57 by youxin, 683 阅读, 收藏,
摘要: VMware是提供一套虚拟机解决方案的软件公司,我们通常用的是其中的VMware Workstation,是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行 不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。VMware Workstation 可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。对于企业的 IT 开发人员和系统管理员而言, VMware 在虚拟网路,实时快照,拖曳共享文件夹,支持 PXE 等方面的特点使它成为必不可少的工具。 不过由于正式版的有四五百M,下了个精简版的. 阅读全文

C++函数模板

2012-05-01 15:20 by youxin, 405 阅读, 收藏,
摘要: 泛型编程是一种思想,模板是实现这种思想的基础,STL则是使用模版技术体现泛型思想的结果。 对不同类型数据施以相同操作的一族函数,为重用代码,我们可以把不同的数据类型抽象为类型参数,从而把这多个函数用统一的函数模板(function template)表示出来。从另一个角度说,函数模板也是生成具体函数的模型和样板。函数模板的定义 template <模板参数表> 类型名 函数名(数据形参表) { 函数体 } <模板参数表> 尖括号中不能为空,参数可以有多个,用逗号分开。模板参数主要是模板类型参数。 模板类型参数代表一种类型,由关键字 class 或 typename(建议 阅读全文