自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MySQL】SQL调优-如何分析SQL性能

MySQL的优化涉及多个级别的配置、调优和性能评估。根据职位(开发人员或DBA),可以在单个 SQL语句、整个应用程序、单个数据库服务器或多个联网数据库服务器的级别进行优化;影响性能的重要因素:表结构、查询语句和数据库配置。软件级别的因素会导致硬件级别的CPU和I/O操作。在优化数据库性能时,首先要学习软件级别的规则,但在真实的企业中,通常数据库遇到瓶颈 首先考虑换⼀个高性能的存储设置,比如把机械硬盘换成SSD,再考虑软件层面,最后考虑操作系 统层面的优化;这里只讨论索引级别的优化;

2025-10-08 00:01:28 1013

原创 【MySQL】InnoDB存储引擎 - 内存结构

本文主要介绍 InnoDB存储引擎 在内存中的结构;以及各部分的作用;

2025-09-19 02:51:44 730

原创 【MySQL】InnoDB存储引擎 - 存储结构

本文主要介绍 MySQL 中 InnoDB 存储引擎如何组织存储数据到磁盘当中;

2025-09-16 00:51:27 618

原创 Redis 主从复制

在分布式系统的场景中,为了解决单点问题,通常会把数据复制多份副本部署在其他服务器,以满足故障恢复和负载均衡的效果;Redis 也是如此,复制功能是实现高可用 Redis 的基础,哨兵和集群都是建立在复制的基础之上;

2025-08-24 01:55:39 686

原创 【算法精练】 哈夫曼编码

简单来说他是一种压缩算法,核心思想就是:​​用更短的二进制编码表示高频字符,用较长的编码表示低频字符;用二进制表示字符:假设有这么一个字符串:a b b c c c,现在需要使用二进制编码对其进行压缩;a: 0 // 二进制0b: 01 // 二进制 01c: 10 // 二进制 10...但是这样的编码表示似乎并不是最优的,c的占比最多,而c所占编码bit位也最多,这显然并不是最优的;并且还会有解码的问题,比如: 010此时怎么解码?ac还是ba?

2025-08-21 20:26:41 928

原创 Redis持久化机制(RDB && AOF)

Redis 默认采⽤ LZF 算法对生成的 RDB ⽂件做压缩处理,压缩后的⽂件远远小于内存大小,默认开启,可以通过参数 config set rdbcompression {yes|no} 动态修改。3.2 子进程只有fork之前的所有内存数据,在子进程重写的期间,父进程需要将修改操作写入 AOF 重写缓冲区中;随着命令不断写入 AOF,文件会越来越大,为了解决这个问题,Redis 引⼊ AOF 重写机制压缩⽂ 件体积。3. 随着 AOF文件越来越大,需要定期对 AOF 文件进行重写,达到压缩的目的。

2025-08-13 21:13:08 1043

原创 【Linux网络】HTTPS

数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被窜改;注意他本身并不是一种加密机制,因为他不能被解密;如果对原始数据做一点点修改,通过同样的hash散列,摘要数据也会非常大;使用场景:场景1:注册一个软件账户,会有账号和密码,实际场景中,密码是不能直接存储在数据库中的,而需要先进行加密,然后再存储密文,经过散列函数加密后生成数据摘要再进行存储;这样可以有效的避免账号被盗的风险;

2025-03-15 19:19:28 1139 1

原创 【Linux高级IO】多路转接(poll && epoll)

目录1. poll2. epoll 2.1 epoll_ctl2.2 epoll_wait 2.3 epoll原理2.4 epoll的工作模式2.5 epoll的惊群效应 使用建议总结 poll也是实现 I/O 多路复用的系统调用,可以解决select等待fd上限的问题,将输入输出参数分离,不需要每次对参数重置; 原型:参数: 调用时:调用poll时,用户->内核,OS帮用户关心fd,上面的events事件; 返回时:poll返回时,内核->用户,用户关心的fd上面,有哪些的revent

2025-03-01 20:23:30 768

