自定义博客皮肤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)
  • 资源 (3)
  • 收藏
  • 关注

原创 模板实现一个任意类型创建

【代码】模板实现一个任意类型创建。

2024-01-10 11:02:37 357

原创 c++ 实现一个简单的自定义报文协议

将发送的数据按照长度和body的方式一次放入一个大的buffer中,4个字节存放body长度,后面存放报文,依次放入数据。后续如果想要存储复杂类型,可以拓展头部信息,比如数据类型等。

2023-08-25 18:42:06 354

原创 c语言实现内存池

该模型的内存池就是根据实际代码中内存分配的情况,申请多个全局变量当做不同块大小的内存池,每个内存池分割成单一块大小的内存,申请内存的时候根据内存块的大小从最匹配的内存块中获取一块。我们在实际分配内存的时候,因为内存大小不一,采用连续的内存池就是基于一块连续的内存去分配这些大小不一的内存,在回收的时候根据地址要做合并,使用这种内存的好处是配置简单,比较难造成内存浪费,缺点就是性能较差。内存池原理其实很简单,就是使用全局变量申请一块内存,然后基于这些全局变量的内存来进行内存分配和回收。

2023-06-05 14:01:34 275

原创 linux下调用cuda接口获取gpu显存使用率和gpu使用率

linux下调用cuda接口获取gpu显存使用率和gpu使用率#include <iostream>#include<string>#include<unistd.h>#include "nvml.h"using namespace std;int main(){ nvmlReturn_t result; unsigned int device_count, i; // First initialize NVML library

2021-04-29 16:39:11 1901

原创 后端开发面试题

后端开发面试知识点大纲:语言类(C++):关键字作用解释:volatile作用Volatile关键词的第一个特性:易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。Volatile关键词的第二个特性:“不可优化”特性。volatile告诉编译器,不要对我这个变量进行各种激进的优化,甚至将变量直接消除,保证程序员写在代码中的指令,一定会被执行。Volatile关键词的第三个特性:”顺序性”,能够保

2021-04-19 11:30:16 1301

原创 c++11新特性-可变参数模板

