自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

心清的专栏

C/C++、linux系统编程、matlab,关注机器学习,数据挖掘等领域

  • 博客(91)
  • 资源 (7)
  • 收藏
  • 关注

原创 SDL编程:开篇

1.从sdl官网下载源码(sdl版本2)2.用户cmake生成visual studio项目文件,这里生成win32项目文件,使用 vs2019cmake -G "Visual Studio 16 2019" -A Win32 ..3.编译生成的项目,生成.lib以及相关dll4.写一个demo测试代码#include <iostream>#include <SDL.h>#include <SDL_render.h>#undef ...

2024-09-14 11:00:34 212

原创 ffmpeg硬件解码一般流程

【代码】ffmpeg硬件解码一般流程。

2024-09-14 10:41:02 720

原创 linux编译ffmpeg(用于android平台)

有时候,虽然成功编译出库文件,但还编译出来的库文件可能不是我们希望的。因为我们希望编译出来的是armv8-a 64位的库。可以通过如下命令验证编译出来的库。这里的llvm-objdump是在android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin目录下。解压ffmpeg-4.2.1,然后将fdk-aac、x264、mp3这三个第三方库解压到ffmpeg-4.2.1目录中。编译过程中会出错,将出错的源代码的相应位置注释后再次编译。

2023-03-31 15:24:42 1864 1

原创 C++内存检查(内存泄漏)的艺术

编译时添加-fsanitize=address选项,这样,程序在运行过程中,如果内存的使用有问题,会有相应的输出提示。3. 根据内存分配的次数而中断,函数:_CrtSetBreakAlloc(_In_ long _NewValue);2. 显示内存泄漏的报告,函数:_CrtDumpMemoryLeaks();4. 检测堆栈上每一块内存的完整性,函数:_CrtCheckMemory()5. VC运行时库还提供了其他调试有关的函数,这些函数大多以_Crt开头。如果valgrind工具并没有安装,你需要先安装。

2023-03-23 17:06:24 587

原创 计算机中的大端与小端

而最高位地址保存的是我们数据的最高位,最低位地址保存的是数据的高低位,即0x000000E3F1FAFC27保存了数据的高位00,而0x000000E3F1FAFC24保存了数据的低位10。首先,我们说一个int中的高16位与低16位是对人类而言的,如对一个整数b = 0x 12 34 56 78,12 34就是高16位,56 78就是低16位。对小端而言,取高16位就是进行右移16位的运算,即 b >> 16,取低16位就是左移16位,即b

2023-03-22 12:45:13 1217

原创 srs webrtc服务p2p案例信令分析

srs服务器webrtc信令介绍

2022-11-13 00:21:03 1962

原创 centos gcc版本升级

最后将scl enable devtoolset-9 bash添加到/etc/profile中,这样,每一个新的会话都会默认使用新版本的gcc了

2022-04-06 17:13:07 989

原创 linux开启coredump的问题

以下说明在低版本的linux中可能并一定适用。1. 编辑文件 /etc/systemd/system.conf#DefaultLimitSTACK=DefaultLimitCORE=infinity#DefaultLimitRSS=#DefaultLimitNOFILE=1024:524288设置DefaultLimitCORE=infinity2. 使配置第一次systemctl daemon-reexec3. 设置ulimitulimit -c unlimite

2022-03-08 15:05:42 1032

原创 redis c++客户端

一个易于使用的redis c++客户端,没有第三方依赖。

2022-02-21 18:30:27 2266

原创 Raft共识算法学习笔记

0.论文链接:raft1. 三个角色:Follower、Candidate、Leader2. 在等待投票(选举)阶段,此时角色为Candidate,如果有一个Candidate声称其为Leader,如果该Candidate的term大于等于自身的term,那么就认为该Candidate是一个合法的Leader,自身转为Follower状态。3. 当多个Follower同时变为Candidate时,可能一直无法选出Leader。通过使用'随机选举超时'机制来保证多个Follower不会同一时刻成.

2022-02-09 17:40:12 4178

