发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

=============================================

package的基本概念

包(package)定义了软件单元,它能够独立发布,并能够与其他包组成应用程序。包的成员是一些关联的类、接口以及子包,也可以包含包中的类所使用的附加资源文件(如图像文件)。

包的主要作用为:
(1)包将相互管理的接口和类组合成组;
(2)包创建了命名空间来避免类型之间的命名冲突;
(3)包机制为开发应用程序提供了保护域。

package和import是一对相辅相成的java关键字,这两个关键字允许我们做的事情就是分割单个全局命名空间。

============================================= More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

引言

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收器来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的堆。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。 More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

线程的基本概念

当程序启动时,就自动产生了一个线程。主函数main就是在这个线程上运行的。当不产生新的线程时,程序就是单线程的。

创建多线程有两种方法:继承Thread类或者继承自Runnable接口。 More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

=====================================

String概述
字符串(String)是java语言内置支持的标准对象,同时String也应该是我们最常用的java对象之一了。

java的字符串对象具有如下特点:
(1) String 是 final 类,即不能被继承(public final class String)。

(2)String对象是只读的,不可改变,这一点需要格外注意(private final char value[])。

(3)Java运行时会维护一个String Pool(String池),用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池。(后面会有详细叙述。)

=====================================
More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

java异常概述
在运行过程中,应用程序可能遇到各种严重程度不同的错误,比如访问不存在的文件、数组访问越界等。如果程序对可能发生的错误一点不做检查,那么程序将变得容易崩溃而且很难定位到问题出现的位置;而如果在执行下一语句之前,对每个方法调用都检查所有可能的错误,那么,程序就会变得难以理解。

java的异常处理机制很和谐的解决了这一矛盾命题。 More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

=======================================

取模运算(%)结果的符号同被模数的符号,与模数的符号无关:


public class Test {
public static void main(String[] args) throws Exception {
System.out.println(5 % 2);
System.out.println(5 % -2);
System.out.println(-5 % 2);
System.out.println(-5 % -2);
}
}

输出为:


1
1
-1
-1

More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

接口概述
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

接口纯粹是一种表达方式,而类则是设计和实现的混合体。
More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

1、
我们用关键字class声明类,类的声明创建一个类型名(type name)。

2、
类可以有三种类型的成员:
(1)域(field):与类及其他对象相关联的数据变量,其中保存着类或者对象的状态。
(2)方法(method):包含类的可执行代码并定义了对象的行为。
(3)嵌套类(nested class)和嵌套接口(nested interface):嵌套类和嵌套接口是那些嵌套在其他类或者其他接口中的类和接口。

3、
类声明的前面可以有类修饰符以指定类的特定属性:
(1)public:一个public类是可以公共访问的,任何人都可以声明对该类的对象的引用或者访问它的公共成员。如果没有该修饰符,类只能在自己的包内访问。

(2)abstract:一个抽象类被认为是不完整的,不能创建实例。通常,如果类中包含abstract方法,该方法就必须在子类中实现。

(3)final:final类不能有子类。

(4)strict floating point:定义了strictfp的类要求其中所定义的浮点算法都进行精确运算。

4、
类中的变量称为域(field),域的声明包括类型名、域名字和可选的初始化子句(initialization clause),该子句用于给予赋一个初始值。

+—————————-+
|类型名 |域名字 | 初始化子句 |
+—————————-+
|int | i | = 1; |
+—————————-+

5、
域声明的前面可以有如下修饰符:
(1)static
(2)final
(3)transient:与对象的串行化有关。
(4)volatile:与同步和内存模型有关。

6、
如果域没有初始化,那么其会被赋予默认的初始值:

+——————+
#类型 | 初始值 |
+——————+
#boolean | false |
#char | ‘\u0000’|
#btype |0 |
#short |0 |
#int |0 |
#long |0 |
#float |+0.0f |
#double |+0.0 |
#对象引用 |null |
+——————+

7、
有时我们希望一个域的实例被类的所有对象共享,这种域可以声明为static,称为静态域(static field)或类变量(class variable)。

当在类中声明一个static域后,就只存在这个域的一份拷贝,不管这个类创建了多少实例。

