slan的学习笔记

天马行空的想,脚踏实地的做!

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  27 随笔 :: 0 文章 :: 52 评论 :: 2 引用

2006年11月8日 #

昏迷,
偶今天发现偶的博客看贴的人挺多.
可是就是没有一个回贴的.
这样可不厚道啊.
没有一个评论咋行?
希望大家多提意见.偶也好改进!
posted @ 2006-11-08 23:19 易来 阅读(152) 评论(5) 编辑

哈哈.终于在历时半天的时间中完成了博客大搬家.
此次搬家害我逃了半节上机课,错过下午午休时间.
不管怎样,搬家成功!
posted @ 2006-11-08 14:31 易来 阅读(44) 评论(0) 编辑

这学期暑假正式进入JAVA系列学习

先学JAVA语言基础,然后(选下列一类学习):

* GUI 类:JavaBean -> Swing -> JavaHelp -> Java2D -> Image IO -> JAI -> Java 3D ...
* Enterprise 类:JDBC -> JDO -> Servlet -> JSP -> EJB -> JMS -> JTA/JTS...
* J2ME 类


嘿嘿,这分明就是<爪蛙夜未眠>里面某人列的系列!

posted @ 2006-11-08 14:27 易来 阅读(353) 评论(0) 编辑

学习内容  课程名称 学时
1  计算机软件及网络基础  CNB    
2  结构化查询语言SQL,数据库体系结构及管理  SDM
3  ODBC、JDBC介绍和实例分析 OJDBC 
4  Java基本语法,JAVA语言概述,面向对象编程 JBO
5  程序逻辑及Java语言实现  LGJ
6  基于Java的程序设计方法  JDM
7  输入/输出处理、多线程与网络通信 CPD
8  基于Java开发项目的阶段实习 JPR
9  Java语法归纳讲解 JAVAC
10  HTML及JavaScript 介绍 HTJS
11  JSP编程语言的语法 JSP
12  Servlet编程语言语法 Servlet
13  JAVABEAN编程语言语法 JAVABEAN
14  MVC设计模式 MVC
 
15 基于JAVA、JSP、SERVLET 、JAVABEAN、JDBC的应用实习  PRJ 
16 软件编程规范,软件集成开发环境简介,面向对象的分析与设计方法 SJO

□ 第二阶段

   学习内容  课程名称 学时
1  Linux系统原理及常用命令 LIS   
2  Linux开发环境 LIP
3  关系数据库设计基本原理(ERD模型)  ERD
4  DB2的数据库对象、实例、表空间、用户管理、性能优化 DB2
5  ORACLE数据库安装、配置;结构化查询语言SQL ORACLE
6  PowerDesigner设计工具设计数据库系统 JSOLU
7  基于数据库软件开发项目的阶段实习 PRJ 

3.J2EE方向
   学习内容  课程名称  
1 EJB语法归纳讲解 EJB
2 Struts讲解 Str
3 XML语言的语法 XML
4 Web Services WS
5 Spring框架使用 Sp
6 工厂模式系统讲解 IOC
7 DAO模式
8 Hibernate语法与核心技术 HIB
9 IBM Websphere中间件的管理 WAS
10 Jbuilder开发工具 Jb
11 基于IBM Websphere的WSAD开发 WSAD
12 职业素质培养与沟通技巧 概述、商业礼仪、素质教育、沟通技巧,团队协作,思考方法、演讲与报告,就业指导。 CPD
   项目实战:科技部企业竞争情报检索系统(J2EE方向)     
13 软件工程: 需求分析、概要设计、详细设计、编码、测试、全面涉足的软件项目开发。代码审查、配置管理、项目管理、文档编写、质量保证体系等内容和相应工具的实际应用。 OOAD 
14 情报检索系统:
   该系统在IBM专家的指导下采用J2EE架构、面向对象设计方法,基于Linux操作系统、DB2数据库,用JSP、Servlet、JavaBean、XML技术,学员分组独立完成.ERD

posted @ 2006-11-08 14:25 易来 阅读(631) 评论(1) 编辑

可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,
基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,
而不是基类中定义的成员函数(只要派生类改写了该成员函数)。
若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都
会调用基类中定义的那个函数。

程序1:

