- 博客(31)
- 收藏
- 关注
原创 springAOP切面日志
一、在方法上加上自定义注解二、查看自定义注解内部三、查看其切面package com.sinosig.label.core.web.aop;import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.apache.shiro.SecurityUt
2021-03-31 10:37:38
183
原创 正则表达式匹配大全
一、校验数字的表达式数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$ 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$
2021-03-01 20:59:04
725
原创 Spring_MVC之拦截器
什么是拦截器拦截器是Spring提供的一种技术,它的功能似于过滤器Filter,==它会在进入controller之前,离开controller之后以及页面渲染完毕之后进行拦截。==自定义拦截器重点: 自定义一个类实现HandlerInterceptor接口开发拦截器用于定义请求被拦住之后, 应该怎么处理配置拦截器定义我们要拦截哪些路径,不拦截哪些路径, 只有拦截住的路径才会送到拦截器中进行处理测试自定义拦截器链开发中拦截...
2021-01-08 19:26:02
85
原创 Spring_MVC之异常处理机制
对于异常的处理一般有两种方式: 当前方法处理(try-catch),这种处理方式会造成业务代码和异常处理代码的耦合 当前方法不处理, 出现异常后直接抛给调用者处理 使用Spring框架后,我们的代码最终是由框架来调用的。也就是说,异常最终会抛到框架中,然后由框架指定异常处理器来统一处理异常。方式一:配置方式重点: 自定义一个类实现HandlerExceptionResolver接口定义异常处理器的类错误页面的编写将这个异常类配置到Spring容器中.
2021-01-08 19:21:47
84
原创 Spring_MVC之restful风格
restful风格REST是一种软件架构风格,其强调HTTP应当以资源为中心[==在请求地址中尽量的不要出现动词==]。REST规范了HTTP请求动作,使用四个词语分别表示对资源的CRUD操作:GET(获取)、POST(新建)、PUT(更新)、DELETE(删除) 原来 Restful 保存 /saveUser POST /user 修改 /updateUser PUT /user 删除 /deleteUserById?id=1 .
2021-01-08 19:15:27
61
原创 Spring_MVC之Ajax实现异步交互
首先回顾下,原来处理异步的方式前端 $.post(url,params,function(data){},"json");---------------------$.ajax()后端 接收请求 req.getParameter()--------------------------------------@RequestBody接收请求 返回响应 user对象 user--->json---->resp.getWriter().write(json)--------------
2021-01-08 19:10:32
106
1
原创 Spring_MVC之释放静态资源
当有静态资源需要加载时,比如jquery.js,会出现404现象。[ noHandlerFound No mapping for GET /js/jquery-3.3.1.js ]之所以发生这种情况是因为:现在SpringMVC的前端控制器DispatcherServlet的url-pattern配置的是 /,代表除了jsp请求不拦截,其他的所有请求都会拦截,包括一些静态文件(js html css jpg等等),而拦截住之后,它又找不到对应的处理器方法来处理,因此报错。方式一(了解)方
2021-01-08 18:00:46
204
原创 Spring_MVC之页面重定向
redirect方式(推荐)页面后台原生API方式(了解)扩展: 通过重定向访问WEB-INF下资源本质上还是经过了一次转发
2021-01-08 17:57:38
141
原创 Spring_MVC之页面转发&&转发过程中数据的传递
一、简单方式页面后台前缀后缀(配置MVC三大组件)二、forward方式(推荐)页面:和上面一样 只不过是路径变了后台原生api方式后台数据传递方式一方式二方式三...
2021-01-08 17:53:39
101
原创 SpringMVC_文件上传
文件上传三要素 1.method="post" 2.enctype="multipart/form-data" 3.input type="file"一、添加依赖(pom.xml) <!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>c...
2021-01-08 17:37:47
50
原创 SpringMVC_自定义类型转换器
对于一些常见的类型, SpringMVC内置了类型转换器, 但是对于一些格式比较灵活的参数,它无法完成类型转换,这时候就必须自定义类型转换器。这里以Date为例springMVC默认的日期转换器的格式为 'yyyy/MM/dd'jsp页面自定义类型转换器 1.自定义一个类型转换器的类,并且实现类型转换方法 2.将自定义的类注册到SpringMVC的转换服务,并且将SpringMVC的转换服务注册到注解驱动上3.测试...
2021-01-08 17:24:43
76
原创 剑值offer第44题数列中某一位数字(效率问题)
44.数字序列中某一位的数字题目:数字以0123456789101121314.....的格式序列化到一个字符序列中。在这个序列中第5位是5第13位是1, 请写出一个函数,求任意第n位对应的数字思路:求第1001位 1.序列的前10位是0~9这10个只有一位的数字。显然第1001位在这10个数之后,因此这10个数直接跳过 再从后面紧跟着序列中找到第991(991=...
2020-04-19 19:42:18
96
原创 剑值offer之42题连续子数组中的最大和(效率问题)
42.连续子数组中的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中一个或者连续多个整数组成一个子数组。求所有子数组和的最大值。要求时间复杂度为O(n)例如:{1,-2,3,10,-4,7,2,-5}和最大的子数组为{3,10,4,7,2}.因此输出该数组和为18步骤 操作 累加的子数组和 最大的子数组和 1 加1 1 1 2 ...
2020-04-17 10:37:40
108
原创 剑值offer之41题数据流中最小的中位数(效率问题)
41.数据流中的中位数题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路: 数据结构 插入的时间复杂度 得到中位数的时间复...
2020-04-16 16:30:03
173
原创 剑值offer之39题最小k位数(效率问题)
39.最小的k位数题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解法1:基于Partition函数的时间复杂度为O(n)的算法思路:排序#include<time.h>#include<iostream>using namespace std;int RandomInRan...
2020-04-15 17:41:45
120
原创 剑指offer第39题数组中出现超过一半的数字
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如:输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解法1:基于Partition函数的时间复杂度为O(n)的算法思路:在排序后因为数组中有一个数字超过长度的一半,也就是说这个数字就是统计学上的中位数,即长...
2020-04-13 16:49:36
99
原创 剑值offer之栈问题
31.栈的压入与弹出题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。 例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 (注意:这两个序列的长度是相等的)思路:1.如果下一个弹出的数...
2020-04-10 19:19:52
106
原创 剑指offer之序列化 第k大节点 双向链表
37.序列化二叉树题目:请实现两个函数,分别用来序列化二叉树和反序列化二叉树序列化二叉树思路:第一种方法:可以从前序遍历和中序遍历序列中构造一棵二叉树缺点:1.该方法要求二叉树中不能有重复的节点 2.只有当两个序列中所有数据都读出来后才开始反序列化,效率较慢第二种方法:根据前序遍历来序列化二叉树。在遍历二叉树碰到nullptr时,将nullptr序列化为一个特殊的字...
2020-04-10 15:12:02
184
原创 剑指向offer之二叉树
33.二叉搜索树的后序遍历题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:先把这个树当搜索二叉树,并对其进行判定 在后续遍历中最后一个数字时树的根节点的值 数组中前面的数字可以分成两部分: 第一部分是左子树节点的值,它比根节点的值小 第二部分是右子树节点的值...
2020-04-08 20:22:00
109
原创 剑指offer打印二叉树
32.重上到下打印二叉树题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:没打印一个节点时,如果该节点有子节点,就把该子节点放到队列的末尾,接下来到队列的头部去除最早入队的节点struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...
2020-04-06 19:25:47
88
原创 剑指offer镜像二叉树
27.镜像二叉树题目:操作给定的二叉树,将其变换为源二叉树的镜像思路:先遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶节点的左右子节点后,就得到了树的镜像/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :...
2020-04-06 18:52:16
73
原创 剑指offer树的子结构
26.树的子结构题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:在树A中找到和树B的根节点一样的节点R,再判断树A中以R为根节点的子树是不是包含和树B一样的结构具体步骤:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; T...
2020-04-06 15:45:16
75
原创 剑值offer之相关链表问题
17.链表中倒数第k个节点题目:输入一个链表,输出该链表中倒数第k个结点。思路:定义两个指针,先让一个指针走到k-1的位置,让后两个指针同时走到最后注意: 1.如果输入的指针为空指针 需判空2.如果链表的节点数少于k,由于for循环中链表会向前走k-1步3.输入的参数k为0/*struct ListNode { int val; struct ListNode *next; L...
2020-04-05 19:44:04
79
原创 排序算法之希尔排序
Shell_sort(希尔排序)一、算法思路:二、时间复杂度:比快速排序快 小于O(n²)三、稳定性:不稳定四、代码段void shellsort(int v[], int n){ int gap, i, j, temp; for (gap = n / 2; gap > 0; gap /= 2) { for (i = gap; i < n; i++)...
2020-04-02 10:37:34
175
原创 排序算法之选择排序
Select_Sort(选择排序)一、算法思路:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。二、时间复杂度:O(n²)三、稳定性:不稳定四、代码段:#include<iostrea...
2020-04-02 10:31:55
177
原创 排序算法之快速排序
Quick_Sort(快速排序)一、算法思路:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。二、时间复杂度:O (nlogn)三、稳定性:不稳定四、代码段:#include <iostream>using...
2020-04-02 10:26:17
96
原创 排序算法之归并排序
Merge_Sort(归并排序)一、归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。二、时间复杂度:O(n log n)...
2020-04-02 10:20:47
80
原创 排序算法之插入排序
Insertion_Sort(插入排序)一、算法描述:1、将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列;2、取出下一个元素,在已经排序的元素序列中从后向前扫描;3、如果该元素(已排序)大于新元素,将该元素移到下一位置;4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;5、将新元素插入到该位置后;6、重复步骤2~5。二...
2020-04-02 10:16:30
79
原创 排序算法之堆排序
Heapsort(堆排序)一、算法思想 :将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。二、时间复杂度:O(nlogn)三、稳定性:不稳定四、代码段#include<stdio.h>//大...
2020-04-02 10:12:48
144
原创 排序算法之桶排序
Bucket_Sort(桶排序)一、算法思想:根据待排序集合中最大元素和最小元素的差值范围和映射规则,确定申请的桶个数; 遍历待排序集合,将每一个元素移动到对应的桶中; 对每一个桶中元素进行排序,并移动到已排序集合中。二、时间复杂度:O(n) 这是一种以空间换时间的排序算法。三、稳定性:稳定.四、代码段:#include<stdio.h>#include...
2020-04-02 10:08:31
82
原创 排序算法之冒泡排序
Bubble_Sort(冒泡排序)一、算法思想:1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 2. 对所有元素均重复以上步骤,直至最后一个元素二、时间复杂度:O(n²)三、稳定性:稳定四、代码段:#define ARR_LEN 255 /*数组长度上限*/#define elemType int /*元素类型...
2020-04-02 10:01:46
130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人