自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

写后端的小学生

永不懈怠

  • 博客(76)
  • 收藏
  • 关注

原创 8.Java容器-Set详解

       本文主要讲Set的三个子类:       HashSet:底层数据结构是哈希表(是一个元素为链表的数组) + 红黑树;       TreeSet集合:1.底层数据结构是红黑树(是一个自平衡的二叉树);2.保证元素的排序方式;       LinkedHashSet集合:底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成;HashSet       1.实现Set接口;  ...

2018-05-29 11:00:33 1939

原创 6.Java容器-TreeMap

概述      1.非同步;      2.TreeMap实现了NavigableMap接口,而NavigableMap接口继承着SortedMap接口,所以TreeMap是有序的;      3.TreeMap底层是红黑树,它方法的时间复杂度都不会太高:log(n);    4.TreeMap的构造器可以接受一个Comparator参数用以决定key的顺序,如果没有指定,那么尝试将key强转为C...

2018-05-28 20:39:52 1260

原创 5.Java容器-LinkedHashMap

LinkedHashMap概述       LinkedHashMap是HashMap的子类,内部使用双向链表进行顺序的维护,内部类Entry为HashMap的Node的子类;       底层是散列表和双向链表,插入的顺序是有序的(底层链表致使有序),和HashMap一样,允许key和value为null,初始容量和装载因子对LinkedHashMap的性能影响很大;也是非同步的,也可以调用Co...

2018-05-28 17:09:43 1302

原创 10.Java永久代去哪了

      在Java虚拟机中,类包含了其对应的元数据,比如类的层级信息,方法数据和方法信息(如字节码,栈和变量大小),运行时常量池,已确定的符号引用和虚方法表;      在过去(当自定义类加载器使用地不是很普遍的时候),类几乎是静态的,并且很少被卸载和回收;因此类可以被看做是“永久的”;另外由于类作为JVM实现的一部分,它们不由程序来创建,因此它们也被认为是“非堆”的内存;      在JDK...

2018-05-16 17:04:10 1926

原创 7.Java容器-ConcurrentHashMap

前言线程不安全的HashMap           在多线程环境下,HashMap的put操作可能会引起死循环,导致CPU利用率接近100%;         因为多线程可能会导致HashMap的Entry链表在扩容的时候,形成环形数据结构,这样,Entry的next节点永远不为空,获取Entry的时候就会产生死循环;效率低下的HashTable和Collections.synchronizedM...

2018-05-15 14:52:22 1233

原创 7.Spring MVC处理请求的过程

       本文将分析Spring MVC是如何处理请求的;       首先,分析HttpServletBean,FrameworkServlet和DispatcherServlet这三个Servlet的处理过程;       这样大家就可以明白从Servlet容器将请求交给Spring MVC一直到DispatcherServlet具体处理请求之前都做了什么;       最后再重点分析Sp...

2018-05-13 21:58:45 3554

原创 97.交错字符串(Interleaving String)

题目描述给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false解题思路...

2018-05-31 21:15:02 2830

原创 98.验证二叉搜索树(Validate Binary Search Tree)

题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4  / \  3 6输出: false解释...

2018-05-30 22:00:15 1215

原创 MyBatis概述

       配置MyBatis最常用的是XML形式进行配置,还可以使用Spring Bean的方式进行配置。另外还可以通过Java编码的方式进行配置,但Java编码的方式不太常用;       使用XML配置:首先在src/main/resources下面创建mybatis-config.xml配置文件;...

2018-05-30 08:58:57 1216

原创 99.恢复二叉搜索树(Recover Binary Search Tree)

题目描述       二叉搜索树中的两个节点被错误地交换;请在不改变其结构的情况下,恢复这棵树;       示例 1:输入: [1,3,null,null,2] 1 / 3 \ 2输出: [3,1,null,null,2] 3 / 1 \ 2      示例 2:输入: [3,1,4,null,null,2] 3 / \1 4 ...

2018-05-28 22:38:10 1827

