自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

温暖不了你的心的博客

态度决定高度,习惯主宰人生

  • 博客(123)
  • 资源 (8)
  • 问答 (4)
  • 收藏
  • 关注

原创 nginx-MD5算法实现

MD5加密算法,也叫信息摘要算法,在项目中经常用到,一直对其原理比较好奇,在学习nginx源码的过程中,发现有其实现,就单独拿出来,进行调试学习,对于理解其原理非常有帮助。md5.h文件md5.cpp测试💖 原理网上的总结很多,可以结合源码学习和理解。参考:

2022-11-10 21:46:30 1463 1

原创 redis源码之CRC校验

CRC即循环冗余校验码,是信息系统中一种常见的检错码,常用于网络层差错检测。redis源码中的CRC16算法采用欧洲的CRC-16-CCITT标准。CRC16算法还有另外一个美国的CRC-16-IBM(CRC-16 and CRC-16-ANSI)标准。

2022-11-07 20:12:00 790

原创 redis源码之大小端转换(endianconv.c)

3.05.04如需源码,可官网下载或如下直接下载:提取码:mpds如有理解不对的地方,欢迎各位指出,大家共同交流和学习。送人玫瑰手有余香!🌹🌹🌹。

2022-11-07 15:41:05 446

原创 libcurl库

libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。

2022-08-29 22:46:22 510

原创 C++ 互斥量使用

在实际开发中,使用互斥量不当,导致程序出现“device or resource busy: device or resource busy”异常错误。使用mutex进行加锁、解锁时,必须保证lock、unlock成对出现,且每次加锁之后,正常解锁。

2022-08-04 15:52:45 465

原创 C++ 基于RapidJson库修改json中指定元素的值

C++ 基于RapidJson库修改json中指定元素的值

2022-08-04 11:26:00 1611

原创 基于APISIX的basic-auth插件对Minio文件上传功能进行授权

APISIX网关对minio文件系统的应用

2022-07-19 10:02:18 777

原创 分布式存储-Minio环境搭建

MinIO是一个基于Apache License V2.0开源协议的轻量级的对象存储服务。适合存储大容量非结构化的数据,如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

2022-07-14 10:09:56 4311 1

原创 C++ 11多线程中互斥锁、原⼦操作和自旋锁

目录💖 简介💖 面试题(i=0,在两个线程中执行i++操作100次)💖 加锁方式💖 原子操作方式💖 自旋锁方式💖 简介通过一个面试题,对C++多线程互斥锁、原子操作和自旋锁进行学习和总结。如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 面试题(i=0,在两个线程中执行i++操作100次)i=0,在两个线程中执行i++操作100次,最终的结果是多少?答案:结果在2-200之间,具体不固定。下面,以一个例子进行演示,在window.

2022-05-27 21:49:04 1230

原创 rocketmq-client-cpp实现顺序消息

目录💖 简介💖 顺序消息生产者🏆 代码🏆 编译💖 顺序消息消费者🏆 代码🏆 编译💖 简介RocketMQ-Client-CPP是Apache RocketMQ的C/C++客户端,是一个具有低延迟、高性能和高可靠性、万亿级容量和灵活可扩展性的分布式消息传递和流平台。如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 顺序消息生产者vi OrderProducer02 .cpp🏆 代码#include <iostream>.

2022-05-26 21:59:07 405

原创 rocketmq-client-cpp实现异步消息

目录💖 简介💖 生产者🏆 代码🏆 编译💖 消费者🏆 代码🏆 编译💖 简介RocketMQ-Client-CPP是Apache RocketMQ的C/C++客户端,是一个具有低延迟、高性能和高可靠性、万亿级容量和灵活可扩展性的分布式消息传递和流平台。如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 生产者vi asynProducer.cpp🏆 代码#include <iostream>#include <ch.

2022-05-25 22:27:30 288

原创 开源库之-jemalloc开源库

目录💖 简介💖 为什么用💖 如何解决内存碎片💖 简单使用💖 简介jemalloc是一款内存分配器,与其它内存分配器(glibc)相比,其最大优势在于多线程场景下内存分配性能高以及内存碎片减少。jemalloc在Facebook公司内部很多项目中使用。redis的windows版本是用的是jemalloc库。源码下载:https://github.com/jemalloc/jemallocwindows环境下头文件及动态库,适用于vs2015或vs2017,如有需要可直接下载:链接:http.

