自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青山绿水

云淡风轻

  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 qemu-6.1 版本编译

qemu-6.1 版本编译。

2022-10-17 09:41:21 1551

转载 write-back与Write-through

Cache写机制:Write-through与Write-back通常有三种方法:write through:CPU向cache写入数据时,同时向memory(后端存储)也写一份,使cache和memory的数据保持一致。优点是简单,缺点是每次都要访问memory,速度比较慢。post write:CPU更新cache数据时,把更新的数据写入到一个更新缓冲器,在合适的时候才对memory(后端存储)进行更新。这样可以提高cache访问速度,但是,在数据连续被更新两次以上的时候,缓冲区将不

2021-12-29 16:42:38 2044

原创 2021-01-03

ssh免密登录检查/etc/ssh/sshd_config配置文件PermitRootLogin yes root用户PubkeyAuthentication yes 公钥认证PasswordAuthentication yes 密码认证免密设置在A服务器生成密钥cd ~/.ssh/ssh-keygen -t rsa到B服务上清空 authorized_keys,后面方便检查A服务器的公钥是否复制成功echo > authorized_keys

2021-01-03 16:12:11 203

原创 Openstack部署 queens版本问题总结

Openstack部署 queens版本问题总结参考官网:https://docs.openstack.org/install-guide/openstack-services.htmlhttps://blog.csdn.net/networken/article/details/80682437安装openstack yum源yum install centos-release-openstack-queens为了能使用yum方式快速安装openstack 各组件也可以自己配置repo利

2020-09-09 10:08:28 767

转载 Redhat7在线编译安装gcc7.5

参考:https://www.cnblogs.com/music-liang/p/12900457.htmlhttps://blog.csdn.net/analogous_love/article/details/97823301https://my.oschina.net/panquanxing/blog/3070964安装步骤:gcc 下载地址http://mirror.hust.edu.cn/gnu/gcc/ 国内镜像源wget https://ftp.gnu.org/gn

2020-07-05 10:19:26 1655

原创 http协议详解

HTTP协议简介:HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协,是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP 工作原理:HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。

2020-05-10 21:24:53 482

转载 cookie

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内(C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Default),下次请求同一网站时就发送该Cookie给服务器。1. 1 Cookie机制在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购

2020-05-10 15:46:55 127

原创 c++回调函数

在项目中看到回调函数,总结一下:回调函数的几个条件:定义一个指向函数的指针声明被回调函数调用回调函数的宿主函数本例子将回调函数注册到一个map中,在消息类触发的服务器应用中常见,比如游戏服务器话不多说:直接上代码版本1:定义一个指向函数的指针CallBack.h#ifndef __CALLBACK_H__#define __CALLBACK_H__#include <iostream>#include <map>#include <string&

2020-05-08 21:00:03 760

原创 C++不定参数打印调试日志或写入文件

主要用到c语言的_va_args__宏参考:http://www.cplusplus.com/reference/cstdarg/va_list/#ifndef __LOGGER_H#define __LOGGER_H#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include ...

2020-04-03 17:22:38 605

转载 C++多态调用实现原理(虚函数表详解)

转载 https://blog.csdn.net/shanghx_123/article/details/82973791

2020-04-03 09:50:13 142

原创 python set不能添加list,dict, set的原因

set不能添加list,dict, set的原因## 标题python 的集合set中的元素是唯一的,即哈希表(hashable)类型,因此集合中的元素必须是不可变类型而list,dict, set是可变类型, number,string,tuple是不可变类型arr_set = set()arr_set.add([1,2])print(arr_set)编译提示:arr_set.a...

2019-11-14 11:38:52 2390

原创 python is与==的区别

is与==的区别is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。>>>a = [1, 2, 3]>>> b = a>>> b is a True>>> b == aTrue>>> b = a[:]>>> b is aFalse>&...

2019-11-14 11:24:49 134

原创 Linux线程同步之条件变量

1.条件变量:与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一起使用。条件变量使线程可以睡眠等待某种条件出现...

2019-06-22 12:02:30 226

原创 Linux线程同步之互斥锁

1.互斥锁作用:互斥锁mutex是用来保护线程间共享的全局变量安全的一种机制,保证多线程中在某一时刻只允许某一个线程对临界区的访问。2.初始化方式:互斥锁对象的数据类型是 pthread_mutex_t ;互斥锁的初始方式分为静态方式和动态方式://动态初始化互斥锁方式int pthread_mutex_init(pthread_mutex_t *restrict mutex, con...

2019-06-20 18:34:07 761

原创 epoll总结

Epollepoll操作由三个函数构成:头文件为 #include <sys/epoll.h>#include <sys/epoll.h>int epoll_create(int size);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);int epoll_wait(in...

2019-05-24 19:50:05 290

转载 常量指针与指针常量

