- 博客(110)
- 问答 (2)
- 收藏
- 关注
原创 2023届应届生关于Java这条路的感受和收获
后面准备春招,但不知道怎的好像上辈子欠了老天爷一样,我的霉运翻了倍,女朋友跟我分手,后面去挽留,回来后又因为气胸复发住院,春招整个情绪都非常不好,然后就错过了,直到六月份,某个公司联系到我,说是秋招的offer现在可以发了,然后我很高兴,工资不错也有10k这样子,我高兴地参加培训,培训成绩第一名,在试用期间,每天第一个到工位,比别人块一个多小时甚至两个小时;如今我失去了应届生身份,现在已经24届了,九月份也已经过去了,我去哪找工作?我家里所有指望就靠我了,可是才毕业几个月就失业了.
2023-10-02 15:07:14 352 4
原创 Sa-Token大坑:关于Sa-Token跨域问题解决后导致token无效,Cookie丢失的问题
这两天用sa-token做业务发现,如果使用前端ajax请求到认证中心的话,会导致跨域问题,而跨域问题解决后悔导致认证中心的token失效了,我debug了。同理,如果认证中心重定向回来,token也可能丢失,所以我们将token放在重定向地址里作为参数,就不会丢失了.如果不懂代码怎么回事,可以去Sa-Token学习学习,也可以去我发的**
2023-06-22 15:41:30 6455 2
原创 Sa-Token整合OAuth2实现单点登录
今天春天太苦了!!先后经历了失恋,然后住院,春招也就找了半个月,幸亏秋招的时候有公司捞我了,不然今年要失业了!!!话不多说,步入正题,单点登录这个问题我很久之前有研究过,但是使用SpringSecurity写的,只感觉很离谱,要的配置实在是太多了,这个月公司提前配置,要整这个东西,我用SpringSecurity这个Oauth2实现单点登录又做了一次,但这次死活不行,前后弄了一个多星期,真离谱!!后来发现了Sa-token的这款工具,发现挺好用的,查了查,好像说比Shiro和SpringSecurity
2023-06-21 13:54:38 3769 1
原创 基于SpringBoot+WebSocket的聊天小项目,计算机网络课程实践基于TCP协议的即时通讯系统,实现网页聊天,群聊,好友列表,好友持久化
基于SpringBoot+WebSocket的聊天小项目,计算机网络课程实践项目,实现网页聊天,群聊,好友列表,好友持久化
2022-06-27 21:56:32 939
原创 并查集是什么?你还在为其烦恼?其实就是一个连通图的问题,理解起来没有那么困难
并查集,一种特殊的数据结构(它的逻辑结构本质也是一颗“树”,有唯一的根节点,任意数的子节点),它的特殊在于它只定义了两种数据操作(查找和合并)。这是用来解决连通性问题,查找(find):就是查找任意两个节点是否连通,就是是否有共同的祖先(节点找它的父节点的过程,一层一层地找)。合并(union):把两个不同集合的节点合并在一起。刚开始看到并查集这个词的时候,以为它是一个算法。其实也可以说是一个算法(对树问题的一种特殊操作方式),只不过这个算法的代码实现通常要定义两个函数:find()和union()我定义了
2022-06-09 08:30:00 154
原创 B+超强树,带你知晓MySQL的底层是怎样的结构
该树和B+树最大的区别在于,该树所有节点都存放数据.学习之前,先弄清楚B树的特点:B树在节点存储元素要知道的规则是: 连续存放元素一直要存到该节点最多能存放的数量为止,一旦超出了元素存放上限,先模拟出该存放的位置,然后将中间那个元素提升,如上图所示.当我们为一个节点放满四个元素的时候,再放入53,因为是五阶树,再存放就不能存放了,只能先模拟存放在41和97之间,之后将该节点中间元素提升,也就是41,再讲剩下的节点分为该41节点的左子节点和右子节点.B+树和B-树有两个区别: 非叶子节点只存放索引,通过该索
2022-06-08 09:45:00 239
原创 图解分析红黑树,理解都不是事,直接白话文讲述
讲到红黑树,就得引出AVL思想了,该思想诞生的原因主要由以下的问题: 我们在利用二叉树的时候,一般都要规定其一些特性,比如左节点必须小于根节点,右节点必须大于根节点,这样的树就叫做二叉排序树,这个二叉排序树在查找上效率是o(logn)而一般的数组直接遍历的话是o(n),但这只是二叉排序树的一般情况,如果传过来的数值本身就是有序的比如:123456,这样的数列要搞成二叉排序树的话,全都是在父节点的右子节点,因此退化成了链表,二叉排序树便失去了意义.所以,我们希望在进行二叉查找树实现的时候,通过一些规则来让树的
2022-06-07 09:45:00 139
原创 堆是也可以看成一种树结构,规定根节点必须大于或小于左右子节点,但左右子节点的大小顺序没有规定
堆不算是一种数据结构,只是一类数据结构的统称,通常用完全二叉树来实现堆.完全二叉树即除了叶子节点外,必须存在左右孩子节点的树.不完全二叉树是除了叶子节点外,存在一个或多个节不完全存在左右孩子节点.在前面小编提到过一笔,树不一定要用向链表那样的结构去实现的,我们完全可以用数组,用数组的好处是,可以快速遍历,根据某个节点,我们可以快速获取其父节点或者子节点,请看下图数组存储树的结构:如果一个节点的位置是k,那么其父节点的位置是k/2,其左子节点为k/2,右子节点为k/2+1.其次,树的根节点一定要大于左右子节点
2022-06-06 10:00:00 818 1
原创 基于java实现的二叉树经典的增删改问题,通俗易懂,适合入门
二叉树是一种很简单的结构,根节点延伸出左子节点和右子节点.这些子节点又有自己的子节点,自己当成子节点的根节点,不断延伸,可以无穷无尽.二叉树的作用有很多,比如在一些数据的查找上设计得很巧妙,我们规定左节点存放的值小于根节点,右节点存放的值大于根节点,这样子在进行查找的时候,就可以让该传入的值直接与最开始的根节点进行比较,从判断去哪个子节点寻找,不用遍历所有节点.二叉树的遍历又分为前序遍历,中序遍历,后序遍历,这些遍历往往会让人很乱,且看小编给你分析得头头是道.前序遍历就是以根节点为起点,然后开始遍历其左子
2022-06-05 09:30:00 549
原创 MySQL死锁问题如何解决?背诵版
MySQL的死锁:两个或两个以上的事务因为互相竞争对方的资源而导致循环等待的现象成为死锁.如何解决死锁:可以使用show engine inoodb status语句去查看sql语句状态.然后根据对应的死锁sql找到占用的锁.比如说: 事务A占用了a表的锁,事务B占用了b表的锁,如果此刻事务A要求占用b表的锁就得让事务b去释放b表的锁,但如果这个时候事务b也要求占用事务a的锁,就得要求事务a去释放占用a表的锁,这样子大家都循环等待,就造成了死锁.这个时候我们应该顺序让他们去占用锁,让事务ab顺序占用
2022-06-04 18:29:00 290
原创 二分查找算法,经典剖析,你还觉得查找算法难?
这是非常经典的查找算法,其规定数组的元素一定是有序的,因为我们要根据元素的大小进行一个折半,从而达到缩小遍历范围的目的.比如上图,如果小编要找67,就可以先找到中间位置第三位,为5(从0开始),然后判断67是否比5大,如果比5大说明一定在5右边,然后又开始在5右边折半,找到89,发现该数字比67大,然后在89左边折半(此时注意是以67为起点),便找到了67.优化: 二分查找主要...
2022-06-04 10:45:00 222
原创 经典图论,深度优先和广度优先,拓扑,Prim和Krukal,该来温习啦
图在生活被广泛应用,你平常听到的深度优先和广度优先算法都要建立图的基础之上.图的相关概念很简单,这里先不给出复述,等到小编讲述到例子,一下子就豁然开朗了.我们代码中如何存储一个图呢?其实有常用的两种方式一种是使用领接矩阵,也就是一个二维数组,数组下标是图点的表示,a[i][j]=1就表示i点和j点连通,若是为0表示不连通.另一种是邻接表,也就是用一个一维数组表示这些图点,然后每个位置又链接出一个队列或者链表,该链存储的是与该点直接连通的点.(是直接连通,而不是间接连通,比如a-b-c,a和b是直接连通)
2022-06-03 13:30:00 629
原创 八大排序算法详细分析,通俗易懂,基于Java实现
排序其实是一种算法,分为内部排序和外部排序,所谓内部排序是指在内存中进行排序,外部排序则需要借助一些外部的空间进行排序,比如磁盘文件.我们一般学习的是内部排序,面试问的最多的也是内部排序.内部排序的顺序图:时间复杂度表:时间的平均复杂度越低,性能整体上越好.比如o(n2)和o(nlogn),如果你知道这两个曲线的雏形就会了解,当n越大,n2就会便会变化得很快,而且是往大的方向增长.而后者的logn就不一样了,n越大,值会趋于平缓,时间复杂...
2022-06-03 08:41:08 757
原创 Zookepper===>动物管理员系统
概述顾名思义,表示动物管理员。我们将多个服务器看成不同的动物,而Zookeeper就是一个管理员,用来观察这些动物的状态,而我们客户端每次在进行观赏动物之前,都要跟管理员交互,一旦管理员发现有死亡动物,便会通知想观赏该动物的客户。当然这只是一个普通的比喻,实际上,ZK是由一个领导者和多个从者组成的集群。1)在该集群中,如果存在半数或超过半数以上的节点死亡,该集群便不能工作。2)集群全局数据是一致,即每个节点保存的数据都是一致的,但这不影响服务器的压力。3)数据更新支持原子性,数据读取.
2022-06-01 08:30:00 7514
原创 RabbitMQ 中小型企业MQ的不二选择,入门级别教程,适合初学者
文章目录Erlang语言安装(rpm版,建议)Rabbitmq安装(rpm版,推荐)卸载Erlang语言的安装(压缩包版本,不建议)Rabbitmq安装(压缩包版,不建议)安装web管理页面Hello World生产者代码消费者代码工作队列消息应答概念类别例子生产者消费者测试持久化队列持久化消息持久化不公平分发预取值确认发布单个确认发布批量确认异步确认发布临时队列交换机扇出交换机,路由key相同生产者消费者注意测试直接交换机,路由key不同主题交换机死信队列消费者生产者结果其他延迟队列Springboot整
2022-05-30 12:15:00 1637
原创 ActiveMQ简单教程,适合初学者,学习笔记yyds
MQ概述消息中间件主要是为了解决解耦,削峰,异步的问题解耦:假如有一个中心系统,其他系统则需要从该中心系统获取数据,而一旦其他系统里有系统崩溃或者修改,该中心系统与之对应的接口可能也要修改.这样耦合性是非常高的.但如果中心系统将数据抽象到MQ中,俗称消息中间件,中间件便会通过发布订阅的机制让其他系统去消费,中心系统就不用管理其他系统是否出现问题的情况,若是其他系统出问题,直接取消与中间件的消费即可.削峰:假如突然间有大量的请求进来,系统可能一次性消化不过来,可以先堆积在MQ中,系统每次最多向MQ中.
2022-05-29 13:15:00 1651
原创 dubbo 阿里巴巴旗下的远程调用的RPC框架
分布式系统概述分布式系统是若干计算机独立的集合,这些计算机对用户来说就好像单个系统.分布式系统是未来的大趋势,但这种大趋势也必定带来管理的困难,所以duboo系统便应运而生,用来管理分布式系统的运作.RPC远程过程调用但分布式系统的管理中,怎样在服务器之间建立连接,是一个重要的问题.rpc简称远程过程调用,是一种技术的思想,而不是一种规范.在上面的过程中,我们可以看出,绝对RPC思想的效率一是通讯的效率二是RPC中序列化和反序列化的效率,这关于数据格式之间的传输,是xml传输.
2022-05-28 11:10:04 525
原创 SpringCloud 入门级别教程,初学者专用,有netiflex原版教程,更有SpringCloudAlibaba微服务教程
SpringCloud 入门级别教程,初学者专用,有netiflex原版教程,更有SpringCloudAlibaba微服务教程
2022-05-28 09:00:00 1208
原创 redis6 入门级教程,有整合案例,可以直接看整合案例,简单入门,直接上手
redis6教程,直接入门,有整合案例,非常简单,不懂的可以来看看
2022-05-26 09:30:00 1028
原创 Mybatis-plus终极入门教程,简单上手,适合初学者,快来看看吧
MybatisPlus很简单,简单!!比Mybatis简单多了,不用搞那么多xml文件的配置,直接与Springboot整合,那开发效率简直杠杠的
2022-05-25 11:57:05 1864
原创 SpringSecurity 入门级别教程,有前后端分离校验模式案例,SpringSecurityOAuth2整合GateWay操作
SpringSecurity入门级教程,有开发案例,整合OAtuh2,整合GateWay网关,实现前后端分离模式的校验
2022-05-25 11:21:07 2152
原创 SpringSecurity+GateWay网关+OAuth2鉴权,前后端分离模式,两种验证模式,入门级教程
说明SpringSecurityOAuth2单点登录昨天我发了一个单点登录版本的验证博客,到今天早上我再研究了一下,发现了一些问题:昨天那个单点登录是在每个模块的基础上做的,也就是说如果你想让每个模块都如认证中心认证,就要在每个模块里进行相关配置,这还不是最紧要的,你要想想,因为我们是通过注解的方式在对应的方法鉴权,这样的话就会导致我们每次访问这个方法的时候就要去认证中心请求一次,也就是鉴权一次,那么整个系统模块又多,路径又多,认证中心肯定是吃不消的啊.所以在这个基础上,就需要去将认证中心在第一次
2022-05-24 22:22:24 9818 4
原创 redistemplete请求spring security /oauth/token 报401错误,表示没有权限
/oauth/token这个路径就是为了获取认证中心的token System.out.println("函数进来了"); MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>(); paramsMap.put("grant_type", Collections.singletonList("password")); paramsMa
2022-05-22 22:30:58 2044
原创 SpringSecurityOAtu2+JWT实现微服务版本的单点登录
文章目录何为单点登录认证中心maven配置用户登录逻辑OAtuh2配置配置服务中心配置规则中心请求模块一些小问题何为单点登录单点登录通俗的话来讲在微服务当中,在一个服务登录后就能免去另一个服务的登录操作,所谓单点登录.就好像你在微博总网站里登录后,然后在微博里面的某一个模块点进去后,就发现这个模块竟然不用登录了,不是因为这个模块与主网站是一体的用一个SpringSecurity就可以搞定了,这里面的水深着呢!感兴趣更深这个SpringSecurity建议去看看图灵课堂的SpringSecurity,
2022-05-22 22:11:36 1082 1
原创 面试题: MySQL主从复制及产生问题,如何解决,背诵详细
什么是主从复制?主从复制就是用来建立一个或多个和主库一样的数据库,称为从库,然后可以在这两者之上进行一个读写分离,主库少写,从库多读的操作,这样就能大大缓解数据库的并发压力有什么用做数据的热备份,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的评率,提高单个机器的I/O性能。读写分离,使数据库能支持更大的并发。在线上环境中,一般都是读多写少,那么我们可以在主库中实现写
2022-05-18 22:07:12 967 3
原创 Mybatis两级缓存,缓存原理介绍,面试题经典,可以完全背诵
文章目录一级缓存二级缓存原理背诵对比一级缓存一级缓存也叫本地缓存,在MyBatis中,一级缓存是在会话(SqlSession)层面实现的,这就说明一级缓存作用范围只能在同一个 SqlSession 中,跨 SqlSession 是无效的。默认开启一级缓存.二级缓存二级缓存是mapper级别的缓存,如果多个SqlSession公用一个mapper文件,那么大家的第一次查询后的数据都会放在二级缓存中.二级缓存范围更大.< setting name=“cacheEnabled” value=“t
2022-05-17 21:04:37 412
原创 Mybatis执行流程(原理,面试官问题),可以直接背诵,通俗易懂,全面
答: mybatis的执行流程主要分为两大流程,一是解析xml文件,二是进行相应sql执行.解析xml文件你可以这么回答: 在这个过程中,我们主要是为了获取SqlSession,利用sqlsession去执行相应的sql语句.首先,根据SqlSessionFactoryBuilder的build方法,获取一个DefaultSqlSesionFactory对象,那么在build方法里会对xml文件进行解析,最主要是会对mapper.xml文件里的sql语句进行解析封装成一个MappeStatement
2022-05-17 13:18:07 461
原创 在Spring中 Setter方式注入和构造器注入的区别,面试题背这个准没错,可以说的是最全的了,奉劝你还是别查了,没有一个比我这个说的好的,都在一顿抄
Setter方式要对应的bean拥有set方法,而构造器方式则要拥有对应的构造器setter方式更加直观,而构造器方式更加臃肿,因为需要将全部依赖设置进来.setter方式一般用在弱依赖关系上,如果没有对应依赖对象,主对象仍然可以执行,而构造器是强依赖关系,在new一个对象的时候,需要用到有参构造,有参构造是必须传入参数的,不然会报错.构造器依赖是官方推荐的时候依赖,除了刚才说的,能因为必须传输有参构造器里的参数,可以监测依赖不为空;其次我们可以将依赖对象赋值给final对象,使依赖不可变;还有,我.
2022-05-16 10:17:39 804
原创 Rabbitmq面试题总结,非常详细,杜绝标题党,不详细你打我,下次不写博客了
Rabbitmq面试题总结,非常详细,杜绝标题党,不详细你打我,下次不写博客了
2022-05-10 18:04:29 34948 8
原创 Spring的七种事务传播行为,通俗易懂,绝不笼统,可以背诵,应付面试
文章目录什么是事务传播行为PROPAGATION_REQUIREDPROPAGATION_NESTEDPROPAGATION_REQUIRES_NEWPROPAGATION_SUPPORTSPROPAGATION_NOT_SUPPORTEDPROPAGATION_MANDATORYPROPAGATION_NEVER复习spring的时候,发现网上说的spring其中事务传播行为,说的不太好,根本没有说到通俗易懂这个点子上,要么就是一顿抄,估计他自己都不懂什么意思,以为背一下就可以应付面试了,但是面试官听到
2022-04-26 22:15:12 1132 2
原创 @Autowired和@Resource和@Inject注解的区别,直接背诵,可以面试
首先,@Autowired和@Resource,@Inject三个注解都是用来注入一个bean实例的.从作用范围上看: @Autowired可以作用在字段上,构造器和方法,@Resource只能作用在字段和方法上,@Inject和@Autowired作用范围是一样的.使用方式不同: @Autowired默认是根据类型去查找bean的,如果存在类型相同不同名称的bean,要用@Qualifier 注解指定名称去装配,如果注入的bean不存在,会抛出异常,如果不想抛出异常,可以在@Autowired里指定.
2022-04-26 20:31:45 611
原创 Spring Bean的生命周期面试题,来自抖音 :文艺TOM
(这个文章根据抖音的文艺TOM博主抄的,觉得挺好,可以背背,当成面试用,另外我加了一点点)Spring的生命周期被分为五个阶段:创建前准备阶段创建实例阶段依赖注入阶段容器缓存阶段销毁实例阶段创建前准备阶段这个阶段主要是开始bean加载之前,从spring上下文中去获取相关的配置并且解析,然后找到bean有关的一些配置内容,比如说init-method,容器在初始化bean的时候去调用这个方法,destory-method容器在销毁bean的时候去调用这个方法,以及BeanFactoryP
2022-04-26 18:02:04 3229
原创 为什么要使用多线程?你只知道多线程可以提高性能?
面试的时候你可以这么回答避免阻塞.因为在单线程中,各个线程是顺序执行的,也就是说,如果某个线程阻塞了,后面的线程也会被阻塞掉.避免cpu空传.在线程里,一个线程结束的标志不是将核心逻辑执行完了就可以了,例如你要请求一个数据库,不是你请求完成就可以了,这个线程还要等待数据返回,对于我们来说,等待返回是完成没有必要的,浪费cpu,为了解决这个问题,可以引入多线程,然其他线程在这个时间执行,这样cpu就不会闲着了.提高效率.多线程能并发或并行执行,极大地提高了cpu利用效率,并行的话就是多个线程同一个时间
2022-04-25 16:20:20 676
转载 面向对象六大原则,一大法则,这是见过最详细的一篇文章,很明白,别被别的破文章迷惑了,说了乱七八糟,而且别的都是一顿乱抄,看估计都没看就搬过去了
这篇文章是搬运过来的,在百度文库里,里面的依赖倒置原则我觉得是说得最通俗易懂的,别的文章,我真是服了,大部分都是抄的https://wenku.baidu.com/view/7eb6e256a717866fb84ae45c3b3567ec102ddcee.html单⼀职责,⾥⽒替换,迪⽶特法则,依赖倒转,接⼝隔离,合成/聚合原则,开放-封闭 。开闭原则(Open-Closed Principle, OCP)定义:软件实体应当对扩展开放,对修改关闭。这句话说得有点专业,更通俗⼀点讲,也就是:软件系
2022-04-24 16:32:32 202
原创 Java数据结构与算法之图解递归算法,踩爆八皇后和迷宫问题,你还不理解回溯?来看看这篇文章吧
Java数据结构与算法之图解递归算法,踩爆八皇后和迷宫问题,你还不理解回溯?来看看这篇文章吧
2022-04-11 19:44:56 612
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人