Skip to content

Instantly share code, notes, and snippets.

@longbuilder
longbuilder / truncate_utf8.cpp
Created January 4, 2015 07:48
UTF-8 truncate
string truncateUTF8(const string& src, size_t tolen)
{
string dst;
dst.reserve(tolen);
size_t i = 0;
while (dst.size() < tolen && i < src.size())
{
size_t step = 0;
if ((src[i] & 0x80) == 0x00) // 1字节
step = 1;
int main(int argc, char *argv[])
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("new socket error");
exit(-1);
}
struct sockaddr_in servaddr;
bzero(&servaddr, sizeof(servaddr));
@longbuilder
longbuilder / fast_in.h
Last active August 29, 2015 14:09
fast io
#ifndef FAST_IN_H_
#define FAST_IN_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define INPUT_BLOCK_SIZE 4096 * 512
class FastInput
#ifndef BUBBLE_SORT_H_
#define BUBBLE_SORT_H_
template <typename T>
void swap(T &a, T &b)
{
T tmp = a;
a = b;
b = tmp;
}
@longbuilder
longbuilder / binary_search.cpp
Created November 4, 2014 01:50
binary_search
// 返回最后一个不大于 target 的位置
template <typename T>
int binary_search(T *A, int low, int high, T target)
{
while (low < high) {
int mid = (low + high) / 2;
target < A[mid] ? (high = mid) : (low = mid + 1);
}
@longbuilder
longbuilder / bitmap O(1)
Last active August 29, 2015 14:08
bitset
#ifndef BIT_MAP_H_
#define BIT_MAP_H_
#include <stdlib.h>
template <typename RANK = int>
class BitMap
{
public:
BitMap(RANK n) :
capacity_(n),
@longbuilder
longbuilder / boost_json.cpp
Last active August 29, 2015 14:05
boost demos
#include <sstream>
#include <string>
#include <boost/property_tree/json_parser.hpp>
int parseJson(const std::string &s)
{
using boost::property_tree::ptree;
ptree pt;
std::stringstream ss(s);
@longbuilder
longbuilder / golang_struct_packed.go
Last active October 14, 2019 18:50
golang struct packed to network buffer
// struct filed only support uint* and string
// for string, there should be a value to represent the length of string
// packed
func WriteStructToBuffer(buffer *bytes.Buffer, data interface{}) error {
v := reflect.Indirect(reflect.ValueOf(data))
if v.Kind() != reflect.Struct {
return errors.New("invaild type Not a struct")
}
@longbuilder
longbuilder / aes_ecb.cpp
Last active March 29, 2021 08:34
aes ecb encrypt and decrypt
#include <stdio.h>
#include <openssl/aes.h>
#define AES_KEY_LENGTH 16 // aes-128
std::string String2Hex(const unsigned char *src, size_t len)
{
std::string dest = "";
for (size_t i = 0; i < len; ++i)
{
@longbuilder
longbuilder / opencv-image-segment.cpp
Created April 19, 2014 01:10
opencv image segment
//转换为灰度图
IplImage* pGrayImage = cvLoadImage( "image0.bmp", 0);
//利用Canny算子进行边缘检测
IplImage * pCannyImg=cvCreateImage(cvGetSize(pGrayImage),pGrayImage->depth,1);
cvCanny(pGrayImage,pCannyImg,50,150,3);
//膨胀,使边缘轮廓闭合
IplImage * pDilateImg=cvCreateImage(cvGetSize(pGrayImage),pGrayImage->depth,1);
IplConvKernel *rect_2;