原创 redis学习笔记

1. AOF发生在(redis读写)主线程中,所以必须谨慎选择模式(Always、Everysec 和 No)2. AOF重写是通过fork子进程进行的,AOF重写过程中,linux中的huge page机制可能会对redis产生重大的性能影响,所以建议关闭。...

2022-02-07 16:05:01 784

原创 cmake生成protocol buffer工程

找到CMakeLists.txt所有文件夹,新建build文件夹,进入build文件夹,在该文件夹下运行命令:cmake -Dprotobuf_BUILD_TESTS=OFF -G "Visual Studio 14 2015" ..

2021-05-18 11:33:43 271

原创 编程心得与经验记录

查看堆栈及其占用CPU:perf top -g -p 37808 查看线程:pstree -p 14242

2021-05-14 16:11:19 119

原创 QWebEngineView总结

错误一:sqlite_persistent_cookie_store.cc(847)] Cookie database is too new.解决方法:找到相应的历史文件,并删除,历史文件目录一般在:C:\Users\windows用户名\AppData\Local\程序名\下面错误二:当加载网页出现空白页时,可能是因为没有注明协议导致的,请明确加上http://或者https://错误三:其他崩溃时,可能是没有拷贝相应的文件到执行目录导致的,如QtWebEngineProcessd.exe及.

2021-04-29 16:42:06 657

原创 搭建http报文观察系统

使用Qt编写一个widget程序,监听特定的端口,将客户端发送过来的数据打印出来,并发送一个简单的http回复。界面如下图所示:在浏览器通过127.0.0.1:6091来访问我们的服务器端。这样,我们就能观察到浏览器发送到服务器的请求了。qt代码如下:widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>class QTextBrowser;class QLineEdit;class QPushButton;

2020-11-18 11:14:48 217

原创 windows编译和安装openssl

1.到github上下载openssl。在github上找到openssl的官方库,下载相应的tag版本。笔者这里下载的是openssl1_1_12.下载并安装perl以及nasm,下载地址:ffmpeg.club/openssl_download.html(在这里下载perl,如果在官网下载其他版本的perl,可能后面的步骤会出错,笔者用的是:ActivePerl-5.24.3.2404-MSWin32-x64-404865.exe) https://www.nasm.us/pub/na..

2020-11-09 11:10:00 3428 1

原创 centos安装mysql客户端

该文章只作为一个笔记,其他人阅读可能没什么价值mysql客户端安装yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql

2020-08-05 17:47:51 748

原创 QT使用注意事项

1. 当涉及QT库相关时,尤其是要使用QT的plugins功能时,要注意运行程序的目录是否包含相关的DLL文件。可以通过QCoreApplication::addLibraryPath("./");来增加程序的库查找目录,特别是当使用QT和VS进行开发时,要注意设置VS的工作目录(或者调试目录)以正确加载相应的DLL文件,这点尤其要注意,否则你的程序很可能工作不正常。...

2020-03-11 10:34:46 682

原创 redis集群模式启动

最低集群配置官方的最低集群配置是3个master和3个slave,一个master对应一个slave。6个redis的配置分别如下#redis1.confport 7000cluster-enabled yescluster-config-file nodes1-1.confcluster-node-timeout 5000appendonly yesdaemonize yes...

2020-03-05 14:45:42 2653

翻译 C++结合lua:LuaBridge让这一切变得更简单(包括变量和函数)

为什么使用Lua?C++和脚本结合使用是非常好的实践,这种用法提供了非常大的灵活度和自由空间。脚本文件能够作配置文件和编写复杂的函数。更重要的一点是,修改脚本文件后无需重新编译,它能够帮助你集中精力和避免精力分散。你甚至可以设计这样的一个系统,在不修改源码的情况下,其他人根本不知道怎么去添加一个新的脚本或者修改现有对象的功能。如果你想知道更多Lua为什么这么棒的原因,可以去阅读这篇文章:《...

2019-12-04 13:29:46 6522 5

