自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mini性能测试框架

mini性能测试框架1.项目背景在学习Java语言的过程中,发现较多功能可由不同类似的方法实现(如,归并排序与快速排序),且学习基础知识之后,总能得到结论某种性能更好,效率更高。因此我想到做一个小型的性能测试框架,对类似功能方法进行测试,用数据进行验证。2.实现功能:a.自动加载测试用例b.通过接口标记待测试类c.通过注解标记待测试方法d.通过注解实现多级配置3.项目思路:1)利...

2019-08-08 14:33:20 500

原创 简聊项目测试用例及设计思路

简聊项目测试用例:简聊项目设计思路:1.项目介绍​ 基于WebSocket的网页聊天室,主要实现功能为:用户登录/注册、群聊、私聊、用户退出等。2.项目设计思路JDBC连接MySQL数据库JDBC连接数据库可分为以下四步:1)获取数据源2)获取数据库连接3)执行SQL语句4)关闭资源但值得注意的是获取数据源、获取数据库连接及关闭资源这三步在执行SQL语句时均需使用,故可...

2019-08-08 14:32:48 1178 1

原创 单词倒排-多个空格去重

单词倒排–多个空格去重为一个空格输出问题描述:对字符串中的所有单词进行倒排。说明:1.每个单词是以26个大写或小写英文字母构成;2.非构成单词的字符均视为单词间隔符;3.要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4.每个单词最长20个字母。输入描述:输入一行以空格来分割的句子输出描述:输出句子的逆序...

2019-07-23 00:24:19 334

原创 多线程框架

2019-07-09 10:51:56 216

原创 [亲测有效]IDEA三步使用补丁永久激活

IDEA三步走使用补丁永久激活第一步:下载补丁附上百度云链接及提取码:链接:https://pan.baidu.com/s/1EuzfX1IltHnbyV26HWuRkw提取码:p7qx下载到本地后解压,压缩包中有一个.jar文件,将该文件复制进行第二步。第二步:配置2.1 将.jar文件复制到IDEA路径下的bin包中,如下图:2.2打开bin包中两个后缀为.vmoptions...

2019-06-27 16:34:56 8673 4

原创 [高频面试题]获取N个元素中的前K个高频元素四种解决方法--双层循环、最大堆、最小堆、桶排序

获取N个元素中的前K个高频元素题目描述:给定一个非空的整数数组,返回其中出现频率前K高的元素示例1:输入:nums=[1,1,1,2,2,3],k=2输出:[1,2]示例2:输入:nums=[1],k=1输出:[1]说明:1.你可以假设给定的K总是合理的,且1<=k<=数组中不相同的元素个数2.你的算法时间复杂度必须优于O(nlogn),n是数组的大小。题目思路...

2019-06-26 16:41:11 727

原创 堆排--原地排序和非原地排序

堆排实现内容:1.普通堆排–借助一个新数组实现2.原地排序实现堆排–在原数组基础上实现普通堆排://HeapTest.javapackage heap;import java.util.Arrays;import java.util.Comparator;//基于数组的堆public class HeapTest<E>{ //堆结构为完全二叉树,值要...

2019-06-24 23:59:57 1093

原创 基于数组实现最大堆

基于数组实现最大堆实现功能:1.添加元素(元素上浮)2.取出元素(元素下沉)3.当已知当前节点下标时,返回当前节点的左右孩子及父节点下标4.替换堆顶元素5.将任意数组转换为堆结构实现代码:HeapTest.javapackage heap;import java.util.Arrays;import java.util.Comparator;//基于数组的堆pub...

2019-06-24 19:18:18 1032

原创 将二叉树按照树结构输出

将二叉树按照树结构输出题目描述:将任意一个二叉树按照树结构输出,根节点直接输出值,子节点随着层数的增加,每增加一层子节点值前面增加“–”,当不存在左右节点时输出null。题目解析:我们一定要明确无论二叉树的输出结果是什么形式,它都是在四种遍历的基础上进行的。若题目无额外要求,我们首先考虑前序遍历输出,因前序输出更符合人的正常思维。因此该题我们是在前序遍历的基础上对二叉树输出加以改进。代码...

2019-06-17 15:23:33 3065

原创 java实现--利用前序遍历将二叉树输出为括号字符串

将二叉树输出为括号字符串题目描述:需要采用前序遍历的方式,将二叉树转换为一个由括号和整数组成的字符串。空间点则用一对空括号“()”表示。而且需省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例1:解释:原本是“1(2(4)())(3())”,在省略所有不必要的空括号对之后,将变为"1(2(4))(3)"示例2:解题思路 :通过理解题意和对比示例,可以发现二叉...

