Hello
Hello, This is Patrick’s blog!关于我
好友博客点一下, 打开宝盒
Xavier
Xavier的博客主页
RocketMQ 的简单使用笔记
RocketMQ 简单使用笔记RocketMQ (Rocket Message Queue) 是一种提供消息队列的中间件, 提供了消息的生产, 储存, 消费功能API
本次学习, 使用 RocketMQ 5.0.0 版本
消息队列消息队列是分布式系统中重要的组件, 当不需要立即获得结果而且并发量又需要进行控制的时候, 就是需要使用消息队列的时候消息队列主要解决了应用耦合, 异步处理, 流量削锋等问题
常见消息队列当前使用较多的消息队列有
RabbitMQ
RocketMQ
ActiveMQ
Kafka
ZeroMQ
MetaMq部分数据库如 Redis, Mysql 等也可实现消息队列的功能
消息队列常见协议
JMS (Java Messaging Service)
STOMP (Streaming Text Orientated Message Protocol)
AMQP (Advance Message Queuing Protocol)
MQTT (Message Queuing Telemetry Transport)
使用场景
应用耦合: 多应用间通过消息队列对 ...
Seata 的简单使用笔记
Seata 简单使用笔记Seata 是 Alibaba 开源的分布式事务组件.分布式事务与本地事务不同, 本地事务是针对单一数据库的操作, 使用 Spring boot 的 @Transactional 注解即可实现, 而分布式事务可能会涉及多个服务多个库, 这就是需要多个服务间的协调.
角色
TC (Transaction Coordinator) -> 事务协调, 维护事务状态, 是单独的服务
TM (Transaction Manager) -> 事务管理, 控制事务
RM (Resource Manager) -> 资源管理, 管理分支事务处理资源, 与 TC 通信, 驱动分支事务
全局事务实现全局事务实现通常有 2PC (两阶段提交协议) 和 3PC (三阶段提交协议) 两种
2PC2PC (Two-Phase Commit), 两阶段提交协议包含: Prepare 和 Commit 两个阶段2PC 有着同步阻塞, 单点故障, 数据一致性的问题
Prepare 阶段与 TC 通信, TC 与相关参与者通信, 相关参与者进行数据处理并进行响应
Commit ...
Open Feign 的简单使用笔记
Open Feign 简单使用笔记Open feign 可使远程调用 Http 接口更加遵循面向对象的思想, 使用 Open feign 调用远程API 就像调用本地接口一样
配置使用版本Spring boot 2.6.11 + Spring cloud alibaba 2021.0.4.0
依赖包pom.xml
12345<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>3.1.3</version></dependency>
注解在 Spring boot 启动类上添加 @EnableFeignClients 注解
自定义配置日志Open Feign 的日志级别
级别
说明
NONE
不记录日志, 性能较佳
BASIC
记录请求方法, URL, 响应状态 ...
排序算法笔记
排序算法笔记排序算法是最基础的算法, 在算法学科中有着很高的地位排序算法的目的是将一系列可比较元素按照某种规则进行排序. 其中需要重点关注的是不同算法的时间复杂度和空间复杂度, 以及使用场景
公共API程序中将有以下公共 API
方法签名
注释
boolean less(Comparable v, Comparable w)
当且仅当 v 小于 w 时, 返回 true
void exchange(Comparable<?>[] a, int i, int j)
交换 a 数组中索引为 i 和 j 位置的元素
Comparable 接口的全类名为 java.lang.Comparable
算法实现下文中的 N 无特殊说明时代表输入数组的长度
选择排序将数组划分为有序区和无序区, 重复按序遍历无序区元素, 每次将最小的元素放在有序区末尾, 直到无序区没有元素
分析选择排序算法需要经过 N * (N - 1) / 2 (~ N^2 / 2) 次元素比较, 与 N 次元素交换, 时间复杂度为 O(N^2), 空间复杂度为 O(1)选择排序算法主要有以下 ...
Nacos 的简单使用笔记
Nacos 简单使用笔记Nacos 是 Alibaba 开发的, 具有服务管理, 注册与发现, 配置发布与获取功能的框架集成了注册中心, 配置中心, 服务管理功能Nacos 关键特性有:
服务发现和服务健康监控
动态配置服务
动态 DNS
服务及其元数据管理Nacos 支持了 CP + AP 协议
前置知识注册中心注册中心简介
配置中心配置中心是为解决不同服务运行环境需要不同的一个微服务单元常用的配置中心有
Spring cloud config
Apollo
Nacos
服务管理动态管理实例
Nacos 启动单机模式
下载 Nacos
在 bin 目录下执行 startup 脚本: startup.cmd -m standalone 或 startup.sh -m standalone, 其中 standalone 为单机模式启动
使用 shutdown.sh 或 shutdown.cmd 脚本关闭服务
使用 MySQL 替换 Derby
在 MySQL 中创建库, 并导入 所需表
修改 /conf 下的 application.properties 配置文件123456 ...
Union-find 算法笔记
Union-find 算法笔记问题描述问题的输入是一列整数对, 其中每个整数都有表示一个某种类型的对象, 一对整数 p, q 可以理解为” p 和 q 是相连的”. 假设, 相连是一种等价关系, 它具有:
自反性 : p 和 p是相连的
对称性 : 若 p 和 q 相连, 则 q 和 p 也相连
传递性 : 若 p 和 q 相连, 且 q 和 r 相连, 则 p 和 r 相连
现在, 给定点的数目和一些坐标点矩阵(x, y) 其中 x, y ∈ Z 代表 x 和 y 相连, 要求找出整个点矩阵拥有的连通分量数目, 例如:输入: 123456788 0 12 30 42 63 74 56 7
输出:12
解释:按要求画出连通图 flowchart TD
0 --- 1
2 --- 3
0 --- 4
2 --- 6
3 --- 7
4 --- 5
6 --- 7
其中 6, 7 之间连通是不必要的, 且此点阵 0, 1, 4, 5 间连通, 2, 3, 6, 7 间连通, 拥有两个连通分量输入样本:10个点625个点100 ...
Nginx 的简单使用笔记
Nginx 简单使用笔记Nginx 是一个轻量级的 Web 服务器 基础功能有反向代理, 邮件代理等, 同时其具有可高度定制的特点.Nginx 有众多插件, 配合插件 Nginx 能实现直播等许多功能.Nginx 的核心学习目标是它的配置文件 nginx.conf
配置文件以下面的配置文件为例
配置文件中的配置是常用配置, 值有可能不是是默认值
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556# 全局块user nobody; # 启动用户worker_processes 1; # 业务进程数量(子进程 worker), 一般不超过ngingx可用的CPU内核数量error_log logs/error.log info; # 全局日志设置, 最后一个值为日志级别, 日志级别取值有 debug, info, notice, war ...
Eureka 的简单使用笔记
Netflix eureka 简单使用笔记Eureka 是 Netflix 开发的服务发现框架.它本身是一个基于 REST 的服务, 主要用于定位中间层服务, 同时也有负载均衡和分区容灾的目的Spring cloud 将它集成在其子项目 spring-cloud-netflix 中以实现 Spring cloud 的服务发现功能
注册中心简介微服务架构中的通讯录, 记录服务和服务地址的映射关系
常见的注册中心
Netflix Eureka
Alibaba Nacos
HashiCorp Consul
Apache Zookeeper
CoreOS etcd
CNCF CoreDNS
CAP
Consistency(一致性)
Availability(可用性)
Partition tolerance(分区容错性) CAP 中三者最多同时实现两个
注册中心中的角色
Server(注册中心)
Consumer(消费者)
Provider(生产者)
stateDiagram-v2
Provider --> Server: Register(注册)/Renew(心跳) ...