日志分类:默认

乔布斯与博客撰稿人辩论 称苹果做法动机纯洁

2010年05月17日 7:46 上午  |  分类:默认

     北京时间5月16日早间消息,据国外媒体报道,美国科技博客ValleyWag撰稿人里安·泰特(Ryan Tate)周六通过电子邮件与苹果CEO史蒂夫·乔布斯(Steve Jobs)就创新和开放等问题进行了激烈的辩论。乔布斯在邮件中表示,苹果做法的动机是纯洁的。

     与此前曝光苹果下一代iPhone原型机的科技博客Gizmodo一样,ValleyWag也是Gawker Media旗下博客。以下为泰特和乔布斯邮件往来的部分内容:

泰特:

     如果鲍勃·迪伦(Bob Dylan)现在只有20岁,那么他对你们公司会有什么样的感觉?他是否会认为iPad完全与变革无关?变革意味着自由。

乔布斯:

     是的。是保护你的隐私数据不被程序窃取的自由,是使你的电池不被程序破坏的自由,是使你免于色情内容的自由。这些正在改变,而PC行业的传统人士会认为他们的时代已经逝去。就是这样。

泰特:

 当微软试图让所有人都采用Win32应用程序接口(API)编写程序时,这是否是技术问题?Adobe这样做,你是否感到高兴?

你们有机会设定新平台未来的发展方向,包括新的手机和平板电脑平台,这是未来的平台。看见与以往一样的报复性做法,我感到很失望。

或许我的说法有一些尖刻,因为我不认为这是技术问题。你们在强加你们的道德准则,例如在色情内容方面,在“商业机密”方面,在技术纯洁性方面。苹果自身使用翻译层和中间API。Objective C和Windows版iTunes是这一方面的尝试。任何编写过代码的人都知道中间API的强大功能和重要性。

我不希望苹果的政策影响我同事的工作。我认为,法庭对此将有最终的解释。我对此感到担忧。

乔布斯

你获得的信息不准确。没有人去影响其他人。你相信了许多错误的博客报道。

微软有权在他们的平台上施加任何规则。如果人们不喜欢,他们可以去其他平台上编程,一些人是这样做的。他们也可以收购其他平台,也有人这样做。

对我们来说,我们只是尝试带来并维护我们所希望的用户体验。你可以不同意我们的做法,但我们的动机是纯洁的。

另一方面,你做了什么伟大的工作?你是否创造了什么,还是只是批评他人的工作,并贬低他们的动机?

 

专访林昊:一步一步了解Java模块化

2010年05月14日 7:47 上午  |  分类:默认

     很多Java开发者对模块化编程仍然接触不多,对Java的模块化的进展也不甚了解。多方观望,2010年将是Java模块化的一年,因此51CTO编辑希望能在这一年中让更多的开发者了解模块化编程的概念,它的学习、实现方式以及它的好处。为此,我们请来了一位国内的OSGi布道者为大家进行一次简单的普及介绍。

  有请China OSGi User Group Director,淘宝网平台架构部架构师——林昊(@BlueDavy)。林昊是《OSGi原理与最佳实践》一书的作者。

  此次采访模式为邮件采访,林昊对51CTO编辑提出的7个问题一一进行了回复。内容如下:

  1. 模块的实现和传统编程方法有何不同?开发者需要学习哪些知识(比如版本控制、依赖性管理、规范的接口设计等)?

  林昊:模块的实现和传统的编程方法确实有一些差别,主要体现在模块之间类访问的隔离、版本选择这两个方面。如希望更好的设计模块化的系统,开发者需要学习ClassLoader机制、模块之间类的交互方法(这包括了模块怎么样对外提供可访问的package、怎么样访问其他模块提供的package、如何选择适合版本的package等)。

  2. 对模块化的形容,我们往往使用“高内聚”,“低耦合/松散耦合”这样的用语。您是如何理解这两个概念的?

  林昊:高内聚、低耦合更多程度是指让模块之间的依赖是清晰的,内聚体现在内部对功能实现的封装,而低耦合体现在模块对外提供的接口是可控的。在模块化之前,在Java体系中更多的是通过public、protected、private这样的作用域来保证依赖清晰(参考阅读:模块化概念解惑);但事实证明,这样的方法来保证不是非常有效。而在模块化的体系中,则会有明确的模块之间接口暴露以及依赖的定义,因此能够更好的实现高内聚和低耦合。

  3. 模块化编程的好处有哪些?它解决了原来那种紧密耦合式编程中存在的哪些问题?

  林昊:模块化编程最大的好处在于有效的控制和避免了模块被外部误用。其他方面的好处在于各模块可以方便的做到引用自己所需要依赖的包,避免产生包冲突现象,对于现有java体系而言,另外一个好处则是可以做到多版本的共存。

  4. 您觉得模块化编程最大的难点在哪里?在您的模块化开发过程中,理清逻辑和层次所花的时间和编写代码花费的时间大致是怎样的比例?

  林昊:模块化编程最大的难点一方面是设计方面的挑战,在没有实际隔离情况下模块化的设计其实并不会真正做到有效的模块隔离的设计;另一方面是在开发过程中,以前的开发习惯都需要改变,例如以前需要依赖其他模块时,可以采用直接依赖工程或依赖jar的方式,但在模块化的系统中则不行。

  在实际的模块化开发过程中,更多的时间仍然会花费在设计阶段。

  5. 我们来谈谈OSGi规范。OSGi模块化规范有什么特点?

  林昊:OSGi是Java中目前唯一的一个模块化、动态化的规范。在模块化方面OSGi联盟已经研究了很多年了,因此OSGi规范对于模块的物理隔离、模块的交互、多版本这些方面都有了非常完善的机制,并且也得到了现在几乎所有的App Server厂商或开源社区的认可。

  6. 虽然OSGi已经是有十多年发展的成熟的模块化标准,但Sun在对Java进行模块化的时候却选择采用JSR 294,并在Java 7当中开展Jigsaw项目。您对此有什么看法?

  林昊:JCP在关于Java 7纳入模块化后到底采用什么标准争论了非常久,JSR 294是个研讨了多年的规范,但最后不了了之;Sun现在另起炉灶做Jigsaw,但其实并没有得到多大的拥护,各App Server仍然采用OSGi作为其基础平台就是最好的证明(参考阅读:JSR 294被叫停 应用服务器押宝OSGi)。可以说现在OSGi已经是Java领域模块化、动态化的事实性标准。

  7. 您认为理想的Java模块化标准应该具备怎样的特点?您对Java模块化的发展有怎样的期待?

  林昊:Java模块化标准应有明确的模块定义、模块之间隔离机制的定义、模块交互机制的定义,个人认为在模块化这一方面OSGi已经做到非常好了,当然,如果是语言级能支持就更完美了。

  对于Java模块化的发展而言,还是希望Sun能放开胸怀,采用OSGi作为Java模块化的实现基础,并纳入语言级中。

