自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 java多人聊天室与网络画板

本篇主要是对本人前一篇通信博客在部分功能和代码结构上的优化,以下为前篇博客的地址:java通信—网络聊天室&网络画板(简陋版)一、代码结构上的优化:对前篇博客服务器类中最后流的关闭上代码的不规范,现进行规范处理; 针对不必要的部分,将Try/catch的范围扩大至while死循环外面,减少在while(true)死循环中使用Try/catch进行异常处理的情况进而一定程度上提升效率; 改用线程池的结构,提前的创建好线程以及复用线程,一定程度上提高程序的响应速度和减少线程频繁创建和销毁

2021-11-28 21:35:35 378

原创 java制作哈夫曼编码器

说到哈夫曼编码,我们先了解一下什么是哈夫曼树:哈夫曼树(Huffman Tree)是在叶子结点和权重确定的情况下,带权路径长度最小的二叉树,也被称为最优二叉树。故依据哈夫曼树的带权路径长度最小的这个特点,我们可以实现对文件进行压缩。一般情况下我们考虑对文本文件进行压缩,而很少考虑对图片、音频等进行压缩,对于此的原因这里我总结了几点如下:文本文件中多是文字信息,而对于文字来说在目前一般的编码方式里(如utf-8)是以两个字节即16个bit二进制来进行存储的,故在编码时若文字字符对应的编码.

2021-11-22 13:23:59 622

原创 一行代码完成为java程序添加音乐效果

