自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Eureka笔记

任何分布式架构都离不开服务的拆分,微服务也是一样。

2022-07-16 19:44:05 234 1

原创 函数式编程

能够看懂公司里的代码大数量下处理集合效率高代码可读性高消灭嵌套地狱1.2 函数式编程思想1.2.1 概念面向对象思想需要关注用什么对象完成什么事情。而函数式编程思想就类似于我们数学中的函数。它主要关注的是对数据进行了什么操作。1.2.2 优点代码简洁,开发快速接近自然语言,易于理解易于"并发编程"Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。例一我们在创建线程并启动时可

2022-06-24 22:03:02 288

原创 SpringSecurity

Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。一般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作而认证和授权也是SpringS

2022-06-24 15:37:04 254

原创 SpringBoot中的坑

记录我开发时遇到的各种坑1.报错java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter使用springboot和token进行jwt登录的时候报错原因:网上都说是jdk版本太高了JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Jar 包。java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包而在 ...

2022-04-15 22:30:44 1294

原创 SpringBoot前后端分离项目搭建

一,SpringBoot框架的搭建①创建项目Group:项目包的名称Artifict:工件的名字(项目访问的名称)name:项目的名称②依赖的选择1.Lombok2.Spring Web3.MySql Driver4.MyBatis FrameWork③目录的选择选择自行喜欢的目录④删除不必要的文件保留如下⑤配置数据库信息1.使用properties进行配置2.使用yml进行配置(推荐)spring: #配置数据源..

2022-04-11 22:04:19 3659

原创 java算法常用模板

