avatar
文章
103
标签
24
分类
10

主页
目录
  • 归档
  • 标签
  • 类别
友链
关于我
怀民亦未寝。
主页
目录
  • 归档
  • 标签
  • 类别
友链
关于我

怀民亦未寝。

高精度计算模板的使用
置顶|发表于2022-04-03|数据结构/算法
高精度计算有几种常见的类型: 两个很大的整数相加A, B的位数均小于等于10⁶ 两个很大的整数相减A, B的位数均小于等于10⁶ 一个很大的整数乘以一个比较小的整数A的位数小于等于10⁶,B的数值小于等于10⁹ 一个很大的整数除以一个比较小的整数A的位数小于等于10⁶,B的数值小于等于10⁹ 还有 两个很大的整数相乘 和 两个很大的整数相除 这两种情况,不过不常用,暂时不学了。 我们写数字习惯从高位开始写,但是模拟加减乘除时由于要做进位的操作,所以从低位开始存比较方便。即:数组第 0 位存个位,第 1 位存十位,第 2 位存百位······ 高精度加法C = A + B用变量 t 表示进位,要么是 1 要么是 0 。 123456789101112131415161718192021vector<int> add(vector<int> &A, vector<int> &B) { vector<int> C; // 和 int t = 0; // 1表示进位,0表示不进位 for ...
RocketMQ 进阶
发表于2025-05-28|消息队列
消息的特殊处理错乱的消息顺序消息有序指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ 可以严格地保证消息有序,可以分为分区有序或者全局有序。 顺序消费的原理解析: 在默认情况下,消息发送会采取 Round Robin 轮询方式把消息发送到不同的 queue(分区队列);而消费消息的时候从多个 queue 上拉取消息,这种情况发送和消费是不能保证顺序的。 但是如果控制发送的顺序消息只依次发送到同一个 queue 中,消费的时候只从这个 queue 上依次拉取,就能够保证顺序。 当所有消息都路由到同一个 queue 且被顺序消费时,称为全局有序;若消息被分散到多个 queue,但每个 queue 内部保持顺序,则称为分区有序(或局部有序)。 以订单业务为例,一个订单的顺序流程是:创建、付款、推送、完成。订单号相同的消息会被先后发送到同一个队列中,消费时,同一个 OrderId 获取到的肯定是同一个队列。 (TODO:画图) 顺序消息 订单步骤实体类 12345678910111213141516171819202122232425262728293031/** * 订单的 ...
RocketMQ 基础
发表于2025-05-26|消息队列
https://rocketmq.apache.org/ 为什么使用 MQ?-> MQ 的优势和劣势优势(作用): 应用解耦 异步提速 削峰填谷 劣势: 系统可用性降低 系统复杂度提高 异步消息机制 消息顺序性 消息丢失 消息一致性 消息重复使用 应用解耦:消费方存活与否不影响生产方系统的耦合性越高,容错性就越低,可维护性就越低。 主流 MQ 产品对比 ActiveMQ:Java 语言实现,万级数据吞吐量,处理速度 ms 级,主从架构,成熟度高 RabbitMQ:Erlang 语言实现,万级数据吞吐量,处理速度 us 级,主从架构 RocketMQ:Java 语言实现,十万级数据吞吐量,分布式架构,功能强大,扩展性强 Kafka:Scala 语言实现,十万级数据吞吐量,处理速度 ms 级,分布式架构,功能较少,应用于大数据较多 RocketMQ 架构图(TODO:画图) 环境搭建略。 消息发送(重点)主要内容 基于 Java 环境构建发送与消息接受基础程序 单生产者-单消费者 单生产者-多消费者 多生产者-多消费者 发送不同类型的消息 同步消息 异步消息 单向消 ...
记录 Docker 设置新源记录解决 Error response from daemon
发表于2024-10-17|疑难杂症
问题用 Docker 拉取 MySQL 的时候报错: docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). 解决方式:编写配置文件(2024/10/17 目前可用)将可用的镜像仓库地址写入 daemon.json 配置文件(没有就新建) vim /etc/docker/daemon.json写入: 123456789101112131415161718192021222324{ "registry-mirrors": [ "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com", "htt ...
JVM 垃圾回收相关知识概要
发表于2024-09-15|JVM
如何判断对象是否死亡(两种方法)? 引用计数法 可达性分析算法 引用类型简介 强引用 软引用 弱引用 虚引用 垃圾回收算法 标记-清除算法 复制算法 标记-整理算法 分代收集算法 内存分配与回收原则 对象优先在 Eden 区分配 大多数情况下,对象会在新生代 Eden 区分配,当空间不足时触发 Minor GC。 空间分配担保 在 Minor GC 之前,检查老年代是否有足够空间存放新生代对象。 判断对象是否死亡 引用计数法 通过计数器判断引用状态,不适用解决循环引用问题。 可达性分析算法 从 GC Roots 开始,遍历引用链判断对象是否可达。 垃圾回收算法 标记-清除算法 标记不需要回收的对象,回收未标记对象。 存在效率低和内存碎片问题。 复制算法 将内存划分为两部分,每次使用一部分,回收后将存活对象复制到另一部分。 缺点是可用内存减少一半。 标记-整理算法 将存活对象移至一端,清理无用内存。 适用于老年代,效率较低。 分代收集算法 新生代采用复制算法,老年代采用标记-清除或标记-整理算法。 常见垃圾收集器 Seria ...
LC-155-最小栈
发表于2024-06-16|数据结构/算法
题意设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。 思路代码12345678910111213141516171819202122232425class MinStack {public: stack<int> A, B; MinStack() {} void push(int val) { A.push(val); if (B.empty() || val <= B.top()) B.push(val); } void pop() { if (A.top() == B.top()) ...
Linux 常用命令整理
发表于2024-06-13|Unix
1. 目录结构/:所有文件和目录的根目录/usr/bin:存放系统的可执行文件,可以在任何目录下执行。/usr/local/bin:存放用户自己安装的可执行文件,可以在任何目录下执行。/etc: 存放系统的配置文件,如:/etc/profile 是环境变量的配置文件。/home: 每个用户的家目录,保存用户的私人数据,目录名默认和用户名相同。/opt: 存放用户额外安装的软件,类似 Windows 中的 Program Files 目录。 2. 常用命令文件 & 目录 查看和切换目录 1234567891011121314查看: pwd # 显示当前目录路径 ls # 列出当前目录下文件和目录 ls -l 或 ll # 列出当前目录下文件和目录(详细信息)切换目录: cd /opt # 切换到 /opt 目录 cd .. # 返回上一级目录 cd bin # 切换到当前目录的 ...
LC-617-合并二叉树
发表于2024-06-13|数据结构/算法
https://leetcode.cn/problems/merge-two-binary-trees/ 题面给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 注意: 合并必须从两个树的根节点开始。 思路123456789TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { if (t1 == NULL) return t2; // 如果t1为空,合并之后就应该是t2 if (t2 == NULL) return t1; // 如果t2为空,合并之后就应该是t1 // 修改了t1的数值和结构 t1->val += t2->val; // 中 t1->left = mergeTrees(t1->left, t2-&g ...
LC-106-从中序与后序遍历序列构造二叉树
发表于2024-06-13|数据结构/算法
https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ 题面根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 思路12345678910111213141516171819202122232425262728293031323334353637383940TreeNode* traversal(vector<int>& inorder, vector<int>& postorder) { if (postorder.size() == 0) return NULL; // 后序遍历数组最后一个元素,就是当前的中间节点 int rootValue = postorder[postord ...
LC-112-路径总和
发表于2024-06-12|数据结构/算法
题面https://leetcode.cn/problems/path-sum/ 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。 思路递归写法12345678910111213141516171819202122232425class Solution {private: bool traversal(TreeNode* cur, int count) { if (!cur->left && !cur->right && count == 0) return true; // 遇到叶子节点,并且计数为0 if (!cur->left && !cur->right) return fals ...
12…11
avatar
travis16
大三就读
文章
103
标签
24
分类
10
Follow Me
最新文章
RocketMQ 进阶2025-05-28
RocketMQ 基础2025-05-26
记录 Docker 设置新源记录解决 Error response from daemon2024-10-17
JVM 垃圾回收相关知识概要2024-09-15
LC-155-最小栈2024-06-16
分类
  • JVM3
  • Java5
  • Unix1
  • 数据库1
  • 数据结构/算法82
  • 消息队列2
  • 疑难杂症1
  • 缓存2
标签
数论 优先队列 字符串 栈 枚举 剑指Offer 排序 递归与递推 模拟 滑动窗口 数据结构 链表 队列 搜索 贪心 二叉树 二分 动态规划 递推 树 前缀和 基础算法 图论 哈希表
归档
  • 五月 20252
  • 十月 20241
  • 九月 20241
  • 六月 202435
  • 二月 20242
  • 一月 20241
  • 十二月 20232
  • 十月 20231
©2020 - 2025 By travis16
粤ICP备2022058194号