零基础学习java(九)

java语言基础知识

1:字符编码
(1)编码表:由字符及其对应的数值组成的一张表。
(2)常见的编码表: ASCII ISO-8859-1gb2312gbk       utf-8
(3)编码问题:A:IO流中的编码问题。B:String类中的编码问题,统一编码最好。
2:Properties
(1)是键值对形式的属性列表。是Map体系的一个集合类。  可以和IO流进行结合使用。
(2)例:A:作为Map集合的使用。
B:作为集合的特有功能使用:a:setProperty(String key,String value)。b:getProperty(String key)
 stringPropertyNames()。
C:和IO流结合使用:a:load() 把文件中的数据加载到集合中b:store() 把集合中的数据存储到文件中
3:序列化和反序列化流
(1)序列化:把对象按照流一样的方式存储到文件中或者在网络中传输。  简记:把对象按照流一样操作。
反序列化:把文件中或者网络中的流数据还原成对象。  简记:流数据还原对象。
(2)对象怎么才能实现序列化,让对象所属的类实现序列化接口。
(3) 看到一个类实现了序列化接口,就要知道,该类的对象可以被序列化流进行操作。将来还可以通过反序列化流还原。如果想在序列化后,对java文件做一些简单的改动,不影响以前写过的数据,那么,就应该在java文件中给出固定的序列化id值。而且,这样做了以后,还可以解决黄色警告线问题。
4:其他的几个了解的流对象
(1)DataOutputStream/DataInputStream
可以把基本数据类型的数据写到文件,也可以还原为基本的数据类型的数据。
只不过,要注意还原时候的顺序和写的顺序要一致。
(2)ByteArrayOutputStream,ByteArrayInputStream。(3)CharArrayWriter,CharArrayReader

5:多线程
(1)多线程:应用程序有多条执行路径。
进程:正在运行的应用程序。线程:应用程序的执行路径,执行单元。

多线程:一个应用程序有多条执行路径。实现方案A:继承Thread类B:实现Runnable接口
线程的随机性原理: CPU在多个程序间做着高效的切换来执行程序的。
线程的生命周期:       新建 -- 就绪 -- 运行 -- 死亡运行 -- 阻塞 -- 就绪
线程安全问题的产生及解决:a:多线程环境b:是否有共享数据c:共享数据是否被多条语句操作
解决方案: a:同步代码块b:同步方法c:JDK5以后的Lock锁。
同步的锁对象: 代码块:任意对象 方法:this静态方法:类名.class
线程间的通信: 不同种类的线程针对同一个资源的操作。
进程:正在运行的应用程序,系统会为其分配空间。    每个进程具备独立的空间。
线程:应用程序的执行单元,执行路径。      线程共享同一个进程的资源。
同步代码块:
synchronized(锁对象) {
需要被同步的代码。
}
A:锁对象可以是哪些
Object的对象。这个锁对象可以是任意对象。但是一定要注意,多个线程必须使用的是同一个锁对象。
B:需要被同步的代码是哪些:共享数据共享数据是否有多条语句操作。

6:网络编程
(1)用编程语言来实现计算机的资源共享和信息传递。
计算机网络:多台独立的计算机用网络通信设备连接起来的网络。实现资源共享和数据传递。
(2)网络通信的三要素:A:IP地址计算机在网络中的唯一标识。现在使用的是:"点分十进制"
B:端口 应用程序的的标记。C:协议通信的规则。
UDP:不建立连接,数据打包传输,数据有限制,数据不可靠,速度快。
TCP:建立连接,数据无限制,数据可靠,速度慢。
(3)UDP发送和接收数据:先开启谁都无所谓。
步骤:1:创建发送端的Socket服务对象。:2:创建数据并把数据打包。3:发送数据。 4:释放资源。
代码体现:

DatagramSocket ds = new DatagramSocket();
byte[] bys = "udp,你好".getBytes();
DatagramPacket dp = new DatagramPacket
(bys,bys.length,InetAddress.getByName("113.255.218.251"),12345);
ds.send(dp);
ds.close();
B:接收端
步骤:1:创建接收端的Socket服务对象。2:创建数据包。3:接收数据。4:解析数据。5:释放资源。
        代码:
 DatagramSocket ds = new DatagramSocket(12345);
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys,bys.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
System.out.println(ip+"---"+data);
ds.close();
(4)TCP发送和接收数据必须先开启服务器。
步骤: 1:创建客户端Socket对象。2:获取输出流。3:写数据。 4:释放资源。
Socket s = new Socket("113.255.218.251",12345);
OutputStream os = s.getOutputStream();
os.write("tcp,我来".getBytes());
s.close();

服务器端:步骤:1:创建服务器Socket对象。2:监听客户端连接。3:获取输入流。4:读取数据。5:释放资源。
ServerSocket ss = new ServerSokcet(12345);
Socket s = ss.accept();
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys,0,len);
System.out.println(data);
s.close();
ss.close();

你可能感兴趣的:(零基础学习java)