- 博客(26)
- 收藏
- 关注
原创 【Redis】Redis7学习笔记
Redis【Remote Dictionary Server(远程字典服务器)】是用C语言开发的一个(key value)数据库Redis通过提供多种键值数据类型来适应不同场景下的存储需求目前Redis支持的键值数据类型如下:字符串类型String、哈希类型hash、列表类型list、集合类型set、有序集合类型sortedsetRedis可以缓存数据的计算结果、页面内容、数据库查询结果等,通过提高数据访问速度和响应速度,提升系统性能和用户体验。
2024-07-17 15:59:27 870
原创 【软件设计师中级】2024.11.09软考备考
(1)掌握计算机内的数据表示、算术和逻辑运算方法;(2)掌握相关的应用数学及离散数学基础知识;(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;(4)掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;(5)熟练掌握常用数据结构和常用算法;(6)熟悉数据库、网络和多媒体的基础知识;(7)掌握C程序设计语言,以及C++、Java中的一种程序设计语言;(8)熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;(9)掌握软件设计的方法和技术;
2024-11-11 11:21:47 561
原创 【Asio网络编程】socket的监听和连接
对于acceptor类型的socket,服务器要将其绑定到指定的端点,所有连接这个端点的连接都可以被接收到。创建socket分为4步,创建上下文iocontext,选择协议,生成socket,打开socket。终端节点就是用来通信的端对端的节点,可以通过ip地址和端口构造,其的节点可以连接这个终端节点做通信.服务端,还需要生成一个acceptor的socket,用来接收新的连接。选择VC++目录—-》包含目录,添加boost的include文件;选择VC++目录—-》库目录,添加 boost的lib文件;
2024-08-29 11:19:22 912
原创 【Asio网络编程】socket同步读写
函数会一次性将buffer中的内容发送给对端,如果有部分字节因为发送缓冲区满无法发送,则阻塞等待,直到发送缓冲区可用,则继续发送完成。读取指定字节数的接口read_some, 数据在不超过指定的长度的时候有多少读多少,读完直接向后运行,没有数据则会一直等待。函数,可以一次性将所有数据发送给对端,如果发送缓冲区满了则阻塞,直到发送缓冲区可用,将数据发送完成。可以每次向指定的空间写入固定的字节数,如果写缓冲区满了,就只写一部分,返回写入的字节数。,之后就可以用同步读写的方式发送和接收数据了。
2024-08-29 11:17:26 871
原创 【Asio】配置boost库
打开visualstudio 创建一个控制台工程,然后右键工程选择属性。选择VC++目录—-》包含目录,添加boost的include文件;选择VC++目录—-》库目录,添加 boost的lib文件;并且把VS的Debug模式设置为x64。
2024-08-28 16:21:03 223
原创 【C++】单例模式
当一个函数中定义一个静态局部变量时,那么这个局部变量只会初始化一次,就是在这个函数第一次调用的时候,以后无论调用几次这个函数,函数内的静态局部变量都不再初始化。那我们可以利用局部静态变量这一特点实现单例保证一个类仅有一个实例,并提供一个访问它的全局访问点。一个全局使用的类频繁地创建与销毁。当想控制实例数目,节省系统资源的时候。单例模式在多线程中的问题:多线程操作会涉及到对单例模式的影响,多个线程可能会同时创建类的实例,从而违反了单例模式的原则。以下是本篇文章正文内容。
2024-07-22 10:21:26 836
原创 【Docker】Docker基础
镜像(image)Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务, 通过这个镜像可以创建多个容器,最终服务运行或者项目运行就是在容器中的容器(container)Docker利用容器技术,独立运行一个或者一组应用, 通过镜像来创建的启动,停止,删除,基本命令!仓库(repository)存放镜像的地方Docker Hub(默认是国外的)阿里云,都有容器服务(配置镜像加速!以下是本篇文章正文内容编写dockerfile文件。
2024-07-19 15:51:17 1176
原创 【Redis】集群
奇数个master节点可以在满足选举该条件的基础上节省一个节点,比如三个master节点和四个master节点的集群相比,大家如果都挂了一个master节点都能选举新master节点,如果都挂了两个master节点都没法选举新master节点了,所以奇数的master节点更多的是从节省机器资源角度出发说的。因为新master的选举需要大于半数的集群master节点同意才能选举成功,如果只有两个master节点,当其中一个挂了,是达不到选举新master的条件的。集群会记录节点和槽的对应关系。
2024-07-16 20:31:12 5809 3
原创 【Redis】哨兵(sentinel)
因为有的时候,某个sentinel节点可能因为自身网络原因,导致无法连接master,而此时master并没有出现故障,所以,这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。SDOWN 是单个sentinel 自己主观上检测到的关于master的失效状态,从sentinel的角度来看,如果发送了PING心跳后,在timeout时间内没有收到合法的回复,就达到了SDOWN的条件。自动将某一个从库转换为新主库,继续对外服务,俗称无人值守运维。
2024-07-12 23:15:44 1444 2
原创 【Redis】复制(Replica)
上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master。通过日志可以查看连接状态,日志保存目录在配置文件中。命令配置是一次性,当重启后就不再生效。从机配置上主机的ip、端口。关闭后,数据还在从redis中。slave启动,同步初请。
2024-07-12 20:12:21 1349
原创 【Redis】发布/订阅(Pub/Sub)
已经不推荐使用发布/订阅,现在专业的使用Mq,kafka,RabbitMQ等中间件发布的消息在Redis系统中不能持久化,因此,必须先执行订阅,再等待消息发布。如果先发布了消息,那么该消息由于没有接收者只管发送对于发布者而言消息是即发即失的,不管接收,也没有ACK机制,无法保证消息的消费成功。5.0版本更新的Stream,支持多播以及数据持久化,比发布/订阅更加强大。
2024-07-11 11:06:11 201
原创 【Redis】管道
如何优化频繁命令往返造成的性能瓶颈?Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应服务端处理命令,并将结果返回给客户端。Round Trip Time(简称RTT,数据包往返于两端的时间)
2024-07-11 10:21:32 416
原创 【Redis】事务
可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化, 按顺序地串行化执行而不会被其他命令插入,不许加塞一个队列中,一次性、顺序性、排他性的执行一系列命令单独的隔离操作Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的没有隔离级别的概念因为事务提交前任何指令都不会被实际执行,也就不存在"事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了。
2024-07-11 09:22:51 490
原创 【Redis】Redis持久化
持久化有两种方式,RDB(Redis Data Base)和AOF(Append Only File)RDB是快照模式AOF是复制写操作当redis宕机时,可以通过这两种模式进行数据恢复。
2024-07-10 17:42:15 1170
原创 【Redis】Redis十大类型
redis是k-v键值对进行存储,key的类型都是字符串,而数据类型是value的数据类型命令不区分大小写,而key的值是区分大小写的Key常用命令keys * //当前库的所有keyexists key //判断某个key是否存在,可以同时判断多个key,返回几就是存在几个type key //查看你的key是什么类型// 删除del key //是原子操作,删除指定的key数据。
2024-07-10 10:50:15 1239
原创 【C++】基于C++11的数据库连接池
在进行数据库操作的时候为了提高数据库(关系型数据库)的访问瓶颈,除了在服务器端增加缓存服务器(例如redis)缓存常用的数据之外,还可以增加连接池,来提高数据库服务器的访问效率。一般来说,对于数据库操作都是在访问数据库的时候创建连接,访问完毕断开连接。
2024-07-08 16:06:27 1377
原创 【C++】智能指针
实例对象的引用计数变为2,在共享智能指针离开作用域之后引用计数只能减为1,这种情况下不会去删除智能指针管理的内存,导致类TA、TB的实例对象不能被析构,最终造成内存泄露。也被析构,其对TA对象的管理解除,内存的引用计数减为1,当共享智能指针ap离开作用域之后,对TA对象的管理也解除了,内存的引用计数减为0,类TA的实例对象被析构。类型,这个赋值操作并不会增加引用计数,所以bp的引用计数仍然为1,在离开作用域之后bp的引用计数减为0,类TB的实例对象被析构。
2024-06-16 18:50:28 2362
原创 【C++】C++11新特性
对于 C++ 内置类型的数据,可以直接用 constexpr 修饰,但如果是自定义的数据类型(用 struct 或者 class 实现的),直接用 constexpr 修饰是不行的。注意:在R “xxx(raw string)xxx” 中,原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且()前后加的字符串必须相同。通过对基于范围的for循环语法的介绍可以得知,在for循环内部声明一个变量的引用就可以修改遍历的表达式中的元素的值,但是这并不适用于所有的情况,对应。
2024-06-15 15:56:31 1531
原创 【C++】多线程(基于Windows以及pthread库)
在windows中进程只是一个容器,用于装载系统资源,它并不执行代码,它是系统资源分配的最小单元,而在进程中执行代码的是线程,线程是轻量级的进程,是代码执行的最小单位。任务分解:耗时的操作,任务分解,实时响应数据分解:充分利用多核CPU处理数据数据流分解:读写分流,解耦合设计。
2024-06-11 10:16:59 1349
原创 【C++】设计模式
定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数)。将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。
2024-06-05 10:16:38 1088
原创 【C++】STL
/重新指定容器的长度为num,若容器变长,则以elem值填充新位置。Queue是一种先进先出(First In First Out,FIFO)的数据结构,队列,它有两个出口。//重新指定容器的长度为num,若容器变长,则以默认值0填充新位置。由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器。并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间。replace在替换时,要指定从哪个位置起,多少个字符,替换成什么样的字符串。
2024-06-03 10:35:48 915
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人