2019-06-17 10:42:09 1409 1

原创 java实现---两个超长正整数相加

两个超长正整数相加题目描述:请设计一个算法完成两个超长正整数的加法。借口说明:输入参数: String addend:加数 String augend:被加数 返回值:加法结果 public String AddLongInteger(String addend,String augend){ /*在这里实现功能*/ re...

2019-06-04 23:17:54 3297

原创 使用IDEA创建Maven项目图文详细教程

使用IDEA创建Maven项目图文详细教程前言:创建本地仓库IDEA中配置MavenIDEA中创建Maven项目命令行两种方式创建Maven项目1.使用IDEA开发工具创建Maven项目之前,必须已下载且配置好Maven(官网即可下载)。且Maven项目创建时需联网。Maven下载:2.自定义本地仓库自定义本地仓库方法:(1)在Maven工具安装目录下创建maven_r...

2019-05-29 21:38:00 689

原创 最小(大)栈--双栈/单栈两种解法

最小(大)栈标明:以下代码为最小栈讲解,求最大栈只需将入栈判断条件做以修改即可。题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。测试示例:MinStack minStack...

2019-05-23 21:35:30 2555

原创 删除字符串1中与字符串2的公共字符

删除字符串1中与字符串2的公共字符题目描述:输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。例如,输入“They are students.”和"aeiou",则删除之后的第一个字符串变为"Thy r stdnts"。题目思路:1.首先我们要思考的是字符串中要怎样删除某一字符。String类中并没有直接提供删除字符的方法,但提供了截取字符串的方法(substring()—但需...

2019-05-23 11:23:41 1372

原创 懒汉式单例模式--解决线程安全最完整版详解

懒汉式单例模式首先我们先来回顾一下饿汉式单例模式:class Singleton{ private static Singleton singleton=new Singleton(); private Singleton(){} public static Singleton getInstrance(){ return singleton; ...

2019-05-22 17:21:52 21132 6

原创 juc包下的四大工具类

juc包下的四大工具类CountDownLatchCyclicBarrierExchangeSemaphore1.CountDownLatch–闭锁作用为:解决一个线程需等待其他线程完成任务后再次恢复执行的情景。注意:每个CountDownLatch对象的计数器在减为0时不可恢复原值。CountDownLatch类常用方法://调用await()方法的线程阻塞直到其他线程完成...

2019-05-22 08:42:00 1309

原创 FutureTask详解及典型用例----高并发实现烧水泡茶

FutureTask详解及典型用例----高并发实现烧水泡茶Future接口:作用为获取Callable接口的返回值FutureTask类为Future接口子类,该类独有的特点为在高并发情况下不论有多少个线程,均只执行一次任务。get()方法的作用为阻塞当前线程直到有返回值为止。使用Future接口中get()方法的两种情况:(1)提交线程的同时调用get()方法class Calla...

2019-05-18 12:16:52 715

原创 线程池

线程池我们通过学习多线程部分可知,创建线程的方法有四种:继承Thread类、实现Runnable接口、实现Callable接口和线程池。这四种方法中最推荐的方法就是线程池了。那么为什么推荐使用线程池创建线程呢?这一问题也是面试过程中常问的点,需理解记忆。以下为推荐使用线程池创建线程的三个原因(线程池的优点):1.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁带来的消耗。2.提高响...

2019-05-10 21:04:22 113

原创 解决内建锁锁不住Integer类型全局变量问题的两种方法

解决内建锁锁不住Integer类型全局变量自增自减问题的两种方法了解这种问题的解决方法之前,我们先来看一下产生此种问题的原因class MyThread implements Runnable{ static Integer num=0; public static Integer getNum() { return num; } @Over...

2019-05-09 20:09:19 426

原创 深浅拷贝详解

深浅拷贝Object类clone()方法深浅拷贝概念(重要)深浅拷贝实现方式我们首先来学习一下Object类中的clone()方法//我们可以看到,clone()方法为本地方法,且使用该方法可能会抛出CloneNotSupportedException异常protected native Object clone() throws CloneNotSupportedExceptio...

2019-04-23 21:47:03 554 1

原创 自定义Lock锁

自定义Lock锁import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;class...

2019-04-21 16:45:47 325

原创 Java概念类高频面试题及答题技巧一

Java概念类高频面试题及答题技巧Java与C的区别?Java三大特性设计模式(单例、工厂、模板、代理)Java实现多线程同步三大方法对比ArrayList、Vector与LinkedList的区别与联系对比final、finalize与finally的区别与联系附加题:fail-fast机制(List接口与Set接口存在,Map集合中没有)1.Java与C的区别?简单分析该...

2019-04-19 10:28:48 264

原创 Map集合

Map集合HashMapHashtableTreeMapMap集合:Map接口是Java中保存二元偶对象(键值对)的最顶层接口。Map集合会一次性保存两个对象,且这两个对象的关系为:key=value结构。这种结构最大的特点是可以通过key找到对应的value值。public interface Map<K,V> {}//其中key值唯一,value值可重复//key值...

2019-04-14 17:59:12 140

原创 类集---List接口与Set接口

类集—List接口与Set接口Collection接口List接口List具体实现三个常用子类(ArrayList、Vector、LinkedList)集合输出1.Collection接口java类集所有类均在java.util包下。java类集本质上是动态数组(当元素个数达到最大值时,动态增加容量),在JDK1.2引出。作用为解决数组定长问题。java集合类框架是加上就是ja...

2019-04-14 17:57:09 203

原创 类集---ArrayList、Vector、LinkedList的区别

ArrayList、Vector、LinkedList的区别ArrayList与Vector的区别:1.出现版本:ArrayList:JDK1.2Vector(老版动态数组实现类):JDK1.0、出现在ArrayList、Collection接口之前2.无参构造实现(初始化策略不同):ArrayList:采用懒加载策略,在构造方法阶段并不初始化数组,而是在第一次添加元素时才初始化对象数...

2019-04-08 17:08:33 74

原创 JavaIO---File输入输出流、打印流、Java.util.Scanner类、装饰设计模式及序列化

JavaIO—File输入输出流、打印流、Java.util.Scanner类、装饰设计模式及序列化IO基于抽象类。File文件操作类(字节输入输出流、字符输入输出流)字符编码转换流内存流打印流System对IO类的支持两种输入流Java.util.Scanner类序列化File文件操作类在Java.io包中,File类是唯一一个与文件本身操作(创建、删除、获取信息等)...

2019-04-07 00:21:47 515

原创 内建锁、Lock锁实现生产者与消费者模型

内建锁、Lock锁实现生产者与消费者模型内建锁(synchronized)实现代码:synchornized必须在同步代码块或同步方法中使用。import java.util.ArrayList;import java.util.List;class Goods{ private String goodsName; private Integer count=0; ...

2019-04-05 16:39:46 296

原创 文件拷贝

文件拷贝问题思路:需要结合字节输入输出流,因首先需要将源文件利用字节输入流拷贝一份,然后再使用字节输出流将其输出到终端即可。import java.io.*;class CopyFileUtil{ private CopyFileUtil(){} public static void createParentFilePath(String path){ Fil...

2019-04-02 23:45:09 97

原创 内建锁(多线程练习题)--编写一个程序,启动三个线程,三个线程的名称分别为A、B、C;每个线程将自己的名称在屏幕上打印5遍,打印顺序是ABCABC...

编写一个程序,启动三个线程,三个线程的名称分别为A、B、C;每个线程将自己的名称在屏幕上打印5遍,打印顺序是ABCABC…解题思路:该题为多个线程交替输出,且输出5次;故我们需要启动三个线程,设置标志位(int flag)明确当前线程,利用count计数器控制输出次数;明确某一线程启动时其他线程等待及唤醒操作。class Print{ private Integer flag=1; ...

2019-04-01 23:48:39 485

原创 内建锁(多线程练习题)写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序是12A34B...5152Z

写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序是12A34B…5152Z解题思路:根据打印顺序我们可以看到是两个数字+一个大写字母为一个循环;明确循环后要保证两个线程是交替进行(且打印数字在前),故需要设置标志位明确保证此时要运行哪个线程;之后再创建线程即可。class Print{ //标记位 private boolean flag=true; ...

2019-04-01 23:47:08 463

原创 网络中其他协议--DNS/ICMP/NAT

网络中其他协议–DNS ICMP NATDNS(域名解析)–应用层DNS下一层传输层协议为UDP协议。为什么要有域名解析?因为域名更好记。域名简介主域名是用来识别主机名称和主机所属的组织结构的一种分层结构的名称。www.baidu.com域名使用.连接com:一级域名。表示这是一个企业域名。同级的还有“net”(网络提供商),“org”(非盈利组织)等。baidu:二级域名,...

2019-03-27 20:06:52 292

原创 数据链路层---以太网/MAC帧/ARP协议详解

数据链路层:解决的是在局域网中将数据从主机A送到B数据在传输层叫数据段,网络层叫数据报,数据链路层叫数据帧。以太网以太网帧格式以太网帧格式如下所示:1.MAC地址一般占48个bit位为6个字节。MAC地址是可以标识唯一一台主机的地址,因为MAC地址是根据网卡序号,网卡序号是唯一确定的(网卡出厂时固定)。2.怎么分离MAC地址(报头与有效载荷)?通过MAC帧我们可以知道MAC报头与有...

2019-03-27 20:05:25 8071 1

原创 网络层---IP协议详解

网络层网络层解决的问题是在复杂的网络环境中确定一个合适的路径IP协议(不可靠)1.IP提供了一种将数据从A主机跨网络送至B主机的能力。2.IP地址被分为两部分。前半部分叫做网络号,后半部分叫做主机号。但IP提供的这种能力并不能使数据每次都能送达(原因是可能发生数据包丢失问题),那么解决此种情况的方法是只要有数据丢失就重新发送即可。但IP不保证可靠性,所以重新发送需要TCP进行重传(TCP...

2019-03-27 09:59:49 2419

原创 应用层--HTTP详解

应用层:我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序,都在应用层。成熟的应用层协议1.HTTP协议:2.HTTPS协议:3.FTP协议:用于文件传输4.DNS协议:用于域名解析5.SSH协议:用于远程登陆…应用层除了成熟的应用层协议之外,还存在大量的用户自定制的协议。用户自定制协议方法:举例:假如此时要实现一个网络版本的计算器。HTTP协议(超文本传输协...

2019-03-24 20:02:35 1782 1

原创 传输层--UDP和TCP详解

传输层:负责数据能够从发送端传输接收端。端口号:用来标识特定服务的(某种意义上特定服务与端口号可互相甄别)端口号(Port)标识了一个主机上进行通信的不同的应用程序;1.端口号与应用层绑定,但与传输层也有一定的关系;2.通常情况下一个端口号不能被多个服务器共同使用,但在多线程情况下可以。一个进程可以绑定多个端口号。TCP协议(点对点传输:只知道起点和终点,不考虑中间过程,实现此过程需直...

2019-03-24 19:58:13 4154

原创 传输层基础及UDP协议

传输层基础及UDP协议详解传输层:负责数据能够从发送端传输接收端。端口号:用来标识特定服务的(某种意义上特定服务与端口号可互相甄别)端口号(Port)标识了一个主机上进行通信的不同的应用程序;1.端口号与应用层绑定,但与传输层也有一定的关系;2.通常情况下一个端口号不能被多个服务器共同使用,但在多线程情况下可以。一个进程可以绑定多个端口号。TCP协议(点对点传输:只知道起点和终点,不...

2019-03-22 21:45:58 227

原创 Java数据结构排序详解--冒泡排序、直接插入排序、折半查找、希尔排序、选择排序、归并排序、快排

冒泡、直接插入、折半查找、希尔、选择、归并、快排我们先思考一个问题:如何衡量一个排序算法的优劣呢?一般来讲我们可从三个方面来看:1.算法的时间效率:a.时间复杂度:最好、最坏、平均时间复杂度相结合判断。b.时间复杂度系数、低阶、常数的影响(因只有元素数量足够多时才可忽略系数、低阶、常数的影响,否则不可忽略)。c.比较交换次数。2.算法的内存消耗:通过空间复杂度衡量。3.算法的稳定...

2019-03-19 17:49:42 353

原创 java泛型实现数组 单链表 双链表动态增删改查

泛型实现数组动态增删查改//Sequence.java//线性表规范public interface Sequence<T,E> {//泛型接口 /** * 向线性表中添加元素 * @param data 要存储的元素 */ void add(E data); /** * 线性表中删除元素 * @para...

2019-03-19 16:02:30 338

原创 Java快速排序--原始快排、二路快排、三路快排及三路快排优化

快速排序–原始快排、二路快排、三路快排、三路快排优化思路:在原始数组中找到一个区分点,然后遍历数组将大于区分点的元素放置区分点右边,小于等于区分点的元素放置区分点左边,每当发现比基准值小的元素就放在基准值左边,大于等于时放在基准值右边。当结束一次遍历时,基准值元素一定在最终位置。按照基准值左边与右边待排序数组重复上述过程。快排整体思路图解:快排具体执行过程图解:快速排序源代码:imp...

2019-03-16 00:30:52 677

原创 归并排序

归并排序:采用分治思想分治思想:将大事情化小,类似于递归。故采用分治思想可以解决的问题一定可以使用递归方法。思路:找到数组第一个元素下标、最后一个元素下标、中间元素下标,利用递归方法将数组满满划分为更小的数组,直到当前第一个元素下标和最后一个元素下标重合时(即此时数组只有一个元素),比较相邻两个小数组元素大小,将其合并(利用建立临时数组),最后将临时数组中的元素拷贝回原数组即可。归并排序图解...

2019-03-12 22:00:37 74

空空如也

空空如也

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

TA关注的人

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