- 博客(76)
- 收藏
- 关注
原创 如何解决登陆时用户名/密码不匹配的问题
最近在写一个小项目,当我登录的时候发现会产生一些bug。1.密码为空2.用户为空3.二者都不为空,但是不匹配4.那么,如何解决呢?通过观察,我们发现这三种情况错误码都是500,即后台出现错误。通过请教老师和查阅各种资料,发现可以利用springboot来解决异常问题。4.1 自定义异常/** * 定义系统异常 */public class AeipfException extends RuntimeException{ public AeipfException(S
2022-03-25 16:03:54 6818 1
原创 贪心算法之序列问题
贪心算法之序列问题1.摆动序列2.单调递增的数字1.摆动序列摆动序列[2,5,7]我们默认认为[2,2,5,7],因此我们记录答案的时候默认从第一个开始。我们还需要设置当前差和前一个差值class Solution { public int wiggleMaxLength(int[] nums) { if(nums.length<=1){ return nums.length; } /* *
2022-03-18 21:14:08 627
原创 贪心解决股票问题
贪心解决股票问题1.买卖股票的最佳时机 II2. 买卖股票的最佳时机含手续费1.买卖股票的最佳时机 II买卖股票的最佳时机 II我们只需要记录后一个比前一个值大的即可class Solution { /** 贪心算法:[7,1,5,3,6,4] 利润:[-6,4,-2,3,-2] 我们只收集利润中的正数 */ public int maxProfit(int[] prices) { int sum = 0; fo
2022-03-18 20:58:09 519
原创 区间问题(贪心算法)
区间问题(贪心算法)1.跳跃游戏2.跳跃游戏 II1.跳跃游戏跳跃游戏class Solution { public boolean canJump(int[] nums) { int cover = 0;//覆盖长度 //在覆盖范围内更新等最大覆盖范围 for(int i=0;i<=cover;i++){ //更新覆盖长度 cover = Math.max(cover,i+nums[i]
2022-03-18 20:26:02 459
原创 贪心算法(两个维度维权问题)
贪心算法(两个维度维权问题)1.分发糖果2. 根据身高重建队列1.分发糖果贪心算法(两个维度维权问题)1.先从左向右遍历,当右面孩子的评分大于左面孩子的,右面孩子糖果数等于左面孩子糖果数加一。2.再从右向左遍历,只要左边比右边大,此时左边的糖果(符合比它左边大)和右边糖果数加一二者的最大值。这样才符合它比它左边的大,也比它右边的大。class Solution { public int candy(int[] ratings) { int[] candyVec = n
2022-03-17 15:55:21 758
原创 贪心算法一
贪心算法一1.分发饼干2. 柠檬水找零1.分发饼干分发饼干1.先排序2.遍历饼干的尺寸,找到合适的胃口时,表示胃口的指针加一class Solution { public int findContentChildren(int[] g, int[] s) { int sum = 0; int start = 0;//孩子胃口遍历的指针 //按照从小到大顺序排序 Arrays.sort(g); Array
2022-03-17 15:25:37 302
原创 Springboot总结
Springboot总结1.springboot概念2.springboot开发流程2.1 创建maven项目2.2 引入依赖2.2.1 配置parent(起步依赖)2.2.2 配置业务框架2.2.3 配置版本号2.2.4 打包2.2.5 补充2.3 项目基本结构2.4 Springboot的入口类2.4.1@SpringBootApplication2.4.1.1 @ComponentScan2.4.1.2 @EnableAutoConfiguration2.5 配置banner2.6 springbo
2022-03-14 15:50:11 1112
原创 回溯——排列问题
回溯——排列问题1.全排列2.全排列 II1.全排列全排列class Solution { List<List<Integer>> res = new ArrayList<>(); LinkedList<Integer> path = new LinkedList<>(); boolean[] used;//标记已经选择的元素 public List<List<Integer>> p
2022-03-10 22:13:55 171
原创 垃圾回收机制GC
垃圾回收机制GC1.需要GC的内存区域2. 判断GC对象是否存活2.1 引用计数:2.2可达性分析:3.标记死亡对象3.1 第一次标记3.2 第二次标记4. 什么时候触发GC5.GC分类6. GC常用算法6.1 标记-清除算法6.1.1 标记6.1.2 清除6.1.3优缺点6.2 标记-压缩算法6.3 复制算法6.4 分代收集算法6.4.1 标记和压缩算法存在的问题6.4.2分代收集算法思想6.4.3 分代收集过程6.5 对象被放到老年代的条件7. 方法区垃圾回收8.finalize()方法当对象被创建
2022-03-10 18:09:19 503
原创 回溯-子集问题
回溯-子集问题1. 子集2.子集 II3.递增子序列一些子集问题要记录树上的所有节点,因此终止条件可加可不加1. 子集子集该题和排列问题基本相似,本题需要收集所有的结果。class Solution { List<List<Integer>> result = new ArrayList<>(); LinkedList<Integer> path = new LinkedList<>(); public
2022-03-09 11:20:52 401
原创 JVM小结
JVM小结1.简介1.1jvm内存1.2JVM(hotspot) 结构2.程序计数器3.虚拟机栈(Java栈)3.1栈帧内部结构3.2 局部变量表3.3 操作数栈3.4 动态链接3.5 方法返回地址3.6 一些附加信息3.7 虚拟机栈大小调整4. 本地方法接口5. 本地方法栈6. 堆(Heap)6.1 堆分区6.2 堆为什么要分区6.3 java7和java8区别6.4 堆参数7.JVM是Java虚拟机的缩写。引入java语言虚拟机后,java语言在不同平台上运行时不需要重新编译。java语言使用了jav
2022-03-09 10:12:08 655
原创 mysql的锁
mysql的锁1.查看锁2.锁机制的重要性3.锁的分类4.共享锁5.排它锁6.锁的粒度分类6.1 乐观锁6.2 悲观锁6.3 死锁锁是计算机在执行多线程或线程时用于并发访问·同一共享资源的同步机制,mysql中的锁是在服务器层或者存储引擎层实现的,保证了数据访问的一致性和有效性。锁的基本原理可以概括为:1.事务在修改当前数据之前,需要获得相应的锁2.获得锁之后,事务便可以修改数据3.该事务操作期间,这部分数据是锁定的,其他事务如果需要修改数据,需要等待当前事务提交或者回滚后释放锁。1.查看锁s
2022-03-08 10:50:16 1901
原创 回溯之分割问题
回溯之分割问题1.分割回文串2.复原 IP 地址1.分割回文串分割回文串判断是否回文过程中,startIndex就是分割符,判断字串的范围就是[startIndex,i]class Solution { List<List<String>> res = new ArrayList<>(); Deque<String> deque = new LinkedList<>(); public List<List
2022-03-07 21:38:54 294
原创 mysql的事务
mysql的事务1.什么是事务2.事务操作2.1 基本命令2.2 执行流程2.3回滚事务2.4保存点3.事务特性3.1 MySQL日志3.2原子性(Atomic)3.3 持久性(Durability)3.4一致性(Consistency)3.5 隔离性(lsolation)3.5.1 事务的并发3.5.2脏读:3.5.3 不可重复读:3.5.4 幻读3.6 事务的隔离级别4.MVCC4.1 相关概念4.2 MVCC的实现原理4.2.1隐式字段4.2.2记录行修改的具体流程4.2.3 Read View1
2022-03-07 20:45:08 948 1
原创 mysql索引
mysql索引1. 索引简介1.1 分类1.2 索引的优缺点1.3 索引关键字的选取原则2.hash索引3.btree+索引3.1 二叉搜索树3.2 红黑树3.3 avl树3.4 b+Tree1. 索引简介索引是将关键字数据以某种数据结构的方式存储到内存,用于提升数据的检索性能。索引既有逻辑上的概念,更是一种物理存储方式,且事实存在,需要耗费一定的存储空间。索引的原理大概可以概况为以空间换时间。1.1 分类BTREEHash1.2 索引的优缺点优点:大大加快了数据的减速速度,这是创
2022-03-06 17:27:54 744
原创 组合相关问题
组合相关问题11.组合2.组合总和 III3.电话号码的字母组合1.组合组合本题可以说是组合的经典问题了。一般该题我们使用回溯算法,结合树型结构完成根据上图再结合代码class Solution { LinkedList<Integer> path = new LinkedList<>();//存放组合 List<List<Integer>> res = new ArrayList<>();//输出结果 p
2022-03-06 00:09:51 384
原创 mysql的crud
mysql的crud1.数据库概述1.1 什么是数据库1.2 数据库分类2. sql的基本语法2.1 插入数据2.2 删除数据2.3 更改数据2.4 查询数据2.4.1 模糊查询2.4.2 连接查询2.4.3子查询3.mysql分页1.数据库概述1.1 什么是数据库数据库是用于保存数据的容器。你可以把它想象成一个虚拟的文件柜,其中可以放入多个文件,按照一定的结构保存和管理数据,而数据间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库。1.2 数据库分类关系型数据库:mysql
2022-03-04 17:26:34 518
原创 ssm框架整合
ssm框架整合1. ssm框架简介1.1两个IoC容器1.1.1mvc容器1.2业务容器2.ssm-helloworld2.1 创建maven(javaee)项目2.2引入maven相关依赖2.3ssm框架结构2.4 项目结构(包+前端)2.5ssm框架配置2.5.1 log4j.properties2.5.2 web.xml2.5.3 配置两个容器2.5.3.1 配置mvc容器2.5.3.2 配置业务容器2.5.3.2.1配置数据源文件2.5.3.2.2 配置业务容器2.6 具体代码2.6.1 实体类2.
2022-03-01 18:03:37 2109
原创 SpringMvc框架
SpringMvc框架1.springmvc-helloworld1.1 maven项目(javaee)1.2 引入springmvc框架1.3 完成controller层的代码1.4 配置springmvc框架1.4.1 配置IoC容器(mvc容器)1.4.2 配置servlet1.4.3 postm测试springmvc框架是对servlet的封装mvc:struts2,springmvc1.springmvc-helloworld1.1 maven项目(javaee)<?x
2022-03-01 10:51:38 317
原创 Spring框架
Spring框架1.Spring框架都概念2.Spring框架的基本构造3.Spring的helloworld3.3.1 创建maven项目3.3.2 引入Spring框架3.3.3 创建实体类3.3.4配置Spring容器3.3.5 测试4.Spring容器(bean)配置文件4.1 Spring bean的加载流程4.1.1 配置bean4.1.2 容器启动 (加载工厂)4.1.3 读取配置信息4.1.4根据注册表实例化bean对象4.1.5 放入容器(工厂)的缓存中4.2 bean的配置4.2.1 b
2022-02-28 21:44:48 281
原创 mybatis开发流程
mybatis的开发流程1.mybatis框架2.mybatis开发流程2.1 数据库2.1.1 创建库2.1.2 创建表book_tab2.2 后台2.2.1 创建表的实体映射类(entity)2.2.2定义接口,表操作(mapper/dao)2.2.3 重定义数据源(util)2.3 相关配置文件2.3.1 druid.properties2.3.2 mybatis-comfig.xml2.3.2 xxx.mapper.xml1.mybatis框架ORM就是通过实例对象的语法,完成关系型数据库的操
2022-02-28 16:40:31 919
原创 mybatis测试
mybatis小结1.mybatis测试1.1读取mybatis配置文件1.2 创建SqlSessionFactory工厂1.3 开启一次sql会话1.4 创建数据库操作接口对象1.5 接口操作1.6 事务提交,关闭会话2.mybatis细节2.1 log4j日志配置2.2 参数问题2.3 mybatis查询1.mybatis测试1.1读取mybatis配置文件Reader in = Resources.getResourceAsReader("resources/config/mybatis- co
2022-02-28 15:11:52 2292
原创 二叉树的路径问题
二叉树的路径问题1.二叉树的所有路径1.二叉树的所有路径二叉树的所有路径递归+回溯/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeN
2022-02-25 13:10:41 393
原创 二叉树的对称问题
二叉树的对称问题1. 对称二叉树2.相同的树3.另一棵树的子树1. 对称二叉树对称二叉树思路:1.先将根节点的左右节点入队。2.出队,比较两个节点的值是否相等3.若相等,则当前左节点的左节点入队,当前右节点的右节点入队,当前左节点的右节点入队,当前右节点的左节点入队。若不相等,返回false。4.注意:当节点为空时,跳出此次循环。。。。。。/** * Definition for a binary tree node. * public class TreeNode { *
2022-02-24 21:14:39 486
原创 java网络编程
java网络编程1.网络模型1.1.七层模型1.2五层模型1.网络模型1.1.七层模型1.物理层定义各种设备标准,如网线的接口类型,管线的接口类型,各种传输介质的传输速率等。2.数据链路层定义了如何让格式化的数据进行传输,以及如何控制对物理介质的访问。这一层通常还提供错误检测和修正,以确保数据的可靠传输。3.网络层将数据传输到目标地址;目标地址可以使多个网络通过路由器连接而形成的某一个地址,主要控制寻找地址和路由选择,网络层还可以实现拥塞控制,网络互联等功能。4.传输层提
2022-02-23 10:54:03 478
原创 反射相关方法
反射技术1.Class对象2.Filed类3.反射应用运行时动态访问对象属性的方法1.Class对象类的实例化之前:Car c = new Car();现在:Class<?> clazz=Car.class;//获得类clazz.getInstance();//获得实例化对象ublic class ClazzDemo { static class InnerClass{ public void print() { System.out.print
2022-02-21 19:57:41 293
原创 类加载小结
类加载小结1.源码文件(.java)-->代码指向的过程1.1 编译1.2 加载(我们后面要重点研究)1.3 解释1.4 执行2. 类加载2.1 什么是类加载2.2类加载的顺序2.2.1加载2.2.1.1何时加class文件2.2.1.2谁来加载class文件2.2.1.3 加载规则:双亲委托机制2.2.2链接2.2.3初始化:对类变量的初始化2.2.4使用2.2.5卸载3. 小问题1.源码文件(.java)–>代码指向的过程编译—>加载—>解释—>执行1.1 编译
2022-02-21 15:57:46 288
原创 二叉树的翻转和对称
1.翻转二叉树翻转二叉树思路:迭代,可以继续套用模板,只需要一个翻转操作。模板/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNod
2022-02-19 22:47:47 302
原创 二叉树的层序遍历
二叉树的层序遍历1.层序遍历2.实例2.1二叉树的层序遍历2.2 二叉树的层序遍历 II2.3 二叉树的右视图2.4 二叉树的层平均值1.层序遍历层序遍历一个二叉树。就是从左到右一层一层的区遍历二叉树。为了实现层序遍历,我们需要借助一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而栈先进后出适合模拟深度优先遍历也就是递归的逻辑。2.实例2.1二叉树的层序遍历二叉树的层序遍历思路:1.创建队列用来存储节点,创建list集合用来存储结果2.逐层记录结果即可。/**
2022-02-16 18:03:55 11076
原创 二叉树的前中后序遍历
二叉树的前中后序遍历1.递归的三要素2.二叉树的前序遍历3.二叉树的后序遍历4.二叉树的中序遍历1.递归的三要素确定递归的参数和返回值:确定哪些参数是递归过程中需要处理的,那么就在递归函数里加上整个参数。并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件:写完了递归算法,运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统栈就会溢出。确定单层递归的逻辑:确定每一次递归需要处理的
2022-02-16 11:47:26 539
原创 前后端交互常用语句
1.传页面(后台传向前端)request.getRequestDispatcher("findAllInfos.do").forward(request, response);//请求转移response.sendRedirect("user.jsp");//重定向2.传值(后台传向前端)PrintWriter out = response.getWriter(); out.println(value);...
2022-02-15 20:36:16 346
原创 ajax小结
ajax小结1.什么是ajax2.ajax原理(工作流程)1.什么是ajaxajax: Asynchroized Javascript And Xml功能不刷新页面更新网页在页面加载后从服务器请求数据在页面加载后从服务器接收数据在后台向服务器发送数据2.ajax原理(工作流程)ajax是异步操作,假设·发起一个请求,向后台请求一个数据“apple”点击按钮js:在浏览器中创建一个对象XmlHttpRequest(浏览器内置),用来存储数据let xmlHttp = new
2022-02-15 20:34:36 318
原创 会话管理流程
会话管理会话管理1.什么是会话管理2.为什么要使用会话管理3.会话管理(Session)4.如何实现会话管理4.1 cookie( 浏览器)4.2 HttpSession4.3 会话管理完整流程5.会话管理实例会话管理1.什么是会话管理在人机交互,会话管理是保持用户的整个会话活动的互动与计算机系统跟踪过程。2.为什么要使用会话管理在解决这个问题前,我们要先了解什么是http协议Http协议:超文本连接协议。Http的两大特性1.面向连接—>请求响应式---->服务器被动请
2022-02-15 16:06:19 673
原创 servlet过滤器和jsp内置对象
servlet过滤器和jsp内置对象1. servlet过滤器2. jsp内置对象2.1 servlet相关对象2.2 jsp相关对象1. servlet过滤器Servlet过滤器:java对象,在javaee容器中(tomcat),请求拦截,响应。实例:@WebFilter("/*")public class CharsetFilter implements Filter { public void destroy() { System.out.println("过滤器对象被销
2022-02-15 12:51:04 87
原创 设计模式总结
设计模式之单例模型1.什么是单例模型2.懒汉模式3.饿汉模式1.什么是单例模型创建型模式:创建对象核心:内存中只有唯一的一个对象。2.懒汉模式/** * 单例模型-懒汉模式 * * @author Administrator * */public class Singleton { private static Singleton instance = null; // instance 一开始没有引用任何对象 private final static ReentrantL
2022-02-11 18:15:36 340
原创 java中文件的配置
java中文件的配置1.Properties类介绍2.日志-log2.1 日志是什么?2.2 日志级别2.3 如何使用日志2.3.1 如何配置日志2.3.2 日志操作对象3. 数据源(DateSource)3.1 为什么要使用数据源3.2 数据连接池(DBCP)3.3 如何使用数据源(druid)3.4 使用流程3.4.1.创建druid.properties文件3.4.2.使用Properties对象,读取配置信息3.4.3.创建数据源对象DruidDateSource3.4.4 与数据库建立连接1.
2022-02-11 16:58:26 2118
原创 栈和队列小结
栈和队列小结1.用栈实现队列1.用栈实现队列用栈实现队列本题思路:题目的要求是用栈实现队列。那么我们可以创建两个栈来模拟,一个输入栈,一个输出栈。输入栈用来入队,输出栈用来出队列。当我们出队列时,如果输入栈不为空且输出栈为空,把输入栈的元素全部放入输出栈中,这样我们就可以保证出队的顺序是正确的。class MyQueue { Stack<Integer> stack1; Stack<Integer> stack2; public MyQueue
2022-02-10 12:03:59 6666
原创 IO流小结
IO流小总结1.IO流总述1.1划分1.2明确IO流的功能2.File类概述2.1File类的一些基本操作2.2 文件的递归调用显示内容3.输入流和输出流3.1输入流3.2输出流(一般要配合缓存)4.序列化和反序列化(ObjectOutputStream和ObjectInputStream)5.nio1.IO流总述IO流以内存为核心,进内存为Input,出内存为Output。1.1划分按照大小划分:字符流,字节流。按照出入内存划分:InputStream,OutputStream1.2明确IO流
2022-02-09 17:49:59 249
原创 HashMap小结
HashMap小结1. HashMap基本特点2. HashMap实现方法3.Hash的底层实现3.1 底层数据结构3.2 jdk1.8之前HashMap存在的问题3.3 Hash包含的重要变量4.put方法分析5.常见问题5.1加载因子为什么默认值为0.75f?5.2HashMap如何实现序列化和反序列化(io)5.3 HashMap和Hashtable的区别5.4 HashMap和ConcurrentHashMap区别5.5 HashMap 的长度为什么是 2 的幂次方5.6 如何决定使用HashMap
2022-02-08 20:38:54 627
原创 反转字符串总结
反转字符串总结1.反转字符串2.反转字符串 II3.替换空格4.翻转字符串里的单词5.左旋转字符串1.反转字符串反转字符串这里是我们接触到的第一道反转字符串的例题我们可以使用双指针来完成首位的反转注意注意的是,这类题可能需要StringBulider这个容器class Solution { public void reverseString(char[] s) { int left=0; int right =s.length-1;
2022-02-02 20:16:21 1065
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人