一个学生成绩的管理系统代码

2010年05月11日 11:27 上午  |  分类:默认

NetBeans5.5编写
Struts1.2.8 + Hibernate3.1 + MYSQL5.0

数据库结构为:
DROP DATABASE IF EXISTS ENOVA;
CREATE DATABASE ENOVA;
USE ENOVA;

CREATE TABLE STUDENT (
    ID int(11) NOT NULL auto_increment,
    NUMBER char(15) NOT NULL UNIQUE,
    NAME varchar(4) NOT NULL ,
    SEX varchar(1) default NULL,
    NATION varchar(10) default NULL,
    ENROLL_YEAR YEAR(4) NOT NULL ,
    BIRTHDAY date default NULL,
    BIRTH_PLACE varchar(50) default NULL,
    PASSWORD char(15) NOT NULL ,
    CLASS_ID int(11) NOT NULL ,
    PRIMARY KEY  (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE TEACHER(
    ID int(11) NOT NULL auto_increment,
    NAME varchar(4) default NULL ,
    SEX varchar(1) default NULL,
    USERNAME char(15) NOT NULL UNIQUE ,
    PASSWORD char(15) NOT NULL ,
    PRIMARY KEY  (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE DEPARTMENT(
    ID int(11) NOT NULL auto_increment,
    NAME varchar(20) NOT NULL,
    PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE SPECIAL(
    ID int(11) NOT NULL auto_increment,
    NAME varchar(20) NOT NULL,
    DEPARTMENT_ID int(11) NOT NULL ,
    PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE CLASS(
    ID int(11) NOT NULL auto_increment,
    NAME varchar(20) NOT NULL,
    TEACHER_ID int(11) NOT NULL ,
    SPECIAL_ID int(11) NOT NULL ,
    YEAR year(4) NOT NULL ,
    PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE COURSE(
    ID int(11) NOT NULL auto_increment,
    NAME varchar(20) NOT NULL,
    TEACHER_ID int(11) NOT NULL ,
    HOUR int(4) default NULL,
    CREDIT float(2,1) NOT NULL ,
    YEAR year(4) default NULL,
    TERM varchar(1) default NULL,
    EXAM_MODE varchar(2) default NULL,
    EXAM_TYPE varchar(2) default NULL,
    TYPE varchar(2) default NULL,
    PRIMARY KEY  (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE SCORE(
    COURSE_ID int(11) NOT NULL ,
    STUDENT_ID int(11) NOT NULL ,
    VALUE int(4) default NULL ,
    DATE date NOT NULL ,
    PRIMARY KEY  (STUDENT_ID,COURSE_ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE ROOT(
    ID int(11) NOT NULL auto_increment,
    USERNAME char(15) NOT NULL UNIQUE ,
    PASSWORD char(15) NOT NULL ,
    PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE CLASS_COURSE(
    CLASS_ID int(11) NOT NULL ,
    COURSE_ID int(11) NOT NULL ,
    PRIMARY KEY (CLASS_ID,COURSE_ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

alter table STUDENT add constraint FK_STUDENT_CLASS
      foreign key(CLASS_ID) references CLASS(ID) on delete cascade;

alter table SPECIAL add constraint FK_SPECIAL_DEPARTMENT
      foreign key(DEPARTMENT_ID) references DEPARTMENT(ID) on delete cascade;

alter table CLASS add constraint FK_CLASS_TEACHER
      foreign key(TEACHER_ID) references TEACHER(ID) on delete cascade;

alter table CLASS add constraint FK_CLASS_SPECIAL
      foreign key(SPECIAL_ID) references SPECIAL(ID) on delete cascade;

alter table SCORE add constraint FK_SCORE_COURSE
      foreign key(COURSE_ID) references COURSE(ID) on delete cascade;

alter table SCORE add constraint FK_SCORE_SUTDENT
      foreign key(STUDENT_ID) references STUDENT(ID) on delete cascade;

alter table CLASS_COURSE add constraint FK_CC_CLASS
      foreign key(CLASS_ID) references CLASS(ID) on delete cascade;

alter table CLASS_COURSE add constraint FK_CC_COURSE
      foreign key(COURSE_ID) references COURSE(ID) on delete cascade;

alter table COURSE add constraint FK_COURSE_TEACHER
      foreign key(TEACHER_ID) references TEACHER(ID) on delete cascade;

insert into ROOT(USERNAME,PASSWORD) values(’vlinux’,'lovefs’);

create trigger CLASS_COURSE_DELETE BEFORE DELETE ON CLASS_COURSE
       FOR EACH ROW DELETE FROM SCORE WHERE COURSE_ID=old.COURSE_ID
           and STUDENT_ID in (SELECT ID FROM STUDENT WHERE CLASS_ID=old.CLASS_ID);

grant all on ENOVA.* to enova@localhost identified by “enova” with grant option;

数据结构文件可以从/enova/src/enova/ENOVA_DB.SQL中找到

管理员初始帐号/密码为:vlinux/lovefs

关于java的AWT的基础应用

2010年05月11日 11:17 上午  |  分类:默认

~~~~~~~
 public static void main(String[] args) {
  Frame fm=new Frame(”第一个小程序”);//创建一个Frame的容器
  //fm.setSize(400, 400);//设置容器的大小
  //fm.setLocation(300, 400);//设置容器在屏幕上面的位置
  fm.setBounds(400, 300, 400, 300);//综合两个设置
  /*Image ig=new Image();
  fm.setIconImage(”");*/
  fm.setVisible(true);//让容器可显示
 }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//创建一个frame容 器中包括另一个panel容器
 public static void main(String[] args) {
  //创建一个frame容器
  Frame f=new Frame(”第二个小程序”);
  //创建一个Panel容器
  Panel pe=new Panel();
       //设置frame的大小和位置
  f.setBounds(400,300, 300, 300);
  //设置frame的背景色
  f.setBackground(Color.BLUE);
  //取消默认布局管理器
  f.setLayout(null);
  //设置panel的大小和位置
  pe.setBounds(50, 40, 80, 80);
  //设置panel的背景颜色,如果不设置,将上面的frame的颜色一样
  pe.setBackground(Color.black);
  //将panel增加到frame中
  f.add(pe);
  //将frame设为可显示的
  f.setVisible(true);
 }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//流式布局的控制
 public static void main(String[] args) {
  //创建一个frame容器
  Frame f=new Frame(”第三个小程序”);
  //创建 三个按钮
  Button button1=new Button(”打开”);
  Button button2=new Button(”OK”);
  Button button3=new Button(”Close”);
  //将frame的布局设置为流式布局,里面的对齐方式,里面有数字的有行距离和列距离
  f.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));
  //将按钮增加到frame中
  f.add(button1);
  f.add(button2);
  f.add(button3);
  f.setSize(100, 200);
  f.setLocation(200, 200);
  f.setVisible(true);
 }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//用cardLoyout的方式,设计四个按钮,滚动显示
 public static void main(String[] args) {
  Frame f=new Frame(”第五个小程序”);
  CardLayout cl=new CardLayout();//创建一个卡片的布局
  f.setLayout(cl);//将这布局增加到Frame
  Button[] b=new Button[4];
  for(int i=0;i<4;i++){
   b[i]=new Button(”第”+i+”页”);
   f.add(b[i],”page”+i);
  }
  //设置按钮的颜色
       b[0].setBackground(Color.cyan);
       b[1].setBackground(Color.red);
       b[2].setBackground(Color.GRAY);
       b[3].setBackground(Color.BLUE);
       f.setLocation(300, 300);
       f.pack();
       f.setVisible(true);
       f.setResizable(false);
       while(true){
        try {
   Thread.sleep(3000);
  } catch (InterruptedException e) {
 
   e.printStackTrace();
  }
  cl.next(f);//显示容器里的下一张卡片
       }
 }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//BorderLayout是采用的是东西南北中的方式 布局
 //North北South南 West西East东 Center中
 public static void main(String[] args) {
  //创建一个frame容器
  Frame f=new Frame(”第四个小程序”);
  Button b1=new Button(”E”);
  Button b2=new Button(”N”);
  Button b3=new Button(”W”);
  Button b4=new Button(”S”);
  Button b5=new Button(”C”);
  Button b6=new Button(”Cn”);
  //如果不指定区域将全部显示到Center中
  f.add(b1, “East”);
  f.add(b2,”North”);
  f.add(b6);
  f.add(b3,”West”);
  f.add(b4,”South”);
  f.add(b5,”Center”);
  f.setBounds(300,200, 400, 400);
  f.setVisible(true);
 }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~“
//用GridLayout的应用,以指定的行式来显示
 public static void main(String[] args) {
  //创建一个frame容器
  Frame f=new Frame(”第四个小程序”);
  Button b1=new Button(”E”);
  Button b2=new Button(”N”);
  Button b3=new Button(”W”);
  Button b4=new Button(”S”);
  Button b5=new Button(”C”);
  Button b6=new Button(”Cn”);
  f.setLayout(new GridLayout(2,3));
  f.add(b1);
  f.add(b2);
  f.add(b3);
  f.add(b4);
  f.add(b5);
  f.add(b6);
  f.pack();//设置刚才和这个按钮的原始大小
  //f.setSize(200, 200);//和面上的方式一样
  f.setResizable(false);//设置用户不可以改变这个窗口的大小
  f.setVisible(true);
 
 }

学习计算机的十四个领域

2010年05月10日 12:46 下午  |  分类:默认

CC2001把计算学科分成14个主要领域:
. CC2001推荐的14门主干课程
(1) 离散结构DS(37/60)《离散数学》
(2) 程序设计原理PF(65/60)《C++语言程序设计》《面向对象程序设计》
(3) 算法与数据结构AL(31/60)《计算方法》《数据结构》
(4) 程序设计基础PL(5/35)《编译原理》
(5) 计算机体系结构AR(33/72)《微机原理》《计算机体系结构》
(6) 操作系统OS(22/60)《操作系统》
(7) 人机交互HC(3/60)《Windows编程》
(8) 图形、可视化、多媒体GR(选修/60)《图形设计》《多媒体技术》
(9) 智能系统IS(10/34)《人工智能》
(10) 信息系统IM(10/60)《数据库系统》《管理信息系统》
(11) 网络计算NC(15/120)《计算机网络》《计算机网络工程》
(12) 软件工程SE(30/30)《软件工程》
(13) 计算科学CN(选修/60)《计算机导论》
(14) 社会、伦理、职业问题SP(16/60)《法律》《公共关系》
                 ——– 《ACM/IEEE 2001 计算机教程》

一.DS. Discrete Structures                              

DS1. Functions, relations, and sets
DS2. Basic logic
DS3. Proof techniques
DS4. Basics of counting
DS5. Graphs and trees
DS6. Discrete probability

介绍:

主要内容包括集合论,数理逻辑,近世代数,图论以及组合数学等.

该领域与计算学科各主领域有着紧密的联系,CC2001为了强调它的重要性,特意将它列为计算学科
的第一个主领域.该主领域以”抽象”和”理论”两个学科形态出现在计算学科中,它为计算学科各分
支领域解决其基本问题提供了强有力的数学工具.
二.PF. Programming Fundamentals

PF1. Fundamental programming constructs
PF2. Algorithms and problem-solving
PF3. Object-oriented programming
PF4. Fundamental data structures
PF5. Recursion
PF6. Event-driven and concurrent programming
PF7. Using APIs

介绍:

主要内容包括程序设计结构,算法,问题求解和数据结构等.
它考虑的是如何对问题进行抽象.它属于学科抽象形态方面的内容,
并为计算学科各分支领域基本问题的感性认识(抽象)提供方法.

基本问题主要包括:
1.对给定的问题如何进行有效的描述并给出算法?
2.如何正确选择数据结构?
3.如何进行设计,编码,测试和调试程序?

三.AL. Algorithms and Complexity 

AL1. Basic algorithmic analysis
AL2. Algorithmic strategies 
AL3. Fundamental computing algorithms 
AL4. Distributed algorithms 
AL5. Basic computability theory 
AL6. The complexity classes P and NP
AL7. Automata theory
AL8. Advanced algorithmic analysis
AL9. Cryptographic algorithms
AL10. Geometric algorithms
AL11. Parallel algorithms
介绍:

主要内容包括算法的复杂度分析,典型的算法策略,分布式算法,并行算法,可计算理论,
P类和NP类问题,自动机理论,密码算法以及几何算法等.

1.抽象形态的主要内容:包括算法分析,算法策略(如蛮干算法,贪婪算法,启发式算法,分治法等),
并行和分布式算法等.
2.理论形态的主要内容:包括可计算性理论,计算复杂性理论,P和NP类问题,并行计算理论,密码学等. 
3.设计形态的主要内容:包括对重要问题类的算法的选择,实现和测试,对通用算法的实现和测试,
(如哈希表,图和树的实现与测试),对并行和分布式算法的实现和测试,对组合问题启发式算法的
大量实验测试,密码协议等.

基本问题主要包括:
1.对于给定的问题类,最好的算法是什么?要求的存储空间和计算时间有多少?空间和时间如何折衷?
2.访问数据的最好方法是什么?
3.算法最好和最坏的情况是什么?
4.算法的平均性能如何?
5.算法的通用性如何?
四.PL. Programming Languages

PL1. Overview of programming languages
PL2. Fundamental issues in language design
PL3. Virtual machines 
PL4. Introduction to language translation
PL5. Language translation systems
PL6. Type systems
PL7. Models of execution control
PL8. Declaration, modularity, and storage management
PL9. Programming language semantics
PL10. Programming paradigms
PL11. Language-based constructs for parallelism

介绍:

主要内容包括程序设计模式,虚拟机,类型系统,执行控制模型,语言翻译系统,程序设计语言的语义学,
基于语言的并行构件等.

抽象形态的主要内容:包括基于语法和动态语义模型的语言分类(如静态型,动态型,函数式,
过程式,面向对象的,逻辑,规格说明,报文传递和数据流),按照目标应用领域的语言分类(如商业数据处理,
仿真,表处理和图形),程序结构的主要语法和语义模型的分类(如过程分层,函数合成,抽象数据类型和
通信的并行处理),语言的每一种主要类型的抽象实现模型,词法分析,编译,解释和代码优化的方法,
词法分析器,扫描器,编译器组件和编译器的自动生成方法等.

理论形态的主要内容:包括形式语言和自动机,图灵机(过程式语言的基础),POST系统(字符串处理语言的基础),
lamda-演算(函数式语言的基础),形式语义学,谓词逻辑,时态逻辑,近世代数等. 

设计形态的主要内容:包括把一个特殊的抽象机器(语法)和语义结合在一起形成的统一的可实现的整体特定语言
(如过程式的(COBOL,FORTURN,ALGOL,Pascal,Ada,C),函数式的(LISP),数据流的(SISAL,VAL),面向对象的(Smalltalk,CLU,C++),逻辑的(Prolog),字符串(SNOBOL)和并发(CSP,Concurrent Pascal,Modula 2)),特定类型
语言的指定实现方法,程序设计环境,词法分析器和扫描器的产生器(如YACC,LEX),编译器产生器,语法和语义
检查,成型,调试和追踪程序,程序设计语言方法在文件处理方面的应用(如制表,图,化学公式),统计处理等.

基本问题主要包括:
1.语言(数据类型,操作,控制结构,引进新类型和操作的机制)表示的虚拟机的可能组织结构是什么?
2.语言如何定义机器?机器如何定义语言?
3.什么样的表示法(语义)可以有效地用于描述计算机应该做什么?

五.AR. Architecture and Organization

AR1. Digital logic and digital systems 
AR2. Machine level representation of data 
AR3. Assembly level machine organization 
AR4. Memory system organization and architecture 
AR5. Interfacing and communication 
AR6. Functional organization 
AR7. Multiprocessing and alternative architectures 
AR8. Performance enhancements
AR9. Architecture for networks and distributed systems

介绍:

主要内容包括数字逻辑,数据的机器表示,汇编级机器组织,存储技术,接口和通信,
多道处理和预备体系结构,性能优化,网络和分布式系统的体系结构等.

抽象形态的主要内容:包括布尔代数模型,基本组件合成系统的通用方法,电路模型
和在有限领域内计算算术函数的有限状态机,数据路径和控制结构模型,不同的模型
和工作负载的优化指令集,硬件可靠性(如冗余,错误检测,恢复与测试),VLSI装置设计
中的空间,时间和组织的折衷,不同的计算模型的机器组织(如时序的,数据流,表处理,
阵列处理,向量处理和报文传递),分级设计的确定,即系统级,程序级,指令级,寄存器级
和门级等.

理论形态的主要内容:包括布尔代数,开关理论,编码理论,有限自动机理论等.

设计形态的主要内容:包括快速计算的硬件单元(如算术功能单元,高速缓冲存储器),
冯·诺依曼机(单指令顺序存储程序式计算机),RISC和CISC的实现,存储和记录信息,
以及检测与纠正错误的有效方法,对差错处理的具体方法(如恢复,诊断,重构和备份过程),
为VLSI电路设计的计算机辅助设计(CAD)系统和逻辑模拟,故障诊断,硅编译器等,在不同
计算模型上的机器实现(如数据流,树,LISP,超立方结构,向量和多处理器),超级计算机等.

基本问题主要包括:
1.实现处理器内存和机内通信的方法是什么?
2.如何设计和控制大型计算系统,而且使其令人相信,尽管存在错误和失败,但它仍然是按照我们的意图工作的?
3.哪种类型的体系结构能够有效地包含许多在一个计算中能够并行工作的处理元素?
4.如何度量性能?

六.OS. Operating Systems 

OS1. Overview of operating systems
OS2. Operating system principles
OS3. Concurrency 
OS4. Scheduling and dispatch
OS5. Memory management 
OS6. Device management
OS7. Security and protection
OS8. File systems
OS9. Real-time and embedded systems
OS10. Fault tolerance
OS11. System performance evaluation
OS12. Scripting

介绍:

主要内容包括操作系统的逻辑结构,并发处理,资源分配与调度,存储管理,设备管理,文件系统等 .

抽象形态的主要内容:包括不考虑物理细节(如面向进程而不是处理器,面向文件而不是磁盘)而对
同一类资源上进行操作的抽象原则,用户接口可以察觉的对象与内部计算机结构的绑定(Binding),
重要的子问题模型(如进程管理,内存管理,作业调度,两级存储管理,和性能分析),安全计算模型
(如访问控制和验证)等.

理论形态的主要内容:包括并发理论,调度理论(特别是处理机调度),程序行为和存储管理的理论,
(如存储分配的优化策略),性能模型化与分析等

设计形态的主要内容:包括分时系统,自动存储分配器,多级调度器,内存管理器,分层文件系统和
其他作为商业系统基础的重要系统组件,构建操作系统(如UNIX,DOS,Windows)的技术,建立实用程
序库的技术(如编辑器,文件形式程序,编译器,连接器和设备驱动器),文件和文件系统等内容.
基本问题主要包括:
1.在计算机系统操作的每一个级别上,可见的对象和允许进行的操作各是什么?
2.对于每一类资源,能够对其进行有效利用的最小操作集是什么?
3.如何组织接口才能使得用户只需与抽象的资源而非硬件的物理细节打交道?
4.作业调度,内存管理,通信,软件资源访问,并发任务间的通信以及可靠性与安全的控制策略是什么?
5.通过少数构造规则的重复使用进行系统功能扩展的原则是什么?

七.NC. Net-Centric Computing 

NC1. Introduction to net-centric computing 
NC2. Communication and networking 
NC3. Network security 
NC4. The web as an example of client-server computing
NC5. Building web applications
NC6. Network management
NC7. Compression and decompression
NC8. Multimedia data technologies
NC9. Wireless and mobile computing

介绍:

主要内容包括计算机网络的体系结构,网络安全,网络管理,无线和移动计算以及多媒体数据技术等.

抽象形态的主要内容:包括分布式计算模型(如C/S模式,合作时序进程,消息传递和远方过程调用),
组网(分层协议.命名.远程资源利用,帮助服务和局域网协议),网络安全模型(如通信,访问控制和验证)等.

理论形态的主要内容:包括数据通信理论,排队理论,密码学,协议的形式化验证等.

设计形态的主要内容:包括排队网络建模和实际系统性能评估的模拟程序包,网络体系结构
(如以太网.FDDI.令牌网),包含在TCP/IP中的协议技术,虚拟电路协议,Internet,实时会议等.

基本问题主要包括:
1.网络中的数据如何进行交换?
2.网络协议如何验证?
3.如何保证网络的安全?
4.分布式计算的性能如何评价?
5.分布式计算如何组织才能够使通过通信网连接在一起的自主计算机参加到一项计算中,而网络协议,
主机地址,带宽和资源则具有透明性?
八.HC. Human-Computer Interaction

HC1. Foundations of human-computer interaction
HC2. Human-centered software evaluation
HC3. Human-centered software development
HC4. Graphical user-interface design
HC5. Graphical user-interface programming
HC6. HCI aspects of multimedia systems
HC7. HCI aspects of collaboration and communication

介绍:

主要内容包括以人为中心的软件开发和评价,图形用户接口设计,多媒体系统的人机接口等.

抽象形态的主要内容:包括人的表现模型(如理解,运动,认知,文件,通信和组织),原型化,
交互对象的描述,人机通信(含减少人为错误和提高人的生产力的交互模式心理学研究)等.

理论形态的主要内容:包括认知心理学,社会交互科学等.

设计形态的主要内容:交互设备(如键盘,语音识别器),有关人机交互的常用子程序库,
图形专用语言,原形工具,用户接口的主要形式(如子程序库,专用语言和交互命令),
交互技术(如选择,定位,定向,拖动等技术),图形拾取技术,以”人为中心”的人机交互软件的评价标准等.

基本问题主要包括:
1.表示物体和自动产生供阅览的照片的有效方法是什么?
2.接受输入和给出输出的有效方法是什么?
3.怎样才能减小产生误解和由此产生的人为错误的风险?
4.图表和其他工具怎样才能通过存储在数据集中的信息去理解物理现象?

八.GV. Graphics and Visual Computing 

GV1. Fundamental techniques in graphics 
GV2. Graphic systems
GV3. Graphic communication
GV4. Geometric modeling
GV5. Basic rendering
GV6. Advanced rendering
GV7. Advanced techniques
GV8. Computer animation
GV9. Visualization
GV10. Virtual reality
GV11. Computer vision

介绍:

主要内容包括计算机图形学,可视化,虚拟现实,计算机视觉等4个学科子领域的研究内容.

抽象形态的主要内容:包括显示图像的算法,计算机辅助设计(CAD)模型,实体对象的计算机表示,
图像处理和加强的方法.

理论形态的主要内容:包括二维和高维几何(包括解析,投影,仿射和计算几何),颜色理论,认知心理学,
傅立叶分析,线性代数,图论等

设计形态的主要内容:包括不同的图形设备上图形算法的实现,不断增多的模型和现象的实验性图形算法
的设计与实现,在显示中彩色图的恰当使用,在显示器和硬拷贝设备上彩色的精确再现,图形标准图形语言
和特殊的图形包,不同用户接口技术的实现(含位图设备上的直接操作和字符设备的屏幕技术),用于不同的
系统和机器之间信息转换的各种标准文件互换格式的实现,CAD系统,图像增强系统等.

基本问题主要包括:
1.支撑图像产生以及信息浏览的更好模型?
2.如何提取科学的(计算和医学)和更抽象的相关数据?
3.图像形成过程的解释和分析方法?

十.IS. Intelligent Systems 

IS1. Fundamental issues in intelligent systems 
IS2. Search and constraint satisfaction 
IS3. Knowledge representation and reasoning 
IS4. Advanced search
IS5. Advanced knowledge representation and reasoning
IS6. Agents
IS7. Natural language processing
IS8. Machine learning and neural networks
IS9. AI planning systems
IS10. Robotics

介绍:

主要内容包括约束可满足性问题,知识表示和推理,Agent,自然语言处理,机器学习和神经网络,
人工智能规划系统和机器人学等.

抽象形态的主要内容:包括知识表示(如规则,框架和逻辑)以及处理知识的方法(如演绎,推理),
自然语言理解和自然语言表示的模型(包括音素表示和机器翻译),语音识别与合成,从文本到
语音的翻译,推理与学习模型(如不确定,非单调逻辑,Bayesian推理),启发式搜索方法,分支界
限法,控制搜索,模仿生物系统的机器体系结构(如神经网络),人类的记忆模型以及自动学习和
机器人系统的其他元素等.

理论形态的主要内容:包括逻辑(如单调,非单调和模糊逻辑),概念依赖性,认知,自然语言理解
的语法和语义模型,机器人动作和机器人使用的外部世界模型的运动学和力学原理,以及相关支
持领域(如结构力学,图论,形式语法,语言学哲学与心理学)等.

设计形态的主要内容:包括逻辑程序设计软件系统的设计技巧,定理证明,规则评估,在小范围领
域中使用专家系统的技术,专家系统外壳程序,逻辑程序设计的实现(如PROLOG),自然语言理解
系统,神经网络的实现,国际象棋和其他策略性游戏的程序,语音合成器,识别器,机器人等.

基本问题主要有:
1.基本的行为模型是什么?如何建造模拟它们的机器? 
2.规则评估,推理,演绎和模式计算在多大程度上描述了智能?
3.通过这些方法模拟行为的机器的最终性能如何?
4.传感数据如何编码才使得相似的模式有相似的代码?
5.电机编码如何与传感编码相关联?
6.学习系统的体系结构怎样?
7.这些系统是如何表示它们对这个世界的理解的?

十一.IM. Information Management 

IM1. Information models and systems 
IM2. Database systems
IM3. Data modeling 
IM4. Relational databases
IM5. Database query languages
IM6. Relational database design
IM7. Transaction processing
IM8. Distributed databases
IM9. Physical database design
IM10. Data mining
IM11. Information storage and retrieval
IM12. Hypertext and hypermedia
IM13. Multimedia information and systems
IM14. Digital libraries

介绍:

主要内容包括信息模型与信息系统,数据库系统,数据建模,关系数据库,数据库查询语言,
关系数据库设计,事务处理,分布式数据库,数据挖掘,信息存储与检索,超文本和超媒体,
多媒体信息与多媒体系统,数字图书馆等.

抽象形态的主要内容:包括表示数据的逻辑结构和数据元素之间关系的模型(如E-R模型,
关系模型,面向对象的模型),为快速检索的文件表示(如索引),保证更新时数据库完整性
(一致性)的方法,防止非授权泄露或更改数据的方法,对不同类信息检索系统和数据库(如
超文本,文本,空间的,图像,规则集)进行查询的语言,允许文档在多个层次上包含文本,视频,
图像和声音的模型(如超文本),人的因素和接口问题等 .

理论形态的主要内容:包括关系代数,关系演算,数据依赖理论,并发理论,统计推理,排序与搜索,
性能分析以及支持理论的密码学.

设计形态的主要内容:包括关系,层次,网络,分布式和并行数据库的设计技术,信息检索系统的设计技术,
安全数据库系统的设计技术,超文本系统的设计技术,把大型数据库映射到磁盘存储器的技术,
把大型的只读数据库映射到光存储介质上的技术等.

基本问题主要包括:
1.使用什么样的建模概念来表示数据元素及其相互关系?
2.怎样把基本操作(如存储,定位,匹配和恢复)组合成有效的事务?
3.这些事务怎样才能与用户有效地进行交互?
4.高级查询如何翻译成高质量的程序?
5.哪种机器体系结构能够进行有效的恢复和更新?
6.怎样保护数据,以避免非授权访问,泄露和破坏?
7.如何保护大型的数据库,以避免由于同时更新引起的不一致性?
8.当数据分布在许多机器上时如何保护数据,保证性能?
9.文本如何索引和分类才能够进行有效的恢复?

十二.SE. Software Engineering 

SE1. Software processes 
SE2. Software requirements and specifications 
SE3. Software design 
SE4. Software validation 
SE5. Software evolution 
SE6. Software project management 
SE7. Software tools and environments 
SE8. Component-based computing
SE9. Formal methods
SE10. Software reliability
SE11. Specialized systems development

介绍:

主要内容包括软件过程,软件需求与规格说明,软件设计,软件验证,软件演化,软件项目管理,
软件开发工具与环境,基于构件的计算,形式化方法,软件可靠性,专用系统开发等.
抽象形态的主要内容:包括规约方法(如谓词转换器,程序设计演算,抽象数据类型和Floyd-Hoare 公理化思想),
方法学(如逐步求精法,模块化设计),程序开发自动化方法(如文本编辑器,面向语法的编辑器和屏幕编辑器),
可靠计算的方法学(如容错,安全,可靠性,恢复,多路冗余),软件工具与程序设计环境,程序和系统的测度与评价,
软件系统到特定机器的相匹配问题域,软件研制的生命周期模型等.

理论形态的主要内容:包括程序验证与证明,时态逻辑,可靠性理论以及支持领域:谓词演算,公理语义学和认知心理学等.
设计形态的主要内容:包括归约语言,配置管理系统,版本修改系统,面向语法的编辑器,行编辑器,屏幕编辑器和字处理系统,实际使用并受到支持的特定软件开发方法(如HDM,Dijkstra,Jockson,Mills和Yourdon倡导的方法),测试的过程与实践(如遍历,手工仿真,模块间接口的检查),质量保证与工程管理,程序开发和调试,成型,文本格式化和数据库操作的软件工具,安全计算系统的标准等级与确认过程的描述,用户接口设计,可靠容错的大型系统的设计方法,以”公众利益为中心的”软件从业人员认证体系.

基本问题主要包括:

1.程序和程序设计系统发展背后的原理是什么?
2.如何证明一个程序或系统满足其规格说明?
3.如何编写不忽略重要情况且能用于安全分析的规格说明?
4.软件系统是如何历经不同的各代进行演化的?
5.如何从可理解性和易修改性着手设计软件?

十三.SP. Social and Professional Issues

SP1. History of computing
SP2. Social context of computing 
SP3. Methods and tools of analysis 
SP4. Professional and ethical responsibilities 
SP5. Risks and liabilities of computer-based systems 
SP6. Intellectual property 
SP7. Privacy and civil liberties 
SP8. Computer crime
SP9. Economic issues in computing
SP10. Philosophical frameworks
介绍:

主要内容包括计算的历史,计算的社会背景,分析方法和工具,专业和道德责任,基于计算机系统的风险与责任,
知识产权,隐私与公民的自由,计算机犯罪,与计算有关的经济问题,哲学框架等.

该主领域属于学科设计形态方面的内容.根据一般科学技术方法论的划分,该领域中的价值观,
道德观属于设计形态中技术评估方面的内容.知识产权属于设计形态中技术保护方面的内容.
而CC1991报告提到的美学问题则属于设计形态中技术美学方面的内容.

基本问题主要包括:
1.计算学科本身的文化,社会法律和道德的问题.
2.有关计算的社会影响问题,以及如何评价可能的一些答案的问题.
3.哲学问题.
4.技术问题以及美学问题.

十四.CN. Computational Science 

CN1. Numerical analysis
CN2. Operations research
CN3. Modeling and simulation
CN4. High-performance computing

介绍:

主要内容包括数值分析,运筹学,模拟和仿真,高性能计算.

抽象形态的主要内容:包括物理问题的数学模型(连续或离散)的形式化表示,连续问题的离散化技术,
有限元模型等.

理论形态的主要内容:数论,线性代数,数值分析,以及支持领域,包括微积分,实数分析,复数分析和代数等.

设计形态的主要内容:用于线性代数的函数库与函数包,常微分方程,统计,
非线性方程和优化的函数库与函数包,把有限元算法映射到特定结构上的方法等.

基本问题主要包括:

1.如何精确地以有限的离散过程近似表示连续和无限的离散过程?
2.如何处理这种近似产生的错误?
3.给定某一类方程在某精确度水平上能以多快的速度求解?
4.如何实现方程的符号操作,如积分,微分以及到最小项的归约?
5.如何把这些问题的答案包含到一个有效的,可靠的,高质量的数学软件包中?

MySQL数据库锁机制的相关原理简介

2010年05月10日 12:40 下午  |  分类:默认

不同于行级或页级锁定的选项:

  · 版本(例如,为并行的插入在MySQL中使用的技术),其中可以一个写操作,同时有许多读取操作。这明数据库或表支持数据依赖的不同视图,取决于访问何时开始。其它共同的术语是“时间跟踪”、“写复制”或者“按需复制”。

  · 按需复制在许多情况下优先于页级或行级锁定。然而,在最坏的情况下,它可能比使用常规锁定使用多的内存。

  · 除了行级锁定外,你可以使用应用程序级锁定,例如在MySQL中使用GET_LOCK()和RELEASE_LOCK()。这些是建议性锁定,它们只能在运行良好的应用程序中工作。

  为达到最高锁定速度,除InnoDB 和BDB 之外,对所有存储引擎,MySQL使用表锁定(而不是页、行或者列锁定)。对于InnoDB 和BDB 表,如果你用LOCK TABLES显式锁定表,MySQL只使用表锁定;如果你不使用LOCK TABLES,因为 InnoDB 使用自动行级锁定而BDB 使用页级锁定来保证事务隔离。

  但是对于大表,对于大多数应用程序,表锁定比行锁定更好,但存在部分缺陷。表锁定使许多线程同时从一个表中进行读取操作,但如果一个线程想要对表进行写操作,它必须首先获得独占访问。更新期间,所有其它想要访问该表的线程必须等待直到更新完成。

  表更新通常情况认为比表检索更重要,因此给予它们更高的优先级。这应确保更新一个表的活动不能“饿死”,即使该表上有很繁重的SELECT 活动。

  表锁定在这种情况下会造成问题,例如当线程正等待,因为硬盘已满并且在线程可以处理之前必须有空闲空间。在这种情况下,所有想要访问出现问题的表的线程也被设置成等待状态,直到有更多的硬盘空间可用。

  表锁定在下面的情况下也存在问题:

  · 一个客户发出长时间运行的查询。

  · 然后,另一个客户对同一个表进行更新。该客户必须等待直到SELECT完成。

  · 另一个客户对同一个表上发出了另一个 SELECT 语句。因为UPDATE比 SELECT 优先级高,该SELECT 语句等待UPDATE完成,并且等待第1个 SELECT 完成。

  下面描述了一些方法来避免或减少表锁定造成的竞争:

  · 试图使 SELECT 语句运行得更快。可能必须创建一些摘要(summary)表做到这点。

  · 用–low-priority-updates启动mysqld。这将给所有更新(修改)一个表的语句以比SELECT语句低的优先级。在这种情况下,在先前情形的第2个SELECT语句将在UPDATE语句前执行,而不需要等候第1个 SELECT 完成。

  · 可以使用SET LOW_PRIORITY_UPDATES=1语句指定具体连接中的所有更新应使用低优先级。

  · 可以用LOW_PRIORITY属性给与一个特定的INSERT、UPDATE或DELETE语句较低优先级。

  · 可以用HIGH_PRIORITY属性给与一个特定的SELECT语句较高优先级。

  · 为max_write_lock_count系统变量指定一个低值来启动mysqld来强制MySQL在具体数量的插入完成后临时提高所有等待一个表的SELECT 语句的优先级。这样允许在一定数量的WRITE锁定后给出READ锁定。

  · 如果你有关于INSERT结合SELECT的问题,切换到使用新的MyISAM表,因为它们支持并发的SELECT和INSERT。

  · 如果你对同一个表混合插入和删除,INSERT DELAYED将会有很大的帮助。

  · 如果你对同一个表混合使用 SELECT 和DELETE 语句出现问题,DELETE 的LIMIT 选项可以有所帮助。

  · 对 SELECT 语句使用SQL_BUFFER_RESULT可以帮助使表锁定时间变短。

  · 可以更改mysys/thr_lock.c中的锁代码以使用单一的队列。在这种情况下,写锁定和读锁定将具有相同的优先级,对一些应用程序会有帮助。

  这里是一些MySQL中表锁定相关的技巧:

  · 如果不混合更新与需要在同一个表中检查许多行的选择,可以进行并行操作。

  · 可以使用 LOCK TABLES 来提高速度,因为在一个锁定中进行许多更新比没有锁定的更新要快得多。将表中的内容切分为几个表也可以有所帮助。

  · 如果在MySQL中表锁定时遇到速度问题,可以将表转换为 InnoDB 或BDB 表来提高性能。

.net中的List的使用

2010年05月8日 1:05 下午  |  分类:默认

 在开发称重软件过程中,用到了各种各样的技术框架和概念,个人接触比较多点的还是List<T> 了,也比较感兴趣,毕竟.net中的List<T>非常方便,但是很遗憾是没有自带更方便的一些排序查找之类的函数,很多都得我们自己写函数,这非常的麻烦,其实这些方法想要的只是一个一句话的delegate而已。下面主要讨论三个方法,List<T>.Sort();List<T>.Find();List<T>.Exist();

    首先看List<T>.Sort()。其定义是:public void Sort( Comparison<T> comparison );要求传入的参数是Comparison<T> comparison。那就看看Comparison<T> comparison 要求我们传入哪些参数以及返回什么样的值。查阅MSDN后,我们发现Comparison<T> 要求我们传入两个T的示例,即t1和t2;返回结果是整数,如果t1<t2返回-1,如果相等返回-,如果t1>t2返回1,和字符串比较的返回方式一样。于是我们可以这样设计delegate:listVideoItems.Sort(delegate(VideoItem v1, VideoItem  v2) { return Comparer<string>.Default.Compare(v1.Title, v2.Title); });

    上面的代码是对实体的Title属性进行排序,采用字符串比较的返回值作为delegate的返回值。

    接下来我们看看List<T>.Find()和List<T>.Exist()

    Find()的定义如下:public T Find( Predicate<T> match )

    Exist也类似:public bool Exists( Predicate<T> match )

    所以只要我们设计好Predicate<T> match 这个参数的delegate,Find()和Exists()这两个函数我们都可以用了。查询MSDN发现,Predicate<T> 要求我们传入一个T的实体,并返回这个T是不是存在的布尔结果。因此我们就可以写出:VideoItem video=   listVideoItems.Find(delegate(VideoItem v) { return v.Title== “xxxxx”; }) 这代码表示按照标题查找实体,当然”xxxxx”可以替换成变量和硬代码。v.Title == “xxxxx” 这种方式也可以改为  v.Minutes > 25 或其他,只要能返回布尔结果即可。

    同样的delegate也可以用在Exists()中:

    bool flag=   listVideoItems.Exists(delegate(VideoItem v) { return v.Minutes > 25 ;})

    最后,List<T>当中还有一个非常好用的FindAll()方法,也相当好用,相信看完本文的朋友马上就能写出delegate来。

Spring依赖注入的两种方式比对

2010年05月8日 12:56 下午  |  分类:默认

下面对spring依赖注入的两种方式进行一些介绍和比对。Spring依赖注入的两种方式是:

    1.设置注入;

    2.构造注入;

    spring依赖注入之设置注入的优点:

    与传统的JavaBean的写法更相似,程序员更容易理解、接受,通过setter方式设定依赖关系显得更加直观、明显;

    对于复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿,难以阅读。Spring在创建Bean实例时,需要同时实例化其依赖的全部实例,因而导致死你功能下降。而使用设置注入,则避免这下问题;

    尤其在某些属性可选的情况下,多参数的构造器更加笨拙。

    spring依赖注入之构造注入的优点:

    构造注入可以再构造器中决定依赖关系的注入顺序,优先依赖的优先注入。

    对于依赖关系无须变化的Bean,构造注入更有用处;因为没有setter方法,所有的依赖关系全部在构造器内设定,因此,不用担心后续代码对依赖关系的破坏。

    依赖关系只能在构造器中设定,则只有组件的创建者才能改变组件的依赖关系。对组件的调用者而言,组件内部的依赖关系完全透明,更符合高内聚的原则;

    建议采用以设置注入为主,构造注入为辅的注入策略。对于依赖关系无须变化的注入,尽量采用构造注入;而其他的依赖关系的注入,则考虑采用设置注入。

Java开源项目Hibernate快速入门

2010年05月6日 10:13 上午  |  分类:Java技术, 默认

         final类:为防止他人从你的类上派生新类,此类是不可扩展的。

        动态调用比静态调用花费的时间要长。

        抽象类:规定一个或多个抽象方法的类本身必须定义为abstract。

        例: public abstract string getDescripition

        Java中的每一个类都是从Object类扩展而来的。

        object类中的equal和toString方法。

        equal用于测试一个对象是否同另一个对象相等。

        toString返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示。(toString 方法是一个很重要的方法)

        通用编程:任何类类型的所有值都可以同object类型的变量来代替。

        数组列表:ArrayList动态数组列表,是一个类库,定义在java.uitl包中,可自动调节数组的大小。

        class类 object类中的getclass方法返回class类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。

        就业方向:

        可以从事JSP网站开发、Java编程、Java游戏开发、Java桌面程序设计,以及其他与Java语言编程相关的工作。可进入电信、银行、保险专业软件开发公司等从事软件设计和开发工作。

        Java与C/C++的差异

        熟悉C语言和C++语言的读者一定想搞清楚这个问题,实际上,Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物.比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言,C++语言完全相同.尽管如此,Java和C语言,C++语言又有许多差别,主要表现在如下几个方面:

        (1) Java中对内存的分配是动态的,它采用面向对象的机制,采用运算符new为每个对象分配内存空间,而且,实际内存还会随程序运行情况而改变.程序运行中,每个, Java系统自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源得到更充分地利用.按照这种机制,程序员不必关注内存管理问题,这使Java程序的编写变得简单明了,并且避免了了由于内存管理方面的差错而导致系统出问题.而C语言通过malloc()和free()这两个库函数来分别实现分配内在和释放内存空间的,C++语言中则通过运算符new和delete来分配和释放内存.在C和C++这仲机制中,程序员必须非常仔细地处理内存的使用问题.一方面,如果对己释放的内存再作释放或者对未曾分配的内存作释放,都会造成死机;而另一方面,如果对长期不用的或不再使用的内存不释放,则会浪费系统资源,甚至因此造成资源枯竭.

微软第三季财报电话会议:下季度业绩难增长

2010年04月24日 8:32 上午  |  分类:默认

北京时间4月23日消息,据国外媒体报道,微软今天发布的截至3月31日的2010财年第三季度财报显示,微软第三季度营收为145.0亿美元,比去年同期的136.5亿美元增长6%;净利润为40.1亿美元,比去年同期的29.8亿美元增长35%;每股收益为45美分,高于去年同期的33美分。

以下为微软财报发布后电话会议的实况,从美国东部时间周四17时30分开始。

17时33分(以下时间均为美国东部时间):

微软首席财务官皮特·克莱恩(Peter Klein)、首席会计官弗兰克·布罗德(Frank Brod)以及微软投资者关系部门总经理比尔·科伊弗德(Bill Koefoed)出席电话会议。

17时36分:

皮特·克莱恩表示,微软本季度实现出色业绩的主要推动力来自于产品强劲市场需求、对管理成本的控制以及“企业在硬件领域开始支出”。

17时36分:

克莱恩表示,Windows 7强劲的需求是本季度营收的“主要来源”。目前全球超过10%的PC已经安装Windows 7操作系统,这使得Windows 7成为有史以来销售最快的操作系统。不过克莱恩补充说,这个10%的数据说明Windows 7仍然有广阔的发展机遇。

17时41分:

克莱恩称微软的“必应”搜索引擎已经连续10个月实现增长,同时提到了与雅虎签定的搜索合作协议所带来的收益。

17时42分:

微软投资者关系部门总经理比尔·科伊弗德接着发言,详细介绍微软本季度的业绩。他表示,微软本季度的营收达到145亿美元,同比增长6%。

17时44分:

科伊弗德表示,新兴市场的营收增长了20%,而成熟市场的营收仍然保持在10%以下。微软在中小型企业市场拥有了更大的发展动力,而大型企业市场的总体形势也在回暖。

17时49分:

科伊弗德说,Windows 7和PC市场的创新推动了PC市场的进一步发展。微软估计,本季度PC市场实现了25%的同比增幅,其中普通消费电脑增长了30%,企业PC增长了14%。另外,本季度上网本占总体PC市场的比例已达10%。

17时51分:

科伊弗德表示,Windows操作系统和Windows Live在本季度的表现都非常出现。本季度消费者授权服务营收增长30%,其中面向企业市场的软件授权营收增长了15%,进一步证明了微软之前的说法,即“企业PC的更新换代时代已经开始”。

17时54分:

科伊弗德谈到了微软的在线服务营收。在2010财年第三季度,在搜索服务的推动下,微软在线广告营收同比增长19%。另外,微软非常重视“云计算”服务。他指出多家已经开始使用微软云服务的客户,其中包括星巴克和麦当劳。

17时55分:

科伊弗德还提到了娱乐产品的市场表现。他表示,本季度微软游戏机产品的营收同比下降12%,这与游戏市场的总体表现是基本一致的。不过XBox Live服务的发展势头依然强劲。

17时58分:

皮特·克莱恩接着发言,介绍了微软对下个季度,即2010财年最后一个季度的业绩预期。克莱恩表示:“从宏观角度来看,我们预计下个季度与本季度的业绩基本持平。”

17时59分:

克莱恩表示,尽管企业支出正在回暖,但销售依然面临挑战,微软将重点关注接近达成的协议,并且对拟于今年6月份发布的Office 2010充满期待。

18时00分:

克莱恩说,微软将继续降低成本,预计2010财年运营支出为261亿美元至263亿美元。

18时01分:

克莱恩表示,企业在硬件领域的更新换代将持续到2011年。

18时02分:

电话会议开始问答环节,有分析师问到Office 2010发布有可能对微软业绩产生的影响。微软几位高管表示,Office 2010发布可能带来的最大影响将在下一个财务年度表现出来。

18时04分:

有分析师问到Office 2010的价格,微软高管表示“目前很难讲”。微软表示,不管是家庭版还是专业版,Office 2010都具备多种产品的综合功能。不过微软建议分析师,“以Office 2007的发布为模板考虑Office 2010的发布”。

18时06分:

微软表示将推出多款产品,人们也期待着这些产品的推出。

18时11分:

微软表示,向PC生产商提供多国授权的方式在总体PC市场所占的比例越来越大,另外全球盗版状况有所好转。

18时12分:

有分析师问到微软的商用在线服务,即为企业提供的“云计算”服务。克莱恩表示,云计算服务很显然是微软面前一个重要的发展领域。他表示,有的服务旨在向更多中端市场客户推出,有的则面向大型企业推出。微软将同时发力中小企业市场和大型企业市场。

18时14分:

最后一个问题:在微软看来,企业用户部署Windows 7操作系统的速度正在加快还是仍在观望?克莱恩表示,在企业用户当中,尽快部署Windows 7的意愿越来越强烈。他表示,微软并未看到企业在部署Windows 7方面持观望态度,尽管不少企业确实会在部署之前对该操作系统进行测试。克莱恩认为,企业会“以相当快的速度”部署Windows 7。

电话会议结束。

Pages: 1 2 3 4 5 6 7 8 ...34 35 36 Next