自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (15)
  • 收藏
  • 关注

原创 Redis集群的学习(四)

Redis集群通过哈希槽分区实现数据分片,每个节点负责16384个槽位的一部分。相比一致性哈希,哈希槽算法解决了数据倾斜问题,使扩容缩容更加灵活。搭建三主三从集群时,需配置6个节点,启动后通过redis-cli构建集群关系。集群不保证强一致性,但支持故障转移,实现高可用。读写测试需加-c参数进入集群模式,确保数据路由到正确槽位。主从切换和故障迁移由集群自动处理,提升了系统的容错能力。

2025-06-22 17:49:30 853

原创 Redis哨兵模式的学习(三)

在主从复制的基础上,添加一个哨兵角色,用于巡查监控后台master服务器是否故障,如果故障那么根据自动将某一个slave服务器变为master服务器,继续对外提供服务。

2025-06-21 22:39:18 640

原创 Redis主从复制的学习(二)

Redis主从复制是一种读写分离机制,通过配置多台Redis服务器(一主多从)实现数据同步。主服务器负责写操作,从服务器负责读操作。主从复制的主要功能包括分担主服务器压力、容灾恢复、数据备份和支持高并发。配置时需注意从库连接主库的认证密码,并可通过命令动态变更主从关系。主从复制的工作流程包括全量复制、增量复制和断点续传,但存在复制延时和主库故障需人工干预的缺点。从服务器默认只读,重启后可继续同步主库数据。

2025-06-18 12:37:57 961

原创 error:MISCONF Redis is configured to save RDB snapshots

在使用redis异步驱动方式下,执行hset指令时,报错。

2025-06-14 13:54:04 273

原创 Redis事务与驱动的学习(一)

Redis Pipeline和事务机制解析 Redis Pipeline允许客户端批量发送多个命令,减少网络往返时间,提升性能。Redis事务通过multi/watch/exec/discard等命令实现命令打包执行,具备ACID特性中的原子性和隔离性,但持久性依赖AOF配置。 Lua脚本与Redis交互具有显著优势:原子执行、减少网络开销、灵活复用。通过eval/script load等命令可实现复杂操作,但不保证一致性。 C++客户端连接Redis可使用hiredis库,提供同步连接接口,支持TCP/U

2025-06-14 13:35:35 677

原创 内存泄漏检测工具-学习(一)

本文介绍了C/C++中内存泄漏问题的检测方法。内存泄漏主要发生在堆区内存分配后未释放的情况,可通过系统命令htop初步观察内存增长,但更可靠的是使用专门的内存泄漏检测工具。 作者提出了三种检测方案: 通过链表记录分配节点,但遍历效率低; 使用红黑树提高操作效率; 以文件方式记录内存分配和释放。 重点阐述了hook技术在多文件环境中的应用,通过重定义malloc/free函数,记录分配信息到文件,释放时删除对应文件,从而准确判断泄漏位置。该方法利用dlsym获取真实函数地址,__builtin_return_

2025-06-07 09:39:46 542

原创 死锁检测组件-学习(一)

1、两个或两个以上的线程或进程,因争夺资源而造成的一种互相等待的现象,叫做死锁。2、可以通过资源分配和请求,可以构造有向图,然后通过检测有向图是否成环。3、代码过于冗长,本来是想封装成一个有向图文件,再调用,没想到出现各种传值问题,暂时只能放在一个文件里面,后面再重新整合下。

2025-06-05 08:51:59 351

原创 服务端定时器的学习(一)

定时器在程序中无处不在,无论是硬件,还是网页,客户端,服务端等。在服务端上合理地使用定时器,能提高服务器的效率和稳定性,如定时清理缓存,在服务器高负载情况下,自动执行一些重要的任务等。定时器的数据结构多种多样,有根据触发时间排序的红黑树,最小堆,也有根据执行顺序的时间轮。服务端常与网络模块协同处理服务端常基于事件驱动业务开展服务端除了协同网络处理,复用系统调用Code。

