自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小东西的博客

慢慢来,头发还能撑住

  • 博客(42)
  • 资源 (5)
  • 收藏
  • 关注

原创 nginx版本热更新

此时当前master进程收到指令后,会去创建 nginx.pid.oldbin 文件保留旧的master进程id,然后拉起一个新的master进程。此时可以发送WINCH信号通知,旧的master进程关闭其工作进程。也可以通过pid文件(logs目录下)去查看master进程id。发送USR2 信号给master进程,通知更新。查看master work 进程id。此时可以杀死旧的master 进程了。

2023-12-07 09:53:04 164

原创 k8s 1.28安装

前面的docker安装种保护了containerd.io 包,他包含了 runc 但是不包含 CNI plugins,因此需要补充CNI插件。将主节点/run/systemd/resolve 目录下的文件 ,拷贝到节点一样的目录下,没有则自己创建。提取calico.yaml,应用安装,单网卡这样就够了,如果多网卡还要修改calico.yaml文件。至此主节点安装完成,将节点加入集群,执行第三步,你也可以通过指令查看可以安装的指定版本。你可以从找到cni插件的下载连接,你也可以通过指令查看可以安装的版本。

2023-11-06 20:10:04 452

原创 k8s、docker 卸载

卸载Docker Engine、CLI、containerd和Docker Compose软件包。如果kubernets是1.24以上版本,请先单独卸载containerd。删除kubelet相关信息,可以自行去删除,这个命令可能会误删。

2023-11-06 17:23:03 481

原创 docker 安装(unbuntu安装)

有时候因为墙的原因,总是不成功,因此我们直接将apt源换成阿里云的。需要在阿里云找到指定版本的源,我这里是Ubuntu20。更换内容(可以先将sources.list备份)也会碰到墙的问题,因此也直接用阿里云的源,

2023-10-16 15:50:07 350

原创 docker ---rabbitmq 安装

1、将插件 放入 /plugins/ 目录下(需要先将插件文件放入宿主机中去)第二步:安装延迟队列插件(因为使用了延迟队列)如果5672端口无法访问,则需要先进入容器,如果是使用nginx转发报错405。第一步:安装rabbitmq。则修改nginx配置执行。3、执行插件安装命令。

2023-10-16 09:27:19 393

原创 mysql 数据备份和恢复

binlog 是mysql 二进制日志 binary log的简称,可以简单理解为数据的修改记录。需要开启binlog,才会产生文件,mysql 8.0 默认开启,开启后可以在 /var/lib/mysql (这是mysql默认数据存储路径,如果用户自己指定则另说) 目录下看到一系列 binlog.xxxxxx 的文件。

2023-08-16 20:12:57 1029

原创 mysql binlog 回滚

严格来说mysqlbinlog 不能算回滚,他只是将过去的数据修改记录 重新执行一遍,但是从结果上来看,他也算把数据恢复到任意时间点了,举例来说在昨天的某一刻误删除了一条数据,导致其他数据存储都是异常,今天才发现,现在我希望回滚到那一刻,那么我只要在binlog中找到昨天删除时的那条语句,然后重新执行之前的所有binlog文件,当然假设你有备份,那么也可以使用备份文件+备份后binlog文件进行恢复。现在我来模拟这个例子,我将执行以下步骤。查看指定时间范围的事件。查看指定时间范围的事件。

2023-08-16 20:11:55 737

原创 mysql 8.0安装

操作系统:22.04.1-Ubuntu。

2023-08-16 09:53:29 399

原创 nginx源码---epoll事件循环处理过程

epoll事件循环处理过程

2022-08-15 20:02:52 1055

原创 ngx_connection_s结构体说明

ngx_connection_s 结构体说明

2022-08-15 18:52:02 800 1

原创 nginx源码---从main函数开始了解配置文件处理及配置信息的读入

nginx源码---从main函数开始了解配置文件处理及配置信息的读入

2022-08-11 14:45:08 886

原创 nginx框架---配置文件ngx_conf_handler函数

ngx_conf_handler函数

2022-08-03 16:43:36 366

原创 nginx框架---http块配置结构体的创建及索引设置ngx_http_block

ngx_http_block

2022-08-03 16:39:39 534

原创 nginx框架---模块结构体成员说明

nginx模块结构体成员说明

2022-08-02 17:07:04 286

