自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 分布式系统设计的方方面面

分布式系统设计的方方面面引言分布式系统存在的原因高吞吐:高并发:低延迟:负载均衡:分布式系统提高承载量的基本手段分层模型(路由、代理)并发模型(多线程、异步)缓冲技术存储技术(NoSQL)分布式系统在可管理性上造成的问题硬件故障率资源利用率优化软件服务内容更新数据统计和决策解决分布式系统可管理性的基本手段目录服务(ZooKeeper)消息队列服务(ActiveMQ、ZeroMQ、Jgroups、Kafka、RabbitMQ)事务系统自动部署工具(Docker)日志服务(log4j)引言QQ、微信、淘宝这

2024-09-23 19:24:39 1116

原创 Redis 分布式锁

面试时,面试官问到 Redis 分布式锁相关问题,对这部分做一个总结。在多线程环境下,为了保证共享数据的线程安全,锁可以实现同一时刻只有一个线程访问和更新共享数据。同一进程中可以使用std::mutex互斥锁保证线程安全。但如果服务器是分布式部署的话,mutex显然不适用。分布式锁就是控制分布式系统不同进程访问共享资源的一种锁的机制。不同进程之间调用需要保持互斥性,任意时刻,只有一个客户端能持有锁。从单体锁到分布式锁,只不过是将锁的对象从一个进程的多个线程,转成多个进程。

2024-09-09 11:13:48 322

原创 高性能调度系统设计总结

总的来说,列表和大顶堆由于自身的性质,并不适合这样的场景。对于扫表+触发的模式,其实本质是需要一个能高速范围查询的数据结构。B+树和跳表都是高效的能范围查询数据结构,但它们各自适用于不同的场景。B+树更适合于磁盘存储和范围查询,而跳表则更适合于内存中的快速查找和分布式环境。

2024-09-09 11:13:28 555

原创 秋招之路披荆斩棘

秋招之路

2024-08-23 14:35:26 98

原创 C++ 知识点(长期更新)

必知必会

2024-08-09 15:03:58 2259

原创 面试题 68 - II. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2024-08-05 22:54:12 365

原创 多媒体技术:语音音频压缩

音频压缩技术

2024-07-30 09:37:09 492

原创 多媒体技术(三)

数据压缩基本方法游程编码熵编码字典编码游程编码熵编码字典编码

2024-07-27 00:06:46 356

原创 多媒体技术(二)

视频图像压缩导论人眼视觉特性视频图像基本参数色彩模型图像压缩的色彩模型视频图像压缩基础定义数据冗余时间冗余空间冗余视觉冗余评价指标标准化视频图像压缩发展历程摩尔斯电码香农编码哈夫曼编码FTDCT运动矢量预测视频编码框架人眼视觉特性视频图像基本参数色彩模型图像压缩的色彩模型视频图像压缩基础定义数据冗余时间冗余空间冗余视觉冗余评价指标标准化视频图像压缩发展历程摩尔斯电码香农编码哈夫曼编码FTDCT运动矢量预测视频编码框架

2024-07-26 22:23:36 183

原创 多媒体技术(一)

多媒体技术导论多媒体技术基本概念媒体的概念媒体分类多媒体的基本概念多媒体的描述多媒体技术的主要特征多媒体技术研究内容视频图像压缩语音音频压缩多媒体通信和流媒体视频图像检索与分析多媒体技术应用领域数字安防数字娱乐数字医疗数字教育多媒体技术基本概念媒体的概念媒体分类多媒体的基本概念多媒体的描述多媒体技术的主要特征多媒体技术研究内容视频图像压缩语音音频压缩多媒体通信和流媒体视频图像检索与分析多媒体技术应用领域数字安防数字娱乐数字医疗数字教育

2024-07-26 20:12:13 242

原创 C++20之设计模式(22):策略模式

策略设计模式允许你定义算法的框架,然后使用组合来提供与特定策略相关的缺失实现细节。这种方法存在于两种实现方式:动态策略只是保持一个指向正在使用的策略的指针/引用。想换一种不同的策略吗?只需更改引用。简单!静态策略要求您在编译时选择策略并坚持下去 - 以后没有改变主意的余地应该使用动态策略还是静态策略?好吧,动态对象允许你在构造对象后重新配置对象。想象一个控制文本输出形式的 UI 设置:你更愿意拥有一个可切换的还是两个和类型的变量?这真的取决于你。

2024-07-26 09:44:43 579

原创 C++20之设计模式(19):空对象

空对象

2024-07-26 08:42:47 716

原创 C++20之设计模式:状态模式

首先,这是值得强调的Boost.MSM是Boost中两种状态机实现之一,另一种是。我很确定还有很多其他的状态机实现。其次,状态机的功能远不止这些。例如,许多库支持分层状态机的思想:例如,一个生病(Sick)的状态可以包含许多不同的子状态,如流感(Flu)或水痘(Chickenpox)。如果你在处于感染流感的状态,你也同时处于生病的状态。最后,有必要再次强调现代状态机与状态设计模式的原始形式之间的差异。重复api的存在(例如)以及自删除的存在在我的书中是明确的代码气味。

2024-07-25 22:34:11 1688

原创 C++20之设计模式:观察者模式

毫无疑问,本章中提供的代码是一个明显的例子,它过度思考和过度设计了一个超出大多数人想要实现的问题的方式。让我们回顾一下实现 Observer 时的主要设计决策:决定你希望你的 observable 传达什么信息。例如,如果你正在处理字段/属性更改,则可以包含属性名称。你还可以指定旧/新值,但传递类型可能会出现问题。你想让你的观察者成为tire class,还是你只需要一个虚函数列表?你想如何处理取消订阅的观察者?

2024-07-25 10:00:18 1521