2025-06-03 22:50:22 800

原创 内存池学习(一)

内存池技术解析与实现 内存池通过预分配虚拟内存(堆空间)来管理动态内存,解决内存碎片问题(外部/内部碎片),提高分配效率并减少泄漏风险。其核心优势在于减少频繁的系统调用和长期运行时的崩溃概率。 实现方法:以4KB页为单位分配内存,通过链表管理定长内存块。初始化时预分配空间并构建空闲链表;分配时直接取链表节点,释放时回收到链表。对比jemalloc(适合高并发)和tcmalloc(擅长小对象分配)等组件,内存池更灵活但需自行适配场景。 适用场景:长期运行的服务端程序,需稳定性和高效内存管理。 代码参考:Git

2025-05-30 22:23:49 965

原创 线程池学习(一)

本文介绍了线程池的核心概念与实现。首先阐述了线程与进程的区别,指出线程池通过复用线程资源来降低系统开销。文中详细说明了线程池采用生产-消费模型的工作原理:生产者线程将任务放入队列并唤醒消费者线程,消费者线程从队列取出任务执行。重点分析了线程数量的确定方法,针对计算型和IO型任务给出了不同的设置建议。还展示了线程池的代码实现,包括任务队列、线程管理和线程唤醒机制。最后提出了优化方案,通过分离生产者和消费者队列提升并发性能。文章总结了线程池在异步任务处理和多核利用方面的核心价值,并解释了队列选择的原因。

2025-05-28 16:53:08 842

原创 网络学习-TCP协议(七)

本文主要介绍了TCP协议的基本概念、三次握手和四次挥手的过程,以及TCP协议在网络协议栈中的位置和作用。文章还详细解释了TCP连接建立和断开过程中涉及的关键函数,如socket()、bind()、listen()、accept()、connect()、send()、recv()和close(),并说明了这些函数如何通过POSIX API实现跨平台网络编程。此外,文章还探讨了TCP连接的生命周期、SYN泛洪攻击的解决方案、为什么建立连接需要三次握手而断开连接需要四次挥手,以及TCP如何通过序列号、确认应答、重

2025-05-23 15:48:36 826

原创 网络学习-利用reactor实现http请求(六)

本文探讨了如何使用C/C++语言实现HTTP请求,并展示了如何通过IO多路复用技术和reactor模式构建一个简单的Web服务器。文章首先反驳了C/C++无法实现HTTP请求的观点,随后详细介绍了如何处理请求和响应数据,并通过代码示例展示了如何发送HTTP请求和处理响应。此外,文章还讨论了如何通过读取HTML文件和处理图片数据来扩展服务器的功能,并提出了分段发送数据以处理大文件的解决方案。最后,通过压力测试验证了服务器的性能,并指出C/C++在处理底层和性能调优方面的优势。

2025-05-21 22:02:15 1339

原创 网络学习-reactor模式(五)

Reactor是一种基于事件驱动的编程模式,通过将IO操作与业务逻辑分离,利用回调函数处理不同的IO事件,实现非阻塞的IO操作。相比传统的同步阻塞IO模型,Reactor具有更高的并发性能和资源利用率。其核心思想是将IO管理转变为事件管理,关注事件与回调的匹配,简化对IO操作的关注。实现Reactor的关键技术包括使用epoll和回调函数,通过注册回调函数来处理可读、可写等事件。具体实现中,通过epoll_wait监听事件,并根据事件类型调用相应的回调函数。Reactor模式提供了灵活的网络IO多路复用解决

2025-05-21 00:43:35 353

原创 网络学习-epoll(四)

epoll是一种高效的I/O多路复用机制,相较于select和poll,它通过事件驱动的方式处理I/O,避免了频繁的用户态和内核态之间的数据拷贝,显著提高了性能。epoll的核心在于维护一个就绪列表,只有真正有事件的描述符才会被处理,而不是轮询所有描述符。它支持边缘触发(ET)和水平触发(LT)两种模式,适用于高并发的场景。epoll的使用步骤包括创建epoll实例、添加/删除/修改监听描述符、等待事件发生以及处理事件。epoll的存在是Linux成为主流服务器操作系统的重要原因之一。

