<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[大脑白质的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_23905237</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_23905237]]></copyright><item><title><![CDATA[你还在用rand()生成随机数？]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144835902</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144835902</guid><author>qq_23905237</author><pubDate>Mon, 30 Dec 2024 22:40:22 +0800</pubDate><description><![CDATA[TPM 是一种专门设计用于增强计算机安全性的硬件组件，它提供了一系列的安全功能，其中包括密码学操作、密钥生成和存储等。这些方法确保了生成的随机数具有足够的不可预测性和随机性，以满足加密应用的需求。CSPRNG 是专门为加密应用设计的伪随机数生成器，它们的特点是即使攻击者知道部分输出或状态，也很难推断出未来的输出。许多现代操作系统都提供了专门用于获取高熵随机数据的接口，这些接口通常被认为是安全的，因为它们从多个难以预测的硬件和软件事件中收集熵。实现生成的数字周期较短，且这些数字是可以预测的。]]></description><category></category></item><item><title><![CDATA[LeetCode7. 整数反转]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144811208</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144811208</guid><author>qq_23905237</author><pubDate>Sun, 29 Dec 2024 21:41:11 +0800</pubDate><description><![CDATA[给你一个 32 位的有符号整数x，返回将x中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围，就返回 0。]]></description><category></category></item><item><title><![CDATA[LeetCode 9. 回文数]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144809974</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144809974</guid><author>qq_23905237</author><pubDate>Sun, 29 Dec 2024 20:34:08 +0800</pubDate><description><![CDATA[给你一个整数x，如果x是一个回文整数，返回true；否则，返回false。回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。121123**进阶：**你能不将整数转为字符串来解决这个问题吗？]]></description><category></category></item><item><title><![CDATA[链表排序算法]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144679433</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144679433</guid><author>qq_23905237</author><pubDate>Tue, 24 Dec 2024 08:30:00 +0800</pubDate><description><![CDATA[对于数组排序，我们有十八般武艺，冒泡、选择、插入、归并、快排、堆排、希尔排。那么对于链表应该如何进行排序呢？首先上结论，链表排序应该使用归并排序。为啥呢？]]></description><category></category></item><item><title><![CDATA[C/C++位运算实现四则运算]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144678671</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144678671</guid><author>qq_23905237</author><pubDate>Mon, 23 Dec 2024 22:00:25 +0800</pubDate><description><![CDATA[在C/C++中，可通过位运算实现四则运算，不过这仅适用于整数类型。]]></description><category></category></item><item><title><![CDATA[C语言安全编程：避免在不安全的宏参数中出现副作用]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144678647</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144678647</guid><author>qq_23905237</author><pubDate>Mon, 23 Dec 2024 21:58:12 +0800</pubDate><description><![CDATA[副作用是指表达式的求值除了计算出一个结果外还修改了程序状态的操作。例如，改变变量的值、进行输入输出操作等都是副作用的例子。在C语言中，副作用通常出现在赋值运算符、增量和减量运算符（如++和--）、函数调用以及逗号运算符中。]]></description><category></category></item><item><title><![CDATA[C/C++位运算：如何高效修改指定位]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144618757</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144618757</guid><author>qq_23905237</author><pubDate>Fri, 20 Dec 2024 20:11:45 +0800</pubDate><description><![CDATA[位被设置为 1，而不改变其他位的值。（二进制表示），并且你想要清除第3位（是 3，那么函数返回的结果将是。因此，这个函数的作用是确保。，这样第3位就被清除了。]]></description><category></category></item><item><title><![CDATA[C语言redis存储结构体]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144596314</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144596314</guid><author>qq_23905237</author><pubDate>Thu, 19 Dec 2024 22:24:31 +0800</pubDate><description><![CDATA[假设我们有一个复杂的结构体，包含嵌套的结构体和数组。通过将复杂结构体序列化为 JSON 字符串，可以方便地使用 Redis 存储和检索这些结构体。hiredis库用于与 Redis 服务器进行通信，而jansson库用于处理 JSON 序列化和反序列化。这种方法不仅简单，而且灵活，适用于各种复杂的结构体。]]></description><category></category></item><item><title><![CDATA[C++ vector动态扩容及动态数组C语言实现]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144596202</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144596202</guid><author>qq_23905237</author><pubDate>Thu, 19 Dec 2024 22:17:12 +0800</pubDate><description><![CDATA[是stl中的动态数组，支持动态扩容，stl是如何进行动态扩容的呢？了解其动态扩容过程有什么用？]]></description><category></category></item><item><title><![CDATA[注意C语言对象生命周期]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144519603</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144519603</guid><author>qq_23905237</author><pubDate>Tue, 17 Dec 2024 00:45:04 +0800</pubDate><description><![CDATA[在C语言中，一个对象的生命周期是指程序执行期间为其保留存储空间的那个部分。一个对象在其生命周期内存在，具有一个固定的地址，并保持其最后存储的值。如果在一个对象的生命周期之外引用它，其行为是未定义的。如果一个指针值在它指向的对象（或者刚好在对象之后）生命周期结束时之后的计算中使用，其行为也是未定义的。]]></description><category></category></item><item><title><![CDATA[LeetCode 4. 寻找两个正序数组的中位数]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/144520002</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/144520002</guid><author>qq_23905237</author><pubDate>Mon, 16 Dec 2024 22:42:48 +0800</pubDate><description><![CDATA[不过也还是可以掌握一下，因为有时候机考，你能过用例就行，那么如果面试的时候，你用那种方法，面试官可能都惊呆了，他可能会以为你以为他是个傻*。因此，我们需要找到第 (m+n+1)/2 个数（奇数情况）和第 (m+n+2)/2 个数（偶数情况），其中 m 和 n 分别是两个数组的长度。：要找出第k小的数，初始化数组指针为k/2，此时两个指针右边的数其实是k个,比较两个数组k/2位置的数值，如果其中一个小，则将其左边的值全部抛除，更新指针，始终保证两个指针右边的数加起来有一半的数量，继续比较。]]></description><category></category></item><item><title><![CDATA[C语言可变参数函数和可变参数宏]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/142209178</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/142209178</guid><author>qq_23905237</author><pubDate>Fri, 13 Sep 2024 13:53:57 +0800</pubDate><description><![CDATA[可变参数函数的定义通常包含一个固定参数列表，后面跟着一个省略号...。省略号表示可以有任意数量的附加参数。// 定义一个可变参数函数return 0;]]></description><category></category></item><item><title><![CDATA[strncpy陷阱]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/142111172</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/142111172</guid><author>qq_23905237</author><pubDate>Tue, 10 Sep 2024 22:49:51 +0800</pubDate><description><![CDATA[相比于strcpy来说，strncpy具有更高的安全性，但是同时会带来一个问题，就是c字符串不会自动补’\0’。最近遇到了一个strncpy的bug，他们居然说这不是bug，而我认为这是很严重的bug！当然如果你本身处理的是bit流，则可以不考虑这个因素。在我们对c字符串进行处理的时候，一定要加上’\0’。很显然，这是由于没有添加’\0’。废话不多说，直接上代码！]]></description><category></category></item><item><title><![CDATA[C语言泛型 _Generic]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/142111107</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/142111107</guid><author>qq_23905237</author><pubDate>Tue, 10 Sep 2024 22:45:49 +0800</pubDate><description><![CDATA[泛型编程是一种编程范式，它允许程序员在编写代码时使用一些将来才会指定的类型。这些类型在代码实例化时作为参数指明。例如，在 C++ 中，可以通过模板来支持泛型编程。通过使用_Generic关键字，C 语言可以在一定程度上实现泛型编程，使程序更加灵活和通用。然而，需要注意的是，_Generic的使用仅限于编译时类型选择，而且表达式只是简单的宏替换。此外，对于复杂的类型和多种参数组合，还需要进一步考虑如何正确处理不同类型之间的转换。GarenJian。]]></description><category></category></item><item><title><![CDATA[C++全局变量和静态变量析构函数的执行时机]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/124416543</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/124416543</guid><author>qq_23905237</author><pubDate>Mon, 25 Apr 2022 22:41:57 +0800</pubDate><description><![CDATA[在C++中，对于局部变量，当局部变量的生命周期结束时，会自动调用析构函数。
但是对于全局变量和静态变量来说，其生命周期较长，其析构函数将会在什么时机进行调用呢？让我们来探究一下。
我们先看下面的一段程序：
#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;string&gt;

class Static {
public:
    Static()
    {
        std::cout &lt;&lt; "Static ]]></description><category></category></item><item><title><![CDATA[WebAssembly基础]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/120506174</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/120506174</guid><author>qq_23905237</author><pubDate>Mon, 27 Sep 2021 12:47:31 +0800</pubDate><description><![CDATA[01 探索WebAssembly
1.1.1 什么是WebAssembly？
现在我们可以做出相当大胆的断言：WebAssembly就 是分布式计算的未来。这是一个非常崇高的目标，如果没有一些证据来支持它就没什么意义了。我们将提供一些证据，但首先让我们深入了解 WebAssembly 本身的一些细节。我们首先需要消除 WebAssembly 只能在 Web 上运行或者它以某种方式设计为仅在 Web 浏览器范围内运行的虚拟机这种既新颖又有些陈旧的思想。我们现在可以说，“WebAssembly 既不是网络也不是]]></description><category></category></item><item><title><![CDATA[全世界最简单的Rust开发环境配置]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/119336541</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/119336541</guid><author>qq_23905237</author><pubDate>Mon, 02 Aug 2021 23:42:45 +0800</pubDate><description><![CDATA[全世界最简单的Rust开发环境配置
1. 安装vs2017或vs2019
2. 下载Rustup运行安装Rust
3. vscode安装插件rust-analyzer、CodeLLDB、Better TOML、crates
4. 测试
cargo new test_01
通过vscode打开test_01文件夹
等待安装rust-analyzer server等组件
点击侧边栏Run和Debug，会提示没有配置，然后会提示根据toml文件生成配置文件，选择是
一切就绪后，此后运行和调试就更加方便了

...]]></description><category></category></item><item><title><![CDATA[斐波拉契数列完全解析(C++)]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/119336500</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/119336500</guid><author>qq_23905237</author><pubDate>Mon, 02 Aug 2021 23:39:07 +0800</pubDate><description><![CDATA[斐波拉契数列的定义如下：
F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N &gt; 1.

暴力递归

int fib(int n)
{
    if (n == 0)
        return 0;
    if (n == 1 || n == 2)
        return 1;
    return fib(n-1) + fib(n-2);
}

我们画一个图来演示一下fib(5)的计算过程：

可以发现有很多重复计算，所以这种方式效]]></description><category></category></item><item><title><![CDATA[凑零钱问题(C++)]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/119336478</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/119336478</guid><author>qq_23905237</author><pubDate>Mon, 02 Aug 2021 23:36:55 +0800</pubDate><description><![CDATA[凑零钱问题：
给定k种面值的硬币，分别是c1,c2, … , ck，每种硬币的数量无限，请问最少需要多少枚硬币可以凑出总金额total，如果凑不出将返回-1.

暴力递归
举例：当总金额是23，硬币面值为1,2,5

首先最简单的就是当总金额是0时，需要0枚硬币。当我们选择一枚1元硬币时，就等于总金额为22时的最小硬币数加1。
int leastCoinNum(std::vector&lt;int&gt;&amp; coins, int n)
{
    if (n == 0)
        return]]></description><category></category></item><item><title><![CDATA[全世界最简单的Rust开发环境配置]]></title><link>https://blog.youkuaiyun.com/qq_23905237/article/details/118268027</link><guid>https://blog.youkuaiyun.com/qq_23905237/article/details/118268027</guid><author>qq_23905237</author><pubDate>Sun, 27 Jun 2021 10:18:44 +0800</pubDate><description><![CDATA[1. 安装vs2017或vs2019
2. 下载Rustup运行安装Rust
3. vscode安装插件rust-analyzer、CodeLLDB、Better TOML、crates
4. 测试
cargo new test_01
通过vscode打开test_01文件夹
等待安装rust-analyzer server等组件
点击侧边栏Run和Debug，会提示没有配置，然后会提示根据toml文件生成配置文件，选择是
一切就绪后，此后运行和调试就更加方便了

...]]></description><category></category></item></channel></rss>