2022-05-25 22:20:48 563

原创 rocketmq-client-cpp简单使用

目录💖 前言💖 下载💖 特征💖 编译💖 简单使用🏆 生产者🏆 消费者💖 前言RocketMQ-Client-CPP是Apache RocketMQ的C/C++客户端,是一个具有低延迟、高性能和高可靠性、万亿级容量和灵活可扩展性的分布式消息传递和流平台。如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 下载https://github.com/apache/rocketmq-client-cpp💖 特征同步或异步生成消息,包括正.

2022-05-24 15:54:52 2832

原创 RocketMQ-部署安装

目录💖 前言💖 下载💖 安装💖 启动💖 可视化工具🏆 下载🏆 使用💖 参考💖 前言RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发。名称端口作用rocketmq-console8180rokcet_mq 可视化界面 需要监听mqnamesrvmqnamesrv10909rokcet_mq 服务器mqbroker10911rokcet_mq 集群 需要启动到mqnamesrv下面如有理解不对的地方,欢迎各位指出,大家共同交流.

2022-05-24 15:35:56 250 1

原创 C++ void *类型强转为int类型

目录💖 前言💖 问题描述💖 原因分析💖 解决方法💖 补充💖 前言C语言允许从void*隐式转换到其它的指针类型,但C++不允许。因为,C++对类型转换要求很高。💖 问题描述在linux平台上,进行void * 到int类型强转,出现如下错误:error: cast from ‘void*’ to ‘int’ loses precision [-fpermissive]Demo01代码如下:// Type.cpp#include<iostream>#include<st.

2022-05-23 18:52:18 6055 2

原创 linux环境中设置docker服务开机自启动

目录💖 前言💖 背景💖 docker服务设置开机自启动💖 关闭docker服务开机自启动💖 前言# docker 服务开机自启动命令systemctl enable docker.service# 关闭docker 服务开机自启动命令systemctl disable docker.service欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 背景linux系统,每次重启之后,docker服务都是关闭的,如下所示:因此,每次都需要用如下命.

2022-05-17 21:59:33 13068

原创 malloc、calloc、realloc、new等堆内存分配函数