2025-05-19 23:50:51 832

原创 网络I/O学习-poll(三)

Poll机制是对Select的优化,解决了Select参数复杂和数量限制的问题。Poll通过系统调用将所有客户端的文件描述符(fd)拷贝到内核空间进行轮询,判断IO是否就绪,并返回就绪的客户端数量。Poll使用pollfd结构体来管理客户端的fd和事件类型,调用poll函数时,可以设置超时时间,函数返回就绪的fd数量。在实际操作中,首先创建pollfd数组存放客户端的fd和事件类型,然后调用poll函数阻塞等待事件发生。当事件发生时,遍历就绪的客户端,处理新连接和接收数据。Poll机制简化了IO多路复用的实

2025-05-19 22:32:32 533

原创 网络编程-select(二)

I/O多路复用技术通过单个线程管理多个I/O操作,解决了传统多线程模型中线程资源消耗过大的问题。系统提供了select、poll和epoll三种策略来实现这一技术。其中,select机制通过将多个文件描述符(fd)集合化,并监控这些fd的可读、可写和错误状态,从而实现高效的事件处理。具体实现中,select函数阻塞等待I/O事件,一旦有事件发生,便进行相应的accept或recv操作。尽管select机制有效减少了线程开销,但其在处理大量fd时存在性能瓶颈,因为每次调用select都需要将fd集合从用户空间

2025-05-18 23:22:55 431

原创 网络I/O学习(一)

网络IO是客户端与服务端之间进行通信的通道,通常通过套接字(socket)实现。通信步骤包括:1. 建立套接字并绑定IP和端口;2. 监听连接请求;3. 接受数据并建立IO通道;4. 返回信息。然而,单线程模式下,服务端只能处理一个客户端的请求,无法同时响应多个客户端。通过优化代码,虽然可以处理多个客户端的连接,但仍存在无法实时响应和一次性连接处理信息的问题。解决这些问题通常需要引入多线程或异步IO机制。

2025-05-18 16:29:47 399

原创 安装SAMBA服务,实现Linux和Windows系统之间文件共享

Samba服务是一种用于在Linux和Windows系统之间共享文件和打印机的工具。使用Samba可以简化文件传输过程,避免依赖虚拟机或第三方软件。安装Samba的步骤包括:通过yum命令安装Samba及其相关组件,配置smb.conf文件以设置共享路径和权限,添加Samba用户,并启动Samba服务。此外,还需配置防火墙以允许Samba服务,并在Windows系统中通过IP地址访问共享文件。如果遇到访问问题,需检查共享文件权限或关闭SELinux。Samba服务支持开机自启,确保长期可用性。

2025-05-18 00:52:52 349

原创 浅谈execl函数的使用

linux下编程心得

2022-09-17 17:39:53 1399

原创 virtualbox 设置静态IP

上次写过一篇文章关于如何设置静态IP,使用的是Vmware链接这次采用Virtualbox主要是自己懒得去破解VMware,然后使用virtualbox,相比之下,VB并不是那么友好,毕竟免费嘛。好家伙,看了一下午和晚上CSDN的博客关于如何设置静态IP,一直没成功,还把我自己给带进去了。理论前言<网络连接方式>NAT特点:虚拟机能访问主机,主机不能访问虚拟机虚拟机能访问网络中的其他主机,相反其他主机访问不了虚拟机虚拟机之间不能访问桥接<简单易上手>特

2022-04-18 23:05:47 1813

原创 Lua: attempt to call method ‘xxxx‘ (a nil value)