在我们自己的类中,static域可以直接访问,但从外部访问就要通过类名。示例如下:
System.out.println(Body.nextID);
其中,Body是一个自定义类,nextID是其中的一个静态域。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2009/08/11补充:

类的所有成员对类自身的代码代码而言,始终是可访问的,为了控制来自其他类的访问,类成员具有四种可能的控制修饰符:
private
private成员只能在自身中可以访问;
package
声明时不带访问修饰符的成员,只有相同包中干的代码可以访问。
proctected
子类、同一包中的类及类内部可以访问声明为protected的成员。
public
在类可以访问的地方,声明为public的成员都是可以访问的。

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/12/20 03:12

java是什么?
概括的说,Java是:
(1)一种编程语言;
(2)一种开发环境;
(3)一种应用环境;
(4)一种部署环境。

Java编程语言的风格十分接近C++语言。继承了C++ 语言面向对象技术的内核,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。在Java SE 1.5版本中Java又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 More …

评论关闭
发表于: lnmp | 作者: | 日期: 2008/12/20 02:12

Chapter 8. MySQL How-To
Table of Contents

8.1. 连接数据库服务器
8.2. 更新用户密码
8.3. MySQL读取配置文件的顺序
8.4. 重设置MySQL管理员密码的方法
8.5. NULL值
8.6. 使用SQL变量
8.7. 改变默认提示符
8.8. 非优化的全数据表DELETE操作
8.9. MySQL事务处理示例
8.1. 连接数据库服务器
$ ./mysql -h host_name -u user_name -p

-h host_name(–host=host_name),连接的数据库主机名,如果在本地主机上则可省略。

-u user_name(–user=user_name),数据库用户名,在unix系统上,如果系统的登录名与数据用户名一样,则可省略。在windows系统中,可通过设置环境变量USER来给出数据库用户名,如set USER=username。

-p(–password),提供数据库用户密码,有该选项mysql就会提示你输入密码。输入的密码以星号显示,以确保安全。也可直接在-p后写上密码(-p和密码间不能有空格),但这不安全,不推荐。

连接成功后,mysql数据库服务器会显示一些欢迎信息。接着就可用mysql>use database_name命令打开指定的数据库。

$ ./mysql -h host_name -u user_name -p database_name命令可直接打开指定数据库。

8.2. 更新用户密码
mysql>update user set password=passowrd(‘your passowrd’) where host=’%’;

刷新权限设置:mysql>flush privileges;

8.3. MySQL读取配置文件的顺序
my.cnf是MySQL数据库的配置文件,它存在多个地方,在/etc目录,数据目录和用户主目录都有。放在不同位置,里面的选项有不同的作用范围,下面是MySQL读取配置文件的顺序和作用。

mysql 读取配置文件的顺序:
/etc/my.cnf Global options.
DATADIR/my.cnf Server-specific options.
defaults-extra-file The file specified with the –defaults-extra-file option.
~/.my.cnf User-specific options.

8.4. 重设置MySQL管理员密码的方法
有时我们会因为设置原因或时间长了忘记了数据库管理员的密码,使得我们被关在MySQL服务器外。MySQL服务器提供了一种方法可使我们在服务器上重设密码。在windows和linux/unix平台上操作稍有不同,下面分别介绍:

Linux/Unix平台下:

用 % kill -TERM PID关闭服务器,用-TERM信息可使服务器在关闭前把内存中的数据写入磁盘。如果服务器没有响应,我们可用% kill -9 PID来强制删除进程,但不建议这样做。这时内存中的数据不会写入磁盘,造成数据不完整。如果你是用mysql_safe脚本启动MySQL服务器的,这个脚本会监控服务器的运行情况并在它被终止时重启服务器,所以如需关闭服务器,要先终止该进程,然后再真正终止mysqld进程。

使用–skip-grant-tables参数启动MySQL Server,这时MySQL服务器将不使用权限表对连接操作进行验证。你就可在不提供root密码的情况下连接上服务器,并获得root的权限。

% mysqld_safe –skip-grant-tables &

用以下命令登录服务器,并重设密码:

% mysql -u root #不用密码就可连接到服务器
mysql> use mysql
mysql> set password for ‘root’@’localhost’ = password(‘password’);

