编程分享
xungen
我问佛:人为何而生?佛曰:寻根。
展开
-
cppweb 1.0.3发布,基于C++开发的web服务器
cppweb是一个基于C++开发的 WEB 服务器,支持C/C++、Python、Java等多语言混合开发WEB应用。cppweb同时也是一个跨平台的微服务开发框架,通过两个核心组件webrouter与webserver提供微服务系统中的接口路由网关、服务注册中心、业务服务容器、定时任务调度中心以及接口文档平台等功能,cgi应用只是其中业务服务容器的部分功能,我们的目标不是实现一个最好cgi容器,而是打造一个统一web开发和传统服务开发的框架。基于cppweb的微服务集群框架如下图所示,图中绿色部分原创 2020-10-31 17:07:42 · 794 阅读 · 0 评论 -
cppweb框架实现代码即接口文档
cppweb服务接口文档平台在cppweb框架中每个webserver业务服务都可以访问/app/workspace/pub/apidoc.htm页面来查看自身的接口文档,只要你在接口代码最后面添加如下代码,webserver就会帮你自动生成接口文档,完全做到代码与文档的同步,你也不用花精力单独维护接口文档。我们的cppweb框架已开源:https://gitee.com/xungen/cppweb//-----------------------------------------------.原创 2020-09-15 21:32:19 · 727 阅读 · 0 评论 -
C++跨平台JSON序列化与反序列化开源库
JsonReflect介绍JsonReflect是基于C++11实现跨平台JSON序列化与反序列化库。支持将对象序列化为JSON字符串或者将JSON字符串反序列化的对象。作者利用宏与C++11的typeid运算符实现一种动态反射机制,大大简化了序列化与反序列化工作。安装方法1、下载源码git clone https://gitee.com/xungen/jsonreflect.git2、...原创 2020-04-30 21:57:46 · 1133 阅读 · 0 评论 -
进程照妖镜strace命令
strace命令介绍strace是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序。在Linux系统中,用户程序运行在一个沙箱(sandbox)里,用户进程不能直接访问计算机硬件设备。当进程需要访问硬件设备(如读取磁盘文件或接收网络数据等)时,必须由用户态模式切换至内核态模式,通过系统调...原创 2019-06-04 11:48:21 · 487 阅读 · 0 评论 -
C++程序如何编译运行
C/C++hello word程序详解下面是C++入门的hello world程序源码#include <iostream>using namespace std;int main(int argc, char* argv[]){ cout << "hello world" << endl; return 0;}你可以在将上述源码复制粘...原创 2019-06-09 12:27:33 · 12702 阅读 · 0 评论 -
free命令详解
命令简介linux下可以使用free命令看到系统实际使用内存的情况,一般用free -h命令查看内存占用情况。而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内存有如下几个加减法:内存占用:used - buffers - cached可用内存:buffers + cached + free命令选项-b:以Byte为单位显示内存使用情况-k:以KB为单位显...原创 2019-06-08 12:02:22 · 7975 阅读 · 3 评论 -
推荐一款好用的redis客户端工具
推荐一个好用的redis客户端工具redis官方客户端(redis-cli)每次都要指定连接IP与端口,连接成功后还要执行auth命令进行口令认证,这个过程比较繁琐,auth命令需要人工干预,不方便自动化执行redis命令。给大家推荐一款基于RedisConnect开发的redis客户端工具,只要你设置以下环境变量就可以直接执行redis命令,整个过程无需指定连接IP与端口,也不用执行auth...原创 2019-06-02 18:43:28 · 19631 阅读 · 1 评论 -
lsof命令介绍
lsof命令简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接...原创 2019-06-02 10:11:14 · 832 阅读 · 0 评论 -
推荐一款C++连接Redis的开源库
分享一个开源的Redis连接库RedisConnect,官方地址:https://www.winfengtech.com/redisconnect介绍1、RedisConnect是基于C++11实现的简单易用的Redis客户端。2、源码只包含一个头文件与一个命令行工具源文件,无需编译安装,真正做到零依赖。3、自带连接池功能,调用Setup方法初始化连接池,然后执行Instance方...原创 2019-05-28 20:13:12 · 6404 阅读 · 1 评论 -
用标准C++实现任务队列
下面介绍一个简单的任务队列,查看完整代码。在实现任务队列前需要定义一个接口与一个工具类任务接口:子类实现接口的run方法来处理具体任务。 自旋锁类:用于保护任务队列的并发访问(用C++11原子操作实现)。任务接口源码如下//任务接口class WorkItem{public: //接口方法必须在子类实现 virtual void run() = 0;public:...原创 2018-11-22 13:47:59 · 5490 阅读 · 3 评论 -
C++反射机制简单实现
一直以来,C++都未能支持反射机制,在C++中要实现类似Java等语言的反射机制需要另外写代码保存类型相关信息,然后在运行时使用。C++引入了typeid运算符,可以在运行时获取类型相关信息,说明C++在编译时是会保存类型相关信息的,只是C++标准要求保存的运行时类型信息不足以支撑类似Java的反射机制。下面给出一个简单的例子,说明程序在运行时获取类型相关信息。class Object...原创 2019-05-13 15:27:51 · 1082 阅读 · 0 评论 -
微服务架构分析
什么是微服务架构微服务是指按业务与数据将统一的系统拆分成若干相对独立自治的子服务,各服务只实现特定功能(如登录服务只实现登录相关的逻辑),服务以接口的形式为应用或其他服务提供功能与数据(如订单服务调用登录服务的检查登录态接口来判断用户是否登录),这种按业务拆分系统的解决方案称之为微服务架构。微服务架构的特点微服务是指开发一个组小型的但有业务功能的服务,每个服务都有自己的处理和轻量...原创 2019-05-22 14:23:40 · 981 阅读 · 0 评论 -
推荐一款C/C++在线编译器
推荐一款好用的C/C++在线编译器,地址:https://www.winfengtech.com/compile,平时写些小demo比较方便,在手机上也可以编程。支持代码折叠、语法高亮等功能,全屏模式,界面可视面积大。支持本地代码收藏功能,你也可以导出代码保存本地,然后在其他地方导入使用,界面如下:在手机上效果如下面所示(学习党可收藏)...原创 2018-11-19 16:33:59 · 22535 阅读 · 2 评论 -
C++如何优雅地释放资源
C++语言机制保证当对象创建时候自动调用构造函数,当对象超出作用域时自动调用析构函数。利用RAII机制(即将资源与对象生命周期绑定),我们可以优雅地实现资源管理。智能指针(std::shared_ptr和std::unique_ptr)是RAII最具代表的实现,使用智能指针,可以实现自动的内存管理,再也不需要担心忘记delete造成的内存泄漏。毫不夸张的来讲,有了智能指针,代码中几乎不需要再出...原创 2019-05-21 20:51:21 · 3266 阅读 · 0 评论 -
微服务架构简介
什么是微服务架构微服务架构是指按业务与数据来源将统一的系统拆分成若干相对独立自治的子服务,各服务只实现特定功能(如登录服务只实现登录相关的逻辑),服务以接口的形式为应用或其他服务提供功能与数据(如订单服务调用登录服务的检查登录态接口来判断用户是否登录),这种按业务拆分系统的解决方案称之为微服务架构。微服务架构的特点微服务是指开发一组小型的但有业务功能的服务,每个服务都有自己的处理...原创 2019-05-21 15:40:08 · 601 阅读 · 0 评论 -
Nginx实现动态负载均衡
为什么用nginxnginx是经过实践证明的、安全稳定的反向代理服务器,淘宝、新浪等大型互联网公司都有nginx的身影。nginx经过线上各种网络环境验证,能够帮你隔离各种复杂的网络环境,轻松支持10000+的同时在线连接数,同时拥有多种成熟的负载均衡策略,能够方便横向拓展后端服务。今天我们说一说nginx负载均衡策略。nginx有以下几种负载均衡策略1、基于轮询方式轮询是最基本的配...原创 2019-05-24 15:43:08 · 2498 阅读 · 0 评论 -
我为什么用C/C++
参加工作7年了,作为一个全栈码农,工作中C++、Java、Python、Lua甚至前端Javascript都有涉及,但是自己私下都是用C/C++做项目(包括个人网站后台都是用C++开发的)。在我的技术认知范围内C/C++能完成一切任务,我偏执地用C++实现个人笔记网站(https://www.winfengtech.com),甚至开发了一个cppshell将C/C++当作脚本语言来使用,言归正...原创 2019-05-07 22:31:35 · 1987 阅读 · 1 评论 -
C/C++在线编译器对比
下面给大家推荐几款C/C++在线编译器。https://www.winfengtech.com/compile国内打开速度超快,支持语法高亮与代码折叠,同时还支持本地代码收藏功能,全屏模式,界面可视面积大,GCC原生错误提示,手机上可完美运行,你值得拥有。http://ideone.com打开速度一般,支持代码折叠,广告篇幅太大,界面可视面积小。http://c...原创 2019-05-01 09:01:27 · 4567 阅读 · 0 评论 -
C++11可变参数模板
点击查看完整代码C++11支持可变参数模板,可以代替C语言中的va_list实现类型安全的可能参数函数(比如printf函数)。下面用C++11可变参数模板实现支持多个参数的求和函数与求平均值函数。定义单个参数求和函数(用于终止模板递归展开)template<class DATA_TYPE>static DATA_TYPE sum(DATA_TYPE val){ ...原创 2019-05-02 11:51:42 · 863 阅读 · 0 评论