Java笔记枚举类在设计一个季节对象的时候,我们可以用传统的方式实现
123456789101112public class Enumeration { Season season = new Season("春天", "温暖");}class Season { private String season; private String description; Season(String season, String description) { this.season = season; this.description = description; }}
但是众所周知,季节只有四季,不能体现只有四个这个特征,为了解决这个问题,我们可以使用枚举类来定义季节,设计几个有限的值
枚举定义是一组常量的集合:枚举是一种特殊的类,里面只包含一组有限的特定对象
自定义枚举
1.不需要提供set方法,因为枚举对象通常是只读的
2.写...
Java笔记抽象类使用场景当父类方法不确定的时候,需要声明但是不知道该如何实现的时候,可以将其声明为抽象方法,这个类就是抽象类
1234567891011class Animal { private String name; public Animal(String name) { this.name = name; } public void eat() { System.out.println("吃一个..."); }}
这个时候可以将该方法设计为抽象方法,所谓抽象方法就是没有实现的方法(没有方法体)
123456789abstract class Animal { private String name; public Animal(String name) { this.name = name; } public abstract void eat()...
词法分析正规式2.1编写有关正规式的调查报告(1) grep/sed 命令对正规式的支持调查,调查与通配符的区别;grep:
支持基本正则表达式(BRE)和扩展正则表达式(ERE)。
BRE 默认支持,ERE 需要通过 -E 选项启用。
12grep '^[0-9]\+' file.txt # 查找以数字开头的行(BRE)grep -E '^[0-9]+' file.txt # 查找以数字开头的行(ERE)
区别:
通配符运用的场景是匹配文件名称,而正规式往往匹配文本内容
(2) 各种高级程序设计语言对正规式的支持,含 C/C++,Java、Python、Rust 与 go 等语言;Java
在Java的 jdk 中拥有java.util.regex 包 ,可以通过实例化Pattern类调用正规式方法,以下是代码示例
1234import java.util.regex.*;Pattern pattern = Pattern.compile("[+-]?[0-9]+(\\.[0-9]*)?([eE][...
听课笔记初级部分学习完成终于完成了Java网络通讯的大作业,将整个项目的大致流程掌握,可以熟练的使用socket套接字进行TCP,UDP的网络编程,但是由于在进行项目的时候没有进行前置知识的学习,导致在多线程,异常处理,IO流的部分仍然无法自己独立完成,从这一课我将开始进入Java编程高级部分。
类变量和类方法类变量以下是一个代码示例
1234567891011121314151617181920212223242526272829303132package com.npu.static_;public class ChildGame { public static void main(String[] args) { int count = 0;//记录有几个小孩加入游戏 Child child1 = new Child("1"); child1.join(); count++; Child child2 = new Child("2"); ...
多用户通信系统设计https://github.com/thrinisty/Multi-user-communication-system.git
功能实现1.用户登录
2.拉取用户列表
3.私聊
4.群聊
5.发文件
思路分析当客户端与服务端产生链接的时候,服务端会产生一个socket,必须要创建一个线程来持有并管理产生的socket
服务器端的多个线程需要一个管理线程的集合,用以后续的服务器推送新闻
每一个客户端也可能会创建多个线程,和服务器端通信,需要客户端线程的管理集合(hashmap)
服务端1.当客户端连接到服务器时得到了socket
2.启动了一个线程,该线程持有socket,socket是线程的属性
3.为了管理线程,用集合hashmap管理线程,将线程放入集合
客户端1.和服务端通信的时候使用对象的方式,可以使用对象流来进行读写
2.当客户端连接到服务器端时,会得到socket
3.启动一个线程,该线程持有socket
4.为了管理线程,用集合hashmap管理线程,将线程放入集合
代码实现1.用户登录创建User对象,表示一个用户信息(如果对象要在IO中传输...
听课笔记UDP网络通信编程不同于TCP通信,UDP不需要建立连接,UDP数据包中含有发送的目标地址
1.类 DatagramSocket 和 DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序
2.UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报有一定可以能够到达目的地,也不确定在什么时候可以到达
3.DatagramPacket 对象封装了UDP数据报,在数据包中包含了发送端和接收端的IP地址以及端口号
4.UDP协议中的每一个数据报都给出了完整的信息地址,因此无需建立发送方和接收方的链接吧
UDP特殊说明1.UDP中没有明确的服务端和客户端,演变为数据的发送端和接收端
2.接收数据和发送数据通过DatagramSocket对象完成
3.发送数据时会将数据封装在DatagramPacket对象中,称之为装包
4.当接收到数据包后,需要进行拆包取出数据
5.DatagramSocket可以指定在哪个端口接收数据
UDP通信流程1.建立发送端和接收端
2.发送数据前建立数据包和数据报
3.调用数据包的...
听课笔记文件传输Java中利用套接字在服务器与客户端间进行文件传输
在这里需要使用到文件的输入输出流
客户端上:
客户端接收文件的输入流,用工具类转化为字节流进行传输
服务器上
在服务器端上我们要将收到的输入流使用功能类转化为字节流
再将转化后的字节数组用文件输出流送到一个特定的位置
客户端代码
123456789101112131415161718192021222324252627282930package com.file;import java.io.*;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;public class Client { public static void main(String[] args) throws Exception { Socket socket = new Socket(InetAddress.getLocalHost(),8899); String filePath...
Java网络多线程IP地址定义:用于唯一标识网络中的每一台计算机
查看IP地址的指令:ipconfig
IP地址组成:网络地址 + 主机地址
A类地址 0 + 7位网络号 + 24位主机号
B类地址 b10 + 14位网络号 + 16位主机号
C类地址 b110 + 21位网络号 +8位主机号
D类 b1110 + 28位多播组号
E类 b11110 + 27位保留位
域名www.baidu.com
将ip地址映射为域名,方便记忆
端口号概念:用于标识计算机上某个特定的网络程序
通过IP + 端口即可访问一个特定网络上的特定程序
表示形式:以整数形式表示:0—65535 (两个字节)
0-1024被占用(在实际开发中不使用这一些端口)
网络通讯协议在网络编程中数据的组织形式就是协议
TCP/IP传输控制协议/因特网互联协议,又称网络通讯协议
网络层级以及对应协议
TCP与UDPTCP通过三次握手建立连接,四次握手释放连接
TCP协议进行通信的两个应用进程:客户端、服务端
UDP将数据,源,目的封装为数据包,不需要建立连接
每一个数据包的大小限制为64K以内...
听课笔记零钱通综合案例目的是使用Java开发零钱通项目,可以完成收益入账,消费,查看明细,退出等功能
1.显示菜单,可以显示菜单,给出对应提示12345678910111213141516171819202122232425262728293031323334package com.smallchange;import java.util.Scanner;public class SmallChangeSys { public static void main(String[] args) { boolean loop = true; do { System.out.println("==========零钱通=========="); System.out.println("\t\t1 零钱通明细"); System.out.println("\t\t2 收益入账"); ...