进击的网络编程(二)

TCP通信原理

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信

JAva对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信

Java为客户端提供了Socket类,为服务器端提供了ServerSocket类

TCP发送数据

步骤:

  • ① 创建客户端的Socket对象
  • ② 获取输出流,写数据
  • ③ 释放资源
阅读更多...

进击的网络编程(一)

一、网络编程

计算机网络

指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

网络编程

在通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换

网络编程三要素

①IP地址

要想让网络上的计算机能相互通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。++也就是设备的标识++

阅读更多...

Java多线程(线程同步)

1、 解决多线程安全问题(同步代码块)

  • 基本思想:让程序没有安全问题的环境

  • 具体实现:把多条语句操作共享数据的代码给锁起来(Java提供了同步代码块方式),让任意时刻只能有一个线程执行即可

1.1 同步代码块

锁多条语句操作共享数据,可以使用同步代码块实现

  • 格式:
    1
    2
    3
    synchronized(任意对象){
    //多条语句操作共享数据的代码
    }
  • synchronized(任意对象):相当于给代码加锁,任意对象就可以看成是一把锁
阅读更多...

Java多线程(实现多线程)

一、实现多线程

1.1 进程

是系统进行资源分配和调用的独立单位(通俗讲就是操作系统中执行的一个子程序,包含了三部分:虚拟CPU、代码、数据)

  • 是系统进行资源分配和调用的独立单位
  • 每一个进程都有它自己的内存空间和系统资源

1.2 线程

是进程中的单个顺序控制流,是一条执行路径

  • 单线程:一个进程只有一条执行路径
  • 多线程:一个进程有多条执行路径

1.3 多线程的实现方式

方式1:继承Thread类

阅读更多...

从流开始的IO世界生活(四)

一、标准输入输出流

System类中有两个静态成员变量

  • public static final InputStream in:标准输入流。通常该流对应于键盘输入或由主机环境或用户指定的另一个输入源
  • public static final PrintStream out:标准输出流。通常该流对应于显示输出或由主机环境或用户指定的另一个输出目标

    标准输入流

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package special;

    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    public class demo1 {
    public static void main(String[] args) throws IOException{
    //输入中文会乱码,所以要用字符输入流
    InputStream is=System.in;
    //用转换流将字节流转换为字符流
    InputStreamReader isr=new InputStreamReader(is);

    //用字符缓冲输入流特有方法来实现读取一行
    BufferedInputStream bis=new BufferedInputStream(is);
    BufferedReader br=new BufferedReader(isr);
    System.out.println("请输入一个字符串");
    String line=br.readLine();
    System.out.println(line);
    }
    }
    阅读更多...

从流开始的IO世界生活(三)

一、集合到文件

将ArrayList集合中的字符串数据写入到文本文件。要求:每一个字符串元素作为文件中的一行数据

集合到文件(改进版)

需求:把ArrayList集合中的学生数据写入到文本文件。要求:每一个学生对象的数据作为文件中的一行数据

阅读更多...

从流开始的IO世界生活(二)

一、字符流

为何会出现字符流

由于字节流操作中文不方便

  • 字符流=字节流+编码表

用字节流赋值文本文件时,文本文件也会有中文,但不会出现乱码问题,原因是最终底层操作会自动进行字节拼接成中文。

如何识别中文?

  • 汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package zi_fu_liu;

import java.io.IOException;
import java.util.Arrays;

public class Chinese {
public static void main(String[] args) throws IOException {
String a="你好";
byte[] b=a.getBytes("GBK");
byte[] c=a.getBytes("UTF-8");
System.out.println(Arrays.toString(b));//[-60, -29, -70, -61]
System.out.println(Arrays.toString(c));//[-28, -67, -96, -27, -91, -67]
}

}
阅读更多...

从流开始的IO世界生活(一)

一、File类

File:是文件和目录路径名的抽象表示

  • 文件和目录是可以通过File封装成对象的
  • 对于File而言,其封装的并不是一个真正的文件,仅仅是一个路径而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的

常用构造方法

方法名 说明
File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
File(String parent,String child) 从父类路径名字符串和子路径名字符串创建新的File实例
File(File parent,String child) 从父抽象路径名和子路径名字符串创建新的File实例
阅读更多...

请我喝杯咖啡吧~

支付宝
微信