自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 收藏
  • 关注

原创 lc42接雨水

通过双指针技术,我们避免了存储两个完整数组,将空间复杂度从O(n)优化至O(1),同时保持线性时间复杂度。该解法的核心在于利用左右指针的相对高度关系,动态确定当前位置的储水量由哪一侧的最大高度主导,从而实现空间效率的显著提升。

2025-05-17 19:50:50 824

原创 Qt 的原理及使用(8)——QT组件

2.11styleSheet通过 CSS 设置 widget 的样式.CSS (Cascading Style Sheets 层叠样式表) 本⾝属于⽹⻚前端技术. 主要就是⽤来描述界⾯的样式. 所谓 "样式", 包括不限于 ⼤⼩, 位置, 颜⾊, 间距, 字体, 背景, 边框等.我们平时看到的丰富多彩的⽹⻚, 就都会⽤到⼤量的 CSS.Qt 虽然是做 GUI 开发, 但实际上和 ⽹⻚前端 有很多异曲同⼯之处. 因此 Qt 也引⼊了对于 CSS。

2025-05-15 08:00:00 818

原创 3337|3335. 字符串转换后的长度 I(||)

对于每个字母(如 'a', 'b', ..., 'z'),将其替换。

2025-05-14 23:13:29 1074

原创 Qt 的原理及使用(7)——Q组件

2.62.6windowOpacity() 获取到控件的不透明数值。返回float,取值为0.0 -> 1.0 其中0.0表示全透明,1.0表示完全不透明。setWindowOpacity(float n) 设置控件的不透明数值。2.6.1代码⽰例: 调整窗⼝透明度1) 在界⾯上拖放两个按钮, 分别⽤来增加不透明度和减少不透明度.objectName 分别为和编写 wdiget.cpp, 编写两个按钮的 slot 函数•点击会减少不透明度, 也就是窗⼝越来越透明.•点击。

2025-05-14 12:00:00 1463

原创 Qt 的原理及使用(6)——常⽤控件

两个按钮的objectName分别为 pushButton 和 pushButton_2QObject 是 QWidget 的⽗类. ⾥⾯最主要的属性就是 objectName .在⼀个 Qt 程序中, objectName 相当于对象的⾝份标识, 彼此之间不能重复.在使⽤ Qt Designer 时, 尤其是界⾯上存在多个 widget 的时候, 可以通过 objectName 获取到指定的 widget 对象.

2025-05-14 10:00:00 597

原创 Qt 的原理及使用(5)——信号与槽

槽函数与⼀般的函数不同的是:槽函数可以与⼀个信号关联,当信号被 发射时,关联的槽函数被⾃动执⾏。例如: "按钮被按下" 这个信号可以⽤ clicked() 函数表 ⽰,"窗⼝关闭" 这个槽可以⽤ close() 函数表⽰,假如使⽤信号和槽机制-信号发送者不需要知道发出的信号被哪个对象的槽函数接收,槽函数也不需要知道哪些信号关联了⾃ ⼰,Qt的信号槽机制保证了信号与槽函数的调⽤。通过信号和槽机制,可以将 "按 钮" 和 "窗⼝" 关联起来,实现 "点击按钮会使窗⼝关闭" 的效果。"emit" 是⼀个空的宏。

2025-05-13 10:00:00 1461

原创 Qt 的原理及使用(4)——对象树

1认识对象模型(对象树)1认识对象模型(对象树)1.1对象树基本原理在 Qt 中创建很多对象的时候会提供⼀个 Parent 对象指针,下⾯来解释这个 parent 到底是⼲什么的。QObject 是以对象树的形式组织起来的。当创建⼀个 QObject 对象时,会看到 QObject 的构造函数接收⼀个 QObject 指针作为参数,这个参数就是 parent,也就是⽗对象指针。这相当于,在创建 QObject 对象时,可以提供⼀个其⽗对象,我们创建的这个 QObject 对象。

2025-05-13 08:00:00 800

原创 Qt 的原理及使用(3)——QT简单使用及文件解析

