- 博客(110)
- 资源 (13)
- 收藏
- 关注
原创 对命令模式的理解
命令模式更合适的理解是安排就职模式:图中通过setPersion将人员(命令,也是具体的干活儿对象)安排到岗位,假设我们有很多人(命令队列)在白板这里,我们把具体绘制图形的类实例封装起来(比如绘制正方形、椭圆等),通过类似setPerson的接口设置进去,然后调用excute执行具体的绘制另外,在这里可以用同样的方式设置回调...
2021-03-04 23:50:39
248
1
原创 推荐一款强大的 Android OpenGL ES 调试工具
https://developer.aliyun.com/article/781955?spm=a2c6h.12873639.0.0.38db5af3rFcDj1&groupCode=cloud
2021-02-19 16:04:59
341
原创 openssl1.1下编译libcurl解决
vtls/openssl.c:276:5: error: implicit declaration of function ‘RAND_egd’ [-Werror=implicit-function-declaration] int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?解决办法:1、确保下载并编译安装了openssl1.1;2、openssl一般安装在 /usr/local/lib64目录下,CPPFLA..
2021-02-07 15:30:12
1888
原创 C++11 条件变量及时间点的使用
#ifndef DOMAIN_H#define DOMAIN_H#include <iostream>#include <thread>#include <mutex>#include <condition_variable>#include <atomic>class DoMain{public: DoMain(); ~DoMain(); void threadTimerHandle();.
2021-01-06 09:16:12
364
转载 socket编程及Unix域内套接字实现进程间通信
socket编程 hql946233586的博客 04-16 1370 socket编程——一个简单的例子转载 2016年10月16日 00:29:26标签:socket网络编程13475转载自:网络中进程之间如何通信什么是Socketsocket一词的起源socke...
2020-12-09 21:47:49
151
原创 很多个回调函数时可采用的办法
typedef struct _CallBackFuns_{ void* f; void* user_data; }CallBackFuns; void set_callback(const std::string& tag, void* callback, void* data) { CallBackFuns fun; fun.f = callback; fun.user_data...
2020-10-24 15:50:46
369
原创 C++11的explicit关键字
C++11代码中最好带上explicit关键字,explicit关键字的作用是:C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).关键字:构造函数只有一个参数(当有多个参数时,自动会被指明,就不存在这个情况) 构造函数是显式的而不是隐式的为了防止以下情况的出现:class A{ public: ..
2020-09-19 23:50:10
268
原创 C++11的单例模式
C++11中的单例模式分为懒汉模式和饿汉模式。区别:懒汉模式:延迟创建,在主动获取对象实例的时候才去创建对象。缺点:多线程时需要安全处理。饿汉模式:程序初始化即创建饿汉模式安全写法: static Singleton* GetInstance() { if(singleton_ == nullptr) { std::lock_guard<std::mutex> lock(Singleton::m_lock); .
2020-09-19 23:31:14
665
原创 C++11 时间计算
#pragma once #include <chrono> class ElapsedTimer{public: ElapsedTimer() : m_begin(std::chrono::high_resolution_clock::now()) {} void reset() { m_begin = std::chrono::high_resolution_clock::now(); } //ns int64_t elapsed_ns() const { ret.
2020-09-18 08:33:19
403
原创 VlC转推播放的视频到虚拟摄像头
工具和方法参考: http://vlc2vcam.com/MagicCamera和vlc+两个插件原理:给MagicCamera和vlc分别添加一个插件将vlc的视频流输出到插件,MagicCamera捕捉vlc输出的视频流,并虚拟一个摄像头注意:免费版对vlc版本有要求, 最高2.0, 2.0版本是不支持rtmp的原理待补充...
2020-09-13 16:31:57
1292
原创 记一次bug
bug是这样的:两个线程访问同一个对象,类似于生产者、消费者模型消费者给出的是一个智能指针,生产者给出的是裸指针,生产出来的数据通过本地一个智能指针的cache保存在本地,以供消费者使用。开始每次生产者生产出来的数据直接构造智能指针,缓存在本地;消费者获取的时候,直接赋值给消费者,这样做的目的是:尽量减少数据的拷贝,特别是视频数据这样的,在640X480分辨率下,一切都正常。然而,当我把分辨率调节到1920X1080时,会出现崩溃,也可视频根本渲染不出来,是个白屏。后来灵机一动,如果把数据完完全
2020-07-25 23:46:30
168
原创 C++11 mutable
C++11中的mutable是用来修改const函数中的不可修改类成员这一缺陷的:class Log{public: // void print(const std::string& str) const { printf("%s", str_cstr()); //统计输出次数 printNums++; }private: //这里必须声明为mutable mutable int p
2020-06-22 07:48:08
475
原创 C++11 宽窄字符转换
//wstring 转 string typedef std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> CONVER; std::wstring str = L"中国人"; std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> converter(new std::cod...
2020-06-21 22:05:51
585
原创 工厂方法模式与抽象工厂模式记忆
工厂方法:就是一条生产线,进来什么,出去都是一样的(接口都是一样的)(一个虚基类,一个产品)抽象工厂:一个代工厂,谁来就贴谁的牌(至少两个产品-两个虚产品基类,一个虚工厂基类)...
2020-06-10 06:48:22
247
转载 live555源代码解读
live555代码解读之一:RTSP 连接的建立过程RTSPServer 类用于构建一个RTSP 服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话。首先创建RTSP 服务器( 具体实现类是DynamicRTSPServer) , 在创建过程中, 先建立Socket(ourSocket) 在TCP 的554 端口进行监听, 然后把连接处理函数句柄(RTSPServer::incomingConnectionHandler)和socket 句柄传给任务调度
2020-06-04 08:00:12
370
原创 Webrtc音频引擎(一步一步读代码)
WebRTC音频引擎的实现代码主要分布在如下几个源码目录中:webrtc/audiowebrtc/common_audiowebrtc/media/enginewebrtc/voice_engine//音频编解码webrtc/module/audio_coding//接收端混音webrtc/module/audio_conference_mixer//音频输入输出设备webrtc/module/audioDevide//音频预处理(消回音、自动增益、降噪等)webrtc/modu
2020-05-20 07:54:34
611
原创 android Activity finish方法
android Activity finish方法放在不同的地方会有不同的效果:1、放在MainActivity测oncreate方法内:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState)...
2020-04-29 07:38:59
3668
原创 第一行代码学习Android(一)
1、Androidmanifest.xml 位于 app下的manifest下;2、values下的strings.xml写法如下:<resources> <string name="app_name">HelloWorld</string> <string name="developerName">MirWang<...
2020-04-27 00:24:28
297
原创 C++11如何避免死锁
1、原子操作2、按照特定的顺序加锁/解锁3、使用C++11的新特性:struct BankAccount { BankAccount(int b) : Balance(b) {} int Balance; mutex Mutex;};void transferMoney(BankAccount&a, BankAccount& b, int money){...
2020-04-24 23:32:05
954
原创 Ubuntu16.04编译boost
依赖安装apt-get install mpi-default-dev libicu-dev python-dev python3-dev libbz2-dev zlib1g-dev2、./bootstrap.sh3、./b2 编译boostsudo ./b2 install //将生成的库安装到/usr/local/lib目录下面,默认的头文件在/usr/local/i...
2020-04-23 23:31:14
384
原创 腾讯微服务框架Tars介绍
https://www.jianshu.com/p/fedab16cd615github地址https://github.com/Tencent/Tars/。
2020-04-23 09:18:40
835
原创 利用可变参数写日志
利用可变参数看起来比较难,实际上很简单:void formatArgs(char*s, char* format, ...){ va_list ap; va_start(ap, format); //获取到可变参数 vsnprintf (s, size, fmt, ap); //将可变参数格式化到s中 va_end(ap); ...
2020-04-22 23:01:00
276
原创 C++11 thread lock 死锁解决方法
#include <iostream>#include <mutex>#include <thread>using namespace std;class Account{public: //when create is always true Account(const std::string& acountNam...
2020-04-19 10:24:52
779
原创 容易出错的windows程序编译
1、windows 代码的编码可能影响程序的编译;2、Q_OBJECT只是一个 宏凡是带有信号槽的,都要内置这个:class CRLineEdit : public QLineEdit{ Q_OBJECTpublic: explicit CRLineEdit(QWidget *parent = 0);protected: virtual void mouseP...
2020-04-16 09:56:25
151
原创 消回音原理与项目经验
https://shichaog1.gitbooks.io/hand-book-of-speech-enhancement-and-recognition/content/
2020-04-15 13:27:35
204
原创 怎么编译 ffmpeg 让其支持 hevc(h265)
http://www.qiyicc.com/bbs001/forum.php?mod=viewthread&tid=989
2020-04-15 08:52:28
2085
原创 ALSA播放MP3
1、MP3文件转码为WAV格式(解码为pcm);2、通过ALSA接口读取pcm播放;ALSA接口使用步骤:1、打开声卡;2、分配声卡params结构体空间;3、初始化和设置params结构体;4、将该params设置到声卡;5、设置声卡的声道、频率;6、读取pcm文件到设备;//alsa.c 编写者未知,纯属引用#include<stdio....
2020-04-10 23:50:59
1344
1
原创 std::promise的使用
std::promise用于多线程间交换数据:void test1(std::promise<int> &p){ //while (1) { std::cout<< "test1"; std::chrono::system_clock t; std::cout << std::thi...
2020-04-10 23:21:09
198
原创 C++11 thread
C++ thread线程(二)thread 第二种构造方式:类函数作为参数:class Feab{public: explicit Feab(int var):v(var) { } void FeabFunction(int v) { cout << v << endl; }priva...
2020-04-10 21:28:49
168
原创 linux对C++11多线程的支持
#include <iostream>#include <thread>#include <future>using namespace std;double calc(double v){ cout << "calc: " << std::endl; cout << this_thread:...
2020-04-10 21:15:25
214
原创 对称型NAT打洞的理解笔记
4种NAT打洞:完全锥体、IP受限型、(IP和)端口受限型、对称型。其三种都很好理解,唯独对称型比较不好理解,这里做些自己的理解。对称型:是指UDP打洞时,一个请求对应一个映射关系。clientA (x,y) -----------> 网关(A,b)------------>S(m, n)clinetB(p,q) -----------> 网关(C,d)------...
2020-03-24 16:42:47
5461
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人