guxch的专栏

路漫漫其修远兮,吾将上下而求索

C++17标准库新增类/函数(二)

 std::apply,std::invoke std:apply定义在<tuple>中,因而apply(f,t)的意思就是f(t),其中f是一个可调用的函数,t是一个tuple,pair,array之类的可以调用std::get和std::tuple...

2018-11-30 15:04:45

阅读数 84

评论数 0

C++17标准库新增类/函数(一)

std::Filesystem C++17中的filesystem库基本上与Boost.Filesystem相同。C语言库中有许多对文件的操作,但一直没有对目录及文件属性的操作。C++17中终于加入,主要包括以下内容: 对文件系统的操作:path类,空间信息 对目录的操作:创建,删除,属性,...

2018-11-30 14:58:24

阅读数 186

评论数 0

Boost Asio要点概述(三)

五、流式操作 许多IO对数据的操作是按流式来进行的,为此Asio提供了流式操作,如上面的streambuf。对最典型的是TCP流,提供了ip::tcp::iostream。下例是一个简单的示例。 void iostreamclient(int argc , char* argv[]) { ...

2018-10-29 17:23:21

阅读数 224

评论数 0

Boost Asio要点概述(二)

三、多任务执行 复杂一些的应用,往往存在多个事件任务执行,此时既有可任意顺序执行的场景,也有按指定顺序执行的场景,前者可采用将任务放到多个线程执行,后者要用到”strand”概念。 1.多线程支持 Boost中io_context是支持多线程的,其内部有一个队列来分配待运行的句柄函数,对服务...

2018-10-29 10:05:57

阅读数 317

评论数 0

Boost Asio要点概述(一)

【注】本文不是boost asio的完整应用讲述,而是仅对其中要点的讲解,主要参考了Boost Asio 1.68的官方文档(https://www.boost.org/doc/libs/1_68_0/doc/html/boost_asio/overview.html),代码的测试环境为ubunt...

2018-10-29 10:01:30

阅读数 330

评论数 0

Boost中的协程—Boost.Asio中的stackful协程

Boost.asio中stackful协程是由Boost::Asio::spawn开启的,文档说,spawn是协程的一种高层次的封装,spawn由许多版本,多用以下定义: template< typename Function> void s...

2018-09-21 17:03:01

阅读数 394

评论数 0

Boost中的协程—Boost.Asio中的coroutine类

Boost.Asio中有两处涉及协程,本文介绍其中的coroutine类。 Boost.Asio中的stackless协程是由coroutine类和一些宏来实现的。coroutine类非常简单,包括四个函数,一个int类型变量,用来保存当前函数的运行状态,与之配合使用的宏中,因采用switch来...

2018-09-21 16:53:24

阅读数 476

评论数 0

Boost中的协程—Boost.Coroutine2

尽管可以有不同的翻译,coroutine本文被叫作协程。 概念 Coroutine是相对于routine(过程)而提出的,它与一般的父程序调用子程序的routine不同之处在于,它允许挂起一个程序执行点,过后再从挂起的地方继续运行,是一种更高级的程序运行顺序控制。为保证程序挂起再恢复,协程有其...

2018-09-21 16:44:06

阅读数 1535

评论数 0

Boost.Asio初步(三)

Platform-specific I/O Objects So far, all of the examples in this chapter have been platform independent. I/O objects such as boost::asio::steady_ti...

2018-09-05 15:59:48

阅读数 168

评论数 0

Boost.Asio初步(二)

Network programming Even though Boost.Asio can process any kind of data asynchronously, it is mainly used for network programming. This is because B...

2018-09-05 15:40:17

阅读数 429

评论数 0

Boost.Asio初步(一)

【注】本翻译来自https://theboostcpplibraries.com/boost.asio。boost.asio从v1.66起io_service变成了io_context,二者有一定差异,但基本应用相同。 目  录 IO服务和IO对象 可扩展性和多线程 网络编程 协程 与...

2018-09-05 15:20:50

阅读数 1097

评论数 0

Tornado开发(六)— 扩展

5. 多进程部署多进程部署也有两种方式:一是利用tornado自带的启动多个进程的方式,二是利用Nignx在前面做负载均衡的方式。tornado自带方式测试代码如下:class LongHandler(tornado.web.RequestHandler): def get(self): s...

2018-07-03 09:15:10

阅读数 325

评论数 0

Tornado开发(五)— 扩展

4. 协程异步/多线程处理以协程方式(Coroutine)进行异步处理,是Tornado推荐的方式。Coroutine不采用回调函数方式,而用yield来挂起和恢复运行(现在又有新关键字了,说明python的Coroutine还没有稳定下来),协程编程风格看起来像同步,但又没有线程的切换,因此效率...

2018-07-02 09:22:59

阅读数 342

评论数 0

Tornado开发(四)— 扩展

2.  页面的Session检查Web应用中,各页面实际上是没有关系的,但为了给用户“完整”的感觉,需要用一个Session对象将用户访问的各页面“串”起来,同时,某些信息比较敏感,不希望被“窃听”或“修改”,因此,在每一页被访问时,通常的的做法是首先检查Session对象,以确定访问者的身份。有...

2018-06-26 10:41:29

阅读数 334

评论数 0

Tornado开发(三)— 网页模板 及扩展

6. 多语言支持(Internationalization)作为一款web开发框架,国际化是必不可少的,虽然只做国内网站时没啥用。如果需要做一个多语言支持的网页,首先要准备多语言翻译文件,tornado支持两种格式的翻译文件:po/csv,csv更简洁些,下面以此为例来说明。csv文件的格式为(三...

2018-06-26 10:35:28

阅读数 417

评论数 0

Tornado开发(二)— 网页模板

四. 网页模板最终呈现给用户的html页面,一般是由静态信息与动态信息合成的,静态信息与用户等应用环境无关,动态信息则与用户、场景相关,多是从数据库中取得数据后加工得到的。在tornado中,保存在服务器端的包含动态信息的文件叫模板(template),模板文件被request handler载入...

2018-06-26 10:10:41

阅读数 783

评论数 0

Tornado开发(一)—— 概述及构成

一.概述Tornado是用python写的异步web架构库,几行代码就可以写出httpsever和WebSocket server,它是采用python构建 web服务的几种流行的架构之一。关于Tornado与Django的区别,网文很多,不再描述,笔者选择Tornado而不是Django的主要原...

2018-06-13 16:48:31

阅读数 1363

评论数 0

Lua与C C++的交互(二)

四.交互示例1.  C/C++代码中调用Lua脚本int test_lua1() { int ret=0; lua_State* pLuaEnv; pLuaEnv = luaL_newstate(); if (pLuaEnv == nullptr) { ret=-20; retu...

2018-05-18 15:29:57

阅读数 275

评论数 0

Lua与C C++的交互(一)

一.概述Lua是1993年由巴西里约热内卢天主教大学一个研究组开发的编程语言,算来是一种“中年”语言了,Lua用标准C语言编写并开源,其设计目的是为了嵌入应用程序中,因此Lua有几个特点:轻量级,Lua 是一种轻量小巧的脚本语言简洁,自动内存管理;只提供了一种通用类型的表(table)过程与函数式...

2018-05-18 14:36:04

阅读数 227

评论数 0

python与C C++的交互(三)

六.在C/C++环境中调用python代码在这种情况下,C/C++代码是主程序,按复杂度,分几个例子说明。1.最简单情况,无参数传递int run_simple_py() { char const *script="def hello():\n\tprint(\&quo...

2018-05-16 10:21:23

阅读数 811

评论数 0

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