Properties 属性文件
Property 属性
其实它就是一个文本文件,我们可以用流一行一行的读取然后截取字符串。但是比较
麻烦,所以java有一个特定的类,其实它就是
//Properties 是一个Map集合,相当于Map<String, String>
//Properties 是一个Map集合,相当于Map<String, String>
/* load(InputStream inStream)
从输入流中读取属性列表(键和元素对)。*/
properties.load(new FileInputStream("src/day21/config.properties"));
load() 解析 *.properties -> Properties 对象
save() 保存 Properties 对象 -> *.properties
store()
list() 在指定流上输出全部的属性信息
getProperty(String key) 获取指定属性
setProperty(key, value) 修改指定属性
网络编程
服务(Service), 如: 食堂, 商店 Host
// 食堂, 商店一定是一直开着等着我去买东西,即使我不去,它也要一直开着。
WEB
Client -> Service
1 TCP 编程
食堂卖饭 服务器
A 食堂有地址 A IP地址(域名)
B 每个食堂,有提供不同服务类型窗口 B 不同的端口(ServerSocket) 65535,
C 每个窗口可以为多个同学服务 C 每个端口可以建立多个Socket实例,
每个实例代表一个对客户的服务
学生买饭的过程 客户端连接
A 找到一个食堂 A 使用域名(IP)找到指定的服务器
B 找到一个窗口 B 使用服务器的端口号找到服务端口
C 请求指定服务 C 建立Socket 对象.
D 有窗体提供对应的反馈 D 使用流与服务器通信.
必须先启动服务器端,然后再启动客户端。
过程:客户端由计算机系统任意取一个端口号去访问IP的8900的指定端口,连接完成以后
客户和服务器端各会产生一个socket对象,并且会有一对输入输出流,
客户端的输入是服务器的输出,客户端的输出是服务器的输入,(所以有有个客户访问会产生4个流)
在建立完成以后,把服务器端口的一个具体连接实例派发成一个线程。
如果再一个客户端去连接这个端口,与上面的那个是一样的。
//客户端应该写两个线程,一个监听输入流,一个监听输出流。
getBytes():
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
getBytes(Charset charset)
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
网络编程实例:
简单的 FTP 协议实现(?, ls, get)
A 服务器请求是文本行请求
B 服务器响应包含两个部分: 第一行是服务器响应头, 头有两种:
1 text,num 是文本响应结果, num是响应中包含的文本行数.
2 file,size,filename 是文件数据响应结果, size是响应流中文件的长度.
反射 (自省) 是自我管理的机制
java 代码管理Java的类和方法等
数据库就是表管理表的问题。
java中有一个类管理类。
名词->类
名词: 类, 方法, 属性, 构造器
Class: Class, Method, Field, Constructor
//所以java中有一个类就叫类,有一个方法就叫方法类,属性就叫属性类,构造器就叫构造器类。
任何类都是Class的具体实例.
类加载到内存中的结果是Class的实例, 是一个对象.
类可以作为对象管理.
//Student这个类就是Class的一个实例,肯定可以对一内存中的一个实例进行管理 。
Student s = new Student();
Class cls = Student.class;
Student.class
1 Class实例的获得方式
A Java类只按需加载一次,任何一种方式获得的class的实例都是同一个。
B 3 种方法: 1 类的.class属性
2 对象的getClass() 方法
3 Class类的静态寻找方法: Class.forName();
ClassDemo.java三种加载类的方法。
class Foo{
static{
//这句话在加载时间执行,也就是说,静态的方法都是在加载期间调用 的。无论使用几次,它只加载一次。
System.out.println("load foo!");
//它永远只执行一次。
}
//得到的是全部的公有方法。包括父类 的。
Method[] methods = cls.getMethods();
//表示此类所有声明方法的 Method 对象的数组 ,不包括父类的。
Method[] methods2 = cls.getDeclaredMethods();
在运行期间运行想运行的类的想用的方法。
2 Class实例的用途
反射应用:
简单的测试框架实现
Property 属性
其实它就是一个文本文件,我们可以用流一行一行的读取然后截取字符串。但是比较
麻烦,所以java有一个特定的类,其实它就是
//Properties 是一个Map集合,相当于Map<String, String>
//Properties 是一个Map集合,相当于Map<String, String>
/* load(InputStream inStream)
从输入流中读取属性列表(键和元素对)。*/
properties.load(new FileInputStream("src/day21/config.properties"));
load() 解析 *.properties -> Properties 对象
save() 保存 Properties 对象 -> *.properties
store()
list() 在指定流上输出全部的属性信息
getProperty(String key) 获取指定属性
setProperty(key, value) 修改指定属性
网络编程
服务(Service), 如: 食堂, 商店 Host
// 食堂, 商店一定是一直开着等着我去买东西,即使我不去,它也要一直开着。
WEB
Client -> Service
1 TCP 编程
食堂卖饭 服务器
A 食堂有地址 A IP地址(域名)
B 每个食堂,有提供不同服务类型窗口 B 不同的端口(ServerSocket) 65535,
C 每个窗口可以为多个同学服务 C 每个端口可以建立多个Socket实例,
每个实例代表一个对客户的服务
学生买饭的过程 客户端连接
A 找到一个食堂 A 使用域名(IP)找到指定的服务器
B 找到一个窗口 B 使用服务器的端口号找到服务端口
C 请求指定服务 C 建立Socket 对象.
D 有窗体提供对应的反馈 D 使用流与服务器通信.
必须先启动服务器端,然后再启动客户端。
过程:客户端由计算机系统任意取一个端口号去访问IP的8900的指定端口,连接完成以后
客户和服务器端各会产生一个socket对象,并且会有一对输入输出流,
客户端的输入是服务器的输出,客户端的输出是服务器的输入,(所以有有个客户访问会产生4个流)
在建立完成以后,把服务器端口的一个具体连接实例派发成一个线程。
如果再一个客户端去连接这个端口,与上面的那个是一样的。
//客户端应该写两个线程,一个监听输入流,一个监听输出流。
getBytes():
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
getBytes(Charset charset)
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
网络编程实例:
简单的 FTP 协议实现(?, ls, get)
A 服务器请求是文本行请求
B 服务器响应包含两个部分: 第一行是服务器响应头, 头有两种:
1 text,num 是文本响应结果, num是响应中包含的文本行数.
2 file,size,filename 是文件数据响应结果, size是响应流中文件的长度.
反射 (自省) 是自我管理的机制
java 代码管理Java的类和方法等
数据库就是表管理表的问题。
java中有一个类管理类。
名词->类
名词: 类, 方法, 属性, 构造器
Class: Class, Method, Field, Constructor
//所以java中有一个类就叫类,有一个方法就叫方法类,属性就叫属性类,构造器就叫构造器类。
任何类都是Class的具体实例.
类加载到内存中的结果是Class的实例, 是一个对象.
类可以作为对象管理.
//Student这个类就是Class的一个实例,肯定可以对一内存中的一个实例进行管理 。
Student s = new Student();
Class cls = Student.class;
Student.class
1 Class实例的获得方式
A Java类只按需加载一次,任何一种方式获得的class的实例都是同一个。
B 3 种方法: 1 类的.class属性
2 对象的getClass() 方法
3 Class类的静态寻找方法: Class.forName();
ClassDemo.java三种加载类的方法。
class Foo{
static{
//这句话在加载时间执行,也就是说,静态的方法都是在加载期间调用 的。无论使用几次,它只加载一次。
System.out.println("load foo!");
//它永远只执行一次。
}
//得到的是全部的公有方法。包括父类 的。
Method[] methods = cls.getMethods();
//表示此类所有声明方法的 Method 对象的数组 ,不包括父类的。
Method[] methods2 = cls.getDeclaredMethods();
在运行期间运行想运行的类的想用的方法。
2 Class实例的用途
反射应用:
简单的测试框架实现