<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pipilu的blog]]></title><description><![CDATA[   凡事贵在坚持！ ]]></description><link>https://blog.youkuaiyun.com/piplu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; piplu]]></copyright><item><title><![CDATA[RingBuffer]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/116171408</link><guid>https://blog.youkuaiyun.com/piplu/article/details/116171408</guid><author>piplu</author><pubDate>Mon, 26 Apr 2021 20:25:27 +0800</pubDate><description><![CDATA[// PHZ
// 2018-5-15

#ifndef _RING_BUFFER_H
#define _RING_BUFFER_H

#include &lt;vector&gt;
#include &lt;memory&gt;
#include &lt;atomic&gt;
#include &lt;iostream&gt;

template &lt;typename T&gt;
class RingBuffer
{
public:
    RingBuffer(unsigned capacity=.]]></description><category></category></item><item><title><![CDATA[一个很实用的的缓冲区队列]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/116170924</link><guid>https://blog.youkuaiyun.com/piplu/article/details/116170924</guid><author>piplu</author><pubDate>Mon, 26 Apr 2021 20:13:38 +0800</pubDate><description><![CDATA[#ifndef _QUEUE_H
#define _QUEUE_H

#include &lt;mutex&gt;
#include &lt;queue&gt;
#include &lt;condition_variable&gt;

template&lt;typename T&gt;
class threadsafe_queue
{
public:
    threadsafe_queue()
    {
        
    }
    threadsafe_queue(threadsafe_q.]]></description><category></category></item><item><title><![CDATA[QMutex & QWaitCondition 小记！]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/78868729</link><guid>https://blog.youkuaiyun.com/piplu/article/details/78868729</guid><author>piplu</author><pubDate>Thu, 21 Dec 2017 23:09:17 +0800</pubDate><description><![CDATA[用惯了Boost的mutex和Condition，突然发现QT的互斥锁与信号量跟Boost的这么神似！ 所以今儿将QT的互斥与信号量做个小抄，方便后续查看！
同时，记录一下先前对condition的使用一直比较模糊的地方顺便也做个笔记！
// QThreadAndMutexLocker.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include]]></description><category></category></item><item><title><![CDATA[C++设计模式-Bridge桥接模式]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/52953985</link><guid>https://blog.youkuaiyun.com/piplu/article/details/52953985</guid><author>piplu</author><pubDate>Fri, 28 Oct 2016 10:27:00 +0800</pubDate><description><![CDATA[作用：将抽象部份与它的实现部份分离，使它们都可以独立地变化。

将抽象(Abstraction)与实现(Implementation)分离，使得二者可以独立地变化。

桥接模式号称设计模式中最难理解的模式之一，关键就是这个抽象和实现的分离非常让人奇怪，大部分人刚看到这个定义的时候都会认为实现就是继承自抽象，那怎么可能将他们分离呢。

《大话设计模式》中就Bridge模式的解释：

]]></description><category></category></item><item><title><![CDATA[这3个技巧，能帮你节省50%的工作和学习时间！]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/52313220</link><guid>https://blog.youkuaiyun.com/piplu/article/details/52313220</guid><author>piplu</author><pubDate>Thu, 25 Aug 2016 11:48:36 +0800</pubDate><description><![CDATA[你的工作以“忙”著称吗？每天要打开三四十个标签页，在五六个Office之间切换，吃午饭时也要对着电脑，一天下来才发现自己一杯水都没喝？

 

在这种情况下，你一定急需各种方法来节约时间。今天要分享的，就是从实战中总结出来的：能确切可行节省工作和学习时间的一些小窍门。

 

（全文约2200字，阅读时间2分钟）

 




 

1、建立专属信息库

 ]]></description><category></category></item><item><title><![CDATA[WebService到底是什么？(转载一篇纯理论，但很清晰易懂的文章)]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/52276833</link><guid>https://blog.youkuaiyun.com/piplu/article/details/52276833</guid><author>piplu</author><pubDate>Mon, 22 Aug 2016 14:52:43 +0800</pubDate><description><![CDATA[一、序言

  大家或多或少都听过WebService（Web服务），有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术，其中不乏很多吹嘘和做广告的成分。但是不得不承认的是WebService真的是一门新兴和有前途的技术，那么WebService到底是什么？何时应该用？

   当前的应用程序开发逐步的呈现了两种迥然不同的倾向：一种是基于浏览器的瘦客户端应用程序]]></description><category></category></item><item><title><![CDATA[使用placement new来巧妙实现一个单例]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/52232349</link><guid>https://blog.youkuaiyun.com/piplu/article/details/52232349</guid><author>piplu</author><pubDate>Wed, 17 Aug 2016 16:50:47 +0800</pubDate><description><![CDATA[一直对placement new的这种方式有点好奇，不知道存在这种方式的NEW有什么用，今天刚好在公司项目中见到用placement new方式来配合单例的实现的一个库，然后自己迅速写了一个小demo来模拟了一下这个实现，确实比较新颖！  直接看代码：


头文件声明：
/*
 *	思想：本类在使用过程中FOO通过单例的方式得到，但FOO类的构造和析构由它自己去负责，不需要使用者来处理！
]]></description><category></category></item><item><title><![CDATA[秒杀多线程第三篇 原子操作 Interlocked系列函数]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/51275628</link><guid>https://blog.youkuaiyun.com/piplu/article/details/51275628</guid><author>piplu</author><pubDate>Thu, 28 Apr 2016 16:42:01 +0800</pubDate><description><![CDATA[上一篇《多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见，我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录，每个用户登录用一个线程模拟，线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天多少个用户登录，如果这个值不等于我们启动的线程个数，那显]]></description><category></category></item><item><title><![CDATA[读书笔记——Windows核心编程（8）Interlocked单向链式栈]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/51025965</link><guid>https://blog.youkuaiyun.com/piplu/article/details/51025965</guid><author>piplu</author><pubDate>Thu, 31 Mar 2016 14:17:55 +0800</pubDate><description><![CDATA[SLists使用了无锁算法来保证原子同步，以提升系统性能，避免了诸如优先级挂和互锁的问题。

注意：所有的链表项必须对齐到MEMORY_ALLOCATION_ALIGNMENT。否则会出现奇葩的错误。

（PS：看英文MSDN的API解释，我感觉这是从前插又从前取，是个栈的样子。）


InitializeSListHead，创建一个空栈






[cpp] vie]]></description><category></category></item><item><title><![CDATA[c++工程中发送http请求的示例]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50600980</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50600980</guid><author>piplu</author><pubDate>Thu, 28 Jan 2016 15:22:44 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include "Wininet.h"  
#pragma comment(lib,"Wininet.lib")  

extern  std::string g_remotIp       = "192.168.1.100";
extern  int         g_remotPort     = 8080;
]]></description><category></category></item><item><title><![CDATA[Jsoncpp的使用]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50551730</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50551730</guid><author>piplu</author><pubDate>Wed, 20 Jan 2016 23:59:53 +0800</pubDate><description><![CDATA[JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard
 ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式，但是也使用了类似于C语言家族的习惯（包括]]></description><category></category></item><item><title><![CDATA[gsoap使用心得!]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50519824</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50519824</guid><author>piplu</author><pubDate>Thu, 14 Jan 2016 19:25:30 +0800</pubDate><description><![CDATA[gSOAP 是一个夸平台的，用于开发 Web Service 服务端和客户端的工具，在 Windows 、 Linux 、 MAC OS 和UNIX 下使用 C 和 C++ 语言编码，集合了 SSL 功能。

下载地址： http://sourceforge.net/projects/gsoap2

官方网站： http://genivia.com/Products/gsoap/index]]></description><category></category></item><item><title><![CDATA[Web Service学习笔记（webservice、soap、wsdl、jws详细分析)]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50490306</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50490306</guid><author>piplu</author><pubDate>Sat, 09 Jan 2016 23:10:49 +0800</pubDate><description><![CDATA[Web Service概述 

Web Service的定义 
W3C组织对其的定义如下，它是一个软件系统，为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API，它们可以通过网络进行调用，来执行远程系统的请求服务。 

这里我们从一个程序员的视角来观察web service。在传统的程序编码中，存在这各种的函数方法调用。通常，我们知道一个程序]]></description><category></category></item><item><title><![CDATA[Unicode与GB2312互转]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50442908</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50442908</guid><author>piplu</author><pubDate>Thu, 31 Dec 2015 17:25:29 +0800</pubDate><description><![CDATA[#include 
#include 
#include 

int code_convert( bool uft2gbk, char *inbuf, int inlen, char *outbuf, int outlen ) 
{ 
    iconv_t cd; 
    int rc; 
    char **pin = &inbuf; 
    char **pout = &outbuf;]]></description><category></category></item><item><title><![CDATA[libssh2的简单应用]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50395318</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50395318</guid><author>piplu</author><pubDate>Thu, 24 Dec 2015 16:29:01 +0800</pubDate><description><![CDATA[libssh2的官网：www.libssh2.org；虽然这个网站里面内容是全英文的，我想所有的计算机从事者都能看懂这里面写的内容，这里面提供了很多例子，比如FTP的，shell命令的等等，我在这里介绍一下shell命令的发送和接收返回数据。

example里有个文件名叫exec.c 这个文件是实现shell命令的一个例子:

* Sample showing how to use li]]></description><category></category></item><item><title><![CDATA[getline函数使用总结]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50351790</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50351790</guid><author>piplu</author><pubDate>Fri, 18 Dec 2015 14:57:08 +0800</pubDate><description><![CDATA[// getlineDemo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include 
#include 

#include 

/*
 *	Note:
    这里需要区分 getline和 std::cin.getline，是属不同的二个类中的函数，行参不一样，但功能是差不多的
    一， getline(cin,st]]></description><category></category></item><item><title><![CDATA[FFmpeg深入分析之零-基础]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50277965</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50277965</guid><author>piplu</author><pubDate>Sat, 12 Dec 2015 21:08:11 +0800</pubDate><description><![CDATA[FFmpeg是相当强大的多媒体编解码框架，在深入分析其源代码之前必须要有基本的多媒体基础知识，否则其源代码会非常晦涩难懂。本文将从介绍一些基本的多媒体只是，主要是为研读ffmpeg源代码做准备，比如一些编解码部分，只有真正了解了多媒体处理的基本流程，研读ffmpeg源代码才能事半功倍。
下面分析一下多媒体中最基本最核心的视频解码过程，平常我们从网上下载一部电影或者一首歌曲，那么相应的多媒体播放器]]></description><category></category></item><item><title><![CDATA[VLD(Visual LeakDetector)内存泄露工具的使用]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50163531</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50163531</guid><author>piplu</author><pubDate>Thu, 03 Dec 2015 17:12:35 +0800</pubDate><description><![CDATA[VLD（Visual Leak Detector）是一款用于VisualC++的免费内存泄漏检查工具。功能：
    1）  可以得到内存泄漏点的调用堆栈，还可以得到其所在的文件及行号；
    2）  可以得到泄漏内存的完整数据；
    3）  恶意设置内存泄漏报告的级别；
    4）  它以动态库的形式提供，无需编译源代码，只需要很小的改动程序；
    5）  源代码使用GNU]]></description><category></category></item><item><title><![CDATA[UML类图几种关系的总结]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50055661</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50055661</guid><author>piplu</author><pubDate>Thu, 26 Nov 2015 14:38:01 +0800</pubDate><description><![CDATA[在UML类图中，常见的有以下几种关系:泛化（Generalization）,  实现（Realization）,关联（Association）,聚合（Aggregation）,组合(Composition)，依赖(Dependency)
 
1.泛化(Generalization)
【泛化关系】：是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如：老虎是动物的一种.
【箭头指向】]]></description><category></category></item><item><title><![CDATA[拷贝构造、赋值构造、深拷贝、浅拷贝、位拷贝、值拷贝]]></title><link>https://blog.youkuaiyun.com/piplu/article/details/50055405</link><guid>https://blog.youkuaiyun.com/piplu/article/details/50055405</guid><author>piplu</author><pubDate>Thu, 26 Nov 2015 14:21:37 +0800</pubDate><description><![CDATA[很早之前，一直对这些名词很不解，翻看了c++ primer很多次，也只知道其用法，不知其解。说白了，就是不知道为什么有这些各式的拷贝的存在，或者是说在何种环境下面要使用得上！今天无意翻到当初写的小例子，重新整理后帖上来作个记号！
 
//=================================
一，在什么环境下面可能需要使用自定义拷贝、赋值构造?
 
 在解释这些名词之前，需要]]></description><category></category></item></channel></rss>