
java语法
文章平均质量分 68
HL_HLHL
这个作者很懒,什么都没留下…
展开
-
基于Java语言开发的仿Everything命令行文件搜索工具
文章目录一、项目简介二、Everything功能实现分层结构图三、功能具体实现1.模型2.数据库3.Lombok4.index索引5.检索search6.文件监控系统四、运行结果示例五、源码一、项目简介仿照Everything桌面工具,基于Java语言开发的命令行文件搜索工具,用于在Windows命令行下查询一些文件,基于Java语言开发的工具可以在Windows平台和Linux平台上无差异使...原创 2019-10-11 23:09:07 · 745 阅读 · 3 评论 -
JavaSE|死锁
同步的本质在于:一个线程等待另一个线程执行完毕后才可以继续执行。但是,现在相关的几个线程彼此之间都在等待着,那么就会造成死锁。范例:死锁package hhh.Test;class Pen { private String pen = "笔" ; public String getPen() { return pen; }}class Boo...原创 2019-03-19 17:50:13 · 163 阅读 · 0 评论 -
Java版图形界面聊天室
文章目录第一步(实现单线程版聊天室)知识点实现过程代码实现运行结果第二步(实现多线程版聊天室)实现流程代码实现第三步(图形界面多线程版聊天室)这阵子在学习网络编程,为了把学到的知识能运用起来,就写了个聊天室小程序,期间过程颇为曲折。其实聊天室代码很好实现,所以很快就写完了,一个偶然的机会看见我一个同学用C++实现了一个有图形界面的聊天室,刚好上学期学校有Java的GUI课程所以就想自己也写一个图...原创 2019-02-25 19:57:33 · 7680 阅读 · 9 评论 -
Java实现Json解析器
在开始正文之前,先啰嗦几句昂,说说我的学习过程(大家可以参考来给自己定个小计划),万事开头难,我开始在网上找资料就花了很长时间,而且资料太多,众说纷纭…但是最后找到了一位大牛的,真的写的超级好,超级详细,虽然他是用C语言写的,哈哈~就这样我跟着大牛的文档和代码写了一边C语言的JSON后,对JSON的语法以及实现有了一个初级的了解,然后,我就开始着手写Java版的Json,emmm…在写之前,为了看...原创 2019-02-17 12:59:09 · 2702 阅读 · 0 评论 -
Java之可重入锁--ReentrantLock
重入性:表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。重入性的实现原理判断当前线程能否获得锁为例,核心方法为nonfairTryAcquire(): final boolean nonfairTryAcquire(int acquires) { //获取当前线程对象 final Thread current = Threa...原创 2019-01-18 10:30:47 · 204 阅读 · 0 评论 -
JavaSE之序列化
文章目录什么是序列化序列化与反序列化transient关键字什么是序列化1.定义:将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。2.实现:Java中类若要被序列化输出,该类必须实现Serializable接口(该接口是一个标识接口,表示该类具有序列化的功能)。序列化与反序列化如果要想实现序列化与反序列化的对象操作,在java.io包中提供有两个处理类:Obje...原创 2018-12-09 21:25:52 · 248 阅读 · 0 评论 -
JavaSE之打印流
文章目录自己设计一个简单打印流系统提供的打印流格式化输出自己设计一个简单打印流import java.io.*;import java.io.File;import java.util.Date;class PrintUtil{private OutputStream out;public PrintUtil(OutputStream out){ this.out=out;...原创 2018-12-09 19:48:56 · 194 阅读 · 0 评论 -
JavaSE之字符编码
常用字符编码在计算机的世界里面,所有的文字都是通过编码来描述的。对于编码而言,如果没有正确的解码,那么就会产生乱码。所以为了避免乱码问题,我们就要清楚一些常见的编码有哪些:1. GBK、GB2312:表示的是国标编码,GBK包含简体中文和繁体中文,而GB2312只包含简体中文。也就是说,这两种编码都是描述中文的编码。2. UNICODE编码:java提供的16进制编码,可以描述世界上任意的...原创 2018-12-06 13:13:09 · 283 阅读 · 0 评论 -
JavaSE|抽象类和接口
抽象类抽象类的定义抽象类:在普通类的基础上扩充了一些抽象方法抽象方法:只声明而没有实现的方法(即没有方法体)抽象方法和抽象类使用abstract关键字来定义范例:定义一个抽象类abstract class Person{ private String name ; // 属性 public String getName(){ // 普通方法 ret...原创 2019-03-15 17:05:29 · 317 阅读 · 0 评论 -
JavaSE|ThreadLocal详解
概念ThreadLocal用于提供线程局部变量,在多线程环境可以保证各个线程里的变量独立于其他线程里的变量。也就是说ThreadLocal 可以为每个线程创建一个【单独的变量副本】,相当于线程的 private static 类型变量。ThreadLocal 的作用和同步机制有些相反:同步机制是为了保证多线程环境下数据的一致性;而 ThreadLocal 是保证了多线程环境下数据的独立性...原创 2019-03-20 12:06:28 · 235 阅读 · 0 评论 -
JavaSE|模板设计模式
开闭原则(OCP):一个软件实体如类、模块和函数应该对扩展开放、对修改关闭。讲模板设计模式之前,我们先来看一下星巴克咖啡冲泡师傅的训练手册。星巴克咖啡冲泡法将水煮沸用沸水冲泡咖啡将咖啡倒进杯子加糖和牛奶星巴克茶冲泡法将水煮沸用沸水浸泡茶叶把茶倒进杯子加柠檬如果将这两个泡法分别写个类来实现的话,我们发现会有很多代码重复...原创 2019-03-16 09:54:36 · 260 阅读 · 0 评论 -
JavaSE|线程池
当我们要使用线程的时候就去创建一个线程,这样实现起来非常简单,但是会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了(就像是你开了家公司,给一个项目投资了10个亿但是最后的效益只有1块钱,你说亏不亏),这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他...原创 2019-03-22 16:48:03 · 289 阅读 · 0 评论 -
JavaSE|生产者消费者模型
耦合&解耦在谈生产者消费者模型之前,我们先来谈谈耦合和解耦的概念,要是这两个概念掌握了,那么生产者消费者模型也就掌握一半啦~耦合耦合是指两个或者两个以上体系或两种运动形式间通过相互左右而彼此影响以至联合起来的现象。举个例子,有一对热恋中的情侣,水深火热的,谁离开谁都不行了,离开就得死,要是对方有一点风吹草动,这一方就得地动山摇。可以按照琼瑶阿姨的路子继续想象,想成什么样都不过分,他们...原创 2019-03-13 14:34:06 · 161 阅读 · 0 评论 -
JavaSE|反射
什么是反射反射指的是对象的反向处理操作。范例:观察正常处理默认情况下,必须先导入一个包,而后才能产生类的实例化对象import java.util.Date;public class HelloB { public static void main(String[] args) { Date data=new Date(); }}所谓的反就是...原创 2019-03-18 13:26:35 · 817 阅读 · 0 评论 -
JavaSE|内部类
文章目录内部类的基本概念内部类为什么存在?内部类与外部类的关系创建内部类内部类分类成员内部类静态内部类方法内部类匿名内部类内部类的基本概念内部类:就是在一个类的内部进行其他类结构的嵌套操作内部类的使用暂时不作为设计的首选。内部类的特点如下破坏了程序的结构方便进行私有属性的访问。(外部类也可以访问内部类的私有域)如果发现类名称上出现了".",应当立即想到内部类的概念。内部类...原创 2019-03-18 09:05:50 · 295 阅读 · 0 评论 -
JavaSE|代码块
普通代码块普通代码块:定义在方法中的代码块public class Test{public static void main(String[] args) {{ //直接使用{}定义,普通方法块 int x = 10 ; System.out.println("x = " +x);} int x = 100 ; System.out.println("x = ...原创 2019-03-17 20:53:14 · 216 阅读 · 0 评论 -
JavaSE|代理设计模式
代理设计模式:两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个子类完成辅助真实业务主题的操作。简单来说就是在不改变源码的情况下,实现对目标对象的功能扩展。不如说有一个歌手对象叫Singer,这个对象有一个唱歌方法叫做sing().class Singer{public void sing(){System.out.println("唱一首歌"); } }...原创 2019-03-17 16:42:22 · 167 阅读 · 0 评论 -
JavaSE|三种工厂设计模式
工厂模式的引入有一天,小明同学准备去买笔记本电脑,他到了商城发现有两款电脑他特别喜欢,一款是 Macbook Pro, 另一款是 SurfacePro。根据以上的场景,类图可以如下表示:代码: interface Computer{ void printComputer(); } class MacbookProComputer implements Computer ...原创 2019-03-17 15:17:39 · 319 阅读 · 0 评论 -
JavaSE值字节流与字符流
文章目录流操作简介字节输出流(OutputStream)AutoCloseable自动关闭支持字节输入流(InputStream)字符输出流(Writer)字符输入流(Reader)字节流&字符流的区别流操作简介File类不支持文件内容处理,如果要处理文件内容,必须要通过流的操作模式来完成。流分为输入流和输出流。在java.io包中,流分为两种:字节流与字符流字节流(byte):...原创 2018-12-05 17:35:07 · 197 阅读 · 0 评论 -
Java之枚举
语法:范例:枚举的使用enum Color { RED,GREEN,BLUE}public class TestDemo { public static void main(String[] args) { System.out.println(Color.BLUE); }}原创 2018-11-16 16:05:56 · 272 阅读 · 0 评论 -
Java双向链表
文章目录链表的基本介绍双向链表的实现链表的基本介绍如果现在要保存多个对象,那么首先可以想到的就是对象数组;如果我们想要保存多个任意对象,那么可以想到的一定是Object型的数组。Object[] data=new Object[4];但是数组最大的缺点就是长度固定,在实际开发中我们并不知道自己到底要用多少个对象,所以如果我们使用对像数组申请的空间多或者少都有可能造成空间浪费。这个时候,我...原创 2018-11-14 18:26:56 · 1165 阅读 · 0 评论 -
JavaSE之单例设计模式&多例设计模式
单例模式单例模式设计指的是一个类只允许产生一个实例化对象。那么怎么才能使一个类只产生一个实例化对象呢?我们先从它的实现上来考虑,一个类进行实例化的时候是通过调用构造函数来实现的,一般我们用public访问权限来修饰构造函数,想定义多少个对象就定义多少个对象。但是现在要只产生一个实例化对象,我们就联想到,将它的访问权限修改为private,不允许类外部访问,只允许类内部访问,这是就要将饿汉式单...原创 2018-11-12 12:06:11 · 315 阅读 · 0 评论 -
JavaSE之异常与捕获
几乎所有的代码里面都会出现异常,为了保证程序在出现异常之后可以正常执行完毕,就需要进行异常处理。先看一下异常的继承类结果:所有的异常都是由Throwable继承而来,我们来看他下面的两个子类Error和Exception。Error类(栈溢出异常):描述了java运行时内部错误和资源耗尽错误。应用程序不抛出此类异常,这种内部错误一旦出现,除了告知用户并使程序安全终止之外,在无能为力。这种情...原创 2018-11-14 10:10:14 · 311 阅读 · 0 评论 -
Java之泛型
从JDK1.5以后引入了三个常用新特性:泛型、枚举、注解。今天我们先来看看这第一大特性:泛型。泛型的引出假设我们要定义一个坐标Point类,提供两个属性x、y。但是这两个属性可以是整型、字符型、浮点型,我们总不能分别写三种类只有类型不一样但是功能啥的都一样的类,这样代码重的问题太严重了,所以java中有一种类可以保存所有的类型:Object类范例:定义Point类class Point{...原创 2018-11-15 21:33:54 · 198 阅读 · 0 评论 -
JavaSE之包
文章目录包的定义与使用包的导入系统常用包访问控制权限范例:验证default(包)访问权限范例:验证protected(继承)访问权限jar命令包的本质实际上就属于一个文件夹。在项目开发中很难避免类名称重复的问题。如果所有的java文件都放在一个文件夹中,就会可能存在覆盖问题。包的定义与使用在java文件首行使用package包名称,即可(有的软件会自动生成一个包)范例:定义包pack...原创 2018-11-11 17:19:23 · 361 阅读 · 0 评论 -
JavaSE之包装类
Object类可以接受所有引用数据类型。然而在Java中,数据类型分为基本数据类型和引用数据类型那么基本数据类型如何处理呢?所以在Java中我们为了处理基本数据类型,就出现了包装类。包装类的基本原理包装类就是将基本数据类型封装到类中。范例:自己定义一个包装类class IntDemo{ private int val; public IntDemo(int val){ ...原创 2018-11-11 12:16:08 · 383 阅读 · 0 评论 -
JavaSE之String类
文章目录String类的两种实例化方式直接赋值 :传统方法(通过构造方法实例化String类)字符串相等比较String类成员方法实现字符串常量是String的匿名对象String类两种实例化的区别1.采用直接赋值2.采用构造方法字符串常量不可变更字符与字符串的相互转换字节(byte)与字符串字符串比较字符串查找字符串替换字符串拆分字符串截取字符串的其他常规操作StringBuffer类Strin...原创 2018-11-07 21:11:51 · 256 阅读 · 0 评论 -
Java之注解
@Override 准确覆写当子类覆写父类方法时,此注解检查覆写的方法是否正确声明,只有满足覆写方法要求才会编译通过,否则编译出错@Deprecated 过期声明建议用户不使用原有的类和方法时,可以在类或方法上加@Deprecated这个注解 表示在当前版本中不建议使用(但是要使用还是可以使用的)@suppressWarings 压制警告调用某些操作可能产生问题的时候可能会出现警告...原创 2018-11-16 16:36:12 · 190 阅读 · 0 评论 -
Java之Lambda表达式&方法引用
接口定义增强JDK1.8之后接口出现以下两类方法:a.在接口中使用default定义的普通方法,需要通过接口对象来调用b.在接口中使用static定义的静态方法,直接使用接口调用。范例:interface IInterface{ //接口中定义的抽象方法 void test(); //使用default定义的普通方法 default void test1(...原创 2018-11-16 18:13:03 · 392 阅读 · 0 评论 -
Java之可变参数
可变参数是java JDK1.5新特性。假设要求设计一个方法,用于计算任意参数的整数的相加结果。范例:用数组实现public class Test{ public static void main(String[] args){ System.out.println(Add(new int[]{1,2,3}));//6 System.out.print...原创 2018-11-15 12:44:24 · 525 阅读 · 0 评论 -
JavaSE之File文件操作类
在Java.io包之中,File类是唯一一个与文件本身操作(创建、删除、取得信息…)有关的程序类。File类的基本使用File类的构造方法:public File(String pathname) ;//设置文件的路径public File(String parent, String child);//设置父路径和子路径创建一个新文件:public boolean createNew...原创 2018-12-05 15:04:12 · 214 阅读 · 0 评论 -
Java之lock体系
文章目录Lock与synchronized比较Lock接口APIAQS同步器什么是同步器AQS的模板方法设计模式深入理解AQSAQS的模板方法同步队列独占锁独占锁的获取流程图独占锁的释放总结Lock与synchronized比较锁是用来控制多个线程访问共享资源的方式。JDK5之前,java程序主要是靠synchronized关键字实现锁功能的,而JDK5之后,并发包中增加了lock接口,它提供...原创 2018-12-03 09:44:15 · 568 阅读 · 0 评论 -
JavaSE之生产消费者模型
wait()方法1. 方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法是用来将当前线程置入“预执行队列”中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止。2. wait()方法只能在同步方法中或同步块中调用。如果调用wait()时,没有持有适当的锁,会抛出异常3. wait()方法执行后,当前线程释放锁,其它线程可以竞...原创 2018-11-29 16:30:20 · 190 阅读 · 0 评论 -
Java之锁的实现原理
文章目录synchronized实现原理同步代码块的底层实现同步方法的底层实现moniter机制可重入锁的解释提供的Lock锁synchronized的优化CAS操作什么是CAS?CAS的操作过程CAS的问题Java对象头偏向锁轻量级锁重量级锁三种锁特点:锁粗化锁消除synchronized实现原理同步代码块的底层实现先看一段代码:class Test{ public stati...原创 2018-11-29 11:03:36 · 1318 阅读 · 0 评论 -
Java之线程的同步与锁
文章目录为什么要同步处理线程?同步处理synchronized处理同步问题使用同步代码块使用同步方法synchronized锁多对象锁同一个对象全局锁(锁代码段)使用类的静态同步方法在代码块中锁当前Class对象synchronized实现原理为什么要同步处理线程?什么是同步?同步指的是所有的线程不是一起进入到方法中执行,而是按照顺序一个一个进来。范例:多个线程同步卖票class MyT...原创 2018-11-29 09:52:03 · 268 阅读 · 0 评论 -
Java之多线程的常用操作
线程命名与取得在Thread类中提供有如下的线程名称方法:在Thread类中还提供有一个方法取得当前线程对象:public static native Thread currentThread();范例:设置和取得线程的名称class MyThread implements Runnable{ @Override public void run() { ...原创 2018-11-18 16:33:40 · 298 阅读 · 0 评论 -
Java之多线程的实现
进程与线程的概念进程:操作系统中一个程序的执行周期线程:一个进程同时执行多个任务。通常来讲,每个任务就称为一个线程。线程与进程比较:1.线程更加的“轻量级”,创建、撤销一个线程比启动、撤销一个进程开销要小的多。一个进程中的所有线程共享此进程的所有资源。2.没有进程就没有线程,进程一旦终止,其内的线程也将不复存在3.进程是操作系统资源调度的基本单位,进程可以独享资源。线程需要依托进程提供...原创 2018-11-17 17:39:43 · 266 阅读 · 0 评论 -
Java之静态导入
首先,我们定义一个类,这个类提供了static方法。范例:package hhh.pre.java.util;public class MyMath { public static int Add(int num1,int num2){ return num1+num2; } public static int Mul(int num1,int nu...原创 2018-11-15 13:05:36 · 220 阅读 · 0 评论 -
JavaSE之Object类
文章目录Object类简介Object类中的方法取得对象信息->toString()对象比较->equals()接收引用数据类型使用Object来接收数组对象使用Object来接收接口Object类简介Object是Java默认提供的一个类。Java里面除了Object类,所有的类都是存在继承关系的。默认会继承Object父类。即,所有类的对象都可以使用Object进行接收。范例...原创 2018-11-09 11:26:14 · 210 阅读 · 0 评论