随笔分类 -  C/C++

摘要:mojo本质是Uinx Domain Socket(posix)在本机的进程间进行通信时不会经过网卡,可以少一次拷贝。 mojom的用途 主要用于进程间通信,减少模块间依赖。 用接口描述语言书写mojom接口文件,经过编译之后会自动生成对应的mojo类 mojo底层管道的创建 mojo的通信依赖于底 阅读全文
posted @ 2022-10-08 19:03 leno米雷 阅读(1509) 评论(0) 推荐(0) 编辑
摘要:问题的来源,绑定和unique_ptr std::bind绑定unique_ptr的时候生成的类型并非std::function,而是一个不可拷贝的类型,这跟unique_ptr的特性有关,这意味着如果需要暂时保存绑定的函数,没有能够接受对象的类型声明 如果不需要保存可以使用auto来接受绑定的对象 阅读全文
posted @ 2022-09-08 18:23 leno米雷 阅读(423) 评论(0) 推荐(0) 编辑
摘要:本文翻译自 "https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage" 介绍 cef是个基于chromium的开源项目。跟chromium项目不同,cef主要聚焦于 google chrome应用开发,cef集中于促进嵌入式浏览器在第 阅读全文
posted @ 2020-01-17 11:12 leno米雷 阅读(1637) 评论(0) 推荐(0) 编辑
摘要:下面是cefsimple的入口代码,主要分成两个部分 进程判断 首先是初始化进程的代码,cef的进程结构和chromium类似,都是多进程共用代码。所以cef提供了一些函数来检测主进程(即browser进程)的流程和子进程的流程,以分别执行适合当前执行进程的逻辑。这段代码如下所示。 其中main_a 阅读全文
posted @ 2020-01-15 11:47 leno米雷 阅读(2889) 评论(1) 推荐(0) 编辑
摘要:C++的多态分为动态多态和静态多态,其中静态多态主要靠重载和模板来实现,而动态多态则主要靠继承来实现了。 那么静态和动态,怎么算静,怎么算动呢?静态多指编译期能决定的事情,而动态多指运行时才决定的事情。例如重载,在编译期生成符号的时候就已经确定不同的函数了,而继承的重写(override)则是在运行 阅读全文
posted @ 2019-08-20 17:46 leno米雷 阅读(366) 评论(0) 推荐(0) 编辑
摘要:pgm不太能用,没有想象中的可靠,重传机制貌似仍然使用组播重传,丢包率80%的网络感觉没啥改进,如果有所好转延迟估计也是个不小的问题。 后听说rtp也有nack机制,webrtc基于rtp实现了重传在一定程度上保证可靠性。 在各路大神的指引下找到了rfc4585,看到了这么一段 RTCP扩展反馈报文 阅读全文
posted @ 2019-08-09 19:12 leno米雷 阅读(2139) 评论(0) 推荐(0) 编辑
摘要:Reliable Multicast Programming (PGM)实际通用可靠多播协议,在某种程度上保证多播的可靠性。是IP上层协议,和TCP还有UDP同级,工作在传输层。 在组播传输视频项目中,发现在网络较差的时候,组播传输视频性能下降迅猛,组播的视频几乎到了无法直视的地步,已经不是马赛克什 阅读全文
posted @ 2019-08-08 22:52 leno米雷 阅读(3286) 评论(0) 推荐(0) 编辑
摘要:今天代码中遇到使用正则表达式匹配一个文件路径的问题,需要验证传入的文件路径是否合法,学习了简单的正则表达式的写法后,简单写了如下代码,在网上找了一些在线测试正则表达式的网站,测试可以通过。 c++ std::regex match("^[a zA Z]:(\\[a zA Z0 9]+)+$"); s 阅读全文
posted @ 2019-05-10 19:46 leno米雷 阅读(3229) 评论(0) 推荐(0) 编辑
摘要:问题发现 在业务逻辑中发现有时使用 这个API创建出来的窗口无法使用其他的API,不仅其他 的API说 而且还有奇怪的警告和报错 第一个报警是 的报警,提示当前创建的窗口加载的页面可能是一个 查询了官方文档,发现如果需要创建一个 需要在 的`manifest`文件中添加如下声明 但是我并没有添加类似 阅读全文
posted @ 2019-03-16 10:59 leno米雷 阅读(494) 评论(0) 推荐(0) 编辑
摘要:本篇文档以gpu进程的创建和启动为例,讲述chormium如何启动一个browser进程的子进程 PS:本文使用的chromium代码版本为71 前言 GPU进程的启动时机是由browser进程负责的,browser进程会在进入message loop之前启动两个进程,先是启动zygote进程,然后 阅读全文
posted @ 2019-03-06 21:04 leno米雷 阅读(4181) 评论(5) 推荐(0) 编辑
摘要:前一段时间在工作过程中遇到一个场景需要将http response中的request header中的cookie字段取出并进行解析,但是手头没有解析cookie的工具类,同时cookie的表现就是个字符串,于是想到手动分割 但是在C++的标准库中,并没有提供类似split的函数,在有些时候可能会很 阅读全文
posted @ 2019-01-09 13:08 leno米雷 阅读(817) 评论(1) 推荐(0) 编辑
摘要:std::future和std::promise std::future std::future期待一个返回,从一个异步调用的角度来说, future更像是执行函数的返回值 ,C++标准库使用std::future为一次性事件建模,如果一个事件需要等待特定的一次性事件,那么这线程可以获取一个futu 阅读全文
posted @ 2019-01-02 08:45 leno米雷 阅读(9274) 评论(0) 推荐(3) 编辑
摘要:前一篇没用markdown编辑器感觉不好看,删了重新发 本篇主要讲述线程的管理,主要包括创建和使用线程 启动线程 线程出现是为了执行任务,线程创建时会给一个入口函数,当这个函数返回时,该线程就会退出,最常见的main()函数就是主线程的入口函数,在main()函数返回时主线程就结束了。 如何启动一个 阅读全文
posted @ 2018-12-11 14:29 leno米雷 阅读(760) 评论(2) 推荐(0) 编辑
摘要:什么是并发 什么是并发 并发,最简单的理解就是,两个或者以上的活动同时进行。举个比较实际的例子,你可以手脚并用,两只手做不同的动作等等。 在计算机中的“并发”,是指一个系统可以同时执行多个独立的活动。在以前大多数计算机都只有一个处理单元(或者核心),这种计算机在同一时刻只能执行一个任务,任务只能一个 阅读全文
posted @ 2018-11-13 17:11 leno米雷 阅读(1017) 评论(0) 推荐(0) 编辑
摘要:ISO C++ 11 标准的一大亮点是引入Lambda表达式。基本语法如下: [capture list] (parameter list) ->return type { function body } 简单的讲一下各个部分的作用 lambda表达式可以理解为一个匿名函数(但本质并不是),如果要使 阅读全文
posted @ 2017-07-28 22:38 leno米雷 阅读(584) 评论(0) 推荐(0) 编辑
摘要:在步入工作岗位之后,重新对编程是个什么过程进行了了解 简单的来说,我们平常所写的代码经过编译和链接之后生成可执行文件,下面就编译和链接两个过程分别讨论 编译阶段 编译阶段需要的素材就是你的源文件,把源文件经过一系列神奇的编译操作变成目标文件就是我们的目的,也就是linux系统下使用gcc -c得到的 阅读全文
posted @ 2017-07-22 12:07 leno米雷 阅读(724) 评论(4) 推荐(0) 编辑
摘要:不知道大家有没有用过XShell这款工具,这款工具通过windows可以远程操作处于开机状态的linux操作系统,也就是说把你的电脑和一台服务器连入网络,你通过输入服务器所在的IP地址建立一个会话就可以远端操作linux的服务器了,十分方便。 这次这个模拟XShell的小项目就是类似的功能 执行流程 阅读全文
posted @ 2016-08-23 21:02 leno米雷 阅读(1081) 评论(2) 推荐(0) 编辑
摘要:线程安全这个词对我来说已经不是很陌生的了,但是遇到一个叫做可重入函数的词,它给我的感觉和线程安全是这么的相近,但既然拿出来了,肯定是有区别的,下面就说说他们之间的区别和联系。 要先解释这两个词语才行。 线程安全:似乎是在牛客网刷题的时候看到一个正确的选项说的是,线程安全问题都是由全局变量及静态变量引 阅读全文
posted @ 2016-07-13 11:06 leno米雷 阅读(1798) 评论(4) 推荐(1) 编辑
摘要:我会用几篇博客总结一下在Linux中进程之间通信的几种方法,我会把这个开头的摘要部分在这个系列的每篇博客中都打出来 进程之间通信的方式 管道 消息队列 信号 信号量 共享存储区 套接字(socket) 进程间通信(四)—共享存储区传送门:http://www.cnblogs.com/lenomire 阅读全文
posted @ 2016-07-09 23:16 leno米雷 阅读(2499) 评论(0) 推荐(2) 编辑
摘要:我会用几篇博客总结一下在Linux中进程之间通信的几种方法,我会把这个开头的摘要部分在这个系列的每篇博客中都打出来 进程之间通信的方式 管道 消息队列 信号 信号量 共享存储区 套接字(socket) 进程间通信(五)—信号传送门:http://www.cnblogs.com/lenomirei/p 阅读全文
posted @ 2016-07-08 00:48 leno米雷 阅读(2317) 评论(2) 推荐(2) 编辑