widget.ui 是窗体界⾯定义⽂件,是⼀个 XML ⽂件,定义了窗⼝上的所有组件的属性设置、布局,及 其信号与槽函数的关联等。这个指针是⽤前⾯声明的 namespace Ui ⾥的 Widget 类定义的,所以指针 ui 是指向 可视化设计的界⾯,后⾯要访问界⾯上的组件,都需要通过这个指针 ui 去访问。⼯程新建好之后,在⼯程⽬录列表中有⼀个后缀为 ".pro" 的⽂件, ".pro" ⽂件就是⼯程⽂件 (project) ,它是 qmake ⾃动⽣成的⽤于⽣产 makefile 的配置⽂件。

2025-05-12 12:00:00 712

原创 Qt 的原理及使用(2)——认识 Qt Creator

欢迎模式:主要提供一些功能快捷入口,如打开帮助教程、打开示例程序、打开项目、新建项目、快速打开以前的项目和会话、联网查看 Qt 官方论坛和博客等。示例页面展示 Qt 自带大量示例程序,配有搜索栏可快速查找;教程页面提供英文视频教程资源。编辑模式:用于查看和编辑程序代码,管理项目文件。Qt Creator 编辑器有关键字特殊颜色显示、代码自动补全、声定义间快捷切换、函数原型提示、F1 键快速打开相关帮助、全项目中查找等功能,也可在 “工具 -> 选项” 菜单中对编辑器进行设置。设计模式。

2025-05-12 10:00:00 778

原创 Qt 的原理及使用(1)——qt的背景及安装

1.Qt 背景介绍1.Qt 背景介绍1.1什么是 QtQt 是⼀个 跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架。它为应⽤程序开发者提供了建⽴艺术级图形 界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模 式,开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序,同时也可以使⽤ C++ 语⾔进⾏⾼级开 发。1.2Qt 的发展史1991 年 Qt 最早由奇趣科技开发;1996 年 进⼊商业领域,它也是⽬前流⾏的 Linux 桌⾯环境 KDE 的基础;

2025-05-09 12:40:39 723

原创 lc3341. 到达最后一个房间的最少时间 Ⅰ 算法解析

通过使用 BFS 算法和优先队列优化,我们可以有效地解决在有时间限制条件下到达目标房间的最少时间问题。BFS 算法保证了我们可以逐层扩展节点,而优先队列优化则保证了我们可以优先扩展到达时间更早的节点,从而减少不必要的计算量。在实际应用中,遇到类似具有时间依赖或权值限制的路径搜索问题,都可以考虑使用这种方法来解决。希望这篇博客能帮助大家理解这道算法题的解法和代码实现思路。欢迎大家在评论区交流讨论!

2025-05-07 17:41:54 701

原创 [leetcode]2302.统计得分小于k的子数组

这个题目可以用滑动窗口的思想去解决,首先是可以从左到右去进行窗口的扩张,如果窗口里面的值*长度<k就继续向右扩大窗口,如果已经>=k了那么就停止向右扩张,并且将窗口左边界向右进行收缩,直到重新恢复到合法状态,此时把左边界确定,然后右边界重新扩张,循环上述过程即可得到答案!

2025-04-28 19:52:23 246

原创 git使用和原理(4)标签管理

个让⼈容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使⽤标签就能很快定位 到。因为创建的标签都只存储在本地,不会⾃动推送到远程。所以,打错的标签可以在本地安全删除。那如何在指定的commit上打标签呢?在Git中打标签⾮常简单,⾸先,切换到需要打标签的分⽀上。注意,标签不是按时间顺序列出,⽽是按字⺟排序的。的⼀个标识,相当于起了⼀个别名。交的commit id,然后打上就可以了。如果要推送某个标签到远程,使⽤命令。这样的标签来标识⾥程碑的意义。,可以简单的理解为是对某次。

2025-04-18 19:41:27 198

原创 redis-cpp-cpp如何使用lua脚本

