- 博客(17)
- 收藏
- 关注
原创 循环中的定义的变量构造了几次?
测试代码:class Test {public: Test() { std::cout << __func__ << "\n"; } ~Test() { std::cout << __func__ << "\n"; }};int main() { int i = 2; while (i--) { Test te...
2018-06-24 11:59:46 304
原创 std::string 清空方式的性能测试。
一般情况下,清空字符串有两种方式:(1)给字符串赋值空串。(2)调用std::string::clear()函数。 测试代码: const int kMaxLoop = 1000000; { boost::timer::auto_cpu_timer timer; std::string test; int i = kMaxLoop; whil...
2018-06-24 11:56:32 12490
转载 B站不挡脸弹幕 这到底是什么黑科技?
B站不挡脸弹幕 这到底是什么黑科技?2018.06.23 18:13:19来源: 游迅网作者:游迅网 B站不挡脸弹幕 这到底是什么黑科技? 近日,B站针对弹幕功能进行了升级,正式推出了“不挡脸”的弹幕功能。具体效果为:用户打开打开一则舞蹈视频右下角的“智能防挡弹幕”功能后,弹幕就立刻神奇转变,飘过去的文字竟然变得仿佛从人体身后穿过一样。甚至,视频画面有时会给人一种裸眼3D的感觉。这一技术被B站官方...
2018-06-24 11:55:06 2072
原创 Idiom:Shrink-to-fit
一些STL容器如std::string,std::vector会申请比实际写入的字节更多的内存还优化效率,这个Idiom可以让它们的内存没有多余的。std::vector<int> v;std::vector<int>(v.begin(), v.end()).swap(v);...
2018-06-24 11:45:46 269
原创 Idiom:Multi-statement Macro
用do{}while(false)封装避免分号带来的问题。#define IntValueInit(P1, P2) \ do{ \ P1 = 1; \ P2 = 2; \ }while(false)
2018-06-24 11:31:28 232
原创 Idiom:Include Guard Macro
1. #pragma once编译器支持情况:Compiler#pragma onceARM DS-5Supported[18]C++Builder XE3Supported[10]ClangSupported[7]Comeau C/C++Supported[8]Cray C and C++Unsupported as of version 8.6[9]Digital Mars C++Suppor...
2018-06-24 11:21:27 243
原创 Idiom:Copy-and-swap
简单的实现:class Myclass {public: Myclass(size_t size) : data_(size ? new(std::nothrow) int[size] : nullptr) , size_(!data_ ? 0 : size){} Myclass(const Myclass& other) { data_ = other.size_ ? ...
2018-06-24 11:08:52 193
原创 std::vector 如何对数组进行assign 和 push_back操作。
1) assign char arr[] = { 1,2,3 }; std::vector<char> buffer; buffer.clear(); buffer.insert(buffer.begin(), std::begin(arr), std::end(arr)); assert(buffer.size() == 3); assert(buffer[0]...
2018-06-23 22:19:38 4031
原创 Idiom:Scope Guard
最简单的Scope Guardclass SimplestScopeGuard {public: SimplestScopeGuard(std::function<void()> func) : func_(func), dismiss_(false) {} ~SimplestScopeGuard() { if (func_ && !dismiss_)...
2018-06-23 21:53:34 174
原创 Idiom: Copy-on-write
最简单的cow:class SimplestCOW {public: void Write(int value) { if (!data_ || !data_.unique()) data_ = std::make_shared<int>(); *data_ = value; }private: std::shared_ptr<int...
2018-06-23 21:40:04 166
原创 Idiom: Non-copyable
用c++98:class NoCopyable {public: NoCopyable() {} ~NoCopyable() {}private: NoCopyable(const NoCopyable&); // Not implemented. NoCopyable& operator=(const NoCopyable&); // Not imp...
2018-06-23 21:20:14 203
原创 Idiom : pimpl
用c++ 11实现:#include <memory>class MyClass {public: MyClass(); ~MyClass(); void DoSomeThing();private: class MyClassImpl; std::unique_ptr<MyClassImpl> impl_;};#include "My...
2018-06-23 21:14:17 380
转载 rtp 简介
原文链接RTP协议 实时传输协议RTP(Real-time Transport Protocol)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的,后在RFC3550中进行更新。 国际电信联盟ITU-T也发布了自己的RTP文档,作为H.225.0,但是后来当IETF发布了关于它的稳定的标准RFC后就被取消了。它作为因特网标准在...
2018-06-23 20:28:14 983
转载 rtsp 简介
一、RTSP协议介绍什么是rtsp?RTSP协议以客户服务器方式工作,,如:暂停/继续、后退、前进等。它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制, 因此 RTSP 又称为“因特网录像机遥控协议”。 RTSP(Real-Time Stream Protocol)是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。...
2018-06-23 20:26:08 3064 1
转载 RTP H264 分包解包
一、 h264基础概念SODB: 数据比特串-->最原始的编码数据RBSP: 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐。EBSP: 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码 StartCod...
2018-06-23 20:22:49 2330
转载 rtp over tcp
通常来说,RTSP提供UDP方式发送RTP流。当然,发送流媒体时,UDP往往是更好的选择。###下面是使用UDP时的一些问题:UDP协议上的RTSP/RTP需要打开许多UDP端口(每一路流媒体都需要2个UDP端口,一个用于接收数据,一个用于接收控制信息);当因特网上的路由器没有打开这些端口的时候,第一点将会存在问题;中间网络路由器很容易就过滤或者忽略掉UDP数据包;UDP是不可靠传输协议,媒体包在...
2018-06-23 20:11:58 286
转载 wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)2016年03月14日 10:46:16阅读数:6668本文非笔者原著,从网络上检索得到,原始出处不可考,再次对原作者表示感谢!wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)1. 关键字“与”:“eq” 和 “==”等同,可以使用 “and” 表示并且,“或”:“or”表示或者。“非”:“!" 和 "...
2018-06-23 19:25:44 38299
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人