自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (39)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++全栈聊天项目(2) 单例模式封装Http管理者

我们先实现PostHttpReq请求的函数,也就是发送http的post请求, 发送请求要用到请求的url,请求的数据(json或者protobuf序列化),以及请求的id,以及哪个模块发出的请求mod,那么一个请求接口应该是这样的。网络请求类要做成一个单例类,这样方便在任何需要发送http请求的时候调用,我们先实现单例类,添加singleton.h实现如下。加下来HttpMgr内实现一个slot_http_finish的槽函数用来接收sig_http_finish信号。好了,这样就完成了。

2025-03-11 11:08:52 1115

原创 QT系列教程(22) QT 实现电子相册(一)--目录树和向导

基于前面介绍的QT知识,做一个电子相册,总结前文介绍的各类知识,将用到QListWidget,QTreeWidget,双缓冲绘图,信号槽,动画效果,绘图事件,鼠标事件,qss等知识,算是对之前知识的一个总结。more效果如下。

2025-03-11 11:07:17 407

原创 QT系列教程(21) 自定义模型的拖动实现

便捷类的拖动实现很简单,今天我们介绍自己定义的ListModel模型如何实现拖动。在之前的ListModel项目基础上,我们先对View视图实现拖动操作.more//设置选择模式为单选//设置可拖拽//设置可拖放//设置显示拖放位置。

2025-03-11 11:06:06 392

原创 QT系列教程(19) Qt MVC结构之QItemDelegate介绍

实现item编辑时特定的效果,比如在item编辑时我们设置一个QSpinBox返回。接下来我们在MainWindow的构造函数里创建两个model和view,我们对其中的一个view使用我们自定义的delegate。updateEditorGeometry是刷新editor的矩形区域,因为随着item变大或者拉伸,它的区域也要随之刷新。setEditorData是在item被双击进入编辑状态时,将model的内容写入editor中。运行程序后,双击两个view的item,可以看到效果的不同。

2025-03-11 11:04:40 538

原创 C++全栈聊天项目(1) 项目架构详解和注册登录界面

C++全栈聊天项目 项目架构详解和注册登录界面设计

2025-03-10 16:53:40 1221

原创 QT系列教程(20) Qt 项目视图便捷类

Qt 项目视图便捷类

2025-03-10 16:45:32 377

原创 QT系列教程(18) MVC结构之QItemSelectionModel模型介绍

QT MVC结构之QItemSelectionModel模型介绍

2025-03-10 16:43:04 1129

原创 QT系列教程(17) MVC结构之Model模型介绍

MVC结构之Model模型介绍

2025-03-10 16:40:33 1123

原创 QT系列教程(16) 定时器事件

定时器事件

2025-03-10 16:39:16 289

原创 利用redis实现分布式锁

然而,在分布式系统中,由于多个进程可能运行在不同的机器上,单纯依赖本地锁无法实现资源的同步访问。Redis 提供了简单且高效的分布式锁机制,尤其是通过 SET 命令配合 NX 和 PX 选项,可以实现基本的锁功能。为了提高锁的可靠性,建议使用多个 Redis 实例(如集群模式或主从架构),确保单点故障不会影响锁的功能。分布式锁引入了网络延迟,需评估锁机制对系统性能的影响,避免过度使用锁导致性能瓶颈。在析构函数中,如果锁仍被持有,则尝试释放锁,以防止因忘记释放锁导致的死锁。分布式锁通常不支持重入。

2025-03-10 16:35:40 451

原创 QT系列教程(15) 鼠标事件

QT系列教程(12) 鼠标事件

2025-03-10 16:30:55 281

原创 QT系列教程(14) QT 按键事件

QT 按键事件

2025-03-10 16:29:39 420

原创 QT系列教程(13) 事件系统

运行程序就可以在滚轮滚动时缩放textEdit,按下空格键就可以使spinbox清零。

2025-03-10 16:27:56 1071

原创 QT系列教程(12) QT 拖拽事件

拖拽事件是我们在设计软件时常用的事件,比如我们把要上传的文件拖拽到指定区域实现自动上传,或者拖动到指定文件夹等。这里主要介绍如何实现拖动事件,包括事件的进入dragEnterEvent, 事件的放弃dropEvent等。我们要实现一个拖动demo,将文件拖动到主窗口区域,然后在主窗口的textEdit控件中显示文件的内容。

2025-02-19 11:13:08 420

原创 C++ redis实现分布式锁

