自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

转载 ubuntu安装配置FTP

ubuntu安装配置FTPUbuntu 12.04下安装FTP软件当然选择大名鼎鼎的vsftpd(very secure FTP daemon), Ubuntu装vsftpd很简单,一句命令就行:sudo apt-get install vsftpd命令执行过程中,安装程序会给本地创建一个名为“ftp”的用户组,命令执行完之后会自动启动FTP服务。可以使用“netstat -tl”

2016-11-03 20:10:14 294

转载 可以传入多参的观察者模式

class NoCopy{protected:    NoCopy() = default;    NoCopy(const NoCopy& n) = delete;    NoCopy&operator=(const NoCopy&) = delete;    ~NoCopy() = default;};templateclass Event : publ

2016-11-03 12:32:59 330

原创 调用函数不同参数以及返回值

templateclass CTC{public:    CTC(std::function f)    {        fu = f;    }    template    void Exec(Args&&...args)    {        fu(std::forward (args)...);    }private: 

2016-11-03 12:07:31 362

转载 MainWindow 设置layout问题

MainWindow::MainWindow() { // Set layout QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(myWidget1); layout->addWidget(myWidget2); // Set layout in

2016-10-29 22:06:05 901

转载 qt5 有中文使用vs编译时失败,以及中文显示乱码

1、修改编译失败问题修改成红色圈住内容2、中文乱码问题在有中文的那个文件头加入以下内容#pragma execution_character_set("utf-8")

2016-10-29 17:22:42 437

转载 内存布局详解

图说C++对象模型:对象内存布局详解阅读目录0.前言1.何为C++对象模型?2.文章内容简介3.理解虚函数表3.1.多态与虚表3.2.使用指针访问虚表4.对象模型概述4.1.简单对象模型4.2.表格驱动模型4.3.非继承下的C++对象模型5.继承下的C++对象模型5.1.单继承5.2.多继承6.虚继承6.1.虚基类表解析6.2.简单虚

2016-09-03 21:36:03 1961

转载 C++ 对象的内存布局(上)

C++ 对象的内存布局(上) 陈皓http://blog.csdn.net/haoel  点击这里查看下篇>>>前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非

2016-09-03 20:44:34 200

转载 C++ 虚函数表解析

前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我

2016-09-03 19:30:06 178

转载 emplace_back减少内存拷贝和移动

emplace_back能就地通过参数构造对象,不需要拷贝或者移动内存,相比push_back能更好地避免内存的拷贝与移动,使容器插入元素的性能得到进一步提升。在大多数情况下应该优先使用emplace_back来代替push_back。所有的标准库容器(array除外,因为它的长度不可改变,不能插入元素)都增加了类似的方法:emplace、emplace_hint、emplace_front、em

2016-08-13 16:48:32 505

转载 “GCC连接静态库成功,G++连接静态库不成功”的解决方法

1.编译器“内联函数开关”引起的错误:     近来使用GCC,"Hello,World"都进行的挺顺利,但是到编译自定义类时却问题多多。程序的目的是实现C++下的字符串类,非常简单,源文件有三个:       String.h        //类定义的头文件       String.cxx      //类实现文件       teststring.cxx //类测试

2016-08-04 15:57:23 1381

转载 多播

#include #pragma comment(lib,"ws2_32.lib")//using namespace std; (去掉,防止c++ bind与socket bind冲突)int main(){    WSADATA wsaData;    WSAStartup(MAKEWORD(2, 2), &wsaData);    SOCKET so

2016-07-26 20:37:30 225

原创 广播数据

#include #pragma comment(lib,"ws2_32.lib")using namespace std;int main(){    WSAData data;    WSAStartup(MAKEWORD(2, 2), &data);    SOCKET  s;    BOOL bRroadcast = TRUE;     

2016-07-25 21:13:25 362

转载 dll 封装

class DllParser{public:    DllParser()    {    }    ~DllParser()    {        UnLoad();    }    bool Load(const string& dllPath)    {        m_hMod = LoadLibraryA(dllPath.

2016-07-20 21:37:48 201

转载 TCP 的那些事儿(下)

TCP的RTT算法从前面的TCP重传机制我们知道Timeout的设置对于重传非常重要。设长了,重发就慢,丢了老半天才重发,没有效率,性能差;设短了,会导致可能并没有丢就重发。于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。而且,这个超时时间在不同的网络的情况下,根本没有办法设置一个死的值。只能动态地设置。 为了动态地设置,TCP引入了RTT——Round

2016-07-02 21:57:23 322

转载 TCP 的那些事儿(上)

TCP头格式接下来,我们来看一下TCP头的格式TCP头格式(图片来源)你需要注意这么几点:TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口。一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议。但因为这里只是说TCP协议,所以,这里我只说四元组。注意上图中的四个非常

2016-07-02 21:56:20 266

转载 IP协议相关技术

DNS 解析IP地址用于识别通信双方的地址,但它是一串长数字,不方便记忆,人们希望主机有自己自己的名字,这个名字是唯一的,而且容易记住。于是,诞生了“域名”的概念。域名是一种为了识别主机名称和机构名的具有分层的名称,比如在域名neu.edu.cn中,neu是主机名,edu 和 cn 是不同层次下的机构名。域名和 IP 地址都可以唯一对应一台主机,DNS 协议的作用就是将自身具有意义的域

2016-07-02 21:51:37 249

转载 IP协议

IP协议处于OSI参考模型的第三层——网络层,网络层的主要作用是实现终端节点间的通信。IP协议是网络层的一个重要协议,网络层中还有ARP(获取MAC地址)和ICMP协议(数据发送异常通知)数据链路层的作用在于实现同一种数据链路下的包传递,而网络层则可以实现跨越不同数据链路的包传递。比如主机A通过Wi-Fi连接到路由器B,路由器B通过以太网连接到路由器C,而路由器C又通过Wi-Fi与主机D保持连

2016-07-02 21:50:05 350

转载 慢启动以及传输原理

数据包重发数据发送丢包重发的前提是发送方能够知道接收方是否成功的接收了消息。所以,在 TCP 协议中,接收端会给发送端返回一个通知,也叫作确认应答(ACK),这表示接收方已经收到了数据包。根据上一节对 TCP 首部的分析得知,ACK 的值和下次发送数据包的序列号相等。因此 ACK 也可以理解为:“发送方,下次你从这个位置开始发送!”。下图表示了数据发送与确认应答的过程:ACK

2016-07-02 21:45:15 5623

转载 H.264码流结构的分析

摘要:H.264是新一代视频编码标准,具有广泛的应用前景。本文主要研究了H.264码流的问题。首先,介绍了H.264的简单框架;其次,对码流结构进行了分析,并概括出了码流结构图;最后,结合一个简单试验,给出了从H.264码流中取得图像宽度和高度的方法。关键词:H.264;NAL;码流结构Analysis onthe structure of coding streaming in H.26

2016-06-18 21:03:17 884

转载 图解y420

YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),

2016-06-18 18:59:57 1454

转载 YUV 详解

YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。转载一篇对yuv格式解释的比较清楚地文章,也可以直接参考微软的那篇文章。对于YUV格式,比较原始的讲解是MPEG-2 VIDEO部分的解释,当然后来微软有一个比较经典的解释,中文的大

2016-06-18 15:59:21 16970

转载 enable_share_from_this

以前都没有用过enable_shared_from_this模板类,虽然经常遇到但是也没怎么去关注,今天抽时间好好学习了下enable_shared_from_this模板类,发现在使用shared_ptr模板类和enable_shared_from_this模板类时有许多陷阱的,故记录于此。什么时候该使用enable_shared_from_this模板类在看下面的例子之前,简单说下使用

2016-05-25 14:26:06 258

原创 chrono

int _tmain(int argc, _TCHAR* argv[]){ chrono::time_pointchrono::system_clock> time = std::chrono::system_clock::now(); std::this_thread::sleep_for(chrono::seconds(1)); std::chrono::system_cl

2016-05-15 19:20:28 255

转载 enable_if

templatebool _Test, class _Ty = void> struct enable_if { // type is undefined for assumed !_Test }; templateclass _Ty> struct enable_iftrue, _Ty> { // type is _Ty for _Test typedef _Ty type;

2016-05-12 16:18:41 273

转载 boost log

#include  #include  #include  #include  #include  #include  #include  #include  #include namespace logging = boost::log;namespace sinks = boost::log::sinks;namespace a

2015-10-06 22:33:57 256

原创 log4cpp

#include "log4cpp/Category.hh"#include "log4cpp/OstreamAppender.hh"#include "log4cpp/BasicLayout.hh"#include "log4cpp/Priority.hh"#include "log4cpp/PatternLayout.hh"#include "log4cpp/SimpleL

2015-10-06 21:35:13 351

转载 VS 中捕获内存泄露

内存泄露十分讨厌,捕获内存泄露更加令人厌烦……其实,VS本身就有内存泄露的检测机制。只需做以下操作即可开启。(同时必须在debug模式 下运行程序并且以 正常流程退出 )// 在入口函数cpp中添加以下定义和头文件  #define CRTDBG_MAP_ALLOC  #include   #include   // 在入口函数一开始添加以下代码  _CrtDumpMemoryLe

2015-09-03 21:38:20 393

转载 sleep_until

using std::chrono::system_clock;    std::time_t tt = system_clock::to_time_t(system_clock::now());    struct std::tm * ptm = std::localtime(&tt);    std::cout         std::cout     ++ptm

2015-08-23 21:38:01 298

原创 asio bind

void Write(const boost::system::error_code& error, std::size_t bytes_transferred){    if (!error)    {        std::cout     }}void connect_handler(boost::asio::ip::tcp::socket& socket,

2015-08-20 21:22:25 591

原创 default,delete

class CTestEx{public:    CTestEx() = default;  //可以使用默认构造    CTestEx(const std::string& str):mstr(str){}    std::string what() { return mstr; }    void* operator new(size_t) = delete; 

2015-07-28 09:17:51 239

转载 QueryPerformanceCounter/QueryPerformanceFrequency

INT64 EscapeTime(){    LARGE_INTEGER nFreq;    LARGE_INTEGER nBeginTime;    LARGE_INTEGER nEndTime;    QueryPerformanceFrequency(&nFreq);    QueryPerformanceCounter(&nBeginTime);

2015-06-15 09:31:04 412

转载 分解命令行以及环境变量函数

SHSTDAPI_(LPWSTR *)  CommandLineToArgvW(_In_ LPCWSTR lpCmdLine, _Out_ int* pNumArgs);例:    PTSTR strCmd = GetCommandLine();    int nCount = 0;    LPWSTR* pData = CommandLineToArgvW(strCm

2015-06-11 20:34:43 318

原创 Unicode、ANSI相互转换

char* WtoA(const wchar_t* szData){    int nLen = WideCharToMultiByte(CP_ACP, 0, szData, -1, NULL, 0,0,0);    char* pData = new char[nLen];    int nLen1 = WideCharToMultiByte(CP_ACP, 0, szDat

2015-06-10 20:47:23 361

原创 字符串比较

1、CompareString(    _In_ LCID Locale,    _In_ DWORD dwCmpFlags,    _In_NLS_string_(cchCount1) PCNZWCH lpString1,    _In_ int cchCount1,    _In_NLS_string_(cchCount2) PCNZWCH lpString2,    _I

2015-06-10 20:11:09 522

转载 StrSafe.h 使用安全字符串操作函数

const TCHAR P[] = _T("测试一下");    int nLen = sizeof(P)/sizeof(TCHAR);  //5    int nLen1 = sizeof(P); // 10;    TCHAR szData[MAX_PATH] = { 0 };    int nLen2 = lstrlen(P); //4    if (S_OK !=

2015-06-10 17:49:36 559

转载 enable_if

1  导言 使用 enable_if 系列模板可以控制一个函数模板或类模板偏特化是否包含在基于模板参数属性的一系列匹配函数或偏特化中。比如,我们可以定义一个只对某些类型(通过特征类[traits class]定义)有效——当然也只匹配这些类型——的函数模板。enable_if 也可以对类模板偏特化实现同样的效果。enable_if 的应用在 [1] 和 [2] 中有详细的介绍。

2015-06-09 10:48:33 337

原创 c++ bind functional

#include #include #include #include #include "Test.h"using namespace std;int test(int a, int b){    cout     return 10;}int main(){    //CTest test;    //CTest *t

2015-06-08 20:40:33 339

转载 使用serialization 进行封包、解包

#include #include class CMyData  {  private:      friend class boost::serialization::access;      template      void serialize(Archive& ar, const unsigned int version)      {    

2015-05-02 22:22:55 305

转载 archive

#include #include #include #include "Test.h"using namespace std;using namespace boost;void Save(){    std::ofstream file("archive.txt");    boost::archive::text_oarchive oa(f

2015-05-02 21:31:20 330

转载 Boost - 序列化 (Serialization)

程序开发中,序列化是经常需要用到的。像一些相对高级语言,比如JAVA, C#都已经很好的支持了序列化,那么C++呢?当然一个比较好的选择就是用Boost,这个号称C++准标准库的东西。什么时候需要序列化呢?举个例子,我们定义了一个class,比如:[cpp] view plaincopyclass CCar  {  public:      void SetName

2015-05-02 21:28:40 696

real-time rendering 4 th

Real Time Rendering 4th Edition 高清版 ,带目录。

2018-11-05

vs2015编译版本

vs2015编译的live555(2016.4.21版本)

2016-04-24

空空如也

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

TA关注的人

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