2 612星球的一只天才猪

尚未进行身份认证

We are all unique!

等级
TA的排名 27w+

栈的应用-表达式求值

栈是一种先进后出的数据结构,栈的应用很多,表达式求值问题就是一个典型的应用,包含:括号匹配,中缀/后缀表达式的转换以及后缀表达式求值…括号匹配使用栈,可以检查一个表达式的括号是否匹配,由于只关心括号的成对匹配,而不关心括号的类别,所以假设只包含()。检查括号匹配的算法思路是:① 依次遍历表达式,记录当前字符② 如果当前字符不是括号,继续遍历下一个字符③ 如果当前字符是左括号,入栈...

2019-08-15 19:19:51

一次循环获取数组最小的两个数

很多情况下,我们需要找到一组数中的最小值或者最大值,通过一次循环就可以搞定,那么如果要获取最小的两个数可以吗?只需要稍作变动就可以实现…很多情况下,我们需要找到一组数中的最小值或者最大值,最简单的方法是循环遍历一次,代码实现非常容易(以最小值为例): publicstaticintgetMin(int[]values){ intmin=values[0]; fo...

2019-08-01 16:07:41

创建一个泛型数组会发生什么?

数组的使用频率非常高,我们经常会创建一个数组,无论是基本类型还是引用类型的数组;但是你尝试创建过泛型数组吗?又会发什么什么?尝试创建一个泛型数组如果你使用Java语言,并且尝试创建一个泛型数组;好吧,其实你会发现根本无法创建一个泛型数组,编译器在编译阶段就制止了你的这一行为。数组与泛型不能很好的结合,也不能创建具有泛型类型的数组。其中的原因与泛型的实现机制有关。泛型与类型擦除Java...

2019-07-20 23:30:54

如何在实际项目中使用PageHelper分页插件

PageHelper是一个分页插件,能够简单快速的帮助开发人员完成常见的分页功能,你只需要简单的使用两行代码就可以完成一个分页效果…最近做一个科创项目,使用Maven+SSM的环境,有分页的功能,于是使用了PageHelper的分页工具来完成分页功能,体验非常不错。准备工作1.数据库准备t_diy是用户自己写个性文章的的一个表,t_categories是文章的分类表,t_user用...

2019-07-11 23:26:32

(旋转数组的)二分查找算法

二分查找算法(BinarySearch)是一种高效的、应用广泛的查找算法。它是一种采用分治策略的算法。基本二分查找算法二分查找是针对顺序存储的有序序列的;二分查找的基本思想是:将目标元素与序列中位数比较,如果大于中位数则在右半段序列查找,反之在左半段查找。为了能够方便表示(以升序序列为例),设置两个索引值start,end表示查找范围即下图中的两个灰色箭头,设置一个标记mid表示当前范围...

2019-06-17 13:32:21

持有对象-容器类基础

容器类的作用是存储对象(持有对象),它们提供不同的方式保存程序中的对象,常用的容器有ArrayList,LinkedList,HashMap等…Java容器的继承结构橙色框是最常用的几个容器类。容器的基本概念Java容器类类库的用途是保存对象;容器类被划分为两大类:Collection和MapCollectionCollection是独立元素的序列,这些元素的存储都必须遵守一定的...

2019-06-14 15:40:25

内部类自救指南

内部类是Java的一个重要组成,参考《Java编程思想》一书后,对内部类进行了一些整理…初识内部类内部类是指在类内部定义的类.内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部类的可视性。内部类了解外围类,并能与之通信,而且你用内部类写出的代码更加优雅而清晰,尽管并不总是这样。——摘自《Java编程思想》内部类与外围类的通信开始并创建一个内部类...

2019-06-08 07:19:15

计数排序

认识计数排序计数排序是一种典型的不需要比较的排序方法,它的算法效率高于基于比较的排序算法的效率。计数排序是一种稳定的排序算法。简单计数排序计数排序将待排元素值定义为数组下标,用数组对应的值表示该下标(元素)出现的次数,最后将遍历数组即可得到有序的元素。比如有一组数[4,2,5,1,2,2,4,5,6],由于需要将元素值转换为数组下标,所以需要一个新的数组counting,长度为元素最大值+...

2019-05-10 08:39:45

单链表环问题?

如何判断单链表是否存在环如果单链表的尾节点的next指针不为null,而指向链表中的某个节点,则称该单链表存在环。比如下图所示的单链表是一个存在环的单链表(请暂时忽略meeting):判断单链表是否存在环有多种方法,比如你可以使用哈希缓存,快慢指针甚至直接暴力的遍历等方法。本文介绍快慢指针法的解决策略。快慢指针法的实现思路如下:定义两个指针:快指针和慢指针;都指向第一个节点快指针...

2019-05-03 15:03:31

独一无二的单例模式

经典单例模式单例模式被定义为:确保一个类只有一个实例,并提供一个全局访问点。单例模式使得一个类只能有唯一的一个实例,这意味着不能再使用new关键字创建对象,因为一旦可以被new,就可以被多次new。问题1:如何保证一个类只有一个实例?问题2:不能使用new如何获取对象?这两个问题的答案非常简单:由于new对象会调用构造方法,所以只需要将构造方法定义为private(虽然很少这么干,但...

2019-04-28 13:28:40

学会了这个调试方法,再难的Bug都不怕!

作为一个程序员,不仅要担心的自己的发量,而且每天都要饱受Bug的折磨,遇到Bug是经常的事,今天就教大家一个调试代码的绝招!第一步打开开发环境比如我这里打开了Atom编辑器。第二步找到需要调试的代码比如我这里想要调试一下C++实现的一段数据结构代码。第三步具体的调试办法首先,你要通过各种方法采购到我们至少一只小黄鸭,大小不限;然后你要将买到的小黄鸭放在电脑前,小黄鸭的朝向无关紧...

2019-04-25 14:36:22

String相关的四种字符串类

本篇文章介绍String,StringBuilder,StringBuffer和StringJoner的区别和使用,以及如何进行字符串拼接的常用方法StringString类被final修饰,不可被继承,内部由一个被final字符数组实现,因此String是一个不可变类,这意味着对String的每次修改都会创建新的存储空间,而StringBuilder,StringBuffer都是字符串变量...

2019-04-12 10:04:57

IO流与装饰者模式

个人网站:smartpig612.club微信公众号:SmartPig阅读本篇文章大约花费您8-10分钟装饰者模式的定义:动态的将责任附加到对象身上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。了解装饰者模式装饰者模式的定义:动态的将责任附加到对象身上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。在定义在提到了几个关键点:动态附加扩展功能比继承更优由此...

2019-04-09 16:52:13

深入理解HashMap

HashMap介绍HashMap是Java中Map的一个实现类。是一个双列结构,插入和查询的效率都很高;允许null键和null值。HashMap的键唯一,值可以重复,元素存储无序;HashMap是线程不安全的。HashMap是一个散列表。JDK1.8对HashMap使用了红黑树进行优化。HashMap的双列结构HashMap采用数组+链表的双列结构,简单示意图如下:HashM...

2019-04-01 09:23:31

Hutool使用指南(五):分页工具

阅读本篇文章大约花费您4~5分钟!今天是Hutool的第五篇文章,一起了解一下分页工具的使用。分页工具:PageUtil,主要帮助操作数据库的方便,几乎所有的网页都需要使用分页来显示过多的数据,以MySQL为例,常用的是limit子句,用于限制查询的结果,limit后面的参数是起始记录,而我们更加习惯于第几页和每一页的容量来描述分页,分页工具可以很方便的帮助我...

2019-03-17 22:45:13

Hutool使用指南(四):正则工具

今天介绍Hutool的正则工具,由于和正则表达式关系密切,所以今天只是了解一下正则工具的基本使用,以后会专门介绍正则表达式,到时再结合Hutool详细介绍。正则表达式工具类是ReUtil,其中的方法都是static方法。判断是否匹配使用isMatch(Stringregex,CharSequencecontent):boolean方法,第一个参数是正则,第...

2019-03-04 20:20:33

Hutool使用指南(三):随机工具

阅读本篇文章大约花费您1~2分钟!今天给大家介绍Hutool工具中随机工具的使用方法。随机工具非常简单,也非常容易理解,用了一次就会。随机工具主要是封装了java.util.Random对象,提供了一些产生随机数或者随机字符串的方法。随机工具类是RandomUtil,里面的方法都是静态方法。了解随机工具方法随机工具的主要方法如下:RandomUtil.r...

2019-02-28 16:54:04

Hutool使用指南(二):字符串工具

阅读本篇文章大约花费您5分钟!   今天是Hutool工具的第二篇文章,介绍一下字符串相关的处理方法。字符串工具指cn.hutool.core.util.StrUtil类,其中对String的多种方法进行了封装并且提供了其他方便实用的方法。StrUtil中的方法是静态方法。从多个字符串中判断是否有空   这里的空有两层含义:一是null或者“”(空串),二是不可见字符构成的字...

2019-02-26 20:14:04

单链表逆序掌握这两种思路就够了!!!

阅读本篇文章大约花费您4~5分钟!   链表是非常重要的一种数据结构,插入和删除的效率都是O(1),但是查找的效率比较低是O(n)。在单链表中,经常会遇到逆序单链表的题目,虽然听起来很简单,但是要想完整无误的写出代码,还是有很多细节要注意的。   今天给大家介绍两个思路来分析这个问题。   首先我们要知道单链表逆序的本质就是将节点的next指针指向它的前一个节点;并且完成...

2019-02-21 23:37:29

Hutool使用指南(一):时间日期工具

阅读本篇文章大约花费5~6分钟!  从今天开始,持续为大家介绍一款超厉害的国产Java工具——Hutool。Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。适用于很多项目以及Web开发,并且与其他框架没有耦合性。话不多说,今天首先介绍Hutool中的时间日期相关操作。时间日期类介绍DateUtil...

2019-02-20 22:53:51

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。