- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 多进程、多线程、协程、线程池、任务队列的平均等待时长分析
这时,在3分钟的时候,A,B,C都打了一分钟水,A满了,而B还需要1分钟的注水量,C 2分钟。从上面的分析,可以看出来,分时复用只会拉高平均等待时长,所以,线程应该越少越好,尽可能等于cpu核心数。可以想像成,分时复用,就是将水龙头分成3根管子,分别接到三个桶里面,还是ABC的任务。多线程的解决方案,还包括,两倍于cpu核心数的线程,intel的单核多线程cpu。假如,按照ABC的顺序依次打水,A等待1分钟,B 3分钟,C 6分钟。对于一个排队打水的任务,A需要1分钟,B 2分钟,C 3分钟。
2024-08-30 17:05:39
385
1
原创 静态连接c++标准库,-static-libstdc++
比普通的c程序,多了一个libstdc++.so.6的依赖,当编译出来的程序,放到其他linux系统上,可能会由于c++的版本不同,而不能运行。对于简单的std::cout<<"hello world" 程序。等于 gcc -o test test.cpp -lstdc++加了 static-libstdc++,之后,如图。程序大了约700KB。
2024-03-22 13:08:44
562
1
原创 Opengl glBlendFunc,颜色混合公式,FrameBuffer混合颜色不正确,预乘alpha总结
Opengl glBlendFunc,颜色混合公式,FrameBuffer混合颜色不正确,预乘alpha总结
2024-01-20 15:33:42
649
原创 flv.js播放h264,部分视频在部分浏览器播放不了
发现,flv.js解析sps时,是进行了ebsp转rbsp转换,然后解析出视频信息的,但是喂解码器时,是直接原始的sps丢解码器。出问题的视频,用h264分析格式,是h264 main ,level 52,且sps里面带了00 00 03竞争码。接着修改sps的level,到51。修改sps里面的level描述,改成0x33,不知道有啥影响,火狐能解码了。即 ebsp转rbsp,丢给chrome和火狐播放。目前只在部分win7系统的旧浏览器,发现这个bug。实际测试,在某种情形下,还是可以播放出来的。
2023-08-31 11:30:56
732
1
原创 opengl纹理颠倒,rgb通道错位等。详解rgba,bgra,argb等内存序
opengl纹理颠倒,rgb通道错位等。详解rgba,bgra,argb内存序
2021-12-06 12:03:14
5647
原创 代码优雅注释
一般的代码都支持行注释和块注释,但是块注释,要删除两个符号,很不好用。如果将这两种注释结合会有什么效果呢?/*int i = 1;int j = 2;//块注释*///去掉 /*int i = 1;int j = 2;//这里加注释*/更高级的写法:/*int i = 1;int j = 2;/*/int i = 3;int j = 4;// 选择第二段代码 *///去掉/*int i = 1;int j = 2;/*/int i = 3;int j
2021-10-21 18:07:48
132
原创 c++ 实现不编译A.cpp就没有A模块
非常规代码,有的时候,连接的时候,编译器认为没有使用A.cpp,结果导致编译了A.cpp也没有A模块,需要添加特殊的连接指令。只是好玩,慎用。 实现思路。定义一个全局的管理Factory的类Factorys,在A.cpp里面定义一个全局变量,全局变量构造的时候,把 A 的 工厂类 FactoryA 插入到Factorys中。这样只要编译连接了A.cpp,就会在构造的时候把A模块插入到Factorys中了。 原理很简单,实现又遇到一个问题:构造的顺序的问题,...
2021-10-21 17:18:32
192
原创 c++11 将enum转为字符串,将字符串转为enum
一般用enum有两种情况,一种是string类型方便 “人”读 。一种是int类型,方便机器识别。所以,很多情况,需要把int转为string类型,或者将string转为int类型,方便代码使用。查了很多网页都没发现一个好的实现方式。于是我自己实现了一个。用最少的代码实现int 和 string的绑定关系。原理: 首先,要让编译器能识别,并且有提示,自动填充。这里使用的是类的成员变量来存储int类型,然后用一个map存储string和int的关系。DefCSS 宏展开之后类...
2021-10-21 16:52:47
3164
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人