原创 C++沉思:预处理和编译

在C++中,编译是将源代码转换为机器代码并组织在目标文件中,然后将目标文件链接在一起生成可执行文件的过程。编译器实际上一次只处理一个文件,这个文件是由预处理器(编译器中处理预处理指令的部分)从单个源文件及其包含的所有头文件中生成的。

2024-07-24 16:51:28 1018

原创 面试题 37. 序列化二叉树

你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。二叉树任一DFS/BFS序列所形成的二叉树是不唯一的,但是将其拓展包含空节点的树,其DFS/BFS序列唯一,即在序列化期间保存树结构。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。序列化:得到二叉树的前序遍历+中序遍历,用特定符分割。请实现两个函数,分别用来序列化和反序列化二叉树。二叉树的序列化本质上是。

2024-07-24 14:34:37 484

原创 面试题 36. 二叉搜索树与双向链表

速看!

2024-07-24 09:48:17 371

原创 面试题 35. 复杂链表的复制

遍历链表,将链表中的每个节点都复制一份,然后将原节点和复制节点的对应关系存储在哈希表中,同时连接好复制节点的 next 指针。输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]输入:head = [[3,null],[3,0],[3,null]]输出:[[3,null],[3,0],[3,null]]输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]

2024-07-23 23:47:33 737

原创 面试题 34. 二叉树中和为某一值的路径

使用回溯算法,从根节点开始,递归遍历每个节点,每次递归时,将当前节点值加入到路径中,然后判断当前节点是否为叶子节点,如果是叶子节点并且路径和等于目标值,则将该路径加入到结果中。如果当前节点不是叶子节点,则递归遍历其左右子节点。递归遍历时,需要将当前节点从路径中移除,以确保返回父节点时路径刚好是从根节点到父节点。输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22。输出:[[5,4,11,2],[5,8,4,5]]

2024-07-22 23:21:47 386

原创 面试题 33. 二叉搜索树的后序遍历序列

后序遍历的最后一个元素为根节点,根据二叉搜索树的性质,根节点左边的元素都小于根节点,根节点右边的元素都大于根节点。因此,我们找到第一个大于根节点的位置 𝑖,那么 𝑖。输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。右边的元素都应该大于根节点,否则返回 false。然后递归判断左右子树。输入: [1,6,3,2,5]输入: [1,3,2,6,5]

2024-07-22 10:35:28 427

原创 Windows FFmpeg 开发环境搭建

bin注:(WoW64 (Windows On Windows64 )是⼀个Windows操作系统的⼦系统,被设计⽤来处理许多在32-bit Windows和64-bit Windows之间的不同的问题,使得可以在64-bit Windows中运⾏32-bit程序。

2024-07-18 10:42:55 1273

原创 面试题 32 - 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

2024-07-16 23:19:33 364

原创 面试题 31. 栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。

2024-07-16 22:21:08 133

原创 面试题 30. 包含 min 函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

2024-07-16 21:34:46 142

原创 面试题 29. 顺时针打印矩阵

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。输出:[1,2,3,6,9,8,7,4,5]从外往里一圈一圈遍历并存储矩阵元素即可。

2024-07-16 20:27:45 417

原创 面试题 28. 对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

2024-07-16 18:26:53 221

原创 面试题 27. 二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

2024-07-16 16:01:59 506

原创 面试题 26. 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。B是A的子结构, 即 A中有出现和B相同的结构和节点值。

2024-07-16 15:07:02 405

原创 面试题 25. 合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。输入:1->2->4, 1->3->4。输出:1->1->2->3->4->4。

2024-07-15 22:55:57 353

原创 视音频数据处理入门:RGB、YUV像素数据处理

YUV诞生于黑白电视向彩色电视过渡的时期。黑白视频是只有Y(Luma或Luminance,即亮度)分量的视频,也就是灰阶值。在彩色电视中,除了Y以外,还使用U和V来表示图像的色度(Chrominance或Chroma,C)。U和V也分别称为Cb、Cr,分别代表蓝色通道和红色通道与亮度的差值。

2024-07-15 13:49:17 581

原创 面试题 21. 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。注:[3,1,2,4] 也是正确的答案之一。输入:nums = [1,2,3,4]输出:[1,3,2,4]

2024-07-12 16:35:55 216

原创 面试题 19. 正则表达式匹配

可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。个字符开始进行匹配,返回值即是否匹配,那么本题答案就是。a"匹配,但与"aa.a"和"ab*a"均不匹配。例如,字符串"aaa"与模式"a.a"和"ab。请实现一个函数用来匹配包含。表示任意一个字符,而。

2024-07-11 20:12:44 335

原创 深入理解C++ 中的可调⽤对象

深入理解C++中的可调用对象

2024-07-09 21:42:36 1540

原创 面试题 16. 数值的整数次方

不得使用库函数,同时不需要考虑大数问题。,即计算 x 的 n 次幂函数(即,使用快速幂算法实现。

2024-07-09 14:13:08 232

原创 面试题 14- I. 剪绳子

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为。例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。可能的最大乘积是多少?

2024-07-09 12:35:02 194

原创 面试题 12. 矩阵中的路径

输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。二维字符网格 board 和一个字符串单词 word。如果 word 存在于网格中,返回。

2024-07-09 09:37:18 349

原创 面试题 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 append_tail 和 delete_head ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,delete_head 操作返回 -1 )输出:[null,null,3,-1]

2024-07-08 15:20:50 217

原创 面试题 07. 重建二叉树

重建二叉树

2024-07-08 14:36:54 156

原创 面试题 05. 替换空格

替换空格

2024-07-08 13:35:51 349

原创 面试题 04. 二维数组中的查找

二维数组的查找

2024-07-08 13:32:41 305

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除