解决方案:1、尝试用绝对函数方法调用:如local a = A.a or {};function a:Max(pa, pb)end--使用方法:A.a:Max(1,2); 2.那就还说明一个问题,该函数没注册上,看看是不是写函数时头文件未包含,又或者敲代码手速过快,导致出现这种错误function a:Max(pa, pb);end...

2021-12-01 14:38:01 5696

原创 SVN 上传文件出现冲突

使用SVN更新或者提交时出现冲突冲突原因,有人正在修改某个文件,所以更新或提交失败。还有就是,你所更改的文件并非最新版本,故出现冲突。最后还有一种,印象较为深刻,Skipped ‘xxx’ --Node remains in conflict解决方案先强制移除文件,再告知SVN要修复哪个文件,最后再更新下svn remove --force filesvn resolve --accept=working filesvn update...

2021-08-19 18:03:26 873

原创 Lua5.1~5.4版本包库导入失败

链接 参考博客在使用C/C++调用Lua时,虚拟机出现down机,则有可能说明你包库导入失败如若出现以下错误,基本可以确认了一般导入包库代码:luaopen_base(pLuaState);luaopen_math(pLuaState);luaopen_string(pLuaState);...以上几个包库还好,可是到table和io时,就会出错。利用Lua语言的堆栈机制,强制压入栈代码:lua_pushcfunction(pLuaState,luaopen_table);l

2021-07-14 19:53:57 540

原创 Linux上配置静态IP

在度娘上搜索了多篇文章关于如何在CentOS7上配置静态IP,看了多篇其他博主的文章,最后没有一个成功的,PING www.baidu.com就没有成功的关键词IP地址,网关地址,DNS环境CentOS7是安装在Vmware中的,并且我采用的NAT方式(简单的说,就是虚拟机借用主机的地址去访问),关于其他方式(比如桥接,仅主机等模式)有机会在详谈首先打开VMware中的编辑,虚拟网络编辑器,查看网络配置在这能看到子网IP,掩码,点击更改设置,为了看到更详细的地址首先,我选择NAT模式,之

2021-07-12 16:18:37 290 1

原创 xxx被声明为已否决

C++中编译出现C4996错误,出现原因,在Windows系统,VS编译器上,微软给的解释是使用的函数版本太老了,可能已经弃用了。C499错误链接给的解决方案:1.将VS中的SDL检测给关掉即可。2.编译命令使用#pragma warning(disable: 4996)...

2021-05-10 18:12:05 4830 2

原创 Python包镜像网站

http://pypi.douban.com/simple/ 豆瓣http://mirrors.aliyun.com/pypi/simple/ 阿里http://pypi.hustunique.com/simple/ 华中理工大学http://pypi.sdutlinux.org/simple/ 山东理工大学http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学https://pypi.tuna.tsinghua.edu.cn/simple 清华使用示

2021-04-21 20:08:45 3653

原创 ESP8266烧录

如何烧录左边是ESP8266,右边的这个是烧录模块,通过插入电脑上进行下载程序。问题就是,厂家生产的时候没接GND,导致程序烧录不进去。可以通过查看文档看看引脚分布,来进行设计。个人的设计:这样基本就可以解决了。...

2021-03-17 20:31:38 762

原创 VS使用ODBC连接MySql