在单机环境中,常见的锁机制如互斥锁(Mutex)用于保护共享资源。然而,在分布式系统中,由于多个进程可能运行在不同的机器上,单纯依赖本地锁无法实现资源的同步访问。这就需要分布式锁来确保跨多个节点的互斥访问。分布式锁的关键特性:同一时刻只有一个客户端可以获取锁。锁有超时机制,防止因客户端故障导致的死锁。即使部分节点失效,锁机制仍然可靠。

2024-10-11 09:20:04 1415

原创 QT系列教程(11) TextEdit实现Qt 文本高亮

源码链接。

2024-06-16 09:24:42 1255

原创 C++全栈聊天项目(22) 气泡聊天对话框

NameLabel用来显示用户的名字,Bubble用来显示聊天信息,Spacer是个弹簧,保证将NameLabel,IconLabel,Bubble等挤压到右侧。绘制的过程很简单,先创建QPainter,然后设置NoPen,表示不绘制轮廓线,接下来用设置指定颜色的画刷绘制图形,我们先绘制矩形再绘制三角形。BubbleFrame基类构造函数创建一个布局,要根据是自己发送的消息还是别人发送的,做margin分布。接下来在发送处实现文本和图片消息的展示,点击发送按钮根据不同的类型创建不同的气泡消息。

2024-06-16 09:22:07 928 1

原创 C++全栈聊天项目(21) 滚动聊天布局设计

最外层的是一个chatview(黑色), chatview内部在添加一个MainLayout(蓝色),MainLayout内部添加一个scrollarea(红色),scrollarea内部包含一个widget(绿色),同时也包含一个HLayout(紫色)用来浮动显示滚动条。widget内部包含一个垂直布局Vlayout(黄色),黄色布局内部包含一个粉色的widget,widget占据拉伸比一万,保证充满整个布局。重写paintEvent支持子类绘制。本节先到这里,完成聊天布局基本的构造。

2024-06-08 11:18:23 713

原创 QT系列教程(10) QTextEdit学习

QTextEdit是文本编辑器,支持富文本功能。接下来我们创建一个Qt Application 应用,然后在ui中添加一个QTextEdit插件。运行程序后,可以在QTextEdit中输入任何文字也包括富文本。源码链接。

2024-06-08 11:16:48 1604

原创 QT系列教程(9) 主窗口学习

任何界面应用都有一个主窗口,今天我们谈谈主窗口相关知识。一个主窗口包括菜单栏,工具栏,状态栏,以及中心区域等部分。我们先从菜单栏说起more源码链接。

2024-06-06 12:29:05 1032

原创 QT系列教程(8) QT 布局学习

Qt 中的布局有三种方式,水平布局,垂直布局,栅格布局。more源码链接。

2024-06-06 12:24:16 910

原创 C++全栈聊天项目(20) 聊天列表动态加载

全栈聊天项目实战

2024-06-06 12:22:07 1132

原创 QT系列教程(7) QLineEdit介绍

QLineEdit属于输入插件,用来实现单行录入。支持几种录入模式。Normal表示正常录入,录入的信息会显示在QLineEdit上。Password表示密码录入的方式,录入的信息不显示QLineEdit,只是通过黑色圆点显示。NoEcho 表示不显示录入信息,类似于Linux输入密码时,显示的是一片空白。PasswordEchoOnEdit 表示在输入的一刹那可以看到字符,但是立刻变为不可见的黑色圆点显示。more源码链接。

2024-05-30 16:21:50 853

原创 QT系列教程(6) 几种标准对话框

视频链接源码链接。

2024-05-30 16:20:14 696

原创 QT系列教程(5) 模态对话框消息传递

视频链接源码链接。

2024-05-29 16:22:00 1077

原创 C++ 封装线程池(结合QT支持信号机制)

C++ 封装线程池,利用C++11 特性

2024-05-29 16:08:11 606

原创 QT系列教程(4) Qt 信号和槽

视频链接视频教程源码链接owMainSig两个信号连接起来,也可以实现消息的传递,让代码更简洁了。视频链接视频教程源码链接。

2024-04-11 16:40:24 1214

原创 qt 系列教程(3) 对话框

目前总结了对话框的几种使用方法,模态和非模态,这并不复杂。视频链接视频教程接视频教程源码链接。

2024-04-11 16:37:01 544

原创 QT系列教程(2) 创建项目和编译

