- 博客(52)
- 收藏
- 关注
原创 postman生成前端测试接口时,是在本地还是在线上?
我们可以使用postman生成前端接口,方便我们测试前端内容,但我们并不清楚postman是在本地生成的还是在自己的服务器上生成的,本文将进行揭秘。我们可以看到ip地址显示在美国,说明是在线上生成的测试接口。
2025-01-23 14:47:32
400
原创 组件 v-model 的封装实现原理及 Input 组件的核心实现
https://juejin.cn/post/7204454572890046501
2025-01-08 14:39:53
107
原创 拓扑排序详解以及对应力扣题目链接
在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件: 1.每个顶点出现且只出现一次。 2.若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说。例如,下面这个图:它是一个 DAG 图,那么如何写出它的拓扑排序呢?
2024-09-15 11:43:12
381
原创 Justauth源码分析
2.学到的知识点1.java遍历枚举值2.lombok中的@Builder3.设置http代理(可以方便连接外网等需求)(2)HttpClient设置请求代理4.java enum中INSTANCE的使用5.如何根据给出的url字符串和map对象生成对应的携带参数的url字符串?结果:6.Access Token 和 Refresh Token3.项目的源码分析1.cache和statecache2.request模块(1)整体介绍(2)源码分析(3)整体
2024-09-09 15:26:13
680
原创 代理模式详解
静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类代理对象,不需要实现接口,但是目标对象要实现接口,否则不能用动态代理代理对象的生成,是利用 JDK的API,动态的在内存中构建代理对象动态代理也叫做:JDK代理、接口代理静态代理和 JDK代理模式都要求目标对象是实现一个接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候可使用目标对象子类来实现代理-这就是Cglib 代理。
2024-09-04 19:40:10
1312
1
原创 模板方法详解
在模板方法模式的父类中,可以定义一个方法,它默认不做任何事,子类可以视情况要不要覆盖它,该方法称为“钩子”。还是用上面做豆浆的例子来讲解,比如,我们还希望制作纯豆浆,不添加任何的配料,请使用钩子方法对前面的模板方法进行改造。可以看到ConfigurableApplicationContext对象的运行类型为AnnotationConfigApplicationContext。
2024-09-02 10:58:51
814
原创 使用session实现单用户多端登录限制
首先获得当前浏览器访问服务器的session,然后根据用户的信息(如id等)在redis中查找,如果找到,并且和查找对应的session不同,则可以判断已经有其他设备登录过了,这个时候就可以把redis中对应用户的session替换为当前的session,这个时候就代表其他设备的用户被强制下线了,当前设备成功登录。如果当我们首次访问系统时,此时redis中是没有存放我们的sessionId值的。此时的sessionId也被改变了,另一个用户将会被强制下线。
2024-09-01 20:17:52
565
原创 如何根据给出的url字符串和map对象生成对应的携带参数的url字符串?
【代码】如何根据给出的url字符串和map对象生成对应的携带参数的url字符串?
2024-08-20 12:01:43
196
原创 建造者模式
/ 产品 ——》 Product@Override'}';// 抽象的建造者// 将建造的流程写好,抽象方法// 建造房子,然后将产品(房子)return。
2024-08-15 10:55:57
553
原创 Outh2四种授权模式详解
1.oauth 2.0 简介2.各个角色介绍3.四种模式4.授权码模式①:获取授权码②:申请授权接口③:申请token④:申请token接口5.简单模式6.密码模式7.客户端模式
2024-08-13 23:00:53
290
原创 linux中netstat命令详解及常见用法
在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询。
2024-03-15 09:57:33
3575
1
原创 route add报错SIOCADDRT Network is unreachable
横线部分就是主机的地址范围。所以可以知道gateway的ip范围需要是10.174.240.0到10.174.247.255之间。原因是,添加静态路由规则的时候,需要保证gateway(gw)的IP和eth0(本机IP)在同一个网段内。,其中mask是子网掩码,它结合ip地址使用,把ip地址划分为网络地址和主机地址。在实际的使用过程中,有同学反馈在执行。对于我们这个例子而言,子网掩码是。做&运算,得到网络地址是。先看下我们的主机配置,
2024-03-14 18:23:05
5132
原创 linux中ifconfig指令详解
是中用来查询和配置网络接口卡(网卡)的命令,英文全称是network interfaces configuring。使用命令对网卡所做的配置都是临时配置,重启之后都会被还原的。如果要永久配置网卡则需要通过修改配置文件的方式。
2024-03-14 17:07:41
933
原创 Sentinel的控制台部署在服务器,控制台一直读取不到本机的服务的原因
而且在这个服务器部署的sentinel控制台上面拿不到远程服务器Nacos里面配置的限流规则,但是在本机启动一个dashboard项目就可以看到Nacos里面配置的。
2024-03-06 15:49:36
942
原创 Nacos的注册中心、配置中心、配置隔离、服务隔离
2. application.yml3. 启动类首先我们来看一下,微服务架构下关于配置文件的一些问题:基于上面这些问题,我们就需要配置中心的加入来解决这些问题,配置中心的思路是:2. bootstrap.yml注意:客户端配置文件的名称必须为bootstrap/ application 的应用场景:比 优先加载,应用于系统级别参数配置,一般不会变动;应用于SpringBoot项目的自动化配置;案例:3. 启动类4. controller (@RefreshScope注解**)**
2024-02-28 19:09:43
1661
原创 mybatis中的keyProperty属性详细介绍
在mybatis的配置文件中,keyProperty 和 useGeneratedKeys 往往搭配使用。useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。具体用法: useGeneratedKeys="true" keyProperty="id"
2024-02-20 10:22:39
3511
原创 springboot注解及原理详解
7.默认参数的key名称是方法里的参数名称,但通过@RequestParam可以自定义另外一个,因为在某些条件下,方法名称固定下来不可以修改了,但请求的参数又需要通过另外一个参数key名称来传递,这样就可以通过这样的方式来实现。6.@RequestParam还可以在参数为空的情况下,为我们设置一个参数的默认值,如图所示,可以看出来,没有参数的情况下,获取到的就是默认值。2.通过idea工具启动web项目,然后通过浏览器访问测试效果,不带参数则获取的参数为null,但页面可以正常显示,请求可以正常的执行。
2023-12-27 19:48:05
3995
原创 关于Spring Boot 2.7后WebSecurityConfigurerAdapter的过期问题,SpringSecurity的最新最全配置
进入springboot 2.7 后,一个重要的类WebSecurityConfigurerAdapter过期了。
2023-11-29 14:54:32
2817
原创 一个初始springboot项目最基本的配置
这个parent是springboot最最核心的引入,所有的配置都在里面,并且是springboot项目必须引入的。现在都是web项目居多,我们还需要引入一个需要的依赖。我们也可以引进测试类,方便测试。最后我们可以引入插件。
2023-11-29 08:41:51
374
原创 一主二从三哨兵高可用集群启停脚本
②:我们将 sentinel26380.conf 复制为 sentinel26380.conf.bak 备份起来,同时 sentinel26381.conf,sentinel26382.conf 也这样做。①:我们先将 redis6380.conf 复制为 redis6380.conf.bak 备份起来,同时 redis6381.conf,redis6382.conf 也这样做。④:然后创建脚本文件 vim shutdown-redis-sentinel.sh。
2023-11-13 14:40:18
68
原创 公平锁下的hasQueuedPredecessors原理解析
理解了上面那个,我们再来介绍一下hasQueuedPredecessors方法,该方法的作用是,判断在当前线程之前是否有其他线程在排队,在ReentrantLock公平锁模式下的tryAcquire()内会调用这个方法。以上就是AQS,线程的入队方法,注意看上述代码中我用“======”标出来的分割线,当执行完compareAndSetTail(t, node)后,t.next = node 还没执行,那么。即,tail的prev连上了,next还没连上。②:线程已入队(已经执行过入队方法了)
2023-10-12 19:37:11
167
原创 自定义线程池(详解)
/自定义拒绝策略接口@Slf4j // 自定义线程池 // 用泛型T,因为有Runnable和Callable两种情况 public class ThreadPool {// 任务队列 private BlockingQueue < Runnable > taskQueue;// 工作线程集合 private HashSet < Worker > workers = new HashSet < >();
2023-10-05 21:08:00
122
原创 对力扣31题,下一个排列问题的看法
①字典序字典序就是按照字典中出现的顺序对字符进行排序。②全排列给定多个字符,可以按照任意顺序进行排列,所有排列称为全排列。例如字符串“abc”的全排列包括:“abc”、“cab”、“cba”、“bca”、“bac”、“acb”。③字典序全排列对于给定多个字符的全排列里,每一种排列对应一个字符串,如果这些字符串按照字符串大小的顺序进行排序,那么就这种排序是基于字典序的全排列,也就是对给定字符的全排列按照字典序进行排序。
2023-10-02 11:25:41
73
1
原创 设计模式——享元模式
①如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用;②对象的大多数状态可以是外部状态,如果删除了对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑享元模式//false```java//false①如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用;②对象的大多数状态可以是外部状态,如果删除了对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑享元模式。
2023-09-19 20:42:34
77
1
原创 LongAdder源码分析
LongAdder的基本思路就是分散热点,将value值分散到一个数组中,这个数组是他的父类Striped64类的一个变量transient volatile Cell[] cells,不同线程会命中到数组的不同槽中,各个线程只对自己槽中的那个值进行CAS操作,这样热点就被分散了,冲突的概率就小很多。如果要获取真正的long值,只要将各个槽中的变量值累加返回。
2023-09-18 17:07:08
164
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人