自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chen802311的专栏

程序,人生

  • 博客(44)
  • 资源 (5)
  • 收藏
  • 关注

原创 Golang实现世界上最简单的分布式异步RPC(drpc)

drpcd实现为可以单机或者多机部署单机部署例子:drpcd.exe -addr=:8080启动了一个监听8080端口的drpcd服务,其他的各种运用程序可以把自己实现的功能注册上去,也可以方便的调用其他运用程序注册的函数功能,实现功能共享。多机部署例子:drpcd.exe -addr=192.168.1.11:8080 // 启动第一个drpcd服务drpcd.exe -addr=1...

2019-12-13 23:45:13 1261

原创 世界上最好的c++ rpc实现基于c++14标准

代码量很少,就两个hpp文件,新手学习好材料。server:#include "buttonrpc.hpp"int foo(int age, int mm){ return age + mm;}int main(){ buttonrpc server; server.as_server(5555); server.bind("foo", foo); server.run()...

2018-04-29 07:19:42 13996 11

原创 世界上最好的c++ json解析器

url:    https://github.com/button-chen/tinyjson使用只需包含一个头文件(header only).读取相当复杂的json,也很简单。#include "tinyjson.hpp"#include <string>#include <iostream>using namespace std;string jsonstri...

2017-08-12 12:09:51 4647 1

原创 golang流式json解析库

比如LLM返回json格式的流式接口,正常情况下json数据没有收集完是不能正常解析的,但是一直等接口流式数据接收完成可能会是几秒甚至十几秒调用界面一直卡着体验极差,如果可以实时的展示收到的内容那是极好的。此工具库用于流式json数据解析。

2024-05-24 10:44:24 476

原创 websocket反向代理及负载均衡库

https://github.com/button-chen/websocketproxy

2018-04-05 08:44:10 580

原创 c++封装简易http(基于microhttpd)

使用例子:#include "httpservice.hpp"#include "boost/bind.hpp"#include using namespace std;void handle_test1(boost::shared_ptr res, boost::shared_ptr req){ res->write(req->body());}class CLAS

2018-01-29 17:35:34 1781

原创 实现一个简单的线程安全c++ map

1:  程序中经常需要缓存一些数据, 但是std::map 不是线程安全的2: 实现一个简单的线程安全map, 结合c++11 的lambda 使用更是方便。3:  相互学习, 地址: https://github.com/button-chen/safemap

2017-08-06 20:37:11 8748

原创 python装饰器