在上面的项目里我们新增C++类,右键项目目录选择Add New,然后选择C++类我们将这个类命名为HelloDialog,Base选择custom,然后写入QDialog点击下一步直到完成此时编译会出问题,因为我们要在生成的hellodialog.h文件里包含Qdialog头文件和ui头文件,并且声明ui成员变量public:private:然后在hellodialog.cpp里加载我们的ui文件delete _ui;修改main.cpp,调用HelloDialog创建界面。

2024-04-11 16:36:04 2010

原创 Python 搭建虚拟环境

Python 搭建虚拟环境

2022-10-16 14:37:40 1527

原创 Qt 环境搭建

QT 开发环境搭建。

2022-10-16 14:03:09 4505

原创 C++ 虚函数表原理和类的内存分布

C++ 虚函数表原理和类的内存分布

2022-08-02 11:35:45 1806 1

原创 C++ 重载重写覆盖的区别

C++ 重写覆盖重载

2022-07-28 23:43:49 596

原创 模板特例化和常用用法

C++ 模板类基本用法和 模板特例化介绍。

2022-07-24 18:34:23 740

原创 C++ 模拟实现vector

C++ 模拟实现vector

2022-06-21 21:53:51 637

原创 C++ 模板类型的原样转发和可变参数

C++ forward原样转发

2022-06-21 21:51:40 589

原创 C++ 模板类的友元和折叠规则

模板类折叠规则和友元类

2022-06-21 21:50:02 502

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

