自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux多线程详解

在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。- 每个进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流

2025-03-25 22:33:11 838

原创 Linux文件系统

一个盘片都有正反两面,每一面都会对应一个读写磁头,假设有4个盘片,就是有8个面,那么就会存在8个磁头,**这个磁头是一起摆动的,不能单独动**,一个磁头负责一面磁片的读写。

2025-03-25 09:35:43 654

原创 Linux文件描述符及重定向

当调用系统接口`open`的时候会返回一个`int`类型的数字,这个数字就是文件描述符,这里用`fd`进行接收,我们来看一看`fd`的值是多少

2025-03-24 23:23:00 1187

原创 Linux系统文件的读写

文件=内容+属性,当文件没有被操作的时候,一般文件还是在磁盘当中。文件操作=文件内容的操作+文件属性的操作,文件操作有可能即改变内容,又改变属性。文件操作其实就是把内容和属性加载到内存当中

2025-03-24 10:19:46 582

原创 qt6.5仿QQ音乐实现本地音乐播放器

项目名称:本地音乐播放器环境和使用技术:QtCreator6.5.3、mingw_64、QtDesigner界面设计、基于QWidget项目布局、QSS样式设置、自定义控件、信号槽机制、媒体播放技术、简单动画效果、文件操作项目说明:实现在本地对音乐进行管理和播放的音乐播放器,,该项目可分为四个部分:界面布局、音乐管理、播放控制、持久化操作

2025-03-20 15:40:17 859

原创 【C++】特殊类的设计

一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理

2025-03-19 22:26:54 910

原创 C++的四种强制类型转换

隐式类型转换:编译器在编译阶段自动进行,能转就转,不能转就编译失败。显式类型转换:需要用户自己处理,以`(指定类型)变量`的方式进行类型转换。

2025-03-19 22:06:34 706

原创 【C++11】线程库

线程是操作系统中的一个概念,线程对象可以关联一个线程,用来控制线程以及获取线程的状态。如果创建线程对象时没有提供线程函数,那么该线程对象实际没有对应任何线程。如果创建线程对象时提供了线程函数,那么就会启动一个线程来执行这个线程函数,该线程与主线程一起运行

2025-03-16 22:37:37 902

原创 【 C++ 】智能指针

内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。(内存泄漏是指针丢了)

2025-03-16 20:52:42 751

原创 【 C++ 】异常

异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误

2025-03-15 17:45:59 876

原创 【 C++11 】可变参数模板

可变参数模板是C++11新增的最强大的特性之一,它对参数高度泛化,能够让我们创建可以接受可变参数的函数模板和类模板

2025-03-14 20:17:57 886

原创 【 C++11 】包装器

上面func可能是什么呢?那么func可能是函数名?函数指针?函数对象(仿函数对象)?也有可能是lamber表达式对象?所以这些都是可调用的类型!

2025-03-14 12:08:46 680

原创 【 C++11 】lambda表达式

lambda表达式是一个匿名函数,恰当使用lambda表达式可以让代码变得简洁,并且可以提高代码的可读性

2025-03-13 13:43:22 926

原创 【 C++11 】右值引用和移动语义

传统的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用,都是给对象取别名

2025-03-13 13:26:26 797

原创 【C++】列表初始化、声明、范围for、array容器

C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号(=),也可不添加

2024-12-17 23:05:30 853

原创 【 C++11 】类的新功能

这里“默认”的意思就是你不写编译器会自动生成,在C++11标准中又增加了两个默认成员函数,分别是移动构造函数和移动赋值重载函数

2024-12-17 21:03:23 716

原创 【MySQL】存储过程和触发器

存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的

2024-12-07 20:09:02 1046

原创 【MySQL】事务详解

事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

2024-12-07 15:43:25 1639

原创 【MySQL】视图详解

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的 通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上

2024-12-07 10:51:35 1001

原创 【MySQL】多表查询

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:一对多(多对一)、多对多、一对一 的关系,有时需要通过这些关系查询另一张表的数据,这时就需要进行多表查询

2024-12-06 15:57:59 1548

原创 【redis】集群详解

虽说哨兵模式提⾼了系统的可⽤性,但是真正⽤来存储数据的还是 master 和 slave 节点。所有的数据都需要存储在单个 master 和 slave 节点中,因此当数据量很⼤,接近超出了 master / slave 所在机器的物理内存,就可能出现严重问题了

2024-12-04 21:37:43 877

原创 【MySQL】内置函数

MySQL内置函数的知识分享

2024-12-03 23:12:48 1065

原创 【MySQL】表的增删改查

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)

2024-12-03 20:11:54 930 1

原创 【 MySQL】表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性

2024-12-02 22:06:40 635

原创 【MySQL】 常见数据类型

浮点数和定点数类型的特点是可以处理小数 ,你可以把整数看成小数的一个特例,因此,浮点数和定点数的使用场景,比整数大多了。 MySQL支持的浮点数类型,分别是 FLOAT、DOUBLE、REAL