我今天要在项目中使用lua脚本,结果搞半天都没有弄明白这个函数怎么调用,而且也似乎很少有redis++相关的博客介绍,ai也回答的不准确!

2025-04-04 12:02:05 310

原创 Go语言中的基本数据类型之间的转换方法

strconv包提供了丰富的函数,能够方便地实现字符串和基本数据类型之间的转换。在使用这些函数时,要留意错误处理,因为转换可能会失败。

2025-03-20 09:00:00 155

原创 Go语言--安装和环境搭配

Go 语言(又称 Golang)是由 Google 开发的一种开源编程语言,于 2009 年正式对外发布。

2025-03-19 19:50:23 578

原创 Go语言的基础类型

truefalse。

2025-03-19 19:49:46 290

原创 Git使用和原理(3)

1.远程操作1.远程操作1.1分布式版本控制系统我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者 计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢?可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作 呢?

2025-03-15 20:30:26 1267

原创 RabbitMq C++客户端的使用

RabbitMQ 是一款功能强大、成熟稳定的消息队列,适合对可靠性和灵活性要求较高的中小型项目。如果需要处理海量数据或追求极致性能,可考虑 Kafka 或 RocketMQ 等其他方案。

2025-03-15 09:00:00 1038

原创 websocketpp 使用安装与使用

WebSocket是从HTML5开始支持的一种网页端和服务端保持长连接的 消息推送机制。•传统的web程序都是属于一问一答的形式,即客户端给服务器发送了一个HTTP请求,服务器给客户端返回一个HTTP响应。这种情况下服务器是属于被动的一方,如果客户端不主动发起请求服务器就无法主动给客户端响应•像网页即时聊天或者我们做的五子棋游戏这样的程序都是非常依赖消息推送的,即需要服务器主动推动消息到客户端。如果只是使用原生的HTTP协议,要想实现消息推送一般需要通过轮询。

2025-03-12 09:30:00 1074

原创 cpp-httplib 安装与使用

C++ HTTP库()是一个轻量级的C++ HTTP客户端服务器库,它提供了简单的API来创建HTTP服务器和客户端,支持同步和异步操作。以下是一些关于的主要特点:1.

2025-03-12 09:00:00 830

原创 ES C++客户端安装及使用

1.

2025-03-10 09:00:00 1406

原创 brpc安装与使用

brpc是用c++语言编写的工业级RPC框架,常用于搜索、存储、机器学习、广告、推荐等高性能系统。可以使用它搭建能在。

2025-03-10 08:00:00 635

原创 Etcd的安装与使用

Etcd是一个golang编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用Raft一致性算法来保持集群数据的一致性,且客户端通过长连接watch功能,能够及时收到数据变化通知。以下是关于etcd的安装与使用方法的详细介绍。

2025-03-08 08:30:00 683

原创 spdlog的安装与使用

spdlog是一个高性能、超快速、零配置的C++日志库,它旨在提供简洁的API和丰富的功能,同时保持高性能的日志记录。它支持多种输出目标、格式化选项、线程安全以及异步日志记录。以下是对spdlog的详细介绍和使用方法。github链接:

2025-03-08 08:00:00 493

原创 gtest安装与使用

主要用来创建一个简单测试, 它定义了一个测试函数, 在这个函数中可。:主要用来进行多样测试,适用于多个测试场景如果需要相同的数据配置。系列:如果当前点检测失败则退出当前函数。系列:如果当前点检测失败则继续往下执行。代码并且使用框架提供的断言进行检查。的情况, 即相同的数据测不同的行为。下面是经常使用的断言介绍。改成a-b就无法通过了。

2025-03-07 12:04:37 379

原创 gflags的安装与使用

gflags是Google开发的一个开源库,用于C++应用程序中命令行参数的声明、定义和解析。gflags库提供了一种简单的方式来添加、解析和文档化命令行标志(flags),使得程序可以根据不同的运行时配置进行调整。它具有如下几个特点。

2025-03-07 11:51:46 463

原创 仿mudou库one thread oneloop式并发服务器

