- 博客(22)
- 问答 (1)
- 收藏
- 关注
原创 C++使用gflags 库函数入门
简介:gflags 是 google 一套开源的用于处理命令行参数的项目。使用c++开发,具备python接口。flag的定义可以散布在各个源码中,而不用放在一起。一个源码文件可以定义一些它自己的flag,链接了该文件的应用都能使用这些flag。这样就能非常方便地复用代码。如果不同的文件定义了相同的flag,链接时会报错。1、下载与安装:项目主页:http://gflags.github.io/gflags/下载地址:https://github.com/gflags/gflags具
2021-08-07 16:27:14
590
原创 HTTP(REST)和RPC的区别
什么是RPC和REST 在 OpenStack 里的进程间通信方式主要有两种,一种是基于HTTP协议的RESTFul API方式,另一种则是RPC调用。 RESTful主要用于各组件之间的通信(如nova与glance的通信),或者说用于组件对外提供调用接口。 RPC 则用于同一组件中各个不同模块之间的通信(如nova组件中nova-compute与nova-scheduler的通信)1、所属类别不同REST指的是某个瞬间状态的资源数据的快照,包括资源数据的内...
2021-07-18 17:18:34
540
原创 web路由基本概念
什么是路由路由就是URL到函数的映射,确定数据交换和页面展现的目标。1、web端交互的流程:1)流程器发出请求2)服务端监听到80端口或443端口有请求过来,解析URL路径3)根据服务端的路由配置,返回响应信息(json文件等)4)浏览器根据响应包的头部信息中的content-type确定数据解析类型2、router和route的区别route就是一条路由,他将一个URL路径和一个函数进行映射。router是一种容器,用于管理一组route。route 只是进行了
2021-07-18 15:52:12
1352
原创 docker学习之数据卷、DockerFile
一 、容器数据卷将Docker容器之中产生的数据同步到本地,这就是卷技术。目录的挂载,将我们的容器内的目录,挂载到Linuxshang'm
2021-06-27 23:15:28
144
原创 docker的入门、安装测试、常见指令
一、docker技术入门基础>*docker是基于容器技术的轻量级虚拟化解决方案。docker是容器引擎,把Linux的Group、Namespace等容器底层技术进行封装抽象为用户提供了创建和管理容器的便捷界面。1、6个维度上的资源隔离>PID进程编号>NET网络设备、网络协议栈、端口>IPC信号量、消息队列、共享内存>MOUNT文件系统、挂载点>UTS主机名和主机域...
2021-06-08 16:30:19
165
1
原创 Nginx基础入门---安装与测试步骤详解
一、Nginx的理论基础Nginx概述 Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,nginx的并发能力确实在同类型的网页服务器中表现较好。nginx能支持高达50000个并发连接数。Nginx功能1、正向代理 nginx可以作为正向代理来进行上网等功能。 正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理...
2021-04-01 20:15:56
509
1
原创 优雅的关闭连接 --- 使用shutdown和setsockopt(SO_LINGER)实现
优雅关闭:如果发送缓存中还有数据未发出则其发出去,并且收到所有数据的ACK之后,发送FIN包,开始关闭过程。强制关闭:如果缓存中还有数据,则这些数据都将被丢弃,然后发送RST包,直接重置TCP连接。一、使用shudown优雅的关闭连接1.1、close()函数: #include <unistd.h> int close(int fd);close()函数会使套接字的引用计数减1,若套接字的引用计数为0,则彻底关闭连接,并且会关闭TCP两个.
2021-03-28 21:56:17
1735
3
原创 Linux系统下信号以及常用API总结(signal/sigaction/信号集函数)
一、信号基础知识>*信号的产生:按键产生系统调用产生软件条件产生硬件条件产生命令产生概念:未决,产生于递达之间状态递达:产生并且递达到进程,直接被内核处理掉 >*信号的处理:(1)忽略此信号。除了SIGKILL、SIGSTOP(2)捕捉信号。通知内核在某种信号发生时,调用一个用户处理函数。...
2021-03-27 20:51:03
498
4
原创 linux网络编程---Epoll详解(API、LT/ET、select/poll/epoll的对比、epoll实例代码)
EPOLL简介: Epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序存在并发中只有少量活跃的情况下的系统利用率,因为它会服用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列中的描述符集合。Linux下EPOLL的基本APIint epoll_create(int size) ;...
2021-03-23 21:11:43
315
3
原创 单例模式详解----懒汉式/饿汉式(C++实现)
单例模式: 单例模式是一种常用的软件涉及模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。单例模式的要求:构造函数私有化 增加静态私有类指针变量 增加静态公有接口,可以让用户获取单例对象单例模式基本形式:class A{private: A(){ a=new A; ...
2021-03-20 20:15:47
3346
13
原创 redis入门12--Redis的哨兵与集群简述
一、哨兵哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接新的master。哨兵的作用:监控:不断检查master和slave是否正常工作:master存活检测、master与slave运行 情况检测 通知:当被监控的服务器出现问题时,向其他服务器发送通知 自动故障转移:断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址。注意:哨
2021-03-17 20:52:58
121
转载 redis入门11--主从复制
一、主从复制简介主从复制即将master中的数据即时、有效的复制到slave中特征:一个master可以拥有多个slave,一个slave只对应一个master职责:master: 写数据 执行写操作时,将出现变化的数据自动同步到slave 读数据(可忽略)slave:读数据写数据(禁止)主从复制的作用:读写分离:master写、slave读,提高服务器的读写负载能力 负载均衡:基于主从结构,配合读写分离,由slave分担m...
2021-03-17 14:43:47
96
原创 redis入门10——redis高级数据类型Bitmaps&HyperLogLog&GEO
一、BitmapsBitmaps类型的基础操作获取指定key对应偏移量上的bit值getbit key offset设置指定key对应偏移量上的bit值,value只能是1或0setbit key offset valueBitmaps类型的扩展操作对指定key按位进行交、并、非、异或操作,并将结果保存到deskey中bitop op destKey key1 [key2...]and:交;or:并;not:非;xor:异或统计指定key中1的数量bitcount .
2021-03-17 10:13:07
216
原创 redis入门9——redis服务器基础配置
服务器端设定设置服务器以守护进程的方式运行daemonize yes|no绑定主机地址bind 127.0.0.1设置服务器端口号 port 6379设置数据库数量 databases 16日志配置:设置服务器以指定日志记录级别(线上notice) loglevel debug | verbose | notice | warning日志记录文件名logfile 端口号.log注意:日志级别开发期设置为verbose即可,生产环...
2021-03-16 16:43:03
118
原创 redis入门8——redis的删除策略
Redis的删除策略一、过期数据Redis中的数据特征:Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态XX:具有时效性的数据 -1:永久有效的数据 -2:已经过期的数据或被删除的数据或未定义的数据时效性数据的存储结构:数据删除策略的目标:在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或内存泄露删除策略---定时删除创建一个定时器,当key设置有过期..
2021-03-16 16:30:12
116
原创 redis入门7——redis的事务&锁
一、事务与基本操作事务:redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。 一个队列中,一次性、顺序性、排他性的执行一系列命令。事务的基本操作:开启事务: multi作用: 设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中执行事务: exec作用: 设定事务的结束位置,同时执行事务。与multi成对出现,成对...
2021-03-16 15:49:45
120
原创 redis入门6——redis的持久化AOF&RDB
一、AOF持久化RDB存储的弊端:存储数据量较大,效率较低 基于快照思想,每次读写都是全部数据,当数据量巨大时,效率非常低大数据量下的IO性能较低 基于fork创建子进程,内存产生额外消耗 宕机带来的数据丢失风险解决思路:不写全数据,仅记录部分数据 降低区分数据是否改变的难度,改记录数据为记录操作过程 对所有操作均进行记录,排除丢失数据的风险AOF概念:AOF(append only file)持久化:以独立日志的方式记录每次写...
2021-03-16 10:58:42
118
原创 redis入门5——redis的持久化RDB
一、redis的持久化什么是持久化:利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。为什么要持久化:防止数据的意外丢失,确保数据安全性。持久化保存的是什么:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据;将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程二、RDB持久化命令:save作用:手动执行一次保存操作RDB启动方式 --- save指令相...
2021-03-16 10:51:31
71
原创 redis入门4——redis通用指令(key&数据库操作)
Redis通用命令一、key通用操作key是一个字符串,通过key获取redis中保存的数据key的基本操作:删除指定keydel key获取key是否存在eists key获取key的类型type keykey扩展操作:为指定key设置有效期expire key secondspexpirekey millisecondsexpireatkey timestamp (使用时间戳)pexpireatke...
2021-03-15 11:06:52
149
原创 redis入门3——redis常用数据结构的使用set&sorted_set
五种存储类型:StringHashListSetSorted_set一、set新的存储需求:存储大量的数据,在查询方面提供更高的效率需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的set类型数据的基本操作:添加数据sadd key menber1 [member2]获取全部数据smembers key删除数据srem key membe.
2021-03-15 10:11:01
128
原创 redis入门2——redis常用数据结构的使用string&list&hash
一、Redis数据类型五种存储类型:StringHashListSetSorted_setRedis存储格式:redis自身是一个Map,其中所有的数据都是采用key:value的形式存储 数据类型指的是存储的数据的类型,即value,而key永远都是string。二、String存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据类型存储数据的格式:一个存储空间保存一个数据存储内容:通常使用字...
2021-03-15 10:02:30
168
原创 redis入门1——NoSql与redis的简介和使用(Linux)
一、NoSql1、Nosql特点:1)易扩展:NoSql数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系特性。 数据之间无关系,容易扩展,在架构的层面上也带来了可扩展的能力2)大数据量高性能:NoSQL数据库都具有非常高的读写性能,在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的C...
2021-03-13 18:04:37
169
2
空空如也
opencv书本配套的代码怎么运行不了了 之前还可以运行
2017-10-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人