原创 nginx框架---配置项内容读取ngx_conf_read_token函数

ngx_conf_read_token函数

2022-08-02 14:56:59 251

原创 nginx 内存池的创建与内存分配

内存池结构

2022-06-16 11:14:07 583 1

原创 nginx高级数据结构---双向链表

介绍如下图,节点ngx_queue_s分别用2个指针连接起来,prev指向上一个节点,next指向下一个节点,尾节点的next指向头,头节点的prev指向尾节点。使用定义容器管理链表 ngx_queue_t queue_container; ngx_queue_init(&queue_container);定义节点包含数据自己定义节点需要包含一个ngx_queue_t的成员,位置随意,下面是一个示例。struct { u_char* name; ngx_qu

2022-05-20 15:48:05 324

原创 理解“移动语义”

“移动语义”

2022-03-28 10:40:42 624

原创 输出函数调用时所在的文件及行

输出函数调用时所在的文件及行

2022-03-22 17:07:41 388

原创 ZLMediaKit 服务器源码解读---WebApi

本文描述了网页请求接口处理类(WebApi)与Http会话类的关系(HttpSession)目的是了解何时触发WebApi处理?怎么处理?既然是http请求,那么肯定是由HttpSession发起的调用,监听http端口,接收到的数据都会到下面这个函数,然后调用HttpRequestSplitter的input函数,作用就是对数据进行分包处理(解决多包黏包的问题)void HttpSession::onRecv(const Buffer::Ptr &pBuf) { _ticker.re

2022-03-02 20:02:55 786

原创 ZLMediaKit 服务器源码解读---广播、通知中心(NoticeCenter)

源码实在是简单,在这就简单描述2个过程一:事件监听当需要监听事件时,调用NoticeCenter的addListener函数,调用者将事件类型(event),标识(tag),处理函数(func),addListener函数根据事件类型先找到事件派发器(没有则会创建),然后调用其addListener函数 template<typename FUNC> void addListener(void *tag, const string &event, FUNC &&a

2022-02-28 17:49:46 841

原创 ZLMediaKit 服务器源码解读---事件循环

一:事件循环池类事件循环池是一个单例类,管理着EventPoller1、EventPollerPool构造函数EventPollerPool::EventPollerPool() { auto size = addPoller("event poller", s_pool_size, ThreadPool::PRIORITY_HIGHEST, true); InfoL << "创建EventPoller个数:" << size;}2:循环池的添加Event

2022-02-11 13:26:25 1594 1

原创 ZLMediaKit 服务器源码解读---环形数据(RingBuffer)的读写

一:RingBuffer主要的成员变量 typename RingStorage::Ptr _storage; typename RingDelegate<T>::Ptr _delegate; onReaderChanged _on_reader_changed; unordered_map<EventPoller::Ptr, typename RingReaderDispatcher::Ptr, HashOfPtr> _dispatcher_map;

2022-02-10 18:51:31 1295

原创 ZLMediaKit 服务器源码解读---RTSP推流拉流

rtsp推流拉流过程

2022-02-09 19:38:43 6091 11

原创 结构体成员的内存分配

结构体的内存分配举个例子就明白了,如下图,似乎除了结构体名没什么区别,内存大小和内存分布也应该没什么区别,但是实际上: sizeof(A) = 9 sizeof(B) = 16导致这一差异的就是内存对齐,为什么有内存对齐,以及什么是内存对齐在这就不阐述了,可以自行度娘,反正目的是为了加快性能, 内存对齐的规则如下,也是编译器给结构体开辟内存时遵循的规则:1、第一个成员的相对于结构体首地址的偏移(offset)为0.2、每个成员的相对于首地址的偏移(offset)为:对齐值与成员类型长度的

2021-12-23 09:40:46 3818

原创 理解B树的设计与定义

1、索引多到内存存不下的时候,需要把索引存储到磁盘,如果层高过高会导致对磁盘访问次数增多在多叉树的基础上要求所有叶子节点在一个层高B树定义:一颗M阶B树T,满足以下条件每个结点至多拥有M课子树根结点至少拥有两颗子树除了根结点以外,其余每个分支结点至少拥有M/2课子树所有的叶结点都在同一层上有k课子树的分支结点则存在k-1个关键字,关键字按照递增顺序进行排序关键字数量满足ceil(M/2)-1 <= n <= M-1B树中所有节点的孩子节点数中的最大值称为B树的阶,记为M(

2021-12-15 16:21:30 851

原创 环形数组(ringbuffer)

一:环形数组1、概念**百度百科:**是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流**个人理解:**本身就是一个定长数组,在存储数据时,达到存储上限时会从0继续存储,也就是他在存储数据时是个闭环的过程,举个例子:如下图,假设是个 大小为9字节的数组,当存满了9个字节的数据时,在存入字节时就会从0开始存储,环形数组也称ringbuffer2、优势首先是一个先进先出的队列,当取走数据时不需要移动数组中的其他元素,在单消费者单生产者的模型下,不需要加锁,可以更快的存取数据。

2021-11-19 17:02:03 6668 1

原创 mysql 主从复制搭建与实践

在主服务器数据发送更改时,会将更改过程以“事件”的形式存入binary log,依据记录的更改,会以不同的日志格式存入binary log在你想要将主服务器数据同步到副本时,使用不同的存储引擎将影响同步过程假如你使用MyISAM,在将数据同步到副本之前,你需要停止主服务器处理语句以获得读锁,从而获得binary log的位置,如果不这样会导致主从服务器数据不匹配或者损坏A->B->C 主从复制过程,B从A服务器同步数据,C从B服务器同步数据,此时B既做A的从服务器,也做C的主服务器,要想

2021-10-07 13:57:17 140

原创 多边形切割为多个三角形的C代码,Java代码

原文连接qt 界面显示代码:qt5.12 可以直接运行qt源码

2021-09-09 16:05:13 389

原创 mysql connector--c++ 安装

Access denied for user ‘root’@‘localhost’方式一:#sudo 强行登录sudo mysql#替换密码,账号依然是root#insert_password 填自己的密码,密码有一定的要求,大小写字母数字和标点符号#注意最后的 符号";"ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘insert_password’;方式二:找不到my.cnf查找find

2021-08-26 17:35:02 2071 1

原创 mysql connectorc++ 基础教程(一)

官方教程

2021-08-26 17:27:29 4568

原创 qml纯手写的控件表盘,粒子效果,自定义控件,图表,进度盘等

一:按钮二:仪表盘三:进度条四:图表五:粒子效果六:日期七:结语:大部分都是通过自绘实现自定义控件,花了差不多一个月时间去实现,使用的是qml-c++,qt create 12以上基本能完整打开工程,有问题可以留言,保证代码完整跑起来...

2021-08-13 20:57:00 265

原创 grpc环境搭建记录(ubuntu c++)

官方文档一:系统环境建议高版本的操作系统,我使用的是ubuntu 20.04,他安装的g++,可以支持c++17,同时cmake 版本也大于官方给的最低版本3.13你可以直接输入g++ 或cmake,按照终端输出的提示安装g++和cmake的版本就能满足grpc的编译要求二:安装过程也考参考 以官方的为主,可以跳过关于cmake和g++相关的说明,拉取源码1、前置条件(c++,cmake需要提前安装)sudo apt install -y build-essential autoconf

2021-08-13 10:22:52 460 2

原创 google开源算法ceres-solver 库的编译

google开源算法ceres-solver 库的编译一、编译环境 在unbuntu 下(在windows下有个需要找ndk版本的错误,linux下则没有),ndk版本使用最新就行,我自己的是在android studio下载的。二、编译步骤:按照官方的提示1、使用命令行,进入ceres-solver-XXXX 目录下 输入 ndk-build会提示错误:jni/Android.mk:84: *** Ceres requires Eigen; please invoke via EIGEN_P

2021-07-30 20:07:10 1403

原创 tcp/ip的简单理解

一:字节传输在网络中通信的基础单位是字节,1字节(byte) = 8位(bit),这里的bit就是一种数字信号,对应着实际电路中高低电平,举个很通俗易懂的例子:A端为一个开关,B端为一个灯泡,假设定义灯泡“亮”状态为1,“灭”状态为0,如果A端按了8次开关分别是:开、关、开、关、开、关、开、关,那么B端这段时间对应的状态就是“10101010”,如果在A端在加个转换器能将数字“10101010”转换为电路的“开关开关开关开关”,那么就相当于A端把数据“10101010”发送到了B端,图示只是说明了A端

2021-07-23 16:29:58 1434 2

原创 简单描述时间轮

时间轮作用也是用来作定时器触发任务,只是他更高效,时间复杂度为O(1)。运行原理为了方便理解我们参考钟表的形式,它分为3个层次:时、分、秒,只有秒钟在运动同样的,时间轮也分为多层,同样的只有第一层在运动,举个简单的4层时间轮例子(如下左图),我们假设最小计时单位为1(姑且理解为秒),用time来计时,初始为0,随着time递增,则:我们可以知道 time 应该落在第一层的位置int first_index = time%5当 first_index == 0,也就是第一层轮巡完毕,就需要将

2021-07-07 16:35:20 2900

原创 最小堆数据结构与定时器实现

最小堆最小堆的定义1、是一棵满二叉树2、子树也是一棵满二叉树3、左右节点的值都比当前节点的大从定义可知,根节点是树中的最小值,最小堆一般用链表存储,父子节点的关系,用纯数学的关系表示为:假设当前节点的在链表中的索引为n,左子节点为2n+1 ,右子节点为2n+2...

2021-06-29 18:45:57 672

原创 红黑树的实现及源码

红黑树是基于二叉搜索树来的,在增加和删除后,增加了颜色平衡调整。思路可参考:红黑树与二叉搜索树c++源码 与 qt图形化显示:二叉搜索树和红黑树的源码实现git仓库中:rbTress分支为红黑树实现master分支为二叉搜索树的实现以rbTress为准,初步测试没什么大问题,但是没有经过大量测试,并不排除代码中的bug...

2021-05-29 11:22:28 170

原创 二叉搜索树的实现

定义节点节点的定义比较简单,需定义好 索引key,左右子节点,父节点以及用户想要保存的自定义数据template <typename T>class Node{public: Node(int key,T t,Node* left,Node *right,Node *parent){ this->t = t; this->key = key; this->left = left; this->

2021-05-21 15:17:28 203

原创 epoll创建一个简单的tcp服务端

一:原理参考大神的吧 二:实现和select差不多的逻辑1、创建监听套接字,并开启监听2、创建epoll3、将监听套接字加入epoll4、等待事件到来,5、轮询监听事件队列,如果监听的事件的fd是服务器监听的socket,则将接入的客户端的socket fd加入epoll,不是则处理客户端的业务逻辑6、下一轮监听#include <iostream>#include <sys/socket.h>#include <sys/types.h>#i

2021-03-10 21:03:25 171

CustomControl.rar

qml 通用控件,全部手写实现 包括: 控件表盘,粒子效果,自定义控件,图表,进度盘等 界面效果:https://blog.csdn.net/dai1396734/article/details/119683756

2021-08-13

ceresShare.rar

说明:https://blog.csdn.net/dai1396734/article/details/119255040 直接跳到第七步 1、ceres solver静态库已经编译好 2、可直接编译成安卓动态库的工程

2021-08-13

QML_TCP.rar

此资源使用的是qt5.12 ,可直接打开,工程就是使用tcp拉取视频流,使用ffmpeg解码,然后传到qml(自定义)中去渲染 由于基本不写博客,一些注意说明就在这里写了: 1、资源肯定能用,我自己做了3天出来的,但是一打开肯定不能直接显示视频,因为我用的是tcp拉取的是自己服务器的视频流 2、工程就2个类,一个用于tcp拉流解协议,解码,一个用于qml的显示(自定义的C++类) 3、工程里面包含了debug文件,里面有运行程序所需要的ffmpeg动态库 ,请不要删除。 4、tcp中的拉流过程(ip和端口)需要更改下,因为协议命令不一样,自己的这个需要先发送个请求流命令到服务器,然后就是解协议不同 5、最终ffmpeg解码的是H264裸流,最后在发出去渲染 6、分数不是我定的,高低我也无法控制,但是工程各个模块都能单独拿出来用,解码,和渲染(附送一个多语言,工程没使用上这个) 7、实在不懂在来留言提问,留下个联系方式也行,因为我很少看博客,但是看到了必回,

2019-08-12

qmlBook电子档加书本源码

qmlBook中文版,含配套书籍,源码可以直接用qt打开.........................................................................................

2018-04-25

友善mini2440文件系统

mini2440移植开发指南配套文件系统

2017-08-26

空空如也

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

TA关注的人

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