visual studio2017使用ODBC连接MySql有两种方案进行连接1.去官方下载MySQL连接ODBC的插件[点击](https://dev.mysql.com/downloads/connector/odbc/)2.下载安装3.进入控制面板—>系统与安全—>管理工具4.然后打开系统DSN,再点击添加5.回到VS里,点击工具连接数据库,使用ODBC数据源第二种方法呢,官方直接为VS定制了一个专门插件[点击](https://dev.mysql.com/downloads/window

2020-11-19 17:46:07 4372 7

原创 计算平方根

C语言Math库中有个函数sqrt可以直接调用while ((scanf_s("%f", &number)) != EOF) { printf_s("%f", sqrt(number)); }也可使用数学公式来算,即为计算近似值来求,当某个近似值与前一个近似值相等时,这个值就是平方根的值设一个数列an,a1=1,a2=(a1+n/a1)/2…an=(an-1+n/an...

2020-02-01 17:19:34 693

转载 BadApple(控制台改进版,消除闪烁)

向该老哥的代码学习了一手,原地址具体思路还是与上次的那个一样#include <windows.h>#include <mmsystem.h>#include <iostream>#include <fstream>#include <cstdio>#pragma comment(lib, "winmm.lib")us...

2019-05-24 12:55:19 3247 7

原创 系统存储区、显存和AGP

三者都代表这内存,但在功能与使用上又有所区别。系统存储区即我们常说的电脑内存多少,也就是内存条的多少。大部分直供CPU(Central Process Unit)显存即直供GPU(Graphics Process Unit)工作的专属内存,结构也与CPU与内存条之间的结构类似。不过前提是在有独立显卡的条件下,目前大部分电脑拥有两块显卡,其中一块是集成显卡,这目前已经集成在CPU芯片里...

2019-05-23 16:30:58 560

原创 编程累了?来首BadApple如何?

如何使用C/C++进行实现由于最近比较累,所以打算使用控制台进行模拟实现,而不使用MFC或者Win32进行实现。使用控制台,通过符号来进行描绘。刚开始看BadApple的视频时,想使用算法,将人物使用‘#’或者‘*’进行填充,然后发现这样做太麻烦了,而且数据量特别大。于是转化将填充人物信息写成一个txt文档,在该文档中使其看起来像视频中的人物就行了。如何进行播放起初动画也是将每帧的图片素...

2019-05-21 12:25:07 1854 2

原创 D3D 摄像机

摄像机在3D游戏中,就类似于人类在现实生活中的眼睛,将眼前的事物映射到自己的脑海中,即在3D游戏中,将摄像机所能记录的场景人物全部显示在玩家眼前。设计的用例图:该摄像机系统拥有这些功能,开始设计类。private: //Save camera related matrices D3DXMATRIX m_View; D3DXMATRIX m_Proj; D3DXMATRIX m...

2019-05-18 10:55:07 950

原创 D3D9 简单图形的绘制以及显示

程序截图所示:要想完成这样的程序,首先咱们先得知道以下几点才能进行绘制并且显示:一、了解什么是D3D9的绘制流水线:1.局部坐标系: 主要用于在使用3D建模时,所使用的坐标系,无需考虑它相对于场景中其他物体的位置,大小。通常在创建模型时,建模人员都会将模型围绕原点进行建模,那样将有助于坐标变换,比如让模型旋转起来,在我们将坐标变换时将会进行描述。...

2019-05-17 10:28:24 12591 1

原创 光照(light)

光照(light)是为了增强游戏场景的真实感而存在,也有助于描述实体形状和立体感,算是3D游戏中渲染的基础了。如:一、认识光照:在Direct3D的光照模型中,光源发出的光由以下三种类型组成(和现实生活中的类似)。1、环境光(Ambient light):这种光经其他表面反射到达物体表面,并照亮整个场景。如现实生活中的树叶一样,只被环境光一定程度的照亮,而不是直接...

2019-05-17 10:28:12 1967

原创 纹理映射(Texture Mapping)

纹理映射技术,是一种将图形绘制(映射)到表面的技术,可以显著地增加所绘制场景的细节和真实感。 如: 纹理坐标 纹理实际上是一个二维数组,它的元素是一些颜色值。单个的颜色值被称为纹理元素或纹理像素。每一个纹理像素在纹理中都有一个唯一的地址。这个地址可以被认为是一个列和行的值,它们分别由U和V来表示。纹理坐标位于纹理空间中。也就是说,它们和纹理中的(0,0)位置相对应。当我们将一个纹理应用于一

2019-05-17 10:27:59 29732 3

原创 再探Direct3D流水线

Direct3D流水线大体图:局部坐标: 也就是3D实体在其局部坐标系中的坐标,即为当创建3D物体时,或从其他地方加载3D物体时,该物体通常都会有自己的一组坐标轴,物体的中心则位于局部坐标系的原点,如果不进行变化,那么程序加载物体就可能会看不见物体。如下图定义了一个立方体,该立方体长为10个单位,中心坐标为(0,0,0),各个顶点坐标分别如下: V0(10,10,10) V1(-1

2019-05-17 10:27:22 1186

原创 粒子动画

比起不做而后悔,不如做了再后悔 ——《游戏人生》平常咱们常见的特效: 诸如此类。今天将学习一种特殊的特效——“粒子特效”。粒子特效粒子是什么?粒子是一种微小的物体,比如像我们周边环境中的雪花,火星等物体。因此在游戏中一般都用粒子特效来模拟咱们现实生活中的许多自然现象。粒子系统粒子系统是众多粒子的集合。一般具有具有粒子的更新,显示,销毁及其创建粒子等

2019-05-17 10:27:12 3343

原创 文字——弹幕?

万物皆虚,万事皆允 ——《刺客信条》继续Directx3D游戏开发之旅:字体:在游戏中,经常要向用户显示一些文本信息。所以就需要我们创建字体和显示字体了,通过几天学习,发现文本上的处理算是所有处理里面最让人头疼的了,尤其是汉字编码,是采用utf-8进行字符编码还是utf-16进行编码,貌似大多数采用utf-16都可以基本解决问题,但不排除其他情况,可能还需要考虑utf-32(

2019-05-17 10:26:54 2078

原创 天空盒

天空盒就是围绕摄像机的360°的风景照。实质其实就是围绕着摄像机的立方体,而摄像机就在这个立方体的里面。可以用来模拟无限的天空,山脉等现象。为什么要使用天空盒在3D游戏中,一般来说要渲染的东西会比较多,而使用天空盒会节约部分渲染的时间;而且如果不采用“天空盒”技术,或者其他技术,而直接进行渲染天空,地面以及周围场景,那么可能会因为距离把握不当,造成“露馅”。除了在游戏中使用“天空盒...

2019-05-17 10:26:42 2882

XAudio2 by 冷崖

利用DirectX中的XAudio2 API所写关于在游戏中音频播放的小样例

2017-10-19

四边形的简单绘制

关于简单四边形的绘制以及上色

2017-05-28

Texture Mapping

使用Direct3D9进行编写的“纹理映射”文件

2017-07-11

四边形的绘制

关于简单四边形的绘制

2017-05-28

BadApple2.zip

相比上次的Debug程序,已经更新了,解决了显示闪烁的问题

2019-05-24

Text barrage

利用Directx9.0与C++所编写实现字体的显示,然后再拓展到弹幕的显示

2017-11-30

光照(Lighting)

关于光照显示物体的基础代码

2017-06-30

使用高度图

使用Direct9.0c以及高度图,来进行模拟现实生活中的山川地形,且在地形中行走,具有一定的颠簸感。

2019-04-06

BadApple.zip

使用C/C++语言,通过文件操作,来模拟实现BadApple的视频效果。(注:这是一个控制台程序)

2019-05-21

Direct初始化

自己编写的DirectX第一个窗口

2017-05-12

雪花粒子特效

该资源采用Direct3d9.0的技术,创建一个粒子类,然后再拓展一个雪花粒子类实现飘落效果

2017-11-27

输入控制,基于DirectX

DirectX游戏控制器,用于帮助游戏检测设备(鼠标,键盘,游戏手柄等)的输入,并作出相应的反应。

2019-04-12

Direct9.0C模拟实现天空盒场景

使用Direct9.0,采用“天空盒”技术,模拟的天空盒场景,其中并没有设置输入控制。

2019-04-04

DirectX高级动画SDK相关代码修改

DirectX高级动画制作书中的相关代码修改

2017-06-11

DirectX高级动画SDK相关代码升级

DirectX高级动画SDK相关代码修改

2017-06-11

空空如也

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

TA关注的人

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