- 博客(25)
- 收藏
- 关注

原创 Mybatis全攻略(通俗易懂,99%手敲)
Mybatis全攻略(通俗易懂,99%手敲)第一篇原创技术博客就贡献给MyBatis了,第一是MyBatis本身比较简单,第二是因为MyBatis扩展的点比较多,多挖挖坑,有助于激励今后继续创作,第三是MyBatis确实比较重要吧,毕竟在JAVA界,和Hibernate算是关系型数据库框架的双子星了。本文旨在让新手小白也能快速上手,所以从最基本的讲起,如果您是中手或者高手,可以跳到响应章节查漏...
2019-04-26 11:04:09
318
原创 JAVA8新特性一:lambda表达式
大家好,最近入职了新的公司,所以很久都没有写新博客了(其实就是懒)新公司大量的使用了一些JAVA8的新特性,所以也恶补了一下JAVA8的知识(好吧我知道JAVA14都出来了我还在写JAVA8的特性确实有点落伍了)但最近看了一下实战系列的JAVA8实战,感觉很受启发,作者的高度带给了我不一样的角度来看这些特性。新特性一:Lambda表达式Lambda表达式概述首先让我们来康康JAVA8最大的...
2020-05-06 16:06:33
2100
2
原创 记一次无法在Linux下找到文件的教训
项目有个模块是要把JSON压缩成Zip传到Linux服务器,另一个模块负责读Zip里面的内容。而我负责的模块就是那个读Zip内容的。本来以为只是洒洒水,大手一挥String pocessedFilePath = "/data/tmpdata/xuehua001/success/2019-08-23/0823001_12_2019-08-23_134844679_134856.zip";Fi...
2019-10-15 20:55:10
429
原创 浅谈LogBack
大嘎好,好久没有写博客了,最近996感觉身体被掏空,准备在国庆大假之际更一波。说道日志,其实以前我是觉得地位和System.out.print差不多,基本上属于日志小白。后面慢慢才发现,哇,原来有日志,追根溯源起来这么方便啊!而且日志基本属于无脑操作,反正就那些配置,知道就是会,不知道就是不会。今天特地来梳理一下SpringBoot的默认Log框架LogBack。文章目录一、LogBack和L...
2019-09-30 15:59:22
286
原创 算法-归并排序算法(六)
大家好啊,好久没写博客了,主要是前段时间比较忙,很抱歉很久都没更新了。是时候更新了~上次讲了快排,这次讲一讲归并排序。首先在正片前多说两句,归并排序用的还是蛮多的,在JAVA API中,归并排序一度是默认的排序方式,当然实际上JAVA里是分了很多种情况考虑的,以Array的sort()为例,当数组长度小于某个值时,其实使用的是插入排序。其他的还有一些判断,在写完排序算法后,我会分析一下JAVA ...
2019-06-27 11:54:15
188
原创 算法-快速排序算法(五)
快速排序,emmm,这个取名也太直接了吧。。。总之就是很快咯?!在效率至上的算法里,往往快就是好,来,让我们康康,这个快速排序,到底为什么那么快?快速排序的基本思路快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以...
2019-06-10 21:05:18
420
原创 算法-希尔排序算法(四)
大家端午节安康,这两天都忙着玩了。没什么时间写技术博客。不过定好的计划一定要努力完成。这次给大家介绍一下希尔排序算法,其实这是建立在插入排序之上的一种排序算法。当然,作为一个程序员,我们听到诸如:“建立在XX之上”,“是XXX的改进版”,“继XXX后,XXXX横空出世”这些句子,本能会思考旧东西的缺点,新东西的优点,新东西解决了旧东西什么问题。那么插入排序有什么问题呢?文章目录插入排序之殇希尔...
2019-06-09 20:55:24
790
原创 算法-插入排序算法(三)
文章目录定义时间复杂度代码实现定义插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为...
2019-06-04 22:53:24
168
原创 算法-冒泡排序算法(二)
文章目录定义算法原理时间复杂度代码实现定义重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序...
2019-06-04 22:44:20
148
原创 算法-选择排序算法(一)
排序算法也算是面试中的常客了,这段时间想巩固一下排序算法,免得几年工作经验,别人叫手写个快排甚至插入排序都写得磕磕绊绊,那就不太好了。作为排序算法的第一篇,我们还是来介绍一下选择排序算法:文章目录定义时间复杂度《算法》第四版提到的两个特点代码实现定义选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在...
2019-06-04 22:31:08
240
原创 数据结构-树系列之红黑树(五)
红黑树是树的数据结构中最为重要的一种。Java的容器TreeSet、TreeMap均使用红黑树实现。JDK1.8中HashMap中也加入了红黑树。C++ STL中的map和set同样使用红黑树实现。之前的文章已经详细介绍了2-3-4树的性质与操作。本篇文章将从2-3-4树与红黑树关系出发,详细阐明红黑树。 2-3-4树和红黑树是完全等价的,但是2-3-4树的编程实现相对复杂,所以一般是通过实现...
2019-06-04 09:29:03
308
原创 数据结构-树系列之2-3,2-3-4树(红黑树前置知识)(四)
前面讲到了二叉搜索树(BST)和二叉平衡树(AVL),二叉搜索树在最好的情况下搜索的时间复杂度为O(logn),但如果插入节点时,插入元素序列本身就是有序的,那么BST树就退化成一个线性表了,搜索的时间复杂度为O(n)。 如果想要减少比较次数,就需要降低树的高度。在插入和删除节点时,要保证插入节点后不能使叶子节点之间的深度之差大于1,这样就能保证整棵树的深度最小,这就是AVL树解决BST搜索性...
2019-06-03 10:06:29
543
原创 数据结构-树系列之平衡二叉树(三)
前文也提到了,二叉搜索树一定程度上可以提高搜索效率,但是当原序列有序,例如序列A = {1,2,3,4,5,6},构造二叉搜索树如图3.1。依据此序列构造的二叉搜索树为右斜树,同时二叉树退化成单链表,搜索效率降低为O(n)。所以二叉搜索树的效率跟树的形态密切相关!在此二叉搜索树中查找元素6需要查找6次。二叉搜索树的查找效率取决于树的高度,因此保持树的高度最小,即可保证树的查找效率。同样的序列A...
2019-05-29 21:00:05
482
原创 数据结构-树系列之二叉搜索树(二)
二叉树的基本概念与定义在前文中已经介绍过了,那么此后的几篇文章开始着重于二叉树的实际运用,现在先介绍一篇二叉搜索树,见名知意,此树肯定是用在搜索查找的场景啦。文章目录二叉搜索树定义性质创建二叉搜索树查找查找过程插入插入过程图解过程代码实现删除删除节点为叶子节点删除的节点只有左子树删除的节点只有右子树删除的节点既有左子树又有右子树代码实现:二叉搜索树定义二叉搜索树又称二叉查找树,亦称为二叉排...
2019-05-29 09:11:53
445
原创 数据结构-树系列之基础(一)
数据结构系列正式进入树的专题!鼓掌~毫不夸张的说,树乃是数据结构中最重要的一环,太多的地方需要用到树,前面的链表与数组仅仅是一种线性的存储结构,而树则立体了起来。那么,什么是树呢?文章目录树的基础概念什么是树节点的度节点关系节点层次树的深度二叉树二叉树定义二叉树描述多叉树二叉树特点二叉树性质满二叉树(完美二叉树)二叉树的存储结构数组存储结构链表存储结构重难点:二叉树遍历前序遍历中序遍历后序遍历...
2019-05-27 22:57:05
398
原创 LeetCode长征系列-2 Add Two Numbers两数相加
文章目录题目解法暴力法两遍哈希表一遍哈希表题目的启示题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> ...
2019-05-16 11:32:20
160
1
原创 LeetCode长征系列-1Two Sum两数之和
文章目录题目解法暴力法两遍哈希表一遍哈希表题目的启示题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 +...
2019-05-15 15:19:27
157
原创 数据结构-链表进阶攻略(半成品)
链表和数组都算是比较底层的数据结构,与快速查找的数组不同,链表更适合插入与删除。文章目录链表基本概念单向链表双向链表常见的链表算法题:链表基本概念单向链表/** * 单向链表 * 当前结点只存储了后续结点引用,相对双向链表而言,空间复杂的较好。 */public class Linked<E> { private static class Node<E&...
2019-05-14 21:13:44
249
原创 数据结构-数组Array进阶攻略
数组是非常基础的数据结构,本文准备从数组自身与java的Arrays工具类源码来分析数组:数组特点1:长度固定2:数组是相同数据类型的有序集合3:数组也是对象(属于引用类型)初始化数组:1.静态初始化简化格式:数据类型[] 数组名称 = {值, 值, …};int[] arr={1,2,3,6};完整格式(推荐):数据类型[] 数组名称 = new 数据类型[]{值, 值, ...
2019-05-13 23:45:38
259
原创 数据结构-Queue系列之ArrayDeque(一)
这段时间暂时不写关于各种框架的博客了。因为自己是非科班出生,所以想的还是先从根基抓起,目前在学大学的计算机基础课,计算机网络,操作系统那些比较偏理论,而数据结构和算法有很大的关系,所以单单做一些数据结构方面的笔记。首先就来看看队列,queue。最最最基本的概念:队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)...
2019-05-09 20:26:06
413
1
转载 原码,反码,补码终于不再傻傻分不清
原码,反码,补码杂谈本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。接触过计算机或电子信息相关课程的同学,应该都或多或少看过补码这哥仨。每次都是在课本的最前几页,来上这么一段:什么反码是原码除符号位,按位取反。补码等于反码加一。然后给整得莫名其妙,稀里糊涂地,接着就是翻页,反正后面的内容也跟三码没多大关系。我原来也...
2019-05-08 22:47:20
2381
1
转载 关于JS中的栈与队列
栈栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈是限定仅在表头进行插入和删除操作的线性表。就好比
2017-03-01 15:25:10
7326
1
转载 JS中变量提前简单分析
关于JS中的变量申明提前,最简单的就是下列例子var scope = "global";function f() { alert(scope); var scope = "local"; //覆盖全局变量 alert(scope);}大家可能误以为函数f的第一个alert会输出"global",因为代码此时还没有执行到var语句声明局部变量的代码行。其实不然,由
2017-02-24 12:34:18
720
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人