通过咱们实现的⾼并发服务器组件,可以简洁快速的完成⼀个⾼性能的服务器搭建。并且,通过组件内提供的不同应⽤层协议⽀持,也可以快速完成⼀个⾼性能应⽤服务器的搭建(当前项⽬中提供HTTP协议组件的⽀持)。在这⾥,要明确的是咱们要实现的是⼀个⾼并发服务器组件,因此当前的项⽬中并不包含实际的业务容。

2025-03-05 21:48:06 1106

原创 Git原理与使⽤(2)

你创建了⼀个属于你⾃⼰的分⽀,别⼈看不到,还继续在原来的分⽀上 正常⼯作,⽽你在⾃⼰的分⽀上⼲活,想提交就提交,直到开发完毕后,再⼀次性合并到原来的分⽀ 上,这样,既安全,⼜不影响别⼈⼯作。⼲活都在dev分⽀上,也就是说,dev分⽀是不稳定的,到某个时候,⽐如1.0版本发布 时,再把dev分⽀合并到master上,在master分⽀发布1.0版本;每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越来越⻓,⽽ HEAD只要⼀直指向master分⽀即可指向当前分⽀。

2025-03-02 09:49:01 856

原创 Git原理与使⽤(1)

还需要再明确⼀点,所有的版本控制系统,Git 也不例外,其实只能跟踪⽂本⽂件的改动,⽐如 TXT ⽂ 件,⽹⻚,所有的程序代码等等。⽽图⽚、视频这些⼆进制⽂件,虽然也能由版本控制系统管理,但没法跟踪⽂件的变化,只能把⼆进 制⽂件每次改动串起来,也就是只知道图⽚从100KB改成了120KB,但到底改了啥,版本控制系统不 知道,也没法知道。⽐如你新增了⼀⾏,这就是⼀个修改,删除了⼀⾏,也是⼀个修改,更改了某些字符, 也是⼀个修改,删了⼀些⼜加了⼀些,也是⼀个修改,甚⾄创建⼀个新⽂件,也算⼀个修改。

2025-03-02 09:48:50 643

原创 Redis分布式锁

我们引⼊⼀组 Redis 节点. 其中每⼀组 Redis 节点都包含⼀个主节点和若⼲从节点. 并且组和组之间存 储的数据都是⼀致的, 相互之间是 "备份" 关系(⽽并⾮是数据集合的⼀部分, 这点有别于 Redis cluster). 加锁的时候, 按照⼀定的顺序, 写多个 master 节点. 在写锁的时候需要设定操作的 "超时时间". ⽐如 50ms. 即如果 setnx 操作超过了 50ms 还没有成功, 就视为加锁失败.把这个过期时间设置的⾜够⻓, ⽐如 30s, 是否能解决这个问题呢?

2025-02-19 09:00:00 440

原创 Redis之集群

表⽰的. 表⽰ 16384 (16k) 个 slots, 需要的位图⼤⼩是 2KB. 如果给定的 slots 数更多了, ⽐如 65536 个了, 此时就需要消耗更多的空间, 8 KB 位图表⽰了. 8 KB, 对于内存来说不算什么, 但是在频繁的⽹ 络⼼跳包中, 还是⼀个不⼩的开销的.读取的时候⼜应该去哪个分⽚读取?缺点: ⼀旦需要进⾏扩容, N 改变了, 原有的映射规则被破坏, 就需要让节点之间的数据相互传输, 重新排 列, 以满⾜新的映射规则. 此时需要搬运的数据量是⽐较多的, 开销较⼤.

2025-02-19 08:00:00 724

原创 Redis之缓存

使⽤ Redis 作为 MySQL 的缓存的时候, 当 Redis 刚刚启动, 或者 Redis ⼤批 key 失效之后, 此时由于 Redis ⾃⾝相当于是空着的, 没啥缓存数据, 那么 MySQL 就可能直接被访问到, 从⽽造成较⼤的压⼒. 因此就需要提前把热点数据准备好, 直接写⼊到 Redis 中. 使 Redis 可以尽快为 MySQL 撑起保护伞. 热点数据可以基于之前介绍的统计的⽅式⽣成即可. 这份热点数据不⼀定⾮得那么 "准确", 只要能帮助。

