现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2017-05-17 08:16 工业·编程 ⁄ 共 2404字 暂无评论
    对于后台开发,一个重要问题即使用尽可能少的服务器资源处理海量的请求,除了我们再架构上做多机自动扩容外,我们还必须尽可能提高单机硬件的利用率(CPU利用率+IO利用率) 为了提高硬件的利用率往往我们采用三种技术路径: 多线程 异步IO 协程 协程和异步IO以及多线程的对比 多线程 多线程可以充分利用CPU的多核,实现真正的并行,它是操作系统的基础设施。但是线程是一个粗粒度、相对比较笨重的多任务的抽...
阅读全文
2017-05-10 07:26 工业·编程 ⁄ 共 1957字 暂无评论
之前一直没想明白了一个问题, 就是关于协程如何进行上下文切换。众所周知, 协程是分为有栈协程和无栈协程俩种. 区别在于是否有自己的调用栈来进行函数调用等操作. 有栈协程 有栈协程这里的做法比较好理解, 一般来说有俩种做法: 采用操作系统提供的api 类似 ucontext 或者 setjump longjump 用汇编操控寄存器保存状态 典型的例子 static void context_swap(struct Context* prev_, struct Context* next_) { // store in .da...
阅读全文
2017-05-03 06:45 工业·编程 ⁄ 共 1665字 暂无评论
https://github.com/tonbit/coroutine是一个精巧的C++非对称协程库。库只有一个.h文件(<500行的代码),使用时也仅需要include这个头文件。但是在功能上,可以提供Linux/Macos/Windows平台的几个必备的协程API(命名空间coroutine): * 创建协程:routine_t  create( std::function<void()>  f ); * 销毁协程:void  destroy( routine_t  id ); * 恢复协程:int  resume( routine_t  ...
阅读全文
2017-04-26 18:17 工业·编程 ⁄ 共 1663字 暂无评论
    对于IO密集型的程序,一般比较高效的做法是选择异步来实现,因为使用异步的方法更容易写出高效的程序。然而使用异步的话,经验较少的人往往会使自己的程序结构变得很混乱,进而导致程序的可读性变差。记得有人说过,在硬件飞速发展的现在,程序的可读性和可维护性的重要性在不断提高,甚至有一种更激进的说法,程序的可读性是第一位的。     从Boost的1.54版本开始,coroutine引入了一种新型...
阅读全文
2017-04-19 08:48 工业·编程 ⁄ 共 3148字 暂无评论
1 PE文件 1.1 PE文件简介 PE文件是Portable Executable(可移植的可执行文件)的简写。EXE、DLL、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件。 1.2 PE文件格式 PE文件都有相同的格式,其格式如图1所示。 图1 PE文件格式 从图1可以看出,PE文件主要包含头和数据部分,其中可以将头部看作是数据的索引。而头部又包含了DOS头、NT头和Section头三部分。DOS头包含了MZ文件头和DOS块两部分。所以,PE文件格式...
阅读全文
2017-04-12 11:13 工业·编程 ⁄ 共 11534字 暂无评论
ATL(Active Template Library活动模板库)是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。这种COM组件可以包含属性页、对话框等等控件。 一. 什么是ATL 自从1993年Microsoft首次公布了COM技术以后,Windows平台上的开发模式发生了巨大的变化,以COM为基础的一系列软件组件化技术将Windows编程带入了组件化时代。广大的开发...
阅读全文
2017-04-05 15:49 工业·编程 ⁄ 共 1431字 暂无评论
Plan9 是一个操作系统。由贝尔实验室开发的,其主要的负责人是Rob Pike(现在在google工作,负责Go语言的开发)。 Plan 9不是一个很知名的作品,但是它的前身Unix是世人皆知的。而Plan 9是Unix的几位作者在AT&T职业生涯的一件巅峰之作,是被设计来超越Unix的。 实际上,Plan 9在1992年第一次发布时,就同时实现了Google Docs、Dropbox、Github、Remote Desktop等目前很火爆的互联网产品的功能。 Plan 9能做到这些,是因为它...
阅读全文
2017-03-28 15:39 工业·编程 ⁄ 共 1175字 评论 1 条
Plan9 是一个操作系统。由贝尔实验室开发的,其主要的负责人是Rob Pike(现在在google工作,负责Go语言的开发)。当然这个操作系统的参与者还有几个大名鼎鼎的人:包括Ken Thompson(C语言和Unix创始人),Dennis Ritchie(C语言和Unix创始人),Brain Kernighan(awk之父),Doug Mcllroy(Unix管道提出者,Unix开发参与者)。 为什么有了Unix还需要有Plan9呢? Plan9中最本质的思想是“一切皆是文件”,CPU是一个文件,内存是...
阅读全文
2017-03-21 13:59 工业·编程 ⁄ 共 2693字 评论 1 条
    协程是在线程之上由“用户”构建的并发单元,对OS来说无感知,协程的切换由用户自己管理和调度。(这里的用户是相较于内核而言的,一些通用库这里也理解为用户) C/C++怎么实现协程     作为一个C++后台开发,我知道像go, lua之类的语言在语言层面上提供了协程的api,但是我比较关心C++下要怎么实现这一点,下面的讨论都是从C/C++程序员的角度来看协程的问题的。 boost和腾讯都推出了相关的库...
阅读全文
2017-03-14 22:21 工业·编程 ⁄ 共 12381字 暂无评论
    当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件;如果该文件存在,则 GDB 就执行该文件中的所有命令。通常,该文件用于简单的配置命令,如设置所需的缺省汇编程序格式(Intel® 或 Motorola)或用于显示输入和输出数据的缺省基数(十进制或十六进制)。它还可以读取宏编码语言,从而允许实现更强大的自定义。该语言遵循如下基本格式: define <command>...
阅读全文