原创

       一方面要最大程度地利用数据库的并发访问,另一方面还要确保每个用户能一一致的方式读取和修改数据,这就有了锁的机制;本文将详细介绍InnoDB存储引擎对表中数据的锁定,同时分析InnoDB存储引擎会以怎么的粒度锁定数据;       人们认为行级锁总会增加开销,实际上,只有当实现本身会增加开销时,行级锁才会增加开销;InnoDB存储引擎不需要锁升级,因为一个锁和多个锁的开销是相同的;什么...

2018-05-26 17:03:50 1104

原创 20.包含min函数的栈

题目描述       定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。解题思路 private int size; private int min = Integer.MAX_VALUE; private Stack<Integer> minStack = new Stack<Integer>(); private Int...

2018-05-26 10:28:08 1089

原创 19.顺时针打印矩阵

题目描述      输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路 public ArrayList<Integer> printMatrix(int[][] ...

2018-05-26 10:28:03 1169

原创 18.二叉树的镜像

题目描述       操作给定的二叉树,将其变换为源二叉树的镜像;输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...

2018-05-26 10:27:59 1128

原创 17.树的子结构

题目描述       输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路 private class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int ...

2018-05-26 10:27:52 1068

原创 16.合并两个排序的链表

题目描述       输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路 private class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; ...

2018-05-26 10:27:45 1133

原创 15.反转链表

题目描述       输入一个链表,反转链表后,输出链表的所有元素。解题思路 private class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public s...

2018-05-25 21:39:51 1126

原创 14.链表中倒数第k个结点

题目描述       输入一个链表,输出该链表中倒数第k个结点。解题思路 private class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public Li...

2018-05-25 21:36:14 1209

原创 13.调整数组顺序使奇数位于偶数前面

题目描述      输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路 public void reOrderArray(int [] array) { if (array.length <= 1) { return;...

2018-05-25 21:33:36 1119

原创 12.数值的整数次方

题目描述       给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方解题思路public double Power(double base, int exponent) { if (exponent == 0) { return 1; } int n=Math.ab...

2018-05-25 21:29:34 1098

原创 11.二进制中1的个数

题目描述       输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路public static int NumberOf1(int n) { char[] array = Integer.toBinaryString(n).toCharArray(); int result = 0; for(int i=0;i<arr...

2018-05-25 21:27:00 1158

原创 10.矩形覆盖

题目描述       我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路public static int RectCover(int target) { if (target < 1) { return 0; }else if (target == ...

2018-05-25 21:24:43 1100

原创 09.变态跳台阶

题目描述       一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路 public int JumpFloorII(int target) { // return (int)Math.pow(2, target-1); return 1<<(target-1); }...

2018-05-25 21:22:00 1134

原创 08.跳台阶

题目描述       一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路 public int JumpFloor(int target) { if (target >= 2) { return JumpFloor(target-1)+JumpFloor(target-2); }els...

2018-05-25 21:17:48 1105

原创 总结

       本文首先总结一下Spring MVC的运行原理,然后通过实际跟踪一个请求来回顾整个处理过程;Spring MVC原理总结       Spring MVC本质上是一个Servlet,Servlet的运行需要一个Servlet容器,如Tomcat;       Tomcat可以分为两部分:连接器和容器;连接器专门用于处理网络连接相关的事情,如Socket连接,request封装,连接线...

2018-05-25 17:03:59 1113

原创 9.Spring MVC重要组件-HandlerMapping

       从上图可以看出,HandlerMapping的继承结构分为两支,一支继承自AbstractHandlerMethodMapping,另一之继承自AbstractUrlHandlerMapping,而这两支都继承自抽象类AbstractHandlerMapping;所以,我们先分析AbstractHandlerMapping,然后再分析AbstractHandlerMethodMapp...

2018-05-25 10:54:22 1127

原创 8.Spring MVC重要组件概述

       这里说的组件指的是DispatcherServlet中直接初始化的那9个组件;HandlerMapping       HandlerMapping的作用是根据request找到相应的处理器Handler和Interceptors;       HandlerMapping接口里面只有一个方法,方法的实现非常灵活,只要使用Request返回HandlerExecutionChain即...

2018-05-24 15:25:05 1332

原创 07.斐波那契数列

题目描述       大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39解题思路 public int Fibonacci(int n) { if (n<=0) { return 0; }else if (n<3) { return 1; }else { return Fibonacci(n-1)+Fibo...

2018-05-23 14:11:23 1156

原创 06.旋转数组的最小数字

题目描述       把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路 public int minNumberInRotateArray(int [] a...

2018-05-23 14:08:57 1117

原创 05.用两个栈实现队列

题目描述       用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路 Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void pu...

2018-05-23 14:05:41 1096

原创 04.重建二叉树

题目描述       输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路 private class TreeNode { int val; TreeNode left...

2018-05-23 14:00:43 1082

原创 03.从尾到头打印链表

题目描述       输入一个链表,从尾到头打印链表每个节点的值;解题思路 private class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public Ar...

2018-05-23 13:57:39 1117

原创 02.替换空格

题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy;解题思路public String replaceSpace(StringBuffer str) { for(int i=0;i<str.length();i++) { if (str.cha...

2018-05-22 22:21:34 1146

原创 深入理解Session与Cookie

理解Cookie       当一个用户通过HTTP访问一个服务器时,服务器会将一些Key/Value键值对返回给客户端浏览器,并给这些数据加上一些限制条件;在条件符合时,这个用户再次访问这个服务器时,数据又被完整地带回给服务器;       好比,你去超市购物,第一次给你办了张购物卡,在这张购物卡上存放了你的个人信息,下次再来购物的时候,超市会识别你的购物卡,直接购物即可;       当初设计...

2018-05-21 22:27:24 1226

原创 7.TCP连接的建立与终止

       TCP是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接;建立TCP连接1.请求端发送一个SYN段(即报文段1)指明打算连接的服务器的端口号,以及初始序号(ISN,在这里是1415531521);2.服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答;同时,将确认序号设置为客户的ISN+1,以对客户端的SYN报文段进行确认;3.客户必须...

2018-05-21 19:40:22 1077

原创 计算机操作系统

概述操作系统基本特征并发        并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令;        并行需要硬件支持,如多流水线或者多处理器;        操作系统通过引入进程和线程,使得程序能够并发运行;共享       共享是指系统中的资源可以供多个并发进程共同使用;       有两种共享方式:互斥共享和同时共享;      互斥共享的资源称为临界资...

2018-05-21 19:40:04 1101

原创 进程和线程

进程是对正在运行的程序的一个抽象;顺序进程(简称,进程)。进程进程模型       一个进程就是一个正在执行的程序的实例,包括程序计数器,寄存器和变量的当前值;      假设只有一个CPU,那么就只有一个物理程序计数器,每个进程被执行时,进程的程序计数器被装入物理程序计数器,执行结束(或暂停)时,物理程序计数器被保存在该进程的程序计数器中(在内存中);创建进程      有4种情况下,会去创建进...

2018-05-21 19:39:51 1116

原创 5.数据流Stream(一)

前言      Stream与Java IO的InputStream和OutputStream是完全不一样的,数据流Stream是单体(Monad),并在Java 8函数式编程起着重要的作用。      在函数式编程中,单体是一种结构,表示为步骤序列的计算过程。单体结构的类型与它对链式操作,或嵌套函数的含义相关。...

2018-05-21 19:39:26 1234

原创 2.实战:OutOfMemoryError(OOM)异常

前言        除了程序计数器外,虚拟机内存的其他运行时区域都有发生OutOfMemoryError(OOM)异常的可能;       本文工作分两部分:1.通过代码验证各个运行时区域存储的内容;2.遇到内存溢出异常的时候,如何根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢出,以及出现这些异常后该如何处理;Java堆溢出       堆用来存储对象实例,只...

2018-05-21 19:39:10 1537

原创 2.Context的创建

Spring Boot的启动类@SpringBootApplication@ComponentScan(basePackages = {"com"})public class SpringSourceApplication { public static void main(String[] args) { ApplicationContext ctx = Spring...

2018-05-21 19:38:56 1084

空空如也

空空如也

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

TA关注的人

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