自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liushall

流沙聚散,谁主沉浮?

  • 博客(77)
  • 收藏
  • 关注

原创 ubuntu20环境下使用DevStack安装Openstack-Wallaby(单节点、多节点)

文章目录一、单节点部署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文件

2022-04-29 16:23:50 1870

原创 win10宽带连接断网自动重连

文章目录1. 断开网络连接,重命名网络连接2. bat代码:检测到断线自动重连3. 设置开机自动执行3.1 方式一:任务计划程序3.2 方式二:用vbs代码开机运行bat1. 断开网络连接,重命名网络连接中文名字可能出现远程访问错误 623 系统无法为这个连接找到电话簿项目错误,需要重命名为英文或数字2. bat代码:检测到断线自动重连修改代码中的宽带连接名称、账户、密码,可以修改检测间隔时间TIMEOUT,单位:秒@echo off :startping -n 2 114.114.1

2021-01-12 11:42:13 6919 6

原创 定时器与超时的设置

一、相关时间函数1. gettimeofday()2. time()3. clock()二、间隔定时器1. setitimerval()2. getitimerval()3. 实时定时器的使用三、为阻塞操作设置超时1. alarm()2. 给read()设置读超时一、相关时间函数1. gettimeofday(...

2018-08-23 09:43:00 5967

原创 系统调用中断(EINTR)与SIGCHLD信号的处理

一、被中断的系统调用(EINTR)的理解1. 慢系统调用是?2. 慢系统调用的类别3. EINTR产生的原因5. 一般处理方法二、SIGCHLD信号的处理1. SIGCHLD信号的产生2. SIGCHLD信号的处理3. 不处理SIGCHLD的后果三、示例代码一、被中断的系统调用(EINTR)的理解1. 慢系统调用是? 慢...

2018-08-20 15:11:16 1543 1

原创 【计算机网络】三次握手与四次挥手

三次握手与四次挥手 通过TCP/IP协议的学习,我们可以知道TCP协议是一种面向连接的、可靠的传输协议。其中,为了保证客户端与服务器连接的有效性,就有了本篇文章所要介绍的“三次挥手”;而“四次挥手”则是为了保证连接的正确断开。1. TCP状态首先,介绍一下TCP的几个状态:SYN —— 同步序列编号,在建立连接时发送ACK —— 确认信息,在确认SYN信息时发送,响应信息...

2018-08-15 08:58:10 2927

原创 【操作系统】生产者消费者问题

生产者消费者模型 生产者消费者模型 一、 生产者消费者问题二、 问题分析三、 伪代码实现四、代码实现(C++)五、 互斥锁与条件变量的使用比较一、 生产者消费者问题 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案...

2018-08-11 00:43:20 154504 32

原创 【高性能定时器】时间堆(最小堆)

最小堆及其应用:时间堆 最小堆及其应用:时间堆 一、 堆1. 概念2. 最小堆的实现3. 性质4. 代码二、时间堆1. 概念简述2. 实现细节3. 代码一、 堆1. 概念 堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左子节点和右子节点的值。其中,两个叶子节点的大小没有顺序。堆又分为两...

2018-08-01 17:15:12 9807 4

原创 【安利】程序猿作图神器 - Graphviz

最小堆及其应用:时间堆 一、 最小堆

2018-08-01 15:08:26 955 2

原创 【高性能定时器】 时间轮

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

2018-07-31 17:08:21 9371

原创 基于epoll+threadpool的webServer分析与实现

该webServer使用epoll+threadpool实现,支持GET、POST方法,并添加CGI进行数据计算并返回网页信息,可以解析返回html、picture、mp3、js、css等文件,可以实现稳定的运行。 使用c++编写。源码请看我的Github。流程简述启动服务器,在浏览器输入服务器地址,将向服务器发送HTTP请求服务器接收数据,新建任务,将任务添加到任务队列从线程...

2018-07-28 16:45:42 883 3

原创 线程池的分析与实现

在需要频繁开线程时,创建和销毁线程会话费大量时间,为了提高效率,我们可以在任务开始前,先创建一定数量的线程。这样在接收到任务时,就可以直接使用线程池中处于wait状态的线程,在任务结束后线程回到wait状态,等待新任务的到来,这就避免了线程的创建与销毁,从而提高程序执行效率。所需数据需要存储有多少线程( int thread_number )需要开辟对应的数组,存储线程号( pth...

2018-07-28 10:35:57 375

原创 ubuntu18重装笔记

再次重装了系统,为方便以后再次重装,,,因此将主要步骤记录下来。1. 更新源sudo gedit /etc/apt/sources.list# 阿里源deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubun...

2018-07-23 13:16:22 6922

原创 hexo本地博客的转移

1. 复制配置文件将原来的配置文件进行备份,只需要将文件夹 source、themes和配置文件_config.yml备份即可。2. 安装Node.jssudo apt-get install nodejssudo apt-get install npm3. 安装hexosudo npm install -g hexo4. 新建文件夹,cd进入...

2018-07-22 15:36:36 1208

原创 linux下使用c++操作mysql

关于mysql的基础知识可以参考 mysql基础 首先,需要确保已安装mysql-server,mysql-client,mysql-devel。一、常用类型介绍1. MYSQL用于定义一个mysql对象,便于后续操作确定要操作的数据库是哪一个。MYSQL mysql; //mysql标记对应某个数据库2. MYSQL_ROW用于定义一个行对象,其内容含有一......

2018-07-21 15:29:35 7094 1

原创 mysql基础

数据库软件对大小写不敏感,需要在每条命令末尾添加‘;’一、库操作1. 登录数据库mysql -u root -p -u指定用户,-p指定使用密码登录2. 创建数据库create database 数据库名称;创建一个数据库,名称为student : create database student3. 查看已有数据库show datab...

2018-07-20 10:39:07 1136

原创 【操作系统】哲学家就餐问题

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

2018-07-12 10:56:35 1913

原创 【计算机网络】IP地址

IP地址的基础知识在TCP/IP通信中,IP地址用于识别主机和路由器。1.IP地址的定义IPv4地址为32位,IPv6地址为128位。(以下以IPv4为例) 将32位的IP地址分为4组,每组8位,每组间用“.”隔开,再将每组数转为十进制数。例如: 127.0.0.1通常一块网卡只设置一个IP地址,其实也可以配置多个IP地址。一个路由器通常配置两个以上的网卡,因此可以设置两个...

2018-06-23 23:26:52 1587

原创 【计算机网络】数据链路相关技术

1.MAC地址MAC地址长48字节。在使用网卡的情况下,一般会将MAC地址烧入到ROM中,任何一个网卡的MAC地址都是唯一的。例如 00:10:5A:70:33:61MAC地址的3~24位表示厂商识别码,每个NIC厂商都有特定唯一的识别数字。25~48位是厂商内部为识别每个网卡而用。因此,保证MAC地址的唯一性。2.共享介质网络从通信介质的使用方法上看,网络可分为共享介...

2018-06-21 14:13:04 907

原创 【计算机网络】TCP IP通信处理过程

1.数据包首部每个分层中都会对所发送的数据附加一个首部,其中包含了该层必要的信息,如发送端地址、接收端地址以及协议等相关信息。 2.发送数据包1)应用程序处理进行编码处理(相当于表示层功能),管理何时建立通信何时发送数据等功能(相当于会话层功能)。建立连接后将数据发送给下一层的TCP,再做实际的转发处理。2)TCP模块的处理TCP根据应用的提示,负责建立连接、...