1.Dijkstra①模板import java.util.Arrays;import java.util.Scanner;public class dijkstra模板 { static int[] dis = new int[505]; // 距离 static int[] vis = new int[505]; // 标记是否已经访问 static int[][] tab = new int[505][505]; // 邻接矩阵 static int[

2022-04-04 20:47:27 393

原创 深度和广度优先算法题

1.深度优先搜索算法:深度优先搜索属于图算法的一种,英文缩写为DFS(Depth First Search.)其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。DFS适合题目:给定初始状态跟目标状态,要求判断从初始状态到目标状态是否有解。解决必须走到最深处(例如对于树,须走到它的叶子节点)才能得到一个解的问题通常利用递归实现,所以 每次递归开始的时候要判断是否达到收敛条件,若达到了则得到一个可行解,若...

2022-03-31 20:26:21 1119

原创 回溯算法题

注意体会做选择和撤销选择题目一:输入一组不重复的数字,返回它们的全排列做选择为:向下加入某个节点取消选择为:递归后这个选择已经做完了,回溯回去上面的节点做右子树的选择,所以要删除以前做的选择题目二:n皇后问题做选择为:该位置上放皇后取消选择为:当前位置不放皇后...

2022-03-22 22:57:39 649

原创 图的算法。

1.k算法在无相图中,用最短的路径使所有的节点连通,从最小的开始加,能形成环的边不加难点:如何判断是否形成环将每个节点放入不同的集合里,当连通这两个节点的时候,把to节点放入from节点的集合里面若目前添加的边已经是同一集合里面的了,则不加这条边public class Code04_Kruskal { // Union-Find Set public static class UnionFind { private HashMap<Node, Node> fat

2022-03-22 16:00:27 550

原创 蓝桥杯字符串处理问题

1.猜字母思路1:采用字符串形式public class 猜字母 { public static void main(String[] args) { StringBuilder a=new StringBuilder("abcdefghijklmnopqrs"); //StringBuilder效率更高 for (int i = 1; i <106 ; i++) { a.append("abcdefghi.

2022-03-21 21:51:45 404

原创 算法小技巧

1.判断闰年的条件yyyy % 4 == 0 && yyyy % 100 !=0) || yyyy % 400 == 02.StringBuffer的使用(判断是否为回文数)StringBuffer//判断日期是否回文 static boolean f(int i) { String string = i +""; StringBuffer sBuffer = new StringBuffer(string); ...

2022-03-21 21:51:31 547

原创 蓝桥杯动态规划问题

1.振兴中华简单分析:想起爬楼梯,跳格子问题,要知道可能的跳跃路线,我们可以模拟一下,我们必须知道上一步的路线有多少,而到华字有两条路可以走,故可以写成状态转移方程,考虑边界情况,最上和最左只有一种路可以走。public class 振兴中华 { public static void main(String[] args) { int[][] arr=new int[4][5];//注意是四列五纵 for (int i = 0; i < 5; i.

2022-03-21 21:51:12 262

原创 蓝桥杯日期API问题

Java因为拥有Calendar这个日期API,故只需重点掌握这个api即可1.世纪末的星期这里我们通过设置年月份,然后判断是否是星期天,如果是则直接输出答案public class 世纪末的星期 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); for (int year = 1999; year <10000 ; ye

2022-03-21 21:23:44 633

原创 第十二届蓝桥杯javaB组刷题day2

1.直线我们思路:暴力解法,将所有可能的情况列举出来,故需要两个坐标的横纵坐标,便需要四个for循环来进行遍历,出现问题:①需要排除斜率为0的情况,后面再单独进行相加②因为需要set来加入斜率,而一条斜线y=kx+b,包括k和b,set只能包含key,所以我们需要定义一个直线类进行添加★使用HashSet存储自定义对象需要重写equals方法和HashSet方法import java.util.HashSet;public class Main { ...

2022-03-21 19:56:12 597

原创 ssm踩过的坑

1.Caused by: com.mysql.cj.exceptions.WrongArgumentException启动服务器后抛出上面异常,页面出现500原因:url有问题jdbc.properties中的url使用了转义字符解决办法:将其换成" & "即可2.com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure启动服务器后抛出以上问题,页面出现500原因:

2022-03-20 23:24:29 1002

原创 滑动窗口(220320)

1.代码实现:class Solution { public int lengthOfLongestSubstring(String s) { //1.暴力递归(x) //2.set(x) //3.双指针(√)使用滑动窗口进行解题 if(s.length() == 0){ return 0; } //定义左指针 int left = 0; .

2022-03-20 12:04:05 175

原创 220319(位运算,广搜)

1.位运算中的技巧:★num = (num - 1) & num题目一:利用循环,定义一个计数器,将这个整数变为0即可c语言代码实现:#include<stdio.h>int main(){ int num = 9; int count = 0; while (num != 0) { num = (num - 1) & num; count++; } printf("%d\n", count); return 0;}.

2022-03-19 21:58:22 916

原创 220318(滑动窗口,广深搜)

1.滑动窗口:2.广搜深搜:暴力递归法:注意:下面会出现栈溢出的问题 public int[][] floodFill(int[][] image, int sr, int sc, int newColor) { //注意点 //因为是递归,故在使用时应该注意,下面进行判断的image[sc][sc]是会改变的 //对上面像素进行判断递归 if(image[sc][sc] == image[sc -.

2022-03-18 22:39:04 623

原创 220317

1.注意链表临界条件的判断:本题很任意想到使用快慢指针进行遍历。但在书写代码时:class Solution { public ListNode middleNode(ListNode head) { ListNode fast = head; ListNode slow = head; while(fast != null && fast.next != null){ slow = slow.

2022-03-17 22:58:33 236

原创 220315

1.双指针题初始暴力解法:使用了两个for循环进行判断,超时了class Solution { public int[] twoSum(int[] numbers, int target) { int[] arr = new int[2]; for(int p = 0;p < numbers.length;p++){ for(int q = p + 1;q < numbers.length;q++){ .

2022-03-15 22:57:14 198

原创 220314

1.快慢指针主要用于链表遍历节点的功能class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { //要想能够返回头节点,需要给head节点添加一个头节点,便于返回结果 ListNode dummyNode = new ListNode(0); dummyNode.next = head; //定义快慢指针 Lis

2022-03-14 22:57:48 527

原创 220311(二叉树)

1.二叉树二叉树常用套路★要有大局观的思维,把头节点设为x,然后再想想左子树和左子树要达到什么才能满足条件,再判断左右子树递归后需要返回什么给你①判断是否是平衡二叉树首先:设头节点为x,要想该树为平衡二叉树,左子树必须是平衡二叉树,右子树也必须是平衡二叉树,且左子树的高度-右子树的高度不能大于1然后:我们想想那这样需要什么才能形成递归,头节点需要知道左右节点什么 a)知道左右子树是否为平衡二叉树 b)知道左右子树的高度public clas...

2022-03-11 16:56:53 589

原创 220310(链表)

1.链表:在链表结构中,简单题体现算法的题不多,几乎都是使用指针的遍历链表技巧:快慢指针在实际应用链表中,往往需要获取链表的中间节点,这时候我们就可以定义一对快慢指针,慢指针走两步时,快指针走两步,当快指针遍历完的时候,慢指针就来到了中间节点。但特殊题目时,我们需要对快慢指针进行定制,比如慢指针要来到中间节点的前一个,我们需要做一些调整。链表技巧:哈希表例题1:2.二叉树递归求前中后序遍历①先写出改二叉树的递归数②只...

2022-03-10 16:46:25 599

原创 220309

1.异或运算★异或交换arr[i] = arr[i] ^arr[j]arr[j] = arr[i] ^arr[j]arr[i] = arr[i] ^arr[j]原理:a^0=a a^a=0异或运算满足结合律和交换律,故arr[i] = arr[i] ^arr[j] arr[i]=arr[i] ^arr[j] arr[j] = arr[j]arr[j] = arr[i] ^arr[j] arr[i] =arr[i] ^arr[j] ...

2022-03-09 11:47:37 454

原创 SpringBoot核心笔记

一,配置文件1.properties同以前的properties用法2.yaml①简介:YAML是一个可读性高,用来表达数据序列的格式。非常适合用来做以数据为中心的配置文件②基本语法:key: value;kv之间有空格 大小写敏感使用缩进表示层级关系 缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可 '#'表示注释 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义③数据类型:字面量:单个的、不可再分的值.

2022-03-08 21:49:29 998

原创 220307

1.存在重复元素错误思路:使用两个for进行暴力查找,然而超时了★思路1:使用set因为set具有不重复性,故我们可以利用这个性质class Solution { public boolean containsDuplicate(int[] nums) { Set<Integer> set = new HashSet<Integer>(); for (int x : nums) { if (!s

2022-03-07 11:15:35 117

原创 SSM整合

一,环境配置1.创建Maven工程2.添加基本依赖<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version></dependency><dependency> <groupId

2022-03-06 15:47:27 424

原创 220305(动态规划)

1.动态规划动态规划的思想类似于数学归纳法,当知道所有 i<n 的情况时,我们可以通过某种算法算出 i=n 的情况。想想能不能找出n-1和n的规律★括号生成本题最核心的思想是,考虑i=n时相比n-1组括号增加的那一组括号的位置。思路:当我们清楚所有 i<n 时括号的可能生成排列后,对与 i=n 的情况,我们考虑整个括号排列中最左边的括号。它一定是一个左括号,那么它可以和它对应的右括号组成一组完整的括号 "( )",我们认为这一组是相比 n-1 增加进来的括号。...

2022-03-05 09:38:57 57

原创 SpringBoot基础笔记

一,快速入门1.创建maven工程(正常创建即可)2.引入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </paren

2022-03-04 22:02:26 345

原创 web遇到的bug

1.部署服务器启动工件问题2.ajax提交表单一直为getjs错误return flase3.jdbc.properties错误url和usename4.过滤器问题要重写init5.jdbc模板问题需要抛出异常return null6.BaseServlet问题需要加上/xxx/*...

2022-03-04 20:58:09 648

原创 220303

1.链表:⚪两数相加将两个链表看成是相同长度的进行遍历,如果一个链表较短则在前面补 00,比如 987 + 23 = 987 + 023 = 1010 每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值 如果两个链表全部遍历完毕后,进位值为 11,则在新链表最前方添加节点 11链表小技巧:对于链表问题,返回结果为头结点时,通常需要先初始化一个预先指针 pre,该指针的下一个节点指向真正的头结点head。使用预先指针的目的在于链表初始化时无可用节点值,而.

2022-03-03 11:57:17 110

原创 220302(摩尔投票法)

1.摩尔投票法:应用理解:核心就是对拼消耗。玩一个诸侯争霸的游戏,假设你方人口超过总人口一半以上,并且能保证每个人口出去干仗都能一对一同归于尽。最后还有人活下来的国家就是胜利。那就大混战呗,最差所有人都联合起来对付你(对应你每次选择作为计数器的数都是众数),或者其他国家也会相互攻击(会选择其他数作为计数器的数),但是只要你们不要内斗,最后肯定你赢。最后能剩下的必定是自己人。应用实例:⚪多数元素思路解析:候选人(cand_num)初始化为nums[0],票数count初

2022-03-02 14:43:57 88

原创 220301

1.字符串反转交换有两种方式:①一种就是常见的交换数值:inttmp=s[i];s[i]=s[j];s[j]=tmp;②一种就是通过位运算:s[i] ^= s[j];s[j] ^= s[i];s[i] ^= s[j];法一:双指针法我们可以通过两个指针,一个指向数组头,一个指向数组尾进行比较遍历:void reverseString(char* s, int sSize){ int left = 0; int right =...

2022-03-01 11:05:09 57

原创 web开发技巧

一,常用坐标导入<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency><!

2022-02-28 21:45:48 373

原创 马踏棋盘算法

一,马踏棋盘算法介绍和游戏演示:1) 马踏棋盘算法也被称为骑士周游问题2) 将马随机放在国际象棋的 8×8 棋盘 Board[0~7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求 每个方格只进入一次,走遍棋盘上全部 64 个方格3) 游戏演示: http://www.4399.com/flash/146267_2.htm二,马踏棋盘游戏代码实现:1) 马踏棋盘问题(骑士周游问题)实际上是图的深度优先搜索(DFS)的应用。2) 如果使用回溯(就是深度优先搜索)来解

2022-02-23 23:00:49 2175

原创 弗洛伊德算法

一,弗洛伊德算法的介绍:1) 和 Dijkstra 算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法 名称以创始人之一、1978 年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名2) 弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径3) 迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径。4) 弗洛伊德算法 VS 迪杰斯特拉算法:迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点 的最短路径;弗洛伊德算法

2022-02-23 22:53:25 2412

原创 迪杰斯特拉算法

一,迪杰斯特拉算法介绍:迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。它的主要特点是以 起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。迪杰斯特拉算法的步骤:1) 设置出发顶点为 v,顶点集合 V{v1,v2,vi...},v 到 V 中各顶点的距离构成距离集合 Dis,Dis{d1,d2,di...},Dis 集合记录着 v 到图中各顶点的距离(到自身可以看作 0,v 到 vi 距离对应为 di) 2) 从 Dis 中选择值最小的

2022-02-23 22:47:52 5017

原创 克鲁斯卡尔算法

一,克鲁斯卡尔算法的介绍:1) 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。2) 基本思想:按照权值从小到大的顺序选择 n-1 条边,并保证这 n-1 条边不构成回路3) 具体做法:首先构造一个只含 n 个顶点的森林,然后依权值从小到大从连通网中选择边加入到森林中,并使森 林中不产生回路,直至森林变成一棵树为止二,克鲁斯卡尔算法的应用实例:▲公交站问题:图解思路分析:算法分析:如何判断是否构成回路:具体代码...

2022-02-23 22:22:17 771

原创 普利姆算法

一,普利姆算法的介绍普利姆(Prim)算法求最小生成树,也就是在包含 n 个顶点的连通图中,找出只有(n-1)条边包含所有 n 个顶点的 连通子图,也就是所谓的极小连通子图 普利姆的算法如下:1) 设 G=(V,E)是连通网,T=(U,D)是最小生成树,V,U 是顶点集合,E,D 是边的集合2) 若从顶点 u 开始构造最小生成树,则从集合 V 中取出顶点 u 放入集合 U 中,标记顶点 v 的 visited[u]=13) 若集合 U 中顶点 ui 与集合 V-U 中的顶点 vj 之间存在边

2022-02-23 21:53:40 1606

原创 贪心算法分析

一,贪心算法介绍:1) 贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而 希望能够导致结果是最好或者最优的算法2) 贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果二,贪心算法的应用实例:▲集合覆盖问题:思路分析:使用贪婪算法,效率高:1) 目前并没有算法可以快速计算得到准备的值, 使用贪婪算法,则可以得到非常接近的解,并且效率高。选择 策略上,因为需要覆盖全部地区的最小集合:

2022-02-23 21:45:23 672 1

空空如也

空空如也

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

TA关注的人

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