2025-02-18 09:39:00 1163

原创 Redis之哨兵

Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应⽤来说,这种⽅案是⽆法接受的, 于是 Redis 从 2.8 开始提供了 Redis Sentinel(哨兵)加个来解决这个问题。本章主要内容如下:•Redis Sentinel 的概念•Redis Sentinel 的部署•Redis Sentinel 命令•Redis Sentinel 客⼾端•Redis Sentinel 实现原理。

2025-02-18 09:00:00 966

原创 Redis之主从复制

主从复制本文重点带⼤家理解流程和原理.在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满⾜故障恢复和负载均衡等需求。Redis 也是如此,它为我们提供了复制的功能,实现了相同数据的多个 Redis 副 本。复制功能是⾼可⽤ Redis 的基础,哨兵和集群都是在复制的基础上构建的。本章内容如下:•介绍复制的使⽤⽅式:如何建⽴或断开复制、安全性、只读等。•说明复制可⽀持的拓扑结构,以及每个拓扑结构的适⽤场景。•。

2025-02-17 17:35:46 699

原创 Redis之事务

1.前言什么是事务Redis 的事务和 MySQL 的事务概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执 ⾏. 但是注意体会 Redis 的事务和 MySQL 事务的区别:•弱化的原⼦性: redis 没有 "回滚机制". 只能做到这些操作 "批量执⾏". 不能做到 "⼀个失败就恢复到 初始状态".•不保证⼀致性: 不涉及 "约束". 也没有回滚. MySQL 的⼀致性体现的是运⾏事务前和运⾏后 , 结果都 是合理有效的, 不会出现中间⾮法状态.•。

2025-02-17 16:01:09 521

原创 Redis之持久化

Redis⽀持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题,当下次重启时利⽤之前持久化的⽂件即可实现数据恢复。本文内容:• 介绍RDB、AOF的配置和运⾏流程,以及控制持久化的命令,如bgsave和bgrewriteaof。• 对常⻅持久化问题进⾏分析定位和优化。

2025-02-16 17:03:17 826

原创 Redis c++安装使用教程(redis-plus-plus)

C++操作redis的库有很多.咱们此处使⽤redis-plus-plus.这个库的功能强⼤,使⽤简单.Github地址:https://github.com/sewenew/redis-plus-plus。

2025-02-16 09:33:19 608

原创 Mysql进阶——1

可以在选项⽂件中指定常⽤选 项,这样就不⽤在每次运⾏程序时都在命令⾏中输⼊它们。对于带值的短选项,选项值可以紧跟在 选项之后,也可以⽤空格隔开,例如: --host=127.0.0.1。mysql是⼀个简单的 SQL shell, 可以输⼊命令和执⾏SQL语句,当执⾏SQL语句时,查询结果以。运⾏ MySQL 程序时在命令⾏上指定的任何⻓选项都可以在选项⽂件中指定,要获取选项列表可以 使⽤如下命令。来获取程序不同选项的描述。在mysql后⾯指定配置⽂件的路径,以便在程序启动时读取配置⽂件中的选项。

2024-09-21 10:09:16 973

原创 Protubuf入门

编译 contacts.proto ⽂件后,会⽣成所选择语⾔的代码,我们选择的是C++,所以编译后⽣成了两个 ⽂件: contacts.pb.h contacts.pb.cc。依赖⽣成的接⼝,将编译⽣成的头⽂件包含进我们的代码中,实现对 .proto ⽂件中定义的字段进⾏ 设置和获取,和对 message 对象进⾏序列化和反序列化。依赖⽣成的接⼝,将编译⽣成的头⽂件包含进我们的代码中,实现对 .proto ⽂件中定义的字段进⾏ 设置和获取,和对 message 对象进⾏序列化和反序列化。

2024-09-15 15:32:14 756

空空如也

空空如也

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

TA关注的人

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