自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (2)
  • 收藏
  • 关注

原创 关于 undefined reference to `write(std::string const&)‘ 这种参数是“std::string“ 类型的错误解决方法

关于-D_GLIBCXX_USE_CXX11_ABI 宏使用的一些问题

2022-08-10 15:46:08 1408 1

原创 双向链表

template <typename T> struct List { sp<T> head; wp<T> tail; sp<T> pending; uint32_t count; List() : head(NULL) ...

2020-04-07 15:43:53 178

原创 Linux系统调用

系统调用是操作系统内核提供给应用程序的基础接口,需要运行在操作系统的核心模式下,以确保有权限执行某些 CPU 特权指令。Linux 系统提供了功能非常丰富的系统调用,涵盖了文件操作、进程控制、内存管理、网络管理、套接字操作、用户管理、进程间通信等各个方面。执行如下命令,可列出系统中所有的系统调用名称。man syscalls系统调用的两种调用方式1.系统调用由指派的编号来标识,通过 s...

2020-02-21 10:20:51 337

原创 优化SQL查询的效率

在数据量很大的情况下,不同的SQL语句,消耗的时间相差很大,下面方法可以提高查询的效果:1) 在select子句中尽量避免使用*在select子句中,“*”是选择全部数据的意思。比如语句:“select * from 成绩表”,意思是选择成绩表中所有列的数据。所有要明确需要哪些列的数据,就提取哪些列的数据。尽量少用*来获取数据。另外,如果将select * 用于多表联结,会造成更大的成本开...

2019-12-25 16:37:03 462

转载 MySQL数据库优化法则总结

    网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正以及补充     这篇文章我花费了大量的时间查找资料、修改希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。     要正确的优化SQL,我们需...

2019-09-23 11:21:38 315

转载 并发模型 Actor

Actor模式是一种并发模型,与另一种模型共享内存完全相反,Actor模型share nothing。所有的线程(或进程)通过消息传递的方式进行合作,这些线程(或进程)称为Actor。共享内存更适合单机多核的并发编程,而且共享带来的问题很多,编程也困难。随着多核时代和分布式系统的到来,共享模型已经不太适合并发编程,因此几十年前就已经出现的Actor模型又重新受到了人们的重视。MapRed...

2019-09-05 11:27:34 403

转载 开源软件架构 zeromq

原文链接:http://www.aosabook.org/en/zeromq.htmlØMQ是一个消息通信系统,如果你愿意的话也可以称其为“面向消息的中间件”。ØMQ的应用环境很广泛,包括金融服务、游戏开发、嵌入式系统、学术研究以及航空航天等领域。消息通信系统完成的工作基本上可看作为负责应用程序之间的即时消息通信。一个应用程序决定发送一个事件给另一个应用程序(或者多个应用程序),它...

2019-09-05 10:45:30 268

转载 zmq 内部结构

 概述想要了解ZMQ内部结构的人越来越多,大量关于代码库的讨论经常提到的问题是缺乏一个可以让新人快速了解代码结构的架构文档。本文的目的便是提供一种这样的文档。本文会逐步覆盖整个代码库,但是不会去关注太多的细节问题。因为随着时间的推移,细节部分可能与文档脱节。如果想要获得详细信息,你应该查看相关部分的源码。首先需要提醒读者的是代码库是复杂的。从代码行数(也许是意大利面式的代码行数,...

2019-09-05 10:09:04 699

转载 Linux下的多线程编程

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/12/07/2807484.html本文作者: 姚继锋 (2001-08-11 09:05:00) 黄鹏程(2009-03-13) converse (2009-01-15) 1 ...

2019-09-05 09:22:36 161

转载 zeromq源码分析笔记之无锁队列ypipe_t(3)

在上一篇中说到了mailbox_t的底层实际上使用了管道ypipe_t来存储命令。而ypipe_t实质上是一个无锁队列,其底层使用了yqueue_t队列,ypipe_t是对yueue_t的再包装,所以我们先来看看yqueue_t是怎么实现的。1、yqueue_tyqueue_t是一个高效的队列,高效体现在她的内存配置上,尽量少的申请内存,尽量重用将要释放的内存。其实,容器的设计都会...

2019-09-05 09:20:06 243

转载 zeromq源码分析笔记之线程间收发命令(2)

在zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定;另一类是socket_base_t实例与session的消息通信,消息的结构由msg_t确定。命令的发送与存储是通过mailbox_t实现的,消息的发送和存储是通过pipe_t实现的,这两个结构都会详细说到...

2019-09-05 09:19:28 341

转载 zeromq源码分析笔记之架构(1)

1、zmq概述ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。引用云风的话来说:ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比 tcp 协议更高一级的协议。(当然 ZeroMQ 不一定基于 TCP 协议,它也可以用...

2019-09-05 09:17:26 214

转载 I/O多路复用之epoll

1、select、poll的些许缺点先回忆下select和poll的接口int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);...

2019-09-05 09:16:12 151

转载 I/O多路复用之poll

1、select的些许缺点回忆一下 select接口 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);sele...

2019-09-05 09:14:32 174

转载 I/O多路复用之select

1、什么是I/O多路复用       关于什么是I/O多路复用,在知乎上有个很好的回答,可以参考罗志宇前辈的回答。  这里记录一下自己的理解。我认为要理解这个术语得从两方面去出发,一是:多路是个什么概念?二是:复用的什么东西?先说第一个问题。多路指的是多条独立的i/o流,i/o流可以这么理解:读是一条流(称之为读流,比如输入流),写是一条流(...

2019-09-05 09:13:23 118

转载 socket原理详解

1、什么是socket我们知道进程通信的方法有管道、命名管道、信号、消息队列、共享内存、信号量,这些方法都要求通信的两个进程位于同一个主机。但是如果通信双方不在同一个主机又该如何进行通信呢?在计算机网络中我们就学过了tcp/ip协议族,其实使用tcp/ip协议族就能达到我们想要的效果,如下图(图片来源于《tcp/ip协议详解卷一》第一章1.3)         、        ...

2019-09-05 09:12:30 421

转载 我读过的最好的epoll讲解--转自”知乎“

首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。不管是文件,还是套接字,还是管道,我们都可以把他们看作流。之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务器还没有把数据传回来...

2019-09-04 16:32:36 169

原创 双向链表listnode代码学习

直接上双向链表listnode代码:// listnode类型的声明,里面只有两个指针prev,nexttypedef struct _listnode { struct _listnode *prev; struct _listnode *next;} listnode;上文代码定义了结构体listnode,但奇怪的是,这个结构体只有链接节点的前驱prev和后继next...

2019-07-18 17:35:19 512

原创 linux 下使用valgrind工具进行内存泄露检测

一 valgrind工具集介绍valgrind包含下列工具: 1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 2、callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。 3、cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。 4、helgrind:用于检查多线程程序的竞态条件。 ...

2019-07-12 18:03:19 271

转载 protobuf:常用序列化/反序列化接口

C数组的序列化和反序列化#include "addressbook.pb.h"#include <iostream>using namespace std;/*//C数组的序列化和序列化API//在/usr/local/include/google/目录下,查找包含"SerializeToArray"所有的文件,同时打印所在行//sudo grep "Serialize...

2019-04-22 09:48:07 4062

原创 关于多线程使用zeromq出现各种断言或段错误的问题

正如文档所说,zmq套接字不是线程安全的。应用程序端上的锁是不够的。每个套接字必须从一个线程创建、使用和关闭。那么如果实现每个套接字必须从一个线程创建、使用和关闭呢?答案是使用inproc传输在线程之间通信。例如,请参见actor模式:https://github.com/zeromq/czmq#czmq-actors 和guide: http://zguide.zeromq.org/下面列...

2019-04-19 11:24:35 1938

原创 shell 获取文件夹中所有文件(不包含子目录)的md5信息并写入到文件中

md5.shdeclare -r dir="$1"declare -r md5txt="${dir}"/md5txtfor file_name in ${dir}/*do md5=`md5sum $file_name | cut -d ' ' -f1` txt="\"${file_name}\":${md5}" echo ${txt} >> md5txt...

2019-04-19 10:53:47 1972 1

原创 python 批量获取目录下所有的文件的md5信息并写入到文件中

md5.pyimport hashlib import osimport ioimport sys def printUsage(): print ('''Usage: [python] pymd5sum.py ''')def geneMd5(filename): m = hashlib.md5() file = io.FileIO(filename,'r')...

2019-04-19 10:46:32 3031

原创 ffmpeg 把视频解码成jpg

这是一个h264视频解码的小demo,先把h264转成yuv,然后再把yuv转成jpg#include &lt;iostream&gt;int Frame2JPG(AVPacket packet, AVFrame* pFrame, unsigned int stream_index, int width, int height){ // 输出文件路径 ...

2018-10-24 17:47:40 1044

转载 ZMQ 第四章 可靠的请求-应答模式

感谢原创作者的分享!# ZMQ&amp;amp;amp;amp;amp;nbsp;第四章 可靠的请求-应答模式第三章中我们使用实例介绍了高级请求-应答模式,本章我们会讲述请求-应答模式的可靠性问题,并使用ZMQ提供的套接字类型组建起可靠的请求-应答消息系统。本章将介绍的内容有:* 客户端请求-应答* 最近最少使用队列* 心跳机制* 面向服务的队列*...

2018-09-29 10:54:30 922

转载 视频流GPU解码在ffempg的实现(二)-GPU解码器

1.gpu解码器的基本调用流程要做视频流解码,必须要了解cuda自身的解码流,因为二者是一样的底层实现,不一样的上层调用那cuda的解码流程是如何的呢在 https://developer.nvidia.com/nvidia-video-codec-sdk 下载 Video_Codec_SDK_8.0.14解压开来在sampls里面有几个针对不同场景应用的小例子,如果不知道自...

2018-09-26 12:14:38 1677

原创 npm更新和nodejs更新

更新已经安装的npm库:npm update -g更新Nodejs自身:npm install -g n n latest

2018-09-14 11:07:54 9352

原创 ubuntu命令安装nodejs8.x或nodejs9.x

安装nodejs 8.x版本:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -sudo apt-get install -y nodejs如果安装nodejs 9.x版本:curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -su...

2018-09-14 11:00:59 2059

转载 Ubuntu 编译ffmpeg 实现GPU 转码

前言,公司转码集群服务器资源有限,需要考虑GPU方案,本文记录下整个实现ffmpeg gpu 转码的过程。 该文章后续仍在不断的更新修改中, 请移步到原文地址http://dmwan.cc环境:DISTRIB_ID=UbuntuDISTRIB_RELEASE=16.04DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"注意,这里机器启动级...

2018-09-12 15:45:27 2505

原创 opencv 读取文件目录下所有的图片并给图片画框

最近在做ffmpeg推流gpu性能测试,需求是先将视频转换成图片保存,标记图片后再转成视频流。这是一个小demo实现用opencv 读取文件目录下所有的图片并给图片画框。#include &lt;iostream&gt;#include &lt;string&gt;#include &lt;vector&gt;#include "opencv2/opencv.hpp"int main...

2018-09-12 15:40:23 2140

转载 Ubuntu安装钉钉

转自https://blog.csdn.net/gozs_cs_dn/article/details/80230935

2018-08-15 10:38:49 6809

原创 git 命令日常使用大合集

git命令大合集 git init repo #初始化一个叫repo的本地git仓库 #实际上就是创建一个repo的目录,然后目录下放一个.git,.git包含了git的所有记录,判断一个目录是否为git仓库,就看有没有.git目录,有.git目录往下都属于同一个git仓库 #如果你把.git这个目录删除了,你的代码虽然还在,但是你的历史变更记录就全部没有了,所以一般别动这个....

2018-07-20 17:44:36 161

原创 Linux获取系统当前时间

#include &lt;time.h&gt;void get_time(){ timespec time; clock_gettime(CLOCK_REALTIME, &amp;time); //获取相对于1970到现在的秒数 tm nowTime; localtime_r(&amp;time.tv_sec, &amp;nowTime); char ...

2018-07-12 17:09:17 1714 1

原创 linux C++ 使用openssl rsa算法实现对计算机物理地址进行签名和认证

首先需要使用openssl生成公钥和私钥,然后对字符串进行签名和认证. license.h#pragma once#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;#include &amp;lt;fstream&amp;gt;#include &amp;lt;cstdlib&amp;gt;#include &amp;lt;cstring&am

2018-07-11 15:35:56 656

原创 md5的C++语言实现

#include "iostream" #include "string" #include "math.h" using namespace std; typedef char byte; //初始化四个数 long A=0X67452301l; long B=0XEFCDAB89l; l...

2018-07-11 14:20:58 198

原创 Linux下C基于openssl生成MD5的函数

实现Linux下c字符串生成md5 #include "stdio.h"#include &lt;string.h&gt;#include &lt;stdlib.h&gt;#include &lt;openssl/md5.h&gt;int get_md5( char *input, char *output){ char password[1024*1024*5]=...

2018-07-11 14:17:50 648

转载 Linux下C语言获取所有网卡信息的代码

#include &lt;iostream&gt;#include &lt;sys/ioctl.h&gt;#include &lt;net/if.h&gt;#include &lt;unistd.h&gt;#include &lt;netinet/in.h&gt;#include &lt;string.h&gt;int main(){ struct ifreq ifr; ...

2018-07-11 11:13:27 1776

原创 google tcmalloc 内存池(不定长内存池)使用

一.安装 tcmalloc (google-perftools) 是用于优化C++写的多线程应用 tcmalloc在gperftools之中,故想要使用tcmalloc,就得先安装gperftools。在linux下,其安装步骤如下:1 tar xzvf gperftools-2.7.tar.gz 2 cd gperftools-2.7 3 ./configure –enable-fr...

2018-07-05 14:28:14 2706

原创 基于C++的内存池

MemoryPool.h#pragma once#include&amp;lt;iostream&amp;gt;#include&amp;lt;vector&amp;gt;#include&amp;lt;string&amp;gt;using namespace std;template&amp;lt;class T&amp;gt;class ObjectPool //对象池{ struct BlockNo

2018-06-27 10:34:37 539

原创 zmq 代理模式异步代码(czmq)

最近在做服务器,发现zmq的同步收发不是很适合项目需求,这里有一套异步模式的zmq demo分享给大家,仅供参考. 我这里使用的是 代理模式, 1.client 代码 这里使用的.hpp的zmq,发现并不好,建议使用.h的zmq.#include &lt;zmq.hpp&gt;#include &lt;iostream&gt;#include &lt;string&gt;#inclu...

2018-06-22 16:56:30 4477

SourceInsight 4.0 主题

SourceInsight 4.0 主题

2022-09-19

faiss搜索代码

最近人脸识别, 使用faiss 搜索代替原来的redis,这个demo是关于faiss库的相关操作

2018-09-26

ffmpeg视频解码成YUV,JPG

最近在做视频解码,把视频文件或者视频流解码成YUV文件,再把YUV编码成jpg文件,然后对jpg文件进行一些处理,这是一个小demo

2018-09-26

空空如也

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

TA关注的人

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