Java
占位符号
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
使用Comparable接口实现选择排序
使用Comparable接口实现多种数据类型的选择排序 1.SelectionSortComparable.javapublic class SelectionSortComparable { /* * 排序算法 * @param Comparable[] arr 将要排序的数组(可以是任意类型的数据) * */ public static void sort(Compara...原创 2018-03-18 19:21:05 · 445 阅读 · 0 评论 -
Java基础知识汇总系列(二)
1.String,StringBuffer,StringBuilder三者的区别String是字符串常量,内容创建后不可变,每一次修改内容,都会在内存中new一个对象出来,然后指向这个新的对象;StringBuffer和StringBuilder是字符串变量,内容创建后可以变化;在使用StringBuffer和StringBuilder时可以适当考虑一下初始化大小,通过减少扩容次数来提高代码运...原创 2018-08-16 20:06:45 · 204 阅读 · 0 评论 -
浅见equals()与hashCode()之间的关系
1.Java对于equals()方法和hashCode()方法的规定如果两个对象equals()方法相等则它们的hashCode返回值一定要相同,如果两个对象的hashCode返回值相同,但它们的equals()方法不一定相等。两个对象的hashCode()返回值相等不能判断这两个对象是相等的,但两个对象的hashcode()返回值不相等则可以判定两个对象一定不相等。2.hashCod...原创 2018-08-18 10:43:21 · 14817 阅读 · 0 评论 -
Java基础知识汇总系列(一)
1..数据类型2.基本数据类型有8种,分别是boolean、byte、short、int、long、float、double、char。3.Java是面向对象的语言,但基本数据类型不是对象,但考虑到其在编程中使用的频率极高,所以将基本数据类型设计为非对象类型,将其存储在栈中,使其存取速度要快于存放在堆中的对应包装类的实例对象。4.所有的基本数据类型都使用了final修饰,因此无法继...原创 2018-08-13 21:21:13 · 261 阅读 · 0 评论 -
Java类加载初始化顺序
示例如下:public class Example { public static void main(String[] args) { Child c = new Child(); }}class Base { static { System.out.println("基类静态代码块"); } { ...原创 2019-03-12 14:39:37 · 204 阅读 · 0 评论 -
SpringBoot使用kaptcha生成验证码
1.在pom文件中添加依赖<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version></dependency&a原创 2018-09-24 20:40:56 · 967 阅读 · 0 评论 -
Java中sleep和wait的区别,锁池与等待池的区别,notify和notifyAll的区别
sleep() 方法使当前线程进入停滞状态(阻塞当前线程),让出 CUP 的使用,目的是不让当前线程独自霸占该进程所获的 CPU 资源。该方法是 Thread 类的静态方法,当在一个 synchronized 块中调用 sleep() 方法时,线程虽然休眠了,但是其占用的锁并没有被释放;当 sleep() 休眠时间期满后,该线程不一定会立即执行,因为其它线程可能正在运行而且没有被调度为放弃执行,除...原创 2018-09-25 20:19:09 · 840 阅读 · 0 评论 -
使用FTPClient封装FtpUtil
1. 新增POM依赖<!--文件上传--><dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</ve...原创 2019-04-06 22:20:36 · 3964 阅读 · 0 评论 -
SpringBoot接入Swagger
1. 导入Pom包<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency>&l...原创 2019-03-28 23:09:10 · 1997 阅读 · 2 评论 -
Java集合部分知识
集合中的接口与类之间的关系如下图所示:其中蓝色标注的为接口,红色标注的为类。具体如下:1.Set接口表示的集合不能包含重复的元素;2.HashSet:元素存放在Hash表中,元素数量较大时,访问效率比线性列表快;3.TreeSet:采用有序树存储集合中的元素,元素按照升序排序;4.LinkedHashSet:采用Hash表和链表结合的结构存储元素,既能保证元素的顺序,存...原创 2018-07-23 20:26:56 · 264 阅读 · 0 评论 -
SpringMVC核心运行流程及部分名词解释
1.DispatcherServletDispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,可以与Spring IOC无缝集成。DispatcherServlet主要负责职责调度工作,主要用于控制流程,主要职责如下:(1)文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上下文解析...原创 2018-06-11 09:12:20 · 676 阅读 · 0 评论 -
IDEA搭建最简单的SpringMVC环境
最近学习SpringMVC,搭建环境得时候踩了不少坑,写这个教程是分享自己的经验,尽量帮助别人走弯路。1.打开Idea,选择create new project,勾选如下选项之后点击next,进入下一步2.填写项目名称和项目存放的位置,之后点击finish,等待Idea下载相应的文件和Jar包下载好之后,就得到了初始的一个springMVC项目结构,如下:3.在src下添加一个controller...原创 2018-06-05 22:56:57 · 7735 阅读 · 6 评论 -
选择排序算法和插入排序算法的性能对比
选择排序算法和插入排序算法都是O(n^2)复杂度的算法,但是两者的执行效率还是有较大差距的。public class Sort { private Sort() {}; /* * 选择排序算法 * */ public static void selectionSort(Comparable[] arr) { for(int i=0; i<arr.length; i++)...原创 2018-03-22 09:23:56 · 764 阅读 · 1 评论 -
快速排序基础版及其小小的改进
基础版快速排序代码如下:/* * 基本排序算法 * */public class QuickSort { private QuickSort(){} /* * 对arr[l, r]部分进行partition操作 * 返回值p,使得arr[l, p-1] < arr[p], arr[p+1, r] > arr[p] * */ private static i...原创 2018-04-01 10:54:28 · 188 阅读 · 0 评论 -
Java 中的super关键字
super关键字表示对某个类的父类的引用。一般而言,super有两种通用形式:第一种用来访问被子类的成员隐藏的父类成员;第二种则是可以调用父类的构造函数。接下来说一下两种使用形式的方法和规则。第一种:如子类和父类有同名的成员变量或方法,则父类的成员将会被覆盖,此时可用下面的方式来引用父类的成员:super.<成员变量名>super.<成员方法名>在Java语言中,用过继承...原创 2018-04-15 10:31:50 · 13480 阅读 · 1 评论 -
Java 使用 Tess4J 实现图像识别
最近需要用Java做一个图像识别的东西,查了一些资料,在此写一个基于Tess4J的教程,方便其他人参考和使用。其实做图像识别,也可以使用TESSERACT-OCR来实现,但是该方式需要下载软件,在电脑上安装环境,移植性不高,使用Tess4J只需要下载相关Jar包,导入项目,再把项目封装好就可以处处运行了。首先,下载Tess4J的相关资源(一个压缩包),官网:http://tess4j.source...原创 2018-04-19 14:08:40 · 55044 阅读 · 36 评论 -
Java动态加载类
在讲解动态加载类之前呢,我们先弄清楚为什么要动态加载类,静态加载不行吗?我们可以看下面的实例:我在文件夹里写了Office.java 类和 Word.java类,如下:Office.javaclass Office{ public static void main(String[] args){ if(args[0].equals("Word")){ Word w = new Word...原创 2018-04-21 09:45:29 · 12010 阅读 · 4 评论 -
java解析复杂json:JSONObject 和 JSONArray的使用
在正式解析之前,我们需要下载解析Json所需要的jar包,一共有7个。下载地址如下:https://download.csdn.net/download/zai_xia/10374080大家也可以自行找资源下载。然后将这些Jar包 Build Path 进项目就好了。特别注意:commons-collections这个jar包要用3.x版本的,不能用4.x版本;commons-lang这个jar包...原创 2018-04-25 18:22:55 · 19077 阅读 · 0 评论 -
Maven中scope参数详解
Maven坚持惯例优于配置,所以Maven配置中的socpe的默认值是compile。在实际应用过程中经常分不清楚使用哪一个,所以直接就默认了。现在梳理一下Maven的scope:scope分为compile,test,runntime,provided,system五种。compile默认的就是compile,compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中...转载 2018-05-07 11:01:48 · 3043 阅读 · 0 评论 -
junit4学习笔记
Junit简介: Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework),为单元测试(Unit Test)的支持框架。用来编写和执行重覆性的测试。即所谓白盒测试。它包括了以下的特性: 1 对预期结果作断言 2 提供测试装备的生成与销毁 3 易于组织执行测试 4 图形与文字界面的测试器Juni...转载 2018-06-11 11:18:17 · 229 阅读 · 0 评论 -
Java线程池初探
1. 池化技术池化技术就是提前保存大量的资源,以备不时之需。在机器资源有限的情况下,使用池化技术可以大大的提高资源的利用率,提升性能等。在编程领域,比较典型的池化技术有:线程池、连接池、内存池、对象池等。池化技术通过预先创建多个资源(如多个线程,多个数据库连接),放在池中,这样可以在需要使用线程的时候直接获取,避免多次重复创建、销毁带来的开销。2. 线程池线程池顾名思义,就是由很多线程构...原创 2019-07-12 21:20:54 · 372 阅读 · 0 评论