- 博客(45)
- 收藏
- 关注
原创 Redis使用
造成缓存雪崩问题的原因是是大量key拥有了相同的过期时间,比如对课程信息设置缓存过期时间为10分钟,在大量请求同时查询大量的课程信息时,此时就会有大量的课程存在相同的过期时间,一旦失效将同时失效,造成雪崩问题。所以,为了避免缓存穿透我们需要缓存预热将要查询的课程或商品信息的id提前存入布隆过滤器,添加数据时将信息的id也存入过滤器,当去查询一个数据时先在布隆过滤器中找一下如果没有到到就说明不存在,此时直接返回。如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。
2023-08-26 18:24:12
844
原创 第三方支付
1、请求学习中心服务创建选课记录2、请求订单服务创建商品订单、生成支付二维码。3、用户扫码请求订单支付服务,订单支付服务请求第三方支付平台生成支付订单。4、前端唤起支付客户端,用户输入密码完成支付。5、第三方支付平台支付完成发起支付通知。6、订单支付服务接收第三方支付通知结果。7、用户在前端查询支付结果,请求订单支付服务查询支付结果。8、订单支付服务向学习中心服务通知支付结果。9、学习中心服务收到支付结果,如果支付成功则更新选课记录,并添加到我的课程表。
2023-08-18 18:07:15
569
原创 页面静态化(模板引擎Freemarker)
1、浏览器请求web服务器2、服务器渲染页面,渲染的过程就是向jsp页面(模板)内填充数据(模型)。3、服务器将渲染生成的页面返回给浏览器。所以模板引擎就是:模板+数据=输出,Jsp页面就是模板,页面中嵌入的jsp标签就是数据,两者相结合输出html网页。
2023-08-12 10:08:27
763
原创 GateWay网关使用
3.请求路径POST {{gateway_host}}/content/course/list?1、微服务启动,将自己注册到Nacos,Nacos记录了各微服务实例的地址。2、网关从Nacos读取服务列表,包括服务名称、服务地址等。3、请求到达网关,网关将请求路由到具体的微服务。2.配置文件,注册配置到Nacos。
2023-08-08 15:30:19
300
原创 Nacos使用
Dataid举例:content-service-dev.yaml配置文件 由(content-service)-(dev). (yaml)三部分组成。content-service:第一部分,它是在application.yaml中配置的应用名,即spring.application.name的值。各配置文件 的优先级:项目应用名配置文件 > 扩展配置文件 > 共享配置文件 > 本地配置文件。dev:第二部分,它是环境名,通过spring.profiles.active指定,服务注册中心和配置中心。
2023-08-08 14:50:16
91
原创 数据库篇-mysql
面试题1:如何定位慢查询面试题2:一个SQL语句执行很慢, 如何分析面试题3:了解过索引吗?(什么是索引) 索引的底层数据结构了解过嘛?面试题4:什么是聚簇索引什么是非聚簇索引?知道什么是回表查询嘛?面试题5:知道什么叫覆盖索引嘛?面试题6:MYSQL超大分页怎么处理?面试题7:索引创建原则有哪些?面试题8:什么情况下索引会失效?面试题9:谈一谈你对sql的优化的经验面试题10:事务的特性是什么?可以详细说一下吗?面试题11:并发事务带来哪些问题?怎么解决这些问题呢?
2023-07-25 12:10:33
73
原创 Spring框架篇-Mabits
面试题1:Spring框架中的单例bean是线程安全的吗?面试题2:什么是AOP,你们项目中有没有使用到AOP。面试题10:Mybatis的一级、二级缓存用过吗?面试题3:Spring中事务失效的场景有哪些。面试题4:Spring的bean的生命周期。面试题6:Springboot自动配置原理。面试题7:Spring 的常见注解有哪些?面试题9:Mybatis是否支持延迟加载?面试题5:Spring中的循环引用。面试题8:mybatis执行流程?
2023-07-19 18:55:15
77
原创 微服务springcloud
Spring Cloud 主要是基于 Spring Boot 构建的,可以轻松地将 Spring Boot 应用程序转换为分布式系统,通过提供一组开箱即用的组件,方便地进行分布式系统开发。Spring Cloud 是一个基于 Spring Boot 的分布式系统开发工具,它为开发人员提供了一套完整的解决方案,以便于快速构建分布式应用程序,包括。专注于快速方便的开发。
2023-05-10 11:34:39
73
原创 Java基础
需要注意的是,Java 中的 List、Set 和 Map 接口都有不同的实现类,可以根据具体需求选择不同的实现类,例如 ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap 等。因此,在判断对象是否相等时,一般需要先比较它们的哈希码,如果哈希码相同,再比较它们的实际内容,以确保判断的准确性。它也提供了一些特殊的集合类型,如不可修改的集合、线程安全的集合、只读的集合等,可以通过Collections的静态方法来创建这些特殊的集合类型。
2023-05-08 12:57:11
139
原创 SpringBoot
Spring Boot的核心注解是。:标识该类是Spring Boot应用程序的配置类,用于替代传统的XML配置文件。:自动配置注解,通过扫描classpath中的jar包,根据引入的依赖自动配置Spring框架。:自动扫描注解,用于包括@Controller、@Service、@Repository和@Configuration等注解。除了以上三个核心注解外,还包含了其他常用的注解,如@Import等,用于进一步配置和扩展Spring Boot应用程序。运行Spring Boot有哪几种方式?
2023-05-06 21:12:49
695
原创 Spring
Spring的IOC和AOP机制?Spring的IOC和AOP机制?Spring框架的两个核心机制是IOC(控制反转)和AOP(面向切面编程)。IOC(控制反转)是指将对象的创建和依赖关系的维护由应用程序转移到Spring框架中。这意味着,这样可以降低应用程序的耦合度,使代码更易于维护和测试。在传统的程序设计中,当调用者需要被调用者的协助时,通常由调用者来创建被调用者的实例。但在spring里创建被调用者的工作不再由调用者来完成,因此控制反转(IoC创建被调用者实例的工作通 常由。
2023-05-06 19:39:17
261
原创 计算机网络
1. 网络分层结构1. 网络分层结构计算机网络体系大致分为三种,七层模型、TCP/IP。一般面试的时候考察比较 多的是五层模型。在两个相邻节点之间传送数据时,,在两个相邻节点间的链路上传送帧。在两个相邻节点之间传送数据时,,在两个相邻节点间的链路上传送帧。2. 三次握手三次握手是指在TCP/IP协议中,建立一个TCP连接时,需要客户端和服务器之间交换三个包(数据段)以确认连接的建立。这三个包分别是SYN(同步序列编号)、SYN-ACK(同步序列编号和确认编号)和ACK(确认)。
2023-04-26 21:11:47
147
原创 Java并发面试题
1、Java中实现多线程有几种方法 继承Thread类:创建一个新的类并继承Thread类,在类中重写run()方法,run()方法中包含了需要线程执行的代码。 实现Runnable接口:创建一个类,实现Runnable接口,在该类中实现run()方法,将该类的实例传入Thread类的构造函数中创建一个新线程。 实现Callable接口:与Runnable接口相似,但是run()方法返回值为void的特点不同,Callable接口的call()方法可以返回执行结果。 使用
2023-04-19 15:13:03
313
原创 MYSQL CASE WHEN 函数 mod()函数 626. 换座位
对于所有座位 id 是奇数的学生,修改其 id 为 id+1,如果最后一个座位 id 也是奇数,则最后一个座位 id 不修改。对于所有座位 id 是偶数的学生,修改其 id 为 id-1。
2023-04-13 13:16:54
133
原创 MYSQL 绝对值函数abs(),if()判断语句 610. 判断三角形
思路,判断三角形规则,任意两边之差小于第三边,任意两边之和大于第三边即可。
2023-04-12 13:52:00
176
原创 JVM有关问题
JVM(Java虚拟机)加载class文件的原理机制主要分为以下三个步骤:1.类的加载:当程序使用一个类时,如果该类还没有被加载到内存中,JVM会通过类加载器(ClassLoader)加载该类。类加载器会根据类的全限定名查找并读取相应的class文件,然后将其转换为JVM能够理解的格式,并存放在方法区中。在方法区中,JVM会为该类生成一个Class对象,用于代表该类在JVM中的存在。2.类的链接:类加载后,JVM还需要对该类进行链接操作,主要包括验证、准备和解析三个阶段。3.类的初始化:链接完成后,JVM会
2023-04-10 17:23:11
135
原创 MYSQL UNION ALL()
题目描述:在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。RequestAccepted 表:+----------------+---------+| Column Name | Type |+----------------+---------+| requester_id | int || accepter_id | int || accept_date | date
2023-04-10 13:19:02
86
原创 数据结构 从未排序的链表中删除重复项
对于每个新遇到的元素,检查它是否在哈希表中:如果是,我们将其删除;否则将其放在哈希表中。链表 = 12->11->12->21->41->43->21。链表 = 12->11->12->21->41->43->21。第二次出现 o 12 和 21 被删除。
2023-04-09 15:31:52
328
原创 数据结构 检测链表中的循环或循环
此算法用于在链表中查找循环。它使用两个指针,一个指针的移动速度是另一个指针的两倍。较快的指针称为较快指针,另一个称为慢指针。这个想法是在哈希图中插入节点,每当遇到。已经存在的节点时,都会返回 true。O(N),只需要遍历一次循环。
2023-04-09 14:35:22
166
原创 数据结构 反转链表 给定指向链表头节点的指针,任务是反转链表。
这个想法是存储堆栈中的所有节点,然后制作一个反向链表。O(N),遍历大小为 N 的链表。
2023-04-09 13:56:31
67
原创 MYSQL 临时表 with as row_number() over() 601. 体育馆的人流量
1.先按照people>=100进行排序,并把排序的序号标识出来,用 row_number() over()函数。2:这时我们只需要按照rk来进行分组,找出数量>=3的数据,将上表查询的数据用作临时表。结题的灵魂:对于连续的id与重新排序后的id的差值是固定的。
2023-04-09 13:00:54
68
原创 MYSQL ROUND() SUM() COUNT() 585. 2016年的投资
1.先按照TIV_2015分组,统计个数要大于等于2,因为如果TIV_2015是唯一的,则肯定不是我们想要的数据。3.将两部分合并,统计 tiv_2016的总和并保留两位小数。2:按照进度和维度分组,找出唯一的经度和维度。
2023-04-08 13:39:19
1220
原创 数据结构 反转队列的前 K 个元素
O(N + k),其中“n”是队列中的元素总数,“k”是要反转的元素数。这是因为首先将整个队列清空到堆栈中,然后以相同的方式清空和排队。输入:10,20,30,40,50,60,70,80,90,100和k=5。输出:50,40,30,20,10,60,70,80,90,100。O(k),其中 k 是要反转的元素,因为堆栈用于存储值以反转。
2023-04-07 20:10:15
259
原创 数据结构 使用队列实现堆栈
操作中,如果 q2 为空,则除最后一个元素外的所有元素都将移动到。方法3:采用一个单端队列实现栈。方法1:使用两个队列实现栈。最后,最后一个元素从。
2023-04-07 17:09:50
269
原创 MYSQL COUNT()函数 HAVING(函数)570. 至少有5名直接下属的经理
1.先找到经理数量大于等于5的managerId。2.按照经理id找到下属的名字。
2023-04-07 14:03:32
299
原创 Java 虚拟机篇
**元空间**是 Hotspot 虚拟机对 JVM 规范的另一种实现(1.8 以后),使用本地内存作为这些信息的存储空间。中:当一个**类加载器对象**,这个类加载器对象加载的所有**类对象**,这些类对象对应的所有**实例对象**都。* **永久代**是 Hotspot 虚拟机对 JVM 规范的实现(1.8 之前)* **方法区**是 JVM 规范中定义的一块内存区域,用来存储。* X,Y 的类元信息是存储于元空间中,无法直接访问。中:内存释放**以类加载器为单位**,调用,或者频繁的循环代码,由。
2023-04-06 17:44:11
618
原创 数据结构 使用栈计算后缀表达式
如果将表达式转换为中缀表达式,它将是 2 + (3 * 1) – 9 = 5 – 9 = -4。形式“a b 运算符”(ab+) 的表达式,即当一对操作数后跟一个运算符时。给定一个后缀表达式,任务是计算后缀表达式。
2023-04-06 16:54:18
265
原创 数据结构 Java 重新排列数组,是的负数和正数分开排列(不考虑顺序)
O(n) 其中 n 是给定数组中的元素数。因为我们使用循环遍历 N 次,因此它将花费我们 O(N) 时间。O(1),因为我们没有使用任何额外的空间。
2023-04-05 17:07:06
227
原创 数据结构 java 合并两个排序好的数组
的长度时,首先是循环中断,其次是循环将所有元素从 arr1 复制到。O((m+n) log(m+n)),arr3 的整个大小为 m+n。从 Array1 中选取剩余元素并插入到 Array3 中,当。方法1:暴力解法,将两个数组合成一个数组,在对其进行排序。' 和 'k' 进行比较,这里的 'O(1),不使用多余的空间。选择下一个较小的元素,即。选择下一个较小的元素,即。选择下一个较小的元素,即。选择下一个较小的元素,即。,最后我们合并了排序的。中,并在比较“i”和“中,并在比较“i”和。
2023-04-05 16:37:55
1525
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人