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

原创 ffmpeg windows编译及调试完整版

mv /usr/bin/cmake.exe /usr/bin/ccmake.exe #不能使用msys2中的cmake要使用msvc中的cmake,默认可能是/usr/bin/cmake,改个名就默认编程vs2019的cmake了。D:\msys64\home\admin\ffmpeg-4.3.6\中搜索*.pdb全部拷贝到D:\ffmpeg-lesson\bin\x86中。属性-》常规-》输出目录-》..\..\bin\x86 指定可执行文件目录,此目录之前已经放置好所有的dll运行依赖库。

2023-06-26 22:17:17 1647

原创 使用模板方法模式封装协议消息

模板方法模式是设计模式中比较常用的一种,此模式就是提供了一个很好的代码复用平台,意在将不变的行为放到基类,去除子类中的重复代码。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现,模板方法模式把这些行为搬移到单一的地方,这样就可以帮助子类拜托重复不变的行为的纠缠。由于类图太简单,就不单独画出,就一个基类和n个派生类,main函数中多态起对象(类似简单工厂模式),通过基类对象调用基类的固定方法,通过基类的固定方法调用虚函数实现多态的效果。

2023-06-06 21:58:12 539

原创 收集一些c/c++技术

下面是整理的一些c/c++方面的相关代码demo,后续将持续更新下去。这是单独稍微大一些的项目地址(给出博客地址,博客中附带项目github地址):https://blog.csdn.net/flayhighergt/article/category/8405197标题:扫雷小游戏 epoll聊天室 Qt+ffmpeg+sdl简单播放器下面是一整个项目地址(直接给出github地...

2023-06-06 09:57:29 568

转载 C/C++库文件全了解(包含静态库、动态库,包含windows、linux,包含dll、lib、so)

是不是老是在编译的过程出现各种奇奇怪怪的错误,对于出现的错误完全看不懂 在说点啥,只会复制黏贴到百度一通瞎搜索?是不是对于一些库文件.dll,.so,.lib完全不知道是个啥,完全不知道怎么使用他们?这是因为我们对一个C/C++程序的编译过程不够了解。关于编译过程的概念我放到了我的思维导图,链接,这里不再赘述。本文旨在带你了解库文件的编译生成和调用。

2023-05-31 21:23:48 897

转载 VMWare虚拟机网络通信原理

VMWare虚拟机网络通信原理简化版

2023-04-17 14:08:51 816 1

原创 通过openssl库计算字符串或文件sha256

通过openssl库计算字符串或文件sha256

2022-08-16 21:48:16 1556

原创 通过socket+mmap以及环形缓存buf实现内存共享通信

通过socket+mmap以及环形缓存buf实现内存共享通信

2022-08-10 22:22:17 1402

原创 ffpmeg将网络h264或h265流录制成mp4 mkv avi文件