#i nclude <iostream>
using namecpace std;
class B0 //基类B0声明
{ public:
 void display(){cout<<"B0::display()"<<endl;} //公有成员函数
};
class B1: public B0 
{
 public:
 void display(){cout<<"B1::display()"<<endl;} 
};
class D1: public B1 
{
public:
 void display(){cout<<"D1::display()"<<endl;} 
};
void fun(B0 *ptr) 
{ ptr->display(); //"对象指针->成员名"  }
void main() //主函数
{ B0 b0; //声明B0类对象
 B1 b1; //声明B1类对象
 D1 d1; //声明D1类对象
 B0 *p; //声明B0类指针
 p=&b0; //B0类指针指向B0类对象
 fun(p);
 p=&b1; //B0类指针指向B1类对象
 fun(p);
 p=&d1; //B0类指针指向D1类对象
 fun(p);
}
运行结果:
B0::display()
B0::display()
B0::display()

程序2:
#i nclude <iostream>
using namespace std;
class B0 //基类B0声明
{public: //外部接口
 virtual void display() //虚成员函数
     {cout<<"B0::display()"<<endl;}
};
class B1: public B0 //公有派生
{ public:
       void display()  {  cout<<"B1::display()"<<endl;  }
};
class D1: public B1 //公有派生
{ public:
   void display() {  cout<<"D1::display()"<<endl;  }
};
void fun(B0 *ptr) //普通函数
{    ptr->display();    }
void main() //主函数
{ B0 b0,  *p; //声明基类对象和指针
 B1 b1; //声明派生类对象
 D1 d1; //声明派生类对象
 p=&b0;
 fun(p); //调用基类B0函数成员
 p=&b1;
 fun(p); //调用派生类B1函数成员
 p=&d1;
 fun(p); //调用派生类D1函数成员
}
运行结果:
B0::display()
B1::display()
D1::display()

虚函数是动态绑定的基础。
是非静态的成员函数。
在类的声明中,在函数原型之前写virtual。
virtual 只用来说明类声明中的原型,不能用在函数实现时。
具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。
本质:不是重载声明而是覆盖。
调用方式:通过基类指针或引用,执行时会 根据指针指向的对象的类,决定调用哪个函数。

posted @ 2006-11-08 14:25 易来 阅读(2569) 评论(1) 编辑

一个很简单的程序,请大家解释下结果的原因:

#i nclude<iostream>
using namespace std;
void main()
{
  int a=5;
  cout<<a<<a--<<a;
}

大家觉得结果是多少呢?为什么?

posted @ 2006-11-08 14:24 易来 阅读(237) 评论(12) 编辑

所有中国黑客和红客,我的同胞们:
  首先声明,我的计算机软件技术、黑客功底,可能不会比你们任何人差:

  我通读过 minix,tcp/ip,bsd,linux, pl1的源码,我拿过中国高级程序员证书,sun 的java证书,精通vc和unix,对缓冲区溢出,病毒,ddk等均有研究,所以我想我有资格对你们说几句话。

  (如果我提到的一些计算机名词和人名,你们居然不知道,那只能证明你们的无知,和不配称为黑客。)

  如果是真正的黑客,他会知道

  1.发明tcp/ip的是美国人 。

  2. linux的作者,linus大侠现在也在美国工作 。

  3. open source的开创人 stallman 也是美国人,他提倡软件不分国界的自由的精神 。

  4. free bsd 的作者是美国人,他的source 让真正的黑客受惠

  5.世界级软件科学大师 tanabaom,也是美国的客座教授,他的minix, ameba和教材教育了全世界几代黑客。

  提到这些,不是崇美,不是恐美,只想证明:

  1.很多大师级的美国黑客,他们的理念恰恰是自由、开放、无国界;他们的自由软件,开放源码,是与政治无关的,是超越国界的,给全世界人们带来福音。

  2.真正的黑客精神,如stallman所说,是要让人类超越计算机,成为计算机的主宰,从而成为自由的。

  所有的中国黑客和红客,我的同胞们:

  当你们正通过下载美国人写的黑客工具,来攻击美国网络,并且乐此不疲,以为这就是爱国行动的时候,是否想过:

  此时此刻,印度的软件人士,正在努力提高软件技术,他们的软件水平、软件产业已经超越了中国;难道我们不应该痛苦地承认这个现实,并且奋起直追吗?

  中国发明了火药,但是缺少研究精神,结果是被西方人研究改进了以后打中国,这样的教训还少吗?

  中国向来不缺爱国热情,但是我们缺少对科技的认真研究精神,知耻而后勇的追赶精神。难道我们不愿意承认这一点吗?

  从战术上来说,过早暴露自己的实力是不聪明的;冒昧地问一句,如果真的战争爆发了,您的黑客技术完全掌握好了吗,您已经为那一天的到来在进行技术储备吗?

  您有没有想向那些真正为中国科技做出杰出贡献的科学家如钱学森学习呢?

  所有的中国黑客和红客,我的同胞们:

  请把你们的聪明才智用到真正提高你们的水平,对国家的强大有帮助的地方吧:

  如果您愿意对国家有所贡献:

  1.中国的863计划中有一个重点研究项目: 并行计算,分布计算,向量计算。您愿意研究它吗?

  2. 作为现代通讯技术的一个根本数学基础,大合数的快速因子分解,还是一个难题。您愿意研究它吗?

  如果您想提高技术,对中国的软件技术有所贡献:

  1.研究 vc,java

  2.研究数据结构,去考高级程序员

  3. 研究操作系统,读minix source code

  4. 研究tcp/ip, rfc文档

  5. 通读linux, 才算达到黑客境界

  6. 学习 uml,rose,软件工程,达到系统分析员水平。

  如果您对提高中国的科技有兴趣,去研究生物基因,材料技术(纳米技术),计算机技术,航天技术……

  我的同胞们,我愿大声呐喊:

  一个真正的民族主义者,不是义和团,不是太平天国,不是闭关锁国,不是盲目仇外,不是不敢正视自己民族和文化的丑陋和缺点。

  真正的民族主义者是成熟的、清醒的、理智的、务实的民族主义。真正的民族主义者不是种族主义者,不是极端份子,不是战争狂人。

  真正的民族主义者以追求本民族——中华民族的利益最大化为目标、准则、信念。判断一个人是不是真正的民族主义者,判断标准很简单:看他是给本民族的整体利益带来好处,还是损害民族利益。真正的民族主义者最务实,因为他知道坚持原则,同时又懂得策略。让我们成为真正的顶尖黑客!让我们成为真正的民族主义者!

posted @ 2006-11-08 14:23 易来 阅读(238) 评论(2) 编辑

一.输出文件流成员函数

1.输出流的open函数
    要使用一个输出文件流(ofstream),必须在构造函数或open函数中把该流与一个特定的磁盘文件关联起来。在各种情况下,描述文件的参量是相同的。
当你打开一个与输出流关联.的文件时,通常指定一个open_mode标志,如下表所示。可以用按位OR(|)运算符组合这些标志,它们作为枚举器定义在ios类中。
表  输出文件流文件打开模式
标  志 功         能
ios::app 打开一个输出文件用于在文件尾添加数据
ios::ate 打开一个现存文件(用于输入或输出)并查找到结尾
ios::in 打开一个输入文件对于一个ofstream文件,使用ios::in作为一个openmode可避免删除一个现存文件中现有的内容 ios::out    打开二个文件,用于输出。对于所有ofstream对象,此模式是隐含指定的 ios::nocreate    如果一个文件存在则打开它,否则该操作失败 i。
s::noreplace 如果一个文件不存在则作为新文件打开它,如果文件已存在,则该操作失败
ios::trunc 打开一个文件,如果它已经存在则删除其中原有的内容如果指定了ios::out,但没有指定iOs::ate、iOs::app和ios::in,则隐含为此模式
ios::binary 以二进制模式打开一个文件(缺省是文本模式)
有三个公共输出流涉及模式选项:
•建立一个文件,如果该文件己存在,则删除旧的版本:
ostream ofile("FILENAME");//缺省模式是ios::out
ofstream ofile("FILENAME",ios::out);//与上一句等效
•添加记录到一个现存文件中,如果文件不存在便建立一个新文件:
ofstream ofile(“FiILENAME”,ios::app);
•使用同一个流先后打开不同的文件(在同一时刻只有一个是打开的):
ofstream ofile();
ofile.open("FTILE1",ios::in)    //打开文件FILEl
…//    向文件FILEl
输出 ofile.close();    //关闭FILEl
ofile.open("FILE2",ios::in);    //打开文件FILE2
…//    向文件FILE2输出
ofile.close();    //关闭FILE2
//当对象ofile离开它的作用域时便消亡
2.put函数  
put函数把一个字符写到输出流中,下面两个语句缺省是相同的,但第二个受该流的格式化参量的影响:
cout.put(‘A’);    //精确地输出一个字符
cout<<"A";    //输出一个字符,但此前设置的宽度和填充方式在此起作用
3.write函数
write函数把一个内存中的一块内容写到一个输出文件流中,长度参数指出写的字节数。下面的例子建立一个输出文件流并将Date结构的二进制值写入文件:
例   向文件输出
#i nclude<fstream.h>
struct Date    
{
    int mo,da,yr;
};    
void main()
{    
    Date dt={6,10,92};
    ofstream tfile("date.dat",ios::binary);
    tfile.write((char*)&dt,sizeof dt);
}
write函数当遇到空字符时并不停止,因此能够写入完整的类结构,该函数带两个参量,一个char指针(指向内存数据的起始地址)和一个所写的字节数。注意在该结构对象的地址之前需要char*做强制类型转换。
4.seekp和tellp函数    
一个输出文件流保存一个内部指针指出下一次写数据的位置。seekp成员函数设置这个指针,因此可以以随机方式向磁盘文件输出。tellp成员函数返回该文件位置指针值。
5.输出流的close函数  
close成员函数关闭与一个输出文件流关联的磁盘文件。文件使用完毕后必须将其关闭以完成所有磁盘输出。虽然ofstream析构函数(destructor)会自动完成关闭,但如果需要在同一流对象上打开另外的文件,就需要使用close函数。    
如果构造函数或open成员函数打开了该文件,输出流析构函数自动关闭一个流的文件。
6.错误处理函数
错误处理成员函数的作用是在写到一个流时进行错误处理。各函数及其功能如下表所示。    
错误处理成员函数及其功能
函  数 功能及返回值
bad 如果出现一个不可恢复的错误,则返回一个非0值
fail 如果出现一个不可恢复的错误或一个预期的条件,例如一个转换错误或文件未找到,用返回一个非0值。在用零参量调用clear之后可能经常恢复处理
good 如果没有错误条件(不可恢复的或其他)和没有设置文件结尾标志,则返回一个非0值
eof 遇到文件结尾条件,则返回一个非0值
clear 设置内部错误状态,如果用缺省参量调用,则清除所有错误位
rdstate 返回当前错误状态
                          
! 运算符经过了重载,它与fail函数执行相同的功能,因此表达式if(! cout)等价于 if (cout.fail())。
void*()运算符也是经过重载的,与!运算符相反,因此表达式if(cout)等价于if(! cout.fail())。
void*()运算符不等价于good,因为它不检测文件结尾。
(四)二进制输出文件
最初设计流的目的是用于文本,因此缺省的输出模式是文本方式。在以文本模式输出时,若遇到换行符(十进制10),便自动被扩充为回车换行符(十进制13)。这种自动扩充有时可能出问题,请看下列程序:
#i nclude<fstream.h>
int iarray[2]={99,10};
void main()
{
    ofstream os("test.dat");
    os.write((char  *)iarray,sizeof(iarray));
}  
  
当执行程序,向文件中输出时,10会被自动转换成13,然而这里的转换显然不是我们需要的。要想解决这一问题,就要采用二进制模式输出。使用二进制模式输出时,其中所写的字符是不转换的。使用二进制模式输出到文件有下列几种方法,
(1)以通常方式构造一个流,然后使用setmode成员函数,在文件打开后改变模式,例如:
    ofstream ofs("test.dat");
    ofs.setmode(filebuf::binary);
ofs.write((char*)iarray,4);    //向二进制文件中写入4字节数据
(2)使用ofstream构造函数中的模式参量指定二进制输出模式,例如:
#i nclude<fstream.h>
#i nclude<fcntl.h>
#i nclude<io.h>
int iarray[2]={99,10};
void main()
{
ofstream ofs("test.dat",ios::binary);
ofs.write((char*)iarray,4);    //向二进制文件中写入4字节数据
}
(3)使用二进制操作符代替setmode成员函数:
ofs<<binary;
若使用text操作符便把流切换到文本转换模式。
(4)使用open函数带一个二进制模式标志打开文件,例如:
filedesc fd=open("test.dat",OBINARY|OCREAT|OWRONLY);
ofstream ofs(fd);
ofs.write((char*)iarray,4);    //向二进制文件中写入4字节数据

二.输入流成员函数

输人流成员函数用于从磁盘文件中输入,这些成员函数包括:
    •open函数    
    •get函数    
    •getline函数
    •read函数    
    •seekg和tellg函数
    •close函数    
1.输入流的open函数
如果要使用一个输入文件流(ifstream),必须在构造函数中或者使用open函数把该流与一个特定磁盘文件关联起来。无论哪种方式,参量是相同的。
当打开与一个输入流关联的文件时,通常要指定一个模式标志。模式标志如下表所示,该标志可以用按位OR(|)运算符进行组合。
表  输入文件流文件打开模式
ios::in    打开文件用于输入(缺省)
ios::nocreate   如果文件不存在,该函数失败
ios::binary 以二进制模式(缺省模式是文本模式)打开文件
注意:如果需要测试文件是否存在,必须在打开文件时指定ios::nocreate模式,然后使用fail成员函数确定:
    istream ifile("FILENAME",ios::nocreate);
    if (ifile.fail())
    //The file does not exist...
2.get函数    
非格式化get函数的功能与提取运算符(>>)很相像,主要的不同点是get函数在读人数据时包括空白字符,而提取运算符在缺省情况下拒绝接受空白字符。
例  get函数应用举例
#i nclude<iostream.h>
void main()    
{
    char ch;
    while((ch=cin.get())!=EOF)
  cout.put(ch);
}
运行时如果输入:
abc  xyz  123
则输出:
abc  xyz  123
3.getline函数
getline成员函数的功能是允许从输人流中读取多个字符,并且允许指定输入终止字符(缺省值是换行字符),在读取完成后,从读取的内容中删除该终止字符。
例   为输入流指定一个终止字符
本程序连续读人一串字符,直到遇到字符‘t’时停止,字符个数最多不超过99个。
  #i nclude<iostream.h>
void main()
{    
    char line[100];
    cout<<"Type a 1ine terminated by "t""<<endl;
    cin.getline(1ine,100,"t");
    cout<<line;
}
4.read函数
read成员函数从一个文件读字节到一个指定的存储器区域,由长度参数确定要读的字节数。如果给出长度参数,当遇到文件结束或者在文本模式文件中遇到文件结束标记字符时读结束。
例   从一个payroll文件读一个二进制记录到一个结构中
    #i nclude<io.h>
void main()    
{
    struct
    {
  double salary;
  char name[23];
}employee;
ifstream is("payroll",ios::binary|ios::nocreate);
    if (is)
    {
    is.read((char*)&employee,sizeof(employee));
    cout<<employee.name<<" "<<employee.salary<<endl;
    }
    else
    {
    cout<<"ERROR:Cannot openfile"payroll"."<<endl;
    }    
}    
这里假设数据记录是通过指定的结构严格格式化的,并且设有终止的回车或换行字符。
5.seekg和tellg函数    
在输入文件流中,保留着一个指向文件中下一个将读数据的位置的内部指针,可以用 seekg函数来设置这个指针。    
    例   用seekg函数设置位置指针
  #i nclude<fstream.h>
void main()
{    
char ch;
ifstream tfile("payroll",ios::binary | ios::nocreate);
if(tfile)    
{
  tfile.seekg(8);    
  while(tfile.good())    
  {
   //遇到文件结束或读取操作失败时结束读操作
   tfile.get(ch);
   if (!ch)break;    //如果没有读到则退出循环
   cout<<ch;
  }
    }
    else
    {
  cout<<"ERROR;Cannot open file "payroll"."<<endl;
}    
}
  
使用seekg可以实现面向记录的数据管理系统,用固定长度的记录尺寸乘以记录号便得到相对于文件末尾的字节位置,然后使用get读这个记录。
tellg成员函数返回当前文件读指针的位置,这个值是streampos类型,该typedef结构定义在iostream.h中。
例   读一个文件并显示出其中空格的位置
#i nclude<fstream.h>
void main()
{    
    char ch;
    ifstream tfile("payroll",ios::binary | ios::nocreate);
    if (tfile)    
    {    
  while(tfile.good())    
  {
   streampos here=tfile.tellg();
   tfile.get(ch);
   if(ch==" ")
    cout<<"\nPosition"<<here<<"is a space";
  }
    }    
    else
    {    
   cout<<"ERROR:Cannot open file "payroll"."<<endl;
    }
}    
6.输入流的close函数
close成员函数关闭与一个输入文件流关联的磁盘文件。
虽然ifstream类的析构函数可以自动关闭文件,但是如果需要使用同一流对象打开另一文件,则首先要用close函数关闭当前文件。
四、输入/输出流
一个iostream对象可以是数据的源或目的。两个重要的I/O流类都是从iostream派生的,它们是fstream和strstream。这些类继承了前面描述的stream和ostream类的功能。
fstream类支持磁盘文件的输入和输出。如果你需要在同一个程序中从一个特定磁盘文件读和写到该磁盘文件,可以构造一个fstream对象。一个istream对象是有两个逻辑子流的单个流,两个子流一个用于输入,另一个用于输出。详细说明请读者参考联机帮助或运行库参考手册

posted @ 2006-11-08 14:22 易来 阅读(3288) 评论(1) 编辑

1。调用默认构造函数

例如,下面的程序定义了学号类和学生类,学生类中包含有学号类:

    //***********************
    //**   ch12_10.cpp  **
    //***********************

    #i nclude <iostream.h>
    #i nclude <string.h>

    int nextStudentID=0;
    class StudentID{
     public:
      StudentID()
      {
       value=++nextStudentID;
       cout <<"Assigning student id " <<value <<endl;
      }
      ~StudentID()
      {
       --nextStudentID;
       cout <<"Destructing id " <<value <<endl;
      }
     protected:
      int value;
    };

    class Student{
     public:
      Student(char* pName="noName")
      {
       cout <<"Constructing student " <<pName <<endl;

       strncpy(name,pName,sizeof(name));
       name[sizeof(name)-1]='\0';
      }
     protected:
      char name[20];
      StudentID id;
    };

    void main()
    {
      Student s("Randy");
    }

  运行结果为:
    Assigning student id 1
    Constructing student Randy
    Destructing id 1

  当学生类对象被构造时,一个学号赋予了该学生对象。
  学号类StudentlD含有保护数据成员value,按规定不能被另一个类Student的类对象访问,即使Student类包含StudentlD类。
  Student类包含一个成员id,id属于StudentID类,Student构造函数不能访问id对象中的保护数据成员。所以,在Student类对象构造时,须调用StudentID类的构造函数来初始化id。这就是类与类之间“互不干涉内政”的严酷关系。
  “Students("Randy");”语句执行步骤如下:
  (1)分配s对象空间,调用Student构造函数。
  (2)建立s对象空间中的结构,第一为name[20],第二为id,因它属于StudentID类,所以调用StudentID的构造函数,这时,id的保护数据value得到了赋值,全局变量nextStudentID得到了赋值,并且输出第一行信息。之后,返回到Student构造函数。
  (3)执行Student构造函数体。输出第二行信息,数据成员name得到了赋值。之后返回到主函数main()。
  如果Student类未定义构造函数,C++提供的默认构造函数将自动地为各个数据成员(如果是类对象的话)调用构造函数。程序结束时也与此相同。类的析构函数将自动地为各个具有析构函数的数据成员调用析构函数。
  我们看到,上面的例子中,Student构造函数调用了StudentID的默认构造函数。但如果想调用的构造函数不是默认构造函数,那又如何呢?
2。有参数的情况:

程序基本不变:

Student(char* pName="noName",int ssID=0)
      {
       cout <<"Constructing student " <<pName <<endl;

       strncpy(name,pName,sizeof(name));
       name[sizeof(name)-1]='\0';
       StudentID id(ssID); //希望将学号传给学号类对象(有点修改)
      }
StudentID的构造函数改为从参数中接受一个学号值。在Student构造函数内部,增加了一条语句“StudentID id(ssID);”,企图将ssID参数值传给数据成员id但实际上,在Student构造函数中构造了一个名为id的StudentID局部对象。由于是局部对象,所以,当Student构造函数返回时,便析构了这个对象。

那么,能否像下面这样在Student类中直接给id对象初始化呢?
    class Student
    {
     public:
      Student(char* pName="noName",int ssID);
     protected:
      char name[20];
      StudentID id(9818);
        //error:类定义是不分配空间和初始化的。
    };

  “StudentID id(9818);”是创建对象语句,而不是类定义中允许的声明数据成员形式
  “StudentlD id=9818;”或者“StudentID id(ssID);” 也都是不允许的。前者就是“StudentID id(9818);”后者ssID成了参数,类定义是不会调用构造函数的。因为类是一个抽象的概念,并不是一个实体,并不含有属性值,而只有对象才占有一定的空间,含有明确的属性值。我们只能按照格式“类型标识符;”去声明类的数据成员。

3。总结:

主程序不变:修改如下

Student(char* pName="noName",int ssID=0):id(ssID)
      {
       cout <<"Constructing student " <<pName <<endl;

       strncpy(name,pName,sizeof(name));
       name[sizeof(name)-1]='\0';
      }

冒号表示后面要对类的数据成员的构造函数进行调用。SSID可以是Student构造函数的形参,id(ssID)表示调用以ssID为实参的Student构造函数。

上例中,Student构造函数头冒号后面如果是id()的形式,表示调用Student的默认构造函数,并且可以省略。

posted @ 2006-11-08 14:21 易来 阅读(428) 评论(0) 编辑

2006-05-23
说来有点气,学校机房上的机上有木马.把我QQ密码给盗了.还是我主用的QQ.

然后给他的网友用.唉...什么世道啊//

跟用我QQ的人发了消息,好说歹说,死都不还,也不想换..

后来通过某种手段我拿回来了原来的Q,但是损失惨重啊...

好友少了200多少,我加的二十几个群全没有了,只留一个自己创建的群..

好友分组也全删了,,

20几个Q币只有0.4个了...

不过还好,Q还是拿回来了,奉劝那些在学校机子上Q的同学还是好好利用上机的机会多学点东西,别再上Q了,不然后果跟我一样,后果很严重啊...

posted @ 2006-11-08 14:20 易来 阅读(143) 评论(0) 编辑

看了电影<<金刚>>心里有些话说不出来.伤感,愤怒,无奈!

人类是多么的可怕,可恨.破坏了大自然,还要"改变"大自然.

善良可爱的大猩猩,不知何原因,爱上了女主角.好几次都救了女主角,特别是和恐龙对决的那场面最壮观,而人类错误的认为猩猩要杀害女主角,而想尽办法去救她,当然激怒了猩猩,很多人受伤了,在利益的驱动下,后来在训练有素的猎人设计的圈套下,大猩猩被捕住了,这给那名电影导演带来了不少的门票收入,就在表演美女征服野兽的过程中再一次激怒了猩猩,力大无比的猩猩挣脱了钢绳,逃出电影院寻找那位美女,后来在街上遇到了她,它平静了,带着她爬到了最高的建筑的顶上.可是人类却出动了部队,战斗机袭击猩猩,在猩猩落下的瞬间,画面平静了,......

 

她哭了,哭得像个小孩子,在我身旁红着眼眶..

单纯的小孩...

posted @ 2006-11-08 14:18 易来 阅读(167) 评论(1) 编辑

ASP连接数据库的5种方法

第一种 - 这种方法用在ACCESS中最多

strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" _
& Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

第二种-这种方法用在SQL SERVER中多

strconn = "Driver={SQL Server};Description=sqldemo;SERVER=127.0.0.1;" _
&"UID=LoginID;Password=;DATABASE=Database_Name"
set conn = server.createobject("adodb.connection")
conn.open strconn

第三种

strconn="Driver={Microsoft Access Driver(*.mdb)};" _
&"DBQ=F:\Inetpub\wwwroot\somedir\db1.mdb;DefaultDir=" _
&"f:\Inetpub\wwwroot\somedir;uid=LoginID;" _
&"pwd=Password;DriverId=25;FIL=MSAccess;"
set conn = server.createobject("adodb.connection")
conn.open strconn

第四种运用系统数据源

The following uses a Data Source Name: Example
set conn = server.createobject("adodb.connection")
conn.open "Example"

第五种运用ODBC数据源,前提是你必须在控制面板的ODBC中设置数据源

set rs = server.createobject("adodb.recordset")
rs.open "tblname", "DSNName", 3, 3 第一种 - 这种方法用在ACCESS中最多
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" _
& Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

posted @ 2006-11-08 14:17 易来 阅读(35) 评论(0) 编辑

ADO相关知识
在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:Connection、Recordset 、Command
Connection:负责打开或连接数据
Recordset:负责存取数据表
Command:负责对数据库执行行动查询命令
连接各数据库的驱动程序
连接各数据库可以使用驱动程序(OLEDB),也可以使用数据源(ODBC),相对来说使用OLEDB较为方便、简单。
ODBC链接(红色加粗部分为数据库类型,右方为相关连接方式)

access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"

dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"

Oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"

MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"

MS text "Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"

Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"

MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"

OLEDB链接
access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"

Oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"

MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"

MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties'text;FMT=Delimited'"

在Asp中连接Access的数据库相关代码可以写为:
Dim db,conn,connstr
db="data/hezepolice.mdb"
Set conn = Server.CreateObject("ADODB.Connection")

connstr="DBQ="+server.mappath("db")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

'采用Oledb方式
'connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)

'字符串写法的不同
'connstr="Driver={microsoft access driver (*.mdb)};DBQ=" & Server.MapPath(db)

'采用先行建立的Dsn进行连接
'connstr="dsn=hezepolice;"
conn.open connstr
以下是数据库采用sqlserver的时候Asp建立数据连接常用的代码方式之一

Set conn=Server.CreateObject("ADODB.Connection")
on error resume next
connstr="Provider=SQLOLEDB;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=msdb;Data Source=localhost;Connect Timeout=15"
conn.Open connstr
微软建议在连接Access数据库使用下面的方法:
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("data.mdb")

posted @ 2006-11-08 14:17 易来 阅读(898) 评论(0) 编辑

唉!

一年一度的软件设计师考试的时间马上又要到了,这次我们班报考软考的人数暴多!

可是据我所知有认真去念,认真去备考的人是少之又少,

我也一样,没有认真,也不知道平时的时间都用到哪去了~郁闷啊~~

想来越发郁闷,考试的钱钱可能就这样打水漂了,

唉~曾经有一次绝好的软考机会摆在我面前,

我没有好好珍惜,等到失去,我才后悔莫及,人世间最痛苦的事莫过于此,

如果上天能再给我一次软考机会的话(好象每年国家都举行两次考试我昏迷)...

我一定会好好把握,,,,,,,,

不写了,,.暴郁闷!!!!!!!!!!!!!!

posted @ 2006-11-08 14:16 易来 阅读(433) 评论(1) 编辑

今天是五一假期的最后一天,不怎么了,突然感觉好无助,又一次没有按照自己的计划过好五一节.我自制力怎么就这么差捏?

估计我不是一个学者研究型的人.好象没有那么好的心静,可以心平气和的什么都不想,认认真真的念书,我昏迷.....曾经以为自己是啊!!!!!!!!!不过我会努力的!!!!!!!

曾经在广播中听主持人采访一位什么人(好象蛮有成就的)说:你觉得成功最重要的是什么?那人回答说:心静,成功永远属于那些耐得住寂寞的人!

posted @ 2006-11-08 14:15 易来 阅读(16) 评论(0) 编辑

今天有个同学突然问我:"你谈恋爱的目的是什么?"

一句简单的问题,我居然当时回答不出来,

其实谈恋爱没有什么太大的目的.

不过是像刘若英歌中唱的那样:

想寂寞的时候有个伴,日子再忙也有人一起吃早餐.

你们的恋爱目的是什么呢?

posted @ 2006-11-08 14:15 易来 阅读(297) 评论(2) 编辑

-- 如何开发孩子右脑
刺激指尖法

开发右脑,国外学者主张从儿童做起,如前苏联著名教育家苏霍姆林斯基说:“儿童的智力发展表现在手指尖上。”他将双手比喻为大脑的“老师”。人体的每一块肌肉在大脑层中都有着相应的“代表区”----神经中枢,其中手指运动中枢在大脑皮层中所占的区域最广泛。现在许多父母让孩子联系弹琴,实际上就是很好的指尖运动。随着双手的准确运动就会把大脑皮层中相应的活力激发出来,尤其是左右手并弹的钢琴、电子琴。

借助外语开发右脑

美国神经外科近年发现:儿童学会两三种语言跟学会一种语言一样容易,因为当孩子只学会一种语言时,仅需大脑左半球,如果培养同时学习几种语言,就会“启用”大脑右半球。

体育活动法

如每天跳上半小时的迪斯科健身操、打乒乓球、羽毛球等;在打拳或做操时有意识地让左手、右手多重复几个动作,以刺激右脑。右脑在运动中随之而来的鲜明形象和细胞激发比静止时来得快,由于右脑的活动,左半球的活动受到某种抑制,人的思想或多或少地摆脱了现成的逻辑思维方法,灵感经常会脱颖而出。

借助音乐的力量

心理学家发现:音乐可以开发右脑。所以父母应该让孩子学习音乐。此时,还可以在孩子从事其他活动时,创造一个音乐背景。音乐由右脑感知,左脑并不因此受到影响,仍可独立工作,使孩子在不知不觉中得到了右脑的锻炼。

posted @ 2006-11-08 14:11 易来 阅读(456) 评论(1) 编辑

2006年9月8号

难忘,有纪念意义的一天..

 

posted @ 2006-11-08 14:10 易来 阅读(16) 评论(0) 编辑

新东方在美上市,造就了俞敏洪这个新的亿万富翁。有人说他是中国最成功的老师,有人说他是一个纯粹的商人,把这两个角色结合在一起,俞敏洪这条路走得并不轻松——

  北京时间9月8日,新东方教育科技集团在美国纽交所上市,首日收盘于20.88美元。新东方董事长、持有公司31.18%股权(4400万股)的俞敏洪的资产一跃超过10亿人民币,成为中国最富有的老师。

  作为国内最大的英语培训机构,新东方声名赫赫。十几年来,它帮助数以万计的年轻人实现了出国梦,众多莘莘学子借此改变了自己的命运。有人评价说,“在中国,任何一个企业都不可能像新东方这样,站在几十万青年命运的转折点上,站在东西方交流的转折点上,对中国社会进步发挥如此直接而重大的作用。”

   这样的赞誉现在看来也许并不为过,但对于创办新东方的俞敏洪来说,当初却根本没有这样的“雄才大略”。

  失意的80年代

  俞敏洪的授课风格被学生们总结为“激励型”,他常常用到的一个例子就是自己的经历。

  1978年,俞敏洪高考失利后回到家里喂猪种地。由于知识基础薄弱等原因,俞敏洪第一次高考失败得很惨,英语才得了33分;第二年又考了一次,英语得了55分,依然是名落孙山。那时俞敏洪并没有远大的志向,作为一个农民的孩子,离开农村到城市生活就是他的梦想,而高考在当时是离开农村的惟一出路。尽管生活条件比较艰苦,俞敏洪仍在微弱的煤油灯下坚持学习。

  1979年,县里办了一个外语补习班,俞敏洪挤了进去,这是他第一次学习外语。住在30人一间的大房子里,俞敏洪的感觉就是进了天堂:可以一整天都用来学习了,可以在电灯下读书了。到了第二年春节,俞敏洪在班里的成绩已经进入前几名。

  功夫不负有心人,1980年,俞敏洪坚持考了三年后,最终考进了北京大学西语系。

  在北大,俞敏洪是全班惟一从农村来的学生,开始不会讲普通话,结果从A班调到较差的C班。大三的一场肺结核又使俞敏洪休学一年,人也变得更加瘦削。

  1985年,俞敏洪毕业留在北大成了一名教师。接下来是两年平淡的生活。中国随后出现的留学热潮,让俞敏洪也萌生了出国的想法。1988年俞敏洪托福考了高分,但就在他全力以赴为出国而奋斗时,美国对中国紧缩留学政策。以后的两年,中国赴美留学人数大减,再加上他在北大学习成绩并不算优秀,赴美留学的梦想在努力了三年半后付诸东流,一起逝去的还有他所有的积蓄。

  为了谋生,俞敏洪到北大外面去兼课教书,后来又约几个同学一块儿出去办托福班,挣出国的学费。1990年秋天,俞敏洪的如意算盘被打碎了:因为打着学校的名头私自办学,北京大学在校园广播、有线电视和著名的三角地橱窗里高调宣布了对俞敏洪的处分决定。对此,俞敏洪没有任何思想准备。

  被逼下海

  1991年,俞敏洪被迫辞去了北京大学英语教师的职务,为了挽救颜面不得不离开北大,生命和前途似乎都到了暗无天日的地步。但正是这些折磨使他找到了新的机会。尽管留学失败,俞敏洪却对出国考试和出国流程了如指掌;尽管没有面子在北大呆下去,反而因此对培训行业越来越熟悉。

  离开北大后,俞敏洪开始在一个叫东方大学的民办学校办培训班,学校出牌子,他上交15%的管理费。这一年他29岁,他的目标是挣一笔学费,摆脱生活的窘境,然后像他的同学和朋友一样到美国留学。

  卢跃刚在他的《东方马车》一书中生动描述了俞敏洪这段创业经历:他在中关村第二小学租了间平房当教室,外面支一个桌子,放一把椅子,“东方大学英语培训班”正式成立。第一天,来了两个学生,看见“东方大学英语培训部”那么大的牌子,只有俞敏洪夫妻俩,破桌子,破椅子,破平房,登记册干干净净,人影都没有,学生满脸狐疑。俞敏洪见状,赶紧推销自己,像是江湖术士,凭着三寸不烂之舌,活说死说,让两个学生留下钱。夫妻俩正高兴着呢,两个学生又回来了。他们心里不踏实,把钱又要回去了……

  尽管困难重重,但拼死拼活干了一段时间后,俞敏洪的培训班渐渐有了起色。

  眼看着培训班越来越火,俞敏洪渐渐萌生了自己办班的念头。1993年,在一间10平米透风漏雨的小平房里,俞敏洪创办了北京新东方学校。

  俞敏洪说,最初成立新东方,只是为了使自己能够活下去,为了每天能多挣一点钱。作为一个男人,快到三十而立的年龄,连一本自己喜欢的书都买不起,连为老婆买条像样的裙子都做不到,整个家庭无家可归,连家徒四壁都谈不上,自己都觉得没脸活在世界上。当时他曾对自己说:只要能赚到十万元钱,就一辈子什么也不干了。

  到今天,新东方已成为中国最大的私立教育服务机构,在全国拥有25所学校、111个学习中心和13个书店,大约有1700名教师分布在24个城市。目前累计已有300万名学生参与新东方培训,仅今年就有87.2万名。外语培训和考试辅导课程在新东方营收中所占比例高达89%,是该公司最主要的营收来源和增长动力。

  俞敏洪说,“新东方走到今天,不在我的意料之中,因为最初只是为了糊口,招几个学生办个小小的补习班而已。新东方到了今天,我们就有了更多的期待,希望能够用自己的行为和思想,为中国学生做更多的事,为中国教育做更多的事,为中国未来做更多的事。”

  一只土鳖带着一群海龟奋斗

  新东方为何能从竞争激烈的英语培训市场脱颖而出,俞敏洪说自己最成功的决策,就是把那帮比他出息的海外朋友请了回来。

  “任何一个人办了新东方都情有可原,但我就不能原谅。因为我在同学眼里是最没出息的人。我的成功给他们带来了信心,结果他们就回来了。”

  1995年底,积累了一小笔财富的俞敏洪飞到北美,这里曾是他心牵梦绕的地方,当年就是为了凑留学的费用,他丢掉了在北大的教师职位。在加拿大,曾经同为北大教师的徐小平听了俞敏洪的创业经历怦然心动,毅然决定回国和俞敏洪一起创业。在美国,看到那么多中国留学生碰到俞敏洪都会叫一声“俞老师”,已在美国贝尔实验室工作的同学王强也深受刺激。1996年,王强终于下定决心回国。

  在俞敏洪的鼓动下,昔日好友徐小平、王强、包凡一、钱永强陆陆续续从海外赶回加盟了新东方。经过在海外多年的打拼,这些海归身上都积聚起了巨大的能量。这批从世界各地汇聚到新东方的个性桀骜不驯的人,把世界先进的理念、先进的文化、先进的教学方法带进了新东方。

  俞敏洪笑言自己是“一只土鳖带着一群海龟奋斗”。如何将这些有个性的人团结到一起,并让每个人都保持活力和激情,是俞敏洪首先要面对的问题。

  俞敏洪说,在新东方,没有任何人把我当领导看,没有任何人会因为我犯了错误而放过我。在无数场合下,我都难堪到了无地自容的地步,我无数次后悔把这些精英人物召集到新东方来,又无数次因为新东方有这么一大批出色的人才而骄傲。因为这些人的到来,我明显地进步了,新东方明显地进步了。没有他们,我到今天可能还是个目光短浅的个体户,没有他们,新东方到今天还可能是一个名不见经传的培训学校。
 
    像所有处于快速成长期的民营企业一样,新东方几年后也遇到了一次次人事危机。2001年8月,新东方创业三位元老之一的王强决定出走。卢跃刚在他的《东方马车》一书中详细描述了这段事实:“在场的人都清楚,新东方可能正沿着一个大家十分熟悉的道路向下滑行,可能面临一个私营企业由于决策失误、理念不合、利益纷争而导致的内部分裂,有可能出现盛极而衰、灰飞烟灭的庸俗结局。”庆幸的是,在俞敏洪的极力挽留之下,王强最终没有离开。
 
  新东方的“内乱”没有就此结束。2003年,北京新东方学校另一位副校长、著名TSE(英语口语测试)教学专家杜子华离开了管理层。2004年,新东方的另外两外干将———江博和胡敏也低调离开新东方。

     新东方在美国纽交所上市后,俞敏洪身价已逾10亿,其他董事会成员徐小平、包凡一、钱永强身价可能也将上亿。以后,在资本力量的左右下,这个“一只土鳖带着一群海龟奋斗”的故事能否顺利延续呢?

     新东方精神

     如今,新东方已经成为无数人梦想的发源地和实现梦想的场所。成千上万人通过在新东方艰苦的学习,圆了自己的留学梦。
 
    与新东方的英语培训一同冲向全国各地的,还有新东方精神。一位同行在参加完新东方去年的梦想之旅后总结道,新东方最重要的就是告诉了我们,尽管生活沧海桑田,依然不要停止追求自己的梦和理想!

     新东方精神到底是什么?俞敏洪说,“新东方精神对我而言,是我生命中一连串铭心刻骨的故事:是在被北大处分后无泪的痛苦,是在被美国大学拒收后无尽的绝望,是在被其他培训机构恐吓后浑身的颤抖,是在被医生抢救过来后撕心裂肺的哭喊;新东方精神对我而言,更是在痛苦之后决不回头的努力,在绝望之后坚韧不拔的追求,在颤抖之后不屈不饶的勇气,在哭喊之后重新积聚的力量。”

     俞敏洪认为,人活着需要有一种感觉,新东方之所以被很多人接受,也是因为新东方有一种感觉存在,凡是到新东方来过的人,都在新东方感觉到了一种活力、一种顽强和一种豁达。

     “十年风雨辉煌路,百年教育报国心”。俞敏洪希望新东方能为中国学生做更多的事,为中国教育做更多的事,为中国未来做更多的事。

     不过,也有人对此不以为然。因“老罗语录”而名噪一时的新东方前教师罗永浩表示,“我认为媒体上说俞敏洪是最富有的英语教师的说法是不准确的,俞敏洪从来都不是一个英语教师,他只是一个商人。”

     罗永浩在他的博客上写道,“我当初刚来新东方的时候,新东方在社会上成功地制造了一个一群理想主义者创业的美好形象,我来的时候对新东方有很多很好的向往、期待这样的东西。来了之后慢慢发现这个机构其实就是一个100%的纯商业机构,当然我不认为纯商业机构有什么不好,但是作为一个唯利是图的、没有原则的商业机构,总是宣传什么‘百年教育报国心’就比较恶心了。”

     新东方就是这样在争议,甚至相互攻击中慢慢成长,过去是,将来可能也会是。

     几年前,俞敏洪曾写道,“现在新东方做大了,自己所面对的困难反而越来越多了,有些困难是因为中国的客观现实造成的,但有些困难存在完全是因为我的无能和性格缺陷所致。放眼看去,我开始明白,只要新东方存在着、发展着,我所面临的困难和痛苦将会无穷无尽。多少次痛苦万分时,我下定决心要放弃新东方,希望离新东方越远越好,多少次在我离开新东方一段时间后,又对她如此的魂牵梦绕、日夜思念,只要听不到新东方的消息就茶饭不思,坐立不安。”

     惶恐和不安几乎是众多企业领导者共同的体验,唯有战胜它们的人才能轻松走下去。现在,新东方已风风光光地在美国上市,不知道意气风发的俞敏洪能否走好下一步棋。

posted @ 2006-11-08 14:08 易来 阅读(438) 评论(1) 编辑

美国《福布斯》杂志近日公布了2006年度世界超级富豪排行榜,微软公司董事长比尔·盖茨以500亿美元的身价蝉联世界首富。从退学建立微软,到成为世界首富,盖茨只用了20年的时间。此后,这个被美国人誉为“坐在世界巅峰的人”就再也没有从这个位子上下来过,一坐就是12年。
互联网仍然充满魅力   
  其实,盖茨作为世界首富的日子也是波折不断。在1998年股票市场的互联网泡沫出现前,盖茨的财富已经达到近1000亿美元。   
  2000年网络股热潮开始消退,微软股价下滑了近63%,盖茨的身价也随之缩水了近一半。尽管盖茨依然保持着全球首富的位子,但是与第二名的差距已经是越来越小,那时人们纷纷预测,随着互联网泡沫的破灭,盖茨迟早要让出“天下第一”的宝座。   
  然而事情发展并没有像人们想象的那样。2003年以来,美国经济强劲复苏,带动了互联网业的回暖。且不说屡创奇迹的Google等后起之秀,微软公司在股票市场上的表现也很抢眼,盖茨的财富重新水涨船高。在过去一年里,盖茨的财富增加了近8%。
  不把鸡蛋放在同一个篮子里   
  沃伦·巴菲特曾评价比尔盖茨说:“如果他卖的不是软件而是汉堡,他也会成为世界汉堡大王。”言下之意,并不是微软成就了盖茨,而是其商业天赋成就了这个世上最富有的人。   
  对于理财(相关:证券 财经),盖茨自然也有自己的一套。对微软公司前途的信心使盖茨仍然把财富的绝大部分投在公司股票上,尽管他已经不担任公司的CEO,但是作为微软的首席架构师,他仍然主导着公司的发展方向和战略规划。不过精明的他也会在好的价位适当地套现一些股票。股市交易记录显示,上个月盖茨就在公开市场出售了100万股微软股票,获得收入近2700万美元。   
  当然,像盖茨这样的聪明人是决不会把“把鸡蛋放在一个篮子里”的。具有远见的盖茨早在网络股泡沫破裂之前就开始分散投资了。盖茨在1995年建立了一家投资公司,据了解,该公司管理的投资组合价值100亿美元,其中很大一部分投入了收入稳定的债券市场,主要是国库券。  
  盖茨看好代表新经济的数字及生物技术产业,但在投资时并不排斥传统经济,尤其看重表现稳定的重工业部门。盖茨曾通过自己的投资公司收购纽波特纽斯造船公司7.8%股份,后来这些股票几乎上涨了一倍;他对加拿大国家铁路公司的投资也给他带来了丰厚的回报,在不到一年内股价就上升了大约1/3。此外,盖茨也喜欢向抵御市场风险能力很强的公用事业公司投资。而盖茨对科学创新的兴趣,也使他把医药和生物技术产业作为一个重要的投资方向。
posted @ 2006-11-08 14:06 易来 阅读(22) 评论(0) 编辑

很多人都想开公司,这里介绍了开公司的步骤及所需材料,能帮您节省不少时间。
  注册50万元的公司一共要办一下证件:
   证件名 办理机构 费用 年费
  1、工商营业执照正本 工商局 800 500
  2、工商营业执照副本 工商局
  3、国税税务登记证正本 国税局
  4、国税税务登记证副本 国税局
  5、地税税务骏登记证正本 地税局
  6、地税税务登记证副本 地税局
  7、机构法人代码证书正本 技术监督局 (每年年审,我今年晚了4个月罚款400)
  8、机构法人代码证书副本
  9、社会保险登记证 社保局
  10、私营企业协会证 500
  11、验资报告 会计师事务所 银行
  12、年度审计报告 会计师事务所 1500
  13、法人代表计划生育证 街道办事处 计划生育服务站
  14、ICP许可证(如果你的公司有网站的话)
  
  地税主要税收
  1、营业税 5.5%
  2、教育税
  3、堤围防护税 0.001%
  4、个人所得税 (超过800就要缴税)
  5、其他税
  
  国税主要税收
  5、企业所得税 0.075%
  6、商品销售税 0.06
  税收大概是发票额的6.25%, 不要耍小聪明漏税,知道什么叫秋后算账?
  
  如果有小车的
  1、养路费 1000
  2、车船使用税 240
  3、公路路桥费 2000(每个城市不同)
  4、车辆保险费 1000
  5、年审费 100
  
  必须要买的东西
  1、税控机(开发票用,其实就是一个读卡器) 1800元
  2、网上保税卡 50元/年
  3、机构代码证IC卡 80元
  
  得出的经验,老老实实办好一切证书,平时可能没人查你,到要办事的时候,你会发现少办一个什么事都办不成,办迟了还要要罚款。办事的时候强迫你买的东西,即使很贵还是要买,不然你很多事办不成。每次办事最好带上以上说有证件和复印件还有公章,说不定他们要什么。最好办事前先打电话问问办过类似事情的人
posted @ 2006-11-08 14:05 易来 阅读(77) 评论(0) 编辑

观念一:把钱装进脑袋

  小王退伍后,把工作的薪水全花在买书和参加各种培训上。后来他拿到MBA证书,跳槽去一家外商公司担任高级经理,薪水比原来高出数倍。看来,知识就是财富,此言不假。年轻时把钱花在名牌上,不如装进脑袋。

  观念二:教育好子女也等于赚钱

  如果子女的学习成绩一般,想上好一点的中学要交择校费;高考成绩不理想,高价生和上民办大学的开支更大。因此,许多精明的家长从中悟出了窍门,改变只考虑为子女教育攒钱的老办法,而是注重了请家教、参加培训班、学特长等早教投入。孩子成绩好了,往近了说会节省择校开支,远了说更利于子女将来的就业。

  观念三:夫妻AA制

  AA制是指一种新的家庭经济模式;大致有两种形式:一种是夫妻每月各交一部分钱作为“家庭公款”,支付房租、水电费等共同家庭支出,其余则各自管理;另一种是请客、购物、车资等费用都各自支出,只在房贷、投资等大笔支出上平均负担。

  这种理财方式能发挥个人特长,分散家庭投资风险。同时,夫妻双方财务独立自主也有助于减少矛盾,促进家庭和睦。

  观念四:靠健康省钱

  虽然人们的收入不断增加,但还是赶不上看病住院的花费涨得快。有道是“健康是福”,只要身体健康,自然就能省下一大笔钱。人们的健康观念应该逐步转变,如果不懂得爱惜身体而节省,什么都不舍得花,无疑步入一种“贪小失大”的误区。应该将部分花费投资于外出旅游、购买健身器材、合理饮食等。减少生病住院的机率,实际上也是一种科学理财。在健康上多作些投资,唯有健康才是最大的节约。

  观念五:平安如赚钱

  人生在世,平安不仅是一种福气,而且等于赚了钱。因此,理财应该把安全放在重要位置上。从居家到出门,从大人到小孩,从用电到用火,从骑车到走路……都应该做好安全的防范工作。自行车、热水器、高压锅、电线,如果发现破损、陈旧、超期……就应该及时更换,不能为了省钱而不顾安全。

  观念六:不贪财不破财

  现在社会上骗子很多,生活中时有骗子找上门来的事。骗子之所以能够屡屡得手,无非都是打着各种诱人的幌子。许多人之所以上当受骗,无非都是源于一种“贪便宜”的心理。其实,“天上不会掉馅饼”,“世上没有免费的午餐”,这是人人应该懂得的常识。只要我们不抱“贪便宜”的心思,对外界的诱惑随时保持警惕,自然就不会上当受骗,不破财其实也就是成功的理财。

  观念七:破小财免大灾

  只要条件许可,应考虑尽早为家人购买寿险和医疗险(包括人身意外险、大病险等保险)。虽说这类“投资”不求“回报”,“打水漂儿”最好,可俗话说,“天有不测风云,人有旦夕祸福”,一旦灾祸降临(尤其是担负着家庭主要经济来源的成年人出了意外),买过保险与否便大不一样了。

  观念八:勤俭持家不如能挣会花

  过去我们常说“吃不穷,穿不穷,算计不到要受穷”,但如今社会不断进步,生活水平日益提高,勤俭持家、使劲攒钱的老观念已经落伍了。“能挣会花”日渐成为最流行的理财新观念。大家发挥个人特长经商或谋取兼职,广开财源;挣钱后科学打理,积极用于消费,从而尽情享受挣钱和消费带来的人生乐趣。

posted @ 2006-11-08 14:03 易来 阅读(53) 评论(1) 编辑

决定智商高低的八对基因(还是八个?记不清楚了)总之全部都是位于X染色体。
然后男生是XY, X是来自母亲, Y是来自父亲。所以男生的智商全部都是来自母亲的遗传。
然后女生是XX, 所以女生的智商是父亲跟母亲各有一半影响。

因为女生的智商是父亲母亲都有影响, 所以会有中和的效应。所以女生智商的分布会呈现自然分布(normal distribution),就是倒钟状,中间最多,两边较少。

男生因为是完全只受一方影响,所以男生智商分布会呈现在偏向在两个极端。也就是说,男生天才比较多,但是同时,蠢材之中也是男生特别多。

这个情况告诉我们什么?

⒈“你要判断一个男生聪不聪明, 看他妈妈就知道了。” 可是,你又要怎么判 断一个男生的妈妈聪不聪明?……想不出简便的方法……
2.然后我们用概率来算:
生男孩的几率= 1/2 生女孩的几率=1/2
生男孩的时候,母亲对于男孩智商的影响力 = 1
生女孩的时候,母亲对于女孩智商的影响力 = 1/2
所以说母亲跟父亲对于下一代智商的影响力(期望值)的比例是 1*1/2 +1/2*1/2 : 0*1/2+ 1/2*/12 = 0.75 : .025 = 3 : 1 = 母:父

所以说,如果你:

1.是男生,如果你觉得你很笨的话,你千万要娶一个聪明的女生来。这样你小孩翻盘的机率还有七成五,人生还是充满了希望。
2.是女生,如果你觉得你很笨的话,因为,你翻人家盘的机率有七成五.....
3.当你看到一个男生很聪明的时候,则他父亲很聪明的机率是 0% (应该说,就算他父亲很聪明,也对他是没有影响的)。可是他母亲很聪明的机率是100% 所以说,如果你在考虑要嫁给一个很聪明的男生的时候,你就要小心他妈妈,可能会是一个很会算计的婆婆。反之,当你看到一个男生很笨的时候,没错,他通常会很有钱,这是上帝的安排,上帝为了不让人类灭亡,所以他会让很笨的人很有钱,这样他才能娶到聪明的女生。我们看连X先生的例子就知道了…… 嗯,这个例子不好,我想那几年可能上帝去渡假了……总之,当你看到很笨的男生的时候,不要犹豫,嫁给他。不要觉得你是为了他的钱,你要跟自己说,你是为了要改善人类未来的基因。

我重复一次:
1. 判断男生智商,看妈妈。
2. 笨男生无论如何也要娶聪明女生。
3. 女生不要嫁聪明男生,应该嫁给笨男生。

让我们为了改善提高全人类未来的总体智商,而努力。
posted @ 2006-11-08 14:02 易来 阅读(3470) 评论(14) 编辑

三、关于游戏软件方向 

将游戏软件人才称为数字媒体软件人才可能更好听些,包括游戏软件策划(最缺游戏策划的人)、游戏软件美术设计、游戏软件程序设计等多方面的人才,对软件学院,游戏软件程序设计当然是最合适的了。
游戏软件人才的确目前很缺,听说很多游戏软件公司苦于没新人才补充,特别是没有高手补充,不得不相互挖人才,以至将游戏软件人才身价越抬越高。网上说*** 教育部刚刚批准成立了***第一家专门培养四年制游戏软件人才的本科大学。其实国内很多大学,特别是软件学院都有搞游戏软件人才的设想,但目前很少有做成的,主要原因是找不到能上游戏软件课的教师,听说有个学校只能花很大的价钱从Korea找老师来上课,果真缺到此等地步?
已有很多青少年沉湎于网游而颓废的实例,好在还不至于上升到制造精神鸦片的高度,所以开发游戏软件的人也不必每日惭悔(但开发儿童益智类游戏软件的人是不需惭悔的),如果想想这是为发展民族软件产业做贡献,那反倒是一件有意义的事情了。不过听一家游戏软件公司的老板讲,搞游戏软件开发是非常辛苦的。
若想自己创业,搞搞游戏软件是不错的主意。现在网上网站或公司都在收购游戏软件(特别是手机游戏软件,因为手机游戏用户可选从网站上download到手机上,不像网游那么复杂),按download次数分成或一次性收购的都有。我们的同学在校期间是否也可发点小财?搞得好,说不定可卖到国外网站,直接挣 $$$呢。
大致游戏分成以下几类:
(1) PC类游戏,包括单机和网游。这类游戏开发平台基本上都是基于VC++和DitrectX(如DirectShow,DirectDraw,D3D等, DirectX资料可直接到MS网站上查)。DirectX和OpenGL是两个主要的图形标准,OpenGL跨平台(Unix/Windows上都可跑),尽管很多搞研究的人对OpenGL赞不绝口,将DirectX骂得一文不值,但事实是,在Windows平台上,DirectX是最快最方便的,所以在Windows平台上的游戏还是DirectX当家。
(2) 手机游戏:目前手机游戏主要开发平台有两类:
第一类手机游戏是J2ME平台(Java 2 Micro Edition),J2ME本是为嵌入式平台设计的Java,但由于Java生来就需要Java虚拟机(JVM)来解释,所以在嵌入式产品很少用J2ME (太慢太耗内存)。但在手机游戏中J2ME倒有用武之地,我想这可能主要是Java可跨OS平台的原因,因为手机的OS是千奇百怪的。我对J2ME完全外行,但上次听Square Enix公司的人说,J2ME与我们同学学过的J2EE还是有较大差别的。据我所知,目前手机中用的较多的是KJava语言,KJava是运行在一种叫K Java Virtual Machine的解释器上(K JVM是SUN早期为演示J2ME在嵌入式系统应用而开发的一个虚拟机),所以将在K JVM上运行的J2ME叫KJava。尽管SUN说今后不保证支持K JVM,将开发新的更高性能的J2ME虚拟机取而代之,但由于KJava出现较早,很多早期的手机游戏软件都将K JVM假想成J2ME虚拟机的标准了,所以目前有大量的KJava手机游戏软件存在,而且还在用KJava继续开发。特别是***的手机游戏软件由于开发较早(像叫什么docomi的***最大的电信运营商手机游戏搞得很火),多是基于KJava的。所以目前市场上在招聘手机游戏软件人才时,很多要求掌握 KJava。有关J2ME请到Sun的网站上找资料。
另一类手机游戏是BREW平台,BREW是美国高通公司(Qualcomm,CDMA核心技术都是该公司开发的,有无数移动通信技术专利)发明的,据说可编译成二进制代码,那当然快了。主要的开发语言是C/C++。但迫于被指责为较封闭的压力,目前Qualcomm已推出BREW平台上的J2ME虚拟机(但可想像那将是怎样慢的速度)。Qualcomm搞定了很多手机制造商签定BREW授权许可协议,最狠的是Qualcomm与中国联通绑在一起大堆基于 BREW的手机游戏,所以有些公司招聘时要求掌握BREW也就不奇怪了。
去年00级2+2班毕业答辩时,有一位同学讲的是在公司做的KJava游戏(那是一家***游戏软件公司),还一位同学讲的是另一家公司做的BREW游戏,看来不同的公司有不同的选择。将来谁会更火,我估计随着手机硬件资源的不断提高,不会在乎一个JVM的开销,J2ME应更有前途,毕竟它是更开放的。
(3) 专用游戏机:如电视游戏,XBOX等,我不太了解,不过这些游戏也太偏了。
同学可看服务器\public files\Intern Documents (学生实习资料)\大宇资讯股份有限公司,该文件夹中有著名游戏公司发来的对网游和手机游戏的人才需求,很有代表性。从中我们可看出,游戏公司对人才的需求主要是以下技术:
(1) 计算机图形学,特别是3D编程与算法,包括DirectX或OpenGL。开发平台是VC++/DIRECTX或KJAVA。
(2) 公司说,手机游戏因手机资源有限,必须对图像进行压缩,所以若有一些图像压缩算法知识比较好。像若能有MPEG压缩算法较好,手机上采用的是比MPEG压缩得更狠的一些特殊算法,但触类旁通。
(3) TCP/IP Socket编程是搞网游开发的人必须掌握的。
(4) 人工智能知识:复杂游戏可能需要一些AI算法。
(5) 网络与信息安全知识:网游要防外挂。
我在JoyPark的有趣见闻:http://bbs.tongji.net/index.php?prog=topic::flat&tid=177064
该公司的网游服务器是基于Linux平台的,所以还提出了对游戏服务器端软件工程师的技术需求(精通MSSQL、ORACLE、MYSQL等数据库,精通 Linux Programming,特别是Socket编程)。还有对维护游戏网站人才需求(ASP .NET和数据库)。详细请同学自己看服务器。注意一条,最好有自己的游戏软件作品,若您应聘时能带一个DirectX作品,那将有多强的竞争力,所以最重要的是现在就要行动,实践,实践,再实践。关于游戏方向,虽然我院一直想做,但可惜暂时还找不到这方面的师资,不过,我们计划与这方面的有名公司合作,让公司的技术人员来上课(最好能在我院搞个开发基地),有可能谈成的。对游戏软件开发有兴趣的同学,在目前情况下,可自已钻研一下相关知识(比方,可考虑将DirectX作为Windows程序设计课的课程项目),将来可拿出自己的作品来,同样可找到这方面的好工作,我们00,01级同学都有这样的例子。目前,会VC++的人本来就不多(现在很多年轻人都去追时髦的Dot Net来了,VC++因难学,所以人就少),会DirectX的人就更少了,这正是我们的机会。

posted @ 2006-11-08 13:59 易来 阅读(2973) 评论(0) 编辑

二、关于嵌入式系统方向

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、 VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。
嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。
一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、 Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。
另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP 和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有"花头"可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。
(3)哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌上PDA(南校区门口有广告),施工技术人员用该PDA可当场进行土木概预算和其它土木计算,据说销路特好。我认识的某大学老师,他开发的饭馆用的点菜 PDA(WinCE平台,可无线连网和上网),据他说销路不错,饭馆点点PDA让客户点菜,多显派头档次。我记得00级2+2班当年有一组同学在学 Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课程项目,当时真想建议他们将这个软件做成PDA,估计会有些销路(上海火车站南广场的Macdonald便使用很漂亮的PDA给用户点食品,像摸像样的)。这些PDA的硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

从事嵌入式软件开发的缺点是:
(1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。特别是从事嵌入式的小企业数量较多(小企业要搞自己的产品创业),知名大公司较少(搞嵌入式的大公司主要有 Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、 Microtek、研华、华为、中兴通信、上广电等制造类企业)。这些企业的习惯思维方式是到电子、通信等偏硬专业找人。由于我院以前毕业生以企业计算为主,所以我院与这些企业联系相对较少。我院正积极努力,目前已与其中部分公司建立了联系,争取今后能有我院同学到这些企业中实习或就业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
我院同学若学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面,应是我们的强项。对于搞嵌入式软件的人,最重要的技术显然是(实际上很多公司的招聘广告上就是这样写的):
(1) 掌握主流嵌入式微处理器的结构与原理
(2) 必须掌握一个嵌入式操作系统
(3) 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。
我院在嵌入式软件方面最重要的课程包括:
(1)嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书 (xxx Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。很多嵌入式职位招聘时都要求熟悉汇编。
[小知识] 目前嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM占据了绝对主流(资料说手机中几乎100%都是ARM处理器)。ARM是一个只卖知识产权的公司,目前获得购买了ARM CPU核授权许可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他们都在ARM CPU核的基础上进行了一些外围扩展,形成自己的处理器(如Samsung S3C2410,Motorola i.MXL9328等处理器都是采用ARM 9内核,指令一级是相同的)。而众多中小公司又购买了这些处理器,设计了各种各样的开发板,如华恒等国内很多著名嵌入式公司都生产基于Samsung S3C2410的开发板,供最终用户使用或供教学实验。在ARM这个食物链上,ARM公司是大鱼,Intel、Samsung等公司是小鱼,而华恒等则是虾米,最终用户(想我们要采购嵌入式开发板的实验室)则是喂虾米的。Intel早期生产的是低端ARM(Strong ARM,相当于ARM 7),现在转向主要生产高端ARM(即Intel Xscale处理器,相当于ARM 10,主要用在高端PDA上,如HP和DELL生产的PDA都采用Intel Xscale,价格较高)。目前应用最多的是ARM 7和ARM 9两类处理器。 ARM 7较便宜,可跑uclinux(是一个不支持高级内存管理功能的嵌入式Linux系统)、Vxworks、uc/os II等实时操作系统,但因处理器不带内存管理单元MMU(无内存分页和地址映射机制,所以不能使用虚拟内存),所以不能跑Windows CE,另外通用Linux中的某些内存管理功能也不能用在ARM 7上。ARM 9是一个带MMU功能的高端处理器,可跑WinCE或通用Linux的大多数功能。以上是我的一点了解,可能有不对的地方。我们学院正在建设的嵌入式实验室(10月底到货)包括30套ARM 7系统(拟采用Samsung S3C44b0x开发板,主要用于嵌入式处理器结构、嵌入式linux课程实验),10套ARM 9系统(拟采用Samsung S3C2410x开发板,主要用于Windows CE课程建设),每套实验板都配了高速仿真器,价格都很贵(比我们招标的DELL PC还贵),很容易损坏,同学应爱护使用。
(2) 嵌入式操作系统类课程
除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时操作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。目前最重要的RTOS主要包括:
第一类、传统的经典RTOS:最主要的便是Vxworks操作系统,以及其Tornado开发平台。Vxworks因出现稍早,实时性很强(据说可在 1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。像Bell- alcatel、Lucent、华为等通信企业在开发产品时,Vxworks用得很多。但Vxworks因价格很高,所以一些小公司或小产品中往往用不起。目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。但无论如何,Vxworks在一段长时间内仍是不可动摇的。与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。
第二类、嵌入式Linux操作系统:Linux的前途除作为服务器操作系统外,最成功的便是在嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成本会低。Linux本身不是一个为嵌入式设计的操作系统,不是微内核的,并且实时性不强。目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的Linux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑;另一类是跑在ARM 9上的,一般是将Linux 2.4.18内核移植在其上,可使用更多的Linux功能(当然uClinux更可跑在ARM 9上)。很多人预测,嵌入式Linux预计将占嵌入式操作系统的50%以上份额,非常重要。缺点是熟悉Linux的人太少,开发难度稍大。另外,目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统,这主要是由于ucOS/II较简单,且开源,非常适合入门者学习实时操作系统原理,但由于ucOS/II功能有限,实用用得较少,所以我院不将其作为教学重点,要学习就应学直接实用的,比如 uClinux就很实用。况且熟悉了Linux开发,不仅在嵌入式领域有用,对开发Linux应用软件,对加深操作系统的认识也有帮助,可谓一举多得。据我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux开发。目前在嵌入式 Linux领域,以下几个方面的人特别难找,一是能将Linux移植到某个新型号的开发版上;二是能写Linux驱动程序的人;三是熟悉Linux内核裁减和优化的人。我院在该嵌入式Linux方面的课程系列是:本科生操作系统必修课,然后是Linux程序设计选修课,最后是嵌入式Linux系统选修课。我院在Linux方面目前已有较强力量,魏老师和张老师熟悉Linux开发,金老师和唐老师熟悉Linux系统管理。
第三类、 Windows CE嵌入式操作系统:Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(.NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用,由于WinCE开发都是大家熟悉的VC++环境,所以我院学过Windows程序设计课程的同学都不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重点 ,WinCE还有两个特殊版本,一个是MS PocketPC操作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone操作系统用于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。在PDA和手机市场上,除WinCE外,著名的PDA 嵌入式操作系统还有Palm OS(因出现很早,很有名)、Symbian等,但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长?我院可能是全国高校中唯一一家开设专门的"Windows CE嵌入式操作系统"课程的学校,这主要是基于以下原因:我院本身前面便有Windows程序设计课程,同学学过VC++后再学WinCE,非常方便自然,通过学习WinCE同样也可了解嵌入式软件的一般开发过程,对Linux有惧怕心理的同学也很合适。很显然,嵌入式Linux永远不可能替代 WinCE,而且将来谁占份额大还很难讲,毕竟很多人更愿意接受MS的平台,就像各国政府都在大力推LINUX已好长时间,但您能看到几个在PC机上真正使用LINUX的用户?据我观察,目前在嵌入式平台上,LINUX是叫得最响,但还是WinCE实际用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司,为降低成本而进行长远考虑; 二是微软亚洲研究院对我院WinCE课程的支持计划,我们也很希望将来我院能有同学通过微软的面试去实习。WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之一,他们很需要精通WinCE的人。
总结关于嵌入式操作系统类课程,若您觉得自己功底较深且能钻研下去,则可去学嵌入式Linux;若您觉得自己VC++功底较好且想短平快地学嵌入式开发,则我院的WinCE课程是最好的选择。
(3) 嵌入式开发的其它相关软件课程
搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。主要的相关领域包括:
A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。为此,我院已预订了一位能开设数字图像处理课程的博士。
B、通信协议及编程技术:这包括传统的TCP/IP协议和热门的无线通信协议。首先,大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握 TCP/IP协议及其编程,这是需首要掌握的基本技术;其次,无线通信是目前的大趋势,所以掌握无线通信协议及编程也是是很重要的。无结通信协议包括无线局域网通信协议802.11系列,Bluetooth,以及移动通信(如GPRS、GSM、CDMA等)。
C、网络与信息安全技术:如加密技术,数字证书CA等。我院有这方面的选修课。
D、DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。
(4)嵌入式开发的相关硬件基础
对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C++、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。
我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带 OS,而现在很多嵌入式应用越来越复杂,以至不得不引入嵌入式操作系统。另外,为追求更高速的信号处理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方面的人目前市场上也很缺。
(5) 题外话
另外,能写驱动程序的人目前是非常紧缺的(驱动程序也可归于嵌入式范畴),包括桌面Windows中的DDK开发环境和WDM驱动程序。公司每时每刻都要推出新产品,每一个新产品出来了,要能被操作系统所使用,是必须写驱动程序的。写驱动程序就必须掌握操作系统(如Windows或Linux)的内部工作原理,还涉及到少量硬件知识,难度较大,所以这方面的人很难找。想成为高手的同学,也可从驱动程序方面获得突破。我可说一下自己的经历,三年前我曾短暂地在一家公司写过WinCE驱动程序(正是因为知道这方面的人紧缺,所以才要做这方面的事),尽管那以前从未做过驱动程序,应聘那个职位时正是看准了公司是很难招聘到这方面的人,既然都找不到人,驱动还得有人做,这正是可能有机会切入这一领域的大好机会。面试时大讲自己写过多少万行汇编程序,对计算机工作原理如何清楚,简历中又写着我曾阅读完两本关于Windows Driver Model的两本英文原版书,写过几个小型的驱动程序练习程序(其实根本没写过,我们的同学将来千万不要像我这样,早练就些过硬功夫,就不至于沦落到我这等地步,就不用像我那样去“欺骗”公司了,我这是一个典型的反面教材),居然一切都PASS(当然最重要的是笔试和面试问题还说得过去),这只能说明这一领域找人的困难程度。公司本就未指望找到搞过驱动的人,找个有相关基础的人就算不错了。做了以后,发现也并不是怎样难的。其实搞驱动程序的工作是很舒服的,搞完一个版本就会空一段时间,只有等公司新的芯片推出或新的OS出现后,才需要再去开发新一版驱动,那时有将近一个月时间空闲着在等WinCE .NET Beta版推出,准备将驱动程序升级到CE .NET上,现在在软件学院工作整日忙,无限怀念那段悠闲时光。
很巧合,最近本人无意中再次体会到了嵌入式的迷人之处。上周我那用了3年的手机终于不能WORK了。此次更新,除要求有手机常见功能外,最好有MP3功能(现在很多英语听力都有MP3文件),最好有英汉词典,最好还能读WORD文档。最后选了个满足以上条件的最便宜的手机DOPOD 515(斩了我2.2K,但想想这也算自己对嵌入式事业的支持,这样便也想开了),算得上最低档的智能手机了。回来一查,手机的about显示,本手机 Processor是ARM,其OS是MS Smartphone(即WinCE .NET 4.2),这么巧合,简直可做为学习嵌入式课程的产品案例了(等我们的WinCE课程开得有声有色后,希望能从微软研究院搞些Smartphone来开发开发)。有OS的手机果然了得,金山词霸、WORD、EXCEL、REGEDIT等居然都有smartphone版的,PC上的MP3、DOC等居然在 download时都可被自动转换成smartphone格式,真是爽。完全可用Windows CE自己开发一些需要的程序download到自己的手机上。现在市面销售PDA智能手机火爆,MS总是财源滚滚。但我已发现国产的ARM+LINUX手机出现在市面上,价格只1.2K。
在GOOGLE网上能搜索太多的关于嵌入式系统的讨论了,我刚发现一个http://www.embyte.com非常不错,有很多有经验者谈自己的体会,投入到其中的论坛中,你会切身感到嵌入式学习的热潮。
要么走ARM+WinCE,要么走ARM+LINUX,要么走ARM+VXWORKS。每个搞嵌入式的人都可选一条路,条条大路通罗马。
声明:以上对嵌入式的解释估计有错,任课教师最有权威性,一切以任课教师所讲为准。

posted @ 2006-11-08 13:51 易来 阅读(2268) 评论(3) 编辑

一、关于企业计算方向
企业计算(Enterprise Computing)是稍时髦较好听的名词,主要是指企业信息系统,如ERP软件(企业资源规划)、CRM软件(客户关系管理)、SCM软件(供应链管理,即物流软件),银行证券软件,财务软件,电子商务/政务(包括各种网站),数据仓库,数据挖掘,商务智能等企业信息管理系统.
企业计算领域对人才的需求显然永远是数量最大的,因为这是计算机应用最多的领域. 搞这方面的好处是:
(1)人才需求量极大,从事企业计算的公司在IT企业中占了大多数。除非在专业上一无特长,一般在这一领域总能找到工作。
(2)这方面的入门门槛相对较低(如果你的软件功底不是很深,可考虑这一领域)
(3)这方面的大公司较多,大公司要赚大钱,所以多将精力花在企业计算业务上.如与我院同学目前实习的CitiCorp、HP、IBM、SAP、NEC等公司都属这一领域的公司。如果将来想到大公司找一份相对稳定的工作,从事这方面机会要大很多。
但从事这一领域的缺点也是明显的:
由于这方面的入门门槛相对较低,虽然这方面的人才需求量是最大的,但将来竞争对手会较多。您会发现,即使他原不是学IT专业的人,也许他突击几个月后,做得照样像模像样。特别是当您年纪渐大后,您可能会发现,后面的年轻人可能很容易追上你的水平。如果您将来到国外去工作,你可能会发现从事这领域的人更多且高手如云。当然,若您在这一领域经过多年企业经验,达到较高境界(如能设计软件架构),则身价永远是高的。国内在这方面人才领域的主要问题是,有经验的高手太少,皮毛了解的人太多。
从事企业计算领域,最重要的技能型技术课程是(1)J2EE架构与程序设计(2)大型数据库系统(如Oracle)(3)基于UML的系统分析与设计。如果说还有什么重要的技能,还可将XML与Web Service技术包含进来,若您在这几个领域掌握较好,则不愁找不到工作。其中尤其以J2EE最为重要,目前J2EE已成为企业计算软件开发的最主要平台,也是我院的最重要课程之一。尽管该课程只能作为选修课,我们希望我院同学无论将来想从事何种方向,都应学一下J2EE课程,至少可为将来找工作备一手关键功夫。包括想从事嵌入式或其它领域的同学,也是很有必要学一下J2EE的,毕竟J2EE是目前最重要的平台之一,即使您将来不想从事企业计算领域,了解一下J2EE也是必要的,就像一门常识课程一样。其它与企业计算关系较密切的技能还包括:Dot Net架构与程序设计、软件测试技术、软件配置管理,该领域较高层次的技能包括数据仓库技术、构件与中间件技术、设计模式等。像通信协议分析与网络程序设计,Unix系统管理等也属有些关系的课程。02级本学期开设的企业计算课程不多,主要是J2EE、Oracle/MSSQL、UML等企业计算领域的最关键技能型技术课程都已学完了(但不知有多少同学学得较深入,将来找工作时会用到这些技能)。下学期我们将在该领域中拟再开设XML与Web Service技术、软件配置管理等课程。本学期开设的企业计算领域课程的确不多,但您应在空余时间将J2EE,DB、UML等技术再深入地钻研下去,一定要在某个领域有深入的掌握。只是跟着听课,即使学了再多课程也是没用处的,自己钻研下去才是最重要的。只一个J2EE便是博大精深的,足够你啃下去的,钻研下去,您会发现你还要学的相关知识还有很多(包括EJB、XML、Web Service、Design Pattern等)。
虽然从事企业计算的人才很多,但以下企业计算领域无论国内外都属稀缺人才:
(1)掌握大型ERP系统,主要是SAP系统,包括SAP Basis(系统管理)或SAP ABAP(编程)或SAP功能模块实施(特别是财务模块FI的实施)。SAP顾问身价是最高的,而且非常难找。其它大型ERP系统,掌握 PeopleSoft、Oracle Finacial、J.D.Edward、Siebel等大型ERP软件系统的人也很值钱。这方面的人之所以身价奇高,主要是因为这些软件很专业,特别大,很难有D版可学习,只有特大企业(如世界500强,90%以上使用SAP)才用得起,而且必须有实际工作经验才能掌握。如果是一个个人人都很容易有机会接触的软件,那么这方面的人通常就不会稀缺。如果大家将来有机会接触学习这些大型ERP软件系统的机会,建议毫不犹豫地抓住,那将捧上一辈的金饭碗。在国外,会SAP的人特别值钱。物以稀为贵,这永远是颠扑不破的真理。SAP的价值不仅是因为他是一个ERP软件,而是其中体现的现代企业管理理念(如根据订货需求自动安排原料采购和生产计划等)。一般500强公司绝不会像国内很多企业那样,用J2EE从头设计企业的 ERP系统(即将是怎样的人力投入,而且设计出来的系统怎么可能是完善的?),一定都会使用SAP这样成熟的ERP软件。用不起SAP的公司可能会用 J2EE设计ERP系统。
(2)掌握IBM大型机技术的人,如S/390主机,MVS操作系统,JCL作业控制语言,COBOL程序设计语言,DB2关系数据库或IMS层次数据库,CISC中间件交易控制系统等IBM大型机专用技术。国内五大银行,以及国外绝大多数银行的后台系统使用的都是以上平台。IBM大型机号称永不宕机而且平台相对封闭(这样最安全),所以这些要求在24*7环境中连续运行的关键应用(术语叫mission critical applications)都采用IBM大型机。这方面的人才之所以稀缺,是因为会大型机的人都是老人(90年代以前搞IT的人),全世界新毕业的IT毕业生不可能再去学IBM大型机(这是一种相对"古老"的技术),没有新人补上,而银行的系统必须维持下去而且银行还要不断开发新业务(如新的存款品种), 虽然对IBM大型机人才的绝对需求量不很大,但相对恒定,银行到哪里找这方面的新人,很难找到. 若好找,花旗软件也不会花那么大的代价去培训我们的实习同学了(去年培训20多个人,听说公司就花了数十万元培训费). 如果您将来到国外找工作,会IBM大型机可能是最好找工作的领域之一了,而且保证找的都是大银行等好工作,我以前教过的计算机专业90-94级的一些同学,凡是毕业后从事大型机开发的,现多在国外一些很好的公司工作(有几位同学在各国各公司跳来跳去,简直如履平地). 其实我觉得我们最幸福的同学就是在花旗软件做IBM大型机银行软件的同学,这样的机会太难得了.我院00级2+2班一位同学,当初放弃保研,看准在花旗软件做大型机并且非常努力,还未毕业,公司便派她到国外参加一个项目的开发,成了项目骨干,我觉得她当初选择是完全正确的(01级一位女同学刚刚也自愿放弃了保研机会去花旗做大型机,我们祝愿她将来也能有好的前景。其实像花旗软件主动安排并鼓励员工读在职研究生,这样开明的公司目前并不多的,在职读研也是一种不错的选择,又不会失去自己喜欢的实习工作机会,能兼顾),读书的最终目地还是为了工作. 如果您将来在国外找工作,根本没人管您是什么文凭,国外企业绝不会花冤枉钱,只会招有领域工作经验能立即上手的人,用最少的钱在限定的时间完成项目. 而在国内,因为人力成本较低,公司招聘一很多高学历的人才,尽管可能根本用不到这么高的学历,但国内的人力太便宜了,为什么不高消费一下人才呢?这样公司的门面还要好看些。
.(3)其它如掌握数据仓库技术的人在国内也很少. 目前最主流的数据仓库平台应是ORACLE的数据仓库工具. 在国外,会一些特殊数据仓库的人,如NCR/TEREDATA的人非常难找.
我们的同学现在年纪都很轻,年轻人充满热情,喜欢追逐一些热门技术,这当然正确的,毕竟学习SAP和大型机的机会毕竟不多,毕业时先能找到一份工作是重要的. 但我相信随着年纪的增长,大家将来慢慢都会思考的,掌握一项竞争对手较少的绝技的重要性,将来如果自己到国外工作什么技术最好找工作(对搞软件的人到国外工作或移民是最容易的,也许您现在不想,但我相信工作多年以后,很大一部分同学可能想到国外闯荡一下),你要考虑你今后一生的出路,什么样的绝技是最稳定最轻松最高收入的. 搞软件的人,当年纪大些时,您可能更向住像搞医学人的那样能更多靠经验吃饭,而不须整天像年轻人那样不得不去追逐不断出现的软件新技术,这个时候也许您也许会发现,如果您在SAP或大型机等方面有些绝技,您会有很大优势,因为这些较偏的领域其技术变化是相对很缓慢的.
我还记得在2000年时我曾在业余时间与一位德国人合作面试一些IT人才到德国去,那时德方各公司发来的需求有很多是SAP和IBM大型机的,我们在众多应聘者中最后也未找到一个在这方面有经验,甚至是有一点经验的. 相反,掌握流行技术的人因太多而不很值钱.
我们的同学将来找工作时,不仅要盯着国内市场,还要有一种放眼全球的眼光,对搞软件的人您将来完全可能到其它国家去工作. 尤其是在欧美、***、新加坡等国家,对SAP(包括IBM大型机)人才的需求是很大的。毕竟比同学见得多些,提醒同学将来多留意有学习这些绝技的机会,一旦有机会建议当仁不让. 国内的人才市场可访问www.51job.com,国外的IT人才需求可访问www.hotjobs.comwww.workopolis.comwww.monster.com等著名网站。应经常访问这些网站,以了解市场对人才的具体需求,早做准备。
以上对企业计算领域的观点,供大家参考.虽然观点未必正确,但确是直言不讳. 总之,每个人的脑袋都长在自己脖子上,每个人都应有自己的判断.
还要注意,我以上纯粹是从将来就业的角度谈问题. 如果您将来准备到国外读书,则应重视基础课,像C,Assembly,OOP,Discrete Math,Data Structure,Opeating System,Database Principle,Network,Software Engineering,Compiler,Digital Circuit,Computer Graphics,Computer Component and Architecture等基础课,在国外大学IT专业中一般都能找到相同课程,若国内学过,到国外读书时一般可申请免修一部分. 但我也想提醒同学,如果您将来毕业时万一申请国外大学不成,不得不去找工作时,若只将精力花在这些IT专业学生都会的基础课上(传统IT教育模式), 未掌握一些像J2EE等技能型技术,是不容易找到一份工作的,我们已有同学有这样的教训。从找工作的角度讲,企业关心的不是您学过什么课程,而是关心您能做什么,有什么技能,能做什么项目。


 

posted @ 2006-11-08 13:49 易来 阅读(1870) 评论(4) 编辑