原创 【Linux高级IO】五种IO模型 && 多路转接(select)

五种IO模型:阻塞式IO、非阻塞IO、信号驱动IO、多路转接、 异步IO

2025-02-28 20:55:52 1139

原创 【Linux网络】数据链路层 && 其他常见的协议

目录1. 认识以太网2. 以太网帧格式 3. MTU4. ARP协议4.1 ARP数据报的格式 4.2 ARP攻击 5. 其他重要的协议或技术5.1 DNS协议5.2 ICMP协议5.3 NAT技术5.4 代理服务器5.5 内网穿透总结 针对数据在网络传输中所遇到的问题,网络协议栈都对相应的问题进行了解决,而数据连接层解决的就是局域网直连主机之间的通信;源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;帧协议类型字段有三种,分别对应IP、ARP、RA

2025-02-27 20:31:46 1050

原创 【计算机网络】IP协议

网络层的IP协议主要解决的是什么问题?——将数据包从B主机发送给C主机;传输层协议tcp提供可靠的策略;网络层IP协议提供数据数据传输的能力;发送报文时,传输路径的选择;想要去一个景点要怎么去?所在城市 + 景点;IP地址也是如此,IP地址就包含了:目标网络,目标主机的信息;IP = 网络号 + 主机号;任何一台主机一定在某一个局域网(子网)中;主机:配有IP地址, 但是不进行路由控制的设备;路由器:即配有IP地址, 又能进行路由控制;节点:主机和路由器的统 称;

2025-02-26 21:54:52 2000 2

原创 【Linux网络编程】 HTTP协议

HTTP协议是基于TCP的应用层协议,虽然我们说, 应用层协议是我们程序猿自己定的,但是自己定协议也是比较麻烦要解决两个问题

2025-02-25 23:14:03 1020

原创 【计算机网络】传输层协议(UDP && TCP)

目录1. 端口号 端口号的划分 2. UDP UDP协议格式在系统中的描述缓冲区使用注意事项3. TCP 缓冲区 TCP协议格式 标记位 面向字节流 确认应答机制流量控制 超时重传 连接管理滑动窗口 延迟应答 捎带应答快重传 拥塞控制粘包问题 TIME_WAIT状态总结再来聊一聊端口号:接收的报文到了传输层(tcp/udp),要向上交付到应用层,应用层的程序有很多,比如(自己写的服务,http、https...)数据要传个哪个程序?这时就需要port来进行标识 ;在TCP/IP协议中,用 "源IP","源端

2025-02-24 15:13:07 1929

原创 【Linux网络编程】socket套接字的基础API接口

了解了计算机网络的基础知识,想要快速上手网络编程,那就很有必要了解一下网络套接字相关的接口;本文主要介绍一些socket编程必须的一些接口介绍;

2025-02-22 20:27:18 1128

原创 【计算机网络】网络基础(必备基础常识概览)

本文是计算机网络系列的第一篇文章,将会从基础的开始,本文主要来介绍一些,计算机网络的一些基础常识,以便后续的学习和理解;

2025-02-21 16:54:19 1249

原创 【MySQL】索引

说起MySQL数据库,索引是绕不开的一个话题,索引这个概念对于初学者来说模糊又抽象,那索引到底是什么?本文就来聊一聊MySQL中的索引,如何理解索引,索引的使用等等一些问题;

2025-02-20 15:51:35 1137

原创 【算法精练】背包问题(01背包问题)

目录1. 背包问题2. 01背包问题 3. 优化总结经典的背包问题: 有一个背包,限制背包的体积;有一堆物品,从这堆物品中选择,在不超过背包容量的前提下,选出最大价值的物品; 从这个问题中可以提取出两个关键的信息:1、物品属性 2、背包属性比如:有一个背包大小是7,有以下物品: 从中选出最大价值;背包也有划分:1. 必须装满、2. 不需要装满;01背包问题:这些物品中,每种物品只有一个(也就是只能选择一次)完全背包问题:物品有无穷个(可重复选择); 以这道模板题为例: 题目链接:DP41 【模

