<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liushall]]></title><description><![CDATA[流沙聚散，谁主沉浮？]]></description><link>https://blog.youkuaiyun.com/liushall</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liushall]]></copyright><item><title><![CDATA[ubuntu20环境下使用DevStack安装Openstack-Wallaby（单节点、多节点）]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/124498509</link><guid>https://blog.youkuaiyun.com/liushall/article/details/124498509</guid><author>liushall</author><pubDate>Fri, 29 Apr 2022 16:23:50 +0800</pubDate><description><![CDATA[文章目录一、单节点部署1. 环境准备1.1 镜像源1.2 pip源1.3 安装依赖包2. OpenStack安装 - wallaby2.1 添加`stack`用户2.2 设置代理2.3 下载devstack，使用`-b`指定版本2.4 进入devstack目录，编辑配置文件2.5 开始安装2.6 安装完成二、多节点部署1. 环境准备1.1 换源、依赖安装1.1.1 镜像源1.1.2 pip源1.1.3 安装部分依赖包1.2 添加stack用户1.3 设置代理1.4 设置免密登录1.4.1 修改hosts文件]]></description><category></category></item><item><title><![CDATA[win10宽带连接断网自动重连]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/112506550</link><guid>https://blog.youkuaiyun.com/liushall/article/details/112506550</guid><author>liushall</author><pubDate>Tue, 12 Jan 2021 11:42:13 +0800</pubDate><description><![CDATA[文章目录1. 断开网络连接，重命名网络连接2. bat代码：检测到断线自动重连3. 设置开机自动执行3.1 方式一：任务计划程序3.2 方式二：用vbs代码开机运行bat
1. 断开网络连接，重命名网络连接
中文名字可能出现远程访问错误 623 系统无法为这个连接找到电话簿项目错误，需要重命名为英文或数字
2. bat代码：检测到断线自动重连
修改代码中的宽带连接名称、账户、密码，可以修改检测间隔时间TIMEOUT，单位：秒
@echo off
    
