JavaSE
文章平均质量分 60
我爱布朗熊
目前是个学生,仍然在学习阶段
展开
-
2.2 网络多线程(私聊、群发、发送文件、推送新闻、离线留言)
Data/*** 消息类型:发送文件、纯文本、视频聊天....*//**发送者*//*** 接收者*//*** 消息内容*//*** 发送时间*//*** 扩展好文件香菇那的成员变量*///字节数组存储文件字节//文件大小的长度初始化为0//文件的目的地是哪个位置//传输的是哪个文件(原文件路径)原创 2023-12-09 23:08:35 · 1045 阅读 · 0 评论 -
2.1 网络编程-多用户通信系统(用户登录、拉取在线用户、无异常退出)
需要技术Java面向对象编程网络编程多线程IO流数据集合需求分析用户登录拉取在线用户列表无异常退出私聊群聊发文件服务器推送新闻当客户端A和服务端建立连接后,两边都会建立一个Socket(也就是一边一个Socket)当客户端B和服务端建立连接后,两边也都会建立一个Socket,此时服务端有两个socket(一个服务端A的,另一个是服务端B的)我们在通讯的时候,怎么保证客户端的两个Socket一直被持有(占有)呢?原创 2023-12-08 00:40:05 · 968 阅读 · 0 评论 -
1.网络编程基础知识 - 基础概念、TCP网络通信、UDP网络通信
根据IP地址的组成=网络地址+主机地址,对IPv4进行分类IP地址分类ABC类比较常见,DE类比较特殊A类表示的主机要多一点,因为有24位主机号,可以表示主机 0~(2^24)-1个主机B类用16位也就是2个字节来表示网络号,并且前面两位固定10;也用2个字节来表示主机号C类用24位也就是3个字节表示网络号,并且前面三位固定号码110;主机号用8位也就是1个字节来表示,可以表示0~255个主机D类多播组号类似广播组号E类保留起来后面使用根据上面划分的规则,可以计算出IPv4各个类型的表示范围。原创 2023-11-30 15:14:53 · 1507 阅读 · 0 评论 -
IO + File 详细基础知识
存储和读取数据的解决方案用于读写文件中的数据(可以读写文件,或网络中的数据…) 写 - output 读 - input这个读和写的参照物是以“程序”为参照物,或者说以“内存” 用于读写数据(本地文件,网络)IO流按照流向可以分类哪两种流? 输出流: 程序 - > 文件 输入流: 文件 -》 程序IO流按照操作文件的类型可以分类哪两种流? 字节流:可以操作所有类型的文件 字符流: 只能操作纯文本文件纯文本文件。原创 2023-05-13 21:11:08 · 930 阅读 · 0 评论 -
JDK8——新增时间类、有关时间数据的交互问题
此套API设计合理,是线程安全的。新的日期及时间API位于java.time包中,下面是一些关键类。原创 2023-04-10 00:09:52 · 820 阅读 · 0 评论 -
计算机基础——二进制、八进制、十六进制以及相互转换
0-9 对应 0-9 , A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母字母A-F。将上面的箭头倒过来看就行了,先-1,然后除符号位外哥哥位取反。下面有一个例子:知道补码推原码,以后如果告诉我们一个二进制数,我们就认为是补码。计算机中的二进制则是一个非常微小的开关,用"开"来表示1,“关”来表示0。整数的原码、反码、补码都相同,负数的补码是其反码+1。基数为2,进位规则为"逢二进一",借位规则是"借一当二"。最高位为0,即整数,最高位为1,即负数。将110A转换成十进制。原创 2023-04-06 22:04:06 · 1532 阅读 · 0 评论 -
JavaSE——反射内容大全
注解Annotation 是一种引用数据类型,编译之后也生成xxx.class文件自定义注解的语法格式修饰符列表 @interface 注解类型名{}//自定义注解注解使用语法格式@注解类型名注解可以出现在类上、属性上、方法上、变量上等....注解还可以出现在注解类型上int i =100;//自定义注解/*** 我们通常在注解当中定义属性,以下是name属性* 看着像方法但其实不是* @return*/// 如果我们没有给age属性赋值,则默认为25。原创 2023-03-25 20:47:39 · 482 阅读 · 0 评论 -
JDK 8新特性——Lambda表达式
在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作”面向对象强调“必须通过对象的形式来做事情”,做事情之前首先要创建一个对象函数式思想则尽量忽略面向对象的复杂语法:”强调做什么,而不是以什么形式去做”,我们要学习的Lambda表达式就是函数时思想的体现可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。可选的大括号:如果主体包含了一个语句,就不需要使用大括号。原创 2023-03-07 14:06:53 · 3022 阅读 · 0 评论 -
java基础教程——Stream流
Collectors是一个工具类,实现各种有用的还原操作的Collector,例如将元素累积到集合中,根据各种标准汇总元素等。一个流后面可以跟随零个或多个中间操作,其目的主要是打开流,做出某种程度的数据过滤/映射,然后返回一个新的流,交给下一个操作使用。Predicate接口中的方法 boolean test(T t) : 对给定的参数进行判断,返回一个布尔值。Consumer接口中的方法 void accept(T t): 对给定的参数执行此操作。super T,A,R>是一个接口。原创 2023-03-06 17:47:15 · 546 阅读 · 0 评论 -
JavaSE——多线程详细
一个应用程序,一个进程就是一个软件:一个进程中的执行场景/执行单元对于java程序来说,当在DOS命令窗口中输入java HelloWorld回车之后,会先启动JVM,而JVM就是一个进程,JVM再启动一个主线程调用main方法,同时再启动一个垃圾回收线程负责看护,回收垃圾,也就是说java程序中至少有两个线程并发,一个是垃圾回收线程,一个是执行main方法的主线程。原创 2022-12-12 11:24:32 · 629 阅读 · 0 评论 -
JavaSE——遍历Map集合
此方法是把map集合直接全部转换成Set集合。此set集合中的类型是Map.Entry。原创 2022-11-16 13:03:39 · 191 阅读 · 0 评论 -
JavaSE——异常
程序执行过程中发生了不正常的情况,而这种不正常的情况叫做异常,以类的形式存在第一步:编写一个类继承Exception或RuntimeException发生的概率高就继承Exception,发生的概率低就继承RuntimeException第二步:提供一个无参,一个String参数的有参}}}MyException e = new MyException("用户名不可为空");}}原创 2022-11-15 19:11:52 · 651 阅读 · 0 评论 -
JavaSE——枚举类型
枚举原理:实际上在使用关键字enum创建枚举类型并编译之后,编译器会给我们生成一个相关的类(名.class),这个类继承了Java API中的java.lang.Enum类,也就是说通过关键字enum创建的枚举类型在编译之后事实也是一个类类型,而且该类继承自java.lang.Enum类除此之外,编译器还帮我们生成几个该类型的实例对象,也就是说每种枚举常量也是实实在在对象,只不过代表的内容不一样。原创 2022-11-15 15:23:50 · 141 阅读 · 0 评论 -
JavaSE——数字格式化、产生随机数字、生成验证码
属于大数据,精度极高,不属于基本数据类型,数据java对象,专门用于财务软件当中。财务软件中double是不够用的,使用java.math.BigDecimal。产生一个【0,100】内的随机数。保留四个小数位,不够补零。原创 2022-11-15 13:08:20 · 760 阅读 · 0 评论 -
JavaSE——包装类、装箱与拆箱
java中八种基本数据类型对应八种包装类型,属于引用数据类型,父类是java.lang.Number,间接继承Object(除了Character、Boolean以外,Character、Boolean直接继承Object)调用某个方法需要传入一个数字,但是数字是基本数据类型,但是方法的参数是Object引用类型,此时便需要包装类。如下图所示,当我们使用Integer类时,有下面两个构造方法,分别可传入int类型参数、String类型参数。,又引入八种基本类型对应的八种包装类型,如下所示。原创 2022-11-15 12:32:34 · 371 阅读 · 0 评论 -
JavaSE——选择排序算法、冒泡排序法、二分查找法
选择排序法核心思想:将最小的移动到最左侧,依次排开。冒泡法核心思想:将最大的移动到右侧。二分查找法建立在排序的基础上,效率高于遍历查找原创 2022-11-14 21:47:53 · 176 阅读 · 0 评论 -
JavaSE——访问控制权限
如下图所示,我们把这两个类不放在一个包下,然后创建Student对象,发现根本不会出现age这个实例变量,其余情况均会出现。虽然上面的都不可访问,我们如果其他情况使用的话,可类似于private使用时的get和set方法调用。访问,只能在本类中访问,如果是属性的话,可以调用get和set 方法调用。如下图所示,当两个类不再同一个类的时候,也不能访问。类 public和默认。下面我们咋来尝试继承,依然是不可以的。都可以访问,不论是属性还是方法。属性 四个都能用。方法 四个都能用。原创 2022-11-09 22:04:46 · 311 阅读 · 0 评论 -
JavaSE——final关键字与常量
final修饰的实例变量一般添加static修饰,联合修饰的变量称为常量常量名建议全部大写,每个单词之间采用下划线连接常量和静态变量都存储在方法区,并且都是在类加载时初始化因为final修饰的实例变量一旦改变之后便不可更改,这样的话当我们new100个对象时,这个final修饰的实例变量全是一模一样的,这样很占用内存,不如与static共同修饰实例变量原创 2022-11-07 17:58:18 · 623 阅读 · 0 评论 -
Java中八种基本数据类型及其区别、字符编码
八种基本数据类型又分成四类:布尔型:boolean字符型:char区别: 占用的空间大小不同byte占用1个字节、short占用2个字节、int占用4个字节、long占用8个字节float占用4个字节、double 占用8个字节boolean占用1个字节char占用2个字节原创 2022-11-05 18:08:06 · 1981 阅读 · 0 评论 -
Java加载与执行原理剖析
编译期: 在硬盘某个位置创建.java文件 在使用文本编辑器打开java文件 在文件中编写符合java语法规则的源代码 保存 使用编译器(javac JDK安装后自带)对java文件进行编译 如果java文件编写的源代码是符合语法规则的,编译会通过,如果不符合语法规则,编译器会报错且不会生成class文件,只有编译通过后才会生成class文件,一个java源文件是可以生成多个class文件的原创 2022-11-05 16:52:05 · 602 阅读 · 0 评论 -
JDK、JRE、JVM三者之间的关系
因为Java程序员开发完程序之后,要测试这个程序,让这个程序运行起来,需要JRE。所以JDK安装的时候内部自带一个JRE。,但是JDK和JRE都是可以独立安装的,没有独立的JVM安装包。JVM是不能独立安装的。原创 2022-11-05 15:35:02 · 389 阅读 · 0 评论 -
JavaSE——Collection迭代器的使用及源码分析、集合删除元素、Collection常用方法
存放在集合中的类型,一定要重写equals方法,下面我们会在contains方法中解释Collection中能存放什么元素? 没有使用泛型之前,Collection中可以存储Object所有的子类型 使用了泛型之后,Collection中智能存储某个具体的类型 集合中不能直接存储基本数据类型,也不能存储java对象,只是存储java对象的内存地原创 2022-10-20 12:15:15 · 945 阅读 · 0 评论 -
JavaSE——集合、集合继承结构图
数组其实就是一个集合,集合实际上就是一个容器,可以来容纳其他类型的数据;集合是一个容器,是一个载体,可以一次性容纳多个对象;集合不能直接存储基本数据类型,另外集合也不能直接存储java对象;集合中存储的都是java对象的内存地址(或者说集合中存储的是音容);集合是一个对象,也有一个内存地址集合在java.util.*包下我们使用list.add(100)的时候,添加的并不是int类型,而是Integer类型,自动装箱了1.1 集合我们常常会使用在什么地方?原创 2022-10-19 17:43:51 · 1765 阅读 · 3 评论 -
JavaSE——java.util.Date日期类演示以及常用方法与操作
这个记得导包java.util.Date,只有在java.lang包下的类才不用导入System.out 其中out是System类的静态变量System.out.println() 其中println() 方法不是System类的,是PrintStream类的方法,后面会学System.gc() 建议其中垃圾回收器System.currentTimeMillis() 获取自1970年1月原创 2022-10-18 22:04:45 · 2233 阅读 · 0 评论 -
JavaSE——String类详解(java.lang.String)
String字符串,是引用数据类型,非基本数据类型数组, 引用数据类型:如类,接口,共同特点是,他们的字面值并不是一个“值”而是一段地址。 基本数据类型: 整数类型:byte,1字节,8位,最大存储数据量是255,存放的数据范围是-128~127之间。 整数类型:short,2字节,16位,最大数据存储量是65536,数据范围是-32768~32767之间。 整数类型:int,4字节,32位,最原创 2022-10-18 19:15:05 · 1241 阅读 · 0 评论 -
JavaSE——StringBuffer与StringBuilder拼接字符串详细解释
但是我们下面又追加了一个“wohenhao”,因为StringBuffer下面的byte数组并没有被final修饰,所以此时就会对字符串进行改变,将“6666”与“wohenhao”进行拼凑,而我们那个“6666”字符就会被垃圾回收机给回收掉,但是!首先我们刚开始是什么也没有的,我们追加了一个6666,但是不是字符串的形式,此时会把他转化成字符串,现在我们字符串常量池中就有“6666”这个字符串了;但是我们会发现,我们在字符串拼接的时候出现了两个字符串的形式,那这两个字符串会出现在字符串常量池中么?原创 2022-10-18 20:50:14 · 1893 阅读 · 0 评论 -
JAVA中集合中的contains(Object o)方法解释
public class containsText { public static void main(String[] args) { /*boolean contains (Object o )*/ Collection c = new ArrayList(); /*创建一个集合*/ String s1 = new String("abc"); String s2= new String("def"); Stri.原创 2022-03-14 20:09:00 · 1373 阅读 · 0 评论 -
JavaSE——集合删除元素以及remove()方法解析
public class removeText { public static void main(String[] args) { Collection c = new ArrayList(); String s1 = new String("hello"); c.add(s1); String s2 = new String ("hello"); c.remove(s2); System.out..原创 2022-03-14 20:29:38 · 3252 阅读 · 0 评论 -
java集合中remove()方法解释
public class removeText { public static void main(String[] args) { Collection c = new ArrayList(); String s1 = new String("hello"); c.add(s1); String s2 = new String ("hello"); c.remove(s2); System.out..原创 2022-03-14 20:41:57 · 3855 阅读 · 0 评论 -
Java中finally的易错点
细心的朋友已经发现了下述三段代码的不同。不同之处就是在于 静态方法m()里面的try...finally不同那么请问:这三段不同的代码,结果是否相同?public class finallyText { public static void main(String[] args) { int result = m(); System.out.println(result); } public static int m() { .原创 2022-03-15 19:41:57 · 434 阅读 · 0 评论 -
Java中TreeSet集合中Comparable和Comparator对比
我们首先了解一个TreeSet集合(也是一个可排序集合)①底层是一个TreeMap的数据结构②TreeMap底层是一个二叉树的数据结构③放到TreeSet集合中的元素,等同于放到TreeMap集合key部分④TreeSet集合中的元素:无序不可重复,但是可以按照元素的大小顺序自动排序下面我们来看看第四条,究竟是怎么可排序的要求:当年龄一样的时候,按照姓名的首字母排序/*这里加泛型之后,下面的comparaTo方法才不会出现错误*//*这里的泛型和本类的类名相同,因为我们比原创 2022-03-17 19:29:11 · 1063 阅读 · 0 评论 -
Java中FileInputStream使用
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;/*FileInputStreamTest 文件字节输入流 任何文件都可以采用这个流读取*//*字节输入流,是从硬盘向内存中读入*/public class FileInputStreamTest { public static void main(String[] args) { .原创 2022-03-17 20:32:05 · 5710 阅读 · 0 评论 -
FileOutputStream 文件字节输出流
public class FileOutputStreamTest { public static void main(String[] args) { FileOutputStream fos = null; try { /*为什么会加true? 在原文件的基础上追加内容,不加true的话,会将原文件清空然后再追加内容*/ /*在此路径下,如果文件不存在,会自己创建一个*/ fos = ne.原创 2022-03-17 20:51:17 · 1849 阅读 · 0 评论 -
利用IO流Copy文件
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/*利用字节输入输出流完成文件的拷贝*/public class CopyTest01 { public static void main(String[] args) { FileInputStream fis = n.原创 2022-03-17 22:02:52 · 380 阅读 · 0 评论 -
Java中的FileReader 和FileWriter文件字符输入流和输出流
/*文件字符输入流 只能读取普通文本* 读取文本内容的时候,比较方便和便捷*/public class FileReaderTest { public static void main(String[] args) { FileReader fr = null; try { /*读入的文件的目录,这个文件只能是普通的文本文件*/ fr = new FileReader("E:\\IDEA\\Java\\Stud.原创 2022-03-19 18:38:01 · 416 阅读 · 0 评论 -
Java中利用FileReader和FileWriter进行Copy文件
import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/*利用文件字符输入流和输出流拷贝文件 Java.test*/public class CopyTest02 { public static void main(String[] args) { FileReader fr = null; .原创 2022-03-19 19:02:30 · 566 阅读 · 0 评论 -
Java中BufferedReader和BufferedWriter 以及InputStreamReader 和OutputStreamWriter的使用
首先是 BufferedReader流的使用,如下:import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;/*带有缓冲区的字符输入流 自带缓冲区*//*使用这个流的时候不需要自定义byte数组或char数组*/public class BufferedReaderTest { public s.原创 2022-03-19 19:50:45 · 4101 阅读 · 0 评论 -
Java中DataOutputStream和DataInputStream的使用
import java.io.DataOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/*数据专属流,将数据联通数据的类型一并写入文件*/public class DataOutputStreamTest { public static void main(String[] args) { DataOu.原创 2022-03-19 20:19:19 · 7086 阅读 · 0 评论 -
Java中PrintStream流使用 以及使用PrintStream流在文件中输入时间
下面的代码我们先了解一下PrintStream流import java.io.PrintStream;/*标准输出流*//*标准字节输出流,默认输出到控制台*/public class PrintStreamTest { public static void main(String[] args) { //联合写 System.out.println("hello word"); // 分开写 PrintStream ps =原创 2022-03-19 21:06:54 · 738 阅读 · 0 评论 -
java中利用IO流和file类拷贝目录和文件
import java.io.*;/*拷贝目录 利用File类中的方法拷贝目录*/public class CopyTest { public static void main(String[] args) { File srcFile = new File("D:\\a"); //拷贝源 File destFile = new File("E:\\IDEA"); //要拷贝到的目的地,要拷贝到这个目录下 就是E:\IDEA\a //.原创 2022-03-20 14:34:00 · 743 阅读 · 0 评论