- 博客(125)
- 收藏
- 关注
原创 sso单点登录
其他的子系统拿到了登录域的cookie后,但是他们的服务器后台是不承认的,所以需要统一先去访问登录系统的后台,登录系统的后台提供了一个判定的方法,登录系统的后台放行的话,就可以去访问自己的后台服务器。2、之后,推送平台的后端调用sso接口去看这个token是否有效,如果有效就放行,如果无效就给前端一个报错,前端根据报错跳转到sso的登录页面。SSO鉴权,就是当我们登录到A系统成功之后,A系统给B系统一个凭证,通过对这个凭证的验证,验证成功,就可以登录B系统。
2023-04-05 21:00:49 324 2
原创 动态规划—算法题(采药)
医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。每组输入数据的第一行有两个整数T(1
2023-04-03 22:51:50 555
原创 中间件—消息队列
消息队列:一般我们会简称它为MQ(Message Queue)。【消息队列就是一个存放消息的队列】 Message Query(MQ),消息队列中间件,很多初学者认为,MQ通过消息的发送和接受来实现程序的异步和解耦,mq主要用于异步操作,这个不是mq的真正目的,只不过是mq的应用,mq真正的目的是为了通讯。他屏蔽了复杂的通讯协议,像常用的dubbo,http协议都是同步的。这两种协议很难实现双端通讯,A调用B,B也可以主动调用A,而且不支持长连接。
2023-04-03 22:50:50 311
原创 SpringBoot定时任务
2、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。并且,由于开启了多线程,第一个任务的执行时间也不受其本身执行时间的限制,所以需要注意可能会出现重复操作导致数据异常。注意: 如果在数据库修改时格式出现错误,则定时任务会停止,即使重新修改正确后,也只能重新启动项目才能恢复。2、广告结算定时任务扫表找到对应的可结算记录(定时扫表更新状态)3、每天定时更新数据记录(定时更新数据)
2023-03-29 08:47:56 732
原创 ThreadLocal的使用
如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是在操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了并发场景下的线程安全问题。 但是加锁会带来性能的下降,所以 ThreadLocal 用了一种空间换时间的设计思想,每个访问这个共享变量的线程都会在自己的本地内存加一份共享变量的拷贝,每个线程操作的是自己本地内存中的拷贝,这样既解决了线程安全问题,又避免了多线程竞争加锁的开销。
2023-03-28 19:11:29 217
原创 mybatis-plus自动填充
在项目开发中,我们会发现有一些数据库表字段是每个表都有的,在之前针对这些字段我们的目前的处理方式就是 增加或者修改的时候一个一个的去赋值,如果都按这样的方法进行操作的话,那我们就需要在每个业务方法中进行操作,这样会显得我们的代码过于冗余、繁琐。1、实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler。4、字段必须声明TableField注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段。
2023-03-24 21:02:34 1943
原创 hashMap扩容机制理解
1、 HashMap的底层有数组 + 链表(红黑树)组成2、存储形式key value,无序不可重复,key值保障不会重复3、初始化容量16,官网推荐为2的倍数,为了散列均匀,提交存取效率,默认加载因子0.75,到75%的时候会扩容,扩容:扩容之后是原容里2倍。0.75是对时间和空间上的一个平衡选择。4、key 存储的时候会调用底层hashcode(),hashcode是一串数字,然后会进行取余操作。5、时间复杂度每一次。
2023-03-24 21:01:02 427
原创 序列化和反序列化
(1)变量被transient修饰后,将不再是对象持久化的一部分,该变量内容在序列化后无法被访问。(2)transient关键字只能修饰变量,不能修饰方法和类。**本地变量是不能被transient关键字修饰的。**变量如果是用户自定义类变量,则该类需要实现Serializable接口。(3)一个静态变量不管是否被transient修饰,均不能被序列化(如果反序列化后类中static变量还有值,则值为当前JVM中对应static变量的值)。
2023-03-22 20:57:30 321
原创 springboot配置文件
1、properties 文件的语法是键值对结构,即 " key=value “,在我们日常写入配置的时候,” = " 的左右不应该留有空格,如:" server.port = 8899 ",这样写是不规范的,因为,有空格就可能会出错,它并不像 Java 代码一样,编译器能够为我们审核。2、像上面那样,把端口更改之后,重新运行启动类,Tomcat 端口号就会直接被改变,那么,当我们使用浏览器发送 HTTP 请求的时候,就不再是 " 8080 " 了,而是当前的 " 8899 ".第三方系统的调用秘钥信息。
2023-03-21 21:32:12 88
原创 布隆过滤器
布隆过滤器可以告诉我们 “某样东西一定不存在或者可能存在”,也就是说布隆过滤器说这个数不存在则一定不存,布隆过滤器说这个数存在可能不存在。理论情况下,添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。得到值之后判断位数组中的每个元素是否都是1。对给定元素再次进行相同的哈希运算。由二进制向量(或者说是。)和一些列随机映射函数()两部分组成的数据结构。等数据结构,它占用的。
2023-03-18 23:19:52 176
原创 缓存相关知识
磁盘当中的数据会先加载到内存当中形成备份,内存当中的数据就叫做缓存缓存有 :cookie、session、application、cache、redis。
2023-03-18 22:59:05 470 1
原创 多线程下安全的集合类
ConcurrentHashMap 和 java.util.HashTable 类很相似,但 ConcurrentHashMap 能够提供比 HashTable 更好的并发性能。Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。java.util.concurrent.ConcurrentMap 接口表示了一个能够对别人的访问(插入和提取)进行并发处理的 java.util.Map。4、Stack: 栈,也是线程安全的,继承于Vector。
2023-03-14 20:52:44 1019
原创 byteeasy项目启动遇到的错误
在启动项目的时候出现这个报错,本来以为是application.properties文件里面的数据库配置写错了,检查了一下,发现配置是。
2023-03-07 22:58:19 101
原创 初识springboot
spring boot只是一个,整合工具,辅助工具,我们在使用Spring框架进行开发的过程中,需要配置很多Spring框架包的依赖,如spring-core、 spring-bean、spring-context等 ,而这些配置通常都是重复添加的,而且需要做很多框架使用及环境参数的重复配置,如开启注解、配置日志等。Spring Boot致力于弱化这些不必要的操作,提供默认配置,yml配置文件。创建独立的spring引用程序 main方法运行。
2023-03-02 19:17:55 174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人