- 博客(112)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 springboot整合shiro(超详细,你想要的都在这了)
Springboot整合Shiro文章目录pom依赖前端页面(thymeleaf整合shiro)thymeleaf中shiro标签解释数据库理解shiro的几个组成部分编写Shiro配置类pom依赖<dependencies> <!--thymeleaf--> <dependency> <groupId>org.springframework.boot</groupId>
2021-12-08 15:33:43
18014
1
原创 RabbitMQ详细笔记(从入门到集群)
文章目录1. MQ的相关概念1.1 什么是MQ1.2 为什么要用MQ1.3 MQ 的分类2. RabbitMQ概念与安装2.1 四大核心概念2.2 RabbitMQ六大模式2.3 名词介绍2.4 Linux下安装RabbitMQ3. HelloWorld 模式3.1 导入依赖3.2 封装工具类3.3 消息生产者3.4 消息消费者4. Work Queues模式4.1 消息生产者4.2 消息消费者4.3 消息应答(1)概念(2)自动应答(3)手动应答(4)Multiple 的解释(5)消息自动重新入队(6)
2022-05-03 22:03:07
1920
原创 【蓄水池抽样】算法入门
【蓄水池抽样】算法知识点学习自宫水三叶大佬,记录一下。方法一:哈希表如果不考虑数组的大小,我们可以在构造函数中,用一个哈希表 map 记录 nums 中相同元素的下标。对于pick 操作,我们可以从 map 中取出target 对应的下标列表,然后随机选择其中一个下标并返回。class Solution { Map<Integer, List<Integer>> map; Random random; public Solution(int[] n
2022-04-25 20:30:37
598
原创 ElasticSearch详细笔记( 从入门到入土)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.ElasticSearch概述1.1 Elasticsearch 是什么1.2 全文搜索引擎1.3 Elasticsearch And Solr2. ElasticSearch安装2.1 下载和安装2.2 可能存在的问题2.3 RESTful3. ES的基本使用3.1 数据格式3.2 分片概念3.3 索引操作(1)创建索引(2) 查看所有索引(3) 查看单个索引(4) 删除索引3.4 文档操作(1)创建文档(2) 查.
2022-04-18 20:28:57
3303
原创 字典序排数相关算法
记录两道与数字的字典序排数相关的题目(字节常考)把数字的字典序画出来看看马上就明白了。class Solution { public List<Integer> lexicalOrder(int n) { List<Integer> ans = new ArrayList<>(); int cur = 1; for(int i = 0; i < n; i++) { ans.add
2022-04-18 19:40:22
363
原创 数状数组模板(板子该记还得记)
树状数组模板// 上来先把三个方法写出来{ int[] tree; int lowbit(int x) { return x & -x; } // 查询前缀和的方法 int query(int x) { int ans = 0; for (int i = x; i > 0; i -= lowbit(i)) ans += tree[i]; return ans; } /..
2022-04-04 15:44:48
115
原创 拓扑排序算法入门
class Solution { public int[] findOrder(int numCourses, int[][] prerequisites) { //记录每个点的邻接表,视题目变化可改用map或list HashSet<Integer>[] adj =new HashSet[numCourses]; for(int i=0;i<numCourses;i++){ adj[i]=new HashS.
2022-04-04 15:40:51
529
原创 springboot整合redis,自定义redisTemplate,及封装工具类
默认的redisTemplate序列化源码默认的序列化为jdk序列化,但这样虽然在idea操作数据时不会乱码,如果我们从命令行查看就会乱码;而且默认的redisTemplate为RedisTemplate<Object, Object>,而我们更常用的为RedisTemplate<String, Object>,所以我们一般自己配置redisTemplate其中json的序列化可以使用redis包下自带的Jackson或者导入fastjson包使用自带的Jackson
2022-02-15 18:36:05
762
原创 Linux下安装Redis教程
1.下载压缩包redis官网2.将压缩包上传到opt目录下解压redistar -zvxf redis-6.0.6.tar.gz3.如果在centos7下编译redis6.0版本,可能出现错误请先检查gcc的版本是否低于5,如果是请先升级,可以使用以下命令:sudo yum install centos-release-sclsudo yum install devtoolset-7-gcc*scl enable devtoolset-7 bash4.redis默认安装路径 “/u
2022-02-11 20:55:48
852
原创 【图论搜索】----------多源 BFS
单源BFS通常我们使用 BFS 求最短路,都是针对如下场景:从特定的起点出发,求解到达特定终点的最短距离。多源BFS与「单源最短路」不同,「多源最短路」问题是求从「多个源点」到达「一个/多个汇点」的最短路径。在实现上,最核心的搜索部分,「多源 BFS」与「单源 BFS」并无区别。多源BFS应用题(leetcode):1162.地图分析994.腐烂的橘子542.01矩阵1765.地图中的最高点这几道都是多源BFS的板子题或稍稍改变一些应用举例:题目要求让矩阵中的最高高度最大,我们可
2022-01-29 14:04:16
1122
原创 thymeleaf中给JS事件传值
最近在使用layui的弹出层的时候想给点击按钮后触发弹出层的JS方法传递参数,结果鼓捣半天没成功,记录一下最后解决的办法<main id="layerDemo"> <!--thymeleaf给js方法传递参数--> <a class="btn btn-sm btn-danger " th:userid="${employee.getId()}" onclick="deleteEmp(this.getAttribute('userid'))" >删除</a&
2021-11-24 17:00:04
1986
原创 SpringBoot MVC自动装配原理及MVC拓展
springboot运行原理:https://blog.csdn.net/gdnlnsjd/article/details/121439543springboot自动装配原理:https://blog.csdn.net/gdnlnsjd/article/details/121441166我们已经了解了springboot的运行原理和自动装配原理,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制。我们从源码和官方文档去分析官方文档我们从
2021-11-20 18:37:38
250
原创 SpringBoot自动装配原理源码分析
SpringBoot运行原理源码分析https://blog.csdn.net/gdnlnsjd/article/details/121439543我们在运行原理分析之后已经得知,自动配置真正实现是从classpath中搜寻所有的META-INF/spring.factories配置文件 ,并将其中对应的 org.springframework.boot.autoconfigure…作为key,将其下的配置项,通过反射实例化为对应标注了 @Configuration的JavaConfig形式的IOC容器配
2021-11-20 16:42:26
223
原创 SpringBoot运行原理源码分析
运行原理探究我们都知道在创建完一个springboot项目后都会自带以下内容,只需要点击启动项目就可以跑起来,那它背后到底都做了什么呢?pom.xml我们先看pom.xml,发现它有一个父依赖点进去看看,发现它还有一个父依赖再点进去看看,发现这里才是真正管理SpringBoot应用里面所有依赖版本的地方,SpringBoot的版本控制中心。以后我们导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了;启动器 spring-boot-starter比如
2021-11-20 16:05:21
163
原创 Webpack 的安装和使用
检查是否安装成功简单应用理解新建一个空项目建立一个modules文件夹在其下编写一个hello.js和main.js编写webpack配置文件,webpack配置很多,这里只写出最简单的打包入口和导出目的地执行打包命令打包成功创建一个index.html,使用打包后的js文件,直接引用即可效果...
2021-11-06 18:33:26
119
原创 Vue-cli 环境搭建和使用
需要的环境Node.js http://nodejs.cn/download/下载后安装Node.js直接第一种方法全局安装即可,第二种每次都要操作一次安装的位置 C:\Users\My PC\AppData\Roaming\npm我们一般使用webpack模板进行开发复制网址打开看看ctrl+c停止服务器配置idea使idea可以使用npm命令...
2021-11-06 17:38:42
446
原创 SpringMVC笔记(四)-----------文件上传和下载
文章目录文件上传文件下载文件上传1、导入文件上传的jar包,commons-fileupload , Maven会自动帮我们导入他的依赖包 commons-io包;<!--文件上传--><dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>.
2021-11-02 09:37:24
108
原创 SpringMVC笔记(三)----------拦截器
拦截器是AOP的一种应用,是针对方法而言的(拦截的并不是路径或页面,而是方法),所以是mvc独有的注意这里/**,拦截的是访问路径下的方法举例应用(登录验证)编写拦截器
2021-11-02 09:36:45
118
原创 JSON-----------Jackson和fastJson的使用
文章目录什么是JSONJacksonFastJson什么是JSON前后端分离会通过JSON来传递数据前端的json和js对象的转换使用自带的json即可,后端一般使用Jackson或者阿里巴巴的fastJsonJacksonobjectMapping是Jackson包下的类,用于转换json<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.
2021-10-31 17:54:27
285
原创 SpringMVC笔记(三)-------数据处理(请求转发和重定向 | 前端参数接收和发送 | 乱码处理)
文章目录请求转发和重定向接收前端参数发送参数到前端乱码问题解决请求转发和重定向这种方式return默认走请求转发,会触发视图解析器;重定向不会触发视图解析器,需要自己写完全路径,且重定向不能访问到web-inf下的资源接收前端参数传入的参数会自动去匹配类中的属性,若没有对应的,则该属性为null发送参数到前端乱码问题解决这和我们自己手写的过滤器是一个道理,只不过springmvc由封装好的类可以直接实现注意/和/* 的区别,这里应该对路径和页面资.
2021-10-31 17:36:31
146
原创 SpringMVC笔记(二)------------restful风格
restful风格可以url一样,提交方式不一样达到访问不同servlet的目的代码理解传统风格:http://localhost:8080/commit%EF%BC%9Fp1=1&p2=2restful风格:http://localhost:8080/commit/1/2注解指定请求类型
2021-10-31 17:19:00
69
原创 SpringMVC笔记(一)-----------原理理解及注解开发
文章目录原理理解dispatchServletdispatchServlet原理代码理解注解开发原理理解dispatchServletdispatchServlet原理上图为springmvc较为完整的一个流程图,实现表示springmvc框架提供的技术,不需要开发者实现,虚线需要开发者实现代码理解1.一个呈现信息的页面2.web.xml中注册dispatchservlet/只会拦截路径,不会拦截页面(如.jsp.html这些就不会拦截)/*会拦截路径和页面.
2021-10-31 17:05:38
135
原创 spring笔记(六)---------事务管理
配置声明式事务<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="ht
2021-10-31 16:23:59
72
原创 spring笔记(五)---------spring整合MyBatis
1.编写数据源配置相等原来mybatis中配置environment2.sqlSessionFactory相当于将mybatis中的配置写到了spring中,原来使用mybatis时要用sqlsessionFactoryBuild去读取配置文件也是一样的道理3.编写mybatis-config.xml其实mybatis的配置文件可以完全写到spring中,但我们一般还是保留其配置文件,以明显的知道使用了mybatis4.sqlsessionsqlSessionTempla
2021-10-31 16:10:34
126
1
原创 spring笔记(四)--------代理模式和AOP
文章目录代理模式静态代理动态代理动态代理原理解析AOP理论知识代码实现AOP实现方式一AOP实现方式二AOP实现方式三方法。代理模式静态代理3.代理对象动态代理代理类在程序运行时创建的代理方式被成为动态代理。我们上面静态代理的例子中,代理类(studentProxy)是自己定义好的,在程序运行之前就已经编译完成。然而动态代理,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。相比于静态代理, 动态代理的优势在于可以很方便的对代理类.
2021-10-31 15:24:55
103
原创 spring笔记(三)---------自动装配和注解开发
文章目录自动装配注解实现自动装配@AutowiredResource注解开发纯Java注解方式配置spring自动装配1.环境搭建建立三个实体类一个人拥有两只宠物public class cat { public void shout(){ System.out.println("miao~"); }}public class dog { public void shout(){ System.out.println("wang~".
2021-10-31 13:42:20
80
原创 spring笔记(二)----------IOC(控制反转)和DI(依赖注入)
文章目录IOC理论推导代码理解IOC再理解注意点DI(依赖注入)spring配置IOC理论推导代码理解1.编写一个Hello类2.将其注册到spring配置文件中3.使用IOC再理解编写一个userDao接口,再编写多个该接口的实现类,将这些实现类注册到spring当用户需求不同的userDao接口的实现时,不需要去更改原有的代码,只需要在配置文件中修改一下property的赋值即可注意点spring的配置在new classPathXmlApplicati.
2021-10-31 12:49:31
123
原创 MyBatis笔记(五)--------缓存
文章目录缓存概念一级缓存二级缓存可能遇到的问题缓存概念一级缓存public void getBlogByID(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); blogMapper mapper = sqlSession.getMapper(blogMapper.class); Blog blogById1 = mapper.getBlogById("1"); B
2021-10-02 17:01:16
70
原创 MyBatis笔记(四)---------联表查询和动态sql
文章目录联表查询多对一处理(关联 association)一对多处理(集合 collection)动态sqlif标签choose 标签trim(where set)标签sql片段foreach 标签联表查询创建数据库多对一处理(关联 association)创建实体类一对多处理(集合 collection)按查询嵌套处理<!--按查询嵌套处理--> <select id="getTeacher" resultMap="TeacherMap">
2021-10-02 16:24:53
193
原创 MyBatis笔记(三)------Map|模糊查询|resultMap|日志|分页|Lombok|注解开发
文章目录万能的Map模糊查询resultMap日志STDOUT_LOGGING万能的Map在实体类参数过多时,或者传入参数有多个时都可以使用map模糊查询第二种写死可以防止sql注入resultMap但我们一般不会这样去做,很low应当使用resultMap来解决可以理解为使用resultType时也隐含的一个resultMap,只不过字段名何属性名一一对应,所以不用显示表示罢了。使用resultMap时其实只需要把字段名何属性名不同的显示声明即可话虽如此,
2021-10-02 15:29:23
98
原创 MyBatis笔记(二)-------配置文件解析和优化
文章目录配置文件解析生命周期及作用域配置文件解析<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties r
2021-10-02 14:24:44
110
原创 MyBatis笔记(一)------从0到1的MyBatis程序
文章目录概述第一个MyBatis程序可能出现的问题概述第一个MyBatis程序1.新建一个普通的maven项目2.导入maven依赖<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> &
2021-10-02 12:58:39
125
原创 通用进制转化算法------将一个n进制的数转化为m进制
任意进制转换和经典的十进制转化为二进制类似,十进制转化为二进制,每次对2取模,然后除以2,直至为0。所以任意进制的转换同理去写即可举例:给定一个整数num,十进制转化为十六进制,每次对16取模,然后除以16,直至为0。需要额外注意负数的情况,根据补码的规则,最高位为符号位,即如果是负数,第32位为1,反之00。计算机中的运算机制为补码运算,正数的补码为其本身,对于负数,我们加上2^32(相当于按位取反末位加一),将其转移到正数范围内处理,注意int数据范围不够,需要用 long。需要注意的是要对
2021-10-02 11:08:49
1735
原创 常用数学运算算法----求两个数的最大公约数|求两个数的最小公倍数|快速幂|判断一个数是否为质数|判断一个数二进制的位1个数
求两个数的最大公约数long gcd(long a, long b) { if (a < b) return gcd(b, a); if (a % b == 0) return b; return gcd(b, a%b); }简化:long gcd(long a, long b){ return b == 0 ? a : gcd(b, a % b); }求两个数的最小公倍数先求出最大公约数,然后两数相乘除以
2021-09-19 17:28:38
168
原创 JavaWeb-----过滤器Filter
什么是FIlterFilter用法编写FIlterxml中配置简单应用jsp页面:登录页面登录成功页面错误页面ServletFilter:这样就可以实现只在登录的时候才能访问主页,注销之后即使直接输入对应url也不能直接访问...
2021-09-03 15:39:19
88
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人