目录💖 前言💖 malloc、calloc和new的对比💖 realloc的作用💖 结论💖 前言malloc、calloc、realloc、new这四个函数都是从堆内存中分配内存,然后使用,但是,有所不同。如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 malloc、calloc和new的对比先看一段代码:void test01(){ int *p1 = (int *)malloc(sizeof(int)*5);//只分配内.

2022-05-03 14:56:02 432

原创 栈空间最大值问题

目录💖 前言💖 简介💖 栈大小🏆 windows平台🏆 linux平台💖 递归函数对栈大小的影响💖 修改栈大小🏆 windows平台下🏆 linux平台下💖 总结💖 前言如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 简介这里先给出结论,后面进行验证。Windows系统中,栈的大小被记录在可执行文件中,由编译器设置决定,VS2013中栈大小理默认为1M。linux系统中,栈大小不是由编译器决定,而是由操作系统决定,栈大小默认为8.

2022-05-03 14:47:02 2180 1

原创 大小端问题

目录💖 前言💖 何为大端小端💖 为什么会有大小端🏆 大端🏆 小端💖 大小端判断🏆 Windows平台🏆 Linux平台💖 大小端转换💖 常见大小端场景💖 Linux中的大小端转换函数🏆 小端转大端🏆 大端转小端💖 前言如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 何为大端小端根据数据在内存中的排列方式不同分为大端模式和小端模式,也叫大端、小端。💖 为什么会有大小端小端最符合人的思维,即:地址低位存储值的低位,地址高位存储值的高.

2022-05-02 23:12:14 1262

原创 java中final关键字的作用

目录💖 简介💖 修饰变量🏆 局部变量🏆 成员变量🏆 修饰形参💖 修饰方法💖 修饰类💖 好处💖 注意💖 简介java中final关键字应用广泛,使用频繁,我结合C++进行整理,归纳,方便理解和掌握,特记录如下。如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 修饰变量final修饰的变量,成为常量,常量的值不能被修改,只能定义一次。类似于C/C++中的const。🏆 局部变量final修饰的局部变量必须声明进行初始化,如果不初始化,

2022-04-28 10:59:59 697

原创 redis源码之链表(adlist.h和adlist.c)(篇二)

目录💖 简介💖源码学习🏆 listInsertNode函数源码🏆 listDelNode函数源码🏆 listGetIterator函数源码🏆 listReleaseIterator函数源码🏆 listRewind函数源码🏆 listRewindTail函数源码🏆 listNext函数源码🏆 listDup函数源码🏆 listSearchKey函数源码🏆 listIndex函数源码🏆 listRotate函数源码💖 redis链表特点💖 总结💖 简介redis 源码版本:3.05.04如需源码,可官.

2022-04-25 18:47:03 1116

原创 C++ queue遍历输出问题

目录前言主要操作遍历元素错误方式遍历元素正确方式方式1方式2(推荐)前言queue为C++中的队列容器,具有先进先出的特点。不支持迭代器、不能进行随机访问和遍历。主要操作入栈操作:push(xx)出栈操作:pop()返回第一个元素:front()返回最后一个元素:back()原为为空:empty()主要操作示意图:遍历元素错误方式#include <iostream>#include <string>#include <queue>#inc

2022-04-22 17:15:11 5425

原创 C++ 11中使用stod等函数进行类型转换的问题

目录前言例子分析解决总结前言在实际工作中,经常需要对类型进行转换,如string类型的数据转为基本数据类型类型、wstring类型的数据转为基本数据类型,而C++中为我们提供了丰富的对应函数对其支持,但是,在使用的时候,一些细节需要注意。常常需要将string类型的数据转为double类型,在c++11中支持新增了stod函数进行支持,它把参数指定的字符串转换为double精度的浮点数。例子例如:将string类型的数据转为double类型stod函数是c++11中支持新增的函数,支持将stri

2022-04-22 11:45:52 7596

原创 redis源码之链表(adlist.h和adlist.c)(篇一)

目录简介源码学习结构定义创建链表函数释放链表函数新增节点到表头函数新增节点到表尾函数简介redis 源码版本:3.05.04如有理解不对的地方,欢迎各位指出,大家共同交流和学习。源码学习结构定义链表作为一种常用的数据结构,提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。链表节点结构://双向链表typedef struct listNode { //前置节点 struct listNode *prev; //后置节

2022-04-21 17:21:31 934

原创 linux下g++、make、cmake编译工具代码实例

目录前言代码实例项目目录结构g++方式make方式cmake方式问题总结前言g++:c++编译器make:批处理工具,通过makefile文件实现批处理,本质还是g++编译器进行编译cmake:跨平台编译工具,通过CMakeLists.txt文件实现自动编译,本质还是转成makefile实现批处理项目源码在上上一篇文章:https://editor.csdn.net/md/?articleId=124302251代码实例这个例子比较简单,主要为了说明这三个工具的使用。项目目录结构g+

2022-04-21 12:26:16 1960 1

原创 linux下cmake安装配置

前言仅作为自己记录使用。官网:https://cmake.org/download/安装前提,安装openssl、gcc、g++等工具。# 进入linux服务器上存放文件的位置cd /usr/local/src# 上传scp cmake-3.21.4.tar.gz [email protected]:/usr/local/src# 解压tar xzvf cmake-3.21.4.tar.gz# 进入目录cd cmake-3.21.4# 配置(此步,可能出现问题1错误)./bo

2022-04-21 12:01:47 1913

原创 C/+C++获取linux(Centos 7)系统下指定进程的CPU使用率和内存使用率等信息

目录前言代码前言linux系统一切皆文本,所以,系统相关信息可以通过读文件或执行shell命令的方式获取,这里采用后者的方式获取指定进程信息。代码.h文件#include<iostream>#include<stdio.h>#include<string>#include<string.h>#include<stdlib.h>using namespace std;class ProcessInfo{public:

2022-04-20 17:13:48 839

原创 解决java中调用JSON.toString(obj)保存mongodb数据库多出首字母小写字段问题

背景java利用fastjson-1.2.62.jar和mongo-java-driver-3.12.3.jar库保存数据到mongodb数据库时,会意外多出一些小写字母开头的字段。如下图所示:红色部分就是多出的字段,不是我想要的。实际上我的结构体定义如下,没有写get、set等方法,而是用lombok注解的方式:import lombok.Data;import lombok.Getter;import lombok.Setter;@Data@Setter@Getterpublic

2022-04-18 22:19:45 981

原创 redis源码之动态字符串(sds.h和sds.c)(篇三)

主要函数简介源码学习sdstrim函数sdsrange函数sdscmp函数sdstolower 函数sdstoupper 函数简介redis 源码版本:3.05.04如有理解不对的地方,欢迎各位指出,大家共同交流和学习。源码学习sdstrim函数移除字符串/*从s中移除所有cset中出现的字符*/sds sdstrim(sds s, const char *cset) { struct sdshdr *sh = (void*) (s-(sizeof(struct sdshdr)));

2022-04-18 15:22:00 666

原创 redis源码之动态字符串(sds.h和sds.c)(篇二)

给一个sds扩充空间以供以后使用(核心函数,后面的函数会经常使用)sds sdsMakeRoomFor(sds s, size_t addlen) { struct sdshdr *sh, *newsh; size_t free = sdsavail(s); size_t len, newlen; if (free >= addlen) return s; len = sdslen(s); sh = (void*) (s-(sizeof(struct

2022-04-16 01:20:14 551

原创 redis源码之动态字符串(sds.h和sds.c)(篇一)

简介redis 源码版本:3.05.04源码为什么文件叫sds那?因为,sds是simple dynamic string的英文缩写,也就是简单的动态字符串。sds的底层还是char *数据类型typedef char *sds;sds 结构:struct sdshdr { unsigned int len; unsigned int free; char buf[];};创建一个指定长度的sds字符串这个函数是后面操作sds字符串的核心。sds sdsnewlen(

2022-04-14 00:15:27 961

原创 C/C++ TCHAR* 作为函数返回值的问题

背景首先代码如下:#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include "stdint.h"#include <windows.h>#include <tchar.h> #include <TlHelp32.h>#include <io.h>#include <sys/stat.h>using names

2022-04-13 14:48:59 689

原创 获取linux(Centos 7)系统下,指定进程的PID、端口、内存使用率和CPU使用率

前言利用shell命令获取Centos 7环境下,指定进程的PID、端口、内存使用率和CPU使用率等进程信息。操作注:Monitor为指定进程名# 查看某一进程是否存在ps -ef| grep Monitor |grep -v grep# 获取某一进程的PID 仅显示PIDpgrep Monitor # 获取某一进程的端口 注:LISTEN:监听状态,说明该端口是开放的,正在等待连接,但是还没有被连接netstat -nap | grep $(pgrep Monitor)

2022-04-12 20:44:39 3150

原创 C++项目工程在Linux环境开发、部署和运行问题

背景当我们自己开发的项目程序需要在linux上进行部署、调试时,项目代码完整拷贝过去之后,直接运行我们自己的可执行程序,往往提示找不到所相关的.so库,会报错。这是因为,系统只会去默认搜寻目录(/lib和/usr/lib)下,以及动态库配置文件(/etc/ld.so.conf和/etc/ld.so.conf.d/*.conf)里所列的目录下, 搜索可共享的动态库(格式如lib*.so*),进而创建出动态装入程序*(ld.so)*所需的连接和缓存文件。而我们自己项目所依赖的库路径不在上面几个路径,因此,找

2022-04-12 20:27:51 3446

原创 shell脚本实例

1:判断两台主机是否能ping通#!/bin/env bash // 或/bin/bash# 交互式定义变量,让用户自己决定ping 哪个主机read -p "请输入你要ping的主机的IP:" ip# 使用ping程序判断主机是否互通ping -c1 $ip &>/dev/nullif [ $? -eq 0 ] # 注意,括号后面加上空格 $?上次命令的结果then echo "当前主机和远程主机$ip是互通的!"else echo "当前

2022-04-11 01:10:26 934

原创 ELK之Elasticsearch部署

前言官网:https://www.wlastic.co/cn/downloads/elasticsearch仅作为记录使用!安装# 注意:Elasticsearch不支持root用户运行# 解压安装包tar -xvf elasticsearch-7.14.0-linux-x86_64.tar.gz -C /usr/local# 进入到elasticsearch的解压目录下cd /usr/local/elasticsearch-7.14.0# 进入config目录修改elasticsea

2022-04-09 00:29:25 188

原创 基于JAVA的ICE服务端实现

前言ICE版本使用3.6.4:Ice-3.6.4.msi链接:https://pan.baidu.com/s/1QwvLDcVPRaM52p1jU0lhrg提取码:8iso开发环境使用IDEA: ideaIU-2020.2.3.exe链接:https://pan.baidu.com/s/1XuA_A-9BeU5hOrDREJvzTA提取码:ybyq安装ICE首先安装Ice,选择安装路径D:\Program File(x86)在安装路径下,生成如下文件:使用ICE创建.ice文

2022-04-07 23:43:18 1085

原创 C++程序和JAVA程序通信的中文乱码问题

背景C++程序作为ICE客户端通过ICE中间件发送消息给JAVA服务端程序。C++客户端以默认编码格式的字符串传输给JAVA服务端,导致中文乱码。问题C++客户端通过GBK格式发送如下消息给JAVA服务端:"Name:"计算机监控快报","Status":"1","Type":"AGENT"JAVA服务端收到消息直接打印输出结果如下:表明中文乱码,考虑在JAVA服务端进行转换处理。JAVA端实现转为GB2312编码格式: try{ System.out.println(Syst

2022-04-07 21:27:41 1335

原创 JAVA获取MongoDB中的int64数据,被自动加上了$numberLong问题

前言采用的mongoDB驱动和JSON库的版本为:fastjson-1.2.62.jarmongo-java-driver-3.12.3.jar问题MongoDB中存放的Int64位点进去保存如下:多出一个NumberLongjava通过如下方式取出MongoDB记录//其中,arr为存放Documnet的ArrayList对象String qJson=arr.get(i).toJson(); //将documen转为json字符RecvHead recvHead = JSONO

2022-04-05 15:36:30 2787 1

原创 JSON数据和JAVA对象之间的转换

方法1:利用阿里巴巴开源的fastjson包进行JAVA对象和JSON字符串进行转换。C++中的结构体在JAVA中用对象表示,目录结构如下:Peron类内容如下,对应C++中的Person结构体:package com.company;public class Person { private String name; private int age; private String address; //快速生成 Alt+insert public St

2022-04-04 01:59:15 20909

粒子群微电网优化调度

智能微电网的优化调度,包括蓄电池、柴油机、大电网等分布式设备,用粒子群算法进行优化,程序可以执行,可以对对其场景进行重新设计、并对其算法进行改进。

2019-04-11

Latex EI期刊模板

Latex排版可以快速、整洁进行排版,既美观又省心。这是一个EI英文期刊论文模板,可以快速生成PDF文档。。。

2019-04-11

差分算法与粒子群算法结合

将差分算法与粒子群算法进行结合,并用罚函数进行约束处理,对目标函数进行优化

2018-08-24

基本粒子群算法

基本粒子群算法,可以用来优化微电网调度问题,实现目标函数最小问题。

2018-08-24

混沌粒子群算法

该算法是混沌运动与粒子群算法相结合的混沌粒子群算法,可以提高算法的全局搜索能力。

2018-08-24

Matlab优化算法案例分析与应用

对PSO、GA等优化算法进行matlab实现,特别是带约束的问题,怎么处理,是一本很好的参考书

2018-08-22

经验模态分析

matlab实现经验模态分解。完整的EMD分解程序,并附有一个简单的例子。

2018-08-22

电动汽车有序充放电

大规模电动汽车作为一种可移动的储能设备,通过V2G技术并入电网,实现对电网的良好互动,成为一种重要的研究内容。

2018-08-04

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

TA关注的人

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