转载 C++ 程序嵌 Lua(基于 LuaBridge)

配置文件搞不定的,就得依赖脚本。C++ 程序想嵌点脚本,Lua几乎是首选。Lua 的源码自带Makefile,可以编译出静态库、解释器、编译器三个目标文件,作为宿主的 C++ 程序,除了要包含 Lua 头文件,还应该链接这个静态库。如果 C++ 程序是由CMake来构建的,那么用 CMake 为 Lua 创建一个静态库,也不是什么难事。CMake 很好的解决了跨平台的问题。其实...

2019-12-04 10:53:04 1004 1

原创 QT 自定义控件设置样式无效的办法

问题:QT自定义控件,控件继承自widget,其间有用到布局进行控制,然后调用自定义控件的setStyleSheet方法设置样子,伪代码如下:class MyWidget : public QWidget {......};MyWidget mw;mw.setStyleSheet(QString("QWidget{background-color:gray;}"));...

2019-11-07 14:23:01 2906 2

原创 boost.asio同步TCP客户端封装

头文件#pragma once#ifndef TCP_CLIENT_H#define TCP_CLIENT_H#include <boost/asio.hpp>#include <string>using namespace boost;class TcpClient{public: TcpClient(const std::string&am...

2019-10-29 09:57:31 884

原创 大数加法算法笔记

使用C++实现,代码有注释。实现思路:1. 将加法分解成三个小问题: a. 两个都是正整数 b. 两个都是负整数 c. 一个正数,一个负数2. 两个正整数相加算法: a. 主加循环:倒序遍历。两个整数按照最低位对齐,从最低位开始相加,每次相加时记录是否有进位,有进位时设置extra = 1,同时将相加的结果减10,无进位是设置extra = 0,相加的结...

2019-08-21 22:59:47 656

原创 一个总体复杂度为O(n)的插入排序算法

下面的代码可以方便地根据所排序对象的ID查找对象的排名,且总体复杂度为O(n),使用的是插入排序思想,下面是lua代码:local playerList = {} -- {dbid=1,name="fdf",score=999,rank=8}local playerRanks = {} -- 已经排序列表function printt(obj) for key, val in pai...

2019-08-13 21:14:28 326

原创 linux下安装完mysql后修改root密码

1.首先安装mysqlsudo apt-get install mysql-server2.进入mysqlsudo mysql -uroot -p由于没有密码,直接按回车就可以了。3.设置密码CREATE USER 'root'@'%' IDENTIFIED BY 'root';UPDATE mysql.user SET authentication_string...

2019-07-02 16:54:20 1772

原创 skynet笔记(1):安装运行skynet

第一步:安装必要的运行库sudo apt-get install make autoconf build-essential libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip libreadline-dev第二步:下载skynet源代码git clonehttps://github.com/cloudwu/skyne...

2019-06-18 20:39:03 1049

原创 lua与C交互(7):C函数管理

(1)将要调用的函数封装成一个模块例如我们要用C封装一个数学模块给lua调用,lua中调用的代码为sum = mymath.add(1, 3)sub = mymath.sub(4, 2)print(sum, sub)CC代码为:#include <stdio.h>#include <stdlib.h>#include <string.h&g...

2019-06-12 14:38:10 393

原创 lua与C交互(6):lua调用C函数

lua要调用的C函数有一个一致的签名:typedef int (*lua_CFunction) (lua_State *L);函数的返回值表示函数的返回值个数,lua与C通过lua虚拟机中的栈来传递参数和返回参数。即C中的函数应该定义为:int testfunc(lua_State* L){ printf("testfunc from C"); return 0;}...

2019-06-12 13:27:10 617

原创 lua与C交互(5):lua调用C变量

