Zookeeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Kafka 和 ZooKeeper 在分布式系统中扮演着不同的角色,并且它们之间有着紧密的合作关系。
Zookeeperzookeeper 是什么?ZooKeeper是一个开源的分布式协调服务,由Apache开发。它主要用于解决分布式系统中的一致性问题,如配置管理、节点选举和分布式锁等。ZooKeeper的主要功能包括:
配置管理:集中管理分布式系统中的配置信息。
命名服务:提供唯一的命名服务,帮助分布式系统中的服务发现,客户端能根据指定名字获取资源或服务的地址,提供者等信息。
分布式锁:实现分布式环境中的锁机制。zookeeper 提供两种锁:独占锁、共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可有多个线程同时读同一个资源,若要使用写锁也只能有一个线程使用。
集群管理:管理集群中的节点 ...
其他简单算法
与树相关的一些问题。
参考文章:
优先级队列(堆)
【算法笔记】二分查找 && 二分答案
数据结构 -栈和队列(Java实现)
第3章栈、队列、数组和矩阵
双指针(java)
算法题 - 求数组的子集合
优先队列(堆)队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。
这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。
PriorityQueue常用接口PriorityQueue的特性Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,此处主要介绍PriorityQueue。
 ...
回溯算法
回溯算法是一种通过系统性试探和回退策略搜索问题解的通用方法,适用于组合优化、约束满足等复杂问题,其核心特征是“能进则进,不进则退”的深度优先搜索机制。
参考文章:
回溯算法详解
什么是回溯算法
图论基础及深度优先遍历(DFS)、广度优先遍历(BFS)
回溯算法详解概念回溯算法,又称为“试探法”。是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。
基本思想基本思想:从一条路往前走,能进则进,不能进则退回来,换一条路再试。
八皇后问题就是回溯算法的典型,第一步按照顺序放一个皇后,然后第二步符合要求放第2个皇后,如果没有位置符合要求,那么就要改变第一个皇后的位置,重新放第2个皇后的位置,直到找到符合条件的位置就可以了。回溯在迷宫搜索中使用很常见,就是这条路走不通,然后返回前一个路口,继续下一条路。回溯算法说白了就是穷举法。不过回溯算法使用剪枝函数,剪去一些不可能到达 最 ...
贪心算法
贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法策略。
参考文章:
贪心算法(Greedy Algorithm)
【算法/训练】:贪心(算法理论学习及实践)
<贪心算法>学习及经典实例分析
贪心算法详解基本定义贪心算法(Greedy Algorithm)是一种分阶段决策策略:在对问题求解时,总是做出在当前看来是最好的选择的算法,也就是当前状态的局部最优解,通过迭代累积这些局部最优解,期望得到全局最优解。其核心特征是 “无后效性”(当前决策不影响后续状态)和 “贪心选择性质”(局部最优可推导全局最优)。贪心算法的核心在于贪心策略的选择,即每一步的最优选择是否能推导出全局最优解。
贪心算法的价值在于其简洁性与高效性,但必须警惕其局限性——局部最优未必全局最优。掌握其适用条件(贪心选择性质+最优子结构)和证明方法,方能灵活应用于任务调度、图论、组合优化等场景。
核心性质贪心算法采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要 ...
动态规划算法
滑动窗口算法可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。
参考文章:
【算法】动态规划
【算法】备忘录法(记忆化搜索)
【算法】动态规划(Dynamic Programming)
动态规划详解动态规划(Dynamic Programming,简称DP)是一种广泛应用于数学、计算机科学和经济学等领域的方法论。其核心思想是通过将复杂问题分解为相对简单的子问题,并存储子问题的解以避免冗余计算,从而显著提高计算效率。
动态规划作为运筹学的一个分支,专注于解决决策过程的最优化问题。20世纪50年代初,美国数学家贝尔曼(R. Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,并基于此创立了动态规划。动态规划的应用范围极为广泛,包括工程技术、经济、工业生产、军事以及自动化控制等多个领域。在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等实际问题中,动态规划均展现出了显著的效果。
算法思想动态规划常常适用于具有重叠子问题和最优子结构性质的问题。其基本思想是将待求解的问题分解为若干个相关联的子问题,先求解子问题,然后利用这 ...
滑动窗口算法
滑动窗口算法可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。
参考文章:
算法07-滑动窗⼝算法
滑动窗口算法精讲(Sliding Window Algorithm)
滑动窗口相关算法题总结
详细讲解一句话总结滑动窗口算法是一种通过维护一个动态窗口来解决问题的技巧,窗口在数据上“滑动”,逐步找到最优解。
核心思想滑动窗口算法的本质是双指针法中的左右指针法,所谓滑动窗口,就像描述的那样,可以理解成是一个会滑动的窗口,每次记录下窗口的状态,再找出符合条件的适合的窗口。它可以将双层嵌套的循环问题,转换为单层遍历的循环问题。使用两个指针一左一右构成一个窗口,就可以将二维循环的问题转化成一维循环一次遍历,相当于通过旧有的计算结果对搜索空间进行剪枝,使时间复杂度从O(n²)降低至O(n),比如经典字符串查找算法Rabin-Karp 指纹字符串查找算法,它本质上也使用了滑动窗口的思想,通过公式推导降低窗口滑动时计算子串哈希值的复杂度。
滑动窗口算法更多的是一种思想或技巧,按照窗口大小是否固定分为固定滑动窗口和变长滑动窗口,可以用来解决一些查找满足一定条件的连续区间的性质(长度等)的问题。 ...
RuoYi
若依框架(RuoYi)是一套基于Java开发的快速开发框架,它提供了许多常用的功能模块和工具,包括用户管理、部门管理、角色管理、菜单管理、字典管理、系统监控、定时任务等。若依框架采用了MVC(Model-View-Controller)的架构模式,使用了Spring Boot、MyBatis等流行的开源框架,可以帮助开发者快速搭建企业级的后台管理系统。若依框架还提供了许多可视化的操作界面,使得开发者可以方便地进行系统配置和管理。
官网地址:若依框架
参考文章:
ruoyi架构那点事
若依框架(前后端分离版)
若依介绍定义若依(RuoYi)是一款基于Spring Boot和MyBatis的Java快速开发框架,主要用于企业级应用系统的开发。它提供了一套完整的后台管理系统解决方案,包括用户权限管理、菜单配置、数据监控等功能,同时支持代码生成器,显著提升开发效率。
核心特点
模块化设计:前后端分离架构,前端可选Vue2/Vue3版本,后端基于Spring Boot。
代码生成器:通过可视化配置自动生成CRUD代码,减少重复劳动。
权限控制:基于RBAC(角色基于访问控制)模型,精细化管理 ...
Mybatis-Plus
MyBatis-Plus和MyBatis是共生的,而非替代品。MyBatis-Plus只做增强不做改变,引入它不会对现有工程产生影响。其会在启动时自动注入基本CRUD(增删改查),性能基本无损耗,直接面向对象操作,使得开发人员能够更加方便地进行数据库操作。
官网地址:Mybatis-Plus
参考文章:Mybtis和Mybatis-Plus区别、MyBatisPlus基础
推荐文章:MyBatis Plus 讲解
Mybatis-Plus 简介MP架构
MP的特性
无侵入:只做增强不做改变,不会对现有工程产生影响
强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作
支持 Lambda:编写查询条件无需担心字段写错
支持主键五种自动生成策略
内置分页插件、代码生成器、全局拦截插件、sql注入剥离器(支持sql注入剥离,防止SQL注入攻击)
快速入门
导入mybatis-plus-boot-starter依赖,dao继承BaseMapper<实体类名>
12345678910<dependency>    <groupId ...
RabbitMQ 组件
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的,支持高并发处理和分布式部署。所有主要的编程语言均有与代理接口通讯的客户端库。RabbitMQ本身支持很多的协议:AMQP,XMPP, SMTP,STOMP,更适合于企业级的开发。它还实现了Broker架构,核心思想是生产者不会将消息直接发送给队列,消息在发送给客户端时先在中心队列排队,通过队列机制实现应用程序间的异步通信与数据传输,常用于流量削峰、系统解耦及异步处理场景。对路由(Routing),负载均衡(Load balance)、数据持久化都有很好的支持。多用于进行企业级的ESB整合。
参考文章:
5.RabbitMQ交换机详解
7.RabbitMQ延时交换机
6.RabbitMQ死信队列
8.RabbitMQ队列详解
9.RabbitMQ消息的可靠性
RabbitMQ 交换机Exchange(X) 可翻译成交换机/交换器/路由器
RabbitMQ交换器 (Exchange)类型
Fano ...
RabbitMQ
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的,支持高并发处理和分布式部署。所有主要的编程语言均有与代理接口通讯的客户端库。RabbitMQ本身支持很多的协议:AMQP,XMPP, SMTP,STOMP,更适合于企业级的开发。它还实现了Broker架构,核心思想是生产者不会将消息直接发送给队列,消息在发送给客户端时先在中心队列排队,通过队列机制实现应用程序间的异步通信与数据传输,常用于流量削峰、系统解耦及异步处理场景。对路由(Routing),负载均衡(Load balance)、数据持久化都有很好的支持。多用于进行企业级的ESB整合。
参考文章:
RabbitMQ
RabbitMQ安装Erlang安装 windows
【超级详细】RabbitMQ安装教程
【详细步骤】Springboot整合RabbitMQ
4.RabbitMQ工作模型
6.RabbitMQ死信队列
10.RabbitMQ集群
RabbitMQ 集群 - 普通集群、镜像集群 ...




