<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[科技之隅的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mx_ddd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mx_ddd]]></copyright><item><title><![CDATA[手撕归并排序]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/144879492</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/144879492</guid><author>mx_ddd</author><pubDate>Thu, 02 Jan 2025 10:33:12 +0800</pubDate><description><![CDATA[归并排序（Merge Sort）是一种分治法（Divide and Conquer）算法，它将一个大问题分解成若干个小问题，解决这些小问题后再将它们合并起来。归并排序的时间复杂度为 O(n·logn)，在最坏情况下也表现得非常稳定。]]></description><category></category></item><item><title><![CDATA[Image Signal Processing (ISP) Pipeline：ISP流程分析]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/144075456</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/144075456</guid><author>mx_ddd</author><pubDate>Thu, 28 Nov 2024 10:23:52 +0800</pubDate><description><![CDATA[随着数字图像处理技术的不断发展，图像信号处理器（ISP）作为摄像设备中至关重要的部分，扮演着越来越重要的角色。ISP负责将来自传感器的原始图像信号经过一系列处理后转换成最终的图像输出，涵盖了从图像采集、预处理到后期优化的各个环节。本文旨在对ISP Pipeline进行全面的介绍，帮助读者熟悉其整体流程，并深入了解ISP中的各个关键环节。在后续的内容中，我们将逐一对ISP Pipeline中的各个模块进行详细分析，包括其核心概念、原理、以及实际应用中的代码实现。]]></description><category></category></item><item><title><![CDATA[找到字符串中所有字母异位词]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/143104681</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/143104681</guid><author>mx_ddd</author><pubDate>Mon, 11 Nov 2024 22:48:19 +0800</pubDate><description><![CDATA[通过滑动窗口法结合字符计数，可以高效地找到所有异位词。该算法的时间复杂度为线性时间 O(n)，适用于大规模字符串的处理。]]></description><category></category></item><item><title><![CDATA[C++实现自旋锁SpinLock]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/143226684</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/143226684</guid><author>mx_ddd</author><pubDate>Fri, 25 Oct 2024 10:31:29 +0800</pubDate><description><![CDATA[自旋锁是一种锁机制，用于多线程编程中保护共享资源。与普通的阻塞锁不同，自旋锁在获取不到锁时，线程不会被挂起，而是持续循环（“自旋”）检查锁是否可用。当锁被释放时，线程立即获取锁进入临界区。自旋锁适用于短时间的临界区操作，因为它避免了线程上下文切换的开销，但在长时间等待时会浪费大量 CPU 资源。自旋锁是一种用于多线程环境下的同步机制，能够确保在同一时间只有一个线程能够访问共享资源。]]></description><category></category></item><item><title><![CDATA[无重复字符的最长子串]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142998502</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142998502</guid><author>mx_ddd</author><pubDate>Thu, 17 Oct 2024 10:12:02 +0800</pubDate><description><![CDATA[初始化变量l = 0（左边界），r = 0（右边界），ans = 0（最长无重复子串长度），和哈希表map用来记录窗口内字符的出现情况。使用循环遍历字符串，右边界r每次右移，动态调整窗口：当s[r]不在map中时，将字符加入哈希表，扩大窗口。当s[r]已经在map中时，缩小窗口，通过移动左边界l，直到窗口内无重复字符。每次调整窗口后，计算当前窗口长度r - l，更新ans。最后，返回ans，即为最长无重复子串的长度。]]></description><category></category></item><item><title><![CDATA[MySQL事务的四大特性及实际案例]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142847346</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142847346</guid><author>mx_ddd</author><pubDate>Fri, 11 Oct 2024 10:44:44 +0800</pubDate><description><![CDATA[在数据库系统中，事务 (Transaction) 是保证数据完整性和一致性的重要机制。尤其在高并发和复杂的应用场景下，事务能够确保多个操作的整体性，使系统在面对错误或异常时依然能保证数据的可靠性。为了实现这一目标，事务具备四大关键特性：原子性 (Atomicity)、一致性 (Consistency)、隔离性 (Isolation) 和持久性 (Durability)，简称ACID。]]></description><category></category></item><item><title><![CDATA[C++的四种类型强转]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142754216</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142754216</guid><author>mx_ddd</author><pubDate>Wed, 09 Oct 2024 01:45:00 +0800</pubDate><description><![CDATA[在 C++ 编程中，类型转换是一个常见且重要的操作。然而，随意使用 C 风格的类型转换可能会导致难以发现的错误和潜在的安全隐患。const_cast和。每种转换都具有特定的用途和特点，适用于不同的场景。本文将详细介绍这四种类型转换操作符的功能、应用场景以及示例代码。通过对这些转换的理解，程序员能够更加有效地管理类型安全，提高代码的可读性和可维护性。掌握这些知识将帮助开发者在复杂的代码中避免潜在的错误，使程序更加健壮。C++ 的四种类型转换操作符（const_cast和。]]></description><category></category></item><item><title><![CDATA[指针与引用的区别]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142753014</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142753014</guid><author>mx_ddd</author><pubDate>Tue, 08 Oct 2024 10:31:47 +0800</pubDate><description><![CDATA[在C++编程中，指针和引用是两种重要的间接引用机制，它们在内存管理和数据操作中扮演着关键角色。尽管它们看似相似，但二者在语法、特性和使用场景上存在显著差异。理解指针与引用的区别，能够帮助开发者更有效地管理内存，提高代码的安全性与可读性。本节将详细探讨指针与引用的主要区别，包括空值处理、初始化、重新赋值、语法以及性能等方面。同时，我们将通过代码示例直观展示这些概念，帮助读者深入理解何时使用指针，何时使用引用，以便在实际编程中做出更明智的选择。]]></description><category></category></item><item><title><![CDATA[用两个栈实现一个队列]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142732311</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142732311</guid><author>mx_ddd</author><pubDate>Sun, 06 Oct 2024 21:53:05 +0800</pubDate><description><![CDATA[通过使用两个栈来模拟队列的先进先出（FIFO）特性：一个栈用于执行入队操作（将新元素压入栈1），另一个栈用于出队操作（从栈2中弹出元素）。在出队时，如果栈2为空，则将栈1中的所有元素逐一弹出并压入栈2，从而确保出队的顺序与入队顺序一致。]]></description><category></category></item><item><title><![CDATA[实现一个简单的环形队列]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142701386</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142701386</guid><author>mx_ddd</author><pubDate>Fri, 04 Oct 2024 11:50:18 +0800</pubDate><description><![CDATA[环形队列（Circular Queue）是一种特殊的数据结构，旨在高效地管理和利用存储空间。与传统的线性队列相比，环形队列的主要特点在于，它的队尾和队头可以在同一存储空间中循环使用，从而避免了空间浪费。]]></description><category></category></item><item><title><![CDATA[快速判断大端小端字节序]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142679202</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142679202</guid><author>mx_ddd</author><pubDate>Wed, 02 Oct 2024 11:02:54 +0800</pubDate><description><![CDATA[大小端（Endianness）是指计算机存储多字节数据时，字节的顺序。]]></description><category></category></item><item><title><![CDATA[C++实现生产者消费者模型]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142646156</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142646156</guid><author>mx_ddd</author><pubDate>Mon, 30 Sep 2024 06:00:00 +0800</pubDate><description><![CDATA[生产者-消费者模型是一种用于解决多线程同步问题的经典设计模式，常见于缓冲区管理、任务调度等场景。该模型的核心是两个角色：生产者和消费者。通过共享缓冲区（通常是队列）进行协作。]]></description><category></category></item><item><title><![CDATA[手撕快速排序]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142618663</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142618663</guid><author>mx_ddd</author><pubDate>Sun, 29 Sep 2024 08:30:00 +0800</pubDate><description><![CDATA[快速排序是一种高效的排序算法，采用分治的思想时间复杂度最佳情况：O(n log n)（基准元素每次均匀分割）平均情况：O(n log n)最坏情况：O(n²)（当数组已经是有序的，或所有元素相同，且每次选择的基准是最小或最大值）空间复杂度空间复杂度：O(log n)（递归调用栈的空间，取决于递归深度）在最坏情况下（O(n)）时，可能需要额外的O(n)空间（当分区极不均匀时）]]></description><category></category></item><item><title><![CDATA[C++ 简易异步定时器实现]]></title><link>https://blog.youkuaiyun.com/mx_ddd/article/details/142611276</link><guid>https://blog.youkuaiyun.com/mx_ddd/article/details/142611276</guid><author>mx_ddd</author><pubDate>Sat, 28 Sep 2024 10:44:02 +0800</pubDate><description><![CDATA[这个代码实现了一个简单的异步定时器Timer类，利用 C++ 的和std::async进行多线程处理。启动定时器：通过start方法，可以设置一个延迟时间和一个回调函数。定时器在延迟结束后会自动执行这个回调。停止定时器：可以使用stop方法来停止定时器，并等待当前正在执行的任务完成。线程安全：使用std::mutex确保在多线程环境中安全地访问和修改定时器的状态。异步执行：定时器的延迟处理在一个独立线程中进行，主线程可以继续执行其他操作。]]></description><category></category></item></channel></rss>