1:  import timefrom functools import wraps def timethis(func): ''' Decorator that reports the execution time. ''' @wraps(func) def wrapper(*args, **kwargs): start = time.time() result = func(*

2016-12-15 16:48:39 280

原创 c++11之可变模板参数

auto mysum(){ return 1;}templateauto mysum(const T& t, const args&... ps){ return t * mysum(ps...);}int main(){ auto sum = mysum(1,3.9,4); cout << sum << endl; return 0;

2016-12-14 18:32:16 300

原创 一个ini配置文件解析器

test.ini:#begin[system]#参数1param1=12 ;参数2param2=12,13,14,15#支持多行模式param3=12, 13,14 ,15,18,19,20#参数4param4 = chen: hui:zong:hao:haoparam5=trueparam6 =true,false,aaa,bbbb, true[op

2016-12-09 16:42:36 456

原创 c++11之模板别名(using)

#include using namespace std;// 定义一个具体类型的别名, using 与 typedef 一样的效果// 但是模板的别名只能用using(如果typedef也能的话,cpp11就不会加using这个特性了)// 以下效果一样using u_flags = std::ios_base::fmtflags;typedef std::ios_base::

2016-11-02 15:02:13 1863

原创 boost系列化c++对象

#include #include #include using namespace std;// 包含以简单文本格式实现存档的头文件#include #include #include #include #include // 系列化map必须包含此文件#include #include class testclass;struct myinfo;namesp

2016-10-26 17:58:00 302

原创 c++ lambda闭包

templateT lambdaTEST(string& name){ auto mylam = [&](int age) { cout << "my name is: " << name << ", age is: " << age << endl; }; return mylam;}int main(){ string name = "CPP"; auto&& h

2016-10-25 10:05:24 337

原创 给容器快速赋值

#include #include using namespace std;template class InsertPoxy{ T & m_poxyContain;public: InsertPoxy(T & poxyContain):m_poxyContain(poxyContain){ }; template InsertPoxy& operator()(U elem)

2016-10-22 22:39:29 1207

转载 值得推荐的C/C++框架和库

值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz

2016-04-09 20:28:48 376

转载 opencl简介

转载至: http://blog.csdn.net/leonwei/article/details/88937961 Hello OpenCL     这里编写一个最简单的示例程序,演示OpenCl的基本使用方法:    1.首先可以从Nvdia或者Amd或者Intel或者所有OpenCl成员的开发者网站上下载一份他们实现的OpenCL的SDK。虽然不同公司支持

2016-03-16 19:04:04 411

原创 一些C++库

阅读一些有名的开源库, 对C++设计有更好的认识

2016-01-27 23:16:20 332

原创 常用技巧记录

@@:sqlserver: sa  Chen8023@@:查看指定端口的状态:  netstat -ano|findstr "80"@@:优秀的进程管理工具:Process Explorer@@:windebug配置符号文件:srv*c:\symbols*http://msdl.microsoft.com/download/symbols   !analyz

2015-12-21 17:44:06 412

原创 oracle存储过程一个陷阱

1:如下oracle存储过程(同事发现):create or replace procedure test is strTaskID varchar2(50):='123321'; CURSOR Cursortt is SELECT * FROM T_FCVSTASK where strTaskID = strTaskID and 1=1; c

2015-11-10 20:59:05 336

原创 python编程环境搭建

1:安装 Eclipse+PyDev   PyDev解压后的features、plugins放在eclipse中同名目录即可2:然后:窗口---->首选项----->Iterpreters----->Python Iterpreter 新建python解释器的路劲即可

2015-11-09 21:24:06 443

原创 c++用gsoap调用webservice备忘

1:用wsdl2h 生成中间头文件 >>   wsdl2h example.wsdl     -------->> example.h2:用soapcpp2 生成代理类>> soapcpp2  -C -i -x -I “import path” example.h       注:生成的代理类cpp文件去掉预编译选项,在使用的cpp文件中包含 example.nsmap 再包含代理类头文件

2015-11-09 21:08:25 369

原创 oracle数据库的导出与导入备忘

1:  导出步骤$exp username/password@orcl file=E:/back.dmp owner=username      2:导入步骤create user username identified by password      创建用户,会使用默认的表空间grant dba to username   给用户授权,直接授给管理员权限$imp user

2015-11-09 17:27:19 296

原创 Excel合并单元格相关代码

// Excel合并单元格相关代码(不能直接用,只是片段)void xxx_excel(){ _WorksheetPtr mm_pWorksheet; RangePtr pRangePtr, pMyTmp; CString strAddress; pRangePtr = mm_pWorksheet->GetRange(_variant_t(strAddre

2015-09-15 21:16:57 644

原创 用MSXML为xml添加属性

VOID XXX_XML(){ IXMLDOMDocumentPtr pXmlDocument; if ( XmlDocument.CreateInstance(__uuidof(XML::DOMDocument)) != S_OK ) { return; } // Do load IXMLDOMElementPtr xmlNode = pXmlDocument->selectS

2015-09-15 20:48:19 582

转载 字符集之间转换实现函数

//下面同一般编程。gSoap会把字符串当成utf8编码处理。//下面附带gb2312与utf8编码之间的转换函数://gb2312转utf8 void Gb2312ToUtf8(char* pstrOut, u32 dwOutLen, const char* pstrIn, u32 dwInLen) { #ifdef WIN32 int i = MultiByteToWid

2015-09-15 20:40:08 999

原创 四个常用且重要的数据结构

重要数据结构 二叉堆 查并集

2014-01-14 18:41:35 880

原创 生成最短摘要

给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法代码如下:/* 算法思想:从头扫描输入字符串,找到第一个在关键字中出现的单词 记录其偏移量,继续往后扫描得到出现在关键字中的第二个单词(可以 和第一个相同),一直到此子串包含所有的关键字,此时也需要记录 其偏移量,计算其大小;接下来继续从以上子串中的第

2014-01-08 21:20:55 781

原创 组合之01转换法

m个数中取n个数的所有组合问题从左到右扫描数组元素值的“10”组合,找到第一个“10”组合后将其变为“01”组合,同时将其左边的所有“1”全部移动到数组的最左端代码如下:#include using namespace std;#define SIZE 100struct data{ int elem; int b;};inline void

2014-01-06 11:01:36 1352

原创 全排列之字典序法

(1) 对于输入的字典序排列,反向查找第一对满足a[j](2) 仍旧反向查找第一个下标k,使得 a[j](3) 交换a[j]和a[k](4) 翻转a[j+1]~a[end]此法能适应有重复元素的系列代码如下:#include #include using namespace std;int cmp(const void* a, const void* b

2014-01-05 20:15:58 712

原创 java与c/c++会怎么对待a = a++;

无意中看到这样一个问题:int a = 1;a = a++;此时 a = ?,我自己测试了一下,vs2008中得到a = 2 ;在linux中用gcc编译得到的结果也是2,而当用java语言时,在JDK7环境下得到的结果a = 1;为了搞清楚是怎么回事,进行了一点研究,如下:在vs2008中有这样的汇编代码:a = a++;00881445 8B 45 F8

2014-01-05 10:05:44 891 3

原创 败者树

一:胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。二:不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。三:胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。在k路归并排序中经常用到#includ

2014-01-03 22:09:00 864

原创 求解500万以内的亲和数

代码来自《编程艺术系列》这段代码很优雅、很有内涵,如下:#include using namespace std;#define MAXVAl 5000000int sum[MAXVAl+1];int main(int argc, char* argv[]){ int i, j; for(i = 0; i <= MAXVAl; i++){

2014-01-01 22:34:53 722

原创 双端LIS问题

从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)代码如下:#include #include using namespace std;int find(int* arr, int len, int n){ int left = 0, right = len, mid = (left+right)/2; while (left <= right){

2013-12-31 17:03:51 1164

原创 寻找满足条件的多个数

输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来 代码来自编程艺术,如下:#include #include using namespace std;list lst;void m_findSum(int sum, int n){ if(sum < 1 || n < 1) re

2013-12-30 22:01:03 476

原创 最长递增子系列(LIS)

最近遇到的,此代码来自《算法导论》   具体代码如下:#include #include using namespace std;#define INF -99999int find(int* arr, int len, int n){ int left = 0, right = len, mid = (left+right)/2; while (lef

2013-12-30 21:54:49 446

原创 寻找满足条件的两个数

一: 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字 代码如下:#include #include using namespace std;struct m_elem{ int unm; int data;};struct m_pair{ int f, s; m_pair* next; m_pair(int ff, int ss) :

2013-12-24 20:38:52 458

原创 二分查找

无意中看到二分查找几个字眼,就情不自禁的构思它的实现代码,特此写下来当是练手一:在此有两种方法的实现,一种是递归的另一种是非递归的,代码如下:#include using namespace std;// recursionint m_binarySearch(int arr[], int left, int right, int num){ if(right >= left

2013-12-23 20:19:14 397

原创 堆排序

一:优先队列是一种思想是一种需求,实现它的方法有多种(可以用单链表、二叉查找树等数据结构),但是最常用的实现是使用二叉堆二:与二叉查找树一样其也有两个性质,结构性质和堆序性质;支持两种基本操作deleteMin、insert(此处用最小堆)三:实现二叉堆数据结构及两种基本操作的代码如下:

2013-12-22 08:13:41 437

原创 shell排序

虽然代码不多,但是逻辑性很强一:shell排序,代码如下:/* 用到的增量系列 h = h*3 + 1, 所以逆系列为 h = (h-1)/3; */#include using namespace std;void m_shellSort(int* arr, int nLen){ int h = 1; // 得到系列最大值 while(h

2013-12-19 12:25:51 421

原创 归并排序

不动手敲一敲不知道会不会,把基础搞踏实了一:归并排序,代码如下:#include using namespace std;#define ARR_SIZE 200void m_merge(int* arr, int left, int middle, int right){ int tmp[ARR_SIZE]; int pos = left, p_be

2013-12-18 15:40:04 403

microhttpd的c++封装接口

microhttpd 的c++封装接口, head only, 包含头文件即可使用: 例: LsHTTP http(8888); http.GET(&quot;/chen/test3&quot;, [](boost::shared_ptr&lt;Response&gt; res, boost::shared_ptr&lt;Request&gt; req){ res-&gt;write(&quot;handle test3 url request&quot;); }); http.run();

2018-01-29

配置文件解析器

一个方便的ini配置文件解析器

2016-12-09

自绘CListCtrl聊天列表MFC

MFC自绘CListCtrl实现漂亮聊天列表

2016-01-27

高效c++ ini文件解析器

高效c++ ini文件解析器,运用stl提高效率

2016-01-02

iniConfig/ini配置文件解析通用类

ini配置文件解析通用类, 运用stl容器提升效率

2016-01-02

空空如也

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

TA关注的人

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