2018-06-19 21:58:12 10312

原创 【计算机网络】网络基础

1. 计算机网络分类(按规模)局域网:覆盖范围10公里以下,一般以学校、公司等为单位组建广域网:覆盖范围几十公里到几万公里,横跨国家、大洲,形成全球性计算机网络城域网:位于局域网与广域网之间,覆盖范围几十公里2. 协议分层1)OSI参考模型该模型分为7层,只是对各层的作用做了一系列粗略的界定,并没有对协议和接口进行详细的定义。 层号 分层名称 功...

2018-06-18 21:27:11 647

原创 解决linux写入ntfs盘时报错:只读文件系统

之前一直可以对windows盘进行读写操作,但今天突然不能用了,在将/etc/fstab修改为可读可写之后仍然没用,即使使用mount重新挂载也无效。在查找资料以及多次尝试之后,终于通过下面的方法可以使用了:# 卸载已挂载的设备sudo umount /dev/sda7sudo mount -t ntfs -w /dev/sda7 /media/niliushall/Study...

2018-06-13 20:56:29 17702 5

原创 ubuntu18.04安装、配置dosbox

1 安装dosbox:打开终端,输入:sudo apt install dosbox2 安装完成后,启动dosbox,在终端输入:dosbox3 设置自动挂载 退出dosbox,在终端中输入:vim .dosbox/dosbox-0.74.conf在文件的最后一行添加挂载信息,例如: mount c [masm的路径] ...

