<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wxf306989618的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wxf306989618</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wxf306989618]]></copyright><item><title><![CDATA[redis源码学习02：跳跃表插入结点]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/106912476</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/106912476</guid><author>wxf306989618</author><pubDate>Mon, 22 Jun 2020 23:37:21 +0800</pubDate><description><![CDATA[本文是本人在学习redis源码时的笔记，本文主要是对跳跃表插入结点代码的中文注释，如有错误欢迎指正。

有关跳跃表的原理可以上网搜材料，有很多。

首先看下redis源码里有关跳跃表的相关结构体：


typedef struct zskiplistNode {  // 跳跃表节点
    sds ele;        // zset元素
    double score;   // zset分值
    struct zskiplistNode *backward; // 单前level的后一个node]]></description><category></category></item><item><title><![CDATA[redis源码学习01：字符串sds]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/105641037</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/105641037</guid><author>wxf306989618</author><pubDate>Mon, 20 Apr 2020 18:06:53 +0800</pubDate><description><![CDATA[前言

本文是redis源码关于字符串处理的学习笔记，欢迎指正。 redis版本是5.0.5，redis的功能、用途及性能我就不做赘述了。

正文

进入正题，redis提供了自己的字符串存储及相关操作，源码文件在sds.h和sds.c里。 在学习代码的过程中发现redis使用了一个比较巧妙的设计，redis里存储字符串不是简单的使用C语言里的char *来存储，而是利用C语言指针可以加减运算的特...]]></description><category></category></item><item><title><![CDATA[为什么kafka通过代理连不上]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/104997559</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/104997559</guid><author>wxf306989618</author><pubDate>Fri, 20 Mar 2020 20:13:44 +0800</pubDate><description><![CDATA[问题

今天安装了kafka可视化工具kafkatool，但是由于公司开发机的端口有限制，所以通过nginx做了一个tcp的代理。但是奇怪kafka都正常，端口也都正常，就是连不上服务端。

原因

Kafka 客户端在连接 Broker 的时候，Broker 将客户端发来的请求带的信息与 Broker 启动时上报给 Zookeeper 的信息 进行了比对，比对相同则认证通过，反之建立连接失败！...]]></description><category></category></item><item><title><![CDATA[C++正则表达式regex初探及踩的坑]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/104435701</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/104435701</guid><author>wxf306989618</author><pubDate>Fri, 21 Feb 2020 21:50:55 +0800</pubDate><description><![CDATA[前言

前段时间开发的过程需要对字符串匹配过滤操作，这就涉及到了正则表达的功能。这篇文章是个人对c++正则表达式程序库regex使用的笔记，如有不正确的地方欢迎指正。

Regex库简介

Regex是从c++ 11开始有的。
c++正则表达式提供了以下几个主要功能：

Math：将整个输入与正则表达式进行比对。
	Search：查找是否与正则表达式匹配的子串。
	Tokenize：根据正则表达式...]]></description><category></category></item><item><title><![CDATA[C/C++函数库调用和系统调用的区别]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/102582479</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/102582479</guid><author>wxf306989618</author><pubDate>Wed, 16 Oct 2019 11:41:14 +0800</pubDate><description><![CDATA[函数库调用是语言或应用程序的一部分，而系统调用是操作系统的一部分。

  系统调用是在操作系统内核发现的一个“trap”或中断后进行的。

函数库调用vs.系统调用
	函数库调用
			系统调用
		在所有的ANSIC编译器版本中，C函数库是相同的
			各个操作系统的系统调用是不同的
		它调用函数库中的一个程序
			它调用系统内核的服务
		与用户程序相联系
			是操作系统的...]]></description><category></category></item><item><title><![CDATA[CentOs7.4卡顿]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/101293161</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/101293161</guid><author>wxf306989618</author><pubDate>Tue, 24 Sep 2019 18:26:17 +0800</pubDate><description><![CDATA[现象

今天公司的开发机突然出现了非常卡的情况，远程登录很慢，卡半天，vi编辑文件也是卡着不动，ls等命令用tab补全也是卡半天。

分析

怀疑磁盘没空间导致的，df查看了下还用了95%，清理了日志文件，可用空间50%，问题没解决；

free查看：



内存够用

top查看：



没有cpu占用很高的进程，但是loadaverage却很高。

上网查了，有人有类似情况：http://b...]]></description><category></category></item><item><title><![CDATA[重载、类型转换与运算符]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/99648200</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/99648200</guid><author>wxf306989618</author><pubDate>Fri, 16 Aug 2019 11:04:28 +0800</pubDate><description><![CDATA[C++转换构造函数和类型转换运算符共同定义了类类型志换（class-typeconversions），这样的转换有时也被称作用户定义的类型转换（user-definedconversions）。

类型转换运算符

  类型转换运算符（conversionoperator）是类的一种特殊成员函数，它负责将一个类类型的值转换成其它类型，类型转换函数的一般形式如下所示：


oper...]]></description><category></category></item><item><title><![CDATA[服务治理总体结构]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/98979440</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/98979440</guid><author>wxf306989618</author><pubDate>Fri, 09 Aug 2019 19:09:05 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[分布式消息跟踪的价值总结]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/98978030</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/98978030</guid><author>wxf306989618</author><pubDate>Fri, 09 Aug 2019 18:55:57 +0800</pubDate><description><![CDATA[调用链价值汇总


]]></description><category></category></item><item><title><![CDATA[C++类的未命名对象用法]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/97259995</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/97259995</guid><author>wxf306989618</author><pubDate>Thu, 25 Jul 2019 14:38:52 +0800</pubDate><description><![CDATA[当我们编写一个lambda后，编译器将表达式翻译成一个未命名类的未命名对象。在lambda表达式产生的类中含有一个重载的函数调用运算符，例如对于我们传递给stable_sort作为最后一个实参的lambda表达式来说：


vector&lt;string&gt; words;
// 其它代码

// 根据单的长度对其进行排序，对于长度相同的单词按照字母顺序排序
stable_sort(words...]]></description><category></category></item><item><title><![CDATA[c++容器使用之排序、去重]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/97259340</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/97259340</guid><author>wxf306989618</author><pubDate>Thu, 25 Jul 2019 14:24:20 +0800</pubDate><description><![CDATA[使用场景

消除重复单词，假设有以下单词

over
			jumps
			red
			slow
			the
			fox
			quick
			turtle
			the
			red
		思路

将单词放入vector
	对vector进行排序，使得重复的单词相邻出现
	使用标准库的unique算法重排vector，使得不重复的元素出现在vector开始部分
	由于算法不能执行容器操作...]]></description><category></category></item><item><title><![CDATA[C++右值引用]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/96842521</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/96842521</guid><author>wxf306989618</author><pubDate>Mon, 22 Jul 2019 12:12:06 +0800</pubDate><description><![CDATA[说明

  为了支持移动操作，新标准引入了一种新的引用类型——右值引用（rvaluereference）。所谓右值引用就是必须绑定到右值的引用。我们通过&amp;&amp;而不是&amp;来获得右值引用。右值引用有一个重要的性质——只能绑定到一个将要销毁的对象。因此，我们可以自由地将一个右值引用的资源“移动”到另一个对象中。

左值vs右值

  一般而言，一个左值表达式表示的是一个对象...]]></description><category></category></item><item><title><![CDATA[systemd启动的程序不会生成coredump解决]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/91047155</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/91047155</guid><author>wxf306989618</author><pubDate>Thu, 06 Jun 2019 17:16:18 +0800</pubDate><description><![CDATA[今天写了个生成coredump的c++程序，发现单独执行程序时能正常生成coredump文件（ulimit -c设置为unlimited）。

但是在用systemd配置服务启动时发现不会生成coredump文件，systemd的service配置文件里已经添加了LimitCORE=infinity参数。

原因及解决办法：

查看coredump配置：



# cat  /proc/sys/k...]]></description><category></category></item><item><title><![CDATA[boost log库链接问题]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/90600613</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/90600613</guid><author>wxf306989618</author><pubDate>Mon, 27 May 2019 11:39:36 +0800</pubDate><description><![CDATA[1. 使用动态库时，要定义BOOST_LOG_DYN_LINK或者BOOST_ALL_DYN_LINK

否则会出现如下错误：


CMakeFiles/IrcChatData.dir/src/main.cpp.o: In function `boost::log::v2s_mt_posix::sources::basic_logger&lt;char, boost::log::v2s_m...]]></description><category></category></item><item><title><![CDATA[Tars服务网络模型总结]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/89469413</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/89469413</guid><author>wxf306989618</author><pubDate>Tue, 23 Apr 2019 11:48:42 +0800</pubDate><description><![CDATA[1、前言说明

 因为业务系统使用了Tars实现服务的注册、发现等分布式应用。需要了解其原理以及相关实现方法，方便故障的排除、性能优化等。

  本文档基于Tars官方资源仓库https://github.com/TarsCloud/TarsCpp.git学习，重点描述rpc模块客户端以及服务端的网络模型。方便其它开发人员学习。

 如果有错误欢迎指正。

2、服务端网络结构


...]]></description><category></category></item><item><title><![CDATA[MySql8.0.15修改root密码]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/89388523</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/89388523</guid><author>wxf306989618</author><pubDate>Thu, 18 Apr 2019 21:27:54 +0800</pubDate><description><![CDATA[1、编辑 /etc/my.cnf

在[mysqld]下添加：

skip-grant-table



2、重启Mysql

# systemctl restart mysqld



3、进入mysql操作

# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connec...]]></description><category></category></item><item><title><![CDATA[windows10安装Xshell错误1603解决办法]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/85079396</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/85079396</guid><author>wxf306989618</author><pubDate>Tue, 18 Dec 2018 21:05:52 +0800</pubDate><description><![CDATA[今天在安装XShell 6最新版时老是安装到最后一步出来回滚操作，最后弹出如下错误提示框：



解决办法：

在运行里输入regedit打开注册表编辑器
找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
将 RegistrySizeLimit（REG_DWORD类型的） 的值改为 FFFFFFFF （10进制就是 4294967295，...]]></description><category></category></item><item><title><![CDATA[ffmpeg安装ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcodec]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/83658066</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/83658066</guid><author>wxf306989618</author><pubDate>Fri, 02 Nov 2018 16:53:25 +0800</pubDate><description><![CDATA[ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcodec

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, rep...]]></description><category></category></item><item><title><![CDATA[ffmpeg库使用，undefined reference错误]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/83149101</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/83149101</guid><author>wxf306989618</author><pubDate>Thu, 18 Oct 2018 16:41:53 +0800</pubDate><description><![CDATA[ffmpeg用g++编译时的注意事项

编译时出现以下错误：

错误一：

undefined reference to `av_register_all()'
undefined reference to `avformat_open_input(AVFormatContext**, char const*, AVInputFormat*, AVDictionary**)'
undefined ...]]></description><category></category></item><item><title><![CDATA[使用boost::asio库实现多个子进程监听同一个端口]]></title><link>https://blog.youkuaiyun.com/wxf306989618/article/details/82147642</link><guid>https://blog.youkuaiyun.com/wxf306989618/article/details/82147642</guid><author>wxf306989618</author><pubDate>Tue, 28 Aug 2018 14:42:49 +0800</pubDate><description><![CDATA[
class session_http {
public:
	session_http(boost::asio::io_context &amp;amp;io) : socket_(io) {};
	void run(boost::asio::yield_context yield) {
	boost::system::error_code ec;
	boost::beast::flat_buffer b...]]></description><category></category></item></channel></rss>