Java学习
周百青HNU
Stay hungry!Keep learning!
展开
-
UI界面重绘系列(下):接口和构造器的探讨
我们在UI界面重绘系列(一)中,探讨了类与对象、继承的关系、方法重写;今天我们来看看接口在重绘中的使用。并探讨接口和构造器的相关知识,补充一些之前未聊到的内容。Java中类与接口都保存在 .java 结尾的文件中,文件名使用相同的类名或是接口名。作为抽象类型的接口,它没有构造方法,只包含抽象方法,一个接口可以有多个方法。并且除了 static 和 final 变量,接口不能包含其他成员变量。...原创 2019-04-17 16:05:38 · 400 阅读 · 0 评论 -
IO流技术:缓冲大法好,10行代码爬取网页
本篇介绍缓冲流和转换流的作用,最后结合在一起,实现一个爬取网页内容的小程序。一、缓冲流1、概述:Buffered…字节/字符缓冲流可以很大程度提高性能,虚拟机内部就有,默认缓冲区大小为8K,可以自己指定。不管怎么处理,底层都是节点流:文件节点流、字节数组节点流、网络流…可以直接释放BufferdInputStream2、实例:文件字符输出主程序:public static vo...原创 2019-05-18 19:08:53 · 485 阅读 · 0 评论 -
Java设计模式之装饰器
概述装饰的作用:不改变原来的代码,就可以实现新的功能GOF设计模式:设计复杂代码时用到的高内聚低耦合的方法论。1、抽象组件(接口、抽象父类):需要装饰的抽象对象2、具体组件:要装饰的对象3、抽象装饰类:包含了对抽象组件的引用,以及装饰着共有的方法4、具体装饰类:被装饰的对象1、实现一个放大器主程序public static void main(String[] args) ...原创 2019-05-18 18:32:52 · 158 阅读 · 0 评论 -
IO流技术:看资源释放的三种强大的封装方法 & 字节数组流的使用
本篇将紧接上篇,同样以实现文件拷贝为例,探讨字节数组流ByteArrayInputStream 和 ByteArrayOutputStream 的使用方法,以及如何对资源释放进行封装,使我们处理资源释放问题时更加便捷。一、概述文件存储在硬盘上,Java虚拟机无权访问,需要借助操作系统来访问和操作,并在操作完成后通知操作系统释放资源。而对于存有字节内容的字节数组,Java虚拟机可以直接访问。...原创 2019-05-18 16:57:46 · 824 阅读 · 0 评论 -
聊天室系列03:群聊与私聊 & OOP封装
概述使用TCP的Socket实现一个聊天室服务器端:一个线程专门发送消息,一个线程专门接受消息。客户端:一个线程专门发送消息,一个线程专门接受消息。1、群聊:重点在于创建一个容器,搭建一个消息转发器,最终实现群聊的功能。2、私聊:模拟报文,分析数据,转发给特定的某个人。3、注意:没有请求和响应的模式,每个客户端发送和接收数据各有一个线程去实现,客户间彼此发言不受干扰。一...原创 2019-05-23 14:32:40 · 468 阅读 · 0 评论 -
聊天室系列02:用UDP和TCP编程实现双人聊天、文件传输、多人登录
一、Socket编程 UDP基本步骤概述1、使用基于UDP协议的Socket网络编程实现2、不需要利用I0流实现数据的传输3、每个数据发送单元被统一封装成数据包的方式,发送方将数据包发送到网络中,数据包在网络中去寻找他的目的地DatagramSocket:用于发送或接受数据包的套接字DatagramPacket:数据包发送数据一般不超过60K,比如微信发消息实例一:自动发送指定...原创 2019-05-23 13:44:06 · 3142 阅读 · 0 评论 -
聊天室系列01:基本概念准备,掌握InetAddress、InetSocketAddress、URL类的简单使用
本篇开始我们用Java语言,一步一步去编写一个简单的聊天室,实现单人私聊、多人群聊、文件发送等功能。聊天室系列第一篇,主要概括相关知识,用Java去实现相关操作,其中包括:网络模型、TCP/IP协议概念;IP类、端口类、URL类的相关方法使用。一、开篇1、网络首先我们要明白每个通讯设备都是一个节点,多个节点联系成了网络。且每个设备都有它的IP地址,从公网到内网一 一区分。我们用IP地址定位一...原创 2019-05-13 10:20:06 · 733 阅读 · 0 评论 -
IO流技术:如何用Java实现文件拷贝功能 ?
四大抽象类FileInputStream通过字节方式读取文件,适合所有类型的文件(图像、视频等),全字符请考虑FileReaderFileOutStream通过字节的方式写出或追加数据到文件,适合所有类型的文件,全字符请考虑FileWriter1、理解操作流程1、创建源2、选择流3、传输操作:读和写4、释放资源代码public class IOTest1 { pu...原创 2019-05-16 23:17:30 · 309 阅读 · 0 评论 -
IO流技术:文件夹的创建、遍历、统计 | 编码解码实验
API说明mkdir() 、 mkdirs()创建目录,如果父目录链不存在一同创建list()下级名称listFiles()下级FilelistRoots()根路径一、创建目录mkdir() 确保上级目录存在mkdirs() 上级目录可以不存在代码public class DirDemo1 { public static ...原创 2019-05-16 14:34:57 · 196 阅读 · 0 评论 -
IO流技术:开篇概述、File对象构建与相关方法的使用
本篇包含开篇知识储备,API使用规则、如何构建File对象、以及相关方法的使用。会通过Java编码分析。一、开篇IO概述:即输入输出流,流动的即是数据,以二进制的形式呈现,即字节流。人对字符更敏感,我们也可操作字符流。字符流底层还是字节流,自动搜索了我们的码表。推荐组件:CommonsIO数据源:就是存储数据的地方,例如网站、服务器、数据库。我们操作的是存储数据的文件。其他:Ja...原创 2019-05-16 14:14:55 · 290 阅读 · 0 评论 -
如何又简单又高效地解决线程安全问题?
一、什么是线程同步?处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这时候, 我们就需要用到“线程同步” 。线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕后,下一个线程再使用。二、什么是锁机制?由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突的问题。为了保证数据在方法中被访...原创 2019-05-20 02:00:25 · 455 阅读 · 0 评论 -
如何让线程停下来?
本篇讲述一个终止线程的小技巧,篇幅虽短,作用很大,希望给大家带来帮助~概述终止线程:1、线程正常执行完毕2、外部干涉,加入标识位3、不要使用 stop destroy模拟实现public class TerminateThread implements Runnable{ //1、加入标识,标识线程体是否能够执行 private boolean flag = true...原创 2019-05-20 01:26:35 · 503 阅读 · 0 评论 -
线程使用的六大常用方法!
本篇讲述线程使用的六大常用方法:sleep()、join()、yield()、setDaemon()、setPriority () & getPriority()、getState()方法一:sleep()使线程停止运行一段时间,将处于阻塞状态如果调用了sleep方法之后,没有其他等待执行的线程,这个时候当前线程不会马上恢复执行!之前我们用sleep() 模拟了网络延时,可以放...原创 2019-05-20 01:17:45 · 955 阅读 · 0 评论 -
Java设计模式之静态代理
本篇通过模拟结婚,和模拟12306抢票两个实例,了解静态代理设计模式的使用。概述1、公共接口:1、真实角色2、代理角色2、代理设计模式代理模式分为动态和静态。共享资源:一份资源可以有多个代理。发生并发时,要注意线程安全处理。实例一:模拟结婚1、完整代码public class StaticProxy { public static void main(String[] a...原创 2019-05-20 00:51:26 · 187 阅读 · 0 评论 -
线程的简化有4种方法,你都知道么?
本篇继续借用之前的代码,探究线程简化的方法,最终推出Lambda表达式简化方法的具体使用。方法一:静态内部类static class Test1 implements Runnable{ public void run(){ for(int i=0;i<20;i++){ System.out.println("一边听歌"); } }}方法二:局部内部类publi...原创 2019-05-20 00:38:49 · 212 阅读 · 0 评论 -
龟兔赛跑!!!
让我们来用线程的知识模拟一个有趣的龟兔赛跑游戏。比赛规则兔子与乌龟一起跑,每次步长都一样,兔子每跑40步就睡一会,谁先跑到100步,就获得胜利!Runnable实现public class Racer implements Runnable{ private String winner; //胜利者 public static void main(String[] args) { ...原创 2019-05-20 00:24:28 · 744 阅读 · 0 评论 -
初识线程,看线程实现的三种方法
一、概述什么是多线程?多线程是指多条路径同时进行,高效不用等待。这里的同时是短暂执行不同时间片的任务,只是看似同时。很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即一个CPU的情况下,在同一个时间点,CPU也只能执行一个代码,因为切换的很快,所有就有同时执行的错觉。什么是三高?高可用:数据不会出错高性能:体验好,延时低高并发:同时...原创 2019-05-19 23:59:24 · 206 阅读 · 0 评论 -
UI界面重绘系列(上):类的继承和方法重写
本篇将探讨Java UI界面被改变时,图形的保存和重绘功能的具体实现,以及在此过程中,类的继承和方法重写的原理。一、界面重绘功能的实现1、实现画板功能我们想要创建一个窗体,窗体内包含两个按钮,分别点击对应的按钮便可实现绘制不同图形的功能。这里我们来完成直线与矩形框的绘制。1)界面显示类我们需要创建一个顶级容器类,并创建显示的方法。在容器中添加按钮与监听器对象,具体代码如下:public...原创 2019-04-15 18:47:00 · 687 阅读 · 0 评论 -
IO流技术:带你玩转数据流、对象流、打印流
一、数据流1、概述可以保留数据类型DataOutputStream & DataInputStream1、先写出后读取2、读取的顺序和写出的顺序保持一致还可以将ByteArrayOut/InputStream变成FileOut/InputStream2、代码实现public class DataTest { public static void main(Stri...原创 2019-05-18 20:08:32 · 247 阅读 · 0 评论