- 博客(44)
- 资源 (5)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 世界上最好的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
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 世界上最好的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
原创 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
原创 常用技巧记录
@@: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
原创 生成最短摘要
给定一段产品的英文描述,包含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++封装接口
2018-01-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人