理解常量指针与指针常量constant*前面的是对被指向对象的修饰,*后面的是对指针本身的修饰常量指针(被指向的对象是常量)定义:又叫常指针,可以理解为常量的指针,指向的是个常量关键点:常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值;指针还可以指向别处,因为指针...

2019-05-23 10:09:55 160

原创 c++98到c++11成员变量初始化的变化

c++98允许在类中使用“=”对静态常成员变量初始化c++11支持在类中对非静态成员变量进行初始化,但只支持“=”,不支持"()"两者都不支持对静态非常成员变量的初始化 9 #include <iostream> 10 #include <string> 11 12 class Init 13 { 14 public: 15 void...

2019-04-28 17:54:47 780

转载 C++中利用迭代器删除元素

转自:https://blog.csdn.net/yf_li123/article/details/75003425#comments(1)对于关联容器(如map,set,multimap,multiset),删除当前的iterator,仅仅会使当前的iterator失效,只要在erase时,递增当前的iterator即可。这是因为map之类的容器,使用了红黑树来实现,插入,删除一个结点不会对其...

2019-04-22 18:09:14 4800 2

原创 C++ 模板函数与类模板

1.函数模板函数模板提供了一种函数行为,该函数行为可以用多种不同的类型进行调用,也即是说,函数模板代表一个函数家族。#include&amp;amp;lt;iostream&amp;amp;gt;template&amp;amp;lt;typename T&amp;amp;gt;T max(T const&amp;amp;amp; a, T const&amp;amp;amp; b){ return a&amp;amp;lt

2019-04-17 16:58:26 269

原创 拷贝构造函数与移动构造函数

左值与右值的区别左值持久,右值短暂(右值要么是字面值常量,要么是表达式求值过程中创建的临时变量)左值是变量,右值不能被赋值左值引用与右值引用右值引用是为了支持移动操作,通过&&来获得右值引用左值引用是相对于右值引用的,通过&来获得int i = 42;int &r = i; //正确,r引用iint &&rr = ...

2019-04-11 21:09:33 8999

原创 makefile编译静态库与动态库

在大型的项目中,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中。为了方便调用其他文件夹中的文件,最通用的方法就是将一些文件编译成静态的库或动态库,这样在包含其他文件夹的头文件时可以更加简便。1.编译静态库bin :存放可执行文件build:存放编译生产的二进制文件(xx.o)include:存放程序编译时需要调用的头文件(xx.h)lib:存放程序链接时(生成可执行...

2019-03-17 23:40:13 9322 1

转载 Makefile中wildcard的介绍

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN…) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中通配符的展开和...

2019-02-25 18:54:33 537

原创 ctags的安装,设置与使用

1. 安装ctags两种方法:在redhat系统中,可以直接通过yum -y install ctags安装(在yum源配置好的情况下),然后通过ctags --help 查看是否安装成功,如果显示一大堆命令信息表明安装成功下载ctags-5.8.tar.gzi)在终端解压:tar -zxvf ctags-5.8.tar.gzii)进入到ctags-5.8目录,执行: ./confi...

2019-02-23 11:18:14 7069

原创 shell $@,$#,$0,$?参数的含义

1.$#, $0, $1,$@,$*,$$, $?的含义变量 含义$# 传递给脚本或函数的参数个数。$0 当前脚本的文件名$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$* 传递给脚本或函数的所有参数,以一个字符串的形式显示所有输入的参数$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面...

2019-02-21 20:36:58 624

原创 C++ 静态成员的使用

