<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_43771439的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_43771439</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_43771439]]></copyright><item><title><![CDATA[负载均衡及软、硬负载简介]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/128282618</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/128282618</guid><author>qq_43771439</author><pubDate>Mon, 12 Dec 2022 09:57:24 +0800</pubDate><description><![CDATA[主要是再服务端，比如我们访问百度获取一些信息，其实访问的是代理服务器，反向代理服务器将链接负载到百度真实的服务器，我们感受不到代理服务器的存在。在客户端由用户主动发起，例如翻墙软件，客户端通过主动访问代理服务器，通过代理服务器获取外网数据再转发回客户端。通过特定的负载均衡软件（nginx）等实现对请求的分配派发。（所以它的负载均衡策略也就是nginx的均衡策略）硬件负载的效率比较高（但是性价比太高）。它的原理是把目标IP地址改为后台服务器的ip地址。通过硬件实现的负载均衡，数据包转发功能。]]></description><category></category></item><item><title><![CDATA[MrDoc本地测试及Apache部署]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/127068741</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/127068741</guid><author>qq_43771439</author><pubDate>Tue, 27 Sep 2022 14:52:31 +0800</pubDate><description><![CDATA[MrDoc apache部署]]></description><category></category></item><item><title><![CDATA[Linux中IO复用之select，poll和epoll]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/115351560</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/115351560</guid><author>qq_43771439</author><pubDate>Tue, 19 Apr 2022 18:50:36 +0800</pubDate><description><![CDATA[问题：如果我们先前创建的几个进程承载不了目前快速发展的业务的话，是不是还得增加进程数？我们都知道系统创建进程是需要消耗大量资源的，所以这样就会导致系统资源不足的情况。
那么有没有一种方式可以让一个进程同时为多个客户端端提供服务？
接下来要讲的IO复用技术就是对于上述问题的最好解答。
对于IO复用，我们可以通过一个例子来很好的理解它。（
例子来自于《TCP/IP网络编程》）
某教室有10名学生和1名老师，这些学生上课会不停的提问，所以一个老师处理不了这么多的问题。那么学校为每个学生都配一名老师，也就是这个教室]]></description><category></category></item><item><title><![CDATA[C++ 移动语义]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/124239410</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/124239410</guid><author>qq_43771439</author><pubDate>Mon, 18 Apr 2022 00:34:39 +0800</pubDate><description><![CDATA[在谈论移动语义之前，我们先来了解一下什么是左值和右值。

左值和右值
c++中，左值代表一个在内存中有确定位置的对象（有地址）。而右值不在内存中有确定位置，比如临时变量、表达式、匿名变量和lambda表达式等。（左值和已被修改 而右值不能）左值是持续的；右值是短暂的，并且右值不会将原对象置于有效状态。
PS：一个变量的生命周期在超出作用域后结束。如果一个变量代表一个对象，当然这个对象的生命周期也在那时结束。对于临时对象也是如此，C++ 的规则是：一个临时对象会在包含这个临时对象的完整表达式估值完成后、按..]]></description><category></category></item><item><title><![CDATA[力扣11、盛最多水的容器]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/124108949</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/124108949</guid><author>qq_43771439</author><pubDate>Mon, 11 Apr 2022 22:33:47 +0800</pubDate><description><![CDATA[力扣刷题 盛最多水的容器]]></description><category></category></item><item><title><![CDATA[浅谈静态链接]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/121174381</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/121174381</guid><author>qq_43771439</author><pubDate>Sat, 06 Nov 2021 10:13:32 +0800</pubDate><description><![CDATA[  在前文源文件到目标文件的过程中，我们知道一个程序的编译分为三步：预编译、编译、汇编。当汇编生成可重定位的二进制目标文件之后，我们就需要将目标文件和库链接起来形成可执行文件。
  链接分为两种，一种是静态链接，一种是动态链接。它们的区别是静态链接是在可执行文件之前就进行链接，而动态链接则是在程序运行时进行链接。本文主要简述静态链接及其过程，动态链接后续再说。
首先为什么要有静态链接呢？
  因为我们在程序开发的过程中，肯定不会只有一个源文件，大型软件往往拥有成千上万个代码模块，这些模块之间相互依赖又相互独]]></description><category></category></item><item><title><![CDATA[源代码到目标文件的过程--------目标文件里有什么]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/121156446</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/121156446</guid><author>qq_43771439</author><pubDate>Fri, 05 Nov 2021 12:52:33 +0800</pubDate><description><![CDATA[在谈论目标文件里面有什么内容之前，我们先来看一下，一个程序如何从源代码变成一个目标文件。
源代码到目标文件的过程
一个程序从源文件到可执行文件要经过四个步骤：

预处理
编译
汇编
（链接）
我们简单介绍一下。（以下命令全部采用Linux上的GCC编译器命令。我们以hello.c文件为例）
预处理：gcc -E hello.c -o hello.i


1、删除所有的#define和注释，展开所有宏定义。
2、处理所有的条件预编译指令，如#if #ifndef等。
3、处理#include指令，将有关头文件]]></description><category></category></item><item><title><![CDATA[C++中哈希表小结]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/119000580</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/119000580</guid><author>qq_43771439</author><pubDate>Thu, 22 Jul 2021 15:37:52 +0800</pubDate><description><![CDATA[1、hashtable
hashtable 的目的是为了提供任何操作都是常数级别。SGI STL 中， hash table 使用了 开链法 实现的。大致的意思如下图所示：
hash table 内的元素为 桶子（bucket），每个桶子里面有很多节点。其实有点像我们前面整理的 deque（双端队列），双端队列主控是个指向指针的指针，而hash table是一个vector；双端队列缓冲区是一块连续内存，像是array，而hash table 则是一个类似的单向链表。一下便是一个node节点的结构：
tem]]></description><category></category></item><item><title><![CDATA[C++中友元介绍]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/115533245</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/115533245</guid><author>qq_43771439</author><pubDate>Thu, 08 Apr 2021 22:35:38 +0800</pubDate><description><![CDATA[为什么要引入友元？
采用类的机制后实现了数据的隐藏与封装，类的数据成员一般定义为私有成员，成员函数一般定义为公有的，由此提供类与外界间的通信接口。有时候其他类或函数要访问该类的非共有成员，方法为令其他类或者函数成为它的友元。
友元函数
若类想把一个函数作为它的友元，加一条以friend关键字开头的函数声明语句即可。
格式如下：
friend &lt;类型&gt; &lt;函数名&gt;；
友元可以访问类的私有成员，其本身是定义在类外的普通函数，但是友元的声明只能常出现在类定义的内部。
友元不是类的成员也不受]]></description><category></category></item><item><title><![CDATA[C++中sizeof小结]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/115505889</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/115505889</guid><author>qq_43771439</author><pubDate>Thu, 08 Apr 2021 09:51:48 +0800</pubDate><description><![CDATA[首先，sizeof是一个操作符。
其作用是返回一个对象或类型所占的内存字节数。
其返回值为 size_t，依赖于编译系统的值，一般定义为 typedef unsigned int size_t。
32位机下：

# include &lt;iostream&gt;
using namespace std;
//空类大小
class Empty{};
class Son : public::Empty{};

//静态成员函数和静态成员
class Sfun {
public:
	static int a;
]]></description><category></category></item><item><title><![CDATA[C++中内联函数——inline]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/115497795</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/115497795</guid><author>qq_43771439</author><pubDate>Wed, 07 Apr 2021 22:34:01 +0800</pubDate><description><![CDATA[在大多数机器上，调用函数要做很多工作：调用前要保存寄存器，并在返回时恢复、复制实参，程序还必须转向一个新位置执行。
C++中支持内联函数，其目的是为了解决程序中函数调用问题，提高函数执行效率，用关键字inline放在函数定义的前面可将函数指定为内联函数。


关键字inline必须放在函数定义前面才能使函数成为内联，放在声明前面不起任何作用。
头文件中声明方法：
class A
{
public:
    void f1(int x); 

    /**
     * @brief 类中定义了的函数是隐式]]></description><category></category></item><item><title><![CDATA[面试题---链表相交]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/115311213</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/115311213</guid><author>qq_43771439</author><pubDate>Mon, 29 Mar 2021 21:03:10 +0800</pubDate><description><![CDATA[给定两个（单向）链表，判定它们是否相交并返回交点。请注意相交的定义基于节点的引用，而不是基于节点的值。换句话说，如果一个链表的第k个节点与另一个链表的第j个节点是同一节点（引用完全相同），则这两个链表相交。 示例 1： 输入：intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出：Reference of the node with value = 8 输入解释：相交节点的值为 8 （注意，如]]></description><category></category></item><item><title><![CDATA[linux-----线程学习]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/114899488</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/114899488</guid><author>qq_43771439</author><pubDate>Tue, 16 Mar 2021 20:39:12 +0800</pubDate><description><![CDATA[并行和并发的区别

并发(concurrency)：在操作系统中，是指一个时间段中有几个程序都处于已启动运行到运行完毕之间，且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。（并发是指同一时刻只能有一条指令执行，但多个进程指令被快速轮换执行，使得在宏观上有多个进程被同时执行的效果–宏观上并行，针对单核处理器）

互斥：进程间相互排斥的使用临界资源的现象，就叫互斥。
同步(synchronous)：进程之间的关系不是相互排斥临界资源的关系，而是相互依赖的关系。进一步的说明：就是前一个进程]]></description><category></category></item><item><title><![CDATA[剑指 Offer 13. 机器人的运动范围]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/110432836</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/110432836</guid><author>qq_43771439</author><pubDate>Tue, 01 Dec 2020 15:12:26 +0800</pubDate><description><![CDATA[***地上有一个m行n列的方格，从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动，它每次可以向左、右、上、下移动一格（不能移动到方格外），也不能进入行坐标和列坐标的数位之和大于k的格子。例如，当k为18时，机器人能够进入方格 [35, 37] ，因为3+5+3+7=18。但它不能进入方格 [35, 38]，因为3+5+3+8=19。请问该机器人能够到达多少个格子？
示例 1：
输入：m = 2, n = 3, k = 1
输出：3
示例 2：
输入：m = 3]]></description><category></category></item><item><title><![CDATA[Linux下的软连接和硬链接]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/110007125</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/110007125</guid><author>qq_43771439</author><pubDate>Mon, 23 Nov 2020 20:41:14 +0800</pubDate><description><![CDATA[一、引言 
1.什么是目录？ 
Linux 文件系统是树状结构的。根目录下存在一系列子目录。目录里边有文件或者子目录。 但问题在于： 
目录是什么？
文件又是什么？
12 
文件是：数据 + 属性（比如名字、创建时间、所有者之类）
目录是：一个列表，列表中的每一项是...]]></description><category></category></item><item><title><![CDATA[力扣 1535、找出数组游戏的赢家]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/109697781</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/109697781</guid><author>qq_43771439</author><pubDate>Sat, 14 Nov 2020 22:27:58 +0800</pubDate><description><![CDATA[*给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。
每回合游戏都在数组的前两个元素（即 arr[0] 和 arr[1] ）之间进行。比较 arr[0] 与 arr[1] 的大小，较大的整数将会取得这一回合的胜利并保留在位置 0 ，较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时，游戏结束，该整数就是比赛的 赢家 。
返回赢得比赛的整数。
题目数据 保证 游戏存在赢家。
示例 1：
输入：arr = [2,1,3,5,4,6,7], k = 2
输出：5
解释：一起看一下本场游戏每回]]></description><category></category></item><item><title><![CDATA[力扣 605、种花问题]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/109687345</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/109687345</guid><author>qq_43771439</author><pubDate>Sat, 14 Nov 2020 10:59:05 +0800</pubDate><description><![CDATA[力扣 605、种花问题
假设你有一个很长的花坛，一部分地块种植了花，另一部分却没有。可是，花卉不能种植在相邻的地块上，它们会争夺水源，两者都会死去。
给定一个花坛（表示为一个数组包含0和1，其中0表示没种植花，1表示种植了花），和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花？能则返回True，不能则返回False。
示例 1:
输入: flowerbed = [1,0,0,0,1], n = 1
输出: True
示例 2:
输入: flowerbed = [1,0,0,0,1], n = 2
]]></description><category></category></item><item><title><![CDATA[剑指offer题03、数组中重复数组]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/109376744</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/109376744</guid><author>qq_43771439</author><pubDate>Fri, 30 Oct 2020 00:37:26 +0800</pubDate><description><![CDATA[剑指offer题03、数组中重复数组
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
示例输入：
[]]></description><category></category></item><item><title><![CDATA[C++ const关键字]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/109087294</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/109087294</guid><author>qq_43771439</author><pubDate>Wed, 14 Oct 2020 23:03:25 +0800</pubDate><description><![CDATA[Const关键字：
1、const意味着“只读”；
2、Const指定一个变量不被修改，在C++中定义const变量时，必须先初始化；
3、对指针而言：
常量指针：const int *p;//p（指针指向的内容）不可变，但p（指针）可变（常量指针必须初始化）
指针常量：int * const p;//指针P不能被重新赋值 而p（即指针指向的内容）可变
4、默认情况下，const对象被设定为仅在文件内有效；如果想在多个文件之间共享const对象，必须在变量的定义前添加extern关键字（extern关键字意]]></description><category></category></item><item><title><![CDATA[操作系统的发展]]></title><link>https://blog.youkuaiyun.com/qq_43771439/article/details/104648707</link><guid>https://blog.youkuaiyun.com/qq_43771439/article/details/104648707</guid><author>qq_43771439</author><pubDate>Wed, 04 Mar 2020 11:37:44 +0800</pubDate><description><![CDATA[操作系统是随着用户需求的变化而变化的，此外，还随着计算机硬件的发展而不断进行完善。

操作系统的发展分为以下几个阶段：
·人工操作
·批处理系统
·分时操作系统
·实时操作系统
·网络操作系统
·分布式操作系统
·多处理操作系统
·嵌入式操作系统
1、人工操作
用纸带或卡片进行输入输出，计算前手工装入纸带或卡片，计算完成后，手工卸取纸带或卡片；
特点：（1）无操作系统
（2）用户独占全机，CPU等...]]></description><category></category></item></channel></rss>