2024-12-01 21:16:34 2919

原创 【MySql】数据库和表的增删查改

在创建数据库时,每个数据库都有一个对应的字符集和校验集 - 字符集的作用: 在向数据库写入内容时,按什么编码写入 - 校验集的作用: 在查找数据库中的内容时,按什么校验规则查找

2024-12-01 12:15:26 993

原创 redis的应用--分布式锁

在⼀个分布式的系统中, 也会涉及到多个节点访问同⼀个公共资源的情况. 此时就需要通过 锁 来做互斥控制, 避免出现类似于 "线程安全" 的问题,而java 的 synchronized 或者 C++ 的 std::mutex, 这样的锁都是只能在当前进程中生效, 在分布式的这种多个进程多个主机的场景下就⽆能为⼒了,此时就需要使⽤到分布式锁

2024-11-30 23:10:02 1134

原创 redis的应用----缓存

缓存(Cache)是一种存储机制,旨在提供高速访问已保存的数据或计算结果。通过将数据存储在临时存储位置,当再次需要这些数据时,可以迅速从缓存中检索,而不是重新进行原始数据的获取和计算过程。缓存可以存在于各种层次,如硬件,CPU缓存、软件(如Web浏览器缓存)和专门的存储系统(如内存中的分布式缓存)‌

2024-11-30 20:43:44 1372

原创 redis中的哨兵

Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应⽤来说,这种⽅案是⽆法接受的,于是 Redis 从 2.8 开始提供了 Redis Sentinel(哨兵)来解决这个问题

2024-11-29 21:02:39 1913

原创 redis的主从复制

在分布式系统中涉及到一个非常关键的问题:单点问题如果某个服务器程序只有一个节点(只弄一个物理服务器,来部署这个服务器程序)那么就会出现以下问题:1. 可用性问题,如果这个机器挂了,意味着服务就中断了2. 性能问题,一个节点的并发量是非常有限的。所以就引入了分布式系统,在分布式系统中,往往希望有多个服务器来部署redis服务,从而构成一个redis集群,此时就可以让这个集群给整个分布式系统中其他的服务,提供更稳定、更高效的数据存储功能

2024-11-28 22:47:18 1689

原创 redis事务

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

2024-11-28 21:03:50 743

原创 使用redis-plus-plus库连接redis

C++ 操作 redis 的库有很多. 此处使⽤ redis-plus-plus,因为这个库的功能强⼤, 使⽤简单

2024-11-26 22:41:54 1628

原创 【redis】zset有序集合详解

有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数(score)与之关联,这使得有序集合中的元素是可以维护有序性的,但这个有序不是⽤下标作为排序依据⽽是⽤这个分数

2024-11-26 18:41:09 1247

原创 【redis】set集合详解

集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中元素之间是无序的元素不允许重复。⼀个集合中最多可以存储2^32 - 1个元素。Redis 除了⽀持集合内的增删查改操作,同时还⽀持多个集合取交集、并集、差集,合理地使⽤好集合类型,能在实际开发中解决很多问题

2024-11-25 17:29:47 1570

原创 【redis】List类型详解

列表类型是⽤来存储多个有序的字符串,列表中的每个字符串称为元素(element),⼀个列表最多可以存储 2^32 - 1 个元素。在 Redis 中,可以对列表两端插⼊(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是⼀种⽐较灵活的数据结构,它可以充当栈和队列的⻆⾊,在实际开发上有很多应⽤场景

2024-11-25 17:22:43 946

原创 【redis】哈希类型详解

⼏乎所有的主流编程语⾔都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中,哈希类型是指值本⾝⼜是⼀个键值对结构,形如 key = "key",value = { { field1, value1 }, ..., {fieldN, valueN } },Redis 键值对和哈希类型⼆者的关系可以⽤下图表示

2024-11-24 23:15:08 1214

原创 【redis 】string类型详解

⾸先 Redis 中所有的键的类型都是字符串类型,⽽且其他⼏种数据结构也都是在字符串类似基础上构建的,例如列表和集合的元素类型是字符串类型,所以字符串类型能为其他 4 种数据结构的学习奠定基础

2024-11-24 21:51:16 1113

原创 海量数据面试题

给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?以及如何找到top K的IP?如何直接用Linux系统命令实现?

2024-11-23 22:58:16 822

原创 哈希应用--布隆过滤器

在注册账号设置昵称的时候,为了保证每个用户昵称的唯一性,系统必须检测你输入的昵称是否被使用过,这本质就是一个key的模型,我们只需要判断这个昵称被用过,还是没被用过。

2024-11-23 22:43:18 913

原创 proto3语法详解

消息的字段可以⽤下⾯⼏种规则来修饰: singular :消息中可以包含该字段零次或⼀次(不超过⼀次),proto3 语法中,字段默认使⽤该规则repeated :消息中可以包含该字段任意多次(包括零次),其中重复值的顺序会被保留。可以理解为定义了⼀个数组

2024-11-22 23:42:47 992

空空如也

空空如也

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

TA关注的人

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