- 博客(67)
- 问答 (1)
- 收藏
- 关注
原创 SpringSecurity实现角色权限控制(SpringBoot+SpringSecurity+JWT)
通过springboot整合jwt和security,以用户名/密码的方式进行认证和授权。认证通过jwt+数据库的,授权这里使用了两种方式,分别是SpringSecurity自带的hasRole方法+SecurityConfig和 我们自定义的permission+@PreAuthorize注解。用来存储和获取当前线程关联的 SecurityContext 对象的类。
2023-05-14 16:07:54
7100
原创 出现Invalid bound statement (not found)问题的解决办法(已解决)
Invalid bound statement (not found)的解决方法汇总
2023-04-25 23:03:51
6363
原创 大白话讲vuex
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
2023-03-29 20:35:31
836
原创 SpringBoot加载多个配置文件实现dev、product多环境切换
SpringBoot加载多个配置文件,实现开发、测试、生产环境的切换,以及SpringBoot中配置文件的加载顺序。
2023-03-26 18:54:51
2709
2
原创 【消息队列笔记】chp4-如何处理消费时的重复消息
在发送消息时,如果消息发送失败,发送方会对消息进行重发,这就会产生重复的消息。如果我们不对重复消息进行处理,可能会对系统造成一定的影响。如果消息队列本身能保证消息不会重复,那我们在消费端的实现逻辑就会变得很简单。
2022-11-25 19:09:21
1832
原创 【消息队列笔记】chp3-如何确保消息不丢失
对于大部分业务系统来说,丢消息意味着数据丢失,是无法接受的。但其实现在主流的消息队列都提供了完善的消息可靠性保证机制,可以做到在消息传递过程中,即使发生网络中断或者硬件故障,也能保证消息的可靠传递。绝大部分丢消息的原因都是由于没有正确使用和配置消息队列导致的。
2022-11-16 20:18:35
1520
原创 浅谈JWT(Json Web Token)
JWT,在HTTP通信过程中,进行身份认证。它是一种开放标准,一种规范化之后的 JSON 结构的 Token。JWT 自身包含了身份验证所需要的所有信息,因此我们的服务器不需要存储 Session 信息。增加了系统的可用性和伸缩性,大大减轻了服务端的压力。...
2022-08-30 17:15:02
568
原创 mysql中count()函数用法:count(1)和count(*)有什么区别?
在我们的日常开发中,经常会遇到计算一张表的行数的情况,通常情况下我们使用一条`select count(*) from t `语句就完事了。但是大家也可能看到count()函数的别的用法,比如`count(1)`、`count(字段名)`,那么他们和`count(*)`有什么区别呢?`count(*)`又是如何进行查询得到我们要的数据呢?...
2022-08-26 15:27:37
1445
原创 kafka学习笔记
我们知道,kafka是一个高性能、高可用和高扩展的消息队列,其中往队列中发送数据的称为生产者producer,从队列中拿取数据的称为消费者Consumer。根据不同的业务需求,我们肯定需要有多个不同的队列,其中每一个队列称为一个topic(主题)。可以多个生产者往一个topic里面发送数据,也可以有多个消费者从一个topic里面拿取数据。既然kafka是高可用的,那么把海量的数据放在一台主机上肯定是不行的,如果这台主机宕机了怎么办?...
2022-08-18 15:12:19
1156
原创 JVM之垃圾回收与内存分配
不过经过研究表明,新生代中98%对象都是“朝生夕死”的,所以并不需要按照1:1来划分内存空间,而是将内存划分为一块较大的Eden和两块较小的Survivor空间,每次使用Eden和一块Survicor。由于标记-清除算法的原因,可能会产生空间随便,虽然可以通过参数进行控制,不过也会加长停顿时间。当这一块的内存用完了,就将还存活的对象复制到另一块,然后把使用过的内存空间全部清理,这样就避免了内存碎片的产生。,每当有一个地方引用该对象时,计数器的值就加一,当某个地方对该对象的引用失效时,计数器的值就减一。...
2022-08-11 15:25:46
497
原创 分布式锁的实现(二)zookeeper篇
我们知道zookeeper主要服务于分布式系统,它为我们提供了以下几种服务:统一配置管理、统一命名服务、集群管理、分布式锁。本文我们主要来谈谈分布式锁的部分。
2022-08-08 15:13:24
545
原创 因特网中的DNS域名系统
DNS,也叫域名系统一个由DNS服务器实现的分布式数据库,其中存储了主机名和IP地址的映射;一个使得主机能查询该分布式数据库的应用层协议,它运行在UDP上,使用53号端口;网络中的主机往往有多种方式可以进行标识,常用的两种一种是主机名,另一种是IP地址。事实上主机名无法定位一台主机在网络中的位置,IP地址则可以。当我们访问一个网站时,本质上还是对IP地址的访问。那么如何通过主机名找到其对应的IP地址,就是DNS帮我们做的事。...
2022-07-28 00:21:33
1486
原创 web缓存器和CDN
web缓存器,又叫代理服务器,往往作为客户端(浏览器)和服务器之间的“中间人”。web缓存器有自己的磁盘,并会在其中缓存最近请求过的资源。可以将浏览器和web缓存器进行配置,配置后浏览器发送请求时会先发送到web缓存器,如果web缓存器中有请求需要的资源则直接返回;如果没有,web缓存器会和服务器建立TCP连接,并代理浏览器向其发送请求,然后将结果缓存在本地后,返回给浏览器。web缓存器往往由ISP购买并安装。为什么要使用web缓存器呢?当客户端距离服务器较远,特别是,web缓存器可以大大降低响应时间。..
2022-07-27 11:05:33
472
原创 Maven导入依赖时出现大片的爆红,出现Cannot resolve xxx…,以及Could not transfer artifact xxx错误
Maven依赖无法导入导入依赖时出现大片的爆红,出现Cannot resolve xxx…,以及Could not transfer artifact xxx错误
2022-07-22 17:16:32
2294
2
原创 SpringMVC最新面试题总结(2022)持续更新...
Spring MVC是一个基于Java的实现了MVC设计模式的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发。1)用户发送请求至前端控制器 DispatcherServlet。2)DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。3)处理器映射器找到具体的处理器Controller(可以根据 xml 配置、注解进行查找),生成处理器对象 及处理器拦截器(如果有则生成)
2022-06-04 11:45:17
2557
原创 计算机网络重要知识点总结(四)2022最新
一、Cookie和Session的区别?什么是cookie?首先要清楚http协议是无状态的协议,如果不加以处理,服务器就无法辨别用户的身份。为了解决这个问题,就出现了cookie。cookie就是服务端为了辨别用户身份,存储在客户端的一些信息。当用户第一次访问服务器时,服务器会生成一个cookie,然后将生成的cookie发送给客户端,客户端收到后就会把该cookie保存在浏览器中(set-cookie字段)。这样第二次访问服务器时,只要带上cookie,服务端就能知道你是谁了。什么是s
2022-05-31 08:58:17
268
原创 计算机网络重要知识点总结(三)2022版
一、POST和GET有哪些区别?使用场景GET 的语义是从服务器获取指定的资源,请求的参数位置一般是写在 URL 中(URL 只支持 ASCII,而且浏览器会对 URL 的长度有限制)。POST 的语义是根据请求负荷(报文body)对指定的资源做出处理,请求携带数据的位置一般是写在报文 body 中。安全性和幂等性安全性:指请求方法不会「破坏」服务器上的资源。幂等性:多次执行相同的操作,结果都是「相同」的。GET 方法就是安全且幂等的,因为它是「只读」操作。POST 因为是
2022-05-29 17:12:04
290
原创 计算机网络重要知识点总结(二)2022版
一、谈谈对滑动窗口的理解?TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包收到了应答了, 再发送下一个。但是这样效率会很低。于是TCP中引入了窗口的概念。窗口的实现实际上是操作系统开辟的一个缓存空间,发送方主机在等到确认应答返回之前,必须在缓冲区中保留已发送的数据。如果按期收到确认应答,此时数据就可以从缓存区清除。有了窗口,发送方无需等待确认应答,也可以继续发送数据**。窗口的大小通常由接收方的窗口大小决定。由于一台主机既可以发送又可以接收,所以发送方和接收方各自会有一个发送窗口
2022-05-28 19:06:58
400
原创 如何解决本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止(如果你在网上找了方法都不行,可以试试这个)
如何解决本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止(如果你在网上找了方法都不行,可以试试这个)这个问题我也是非常头疼,网上看了很多办法,什么改配置文件的,改密码的,对我都不管用,后来自己摸索着把mysql进程强行关了然后就能启动了(难道是已经启动的问题?…我也不是很清楚)。首先推荐大家试一下这个mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止_Luminescende的博客-CSDN博客如果你和我一样
2022-05-28 11:43:11
6079
2
原创 搞懂SpringBoot中的classpath问题
在SpringBoot中,classpath等价于 main/java + main/resources + 第三方jar包的根目录再通俗一点,classpath就是指编译或者打包后的classes目录。首先要明白,classpath是编译/打包之后项目的路径,而不是对源程序的路径描述。但是它与源程序的一些路径是相互对应的,存在映射关系。buildpackage对比就可以发现,main/java,main/resource下的东西和配置文件都被打包到了classes目录下。参考
2022-05-28 09:18:10
698
原创 计算机网络重要知识点总结(一)2022最新
一、OSI七层模型和TCP/IP四层模型?每一层作用及常用协议?1.OSI七层模型应用层:为计算机提供服务。表示层:数据处理,加密解密、压缩解压缩。会话层:管理应用程序间的会话。传输层:为两台主机进程之间的通信提供数据传输服务。网络层:选择合适的路由和交换节点,确保数据集市传送。数据链路层:将网络层传递下来的IP数据包组装成帧,在相邻节点的链路上传送帧。物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。2.TCP/IP四层模型应用层:常用协议DNS,HTT
2022-05-26 18:23:45
866
原创 数据库设计的三范式
数据库设计三范式范式,就是数据库表的设计依据。第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。第二范式:建立在第一范式基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。第三范式:建立在第二范式基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。设计数据库表时,按照以上的范式进行,可以避免表中数据的冗余。一、第一范式(有主键)要求任何一张表必须有主键,每一个字段原子性不可再分。最核心、重要的范式,所有表的设计都需要满足。二、第二范式(非复合主键)建立在第一
2022-05-24 09:02:57
1132
原创 limit分页查询使用
limit简介limit是将查询结果集的一部分取出来,通常用在分页查询中。dept(部门)表:emp(员工)表:salgrade(薪资)表:1.用法完整用法:limit startIndex,length startIndex是起始下标,length是长度,起始下标从0开始。eg.limit 0,5 表示从0开始,取长度为5的数据。缺省用法:limit length; 表示取前length条数据。eg.limit 5 表示取前5条数据。eg.取出工资排名在(
2022-05-22 11:21:28
2630
原创 关于java中参数传递问题(值传递还是引用传递)
参数传递问题首先要明确,在程序设计语言中,将参数传递给方法(函数)的方式有两种:按值传递:表示方法接收的是调用者提供的值;按引用传递:表示方法接收的是调用者提供的地址。(引用可以理解为地址)一个方法可以修改传递引用所对应的变量值,而不能修改传递值所对应的变量值!因为值传递实际上是对值进行拷贝后再传递,不会影响原来的值。两个重要理解误区:误区一、值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。误区二、传递的参数如果是基本数据类型,那就是值传递,
2022-05-22 08:57:41
366
原创 mysql中连接查询总结(内连接、外连接、左右连接)
连接查询当我们需要用多张表联合起来查询数据时,称为连接查询。连接查询可以分为内连接、外连接和全连接。其中内连接分为等值连接、非等值连接和自连接。外连接分为左外连接(左连接)和右外连接(右连接)。笛卡尔积:当两张表进行连接查询,没有任何条件限制的时候,最终查询结果条数是两张表条数的乘积,这种现象被称为笛卡尔积现象。通过添加条件限制,可以筛选出我们需要的数据。一、内连接在内连接中,两张表是平等的。dept(部门)表:emp(员工)表:salgrade(薪资)表:1.等值连接等值连
2022-05-21 22:36:10
2870
1
原创 聊聊关于volatile关键字
一、java内存模型(JMM) 在java内存模型中,各线程如果要对数据进行操作,不会直接在主内存(也就是各线程共享的内存)上进行操作,而是先将其可能用到的变量先拷贝一份作为副本放到自己的工作内存中,然后对自己工作内存中的数据进行操作,操作完成后将更新的数据刷回主内存。 在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。
2022-05-17 08:46:44
174
原创 锁系列—浅谈CAS及原理
一、什么是CAS?CAS就是比较并交换(compare and swap)的意思,属于乐观锁的一种。通俗点说,当我们想修改一个值时,我们会先将这个值和原先的值进行比较,如果发现和原先的值一样,那么我们再进行修改。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量时,只有当预期值A和内存地址V中的实际值相同时,才会将内存地址对应的值修改为B。如果发现不一致,则会重新进行尝试,这个尝试的过程被称为自旋。二、CAS的缺点1.cpu开销大 自旋锁的目的是为了占
2022-05-16 22:33:34
4558
原创 锁系列—Synchronized和ReentrantLock对比
一、 synchronized1.三种使用方式修饰实例方法:给对象实例加锁。修饰静态方法:给当前类加锁。修饰代码块:指定加锁对象(类或者指定对象)。2.底层原理(jvm层面)(1)修饰代码块synchronized 同步语句块使用的是 monitorenter(对应JMM模型lock指令) 和 monitorexit (unlock)指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit 指令则指明同步代码块的结束位置。**当执行 monitorent
2022-05-16 22:31:50
2154
原创 关于JAVA中的IO模型
一、java中IO的分类java中的IO包括基本IO/BIO/NIO/AIO四种,其实主要是BIO/NIO/AIO三种IO模型。二、基本IO基本IO可以从两种方式上进行分类:传输方式和数据操作。1.传输方式分类(1)字节流:读取单个字节,处理二进制文件(图片,mp3,视频),主要是给计算机看的。(2)字符流:读取单个字符,处理文本文件,主要是给人看的。2.数据操作分类三、BIO(阻塞IO)BIO就是blocking IO。最容易理解、最容易实现的IO工作方式,应用程序向操作系统请求网
2022-05-13 15:32:49
850
原创 Reactor模型
一、引言在处理web请求时,通常有两种体系结构,分别为:thread-based architecture(基于线程)、event-driven architecture(事件驱动)。我们来看看他们具体是怎么实现的。二、传统的BIO通信1.单线程阻塞模型客户端向服务器端发出请求后,客户端会一直等待(不会再做其他事情),直到服务器端返回结果或者网络出现问题。服务器端同样的,当在处理某个客户端A发来的请求时,另一个客户端B发来的请求会等待,直到服务器端的这个处理线程完成上一个处理。缺点
2022-05-13 15:30:44
399
原创 三种IO多路复用模型-select、poll、epoll
IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:1.当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。2.当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。3.如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。4.如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。5.如果一个服务器要处理多个服务或多个协议,一般要使用I/O复用。目前支持
2022-05-11 15:56:22
1708
空空如也
力扣,感觉思路没问题,但是测试只能过一小半
2021-11-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人