URL url = new URL("file:"+"音乐的路径"); JApplet.newAudioClip(url).play();执行这两行代码即可成功为java程序添加音乐效果可以放到程序中试一试如下:import java.net.URL;import javax.swing.JApplet;public class MusicTest { public static void main(String[] args) throws Exc...

2021-10-19 00:09:56 905

原创 java通信—网络聊天室&网络画板(简陋版)

1、大体结构:采用TCP/IP模式的Socket(套接字)通信,实现通过服务端作中转的客户端与客户端之间的通信。2、当前功能:实现简单的客户机之间信息的收发通信; 通过自定义byte数组与int型间的转换实现传输基本数据类型,完成网络版铅笔; 客户机每次发送信息前先发送"文本"或"铅笔"选择信息,服务端作中转将信息发送给每个客户机,客户机先接收此选择信息后进入对应模块,完成聊天室与画板间的转换功能 当一台客户机退出,服务端关闭其对应的流资源,并移除集合中的对应对象,避免资源的浪费3、代码

2021-10-18 13:03:22 2420 1

原创 生产消费模型

生产消费问题,是在我们学习多线程这章的一道经典的例题,通过这个问题,可以帮助我们更好的理解多线程,其特点如下:存在多个线程,包含消费者线程,生产者线程; 多个线程操作共享数据,存在线程安全问题,需通过同步机制解决; 涉及线程的通信;生产消费模型,可以看作是生产者将产品交给店员,而消费者从店员处取走产品,店员一次最多持有一定上限的产品数量。当满了时,店员告知生产者让其暂停生产;当没有产品时也会告知消费者让其暂停消费。当生产者生产了产品后会告知消费者来消费产品;当消费者消费了产品后也会告知生产者来生.

2021-10-07 14:23:07 146

原创 线程的生命周期

关于线程的生命周期到底有几种状态,网上的说法不一,有说五种,六种的,也有说七种的。首先对于这个问题官方的回答,我们可以看到在jdk底层源码中分别定义了有 NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED这六种状态。翻译过来就是新建,可运行,阻塞,等待,超时等待,死亡这六种状态 而对于五种的说法,则是新建,就绪,运行,阻塞,死亡这五种状态,相当于就是将上面说法中的"阻塞,等待,超时等待"都归结为了阻塞状态,而RUNNABLE(可运行)在这里又.

2021-09-20 17:27:05 103

原创 梳理java重载和重写

1.重载(Overload)重载发生在一个类中,是多态性的一种表现; 一个类中同名的方法若有不同的参数列表即为重载;(或者说一个类中同名的方法只要其参数类型,个数或顺序存在不同即为重载); 重载对访问修饰符,返回值类型,抛出异常等不作要求,即不能通过访问修饰符,返回值类型或者抛出异常等来判断是否为重载。2.重写(Override)重写发生在子类和父类之间,也是多态性的一种表现; 要求方法名,参数列表都必须相同(参数类型,个数,顺序均需相同) 在返回值类型上 JDK 5或以前必须一样,JDK

2021-09-05 17:15:28 91

原创 冒泡排序法

冒泡排序法的基本思路:在一个毫无顺序的数组中,从前往后将相邻元素进行比较,若前元素大于后元素则交换两个元素的位置,实现每一轮比较将一个最大的元素放在最后。冒泡排序的一般写法如下:public static void sort(int[] arr){ int count=0; // 记录比较的次数 for(int j=0;j<arr.length-1;j++) { for(int i=0;i<arr.length-1-j;i++) { if(arr[i]>ar

2021-08-19 22:40:17 198

原创 java实现五子棋

一、主要的界面1、登录界面;2、游戏选择界面;3、画图游戏界面;4、五子棋下棋界面它们间的逻辑关系为先通过登录界面登录跳转到游戏选择界面,再在游戏选择界面中可选择跳转到画图界面或五子棋下棋界面。二、功能概况1、登录界面:a、设置一定的布局和添加一些组件;b、通过点击登录按钮判断账号和密码是否正确,正确则成功登录,反之则弹出一个提示账号或密码输入错误的窗口;c、在窗口中添加一个按钮,在点击此按钮后关闭当前窗口,并在第三次输入错误后弹出提示并关闭登录界面2、游戏选择界面:a、添加背景图片

2021-08-12 21:22:57 5563 1

原创 对java中的equals()方法的简单了解

在我们写代码的过程中,往往会用到equals()这种比较方法,那这种方法具体是怎么运作的呢,我们一起来看一下。首先所有的类都直接或间接的是Object类的子类,当我们没有重写equals方法时会默认调用Object类的equals()方法。在Object类中对equals()方法的定义如下:public boolean equals(Object obj) { return (this == obj); }小扩展:在我们没有重写equals()方法时比较的是两个对象的

2021-08-04 14:05:26 272

原创 对接口的简单了解

这里说到接口,我们一般也能联想到和它相关的抽象类和类。这里我们可以先粗略地理解抽象类和接口,它们是一种特殊的、受到各种限制的类。那具体是受到什么限制呢?我们下面来看一下它们和类的不同。JAVA中定义接口的关键字:interface它的定义格式如下:public interface 接口名 (extends 其他接口名,...){ //定义常量 public static final 数据类型 常量名=值; //定义抽象方法 public abst

2021-08-01 22:14:43 382

原创 一些基本概念

一、封装的目的:使类型安全、易用。需要的成员才暴露给使用者,不需要的保护起来。二、封装的作用:1、保证数据安全性(封装可以为别人提供相应的功能,可不为别人显示相应的代码)2、提供清晰的对外接口类内部实现可以任意修改,不影响其他类(可复用性,灵活性,安全性,扩展性 )三、构造方法:构造方法的格式: 修饰符构造方法名(参数列表){方法体} 构造方法没有返回值类型。也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束。 构造方法名称必须和类型保持一致。 构造方法没有.

2021-07-30 16:25:13 92

原创 对java继承的简单了解

继承是面向对象语法的三个基本特征之一,extends:译为扩展、延伸之意。注意:1.子类继承父类中非private的成员变量和成员方法,同时,构造方法不能被子类继承。2、定义类时若缺extends关键字,则所定义的类为Object类的直接子类,java语言中一切类都是Object类的直接或间接子类。3、Java仅支持单继承,即一个类至多只有一个直接父类。在Java中可以通过接口来实现多继承。4、父类中定义的private成员变量和方法不能被子类继承,因此在子类中不能直接使用。我们可以在父类中定义公共的.

2021-07-28 12:21:55 161

原创 对面向对象的简单理解

面向对象,其英文表示为OO(Object Oriented);同理OOP(Object Oriented Programming)面向对象编程;我们知道,java是一门完全面向对象的语言,而类和对象是面向对象编程的基础和核心。以学生和小明为例,可以这样理解:学生是一个类,而小明则是一个对象;“小明是一个学生”,真正的意思是小明是学生类型的一个对象。OOP=编写类+创建对象+调用方法定义类,分为两步:1.类的结构;2.类的使用(创建对象:调用属性和方法)以...

2021-07-26 18:58:53 56

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除