C++中的静态成员(静态成员函数和静态数据成员)属于类所有,不属于类的对象,与普通的成员相比,静态成员无this指针。1.静态数据成员class A{ public: static void print() { cout &lt;&lt; "x="&lt;&lt;x &lt;&lt; endl; //通过公有成员函数访问私有静态数据成员 } stat...

2019-02-14 17:07:45 5014 4

转载 epoll机制详解:

大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。在Linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询...

2019-02-01 17:44:56 7693 2

原创 根据网卡名称编号获取指定网卡IP地址

有时我们需要动态的根据网卡编号来获取IP地址,如果在配置文件里配置ip的话就不能动态的实现了,而linux下的ioctl()函数则提供了实现的途径。 ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd, ind cmd, …);其中fd是用...

2019-01-31 13:31:28 2220 2

原创 Effective C++ 随笔 2

2019-01-26 22:24:42 130

原创 Effective C++ 随笔 1

最近在看Effective C++,结合自己的工作实践做点笔记,一来方便自己日后查看,二来鞭策自己不断学习。1.为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符class String{ public: String(const String&amp;amp;amp;); //拷贝构造函数 String&amp;amp;amp; operator=(const Strin...

2019-01-26 16:34:12 139

原创 auto使用

C++11引入了类型说明符auto,它给我们带来了方便,但有时也会因为使用不当而造成错误。说明:auto只能用于识别类型。如int,string,类类型等auto不能代替引用&amp;amp;amp;总结:所以函数的返回值带引用时,用auto时也必须带上&amp;amp;amp;,不然会出错...

2019-01-24 12:35:32 339 1

原创 define中的特殊符号\,#,##的作用

1. 符号"\"用于多行定义,每行的最后加上"\"#define MAX(a,b) \ if(a&gt;b)\ return a;\ else\ return b;2.符号"#“和”##"#是把参数字符串化, ##是连接两个参数#include &lt;iostream&gt;using namesapce std;#define A(x) x#def...

2019-01-20 16:55:12 4237 1

转载 C++ explict关键字

首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即...

2019-01-09 15:17:02 313

原创 Effective STL随笔

本节主要讲讲自己工程项目中常用到的一些与Effiective STL有关的内容:1.尽量使容器对象的拷贝轻量在涉及到容器对象的拷贝时,常建立指针的容器,因为在对象含有大量数据时,拷贝指向对象的指针比拷贝整个对象明显更加高效和安全。struct Aptitude{ int a; double b; float c; char d; ........

2019-01-06 22:29:13 102

原创 智能指针

相对于new,智能指针可以自动释放申请的堆空间;C++11提供了两种智能指针类型来管理动态对象。一种是shared_ptr,它允许多个指针指向同一对象;另一种是unique_ptr,它则独占所指向的对象。1.shared_ptr类创建一个可以指向T型对象的智能指针: shared_ptr &lt; T &gt; p;默认初始化的智能指针中保存着一个空指针。1)shared_ptr的独有操作...

2019-01-03 18:25:44 124

原创 数据结构之堆排序

堆排序:1.堆的概念堆其实就是一颗完全二叉树,关于什么是完全二叉树在二叉树的基本概念中有说明,在这就不细说了。2.堆的分类堆分为小堆和大堆。小堆:父节点都不大于任意直接子节点。大堆:父节点都不小于任意直接子节点。举例来说,对于n个元素的序列{R0, R1, … , Rn}当且仅当满足下列关系之一时,称之为堆:(1) R[i] &amp;amp;amp;amp;amp;amp;lt;= R[2i+1] 且 R[i]&amp;amp;amp;amp;amp

2018-12-24 23:09:21 188

原创 二叉树的遍历

二叉树的遍历1.二叉树的遍历方式二叉树的遍历分为前序遍历,中序遍历,后序遍历前序遍历:先访问根结点,再遍历根结点的左子树,最后遍历根结点的右子树中序遍历:先遍历根结点的左子树,再访问根结点,最后遍历根结点的右子树后序遍历:先遍历根结点的左子树,再遍历根结点的右子树,最后访问根结点上图的前序遍历为:A, B,D,G,H, C,E,I,F中序遍历为:G,D,H,B, A E,...

2018-12-19 23:16:04 105

原创 二叉树的基本概念

二叉树二叉树是常见的数据结构:1.相关术语:二叉树的高度有两种定义:从根节点到最深结点的最长路径的节点数。从根到最深结点的最长路径的边数。本文以根结点到最深结点的最长路径的结点数为准,也即高度,深度基数为1树的高度:树内所有结点高度的最大值,也就是根结点的高度,也就是树的层数。上图树的高度为4树的深度:树内所有结点深度的最大值,也就是所有叶子结点深度的最大值,也就是树的层数...

2018-12-19 17:38:49 1449 1

原创 redhat系统虚拟机网络配置与ssh远程连接配置

我们在使用虚拟机时,常在window上使用Xshell或SecureCRT等工具操作linux系统,这时就会用到Linux的ssh服务,而最终的实现与linux的网络配置有关。虚拟机提供的网络连接模式一般有以下几种:NAT(网络地址转换Network Address Translation)模式Bridged Adapter 桥接网络模式内部网络模式only-host 主机模式本文...

2018-12-13 20:13:34 2563

原创 C++ 左值与右值

1. 左值能取地址 int i;能赋值2.右值不能赋值例子:int i =0; //i 是左值const int p = 0;//这是初始化,但p不能再被赋值,所以是右值int get() //函数的返回值是右值{ return 0;}...

2018-12-03 22:32:55 134

原创 C++ 函数模板的全局特化与局部特化

1.函数模板的全局特化函数模板的全局特化和类模板的全局特化类似,以template&lt;&gt;开头。template&lt;&gt;int f(int){ return 2;}另外,函数模板的全局特化不能包含缺省的实参值,而函数模板可以包含缺省的实参值。template&lt;typename T&gt;int f(T ,T x=42){ return x;}...

2018-11-30 21:38:32 1300

STM32F103实时时钟的触摸屏显示及按键调节

STM32F103实时时钟的触摸屏显示及按键调节

2016-07-28

空空如也

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

TA关注的人

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