<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WindSun's Blog]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WindSunLike</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WindSunLike]]></copyright><item><title><![CDATA[C++编译优化RVO&NRVO&复制省略]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/116115668</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/116115668</guid><author>WindSunLike</author><pubDate>Sat, 24 Apr 2021 15:52:00 +0800</pubDate><description><![CDATA[编译器优化技术
现代编译器缺省会使用 RVO(return value optimization，返回值优化)、NRVO(named return value optimization、命名返回值优化)和复制省略(Copy elision)技术，来减少拷贝次数来提升代码的运行效率。
注1：vc6、vs 没有提供编译选项来关闭该优化，无论是 debug 还是 release 都会进行 RVO 和复...]]></description><category></category></item><item><title><![CDATA[C++11的enable_shared_from_this]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/116115667</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/116115667</guid><author>WindSunLike</author><pubDate>Sat, 24 Apr 2021 15:50:00 +0800</pubDate><description><![CDATA[c++11 中的 shared_from_this() 来源于 boost 中的 enable_shared_form_this 类和 shared_from_this() 函数，功能为返回一个当前类的 std::share_ptr，使用方法如下：
#include&lt;memory&gt;
class Test: public std::enable_shared_from_this&lt;...]]></description><category></category></item><item><title><![CDATA[条件变量中pthread_cond_wait函数]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/108686598</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/108686598</guid><author>WindSunLike</author><pubDate>Sat, 19 Sep 2020 20:59:00 +0800</pubDate><description><![CDATA[首先看一个生产者和消费者实例，主线程作为生产者，它先创建很多消费者线程，再给队列中放入产品
#include &lt;bits/stdc++.h&gt;
#include &lt;iostream&gt;
#include &lt;pthread.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;s...]]></description><category></category></item><item><title><![CDATA[C++ tuple元组]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/108591905</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/108591905</guid><author>WindSunLike</author><pubDate>Tue, 15 Sep 2020 00:18:00 +0800</pubDate><description><![CDATA[tuple元组
tuple是一个元组容器，可以用于函数返回多个值， 一个tuple元组可以有任意数量的成员
tuple的两种初始化方式：
tuple&lt;int, int&gt; t1(1, 2);
tuple&lt;int, int&gt; t2{1, 2};
make_tuple用于生成tuple对象，和pair和make_pire类似:
auto t3 = make_tuple(...]]></description><category></category></item><item><title><![CDATA[操作系统面试题总结]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/108232346</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/108232346</guid><author>WindSunLike</author><pubDate>Wed, 26 Aug 2020 02:43:00 +0800</pubDate><description><![CDATA[进程的常见状态？以及各种状态之间的转换条件?

创建状态：进程在创建时需要申请一个空白PCB，向其中填写控制和管理进程的信息，完成资源分配。如果创建工作无法完成，比如资源无法满足，就无法被调度运行，把此时进程所处状态称为创建状态
就绪状态：进程已经准备好，已分配到所需资源，只要分配到CPU就能够立即运行
执行状态：进程处于就绪状态被调度后，进程进入执行状态
阻塞状态：正在执行的进程由于某...]]></description><category></category></item><item><title><![CDATA[Socket编程的基本函数]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/107755305</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/107755305</guid><author>WindSunLike</author><pubDate>Sun, 02 Aug 2020 23:25:00 +0800</pubDate><description><![CDATA[基本的套接字编程
socket函数
想要执行网络I/O，首先需要调用socket函数创建套接字，需要头文件#include &lt;sys/socket.h&gt;
int socket (int domain, int type, int protocol);
参数：

domain : 执行协议域，取值如下：




domain
说明




AF_INET
IPV4协议


AF...]]></description><category></category></item><item><title><![CDATA[Linux下SVN操作常用命令]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/107076137</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/107076137</guid><author>WindSunLike</author><pubDate>Wed, 01 Jul 2020 21:49:00 +0800</pubDate><description><![CDATA[检出
svn co http://路径(目录或文件的全路径)　[本地目录全路径] --username 用户名 --password 密码
svn co svn://路径(目录或文件的全路径)　[本地目录全路径] --username 用户名 --password 密码
svn checkout http://路径(目录或文件的全路径)　[本地目录全路径] --username　用户名
...]]></description><category></category></item><item><title><![CDATA[C++11的function函数对象]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/106679311</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/106679311</guid><author>WindSunLike</author><pubDate>Wed, 10 Jun 2020 00:52:00 +0800</pubDate><description><![CDATA[C++函数种类
C++中的函数种类很多：

函数
函数指针
Lambda函数
bind创建的对象
仿函数（重载了函数调用运算符的类）

但这些函数可能共享一种调用方式。调用形式指明了调用返回的类型以及传递给调用的实参类型。比如：int(int, int);
使用function
std::function是一个通用的多态函数包装器，可以调用普通函数、Lambda函数、仿函数、bind对象...]]></description><category></category></item><item><title><![CDATA[C++11的bind函数]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/106632895</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/106632895</guid><author>WindSunLike</author><pubDate>Tue, 09 Jun 2020 00:23:00 +0800</pubDate><description><![CDATA[参数绑定
如果一个函数只在一两个地方操作，使用Lambad很方便，如果在很多地方操作，编写多次相同的Lambda函数就很不方便，需要定义函数。但是，定义的函数又不能完全代替能捕捉局部变量的Lambda函数，所以就出现了bind函数。
bind函数是C++11标准库的函数，需要添加头文件
#include &lt;functional.h&gt;

bind就是一个通用的函数适配器，它可以...]]></description><category></category></item><item><title><![CDATA[QTcpServer服务器无法监听和客户端连接不上问题]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/106248368</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/106248368</guid><author>WindSunLike</author><pubDate>Wed, 20 May 2020 11:51:00 +0800</pubDate><description><![CDATA[使用 QTcpServer ，使用 listen 函数监听局域网地址 （192.168.97.217）的时候，发现返回的结果为 false，无法监听，通过语句qDebug() &lt;&lt; server-&gt;errorString(); 打印出的错误字串为
The proxy type is invalid for this operatoin；
但是，当我修改绑定的地址语句为 ...]]></description><category></category></item><item><title><![CDATA[Windows10禁用WD（Windows Defender）和启用方法]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105873536</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105873536</guid><author>WindSunLike</author><pubDate>Thu, 30 Apr 2020 20:54:00 +0800</pubDate><description><![CDATA[来自yaya141319大佬从神州版Win10得到的方法
使用方法：新建一个XXX.bat文件,将代码复制进去，右键管理员方式运行。
禁用
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender]
"DisableAntiSpyware"=...]]></description><category></category></item><item><title><![CDATA[vim 分屏基本操作]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105815914</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105815914</guid><author>WindSunLike</author><pubDate>Tue, 28 Apr 2020 10:08:00 +0800</pubDate><description><![CDATA[vim 分屏操作
横竖分屏打开新文件
:sp filename
:split filename
:vsp filename
:vsplit filename
:sview filename  -&gt;只读分屏打开文件

从命令行直接打开多个文件且是分屏
vim -On file1, file2 ...  -&gt;垂直分屏
vim -on file1, file2 ...  -&gt;...]]></description><category></category></item><item><title><![CDATA[GDB 调试多线程程序的总结]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105804768</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105804768</guid><author>WindSunLike</author><pubDate>Mon, 27 Apr 2020 11:06:00 +0800</pubDate><description><![CDATA[gdb 中step、next与finish的区别
step	就是单步执行，遇到子函数就进入并且继续单步执行；在其他调试其中相当于step-into命令，作用是移动到下一个可执行的代码行。如果当前行是一个函数调用，则调试器进入函数并停止在函数体的第一行。step可以帮助初步揭开代码位置的谜团，例如：函数调用和函数本身可能在不同的文件中。
next	是在单步执行时，在函数内遇到子函数时不会进...]]></description><category></category></item><item><title><![CDATA[vim常用快捷键笔记]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105781851</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105781851</guid><author>WindSunLike</author><pubDate>Sun, 26 Apr 2020 16:47:00 +0800</pubDate><description><![CDATA[模式切换
Vim一共有4个模式：

正常模式 (Normal-mode) :正常模式一般用于浏览文件，也包括一些复制、粘贴、删除等操作
插入模式 (Insert-mode)：在正常模式中按下i, I, a, A等键
命令模式 (Command-mode)：在正常模式中，按下：（冒号）键，会进入命令模式
可视模式 (Visual-mode)：在正常模式按下v, V, \&lt;Ctrl&g...]]></description><category></category></item><item><title><![CDATA[shell脚本的常用参数]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105743978</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105743978</guid><author>WindSunLike</author><pubDate>Fri, 24 Apr 2020 16:52:00 +0800</pubDate><description><![CDATA[文件表达式
-e filename	如果 filename存在，则为真
-d filename	如果 filename为目录，则为真
-f filename	如果 filename为常规文件，则为真
-L filename	如果 filename为符号链接，则为真
-r filename	如果 filename可读，则为真
-w filename	如果 filename可写，则为真
-x...]]></description><category></category></item><item><title><![CDATA[Qt中使用Protobuf简单案例(Windows + msvc)]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105185421</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105185421</guid><author>WindSunLike</author><pubDate>Sun, 29 Mar 2020 20:58:45 +0800</pubDate><description><![CDATA[编译protobuf
首先下载protobuf源代码
使用cmake,配置相关路径和配置
注意选择生成动态链接库，在windows上最好勾选动态链接库，否则会出现很多麻烦

点Generate，生成VS的工程文件。
然后打开vs，选择release或debug
点击解决方案直接右键选择生成解决方案即可。
注意：debug生成的库在Qt中只能在debug下使用，release生成的库只能在relea...]]></description><category></category></item><item><title><![CDATA[使用PicGo和Typora写Markdown]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105172885</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105172885</guid><author>WindSunLike</author><pubDate>Sat, 28 Mar 2020 20:02:00 +0800</pubDate><description><![CDATA[前言
喜欢写博客的朋友们经常会选择使用Markdown格式，因为现在主流的博客平台都支持并推荐使用Markdown。但是不好的地方是，在Markdown中显示图片成了问题，因为需要一个图床来保存图片，只需要引入图片链接即可,虽然已经有了很多免费图床，但有时候会失效，所以还是推荐搭建自己的图床，这里，选择使用github免费仓库和PicGo来搭建自己的图床
下载 PicGo
PicGo下载...]]></description><category></category></item><item><title><![CDATA[CentOS7安装protobuf(C++)和简单使用]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105021823</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105021823</guid><author>WindSunLike</author><pubDate>Sun, 22 Mar 2020 01:49:00 +0800</pubDate><description><![CDATA[下载 protobuf
下载地址
使用wget下载，或者手动下载好FTP传到Linux上
在Linux 64位环境下进行编译
我下载的是protobuf-all-3.11.4.tar.gz 包
首先解压
tar zxvf protobuf-all-3.11.4.tar.gz
进入解压目录
cd protobuf-3.11.4/
安装 protobuf
此时可能会遇到报错,如:autore...]]></description><category></category></item><item><title><![CDATA[protobuf编译、安装和简单使用C++ (Windows+VS平台)]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105021822</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105021822</guid><author>WindSunLike</author><pubDate>Sat, 21 Mar 2020 22:44:00 +0800</pubDate><description><![CDATA[windows下安装Protobuf
首先需要下载源代码
下载如下cpp版本

解压后得到一个目录，等下CMake会用到
如果你电脑没有CMake，需要去官网下载

双击打开下载解压后的CMake目录/bin/cmake-gui.exe
现在，选择刚才解压的目录，和构建输出目录

然后选择Configure

选择你的VS版本，然后finish即可

点击Generate,成功后，进入生...]]></description><category></category></item><item><title><![CDATA[protocol buffers 文档(一)-语法指导]]></title><link>https://blog.youkuaiyun.com/WindSunLike/article/details/105003145</link><guid>https://blog.youkuaiyun.com/WindSunLike/article/details/105003145</guid><author>WindSunLike</author><pubDate>Sat, 21 Mar 2020 01:39:00 +0800</pubDate><description><![CDATA[前言
翻译查阅外网资料过程中遇到的比较优秀的文章和资料，一是作为技术参考以便日后查阅，二是训练英文能力。
此文翻译自 Protocol Buffers 官方文档 Developer Guide 部分
protocol buffers 介绍
protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法，它可用于通信协议、数据存储等。protocol buffer...]]></description><category></category></item></channel></rss>