自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浅谈Spring Boot 运行原理

首先,创建一个Spring Boot项目。pom.xmlpom.xml文件是一个项目中管理资源和插件的文件,打开 pom.xml 文件,我们可以看到如下图所示:它还存在一个父项目,继续点进去,就可以看到他的父依赖,在父依赖中管理了Spring Boot应用中依赖的所有包版本的地方,在导入包的时候默认是不需要指定版本的;但是,若导入的包在父项目中没有管理,还是需要手动配置版本的。启动器spring-boot-starter 是Spring Boot 的启动器,又叫场景启动器。Spr

2020-11-27 13:51:20 240

原创 浅谈Cookie和Session

由于HTTP协议是一种无状态的协议,即客户端浏览器的每一次请求都是独立的,与之前和之后的请求都没有关系,都是相互独立的。这就意味着服务器中没有保存客户端浏览器的数据信息,使得客户端浏览器每一次请求都要带上自己的状态信息去访问服务器。为了弥补HTTP协议的这一缺点,就有了Cookie和Session两种会话机制。一、Cookie机制当客户端浏览器访问服务器时,为了记录客户端浏览器的状态,服务器就为浏览器发送一个Cookie,用来记录浏览器的状态。客户端浏览器会将该Cookie保存下来,当下一次再访

2020-11-13 13:44:52 160

原创 剑指offer:数值的整数次方

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。示例:输入:2,3输出:8.0000分析:该题使用递归求解。需要分情况讨论:0次方,则返回1;1次方,返回该数本身; 偶数次方:递归实现相乘 奇数次方:若大于零,则分两部分递归相乘,再乘以该数本身; ...

2020-11-09 22:08:36 119

原创 剑指offer:矩形覆盖

