JAVA
嵌套类的定义:一个声明在另一个类或者接口内部的类。
有两种类型:静态内部类和非静态嵌套类(内部类)
内部类的类型:成员内部类 局部内部类 匿名内部类
相对于顶层类而言,嵌套类就像其他的类成员,比如方法和域。嵌套类也可以有修饰符:private protected default public
顶层类只能是 public 或者是 default
静态嵌套类可以有静态成员,内部类不行
内部类可以访问外层类的静态和非静态成员,包括它的 private成员。静态嵌套类只能访问外层类的静态成员
无需先创建外层类的实例就可以创建静态嵌套类的实例。在实例化内部类之前,必须先创建包住内部类的外层类的实例
内部类可以使用外层类的所有成员
内部类可以帮助完全隐藏类的实现
内部类提供了一种在Swing和其他基于事件的应用程序中编写监听器的快捷方法
嵌套类:
public class Outer {
class Nested {
}
}
把一个嵌套类套在另一个嵌套类中:
public class Outer {
class Nested {
class Nested2 {
}
}
}
静态嵌套类:
class Outer1 {
private static int value = 9;
static class Nested1 {
int calculate() {
return value;
}
}
}
public class StaticNestedTest1 {
public static void mian(String[] args) {
Outer1.Nested1 nested = new Outer1.Nested1();
System.out.println(nested.calculate());
}
}
①用以下格式引出嵌套类
OuterClassName.InnerClassName
②不需要创建外层类的实例就可以实例化静态嵌套类
③在静态嵌套类内部可以访问外层类的静态成员
④如果在嵌套类中声明了一个和外层类中某个成员同名的成员,那么前者将会遮住后者。此种情况可使用一下格式始终引用外层类的成员:
OuterClassName.memberName
(尽管memberName 是private 的,但仍然可以这样使用)
例如:
class Outer2 {
private static int value = 9;
static class Nested2 {
int value = 10;
int calculate() {
return value;
}
int getOuterValue() {
return Outer2.value;
}
}
}
public class StaticNestedTest2 {
public static void main(String[] args) {
Outer2.Nested2 nested = new Outer2.Nested2();
System.out.println(nested.calculate()); //return 10
System.out.println(nested.getOuterValue()); //return 9
}
}
成员内部类的定义直接抱在另一个类或者接口的声明中。只有在引用它的外层类实例时,才可以创建成员内部类的实例。
如果要从外层类的外部创建内部类的实例:
EnclosingClassName.InnerClassName inner =
enclosingClassObjectReference.new InnerClassName();
从内部类的内部可以使用关键字this 来引用当前实例。要引用外层类的实例则要使用一下语法:
EnclosingClassName.this
class TopLevel {
private in value = 9;
class Inner {
int calculate() {
return value;
}
}
}
public class MemberInnerTest1 {
public static void main(String[] args) {
TopLevel topLevel = new TopLevel ();
TopLevel.Inner inner = topLevel.new Inner();
System.out.println(inner.calculate());
}
}
SQL
数据库:一组相关信息的集合
术语和定义
实体 : 数据库用户所关注的对象
列 : 存储在表中的独立数据片段
行 : 所有列的一个集合,完整的描述了一个实体或实体上的某个行为,也称之为记录
表 : 行的集合,即可以保存在内存中,也可以保存在存储设备中
结果集 : 未持久化表的另一个名字,一般为SQL查询的结果
主键 ;用于唯一标识表中每个行的一个或多个列
外键 ;一个或多个用于识别其他表中某一行的列
SQL并不是任何短语的缩写,误解区(Structured Query Language)
SQL方案(schema)语句,用于定义存储于数据库中的数据结构
SQL数据语句,用于操作SQL方案语句所定义的数据结构
SQL事务语句,用于开始、结束或者回滚事务
创建新表的例子
需要使用SQL方案语句 create table,而在新表中产生数据则需要SQL数据语句insert
创建corporation表的SQL方案语句如下:
CREATE TABLE corporation
(corp_id SMALLINT,
name VARCHAR(30),
CONSTRATNT pk_corporation PRIMARY KEY (corp_id)
);
该语句创建的表包括两列:corp_id和name。
其中corp_id列被设置为表的主键。
如何在corporation表中插入一行关于Acme Paper Corporation 的数据:
INSERT INTO corporation (corp_id, name)
VALUES (27,'Acme Paper Corporation');
该语句向corporation 表中添加了一行数据,其中corp_id列的值为27,而name列的值是Acme Paper Corporation
最后给出一条select语句,以获取刚才创建的数据:
mysql> SELECT name
-> FROM corporation
-> WHERE corp_id = 27;
通过SQL方案语句创建的所有数据库元素都被存储在一个特殊的表集合,即数据字典中
这些“关于数据库的数据”一般被称为“元数据”
与用户所创建的表一样,数据字典表也可以通过select语句查询,从而允许在运行时刻查看数据库中的当前数据结构
过程化语言对所期望的结果和产生这些结果的执行机制或过程都进行了定义。
非过程化语言同样定义了期望结果,但将产生结果的过程留给外部代理来定义
使用SQL意味着必须放弃对过程的控制,因为SQL 语句只定义必要的输入和输出,而执行语句的方式则交由数据库引擎的一个组件,即优化器(optimizer)处理
因此单独使用SQL并不能开发完整的应用,除了编写简单的脚本来处理某些数据,一般需要将SQL与编程语言相集成。
SQL集成工具集包括:
JAVA C++ C/C++ C# Perl Python VisualBasic
Linux
设定终端机的状态——reset
reset命令其实和 tset 是一同个命令
一般而言,这个命令会自动的从环境变数、命令列或是其它的组态档决定目前终端机的型态
清除屏幕——clear
设置指令的别名——alias
用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置
alias lx=ls——设置指令的别名
设置 ls 指令在显示目录或文件时所用的色彩——dircolor
dircolors[-bcp][--help][--version]
设置音效装置——aumix
显示或设置键盘按键与其相关的功能——bind
调整 RTC 时间——clock
RTC 是电脑内建的硬件时间,执行这项指令可以显示现在时刻,调整硬件时钟的时间,将系统时间设成与硬件时钟之时间一致,或是把系统时间回存到硬件时钟
声明 shell 变量——declare
declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),在第二种语法中可用来显示shell函数。
若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。