2018-06-12 17:12:25 3357

原创 【操作系统】页面置换算法

页面置换算法 在进程运行过程中,若需要访问的物理块不在内存中,就需要通过一定的方式来将页面载入内存,而此时内存很可能已无空闲空间,因此就需要一定的算法来选择内存中要被置换的页面,这种算法就被称为页面置换算法。页面置换算法的好坏,将直接影响系统的性能。一个好的页面置换算法,应做到减少页面置换的频率。尽量将以后不会用到的或较长时间不会使用的页面给置换出。下面介绍几种常用的页面置换算法。...

2018-06-10 22:34:17 18800 1

原创 【动态规划】01背包问题

01背包问题 问题描述给定 N 种物品和一个最大载重量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?问题分析对于每个物品,只能选择装或者不装,不能选择只装物体的一部分,因此不能使用单位重量的价值进行排序的方法(贪心)来解决,需要用到动态规划来解决。动态规划的三个核心最优子结构...

2018-06-03 19:49:16 4167

原创 链表中环的入口结点

题目链接链表中环的入口结点(牛客网)题目分析类似于追及问题:如何判断有环的存在? 在追及问题中,我们可以用两个速度不同的物体从同一地点出发,如果相遇则证明存在环(可用反证法证明,若不存在环,则速度不同的物体从同一地点出发则一定不会相遇),因此可以类比过来,定义两个指针fast、slow,令两指针以不同速度向后指,则相遇时证明有环存在,若fast指向NULL,则不存在环。怎么找...

2018-05-24 23:03:05 4935 9

原创 继承与动态内存分配

继承与动态内存分配 在基类或派生类中含有指针时,要考虑内存分配情况(new与delete),还要考虑在进行对象间赋值时指针隐藏的问题(使用默认复制构造函数在析构时会造成原对象中的指针指向的内存空间被释放,为浅复制)因此需要: 1. 重载运算符’=‘、’<<‘,实现深度复制; 2. 在构造函数中使用new进行动态内存分配,在析构函数中使用delete进行内存释放; 3. ...

2018-05-16 23:37:26 523

原创 友元函数 友元类 友元成员函数

友元 一般来说,类内的私有数据是对外不可见的,但在有些情况下,我们需要在类外对该类的私有数据进行访问,这就需要用到一种新技术——友元(friend),即在声明前添加关键字friend。友元关系是单向的,即如果A是B的友元,但B不一定是A的友元; 友元关系无传递性,即如果A是B的友元,B是C的友元,但A不一定是C的友元。1. 友元函数友元函数是指某些非类成员函数,但可以访问类...

2018-05-07 22:34:40 5430 2

原创 c++ STL 全排列

在c++的STL中有函数可以直接对数组元素进行全排列,即next_permutation和pre_permutation,这两个函数都可以实现全排列,只是排列的顺序不同,next_permutation作用为向后排序,而pre_permutation作用为向前排序。需要头文件#include <algorithm>示例#include <iostream>...

2018-04-24 22:50:15 4196

原创 jsoncpp学习笔记

