
Linux
文章平均质量分 80
guxch
愿意与大家讨论编程那点事。邮箱:guxch@sohu.com
展开
-
Linux下的IPC-共享内存的使用
共享内存是一种最快的IPC方法,除一些特殊情况外,它不能单独使用,需要配合信号量,关于信号量的使用将另文介绍,本文仅讨论共享内存的使用。就mmap函数本身,使用很简单,下面是一个完整的示例。#include #include #include #include #原创 2011-09-01 17:05:23 · 1493 阅读 · 0 评论 -
分布式协调器ZooKeeper3.4—管理员手册
【ZooKeeper是Apache Hadoop下的开源软件,是一个分布式的协调器,本文来自于Zookeeper的官方网站,地址为:http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html】ZooKeeper Administrator's Guide:A Guide to Deployment and Administratio翻译 2013-02-01 17:21:28 · 4977 阅读 · 0 评论 -
轻量级的web server
一、背景web接口是一个应用系统常用的接口,本文所说的轻量级的web server是指应用系统不以web访问为主,web接口提供辅助作用,例如,修改配置等,此时,对web server的要求是程序简单、无或者很轻的并发、能嵌入到应用中最好。二、比较在开源的web sever中,应用最广的是apache,它的功能很强,但是一个重量级的应用,不符合我们的要求,另外两个有名的we原创 2013-02-20 08:45:53 · 29924 阅读 · 0 评论 -
跨平台(Windows+Linux)的Socket通讯程序(一)—底层封装
【摘要】编写Socket通讯程序是一个老话题。本文重点介绍Windows平台和Linux平台Socket通讯的不同,采用C++,编制了一个简单的跨平台的Socket通讯库。一、Socket通讯的基础知识Socket通讯是两个计算机之间最基本的通讯方法,有TCP和UDP两种协议。关于这两种协议的区别,不少文章已有详述,这里,稍微总结一下:1.TCP是面向连接的,是“流”式的,意即通讯两端原创 2012-03-30 15:05:38 · 30496 阅读 · 11 评论 -
跨平台(Windows+Linux)的线程辅助程序
【好久没写文章了,因为在忙一个项目,这个项目需要编写跨平台(windows+Linux)代码,所以对跨平台的东西做了些关注,本文及下来几篇文章都是针对跨平台的。】如果一个项目需要跨平台,可选择的编程语言就受到一定的限制,如果再考虑运行效率,可选择的语言似乎只能是C/C++了。与Java不同,C/C++是被操作系统“原生态”支持的,因而各操作系统实现的方式也略有不同,各自做了不同的扩展,而不象J原创 2012-02-28 11:10:07 · 7664 阅读 · 1 评论 -
Ubuntu下Apache+MySQL+php的手工安装
一、概述因项目的原因,需要lamp(linux+apache+mysql+php)环境,操作系统选为Ubuntu12.04,在线安装amp是非常简单的,点几下鼠标即可,但可惜的是,所用的计算机不能联网,因此只能离线(手工)安装了。手工安装amp,似乎是若干年前做的事情,现在需要重温了(注:本文的安装包都是从官网中下载的)。下面是本文amp的版本:MySql 5.6Apac原创 2013-05-21 13:47:29 · 4686 阅读 · 0 评论 -
Lua与C C++的交互(一)
一.概述Lua是1993年由巴西里约热内卢天主教大学一个研究组开发的编程语言,算来是一种“中年”语言了,Lua用标准C语言编写并开源,其设计目的是为了嵌入应用程序中,因此Lua有几个特点:轻量级,Lua 是一种轻量小巧的脚本语言简洁,自动内存管理;只提供了一种通用类型的表(table)过程与函数式编程,不直接支持面向对象编程最后一点, Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C...原创 2018-05-18 14:36:04 · 579 阅读 · 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; return ret; } ret = luaL_loadstring(pLuaEnv, "functi...原创 2018-05-18 15:29:57 · 608 阅读 · 0 评论 -
python与C C++的交互(一)
一.概述Python是目前“大火“的编程语言,一种作为“胶水”的脚本语言,能得到如此的应用,确实有它独到之处。C/C++是一种“性能”编程语言,较为古老且经典,因与unix,linux,windows这些底层操作系统相关,而得到广泛应用。Python从一开始就支持C语言的“嵌入”,这是python为弥补性能不足的一种措施,其实python的库就是用C编写的。两种不同编程语言的应用之间的数据传递,可...原创 2018-05-16 10:05:35 · 7465 阅读 · 0 评论 -
python与C C++的交互(二)
五.在python环境中调用C/C++代码前面是两点基础,这节说明在python环境中调用C/C++代码。大致有两种方式:1. 将c/c++代码编译成(操作系统)标准的动态库,在python中“引用”后调用2. 将c/c++代码写成python扩展库,就如同python的内置的标准库一样,正常引用后调用第一种方式比较简单,下面是一个简单示例。C/C++代码(文件名为mm.c...原创 2018-05-16 10:13:45 · 3051 阅读 · 0 评论 -
python与C C++的交互(三)
六.在C/C++环境中调用python代码在这种情况下,C/C++代码是主程序,按复杂度,分几个例子说明。1.最简单情况,无参数传递int run_simple_py(){ char const *script="def hello():\n\tprint(\"hello world!\")\nhello()"; int res; Py_Initialize(); res=PyR...原创 2018-05-16 10:21:23 · 2382 阅读 · 0 评论 -
分布式协调器ZooKeeper3.4—程序员手册
【ZooKeeper是Apache Hadoop下的开源软件,是一个分布式的协调器,本文来自于Zookeeper的官方网站,地址为:http://zookeeper.apache.org/doc/r3.4.5/zookeeperProgrammers.html】Programmer'sGuide:Developing Distributed Applications that use Zo翻译 2013-02-01 17:28:39 · 5510 阅读 · 1 评论 -
分布式协调器ZooKeeper3.4—入门
【ZooKeeper是Apache Hadoop下的开源软件,是一个分布式的协调器,本文来自于Zookeeper的官方网站,地址为:http://zookeeper.apache.org/doc/r3.4.5/zookeeperStarted.html】GettingStarted: Coordinating Distributed Applications with ZooKee翻译 2013-02-01 09:13:33 · 2785 阅读 · 0 评论 -
分布式协调器ZooKeeper3.4—概述
【ZooKeeper是Apache Hadoop下的开源软件,是一个分布式的协调器,本文来自于Zookeeper的官方网站,地址为:http://zookeeper.apache.org/doc/r3.4.5/zookeeperOver.html)】ZooKeeper: A Distributed Coordination Service forDistributed Applic翻译 2013-02-01 09:08:42 · 3888 阅读 · 0 评论 -
Linux下的IPC-信号量的使用
几个进程映射同一内存区是一种最快的IPC方法,但单纯使用mmap,各进程之间,会有数据“不一致”的风险,需要一种机制保护共享区在某一时刻只允许一个进程操作,这时就要使用信号量了。因此本文可认为是上一篇文章《Linux下的IPC-共享内存的使用》的继续。 本文以一原创 2011-09-01 17:14:01 · 6301 阅读 · 0 评论 -
Linux下的IPC-命名管道的使用
一、概述进程之间通过管道来进行通讯是一种常用的方法,顾名思义,管道就是一端进(写)一端出(读)的FIFO队列,这个队列由内核管理,有一定大小(一般是4k),有文章上提到,如果需要修改该缓存区,需要重新编译内核(修改linux/limits.h里PIPE_BUF的定义)。需原创 2011-09-28 08:16:51 · 7216 阅读 · 0 评论 -
Linux下的IPC-UNIX Domain Socket
一、 概述UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向消息的UNIX Domain Socke原创 2011-12-05 10:05:52 · 62928 阅读 · 6 评论 -
跨平台(Windows+Linux)的Socket通讯程序(二)—结构
上一篇"跨平台(Windows+Linux)的Socket通讯程序"给出了Socket通讯底层的一些函数的包装方法/类,同时屏蔽了操作系统(Windows/Linux)的不同。上一篇只是对通讯底层方法的封装,并没用涉及应用,这一篇将基于上一篇,并结合"跨平台(Windows+Linux)的线程辅助程序",讨论一个实用化的Socket通讯程序的体系结构。一、结构图下面给出了一个Socke原创 2012-04-05 11:04:30 · 5405 阅读 · 0 评论 -
跨平台(Windows+Linux)的Socket通讯程序(三)—通讯协议
跨机器的应用需要制定机器之间通讯的协议,本文在前两节的基础上,主要涉及通讯协议的制定与解析。一、通讯协议的确定通讯协议是机器之间交互的“语言格式”,一个合适的通讯协议,是跨机器应用的重要组成部分。制定通讯协议之前,应考虑以下几方面的内容:1.协议是一个通用的协议(例如是公司级的某应用领域的协议),还是某个特定应用的协议?【优缺点不说大家也知道,特定应用协议效率高,解析方便,通讯原创 2012-05-29 10:39:49 · 5373 阅读 · 0 评论 -
跨平台编程的利器—Qt:概述
Qt是什么,这里就不说了。以前只读过关于它的一些新闻,总体的印象是:它是一个C++语言的跨平台的编程库,最擅长做UI。最近因为项目上的需要,所有工作都必须转移到跨平台上来,因此对跨平台的东西就特别关注,尤其是C/C++方面的(因不用Java,就不提啦)。先将Qt的官方网站列出来:http://qt.nokia.com,本文属于介绍性质,所以一些内容来源于该网站。我们使用Qt,主要需要两个东原创 2012-06-12 17:17:20 · 2831 阅读 · 0 评论 -
基于事件的开源网络库—libevent:应用介绍
一、简介因memcached(见上一篇“数据缓存系统-memcached介绍”)使用了libevent作为它对外界事件(磁盘、网络等)的监控,所以对libevent就一同进行了了解、应用。按libevent的官网(http://libevent.org/)介绍,libevent是一个监视特定事件,提供回调函数的C++库,它可以监视的事件包括:1. 能以文件描述符表示的事件(网原创 2013-01-07 11:07:43 · 8050 阅读 · 2 评论 -
基于事件的开源网络库—libevent:应用实例
(接上一篇,本文给出具体应用的实例)七、应用实例本文例子不加修改在windows下运行(须定义宏WIN32,链接ws2_32.lib,libevent_core.lib),稍加修改(例如去掉windows所特有的socket初始化)可运行于Linux。1. 最简单的例子,定时器该例子创建了一个event_base,在此base上,增加了两个event,也就是设置了两个定原创 2013-01-09 08:56:19 · 14149 阅读 · 3 评论 -
C++语言实现的WebService开发库—gsoap应用实例
(接上篇,本文给出gSOAP的实例,gSOAP的版本为2.8.8) 四、应用实例上节介绍了gSOAP的应用有两种,大部分介绍gSOAP的文章,都以第一种为主,其实第二种应用包含了第一种,所以文本只介绍第二种应用。本文的例子中,前提是通讯协议(格式)已定,webservice名已定,我们需要自己编写xml schema及wsdl文件。1.xml schema 这部分内容不属于原创 2013-01-25 18:07:44 · 12058 阅读 · 0 评论 -
C++语言实现的WebService开发库—gsoap应用介绍
因为项目中需要使用WebService,所以将webservice的有关东西温故了一下。以前采用C#,这几乎不成什么问题,毕竟C#与WebService几乎是同时火起来的,所以C#天然地支持webservice就不奇怪了。Java的情况大致与C#一样,C/C++就不同了,还好有gSOAP,就用一下吧。一、gSOAP简介gSOAP是一个开发SOAP和XML应用(它们组成了webservice原创 2013-01-16 17:06:24 · 12583 阅读 · 10 评论 -
Tornado开发(一)—— 概述及构成
一.概述Tornado是用python写的异步web架构库,几行代码就可以写出httpsever和WebSocket server,它是采用python构建 web服务的几种流行的架构之一。关于Tornado与Django的区别,网文很多,不再描述,笔者选择Tornado而不是Django的主要原因同样是Django包揽太多,灵活度小,而Tornado比较适合中小性网站(不是从性能上讲),这是笔者...原创 2018-06-13 16:48:31 · 2915 阅读 · 0 评论