:start
ping -n 2 114.114.1]]></description><category></category></item><item><title><![CDATA[定时器与超时的设置]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81974895</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81974895</guid><author>liushall</author><pubDate>Thu, 23 Aug 2018 09:43:00 +0800</pubDate><description><![CDATA[



一、相关时间函数

1. gettimeofday()
2. time()
3. clock()




二、间隔定时器

1. setitimerval()
2. getitimerval()
3. 实时定时器的使用




三、为阻塞操作设置超时

1. alarm()
2. 给read()设置读超时














一、相关时间函数



1. gettimeofday(...]]></description><category></category></item><item><title><![CDATA[系统调用中断（EINTR）与SIGCHLD信号的处理]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81871521</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81871521</guid><author>liushall</author><pubDate>Mon, 20 Aug 2018 15:11:16 +0800</pubDate><description><![CDATA[



一、被中断的系统调用(EINTR)的理解

1. 慢系统调用是？
2. 慢系统调用的类别
3. EINTR产生的原因
5. 一般处理方法


二、SIGCHLD信号的处理
1. SIGCHLD信号的产生
2. SIGCHLD信号的处理
3. 不处理SIGCHLD的后果


三、示例代码












一、被中断的系统调用(EINTR)的理解



1. 慢系统调用是？


  慢...]]></description><category></category></item><item><title><![CDATA[【计算机网络】三次握手与四次挥手]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81697831</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81697831</guid><author>liushall</author><pubDate>Wed, 15 Aug 2018 08:58:10 +0800</pubDate><description><![CDATA[ 三次握手与四次挥手 

通过TCP/IP协议的学习，我们可以知道TCP协议是一种面向连接的、可靠的传输协议。其中，为了保证客户端与服务器连接的有效性，就有了本篇文章所要介绍的“三次挥手”；而“四次挥手”则是为了保证连接的正确断开。



1. TCP状态

首先，介绍一下TCP的几个状态：


SYN　——　同步序列编号，在建立连接时发送
ACK　——　确认信息，在确认SYN信息时发送，响应信息...]]></description><category></category></item><item><title><![CDATA[【操作系统】生产者消费者问题]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81569609</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81569609</guid><author>liushall</author><pubDate>Sat, 11 Aug 2018 00:43:20 +0800</pubDate><description><![CDATA[生产者消费者模型 




 生产者消费者模型 
一、 生产者消费者问题
二、 问题分析
三、 伪代码实现
四、代码实现（C++）
五、 互斥锁与条件变量的使用比较











一、 生产者消费者问题


  生产者消费者问题（英语：Producer-consumer problem），也称有限缓冲问题（英语：Bounded-buffer problem），是一个多线程同步问题的经典案...]]></description><category></category></item><item><title><![CDATA[【高性能定时器】时间堆（最小堆）]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81331591</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81331591</guid><author>liushall</author><pubDate>Wed, 01 Aug 2018 17:15:12 +0800</pubDate><description><![CDATA[最小堆及其应用：时间堆 




最小堆及其应用：时间堆 
一、 堆
1. 概念
2. 最小堆的实现
3. 性质
4. 代码


二、时间堆
1. 概念简述
2. 实现细节
3. 代码











一、 堆



1. 概念


  堆是一种经过排序的完全二叉树，其中任一非终端节点的数据值均不大于（或不小于）其左子节点和右子节点的值。


其中，两个叶子节点的大小没有顺序。

堆又分为两...]]></description><category></category></item><item><title><![CDATA[【安利】程序猿作图神器 - Graphviz]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81317004</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81317004</guid><author>liushall</author><pubDate>Wed, 01 Aug 2018 15:08:26 +0800</pubDate><description><![CDATA[最小堆及其应用：时间堆 



一、 最小堆]]></description><category></category></item><item><title><![CDATA[【高性能定时器】 时间轮]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81316863</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81316863</guid><author>liushall</author><pubDate>Tue, 31 Jul 2018 17:08:21 +0800</pubDate><description><![CDATA[ 时间轮 



简述

顾名思义，时间轮就像一个轮子，在转动的时候外界会指向轮子不同的区域，该区域就可以被使用。因此只要将不同时间的定时器按照一定的方法散列到时间轮的不同槽（即时间轮划分的区域）之中，就可以实现在运转到某个槽时，进行判断该定时器是否已经到达运行时间（需要判断是由于有的定时器并非在这一圈就需要运行，可能需要后面几圈才会运行。



从图中也可以看出，每个槽中的定时器是以（双向）链表...]]></description><category></category></item><item><title><![CDATA[基于epoll+threadpool的webServer分析与实现]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81262652</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81262652</guid><author>liushall</author><pubDate>Sat, 28 Jul 2018 16:45:42 +0800</pubDate><description><![CDATA[该webServer使用epoll+threadpool实现，支持GET、POST方法，并添加CGI进行数据计算并返回网页信息，可以解析返回html、picture、mp3、js、css等文件，可以实现稳定的运行。  使用c++编写。

源码请看我的Github。

流程简述


启动服务器，在浏览器输入服务器地址，将向服务器发送HTTP请求
服务器接收数据，新建任务，将任务添加到任务队列
从线程...]]></description><category></category></item><item><title><![CDATA[线程池的分析与实现]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81258282</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81258282</guid><author>liushall</author><pubDate>Sat, 28 Jul 2018 10:35:57 +0800</pubDate><description><![CDATA[在需要频繁开线程时，创建和销毁线程会话费大量时间，为了提高效率，我们可以在任务开始前，先创建一定数量的线程。这样在接收到任务时，就可以直接使用线程池中处于wait状态的线程，在任务结束后线程回到wait状态，等待新任务的到来，这就避免了线程的创建与销毁，从而提高程序执行效率。



所需数据


需要存储有多少线程( int thread_number )
需要开辟对应的数组，存储线程号( pth...]]></description><category></category></item><item><title><![CDATA[hexo本地博客的转移]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81155156</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81155156</guid><author>liushall</author><pubDate>Sun, 22 Jul 2018 15:36:36 +0800</pubDate><description><![CDATA[1. 复制配置文件

将原来的配置文件进行备份，只需要将文件夹 source、themes和配置文件_config.yml备份即可。



2. 安装Node.js



sudo apt-get install nodejs
sudo apt-get install npm



3. 安装hexo



sudo npm install -g hexo



4. 新建文件夹，cd进入



...]]></description><category></category></item><item><title><![CDATA[linux下使用c++操作mysql]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81144963</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81144963</guid><author>liushall</author><pubDate>Sat, 21 Jul 2018 15:29:35 +0800</pubDate><description><![CDATA[关于mysql的基础知识可以参考 mysql基础 
首先，需要确保已安装mysql-server，mysql-client，mysql-devel。



一、常用类型介绍



1. MYSQL

用于定义一个mysql对象，便于后续操作确定要操作的数据库是哪一个。



MYSQL mysql;  //mysql标记对应某个数据库

2. MYSQL_ROW

用于定义一个行对象，其内容含有一......]]></description><category></category></item><item><title><![CDATA[mysql基础]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81126168</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81126168</guid><author>liushall</author><pubDate>Fri, 20 Jul 2018 10:39:07 +0800</pubDate><description><![CDATA[数据库软件对大小写不敏感，需要在每条命令末尾添加‘;’



一、库操作



1. 登录数据库


mysql -u root -p 
-u指定用户，-p指定使用密码登录




2. 创建数据库


create database 数据库名称;

创建一个数据库，名称为student : 


create database student



3. 查看已有数据库


show datab...]]></description><category></category></item><item><title><![CDATA[【操作系统】哲学家就餐问题]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/81012225</link><guid>https://blog.youkuaiyun.com/liushall/article/details/81012225</guid><author>liushall</author><pubDate>Thu, 12 Jul 2018 10:56:35 +0800</pubDate><description><![CDATA[问题

有五个哲学家围坐在一圆桌旁，桌中央有一盘通心粉，每人面前有一只空盘子，每两人之间放一只筷子。每个哲学家的行为是思考，感到饥饿，然后吃通心粉。为了吃通心粉，每个哲学家必须拿到两只筷子，并且每个人只能直接从自己的左边或右边去取筷子。 
一个简单的解法是，用一个信号量表示一支筷子，这五个信号量构成信号量数组，所有信号量初始值为1，第I个哲学家的活动课描述为：



semaphore chops...]]></description><category></category></item><item><title><![CDATA[【计算机网络】IP地址]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/80788057</link><guid>https://blog.youkuaiyun.com/liushall/article/details/80788057</guid><author>liushall</author><pubDate>Sat, 23 Jun 2018 23:26:52 +0800</pubDate><description><![CDATA[IP地址的基础知识

在TCP/IP通信中，IP地址用于识别主机和路由器。



1.IP地址的定义

IPv4地址为32位，IPv6地址为128位。（以下以IPv4为例） 
将32位的IP地址分为4组，每组8位，每组间用“.”隔开，再将每组数转为十进制数。例如：  127.0.0.1

通常一块网卡只设置一个IP地址，其实也可以配置多个IP地址。一个路由器通常配置两个以上的网卡，因此可以设置两个...]]></description><category></category></item><item><title><![CDATA[【计算机网络】数据链路相关技术]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/80759690</link><guid>https://blog.youkuaiyun.com/liushall/article/details/80759690</guid><author>liushall</author><pubDate>Thu, 21 Jun 2018 14:13:04 +0800</pubDate><description><![CDATA[1.MAC地址

MAC地址长48字节。在使用网卡的情况下，一般会将MAC地址烧入到ROM中，任何一个网卡的MAC地址都是唯一的。例如 00:10:5A:70:33:61

MAC地址的3~24位表示厂商识别码，每个NIC厂商都有特定唯一的识别数字。25~48位是厂商内部为识别每个网卡而用。因此，保证MAC地址的唯一性。







2.共享介质网络

从通信介质的使用方法上看，网络可分为共享介...]]></description><category></category></item><item><title><![CDATA[【计算机网络】TCP IP通信处理过程]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/80739615</link><guid>https://blog.youkuaiyun.com/liushall/article/details/80739615</guid><author>liushall</author><pubDate>Tue, 19 Jun 2018 21:58:12 +0800</pubDate><description><![CDATA[1.数据包首部

每个分层中都会对所发送的数据附加一个首部，其中包含了该层必要的信息，如发送端地址、接收端地址以及协议等相关信息。 




2.发送数据包



1）应用程序处理

进行编码处理（相当于表示层功能），管理何时建立通信何时发送数据等功能（相当于会话层功能）。建立连接后将数据发送给下一层的TCP，再做实际的转发处理。



2）TCP模块的处理

TCP根据应用的提示，负责建立连接、...]]></description><category></category></item><item><title><![CDATA[【计算机网络】网络基础]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/80726721</link><guid>https://blog.youkuaiyun.com/liushall/article/details/80726721</guid><author>liushall</author><pubDate>Mon, 18 Jun 2018 21:27:11 +0800</pubDate><description><![CDATA[1. 计算机网络分类（按规模）


局域网：覆盖范围10公里以下，一般以学校、公司等为单位组建
广域网：覆盖范围几十公里到几万公里，横跨国家、大洲，形成全球性计算机网络
城域网：位于局域网与广域网之间，覆盖范围几十公里




2. 协议分层



1）OSI参考模型

该模型分为7层，只是对各层的作用做了一系列粗略的界定，并没有对协议和接口进行详细的定义。




  层号
  分层名称
  功...]]></description><category></category></item><item><title><![CDATA[解决linux写入ntfs盘时报错：只读文件系统]]></title><link>https://blog.youkuaiyun.com/liushall/article/details/80684997</link><guid>https://blog.youkuaiyun.com/liushall/article/details/80684997</guid><author>liushall</author><pubDate>Wed, 13 Jun 2018 20:56:29 +0800</pubDate><description><![CDATA[之前一直可以对windows盘进行读写操作，但今天突然不能用了，在将/etc/fstab修改为可读可写之后仍然没用，即使使用mount重新挂载也无效。

在查找资料以及多次尝试之后，终于通过下面的方法可以使用了：



# 卸载已挂载的设备
sudo umount /dev/sda7
sudo mount -t ntfs -w /dev/sda7 /media/niliushall/Study

...]]></description><category></category></item></channel></rss>