<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[StanleyWm_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/StanleyWm_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; StanleyWm_]]></copyright><item><title><![CDATA[Redis设计与实现-05-跳跃表]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/106302499</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/106302499</guid><author>StanleyWm_</author><pubDate>Sat, 23 May 2020 16:47:21 +0800</pubDate><description><![CDATA[跳跃表介绍
原书中并没有对跳跃表做详细的介绍，记录下来的信息为自己整理。
参考

https://www.cnblogs.com/thrillerz/p/4505550.html
https://redisbook.readthedocs.io/en/latest/internal-datastruct/skiplist.html

跳跃表概念

跳跃表是在有序链表的基础上进行扩展，解决有序链表查找困难的问题。

有序链表查找的时间复杂度为O(n)
跳跃表查找的时间复杂度为O(longN)


跳跃表的结构]]></description><category></category></item><item><title><![CDATA[mysql无法添加外键约束(cannot add foreign key constraint)]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/106266386</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/106266386</guid><author>StanleyWm_</author><pubDate>Thu, 21 May 2020 19:59:20 +0800</pubDate><description><![CDATA[如果有varchar字段，字符集和校对规则也需要保持一致

]]></description><category></category></item><item><title><![CDATA[Redis设计与实现-04-字典]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/106176955</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/106176955</guid><author>StanleyWm_</author><pubDate>Sun, 17 May 2020 16:57:59 +0800</pubDate><description><![CDATA[哈希表(hash table)：又叫散列表，是根据关键码值进行访问的数据结构。将关键码值映射到表中的一个位置来访问，以加快查找的速度。这个函数映射叫做哈希函数，存放记录的数组叫做散列表。
哈希表常用于通过key快速的找到对应的value时使用。
哈希表的负载因子等于实际元素数目/哈希表的容量，负载因子越大表示冲突越大，负载因子越小，表示空间越浪费。一般负载因子位于0-0.7。
哈希算法：当将一个新的键值对添加到字典里面时，先根据键值对的键计算出哈希值和索引值，然后根据索引值，将包含新键值对的哈希表节点放到.]]></description><category></category></item><item><title><![CDATA[Redis设计与实现-03-链表]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/106176944</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/106176944</guid><author>StanleyWm_</author><pubDate>Sun, 17 May 2020 16:57:11 +0800</pubDate><description><![CDATA[Redis链表的特性

双端
无环
带表头指针和表尾指针
带链表长度计数器
多态



typedef struct list {
    // 表头节点
    listNode *head;
    // 表尾节点
    listNode *tail;
    // 链表中所有节点的数量
    unsigned long len;
    // 节点复制函数
    void *(*dup)(void *ptr);
    // 节点释放函数
    void (*free)(void *ptr).]]></description><category></category></item><item><title><![CDATA[Redis设计与实现-02-数据结构与对象]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/106040466</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/106040466</guid><author>StanleyWm_</author><pubDate>Sun, 10 May 2020 19:09:39 +0800</pubDate><description><![CDATA[简单动态字符串

Redis构建了一种名为简单动态字符串（simple dynamic string, SDS）的抽象类型，作为默认字符串表示。

SDS遵循C字符串以空字符结尾的惯例，保存空字符的一个字节空间不计算在SDS的len属性里面，并且为空字符分配额外的一个字节，以及添加空字符到字符串末尾等操作，都是由SDS函数自动完成的，所以空字符对SDS的使用者来说是完全透明的。



struct sdshr {
    // 记录buf数组中已使用字节的数量
    // 等于sds所保存字符串的长度
 ]]></description><category></category></item><item><title><![CDATA[Redis设计与实现-01-引言]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/106040427</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/106040427</guid><author>StanleyWm_</author><pubDate>Sun, 10 May 2020 19:08:21 +0800</pubDate><description><![CDATA[Redis数据库里面的每个键值对（key-value pair）都是由对象（object）组成的，其中

数据库键总是一个字符串对象（string）
数据库键的值则可以是字符串对象、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合（sorted set ）对象这五种对象中的其中一种。




...]]></description><category></category></item><item><title><![CDATA[MongoDB(Motor) cursor id is not valid at server 问题]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/105914303</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/105914303</guid><author>StanleyWm_</author><pubDate>Mon, 04 May 2020 10:47:48 +0800</pubDate><description><![CDATA[MongoDB(Motor) cursor id is not valid at server 问题
Python使用Motor驱动操作MongoDB导出数据时遇到cursor id is not valid at server的问题，主要是因为Cursor空闲时间超过10分钟被服务器回收。可以通过以下两个参数来解决这个问题：

no_cursor_timeout ：设置cursor没有超时时间。...]]></description><category></category></item><item><title><![CDATA[ubuntu 修改时间无效]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/101704707</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/101704707</guid><author>StanleyWm_</author><pubDate>Sun, 29 Sep 2019 17:49:11 +0800</pubDate><description><![CDATA[使用 date -s 对ubuntu进行时间修改，命令执行成功，但紧接着查询时时间又被还原。有两种可能
1.  系统启用ntp服务

使用 service ntp status 命令来查看ntp服务的状态，如果启动了ntp服务，使用service ntp stop命令来关闭该服务。

2. timedatectl 启动了set-ntp

使用timedatectl来观察是否启用了set-ntp；如...]]></description><category></category></item><item><title><![CDATA[std::thread类成员函数作为线程函数]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/99982788</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/99982788</guid><author>StanleyWm_</author><pubDate>Wed, 21 Aug 2019 18:16:57 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/qq_41741165/article/details/80584066
]]></description><category></category></item><item><title><![CDATA[C++中具有命名空间的类如何前置声明]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/99756283</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/99756283</guid><author>StanleyWm_</author><pubDate>Mon, 19 Aug 2019 19:58:56 +0800</pubDate><description><![CDATA[namespace acl
{
    class redis_client;
}


]]></description><category></category></item><item><title><![CDATA[Android Studio 3.2 的android 模拟器启动黑屏问题解决]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/98738765</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/98738765</guid><author>StanleyWm_</author><pubDate>Wed, 07 Aug 2019 12:35:54 +0800</pubDate><description><![CDATA[参考

https://blog.youkuaiyun.com/nny886/article/details/83073695

问题描述
使用Android Studio新创建的模拟器可以正常使用，当重新启动Android Studio之后，模拟器可以启动，但一直黑屏（也没有显示Android字样）
修改方法
在模拟器编辑界面，点击“Show Advanced Settings”按钮，显示详细配置，修改“B...]]></description><category></category></item><item><title><![CDATA[错误: 编码GBK的不可映射字符问题解决]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/98604675</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/98604675</guid><author>StanleyWm_</author><pubDate>Tue, 06 Aug 2019 12:27:18 +0800</pubDate><description><![CDATA[问题产生
在Windows中使用javah将.java文件转换为.h文件时报错“错误: 编码GBK的不可映射字符”
解决方法
使用javah时添加-encoding UTF-8参数，其中UTF-8为.java文件使用的编码。如果.java文件是其他编码格式，需要将UTF-8修改为对应的编码名称
问题分析
windows平台javah默认认为.java文件为GBK编码。如果不指定-encoding参...]]></description><category></category></item><item><title><![CDATA[vs2015下release版本调试设置]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/91504483</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/91504483</guid><author>StanleyWm_</author><pubDate>Wed, 12 Jun 2019 13:14:02 +0800</pubDate><description><![CDATA[设置在Release模式下调试的方法：
1.工程项目上右键 -&gt; 属性
2.c++ -&gt; 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意：如果是库的话，只能(Zi)
3.c++ -&gt; 优化 -〉优化 选 禁止（/Od）
4.连接器 -〉调试 -〉生成调试信息 选 是 （/DEBUG）
...]]></description><category></category></item><item><title><![CDATA[Win10 64位操作系统中编译nginx]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/86626515</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/86626515</guid><author>StanleyWm_</author><pubDate>Thu, 24 Jan 2019 14:38:42 +0800</pubDate><description><![CDATA[参考如下信息

http://nginx.org/en/docs/windows.html
http://nginx.org/en/docs/howto_build_on_win32.html
https://blog.youkuaiyun.com/pi314pi/article/details/81167814

环境准备

已安装VS2010的Win10电脑一台
安装ActivePerl。这个是为了编译o...]]></description><category></category></item><item><title><![CDATA[enable_if 的一个奇怪用法]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/78232094</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/78232094</guid><author>StanleyWm_</author><pubDate>Sat, 14 Oct 2017 09:36:27 +0800</pubDate><description><![CDATA[enable_if 模板]]></description><category></category></item><item><title><![CDATA[C++模板的具体化和实例化]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/78231828</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/78231828</guid><author>StanleyWm_</author><pubDate>Sat, 14 Oct 2017 08:23:53 +0800</pubDate><description><![CDATA[模板类或模板函数并不是真正的类或函数，它们是编译器指令，说明如何生成类或函数，模板的具体实现可以分为实例化（instantiation）和具体化（specialization）模板实例化  模板的实例化分为显示实例化和隐式实例化，前者是研发人员明确的告诉模板应该使用什么样的类型去生成具体的类或函数，后者是在编译的过程中由编译器来决定使用什么类型来实例化一个模板  不管是显示实例化或隐式实例化，最终生]]></description><category></category></item><item><title><![CDATA[FFmpeg 使用HEVC_QSV编码时仅发送一次PPS问题的解决方法]]></title><link>https://blog.youkuaiyun.com/StanleyWm_/article/details/63675206</link><guid>https://blog.youkuaiyun.com/StanleyWm_/article/details/63675206</guid><author>StanleyWm_</author><pubDate>Sun, 19 Mar 2017 08:22:48 +0800</pubDate><description><![CDATA[使用最新版本的（3.2.1）的FFmpeg进行HEVC_QSV编码的时候，只会在开始的时候发送一次PPS，在之后的编码过程中都不在发送PPS，这导致了需要播流的播放器需先打开，再启动FFmpeg进行推流，否则只能播放出声音，没有画面。
       FFmpeg 是基于Intel Media SDK来实现HEVC_QSV的，查看了Intel Media SDK的相关文档，发现PPS的发送时机是由]]></description><category></category></item></channel></rss>