函数模板当我们想要定义一个可以支持泛型的函数时,就要采用函数模板的方式了。所谓泛型就是可以支持多种类型的操作,比如我们定义一个compare操作,他可以根据传递给他的参数类型动态调用对应的函数版本,实现多种类型的比较。template <typename T>int compare(const T &v1, const T &v2){ if (v1 < v2) return -1; if (v2 < v1) re

2022-04-30 18:38:49 658

原创 C++ 类的封装继承多态

C++ 特性C++ 三大特性,封装继承多态。我们先实现一个Quote作为基类class Quote{public: Quote() = default; Quote(const std::string &book, double sales_price) { price = sales_price; bookNo = book; } std::string isbn() const { retu

2022-04-28 22:16:16 2420

原创 C++ lambda和function

lambda表达式lambda表达式又称为匿名表达式,是C11提出的新语法。[]存储lambda表达式要捕获的值,()内的参数为形参,可供外部调用传值。lambda表达式可以直接调用 // 1 匿名调用 [](string name) { cout << "this is anonymous" << endl; cout << "hello " << name << endl; }("z

2022-04-11 22:31:01 2317

epoll demo(LT和ET)

自己学习并改写的epoll代码,在Linux测试没问题,分别实现了epoll的LT模式和ET模式,初学者可以学一学

2016-04-10

自己研究的redis3.07注释版

自己研究redis底层框架,对理解的部分添加了一些注释,希望可以帮到学习的人,有问题可以加我微信公众号,留言。解压密码123456

2016-04-08

epoll demo 代码

自己总结和改写的epoll demo代码,可以编译运行,初学者可以参考下,有我自己的理解

2016-04-08

IOS 内付费代码(接受appstore的收据和确认结果)

ios 产品内付费代码示例,这次是包含接受appstore的reciept和反馈给appstore ,并确认结果。

2014-10-14

android拖动小球demo

android demo程序,直接可运行,实现了手指点击屏幕拖动小球,小球跟随移动功能。

2014-07-04

ios 应用内付费代买示例

ios 应用内付费代码示例,我在公司测试可行,可以收到appstore信息回复。内涵使用说明。采用object-c编写,调用时说明已更新。

2014-03-06

ios应用发布到appstore全部流程

自己亲手整理的ios 应用发布到appstore的全部流程,含有配图,清晰明了,学不会只能说你笨。

2014-03-06

InAppPurchase

苹果内付费调用函数的示例,简单易懂,基于ios xcode项目,仅仅为示例,不喜勿喷。

2014-02-18

COCOS2D-X 实现触屏拖动和惯性运动

用cocos2d-x实现的触屏拖动程序,包括手指滑动后松开的惯性运动,可以直接,cocos2d-x开发,C++写的

2014-01-08

用cocos2d-x C++开发的俄罗斯方块源码和apk

使用C++在cocos2d-x开发的俄罗斯方块,内含源码,可运行,并且已经生成android发布包,运行流畅,喜欢的可以下载学习。

2013-11-16

QT录音软件demo示例

在公司开发的录音软件,传上来作为证据。在铭乐扬制作的。

2013-09-25

QT GraphicsView例子

基于QT GraphicsView三层架构所写的例子,通俗易懂,很经典的教程。代码简单易懂,便于初学者学习。

2013-01-25

QT Tcp文件传输demo

开发的基于QT平台的网络通信工具,可用于文件传输,字符串连接等。用C++写的,真的很不错。

2013-01-11

基于QT平台的TCP字符串传播

基于QT平台的TCP协议,采用TCP协议开发的一个示例,用于说明字符串传播,简单易懂,建议收藏。

2013-01-10

蛇形数组的建立与输出demo

建立蛇形数组,并输出运行,可以更改参数,内附源代码,很方便。

2011-04-04

赫夫曼树建立与逆向编码

赫夫曼树的建立与逆向编码,线性存储。内附源代码,根据严蔚敏提供的C++数据结构算法编译。

2011-02-01

判断一个节点是否是另一个节点的子孙

不采用链式方法构建树,并判断一个节点是否是另一个节点的子孙,比较方便。

2010-12-11

赫夫曼树的建立与编码demo

此程序为构造赫夫曼树,以及如何编码,内附源程序

2010-12-11

c++语言编写的词法分析器

虽然关键字只有一少部分,但着重强调了算法的设计,内附源程序,经过调试后可以运行并达到制定效果,如果读者想扩充,只需添加关键字即可。

2010-11-02

传教士与野人过河问题demo

3个传教士,3个野人,过河问题,船只每次最多只能运2人,且如果岸上的野人数多于传教士,野人会吃掉传教士,要将左岸的野人与传教士运往右岸,怎么运

2010-05-17

优秀毕业设计之博客系统源码

价值500元的毕业设计源码,博客系统源码,亲测可用。

2021-12-10

最新C++学习案例源码

C++学习者的福音,总结了常用的C++用法,编写多个demo,涵盖运算符重载,封装继承多态,C11 系统年特性,lambda,function等新功能。

2020-03-21

python爬虫抓取mm图片

爬虫抓取mm图片,采用ptyhon爬虫技术,用到了正则表达式recompile类,用到了urllib库用来请求图片。

2018-11-29

python实现打飞机小游戏

python实现打飞机小游戏

2017-07-28

python实现打飞机游戏

python实现打飞机小游戏,需要安装pygame库

2017-07-28

python实现2048游戏

python实现的2048游戏,初学者可以下载看看。

2017-05-26

python实现图片转字符画

python实现的图片转字符画程序,简单易懂。

2017-05-05

C++封装Redis访问类

C++封装Redis访问类,封装set和get操作

2017-04-26

C++跨平台条件变量和互斥锁封装

用C++封装的跨平台条件变量和互斥量,windows环境和linux环境都测试好用, 是理解条件变量和互斥量的好demo。

2016-10-20

多线程利用semophore同步的demo

利用windows api 和semophore变量进行多线程同步的案例,三个线程分别输出自己的id,但是要求第一个线程输出后换为第二个输出,第二个输出后换为第三个输出,第三个输出后换为第一个输出...

2016-10-15

udp打洞代码示例demo

udp打洞代码,自己测试并应用到公司的项目中,读者可以根据实际需要更改和完善udp这部分代码。

2016-09-18

C++模板实现大根堆的插入删除以及初始化

基于C++ 模板实现的大根堆,里面有大根堆的实现,初始化,插入元素和pop顶端元素,注释详细,并写好了测试代码,简明易懂,想学习的可以下载。

2016-07-13

多线程互斥锁和条件变量demo

基于多线程,学习互斥锁和pthread_cond_wait条件变量实现的demo, 初学者学习。

2016-06-13

libevent服务器 demo

基于libevent实现的一个简单服务器demo,使用了eventbuffer和listener基本回调机制

2016-06-02

我读过的最好的makefile教程

我读过的最好的makefile教程

2016-05-13

事件驱动库libiop

别人封装的libiop库,适合学习事件驱动的人,epoll,slect,iocp等多种模型都有封装。自己做了部分注释

2016-05-12

TCP多线程服务器demo

自己写的TCP简单并发服务器,多个线程各自accept,然后与客户端通信,初学者可以学一学

2016-05-05

TCP简单循环服务器demo

自己写的简单的TCP循环服务器,简单易学,初学者可以看看

2016-05-05

自己封装的epoll事件驱动模型

基于epoll的echo server,用回调函数封装了epoll,以后会添加序列化和粘包处理,以及心跳,慢慢完善。

2016-04-25

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

TA关注的人

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