修改MySQL服务器帐户密码有三种方式,你可参考本笔记中数据库日常管理一章中的相关内容。在这种环境下,使用mysaladmin修改密码好象不行,还是提示要输入密码。

关闭服务器,再用正常方式启动服务器。

windows平台下:

用管理员帐号登录服务器,关闭MySQL数据库服务器。

使用–skip-grant-tables参数启动服务器:

c:\mysql\bin>mysqld-nt –skip-grant-tables

重新打开一个console窗口,用mysql命令登录服务器设置root的新密码:

c:\mysql\bin>mysql
mysql> use mysql
mysql> set password for ‘root’@’localhost’ = password(‘password’);

关闭服务器,再用正常方式启动服务器。

8.5. NULL值
NULL是空值,代表什么也没有。它不能与值进行比较操作和算术操作,也不能和NULL进行比较,因为两个空值比较是没有意义的。我们可用“is NULL” 或 “is not NULL”来判断是不空值。如:

mysql> select * from test where mytest is NULL;
mysql> select * from test where mytest is not NULL;

在MySQL3.23以后的版本有一个新的比较操作符“<=>”,它可对NULL值进行相等比较。如:

mysql> select * from test where mytest <=> UNLL;
mysql> select * from test where not (mytest <=>);

如果查询后排序中的数据中包含NULL,则从MySQL4.0.2开始,有NULL值的数据行总是出现在查询结果的开头,即使设置的desc参数。4.0.2以前版本,如果设置了asc,则出在查询结果的开头,如果设置了desc,则出现在查询结果的结尾。

8.6. 使用SQL变量
MySQL3.23.6以后的版本允许通过查询结果来设置变量,设置好的变量可在以后使用。变量用@name定义,赋值方式用@name:=value。下面是一个在查询语句中进行赋值和使用变量的例子:

mysql> select @name:=id from test where mytest=”test”;
mysql> select * from test where mytest=@name

8.7. 改变默认提示符
用mysql登录进数据库后,MySQL数据的默认提示符是“mysql”,我们可设置它根据用户打开的数据库名而变化,如:

mysql>prompt \d>\_
none>use test
test>use mysql
mysql>

prompt为设置命令,\d代表当前数据库,\_代表一个空格。

8.8. 非优化的全数据表DELETE操作
为了清空数据表,又需知道删除的行数和保持AUTO_INCREMENT序列的值,需用以下的删除语句:

# delete from table_name where 1;

8.9. MySQL事务处理示例
MYSQL高级特性 — 事务处理下面以两个银行账户之间的转账为例子进行演示。要使用MySQL中的事务处理,首先需要创建使用事务表类型(如BDB = Berkeley DB或InnoDB)的表。

CREATE TABLE account (
account_id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
balance DOUBLE
) TYPE = InnoDB;

要在事务表上使用事务处理,必须要首先关闭自动提交:

SET AUTOCOMMIT = 0;

事务处理以BEGIN命令开始:

BEGIN;

现在mysql客户处在于服务器相关的事物上下文中。任何对事务表所做的改变在提交之前不会成为永久性的改变。

UPDATE ACCOUNT SET balance = 50.25 WHERE account_id = 1;
UPDATE ACCOUNT SET balance = 100.25 WHERE account_id = 2;

在做出所有的改变之后,使用COMMIT命令完成事务处理:

COMMIT;

当然,事务处理的真正优点是在执行第二条语句发生错误时体现出来的,若在提交前终止整个事务,可以进行回滚操作:

ROLLBACK;

下面是另一个例子,通过MYSQL直接进行数学运算:

SELECT @first := balance FROM account WHERE account_id = 1;
SELECT @second := balance FROM account WHERE account_id = 2;
UPDATE account SET balance = @first – 25.00 WHERE account_id = 1;
UPDATE account SET balance = @second + 25.00 WHERE account_id = 2;

除了COMMIT命令外,下列命令也会自动结束当前事务:

ALTER TABLE
BEGIN
CREATE INDEX
DROP DATABASE
DROP TABLE
LOCK TABLES
RENAME TABLE
TRUNCATE
UNLOCK TABLES

评论关闭