在c++11中声明可变函数模板需要typename或者class后面跟上"…".省略号有两个作用:1.声明一个参数包,这个参数包可以有0到任意个参数2.在模板定义的右边,可以将参数包展开成一个一个独立的参数可变函数模板的定义:template <class... T>void f(T... args) { std::cout << sizeof ...(args) << std::endl;}int main(int argc, char* argv[

2021-04-12 22:33:23 289

原创 go mongo常见几种查询

go mongo常见几种查询演示结构体建立连接and查询查询id=1 and name="test"或查询查询 name="test" 或者 "test2"in查询查询 name in("test1","test2","test3")模糊查询查询name中包含 test字符串的数据演示结构体type Score struct { Subject string `bson:"subject" json:"subject"` Score int `bson:"score" json:"score"`

2021-03-02 14:42:03 2589

原创 mxnet 编译ERROR解决

问题:./base.h:162:23: fatal error: cblas.h: No such file or directoryC_INCLUDE_PATH=$C_INCLUDE_PATH:xxxxxexport C_INCLUDE_PATHCPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:xxxxxexport CPLUS_INCLUDE_PATHxxxxx为openblas

2020-05-08 18:36:10 404

原创 opencv with ffmpeg 编译

编译ffmpeg./configure --disable-yasm --enbale-shared编译opencv#设置ffmpeg包的路径export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=./install -...

2020-05-08 17:26:35 1055

原创 c++读取json配置文件

这里写自定义目录标题conf.hconf.cctest.jsontest.cc输出:conf.h基于rapidjson封装,只需要引入rapidjson头文件即可使用#ifndef _CONF_CONF_H#define _CONF_CONF_H#include <string>#include <typeinfo>#include <vector&g...

2020-03-22 18:13:00 1450

原创 consul集群搭建

consul搭建准备工作 准备服务器三台:10.17.1.9010.17.1.9110.17.1.92搭建方案1.下载官网下载地址:https://www.consul.io/downloads.html,选在版本下载2.创建相关目录mkdir /usr/local/consulcd /usr/local/consulmkdir bin #存放consul可执行文件u...

2020-02-26 14:07:40 154

原创 Sentinel_LDK linux加密使用

在windows上安装Sentinel_LDK将linux相应程序包拷贝到linux操作系统在windows上设置加密的信息进入Sentinel-LDK_SDK 7.9\Linux\Redistribute\Runtime目录 安装aksusbd ,ubuntu通过dpkg安装,centos通过rpm安装,在linux程序包中都有对应的安装包执行Sentinel-LDK_SDK 7.9\...

2019-11-25 17:27:45 2356 2

原创 mxnet使用模型预测的初步心得

主要步骤:加载模型结构json文件加载模型参数params文件加载标签synset.txt文件创建predictor或者predictor handler加载目标文件预测(predict)获取预测结果如果是分类预测模型,则需要根据输出的向量取出最大可能的位置,根据synset文件确定分析结果输出预测结果上述步骤mxnetAPI:mxnet的API对于c++开发者来说分为...

2019-11-01 14:07:02 684 1

原创 cvat opnecv官方标注工具搭建

cvat介绍:cvat是OpenCV开发团队开源一款高效的计算机视觉注释工具,支持图像分类,对象检测框,图像语义分割,案例分割数据标注在线注释工具。支持图像和视频数据注释,最重要的是支持本地部署,无需担心数据泄露!cvat安装配置要求ubuntu 18.04docker 18.03.3以上,实测17.03.3不行docker安装sudo apt-get updatesudo...

2019-10-23 13:50:27 2494 5

原创 grpc简介与安装

grpc 简介gRPC是google推出的一款基于HTTP/2协议封装,使用protobuf3编解码消息体的开源rpc框架。rpc就是远程过程调用 (Remote Procedure Call)。简单地说,就是在本地调用远程服务器上的服务,gRPC基于以下理念: 定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用...

2019-10-21 18:21:42 936

原创 C++ grpc实现异步回射服务器

在上一篇博客中我使用grpc实现了一个同步的回射服务器,点击查看废话不多说,直接上代码echo_async_sample_server.cc#include <iostream>#include <memory>#include <string>#include <thread>#include <mutex>#incl...

2019-10-17 15:25:58 1765

原创 c++ grpc实现一个简单的回射服务器

grpc 的安装C++使用grpc首先需在电脑上安装grpc和protobuf,grpc的安装只推荐使用下面方式安装依赖配置工具:build-essential, autoconf, libtool测试支持:libgflags-dev编译工具:clang, libc+±dev从官方仓库克隆并编译安装git clone https://github.com/grpc/grpc...

2019-10-16 11:11:10 1053

原创 ubuntu 搭建samba服务器

ubuntu 搭建samba服务器安装samba服务器查看安装是否成功配置打开samba配置文件添加下面配置,未添加用户将共享文件夹添加到组中关闭防火墙安装talloc2这一步很重要安装samba服务器sudo apt-get install sambasudo apt-get install smbclient查看安装是否成功samba -V配置打开samba配置文件s...

2019-09-20 21:43:11 166

原创 c++ 螺旋打印

c++ 螺旋打印面试题面试题输入一个整数n,从中心而外螺旋打印输入 2输出9 2 38 1 47 6 5思路分析:如上图所示,先确定每一圈的范围,如n=3时,最外圈的范围是(0,0)~(4,4),即是x,y的取值在0-4之间,第二圈的范围是从(1,1)~ (3,3),代码要做到事就是确定范围之后,从左上角开始,逆时针填数。 void Spin(int n) ...

2019-09-10 17:40:41 811

原创 opencv学习-Mat::type()和Mat::depth()的关系与区别

Mat::type()官方文档对Depth的解释是单独一个通道的类型,通俗的说就是图像中单独一个元素的类型,它可以有以下的类型:#define CV_8U 0#define CV_8S 1#define CV_16U 2#define CV_16S 3#define CV_32S 4#define CV_32F 5#define CV_64F 6#define CV_USRTYP...

2019-08-05 22:27:41 918

转载 学习 opencv---非线性滤波:中值滤波,双边滤波

详情:https://www.cnblogs.com/wyuzl/p/6246381.html

2019-07-25 09:50:14 119

原创 muduo库学习-日志模块的学习以及C++日志模块封装

前言开发一款软件,一个好的日志库肯定是必不可少的,c++作为一门这么古老的开发语言,按理说应该有一些好用的日志库,但是在网上找到的那些日志库感觉用起来都不是很得心应手,因此就自己动手写了一个日志库,源码放在github上我自己写的这个日志是参考muduo的日志模块开发的,下面我们首先介绍muduo日志库muduo日志库的架构:muduo日志库的类调用关系Logger => Impl...

2019-07-08 21:55:16 929

原创 muduo库学习篇-threadPool类的封装

在多线程编程中一般情况下,我们都会使用到线程池,因此muduo库也有对线程池的封装,接下来我们看看muduo库对线程池的实现,基本上和大部分的线程池的实现,大同小异。ThreadPool.h// Use of this source code is governed by a BSD-style license// that can be found in the License file....

2019-06-02 18:24:05 438

原创 mudu库学习篇-mutex类封装学习

muduo库是高并发的linux网络编程库,那么就一定有mutex对mutex类的封装,在多线程的编程中,线程间经常会操作一些全局变量,因此我们就需要一些同步的机制,我的上一篇博客condtion算是一种,当然了conditon一般都是和mutex来结合使用。接下来我们看看muduo库对mutex的封装mutex.hnamespace muduo{// Use as data membe...

2019-06-01 14:40:49 639 5

原创 muduoku 学习篇- condition类学习

在上一篇博客学习了muduo库对线程的封装,并且留了一个小尾巴,在muduo的线程类里面有一个成员变量是CountDownLatch类型,打开这个类可以看到这个类主要是对条件变量的封装。所以先学习muduo库对条件变量的封装。conditon.h#ifndef MUDUO_BASE_CONDITION_H#define MUDUO_BASE_CONDITION_H#include "mud...

2019-05-30 19:54:18 279

原创 muduo库学习篇-Thread类学习

多线程编程在任何语言中基本都是一个绕不开的话题,如果我们想要发挥计算机多核的优势,提高程序的响应速度,就一定要使用到多线程编程技术。因此muduo库一定少不了thread的封装,接下来我们开始学习muduo库thread类的封装。如果让我自己设计一个thread类的话我能想到的有哪些:成员变量:线程ID、线程回调函数指针成员函数:线程的创建(构造函数)、线程的回收函数、线程分离函数上面...

2019-05-29 21:23:06 594

原创 muduo库学习篇-AtomicIntegerT模板原子类的实现

为什么需要原子操作:在我们平时工作中总会有i++这种类似的代码,这样的代码在不涉及多线程编程的时候是没有问题的, 但是一旦在多线程编程中变量i是一个全局变量的话,那么就会很容易出现错误。因为i++不是原子操作,一个i++分为以下几个步骤i从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址,当一个线程执行一半的时候,i的使用权被另外的线程拿去,那么得到就不是我们想要...

2019-05-27 23:33:11 211

原创 muduo库学习篇-Timestamp类的学习 时间类

在平时的开发中,我们经常会遇到很多和时间有关系的代码,因此在muduo库中,作者也设计了Timestamp类,来对时间的使用头文件:// Use of this source code is governed by a BSD-style license// that can be found in the License file.//// Author: Shuo Chen (che...

2019-05-22 19:59:40 506

原创 muduo库学习篇-学习目的和计划

从今天开始大概打算花一两个月的时间把陈硕大神的muduo库进行学习,此次学习muduo库主要有下面几个目的:通过学习muduo库里面的各个基础库,强化自己对c++编程的理解和运用通过学习muduo网络库加强自己对linux网络编程的理解通过学习muduo库,加深自己对c++类设计学习主要分为下面几个阶段:学习muduo库各个基础组件学习muduo网络库组件muduo库的使用最...

2019-05-22 18:45:39 1456 1

原创 C++创建一个类默认生成的函数,以及隐藏情况

c++中创建一个类默认生成的函数default构造函数(无参构造函数)拷贝构造函数=重载操作符函数析构函数移动构造函数上面的这些函数是我们再定义一个空类时,编译器为我们默认生成的函数,默认构造函数和析构函数是一定会生成的,剩下的三个函数只有我们在代码中使用的时候才会生成。代码:class tc1{public: int m_a;};void test13()...

2019-05-08 18:10:12 1081

原创 c++实现的阻塞队列

阻塞队列(block_queue)什么是阻塞队列:在多线程编程时当有多个线程访问一个队列时如果队列为空,则获取队列中元素的方法就会阻塞,直到队列中有元素可以获取解决的问题:队列的线程安全问题队列多线程取元素时的轮询判断问题什么情况下需要阻塞队列:在c++标准库STL中常用的队列容器都不是线程安全的,我们在多线程编程时总会有类似于生产者消费者这种模型,在这种模型下我们访问队列...

2019-05-07 13:45:59 4082 3

原创 C++设计模式-迭代器模式

迭代器模式迭代器模式:提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。适用性:访问一个聚合对象的内容而无需暴露它的内部表示支持对聚合对象的多种遍历为遍历不同的聚合结构提供一个统一的接口角色:Iterator(迭代器):迭代器定义访问和遍历元素的接口ConcreteIterator (具体迭代器):具体迭代器实现迭代器接口对该聚合遍...

2019-05-06 16:12:34 115

原创 C++设计模式-观察者模式

观察者模式观察者模式:观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。观察者模式(Observer)完美的将观察者和被观察的对象...

2019-05-06 15:33:10 140

原创 C++常见三种工厂设计模式

设计模式简单工厂模式简单工厂模式:主要特点是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类使用场景工厂类负责创建的对象比较少;客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。代码://算法的父类,抽象出返回结果的接口class Operation{pub...

2019-05-06 11:44:44 846

原创 c++中如何防止死锁

1、什么是死锁线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。2、常见的死锁场景一个...

2019-04-29 10:37:24 2141

原创 auto_ptr在stl使用中的问题

auto_ptr说明:C++的auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。使用std::auto_ptr,要#include <memory>。auto_ptr作用:c++中可以通过auto_ptr实现对内存的管理,当auto_ptr绑定指针后,在auto_ptr结束的时候释放地址所指向的内存关于STL中使用auto_ptr的问题:我们通...

2019-04-17 23:40:15 356

原创 如何用alpine镜像做一个最小的镜像并运行c++程序

需求工作中我们如果要制作镜像,一般都是直接pull官方镜像,比如我们要运行一个c++程序我们可能直接pull一个gcc,或者ubuntu镜像就可以了,但是存在一个问题,我们只是要运行一个c++程序却要运行一个ubuntu系统,这是非常消耗资源的,所以就去网上搜了搜发现早期的docker都是使用alpine镜像来做基础镜像,所以就用alpile镜像来制作镜像dockerfileFROM alp...

2019-03-29 18:56:00 4543 3

转载 使用Sphinx制作说明文档

参考文章:http://www.sphinx-doc.org/en/stable/install.htmlhttp://www.open-open.com/lib/view/open1417416756706.html

2019-01-04 18:54:42 300

转载 git相关命令

欢迎关注问我团队相关公众号参考博客:https://www.cnblogs.com/chenwolong/p/GIT.html

2018-12-26 18:22:59 161

原创 nodejs解析protobuf文件

一、protobuf介绍:1. 什么是protbuf是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很...

2018-12-12 10:50:02 2360

c版本内存池实现完整源码

c版本内存池实现完整源码

2023-06-05

seaweed使用手册.pdf

seaweedfs介绍和jiaoch

2021-05-26

Sentinel_LDK7.9中文快速入门.docx

LDK7.9中文快速入门文档,通过该文档可以快速的熟悉和了解如何在windows下使用Sentinel_ldk

2019-11-25

mongodb 安装包

mongodb linux安装包。 使用该安装包可以在ubuntu系统上安装mongodb

2019-02-12

空空如也

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

TA关注的人

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