若依微服务集成手机短信验证码登陆 为了响应公司项目的特定需求,增强用户体验与安全性,集成手机短信验证码登录功能至基于若依微服务框架开发的应用中,故创作此篇为未来类似项目提供了可借鉴的实施范例。大致可分为这几个阶段:生成验证码并存储至redis缓存中,发送验证码,用户登陆验证。7.nacos配置短信服务密钥。6.nacos配置请求白名单。2.发送手机验证码接口。3.发送手机验证码接口。4.post请求工具类。8.获取手机验证码测试。
git使用教程——常用命令汇总(附git官网操作手册) GitHub提供的桌面客户端包括用于最常见的存储库操作的图形用户界面,以及用于高级场景的自动更新的Git命令行版本。Git 是一个开源的分布式版本控制系统,它可以在您的笔记本电脑或桌面上辅助进行 GitHub 活动。同步更改(Synchronize Changes),注册仓库书签并交换版本历史记录,重做提交(Redo Commits),消除错误并创建替代历史记录,创建仓库(开始一个新仓库或从现有URL获取一个)组织变更(为一系列提交命名并合并已完成的工作)同步更改(注册仓库书签并交换版本历史)
ChatGPT 报错:Too many requests in 1 hour. Try again later. ——2024.2.19 ChatGPT 报错:Too many requests in 1 hour. Try again later. ——2024.2.19
Eclipse离线安装maven、jetty、svn插件;附百度网盘资源链接 链接:https://pan.baidu.com/s/1zt4-K4AvGZ4EnSqp0vfDGA。Eclipse离线安装maven、jetty、svn插件;
Eclipse导入maven项目或者创建maven项目时,报错Could not calculate build plan: Plugin 4.进入本地仓库中的org/apache/maven目录下 ,删除plugins文件夹(可以备份一份),然后进入你创建的maven项目或导入项目的根路径下(pom文件层级),执行命令。问题:Eclipse导入maven项目或者创建maven项目时,报错Could not calculate build plan: Plugin。2.首先先要排除是不是maven配置文件原因:检查自己maven配置文件是否添加阿里云镜像。1.上述问题大概是项目不能加载此maven插件,在pom文件中添加依赖项。
Java多线程并发面试题 要说线程,必须得先说进程进程:进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。线程:线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。Java中的线程分为两类,分别是daemon线程(守护线程)和user(用户)线程。在JVM 启动时会调用 main 函数,main函数所在的线程就是一个用户线程。其实在 JVM 内部同时还启动了很多守护线程, 比如垃圾回收线程。那么守护线程和用户线程有什么区别呢?
9月13日扒面经 获取锁:当一个进程需要获取锁时,它会向Redis发送一个SET命令,将一个特定的键作为锁的标识,并设置一个唯一的值作为锁的持有者标识,同时设置一个过期时间,以防止锁被永久持有。声明异常时,调用栈上的每个方法都需要添加异常的处理逻辑,这样会导致异常处理的代码变得冗长和繁琐,降低代码的可读性和可维护性。反射也称类的自省,在运行状态,任何一个类都可以动态获取它的所有属性和方法,任何属性都可以调用它的所有方法和属性。重写是子类继承父类去重写父类的方法,相同的方法名,相同的参数列表,访问权限必须比父类更好。
9月12扒面经 JDK 1.7:中 ConcurrentHashmap采用了数组+Segment + 分段锁的方式实现。JDK 1.8:中ConcurrentHashmap采用了数组+链表+红黑树的实现来设计,内部采用大量的CAS操作ConcurrentHashMap的底层结构由多个Segment组成,每个Segment都是一个独立的哈希表。每个Segment都维护了一个数组结构,该数组的每个元素都是一个链表或红黑树。
9月8日扒面经 本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native)方法服务。当有多个线程等待获取锁时,公平锁会按照先来先得的原则,保证等待时间最长的线程最先获取到锁。它可以看作是当前线程所执行的字节码的行号指示器。方法区是比较特别的一块区域,和堆类似,它也是各个线程共享的内存区域,用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
9月9日扒面经 在这个场景中,事务T1持有行A的行级锁并等待行B的行级锁,而事务T2持有行B的行级锁并等待行A的行级锁。Java中基本类型和方法的局部变量存储在栈中,它们的值存储在栈帧中,不需要进行垃圾回收,而对象的引用和实例变量则存储在堆内存中,有垃圾回收机制进行自动回收。IOC的基本功能是通过将对象的创建、管理和依赖注入的控制权交给容器中,从而降低应用程序的耦合度,提高代码的可维护性和可测试性。电商系统,产品类(产品打折的方法),继承产品类的图书类,手机类,子类(重新产品打折的方法,不同的折扣)
9月7日扒面经 事务是数据执行的最小单元,不可以被分割事务 A、B 交替执行,事务 A 读取到事务 B 未提交的数据,这就是脏读。在一个事务范围内,两个相同的查询,读取同一条记录,却返回了不同的数据,这就是不可重复读。事务 A 查询一个范围的结果集,另一个并发事务 B 往这个范围中插入 / 删除了数据,并静悄悄地提交,然后事务 A 再次查询相同的范围,两次读取得到的结果集不一样了,这就是幻读。
Java集合面试 ConcurrentHashMap采用锁分段技术,整个ConcurrentHashMap由一个个Segment组成,Segment通过继承ReentrantLock来进行加锁,所以每次需要加锁的操作锁住的是一个segment,这样只要保证每个Segment是线程安全的,也就实现了全局的线程安全。引入红黑树我认为是这样,当产生hash冲突时会形成链表,当数据多了冲突多了,链表会越来越长,造成链化,此时查询特别耗时间,本来时间复杂度为O(1)结构可能达到O(n),引入红黑树可以优化查询。链表用来解决哈希冲突;
Java基础面试题 两个对象的hashCode()相同,equals()不一定为true.因为在散列表中,hashCoding()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等【散列冲突】
Swagger详解 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网: https://swagger.io/Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
JWT详解 JWT简称JSON Web Token ,也就是通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输。在数据传输过程中还可以完成数据加密、签名等相关处理。基于传统的Session认证。