2025-02-19 16:12:00 1104

原创 【C++11】C++中的异步操作相关接口(多线程异步操作结果的获取)

在C++11中新增了许多的新特性,这些新特性功能更加强大,使得代码编写也更加的便捷,本文就来聊一聊C++11中新增的异步操作接口;

2025-02-17 21:02:30 771

原创 【Linux线程】线程池(线程池的概念以及实现)

了解过了线程、那最应该学习的就是线程池,线程池作为一种池化技术,可以避免了在处理短时间任务时创建与销毁线程的代价,并且还能够保证内核的充分利用,还能防止过分调度,可以极大的提高程序运行的效率。

2025-02-17 16:55:46 988

原创 【Linux线程】阻塞队列&环形队列(消费者生产者模型的实现)

了解了线程控制、同步与互斥、以及消费者生产者模型,本篇文章为实践篇,对以上内容的实践,使用阻塞队列和环形队列来实现生产者消费者模型;

2025-02-16 15:46:46 1047

原创 【Linux线程】线程互斥与同步

线程可以让程序运行更加高效,并发执行,不需要进行数据通信,大部分数据都是共享,但数据共享也会带来问题——数据不一致问题,本文就来聊一聊线程的互斥与同步;

2025-02-14 20:36:49 814

原创 【Linux线程】线程控制

目录1. 线程创建pthread_createclone2. 获取线程IDpthread_create 函数的输出参数pthread_self3. 等待线程退出pthread_joindetached 模式4. 线程取消总结 前边以在Linux下为例,主要介绍了线程,及其相关知识的扩展,那么本文就来向大家介绍一些线程控制的接口; 在Linux中创建线程的方式有两种:pthread_create、clone; pthread_create是 POSIX 线程库(pth

2025-02-13 20:23:43 761

原创 【算法精练】二分查找算法总结

说起二分查找,也是一种十分常见的算法,最常听说的就是:二分查找只能在数组有序的场景下使用;其实也未必,只要能找到规律,也依然可以使用;本文我将分享一些有关二分查找算法的做题经验;

2025-02-04 20:56:55 698

原创 【Linux线程】如何理解线程?

有了进程的基础,本文再来聊一聊线程,如何去理解线程?线程是CPU调度的基本单位、进程是承担系统资源的基本实体,怎么理解?

2025-01-01 20:59:59 1555

原创 【Linux进程】进程信号(信号的保存与处理)

上文介绍了信号,以及信号的产生,本文继续来聊一聊信号,信号的保存与处理;

2024-12-29 20:46:07 958

原创 【Linux进程】进程信号

signal接口就可以实现自定义处理,一旦设置就是永久有效;信号在合适的时候进行处理默认行为忽略自定义处理——信号的捕捉std::cout << "获得一个" << signal <<"号信号" << std::endl;exit(1);// 不退出时使用Ctrl + C、Ctrl + Z就不会退出、暂停进程了int main()//Ctrl + Z// 9号信号不可被自定义捕捉sleep(1);return 0;1~31是普通信号;34~64是实时信号;

2024-12-25 19:15:19 971

原创 【Linux进程】进程间通信(共享内存、消息队列、信号量)

前边学习了管道通信,本文再来聊一聊其他的进程间通信方式:共享内存、消息队列、信号量;

2024-12-23 23:55:47 1688

原创 【Linux进程】基于管道实现进程池

上篇文章介绍了管道及其使用,本文在管道的基础上,通过匿名管道来实现一个进程池;

2024-12-21 22:21:26 989

原创 【Linux进程】进程间的通信

管道是Unix中最古老的进程间通信的形式;联系一下日常生活中的管道,水在管道中流到一般都是单向的,这里的管道也是如此,进程之间通过管道通信也是单向的;管道(Pipes)是一种进程间通信(IPC)机制,用于在一个或多个进程之间传递数据。它通过创建一个临时的通道,允许一个进程的输出直接作为另一个进程的输入。管道主要分为两种类型:匿名管道和命名管道;管道的通信特点就是单向的,单个管道只能进行单向通信,想要双向通信怎么办?--创建两个管道;

2024-12-20 21:46:49 876

原创 【Linux基础IO】动态库加载原理

介绍了动态库的加载及使用,再来聊一聊动态库加载的原理;

2024-11-25 15:50:52 1120

原创 【Linux基础IO】动态库 && 静态库(C动静态库打包及使用)

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表;在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic linking)动态库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。