题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析:典型的递归问题,n==1时,只有一种方法;n==2时,有两种方法。实现:public static int RectCover(int target){ if(target < 1){ return 0; } if(target==1 || target==2){

2020-11-09 21:13:49 74

原创 剑指offer:跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析:使用递归可以很简单的解决该问题。 一级台阶,只有一种跳法;两级台阶,则有两种跳法。此为递归结束的条件。实现:/** * 跳台阶,一次可以跳一阶也可以跳两阶 * @param target 台阶的总数 * @return */ public static int JumpFloor(int targ...

2020-11-09 21:00:43 63

原创 剑指offer:旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。public static int minNumberRotateArray(int[] array){ if(array.length==0){ return Integer.MAX_VALUE; } ...

2020-11-09 20:52:09 84

原创 剑指offer:用两个栈来实现队列

题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析:一般都是以下方法实现入队操作只需要在一个栈中执行push操作即可;出队操作,需要将栈1中的元素加入到栈2中,再执行pop操作;若栈2为空,出队操作就需要转移元素,若不为空直接出栈即可。实现:class myQueue{ Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer>

2020-11-09 16:28:59 67

原创 剑指offer:重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。示例:输入:前序遍历:1, 2, 3, 4, 5, 6, 7中序遍历:3, 2, 4, 1, 6, 5, 7输出:1, 2, 5, 3, 4, 6, 7分析:前序遍历的第一个节点为二叉树的根节点,找到根节点在中序遍历数组中的位置,则前半部分就

2020-11-09 16:06:59 148

原创 剑指offer:从尾到头打印链表

题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。实现:方法一:利用堆栈结构的先进后出的特点实现public static ArrayList<Integer> printListFromTailToHead1(ListNode listNode) { ListNode temp = listNode; Stack<Integer> stack = new Stack<>(); ArrayL

2020-11-09 15:09:12 75

原创 剑指offer:二维数组中的查找

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:在以下二维数组中查找数字 7 ,返回值为true;查找 3 返回值为 false。分析:方法一:首先将target与二维数组第一行比较,当target大于,某一数据时停止比较,记录当前位置,然后从当前位置倒着依次与target进行比较。 public static boolean

2020-11-09 14:19:30 73

原创 斐波那契查找算法

则斐波那契查找算法的代码实现如下所示://斐波那契查找算法//以 arr = {1,8,10,89,1000,1234} 为例public static int FiboSearch(int[] arr,int fidValue){ int low = 0; int high = arr.length-1; // high = 5 int mid = 0; int midValue = 0; int k = 0;//菲波那切数列分割数值的...

2020-11-03 10:35:02 305

原创 Mybatis中的一对一查询

前期准备建立用户信息user和账户表account,并设置外键建立账户account和用户user实体类public class User implements Serializable { private Integer id; private String nam; private String sex; private String address; private Integer age; @Override public

2020-09-16 15:36:55 475

原创 Mybatis的动态SQL语句

前期准备数据库表建立用户实体类,生成get和set方法定义持久层接口配置IUserDao.xml文件,由于实体类属性与数据库表列名不一致,因此建立属性与表的映射关系UserMap<if>标签Dao持久层接口Dao持久层映射配置测试<where>标签Dao持久层接口Dao持久层映射配置测试<foreach>标签定义一个QueryVo类,在其中添加 Lsit 属性,用于封装参数

2020-09-16 09:57:14 85

原创 Java中的高级特性--反射

反射是框架设计的灵魂1、概念反射(Reflection)机制就是将类的各个组成部分封装为其他的对象,并且能够动态的获取类的信息和动态的调用对象方法。使得能够在Java程序运行状态下,能够知道任意一个类的属性和方法,并且对于任意一个对象都能够调用它的任意的属性和方法。2、反射机制的主要功能(1)在运行状态下判断任意一个对象属于哪一个类;(2)在运行那个状态下创建任意一个类对象;(3)在运行状态下获取任意一个类的属性和方法;(4)在运行状态下调用任意一个对象的属性和方法。3、

2020-09-15 15:22:16 140

原创 idea2020配置Tomcat后,浏览器报404,找不到路径

如果你确定你的Tomcat下载,安装,调试,配置都没有问题的情况下,出现了如下图所示的问题:那么,请你明确一个问题:WEB-INF目录下的资源是不能被浏览器访问的。

2020-08-12 15:06:02 1299

原创 冒泡、选择、插入算法实现及算法分析

1、冒泡排序只涉及相邻元素比较和交换操作,每轮确定一个元素的位置。(升序)代码实现如下:这里对原始的冒泡排序进行了优化,使用flag来标记在每一轮中是否进行了数据交换,如果在某一轮没有进行数据交换,说明数据已经是有序的,不需要再进行下一轮比较了。public void bubbleSort(int[] array){ int len = array.length; if(len<=1) return; for (int i = 1;

2020-08-04 11:52:40 216

原创 Iterable 和 Iterator

Iterable 接口 Iterable 意为可迭代的、可重复的,实现 Iterable 接口的集合对象支持迭代,是可迭代。从源代码中可以看到,Collection 接口继承了 Iterable 接口。在 Iterable 接口中定义了三个方法:(1)该方法返回一个 T 类型元素上的迭代器。(2)该方法进行循环输出,对内部元素进行遍历,传递的参数是一个Consumer接口。(3)该方法提供了一个可以并行遍历元素的迭代器,以适应现在cpu多核时代并行遍历的需求。It

2020-08-03 16:20:42 500

原创 JavaSE---方法引用

1、双冒号 ::为方法引用运算符,它所在的表达式称为方法引用。如果lambda表达式要表达的函数方案已经存在于某个方法的实现中,则可以通过双冒号来引用该方法作为lambda表达式的替代者。注意:lambda表达式中传递的参数一定是方法引用中可以接收的类型,否则会抛出异常。举例:str -> System.out.println(str): 这个一个输出字符串的lambda表达式,它是指在拿到参数之后,经lambda之手传递给 ...

2020-08-01 15:16:49 115 1

原创 Stream流

1、Stream流是JDK1.8 之后出现的,它是一个来自数据源的元素队列。其中,数据源也就是流的来源,可以是集合、数组等;元素是特定类型的对象,形成一个队列。注意,在Java中,Stream并不会存储元素,而是按需进行计算。2、Stream的基本特征(1)Pipelining:在流上,中间的操作都会返回流对象本身,使得多个操作可以串联成一个管道,对操作进行优化。(2)内部迭代:流可以直接调用遍历方法,实现内部迭代。当使用一个流时,通常包括三个基本步骤:获取一个数据源(source)

2020-08-01 10:46:08 93

原创 lambda表达式作为参数传递

lambda表达式有延迟执行的效果,在使用lambda表达式作为参数传递的过程中,仅仅是把参数传递到了方法中,只有满足其条件,才会执行,否则不会执行。因此,不会存在性能浪费。举例:定义一个函数式接口,即可以适用于lambda表达式的接口:@FunctionalInterfacepublic interface Message { public abstract String MessageBuilder();}定义一个类,在类中定义一个有两个参数的方法,其中一个是接口的对象。

2020-07-31 09:38:14 4080

原创 流对象中的异常处理

在JDK7中增加了一个新特性: 在try后可增加一个(),在()中可以定义流对象,则这个流对象的作用域就是try代码块,try代码块执行结束之后,会自动把流对象释放,不用再写finally。public class Test03 { public static void main(String[] args) { try(FileInputStream fis = new FileInputStream(new File("a.txt"))){ ...

2020-07-30 15:15:12 167

原创 JavaSE -- FileOutputStream 和 FileInputStream

1、FileOutputStream :文件字节输出流 java.io.FileOutputStream extends OutputStream java.io.OutputStream:字节输出流,是一个抽象类,是所有字节输出流的超类。构造方法的作用:(1)创建一个 FileOutputStream 对象;(2)根据构造方法中的文件或文件路径,创建一个空文件;(3)将创建好的 FileOutputStream 对象指向创建好的文件。文件字节流的使用步骤:...

2020-07-30 14:59:11 343

原创 JavaSE--文件过滤器FileFilter和FilenameFilter

1、Public Interface FileFilterjava.io.FileFilter 接口:一个抽象路径名的过滤器。该接口的实例可以通过File类的listFiles(FileFilter)方法。接口中的抽象方法:首先,需要定义一个 FileFilter 的实现类,实现接口中的 accept() 方法,在该方法中定义文件过滤的条件。import java.io.File;import java.io.FileFilter;public class FileF..

2020-07-30 13:56:28 228

原创 Javase---接口概述

1、什么是接口?接口是一种引用数据类型,是抽象方法的集合,以关键字 interface 来声明。接口无法被实例化,但是它可以被实现。2、接口中可以包含的内容: Java 7 之后:常量 、抽象方法 Java 8 之后:默认方法、静态方法 Java 9 之后:静态方法、私有方法public interface Iinterface { //定义常量 public static final int NU...

2020-07-29 15:50:14 148

原创 剑指offer --- 求连续子数组的最大和

题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)代码实现:public stat...

2020-07-21 19:51:23 75

原创 剑指offer --- 将字符串转换为整数(Java)

题目描述:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+21474836471a33输出21474836470代码实现(一):(1)将字符串转为字符数组;(2)从数组最后一个字符开始向前遍历,判断是否符合条件,转化为整数;(3)第一个元素需要单独判断,进行正负

2020-07-11 15:14:23 96

原创 (孩子们的游戏)有n个小孩围成一圈,给定数字m,从编号为0 的小孩开始报数,喊到m-1的小孩退出游戏,下一名继续从0开始报数,直到剩下一名。

方法一:利用链表来实现,时间复杂度为O(n^2),空进复杂度为O(n)public class Test { //n个小朋友,给定数 m public static int LuckyOne(int n,int m){ LinkedList<Integer> list = new LinkedList<Integer>(); for(int i=0;i<n;i++){ list.add(i);

2020-07-10 11:24:40 1968

原创 常见面试题,不使用“+、-、*、\”四则运算符,计算两个整数之和。

举例说明:a = 4, b = 6, 计算a+b。a = 4 0100b = 6 0110进位和(&):0100 = 4非进位和(异或):0010 = 2则 a + b =2 + 4<<1----------------------------------------------2 00104<<1 1000进位和(&):0000 = 0非进位和(异或):1010 = 10当进位和...

2020-07-09 20:58:20 148

原创 简单的测试框架,自动执行主方法,判断被检测的方法是否异常,如果异常记录到文件中

被检测的类,Calculator类:public class Calculator { @Check public void add(){ System.out.println("1 + 0 = " + (1+0)); } @Check public void sub(){ System.out.println("1 - 0 = " + (1-0)); } @Check public void mul

2020-07-02 21:09:04 166

原创 定义一个类,在不改变该类的情况下,可以创建任意类的对象,执行任意的方法

方法一:使用配置文件和反射实现定义配置文件如下,调用 Student 类中的 sleep() 方法:import java.io.InputStream;import java.lang.reflect.Method;import java.util.Properties;public class Test { public static void main(String[] args) throws Exception { //1、加载配置文件

2020-07-02 17:47:22 365

原创 Pyhton入门12——闭包、作用、闭包延迟

闭包是指延伸了作用域的函数,其中包含函数定义体中的引用和不在定义体中定义的非全局变量。它的特别之处是能够访问定义体之外的非全局变量。这就需要使用内部函数和外部函数了。1、闭包的条件(1)在外部函数中定义了内部函数;(2)外部函数的返回值是内部函数名;(3)内部函数引用了外部函数的临时变量;...

2020-04-30 11:56:21 192

原创 Python入门11——内部函数和nonlocal关键字

内部函数顾名思义就是在函数内部定义函数,因此,也就有了外部函数这个名词。内部函数可以直接修改和使用外部函数的可变类型变量;对于不可变类型变量(数字、字符串、元组等)可直接使用,但是若要修改则需要使用关键字 nonlocal 关键字声明。1、内部函数的权限问题(1)内部函数可以访问外部函数的变量;(2)可以修改外部函数的可变类型变量;(3)在内部函数中,修改全局变量需要加 globa...

2020-04-28 21:19:02 207

原创 Python入门10——全局变量与局部变量

全局变量:定义在函数体外部的变量。局部变量:定义在函数体内部的变量。如下所示,num01 就是全局变量,num02 就是局部变量。全局变量的作用域为整个代码程序,而局部变量只作用域定义其的函数体内:num01 = 2def fun(): num02 = 3全局变量不能随意修改,在函数体内调用全局变量,若不需要修改,则可直接调用;若需要修改,则必须在函数内部加 globa...

2020-04-28 20:03:13 253

原创 Python入门09——函数的参数

在Python中,函数的参数主要可以分为以下三种类型:1、可变参数可变参数必须放在固定参数之后。>>> def fun(a,b,*args): print(a,b,args) >>> fun(1,2,3,4,5)1 2 (3, 4, 5)2、关键字参数必须成对传值:key = value>>> d ...

2020-04-28 19:05:01 147

原创 Python入门08——集合

集合(set)的本质是许多唯一对象的聚集,且其中的元素是无序的。因此,集合可用于去重。1、创建空集合s = set()2、函数add() : 添加一个元素;update() : 一般参数是一个集合,即将字符串、数组、列表、元组等可迭代类型的数据转换成集合,添加到集合中;remove() : 删除元素,如果不存在,则报错;discard() : 与remove()类似,不...

2020-04-28 18:36:54 97

原创 Python入门07——字典

字典(dict)是由 ’ { } ’ 括起来的一组元素,其包含的元素是以键值对的形式存在的,其中 key 在字典是唯一的,value可以不唯一。1、字典的创建字典的创建方法有很多种,以及空字典的创建方式。>>> d1 = {'one':1,'two':2,'three':3}>>> d1{'one': 1, 'two': 2, 'three':...

2020-04-27 15:35:54 97

原创 Python入门06——元组的拆包与装包

元组拆包可以应用到任何可迭代的对象上,但是要求可迭代对象中的元素数量必须要跟接收这些元素的元组的空档一致,以下是元组拆包可能出现的情况。1、最简单的拆包形式就是平行复制,也就是说把一个可迭代对象里的元素一并赋值到由对应的变量组成的元组当中。>>> t1 = (1,2,3)>>> a,b,c = t1>>> print(a,b,c)...

2020-04-27 11:51:43 622 1

原创 Python入门05——元组

Python标准库用C实现了丰富的序列类型:本篇介绍的是元组!!!1、元组定义元组(tuple)是由 ’()‘ 括起来的一组数据,其中可包含各种不同的数据类型,值得注意的是,元组一旦创建,其内容边不可修改,因此,元组不能进行增、删、改操作,当元组中只有一个元素时,必须在元素后加 ‘ ,’。>>> t = (2)>>> t2>&g...

2020-04-27 11:03:08 204

原创 Python入门04——列表

Python标准库用C实现了丰富的序列类型:本篇介绍的是列表!!!1、列表的定义在Python中,列表就是由 ’ [ ] ’ 括起来的一组数据就可以被称为列表,其中可以存放各种不同数据类型的数据。>>> lst = [1,2,3,4]>>> lst[1, 2, 3, 4]>>> type(lst)<class...

2020-04-27 10:27:19 134

原创 Python入门03——字符串

1、字符串的定义 单引号、双引号、三引号都可以用来定义字符串。>>> s1 = 'abc'>>> s2 = "abc">>> s3 = '''abc'''>>> print(s1,s2,s3)abc abc abc>>> print(id(s1),id(s2),id(s3))205...

2020-04-26 22:48:45 227

空空如也

空空如也

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

TA关注的人

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