jsoncpp 一. json基础类型: 1. Json::Value为主要数据类型; 2. Json::Reader将文件流或字符串创解析到Json::Value中,主要使用parse函数;3. Json::Writer:与JsonReader相反,将Json::Value转换成字符串流等,Writer类是一个纯虚类,并不能直接使用。在此我们使用 Json::Writer 的...

2018-04-15 23:47:04 370

原创 静态多态 动态多态

一. 静态多态1. 何为静态多态?又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数。例如:函数重载,通过类成员运算符指定的运算。2. 示例代码函数重载示例:class A {public: A() {} A( int x ) {} void f() {} void f( int x ) {}};class B {p...

2018-04-15 19:00:38 5752

原创 虚析构函数

需要虚析构函数的原因:首先看一下这段代码:#include <iostream>using namespace std;class A {private: int *a;public: A() { a = new int; cout << "A::A() is called.\n"; } ~A() { delete a; c...

2018-04-15 11:40:39 300

原创 [Qt] 解决toggled无法触发setVisible

解决toggled无法触发setVisible 解决方法:在QT Designer中,创建QPushButton时需要将按钮修改为checkable。在默认情况下,checkable是不选中的,默认为触发按钮(trigger button),也就是按下之后立即弹起来,而选为checkable后,就成为了切换按钮(两种状态:按下/弹起)。这样就可以切换按钮状态来实现窗口显示与否。参...

2018-03-17 12:28:38 908

原创 [codevs] 1098 均分纸牌

均分纸牌 题目描述 Description有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。   移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。   现在要求找出一种移动方...

2018-03-05 16:55:40 249

原创 CodeForce 2A —— Winner

A. Winner The winner of the card game popular in Berland “Berlogging” is determined according to the following rules. If at the end of the game there is only one player with the maximum number of p...

2018-03-01 17:25:13 649

原创 Ananagrams Uva 156

Ananagrams (map的使用) Most crossword puzzle fans are used to anagrams–groups of words with the same letters in different orders–for example OPTS, SPOT, STOP, POTS and POST. Some words however do not...

2018-02-11 18:16:30 362

原创 最佳加法表达式

最佳加法表达式 题意描述输入n个数字,给m个加号,将所有加号任意放在n个数字中某位置,要求最终得到的加法表达式的结果最小。INPUT4 2 1 2 3 4OUTPUT19分析本题使用动态规划,将原问题分解为:求前i个数字中放入m-1个加号的最佳加法表达式的值,再加上最后剩余数字的值。即dp[n][m] = Min{ dp[i][m-1] + Num[i+1][

2018-02-07 17:50:48 962

原创 二维map —— HDU1263

水果 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8752 Accepted Submission(s): 3482Problem Description夏天来了~~好开心啊,呵呵,好多好多水果~~Joe经营

2018-02-06 21:54:55 354

原创 最长公共子序列

何为最长公共子序列?百度百科定义如下:一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。首先,我们来介绍一下子串与子序列 的区别:子串是一个字符串中的连续字符的集合;子序列是一个字符串中任意字符的集合,不一定要连续。然后,如何来求得最长公共子序列呢?最直接的一种方法就是暴力求解,通过比较两个字符串的所有子序列,得到公

2018-02-03 22:58:15 446

原创 I/O复用之 EPOLLONESHOT 事件

EPOLLONESHOT 事件 EPOLLONESHOT 事件 使用EPOLLONESHOT的原因及优点recv返回值 及 与errno的配合使用示例程序1. 使用EPOLLONESHOT的原因及优点即使使用ET模式,一个socket上的某个事件还是可能被触发多次。比如:一个线程在读取完某个socket上的数据后开始处理这些数据,而在数据的处理过程中

2018-02-03 19:23:31 878 2

原创 I/O复用之 epoll

epoll 系统调用 1. 内核事件表epoll使用一系列函数来完成任务,把用户关心的文件描述符中的事件放到内核里的一个事件表中,因此不用像select、poll那样每次调用都要重复传入文件描述符集或事件表。epoll需要一个文件描述符来唯一标识该事件表,该文件描述符使用epoll_create函数创建: #include int epoll_create( in

2018-02-02 20:09:44 272

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除