lua代码:print("print from demo lua.")-- 访问全局变量print("name", name)print("age", age)print("no", no)print("room", room)-- 访问全局表print("t.len", t.len)print("t.rock", t.rock)print("b.beauty", b....

2019-06-12 10:27:56 1217

原创 lua与C交互(4):C调用lua函数

C调用lua中的函数有几种情况:(1)lua函数无参数无返回(2)lua函数有参数无返回(3)lua函数有参数有返回(包含返回多个参数)(4)lua函数在lua表中C中调用lua函数有一个主要的宏:lua_pcall(L,n,r,f),n为lua函数的参数个数,r为lua函数的返回值个数,f暂时不用理会。完整的代码如下:lua代码:print("print f...

2019-06-11 23:12:22 1212

原创 lua与C交互(3):与lua表的简单交互

C读取lua表中字段的值。lua代码:print("print from test lua.")name = "linxing"age = 19list = {}list.width = 190list.height = 540list.title = "rectangle"CC代码:#include <stdio.h>#include <st...

2019-06-11 22:45:13 395

原创 lua与C交互(2):获取lua文件中全局变量的值

cc代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include "lua.hpp"#include "lauxlib.h"#include "lualib.h"static void stackDump(lua_S...

2019-06-11 22:14:50 1257

原创 lua与C交互(1):简单栈操作

下面的代码是用来打印lua栈数据的简单版本:#include <stdio.h>#include <stdlib.h>#include <string.h>#include "lua.hpp"#include "lauxlib.h"#include "lualib.h"static void stackDump(lua_State* L)...

2019-06-11 15:03:19 446

原创 libuv异步任务

libuv有一个异步机制,你可以将要执行的任务放到一个线程池里执行,从而使得主线程能够执行其他任务而不受阻塞。将一个任务提交到线程池里的接口为:int uv_queue_work(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb, uv_after_work_cb after_work_cb)接口的参数简单明了,其中值得注意的是u...

2019-06-09 22:46:33 1305

原创 libuv定时器

头文件:#ifndef __MY_TIMER_LIST_H__#define __MY_TIMER_LIST_H__struct timer;struct timer*schedule(void(*on_timer)(void* udata), void* udata, int after_msec, int repeat_count);vo...

2019-06-09 21:58:01 748

原创 libuv客户端

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <uv.h>#pragma comment (lib, "ws2_32.lib")#pragma comment (lib, "Iphlpapi.lib")#pragma comment (lib, "Ps...

2019-06-09 12:52:43 1752

原创 libuv服务器代码

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <uv.h>#pragma comment (lib, "ws2_32.lib")#pragma comment (lib, "Iphlpapi.lib")#pragma comment (lib, "P...

2019-06-09 12:50:45 900

原创 笔记——不定参模板调用特定参数个数的函数

这是本人学习的一个笔记,不解析,直接贴代码:#include &lt;iostream&gt;#include &lt;cassert&gt;using namespace std;void myprint(int a){ cout &lt;&lt; "1==&gt;" &lt;&lt; a &lt;&lt; endl;}void myprint(int a, int ..

2019-02-14 17:40:38 405

原创 IP/TCP回顾

1. 当IP层进行分片时,任何运输层首部只出现在第一片数据中。

2017-07-25 16:10:53 356

http服务器_by_qt

Qt编写的http服务器,用于观察浏览器发过来的http请求。Qt编写的http服务器,用于观察浏览器发过来的http请求。Qt编写的http服务器,用于观察浏览器发过来的http请求。

2020-11-18

Boost.Asio

PDF版本的Boost.Asio使用教程。从官方网站上转换成了PDF格式,便于阅读

2019-03-28

QmlBook-In-Chinese &amp; QmlBook-In-English

一本描述QML语法与使用QML进行应用程序编程的书籍,压缩文档包含了中文版和英文版。

2015-12-02

设计模式:基于C#的工程化实现及扩展

设计模式:基于C#的工程化实现及扩展

2013-11-25

php5.5中文用户手册

2013年11出的用户手册,对于新手来说在这下载明显比其他地方好。

2013-11-07

用MATLAB实现灰色预测GM11模型

用MATLAB实现灰色预测GM11模型,详细讲解了用MATLAB做灰色预测GM11模型的步骤。

2013-07-22

空空如也

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

TA关注的人

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