2024-11-20 15:21:02 1196

原创 Jenkins + gitee 自动触发项目拉取部署(Webhook配置)

前文简单介绍了Jenkins环境搭建,本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目;

2024-11-16 16:28:51 3807

原创 【Linux基础IO】文件系统

在文件系统中,并不是所有的文件都会被打开,文件打开后的管理已经做了解释,那没有打开的文件呢?本文就来聊一聊文件系统,磁盘中文件的管理;在实际情况中,大部分的文件都是不被打开的(当前不需要被访问),都在磁盘中进行保存;对于这些没有被(进程)打开的文件,也需要进行管理;那么核心工作是什么?快速定位文件,通过路径快速定位打开的文件进行管理没有被打开的文件,也要在磁盘中进行管理;本质就是文件存储的问题。

2024-11-12 13:32:43 1081

原创 【Linux基础IO】缓冲区

在 Linux 系统中,I/O 操作背后有一个关键概念——缓冲区。缓冲区是数据的临时存放的地方,能有效提升 I/O 效率。本文将带您了解 Linux 系统中的缓冲区概念。

2024-11-09 19:09:46 1188

原创 【Linux基础IO】文件描述符分配规则 && 重定向

接上文,了解完了文件,本文就来聊一聊文件描述符的分配规则,以及使用方法(重定向);

2024-11-08 20:49:43 1002

原创 【Linxu基础IO】文件 && 文件操作 && 虚拟文件系统(VFS)

文件操作在Linux系统编程中相当重要,也是Linux系统编程的基础,本文将向大家介绍Linux中基础IO接口的使用、文件、标准流、等相关概念,来帮助你快速了解并熟悉文件操作;先来回忆一下C语言中的文件操作;return 1;文件打开方式有很多,可使用 man fopen 自行查看r+以读的方式打开(文件必须存在)w以写的方式打开(如果文件存在清空文件,如果不存在会创建文件)r+以读写的方式打开(文件必须存在)w+以读写的方式打开(文件不存在会新建文件,文件存在时进行写入会清空文件)

2024-11-07 16:00:53 1377

原创 【docker入门】docker的安装

有 docker-ce.repo 这个文件就添加成功了;点击 i 进入插入模式;输出有 running 即表示运行成功;如果显示上图的输出,即表示安装成功;看到running就表示启动成功;点 i 进入插入模式;输出内容为上图,即表示安装成功;将 Docker 官方的仓库(这里使用的是清华大学的镜像源。查看docker 详细信息。

2024-11-06 17:40:06 834

原创 Docker + Jenkins + gitee 实现CICD环境搭建

CI/CD(持续集成和持续交付/持续部署),它可以实现自动化的构建、测试和部署流程,开发人员可以将更多精力集中在创新和功能开发上,而不是维护和集成问题;本文将使用docker中的Jenkins快速搭建出基本环境;

2024-11-06 16:25:20 1937

原创 【Linux进程】进程程序替换

父进程创建子进程去执行任务,执行的代码和数据,其实都是父进程的一部分,如果我们想让子进程执行全新的代码和数据,不再和父进程有任何关系怎么办?——进程程序替换,本文我们就来聊一聊进程程序替换;

2024-09-25 09:32:00 990

原创 【Linux进程】进程退出

进程执行结束退出,就必然需要进行资源回收,子进程由父进程回收,而父进程(起始进程)被操作系统回收,那么当进程退出时,可能需要知道进程的执行情况,是正常执行完毕退出,还是异常退出?本文我们就来聊一聊进程的退出;

2024-09-22 16:59:43 1600

空空如也

空空如也

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

TA关注的人

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