<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BlackCarDriver的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BlackCarDriver</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BlackCarDriver]]></copyright><item><title><![CDATA[C++11 多线程]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105623063</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105623063</guid><author>BlackCarDriver</author><pubDate>Sun, 19 Apr 2020 21:47:20 +0800</pubDate><description><![CDATA[本文讨论C++11 中如何创建和使用多线程，以及如何解决资源进程、数据同步等问题。
C++ 11 多线程
文章目录C++ 11 多线程创建和使用线程连接和分离线程关于参数传递数据竞争问题与解决顺序控制线程返回值std::asyncstd::packaged_task注意事项
创建和使用线程
在C ++ 11中，我们可以通过创建std :: thread类的对象来创建其他线程。每个std :: th...]]></description><category></category></item><item><title><![CDATA[四则运算表达式求值]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105556940</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105556940</guid><author>BlackCarDriver</author><pubDate>Thu, 16 Apr 2020 14:50:55 +0800</pubDate><description><![CDATA[本文将讨论什么是运算表达式，如何用代码实现中缀表达式转后缀表达式、前缀表达式，以及对后缀表达式的求值。]]></description><category></category></item><item><title><![CDATA[C++11智能指针]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105538286</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105538286</guid><author>BlackCarDriver</author><pubDate>Wed, 15 Apr 2020 16:35:58 +0800</pubDate><description><![CDATA[C++11智能指针
本文将讨论C++ 11 中的智能指针，如何使用以及注意事项。
share_ptr
shared_ptr是c ++ 11提供的一种Smart Pointer类，它能够在不再被引用的时候自动释放内存，从而帮助我们消除内存泄漏和指针悬空的问题。shared_ptr 对象内部指向两个内存，分别是目标对象的内存以及一个引用计数器。当shared_ptr关联到一个指针时，它会让引用计数器加...]]></description><category></category></item><item><title><![CDATA[C++元组 - tuple]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105505516</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105505516</guid><author>BlackCarDriver</author><pubDate>Tue, 14 Apr 2020 09:57:53 +0800</pubDate><description><![CDATA[本文讨论什么是std::tuple以及其使用方法。
std::tuple
std :: tuple是可以将一至多个类型绑定在一起的类型。创建元组对象时，需要将元素的类型指定为模板参数。我们可以从函数中返回该元组对象，它可以帮助我们从一个函数返回多个值从而避免创建不必要的结构。


创建元组示例
声明一个tuple，它是是个int,char,string的集合
tuple&lt;int, char,...]]></description><category></category></item><item><title><![CDATA[关于 C++11 Lambdas]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105491838</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105491838</guid><author>BlackCarDriver</author><pubDate>Mon, 13 Apr 2020 16:39:42 +0800</pubDate><description><![CDATA[Lambdas
本文将介绍什么是Lambdas函数及如何使用Lambdas函数。
什么是Lambdas函数
Lambda函数是C ++中的一种匿名函数，主要用作C ++中的回调，它主要在我们必须创建非常小的函数以作为回调传递给另一个API时使用。
使用场景和示例
假设现在我有一个整数数组，我想遍历此数组并使用STL算法for_each打印所有元素。
首先让我们使用函数指针来做到这一点，
void ...]]></description><category></category></item><item><title><![CDATA[可变参数模板]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105465678</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105465678</guid><author>BlackCarDriver</author><pubDate>Sun, 12 Apr 2020 10:42:38 +0800</pubDate><description><![CDATA[可变参数模板
C++11引进了一个新功能：Variadic Template Function (可变参数模板)。通过可变参数模板，我们可以创建出接受任意类型、任意个数参数的函数。
如何使用
一个声明可变参数模板的简单例子：
template&lt;typename T, typename ... Args&gt;
void log(T first, Args ... args);

上面的函数可...]]></description><category></category></item><item><title><![CDATA[关于 auto]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105464596</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105464596</guid><author>BlackCarDriver</author><pubDate>Sun, 12 Apr 2020 09:31:50 +0800</pubDate><description><![CDATA[关于 auto
C++11 中引进了auto。auto 即自动类型，可以让我们声明一个变量而无需指定其类型，类型会根据初始值而被确定。下文介绍如何使用auto以及一些注意事项。
如何使用
一个简单的例子：
auto var_1 = 5;
auto var_2 = 'C';
cout &lt;&lt; typeid(var_1).name() &lt;&lt; endl;	//int
cout &l...]]></description><category></category></item><item><title><![CDATA[关于std::bind]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105452053</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105452053</guid><author>BlackCarDriver</author><pubDate>Sat, 11 Apr 2020 14:25:02 +0800</pubDate><description><![CDATA[关于 std::bind
std::bind C++ 11 的一个新函数，返回值为一个函数对象，可以看作一个通用的函数适配器。它接受一个函数作为参数，并返回一个新的函数同时将一至多个参数绑定到返回的函数中。下文的内容包括如何使用bind 以及什么时候使用bind。
如何使用
假如我们已经有一个函数：
int add(int a, int b){
	return a + b;
}

bind将一个函...]]></description><category></category></item><item><title><![CDATA[Delete 关键字新特性]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105434598</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105434598</guid><author>BlackCarDriver</author><pubDate>Fri, 10 Apr 2020 15:27:28 +0800</pubDate><description><![CDATA[Delete 关键字新特性
在C ++ 11中，引入了关键字delete的新功能。我们可以将delete关键字应用于限制函数的使用。
下文将演示以下常见的使用场景：

应用于编译器自动生成的函数以禁止使用特定的操作(如复制，比较)
应用在成员函数上防止数据类型转换时导致数据丢失
应用在new运算符上来限制堆上对象的创建
应用在模板类上来限制创建特定的类实例


禁用复制构造函数和赋值运算符
我们可...]]></description><category></category></item><item><title><![CDATA[二进制乘除法运算原理]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105247856</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/105247856</guid><author>BlackCarDriver</author><pubDate>Wed, 01 Apr 2020 16:42:32 +0800</pubDate><description><![CDATA[二进制乘除法原理
计算机所能完成的最基本操作是加减法和左右移。
虽然ISA中一般都有MUL类指令，但是这些经过译码之后最终的元操作还是加法和移位指令。
二进制乘法
假设不能使用乘除运算求a×b的结果，当a=b=123时，最直接的方法是通过88个88相加。但是，我们不难发现这样的规律：
123 × 123 = （100+20+3）×123 = （100×123） + （20 × 123） + （3 ...]]></description><category></category></item><item><title><![CDATA[经典排序算法复习]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104725718</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104725718</guid><author>BlackCarDriver</author><pubDate>Sun, 08 Mar 2020 00:17:41 +0800</pubDate><description><![CDATA[十大经典排序算法
备忘录
本博客用于快速复习几种简单排序算法。这些算法虽然经典，但是都很简单，只要明白其思想和原理，都能很快写出来。关键是要把握好一些细节之处，例如循环边界等。

代码
#pragma warning(disable : 4996)
#include&lt;iostream&gt;
#include&lt;vector&gt;
#include&lt;algorithm&gt;
#...]]></description><category></category></item><item><title><![CDATA[最短路之Bellman-ford 算法]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104691979</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104691979</guid><author>BlackCarDriver</author><pubDate>Fri, 06 Mar 2020 11:16:37 +0800</pubDate><description><![CDATA[Bellman-ford 算法
算法摘要
作用：单源有向图上求最短路
特点：能适应负权边的情况
思想：动态规划
时间复杂度： O(点数×变数)
原理：对所有的边进行n-1轮松弛操作，(n个顶点的图中，任意两点之间的路径最多包含n-1边)
注意事项：需要判断是否产生负权回路 (再对边进行一次内部循环，如果还有可以松弛的点，说明有负权回路)
c++代码
#include&lt;iostream&gt;...]]></description><category></category></item><item><title><![CDATA[STL常用函数应用举例]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104656306</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104656306</guid><author>BlackCarDriver</author><pubDate>Wed, 04 Mar 2020 16:27:29 +0800</pubDate><description><![CDATA[STL常用函数应用举例
备忘录


只要明白函数的作用，一般即可以联想到其参数。


像unique(), remove()这类的函数需要注意，对容器进行操作后不会改变原有的元素个数，可以通过函数返回的迭代器进行下一步操作。


对于一些会改变元素个数的操作，如merger(),结果需要放到一个新的容器里面，并且传参时仅需开始迭代器。


对于copy类函数：存放结果的容器串传参时只需开始迭代器；...]]></description><category></category></item><item><title><![CDATA[C++堆排序模板]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104640937</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/104640937</guid><author>BlackCarDriver</author><pubDate>Tue, 03 Mar 2020 20:47:12 +0800</pubDate><description><![CDATA[C++堆排序模板
#pragma warning(disable : 4996)
#include&lt;iostream&gt;
#include&lt;vector&gt;
#define ARRAY vector&lt;int&gt;	//下标从0开始有效
using namespace std;


//调整最大堆(升序)
void heapAdjust(ARRAY *ary, int r...]]></description><category></category></item><item><title><![CDATA[计算机操作系统笔记]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103747940</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103747940</guid><author>BlackCarDriver</author><pubDate>Sat, 28 Dec 2019 20:03:31 +0800</pubDate><description><![CDATA[计算机操作系统总笔记
文章目录计算机操作系统总笔记引论语录操作系统的目标和作用操作系统的发展过程操作系统的基本特征操作系统的主要功能进程的描述与控制前趋图和程序执行进程的描述进程控制进程同步经典进程的同步问题进程通信线程的基本概念线程的实现处理机的调度和死锁处理机调度的层次和调度算法的目标作业和作业调度进程调度实时调度死锁概述预防死锁避免死锁死锁的检查与解除存储器管理存储器的层次结构程序的装入和链...]]></description><category></category></item><item><title><![CDATA[c++保存 vector 到文件]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103690469</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103690469</guid><author>BlackCarDriver</author><pubDate>Tue, 24 Dec 2019 22:05:09 +0800</pubDate><description><![CDATA[c++ 保存 vector 到文件
实现将vector中的数据保存到二进制文件和从文件中读取数据并还原vector并不难，关键是要把握好一些小细节背后的原理，以及确定好存储的格式。确定格式跟网络通信中的通信协议非常相似，只用存取双方都依照协议行事，才能完成完整步骤。以下代码提供例子，仅供参考：
#include&lt;iostream&gt;
#include&lt;stdio.h&gt;
#in...]]></description><category></category></item><item><title><![CDATA[磁盘调度算法]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103436784</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103436784</guid><author>BlackCarDriver</author><pubDate>Sat, 07 Dec 2019 16:38:27 +0800</pubDate><description><![CDATA[磁盘调度算法
本文内容
用c++写了一个简单的控制台程序用来演示几种调度算法的磁头移动过程, 包括：

先来先服务法（First-Come, First-Served，FCFS）。
最短寻道时间优先法（Shortest Seek Time First， SSTF）。
电梯法。


知识点
先来先服务算法（FCFS ）First Come First Service
特点：一种简单的磁盘调度算法。根...]]></description><category></category></item><item><title><![CDATA[QT中引入WinPcap]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103389542</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103389542</guid><author>BlackCarDriver</author><pubDate>Wed, 04 Dec 2019 16:46:31 +0800</pubDate><description><![CDATA[在Qt项目中使用Winpcap注意需要做以下（包括但不限于）前期准备：
1.修改.pro文件，例如：
INCLUDEPATH += D:/WorkPlace/C++WorkPlace/Library/WpdPack/Include
LIBS += "-LD:/WorkPlace/C++WorkPlace/Library/WpdPack/Lib" -lwpcap -lws2_32

DEFINES ...]]></description><category></category></item><item><title><![CDATA[银行家算法]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103215118</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103215118</guid><author>BlackCarDriver</author><pubDate>Sat, 23 Nov 2019 15:56:34 +0800</pubDate><description><![CDATA[银行家算法
银行家算法主要用于避免死锁。原理是进行资源分配之前先计算资源分配的安全性，分配不会导致系统进入不安全状态，则将资源分配给进程。否则让进程等待。注意该算法的核心是安全性的判断：可以理解成一个闯关游戏，若主角的攻击力、防御力、（剩余资源数量）全部都高于某个敌人对应的攻击力、防御力（对应的请求资源的数量）， 则主角可以打败这个怪兽并全部获取怪兽的属性（分配和回收资源），若主角可以在这个规则下...]]></description><category></category></item><item><title><![CDATA[ubuntu搭建FTP服务器]]></title><link>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103103680</link><guid>https://blog.youkuaiyun.com/BlackCarDriver/article/details/103103680</guid><author>BlackCarDriver</author><pubDate>Sat, 16 Nov 2019 22:06:44 +0800</pubDate><description><![CDATA[FTP服务搭建和使用
ubutu搭建FTP服务


安装ftp程序
sudo apt-get install vsftpd

安装后可以通过sudo service vsftpd restart 启动以及来判断程序是否安装成功。


前期准备


创建ftp工作目录
mkdir /home/ubuntu/workplace/ftpShare



为工作目录创建或指定一个特定的用户,如public...]]></description><category></category></item></channel></rss>