Skip to content

Instantly share code, notes, and snippets.

View ochinchina's full-sized avatar

Steven Ou ochinchina

  • NOKIA Chengdu, China
View GitHub Profile
@ochinchina
ochinchina / IntrusivePtrExample.cpp
Created June 3, 2014 04:25
intrusive_ptr in boost 1.55
/**
* This code pieces shows how to use the intrusive_ptr in the boost 1.55
*
*/
#include <boost/smart_ptr.hpp>
#include <boost/smart_ptr/intrusive_ref_counter.hpp>
/**
* Define our own counter and the intrusive_ptr_add_ref(), intrusive_ptr_release()
* function for intrusive_ptr<Test1>
@ochinchina
ochinchina / CsvParser.hpp
Last active May 25, 2020 13:32
A lightweighted Csv parser in C++ language
/**
* parse csv from file or string
*
*/
#ifndef _CSV_PARSER_HPP
#define _CSV_PARSER_HPP
#include <iostream>
#include <string>
#include <fstream>
@ochinchina
ochinchina / HexPrint.cpp
Created June 18, 2014 05:11
convert a binary string to HEX format
#include <string>
#include <iostream>
using std::string;
std::string hexPrint( const char* s, int n ) {
std::string result;
char buf[4];
for( int i = 0; i < n; i+= 16 ) {
@ochinchina
ochinchina / redis_streambuf.hpp
Last active August 29, 2015 14:02
implement std::streambuf with redis as storage. This piece code depends on the redis c client library hiredis
#include <hiredis.h>
#include <streambuf>
#include <iostream>
#include <cstring>
class redis_streambuf: public std::streambuf {
public:
explicit redis_streambuf( redisContext* context, const char* key, std::size_t buf_size = 2048 )
:context_( context ),
key_( key ),
@ochinchina
ochinchina / QtDynamicInvokeTest.pro
Created June 25, 2014 06:33
Demo the QT dynamic invokes
#-------------------------------------------------
#
# Project created by QtCreator 2014-06-24T03:02:08
#
#-------------------------------------------------
QT += core
QT -= gui
@ochinchina
ochinchina / ReadMe
Last active August 29, 2015 14:03
Demo the System Tray in java
# Get these files and copy it to a directory
# Get a .png file and rename it to coffee.png and also put the the same directory as the source file
# compile and run it with command:
$ java -cp . WindowNotifier
@ochinchina
ochinchina / ReadBytesFromIStream.cpp
Created July 2, 2014 10:09
read bytes to a buffer from C++ std::istream
#include <iostream>
std::size_t read_bytes( std::istream& in, char* buf, std::size_t len ) {
std::size_t n = 0;
while( len > 0 && in.good() ) {
in.read( &buf[n], len );
int i = in.gcount();
n += i;
len -= i;
@ochinchina
ochinchina / Makefile
Created July 7, 2014 10:05
implement barrier with the zookeeper C API, require C++11 compiler
CPP = g++
INCS = -I$(ZK_DIR)/src/c/include -I$(ZK_DIR)/src/c/generated
LIBS = -L$(ZK_DIR)/src/c/.libs -lzookeeper_mt -lpthread
CXX_FLAGS = -std=c++11
all: barrier
barrier: ZkBarrierTest.o
$(CPP) -o barrier ZkBarrierTest.o $(LIBS)
@ochinchina
ochinchina / Makefile
Created July 8, 2014 07:57
Demostrate how to select a leader from zookeeper in C API, before doing make, set the ZK_DIR environment variable
CPP = g++
INCS = -I$(ZK_DIR)/src/c/include -I/home/ochinchina/zookeeper-3.4.6/src/c/generated
LIBS = -L$(ZK_DIR)/src/c/.libs -lzookeeper_mt -lpthread
CXX_FLAGS = -std=c++11
all: leader
leader: ZkLeaderElection.o
$(CPP) -o leader ZkLeaderElection.o $(LIBS)
@ochinchina
ochinchina / ZkQueueTest.cpp
Created July 14, 2014 02:05
The zookeeper queue implementation using C API
#include <zookeeper.h>
#include <iostream>
#include <string>
#include <unistd.h>
#include <mutex>
#include <condition_variable>
#include <sstream>
class ZkQueue {
public: