- 博客(92)
- 问答 (18)
- 收藏
- 关注
原创 MySQL的基础操作
INNER JOIN 也叫内连接,可以简写为JOIN,MySQL中可以通过JOIN 取两张表的交集,使用JOIN的时候需要通过ON指定两张表的关联字段,一般是两张表中数据相同的字段。注意:在一条SQL中可以编写多个JOIN关联更多的表,但每个JOIN一定要指定对应的ON关联字段,否则会出现笛卡尔积,即:tbl1表中的每条数据都会与tbl2中的每条数据进行关联,会导致大量的数据结果。在MySQL中JOIN分为INNER JOIN 、LEFT JOIN 、RIGHT JOIN 、FULL OUT JOIN。
2025-05-26 19:22:56
868
1
原创 Redis 中跳表
在定位到对应节点之后,具体是在当前节点创建数据还是增加一个层级这个是随机的,这里假设设置为2 层定位层级后,再将每一层的链表节点进行补齐,就是在 40 与 50 之间插入一个新的链表节点 48,插入 过程与链表插入是一样的。删除时,同样从最高层开始查找要删除的节点,并在各层中更新指针,以保持跳表的结构。跳表,一句话概括:就是一个多层索引的链表,每一层索引的元素在最底层的链表中可以找到的元素(这一点 和B+树是一样的),如下图所示,这就是一个简单的跳表实现了,每个颜色代表一层,绿色的就是链表的最底层了。
2025-05-26 15:33:02
367
原创 Redis集群的脑裂问题
分布式系统就像一个团队在干活,如果发生了脑裂,就好比这个团队突然因为某些原因,比如通信出了问题,分成了几个小团体,每个小团体都以为自己是整个团队,都在按自己的方式工作,各自为政,对同一件事有不同的决策和做法, 就像有的说要这么干,有的说要那么干。min-salves-max-lag:设置从节点的最大延迟(以秒为单位),如果从节点的延迟超过这个值,则该从节点不会被计入 min-slaves-to-write 的计数中。写哪都会导致数据不一致。例如:发生了网络分区,主节点与哨兵、从节点分区了。
2025-05-26 14:27:28
267
原创 Spring生态的核心思想
AOP通过动态代理实现日志、事务等通用逻辑的横向切入。是用于干预Bean创建过程的核心接口。Spring Boot的自动装配基于。,它通过容器管理对象的生命周期和依赖关系。中的自动配置类,通过条件判断决定是否生效。,使得业务逻辑与系统服务(如事务)解耦。在Spring框架中,Spring的核心是。在方法调用前后开启/提交事务。简化JDBC操作,其核心在于。注解与AOP结合,利用。对Bean进行增强。
2025-05-23 17:43:16
481
2
原创 Linux系统常用指令
本文详细介绍了Linux系统中常用的命令和操作,涵盖了文件与目录操作、文本处理与管道、系统监控与进程管理、权限与用户管理、网络调试与工具、开发实用命令以及实战场景案例。文件与目录操作包括列出目录内容、切换目录、创建和删除目录、复制和移动文件等。文本处理与管道部分介绍了如何使用sed、awk、sort和uniq等工具进行文本处理,以及如何使用管道和重定向。系统监控与进程管理部分讲解了如何查看系统资源占用、管理进程和后台运行程序。权限与用户管理部分涉及文件权限修改、用户和组管理。网络调试与工具部分介绍了测试网络
2025-05-23 16:28:06
699
原创 Python中的组合数据类型
是指一系列的按特定顺序排列的元素组成。使用[]定义列表,元素与元素之间使用英文的逗号分隔,列表中的元素可以是任意的数据类型。最后一个for循环for index,item in enumerate(lst,1)将序号设置为从1开始,但并没有改变索引,索引依然从0开始。
2025-05-19 19:50:44
641
原创 Java并发编程:深入浅出掌握多线程艺术
并发编程是通过创建多个执行线程来充分利用多核CPU的计算能力,提升系统吞吐量、改善用户体验和提高资源利用率。Java中的并发编程涉及线程的创建与管理,如通过Thread类实现多线程任务。然而,多线程环境下共享资源的访问可能导致线程安全问题,如数据竞争、死锁和活锁。为解决这些问题,Java提供了多种同步机制,如synchronized关键字、ReentrantLock和读写锁等。此外,Java并发工具类如ConcurrentHashMap、CopyOnWriteArraySet和CountDownLatch等
2025-05-14 15:26:34
407
1
原创 解释 RESTful API
实现资源的 CRUD 操作:针对每个资源,实现对其的创建(Create)、读取(Read)、更新(Update)、删除(Delete)操作,分别对应HTTP的POST、GET、PUT、DELETE方法。编写API端点处理逻辑:使用编程语言(如Python、Node.js)编写处理API请求的逻辑,包括对请求的解析和响应的构建。编写文档和测试API:提供清晰的API文档,说明每个端点的用法和参数,编写单元测试和集成测试来确保API的可靠性和安全性。部署API:将API部署到服务器上,确保其可用性和性能。
2025-05-14 14:20:00
213
原创 Python基础入门
本文介绍了Python中的数据类型及其转换。数值型包括整数、浮点数和复数,整数可以用不同进制表示,浮点数存在尾数不确定问题。字符串可以是单行或多行,支持转义字符和索引操作。布尔类型表示真或假,非零数值为真。数据类型之间可以隐式或显式转换,如布尔转整数、字符串转数值等,但转换时需注意字符串中的非数字字符会导致异常。eval函数用于执行字符串中的Python表达式,常与input函数结合使用。此外,还介绍了算术、赋值、比较和逻辑运算符及其优先级。
2025-05-14 14:18:19
245
原创 23种设计模式
编写高质量代码时,需关注可维护性、可读性、可扩展性、灵活性、简洁性、可复用性和可测试性等标准。编程方法论中,面向对象设计思想、设计原则、设计模式和编码规范是重要工具。设计原则包括单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则和迪米特法则,这些原则有助于提高代码的内聚性和降低耦合性。设计模式分为创建型、结构型和行为型,如单例模式、工厂模式、代理模式、观察者模式等,它们为解决常见设计问题提供了标准化方案。通过遵循这些原则和模式,开发者可以编写出更高效、更易维护的代码。
2025-05-12 16:30:49
1073
原创 递归快速获取机构树型图
一般组织架构都会有层级关系,根部门的parentId一般设置为null或者0等特殊字符,而次级部门及以下的parentId则指向他们父节点的id。以此为基础,业务上经常会有查询整个组织架构层级关系的需求,返回对象中的children属性用来存储子机构的集合,从而形成树型结构。1、获取所有根节点,根节点的集合就是最终返回对象的集合的元素数量size。这种情况一般使用递归写法,能快速完成需求。3、递归设置子节点的子节点集合。2、设置根节点的子节点集合。
2024-09-21 12:49:46
325
3
原创 如何高效记录并整理编程学习笔记?
只做笔记不去看,很容易就忘了,最好使用云文档类型,手机随时就可以看,也可以发表到csdn。手机电脑都可以看,随时同步笔记。做好清晰的标题,按照知识去分类。
2024-08-12 22:23:41
243
2
原创 使用自定义注解和AOP解决登录校验问题
在不改变源代码或者很少改变源代码的情况下,增强类的某些方法。在业务代码之前设置 切入点创建切面类,也就是比如登录校验的某些公共方法切面类从切入点切入流程,形成切面。
2024-08-10 22:20:30
361
原创 “八股文”在实际工作中是助力、阻力还是空谈?
首先,当前一份工作甚至一天几百份简历,HR都不会正眼瞧你,当你的简历触发了很多诸如:大数据量、高并发等关键词,HR才会多看一眼,并把你的简历送到技术那里筛选,如果企业是真的想要招人,便会给许多人一次面试的机会,在这种僧多肉少的情况下,面试官会觉得他们的时间很宝贵,这时,随便问几个常见的八股文的问题,就是对他们来说最快的筛选人的机会,根本不用费脑子去看你的项目,去感受你的能力,只要你答不对那也不会有后续了,所以八股文对求职者还是至关重要的。spring 春天;spring 春天;
2024-08-10 21:44:42
377
原创 MySQL中的锁
也称当前读, 读取的是最新版本, 并且对读取的记录加锁, 阻塞其他事务同时改动相同记录。select lock in share mode (共享锁)、select for update (排他锁)、update (排他锁)、insert (排他锁/独占锁)、delete (排他锁)、串行化事务隔离级别都是当前读。
2024-07-17 10:11:18
910
原创 MySQL MVCC原理
MVCC(Multi-Version Concurrency Control ,多版本并发控制)进行普通的SEELCT查询时才生效。它指的就是在使用读已提交、可重复读这两种隔离级别的事务在执行普通的SELECT操作时访问记录的版本链的过程,这样子可以使不同事务的读-写、写-读操作并发执行,从而提升系统性能。
2024-07-16 22:59:35
1272
1
原创 MySQL集群、Redis集群、RabbitMQ集群
MySQL-MMM 是 Master-Master Replication Manager for MySQL(mysql 主主复制管理器)的简称。脚本)。MMM 基于 MySQL Replication 做的扩展架构,主要用来监控 mysql 主主复制并做失败转移。其原理是将真实数据库节点的 IP(RIP)映射为虚拟 IP(VIP)集。
2024-07-15 22:05:24
2246
原创 Kubernetes
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的使用范围广泛。各个组织是在物理服务器上运行应用程序。由于无法限制在物理服务器中运行的应用程序资源使用,因此会导致资源分配问题。虚拟化技术允许你在单个物理服务器的 CPU 上运行多台虚拟机(VM)。虚拟化能使应用程序在不同 VM 之间被彼此隔离,且能提供一定程度的安全性, 因为一个应用程序的信息不能被另一应用程序随意访问。
2024-07-15 15:17:58
722
原创 RabbitMQ
RabbitMQ 是一个消息代理:它接受并转发消息。生产仅仅意味着发送,发送消息的程序是生产者。队列是 RabbitMQ 中邮箱的名称,尽管消息通过 RabbitMQ 和您的应用程序流动,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制,它本质上是一个大型消息缓冲区。许多生产者可以发送消息到一个队列,许多消费者可以尝试从一个队列接收数据。消费具有与接收类似的含义。消费者是一个主要等待接收消息的程序生产者、消费者和代理不必驻留在同一主机上;
2024-07-14 20:42:48
2208
原创 缓存与分布式锁
Spring Cache利用了AOP,实现了基于注解的缓存功能,并且进行了合理的抽象,业务代码只需要简单地加一个注解,就能实现缓存功能了。
2024-07-14 16:34:58
785
原创 SpringCoud组件
网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。Spring Cloud Gateway 特点: 基于 Spring5,支持响应式编程和 SpringBoot2.0 支持使用任何请求属性进行路由匹配 特定于路由的断言和过滤器 集成 Hystrix 进行断路保护 集成服务发现功能 易于编写 Predicates 和 Filters 支持请求速率限制 支持路径重写。
2024-07-14 14:02:53
858
原创 本地事务和分布式事务
:一系列的操作整体不可拆分,要么同时成功,要么同时失败。:数据在事务的前后,业务整体一致。转账。A:1000;B:1000;转 200;事务成功:A:800 B:1200:事务之间互相隔离。隔离级别的一个核心问题是:一个事务的执行过程和结果是否会影响到其他正在执行的事务。可串行化是最高级别的隔离,即事务之间。(多个并行的事务的结果与一个一个串行执行的结果一样):一旦事务成功,数据一定会落盘在数据库。
2024-07-13 22:32:36
837
原创 接口幂等性
比如说支付场景,用户购买了商品支付扣款成功,但是返回结 果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条...,这就没有保证接口的幂等性。
2024-07-13 16:18:41
403
原创 Redis
redis是一个开源的key-value存储系统。Redis不仅仅是一个简单的缓存系统,还可以用作消息队列、计数器等功能。Redis 是单线程+多路 IO 复用技术。多路复用是指使用一个线程来检查多个文件描述符(socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞知道超时。得到就绪状态后进行真正的操作,可以在同一个线程里执行。内存存储:Redis主要将数据存储在内存中,因此读写速度非常快。
2024-06-02 22:58:02
1040
原创 十、内部排序,排序算法
10.1概述排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。内部排序:待排序记录存放在计算机随机存储器中进行的排序过程;外部排序:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。10.2插入排序10.2.1直接插入排序它是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。时间复杂度是O(n^2)10.2.2其他插入排序(1)折半插入排序插入
2022-03-29 16:57:59
927
原创 树和二叉树
树形结构是一种重要的非线性数据结构,是以分支关系定义的层次结构。1.1树的定义和基本术语树是n个结点的有限集。在任意一棵非空树中:1.有且仅有一个特定的称为根(root)的结点。2.当树的结点数量大于1时,其余结点可分为m个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树。树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度。度为0的结点称为叶子或者终端节点。...
2022-03-25 14:23:26
1663
原创 四、串、数组和广义表
4.1串类型的定义串(或字符串)是由零个或多个字符组成的有限序列。串中字符的数目n称为串的长度,零个字符串的串称为空串。串中任意个连续的字符组成的子序列称为该串的子串。包含字串的串相应的称为主串。...
2022-03-23 14:09:40
325
原创 三、栈和队列
3.1栈3.1.1抽象数据类型栈的定义栈是限定仅在表尾进行插入或删除操作的线性表。因此,表尾端称为栈顶(top),相应的,表头端称为栈底(bottom)。不含元素的空表称为空栈。栈是后进先出的线性表。3.1.2栈的表示和实现与线性表类似,栈也有两种存储表示方法。顺序栈和链式栈。顺序栈:栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。非空栈中的栈顶指针始终在栈顶元素的下一个位置上。链式栈3.
2022-03-23 10:45:50
589
原创 二、线性表
2.1线性表的类型定义线性表:一个线性表是n个数据元素有限序列。在稍复杂的线性表中,一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录,含有大量记录的线性表又称为文件。线性表的每个数据元素都有一个确定的位置,它的长度可以根据需要增长或缩短,即不仅可以访问也可插入和删除。2.2线性表的顺序表示和实现线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。称作顺序存储结构或顺序映像,通常称这种存储结构的线性表为顺序表。特点是:为表中相邻的元素a1和a2赋予相邻
2022-03-22 16:01:31
1183
原创 一、数据结构基本概念和术语
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据:是对客观事物的符号表示。数据元素:是数据的基本单位,可由若干个数据项组成。数据对象:是性质相同的数据元素的集合,是数据的一个子集。各种数据元素之间的关系称为结构。集合:结构中的不同元素之间除了“同属一个集合外,别无其他关系”。线性结构:结构中的数据元素之间存在一个对一个的关系。树形结构:结构中的数据元素之间存在一个对多个的关系。图状结构或网状结构:结构中的数据元素之间存在多个对多个之间的关系。结构中定义的“
2022-03-22 10:59:20
683
1
原创 java8新特性lambda等
1.lambda表达式为什么使用Lambda表达式?lambda表达式是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码,可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使java的语言能力得到了提升。lambda表达式从匿名类到lambda的转换//匿名内部类Runnable r1 = new Runnable(){ @Override public void run(){ System.out.println("Thanks
2022-03-21 15:58:45
3232
原创 Eureka服务发现设计
一、随着服务的启动,许可证和组织服务将通过Eureka服务进行注册。这个注册过程将告诉Eureka每个服务实例的物理位置和端口号,以及正在启动的服务ID。二、当许可证服务调用组织服务时,许可证服务将使用Netfix Ribbon库提供客户端负载均衡。Ribbon将联系Eureka服务去检索服务位置信息,然后在本地进行缓存。三、Netfix Ribbon库将定期对Eureka服务进行ping操作,并刷新服务位置的本地缓存。任何新的组织服务实例现在都将在本地许可服务可见,而任何不健康的实例都将从本地
2022-03-18 16:58:38
291
空空如也
在git提交时,总会出现这一堆日志文件,并不想提交,怎么不让他显示
2022-08-11
idea使用主题插件时颜色的修改
2022-07-22
从git上拉取代码后无法加载maven
2022-05-10
微服务启动失败Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
2022-02-27
微服务启动失败,Failed to configure a DataSource
2022-02-27
httpmessagenotreadableexception异常
2021-12-09
笔记本电脑推荐,编程
2021-12-06
element实现表头筛选
2021-12-06
后端一次获取数据,前端分页展示
2021-12-02
后端得到数据,在前端分页展示
2021-12-01
json数组页面遍历的问题呀呀
2021-11-29
前端页面展示数据时,怎样让枚举类起作用
2021-11-30
枚举类在前端页面的选择展示
2021-11-30
按钮事件绑定不起作用
2021-11-30
session的问题
2021-04-26
session的创建问题
2021-04-24
session的问题
2021-04-24
idea测试类加载不出来怎么办?
2021-03-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人