场景在流媒体服务器中,有一个数据流向是传感器采集原始图像(yuv等数据),之后经过服务器编码出标准的h264或者h265的裸流,需求就是将这些裸流录制成视频存储。此处默认数据输入端函数为:DataInput(FRAME_INFO *info, unsigned char *pData, int dwDataLen)此函数会一直被调用,pData为h264或者h265的某一帧数据,包括一些SPS PPS I P B帧等(如果对h264和h265格式不是很理解的同学可以先去学一下,...

2022-05-15 17:24:48 5702 2

原创 golang配置yaml配置文件示例

配置文件config.ymal:common: mcc: 10 #默认值:3;连接数限制 hb_timeout: 10 #心跳超时 默认值 10http_api: listen: ':6300' #https cert_key: '/etc/desktop-gateway/cert/verycloud.key' cert_crt: '/etc/desktop-gateway/cert/verycloud.crt'http_proxy: listen: '6301' .

2021-11-11 20:06:50 1885 2

原创 golang代理websocket请求

基础:golang websocket github地址:https://github.com/gorilla/websocket/github库官方文档:https://godoc.org/github.com/gorilla/websocketgolang websocket运行机制以及原理:https://www.jianshu.com/p/65ef71ddb910golang websocket在线测试地址:http://www.websocket-test.com/

2020-10-23 15:41:52 4199 2

原创 golang实现http(s)代理

简单原理:最近需要用golang去实现一个http(s)的代理,简单的解释一下,实现过程就是首先启动一个http(s)的服务,这个很简单,demo一大堆,我就不多说了,接下来要实现代理,很简单的原理就是,通过你实现的http(s)服务接收到来自客户的请求,收到之后通过http.NewRequest建立一次新的请求,当然需要你在配置文件中写明确需要代理到的目标地址和端口,建立新请求到目标地址之后将目标地址返回的数据原封不动的返回给原来的客户端。注意点:1、客户端请求的所有头信息,都要原封不动的写入

2020-10-23 15:39:56 2499 6

原创 学会使用go mod引用依赖包

先使用module//linux export GO111MODULE=on//windowsset GO111MODULE=on初始化项目之后会出现一个go.mod和go.sumgo mod init <project name>设置环境变量GOPROXY的值为 https://goproxy.io 或https://athens.azurefd.net或https://mirrors.aliyun.com/goproxy/, 至于使用哪个自己PING一下...

2020-10-20 16:23:13 672

原创 c/c++密码存储加密例子

在编写各种客户端的过程中需要在配置文件中存储密码,但是密码肯定需要加密,当读取配置文件密码时又需要解密,下面代码就通过openssl库在linux下实现了这两个加解密的功能。之前是使用《c语言通过openssl aes对称加解密和base64编解码将密码存储成密文》https://blog.csdn.net/FlayHigherGT/article/details/84636086这篇文章来实现的,后来发现这个加解密过程对于有些字符串来说有问题,会导致加解密之后出来的字符串和原字符串不一样,很有

2020-09-18 10:33:08 1420

原创 nginx发布npm run build之后的dist文件夹

简要说明:在学习vue+gin的时候,需要将前端通过nginx发布,debug的时候是用npm run serve来测试的,在mac或windows上直接打开浏览器,但是在真正的服务器上你就必需要使用nginx来发布了。nginx简介:nginx怎么安装我就不多说了简单点apt或者dnf就行,systemctl restart nginx重启;nginx -s reload重载配置文件等这些简单的买命令网上可以直接找到。配置文件一般存储在/etc/nginx/nginx.conf这是默认配.

2020-08-19 17:23:01 1580

原创 windows c获取文件md5值确定是否改变

功能说明在windows下做一些小工具的时候,希望做到根据配置文件来对pc做一些配置下发的操作(例如改主机名改网络等),这就需要做到每个一段时间检测配置文件,并执行相应配置,但是当我们配置文件没有修改时,就不需要做配置了,因此需要对配置文件进行md5检测判断文件是否有改变获取md5值此处是获取文件的md5值,文件名在new类的时候传入BYTE* VeryAgent::getMd5(){ HANDLE hFile = CreateFile(mIniConfigPath, GE

2020-07-31 14:18:11 517

原创 mysql select查询语句大全

1、建表学生表student学号,姓名,性别,出生,所在班级create table student( sno varchar(20) primary key, sname varchar(20) not null, ssex varchar(10) not null, sbirthday datetime, sclass varchar(20));教师表teacher教师编号,教师名字,教师性别,出生,职称,所在部门cr...

2020-06-03 08:40:07 2997

原创 log4c demo学习

今天给大家分享log4c的一个demo。

2020-05-11 17:01:38 468

原创 webkit2gtk3实现跳过网页https认证(显示白屏)

1、https跳过ca认证 通过webkit2gtk3实现网页之后遇到一个问题,就是在显示https网页的时候由于ca证书的问题,在正常浏览器上会提示非安全的网站,然后仍然打开就ok了,但是在webkit2gtk3网页上去始终出现白屏的情况,找了半天终于找到了忽略ca错误的接口,在load url之前写:webkit_web_context_set_tls...

2020-04-14 10:24:05 1075

原创 Qt webengine 显示web页面、前后端通信以及下载详解

Qt webengine

2020-03-06 16:35:54 6886

原创 gtk界面学习——显示中文提示框

gtk界面中会遇到dialog中文化的需求(自带的窗口是英文的),给大家带上中文接口,省的大家去查资料了~#include <gtk/gtk.h>void button_clicked1(GtkWidget *button, gpointer data) { GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(...

2020-03-06 11:05:31 1049

原创 c语言异步回调函数的使用

后续更新

2020-02-12 20:53:54 2881

原创 c/c++中的一些回调函数(callback)的理解

回调函数分为异步回调和同步回调两种,我们一般来说用的都是用异步的回调,使用我们下面强调一下异步的!异步: 异步回调函数——最核心的作用可以用一个生活中网购的例子来说明: 比如我在网上买了一样东西,就像程序中执行了一个任务(多用于线程中),但是我有不知道这个任务什么时候执行完成,如果我不用回调函数,那么我需要一直去等待,或者说定时去询问这个任务......

2020-02-12 20:49:02 794

原创 golang服务端解析客户端发来的post数据

golang服务端解析客户端发来的post数据

2019-10-31 10:29:07 1603

原创 关于gdk_threads_add_idle函数的线程安全问题解释

在《对于gtk多线程编程的一些思考以及实践归纳系列(1)》https://blog.csdn.net/FlayHigherGT/article/details/84932747中提到gdk_threads_add_idle函数的线程安全问题,当时测试情况是错误的。我们在主线程中循环将一个全局变量g_num从0++一万次,之后在副线程中采用gdk_threads_add_idle函数将相同的......

2019-07-26 12:36:25 984

原创 spice-gtk如何实现断网提醒

spice-gtk现状使用过spice-gtk进行远程连接虚拟机的朋友应该都知道,正在连接虚拟机的过程中,如果网络断开,虚拟机窗口界面就会卡死,也不会给出任何提示信息,那么下面我们来实现spice-gtk网络超时后自动退出。设置socket超时关闭选项首先找到spice-channel.c这个是spice-gtk的核心网络层,找到setsockopt函数所在位置加入: int...

2019-05-17 14:13:02 1393 1

原创 gtk entry实现明密文切换

实现明密文切换代码如下,注释清晰,编译方式:gcc test.c `pkg-config --cflags --libs gtk+-3.0`唯一需要注意的地方可能大家没有16x16的png图标,想办法自己p两张吧~~#include <gtk/gtk.h> static void cb_entry_icon_press(GtkWidget *entry){ ...

2019-05-17 11:06:12 618

原创 spice-gtk之usb相关代码(2)

回顾在上一篇关于usb的代码分析https://blog.csdn.net/FlayHigherGT/article/details/85261810中,我们聊到了一些关于usb插入拔出之后spicy回应的某些回调函数,也聊到了如何实现连接虚拟机时自动重定向已经插着的usb,但是经过最近的研究,发现这个功能其实是在spicy里面是有功能实现的,下面细说。spicy两个功能参数1、spi...

2019-05-15 21:22:31 796

原创 libusb接口输出usb设备信息

//gcc test-libusb2.c `pkg-config --cflags --libs libusb-1.0`#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <string.h> #include <lib...

2019-05-15 21:21:43 2590

原创 对于gtk多线程编程的一些思考以及实践归纳系列(2)

上一篇提到了一个问题,如何在gtk界面保持友好的情况下(不会卡界面),执行来自于功能上的各种任务(耗时间)呢?在此,我们对于这个问题作出分析。第一种任务:多个连续不断的任务其实,这里面很关键的一个问题就是,我们执行的任务是什么样的任务!!记得上篇文章https://blog.csdn.net/FlayHigherGT/article/details/84932747我们提到的任务其实是一个......

2019-04-14 17:17:31 784

转载 libusb接口说明

1 libusb_init函数原型:int libusb_init(libusb_context **ctx);功能说明:该函数进行libusb的初始化,必须最先调用。参数说明:ctx通常设置NULL返回值:0成功,非0 失败2 libusb_exit函数原型:void libusb_exit(libusb_context *ctx);功能说明:和libusb_init成对使用...

2019-04-14 15:59:15 3343

转载 c++设计模式大全

1、工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式。  1)、简单工厂模式:主要特点是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类。typedef enum{ T80 = 1, T99}TankType;class Tank{public: virtual void message() = 0;};class Ta...

2019-03-14 09:58:49 1484

原创 mac ssh解决自动断开以及sublime text 设置sftp远程开发

开发场景:最近公司由于各种原因需要在公司用mac笔记本进行开发,但是很难受,在mac下我找不到什么很好使的ssh客户端,而我需要在mac下编码并传输到linux服务器上进行编译。最后选择sublime text + sftp进行远程开发。mac ssh解决自动断开:首先我说一下mac下的shell终端其实还是很好用的,只不过在用终端连接ssh的时候每次无操作时间久了他就会断开,而且断开...

2019-03-09 10:37:26 1118 6

原创 简单工厂+策略模式实现简易计算器

主函数之内也即客户端界面程序(此处未实现界面)只使用了context一个类实现了封装#include "operationFactory.h"int main(int argc, char *argv[]){ //主函数之内也即客户端界面程序(此处未实现界面)只使用了context一个类实现了封装 OperationFactoryContext *context =...

2019-03-06 10:58:44 896

转载 开源C/C++网络库比较:ACE、livevent和Boost

在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO。ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层来进行使用。支持跨平台。Boost的ASIO是一个异步IO库,封装了对So...

2019-02-28 09:28:51 679

转载 值得学习的C++项目开源

值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz2...

2019-02-27 09:24:46 706

原创 spice-server-0.14.0视频传输函数调用过程

下面是spice-server-0.14.0开启之后初始化视频编码器并进行编码选择,之后传输图片至客户端spice-gtk的函数调用过程:从reds.c开始:spice_server_new 注:每一个虚拟机都有一个spice_server_newspice_server_init 1、do_spice_init 1、main_channel_new i...

2019-01-23 16:57:25 2644 1

原创 ffmpeg之ffplay音视频同步原理

首先看一些碎知识点pts和dts: pts是录制时产生的时间戳,即显示时间戳,表示这帧数据啥时候播放 dts解码时间戳,音视频同步时一般来说不用关注音视频同步三种方法:1、以音频为基准 视频慢了加快或者丢帧 快了则放慢播放 音频丢帧时ffplay会丢视频帧2、以视频为基准 音频慢了加快或者丢帧 快了则放...

2019-01-11 11:33:48 882 2

原创 spice-server以及spice-gtk非视频状态下传输流量分析研究

服务端编码:目前的spice图像压缩主要采用了quic,glz和jpeg。quic和glz是无损压缩算法,quic主要用于照片,glz用于人工图像,jpeg也主要用于照片压缩但是是有损的。jpeg能节省50%的带宽,glz只能节省20%,但是jpeg会带来更大的开销,所以不能都使用jpeg进行压缩。考虑降低流量,首先尽可能选用jpeg方式进行图像压缩进行测试,red-worker里面其...

2019-01-04 15:41:51 2055 9

原创 ffmpeg视频解码相关接口以及播放视频流程解析

相关函数流程获取音视频具体信息:1、avformat_alloc_context(); 负责申请一个AVFormatContext结构的内存,并进行简单初始化2、avformat_open_input(); 打开输入视频文件3、avformat_find_stream_info(); 获取视频文件信息,这边找到的信息传输到AVStream里面去4、av_read_frame()...

2019-01-03 13:24:00 794 1

转载 结构体里面的函数指针怎么初始化

/** * 为结构体中的指针数组赋值 */ #include &lt;stdio.h&gt; typedef struct test{ void (*p)(void); void (*q)(void); void (*y)(void);}test; void f1(void){ printf("f1\n");} void f2(voi...

2018-12-27 14:49:48 1343

扫雷-Qt项目

Qt实现的扫雷小游戏,基于QGraphicsScene类和QGraphicsPixmapItem类,自己实现扩散算法。

2018-08-21

空空如也

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

TA关注的人

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