在Erlang运行时中,提供了几种机制来实现与其它程序或者语言的通信.一种为分布式Erlang,一种为端口,其中端口分为普通端口和链入式驱动端口,还有后面引入的NIFs. 分布式Erlang:一个Erlang运行时可以看作一个分布式Erlang Node,并通过名字访问它.一个Erlang Node可以连接和监视其他的Node,甚至在其他Node上面创建Process.消息传递和异常捕获在不同的Node之间是透明的,其分布式通信在底层上是使用的Tcp/Ip,并且现有库中有大量模块可以用于操作No…
这部分主要聊C Nodes.首先我们需要了解下Erlang的分布式系统: 分布式Erlang: 分布式Erlang是由一组相互通信的Erlang运行时组成,其中每一个运行时称为一个Node.不同Node上的进程通过消息通信(TCP/IP),并且Node对于进程来说是透明的.比如Pid ! Msg,调用进程不需要知道Pid是在哪个Node上.但是当使用进程的注册名进行消息投递时,如果投递的进程不在同一个Node上,这时我们需要带上Node的名称才行,因为进程注册名只是进程所属Node上的本地信息.…
前面聊了普通端口,今天聊下链入式驱动端口,以及NIFs. 链入式驱动端口 如上图所示,链入式驱动端口与Erlang虚拟机存在于同一个OS进程中. 在Erlang这边与普通端口类似,所有与链入式驱动端口的通信,也是通过一个Erlang的连接进程进行的,终止这个进程将同时终止端口.在端口创建之前,驱动需要先载入运行时(驱动以动态库方式提供),可以通过erl_dll:load_driver/1函数.然后就与普通端口一样,使用open_port/2函数打开. -module(complex5). -ex…
需要在linux网卡 驱动中加入一个自己的驱动,实现在内核态完成一些报文处理(这个过程可以实现一种零COPY的网络报文截获),对于复杂报文COPY下必要的数据交给用户 态来完成(因为过于复杂的报文消耗CPU太大,会导致中断占用时间太长).因此需要一种内核和用户态配合的通信机制,尝试了很多方式都不太理想,最后采用 netlink+内存映射的模式很好的解决了这个问题.Netlink是一种采用socket通信的机制,用于linux内核和上层用户空间进行通信的一 种机制,通过实践我认为netlink最大…
Linux下who命令之C语言实现 Step1:前期准备 首先要有一个清楚的认识:linux中一切皆文件 实现who命令,who命令也是Linux中的一个文件,那我们怎么找到它呢?我们可以"找男人"(man),终端下执行命令:man who 此处我装了汉译版的man手册,查看到这样一段提示如下: 所以退出man手册,执行命令:info who 找到如下图相关信息: 也可以找到下面这样的一段话,也就是说:who命令可以这样实现,读取utmp里边的内容,然后显示记录,最后关闭utmp,wh…
在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http://blog.sina.com.cn/s/blog_639403840100i5rt.html 下面先来了解一下什么是dos吧 dos 我们使用计算机接触最频繁的就是DOS.DOS是英文Disk Operating System的缩写,意思是“磁盘操作系统”,顾名思义,DOS主要是一种面向磁盘的系统软…
排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不超过30行),于是自己就实现了下 结果更蒙了 bubble_sort(L)-> bubble_sort(L,length(L)). bubble_sort(L,0)-> L; bubble_sort(L,N)-> bubble_sort(do_bubble_sort(L),N-1). do_…
微信使用的开发语言和文件很「特殊」. 小程序所使用的程序文件类型大致分为以下几种: ①WXML(WeiXin Mark Language,微信标记语言) ②WXSS(WeiXin Style Sheet,微信样式表) ③JS(Java,小程序的主体) 在语言方面,小程序看似重新定义了一套标准.但实际上,它们与「前端三件套」——HTML.CSS 和 Java——差不太多. 下面,我们就来对比一下小程序开发语言和「前端三件套」有什么异同点: HTML 与 WXML:两者差异比较大,如果之前没有接触过…
Linux下的 sniff-andthen-spoof程序编写 一.任务描述 在本任务中,您将结合嗅探和欺骗技术来实现以下嗅探然后欺骗程序.你需要两台机器在同一个局域网.从机器A ping IP_X,这将生成一个ICMP echo request包.如果主机IP_X存在,ping程序将收到一个echo reply,并打印出响应.您的嗅探然后欺骗程序在攻击者的机器上运行,攻击者通过嗅探包监视LAN.当它看到一个ICMP echo request时,不管目标IP地址是什么,您的程序应该立即使用欺骗技…
'*************************************************************************'**模 块 名:VB.net 2010下关联与程序图标设置 '**说 明:蓝凤凰设计商城 浴火凤凰-郭卫 | 蓝凤凰-魔灵 | 郭卫-icecept'**创 建 人:浴火凤凰-郭卫'**日 期:2015年10月15日 22:12:59'**修 改 人:浴火凤凰-郭卫'**日 期:'**描 述:QQ:493405998 | 微信\旺旺:icecept…
如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20)"…
使用Code::blocks在windows下写网络程序 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据General Public License,v3 发布 GPLv3 许可证的副本可以在这里获得:http://www.gnu.org/licenses/gpl.html 本文档根据GNU Free Documentation License 1.3发布 GFDL1.3许可证的副本可以在这里获得:ht…
一直以为这个东西不怎么重要,所以一直没怎么去记,已经第三次百度了,不想再有第四次. 如果你在终端下运行一个程序,如果这个程序正在运行,我们可以用 ctrl + z 的命令将这个程序挂到后台. desk@desk-ubuntu:~/mytest/test$ ./a.out 如果你运行一个阻塞程序,现在你就可以执行 ctrl+z 命令. 那么将出现 desk@desk-ubuntu:~/mytest/test$ ./a.out ^Z []+ Stopped ./a.out desk@desk-ubu…
在myeclipse调试状态下的tomcat程序,用jmeter测试,居然发生死锁,调试两天无果,直接运行tomcat而不通过myeclipse,无死锁,真是又好气又好笑..…
这里说的全屏抗锯齿,不是基于着色器的FXAA之类的方式,而是兼容性更好的,基于固定管线的多重采样方式. 先来说一下开发环境,我用的是VC2013+GLEW1.11. 要通过程序设置多重采样,首先需要进入控制面板,确定抗锯齿的设置是“根据应用程序而定” ,当然,这个设置的具体名称,不同的显卡厂商有不同的叫法. 接下来,就是重点了. Windows下要通过程序设置多重采样,必须使用wglChoosePixelFormatARB这个函数.目前网上基本都是自己去获取这个函数的接口地址,其实根本不用这么麻…
虽说vim很强大,但是个人感觉器代码提示功能不如visual assist来的强大.如何使用visual assist来实现代码的提示功能呢? 首先说明我的环境 : 宿主机是xp(O(∩_∩)O~还是xp的好使),虚拟机vmware + ubuntu 9.04 1.首先设置文件共享:安装vmware tools.安装笔记如下 : 将安装文件拷贝到/tmp路径下,解压,进入解压完的目录内,执行install文件.一路完全使用enter键,使用默认即可. 2 将/usr/include目录下的文件拷…
Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我还是很操蛋的在QT下写控制台程序了,但是写完程序后运行时出现了如下情况. 程序运行了,但是控制台中居然只有一个光标在那儿跳啊跳.由于百度的姿势不对,废了好多时间,终于明白是因为qt creator不支持Gnome默认的终端gnome-terminal. 所以要换成XTerm的控制台. 具体的解决方式…
ubuntu12.04下编译opencv程序 1.在ubuntu下安装好 opencv后(建议使用apt-get install 来安装) 2.使用程序FaceExaple.c来进行测试程序 #include "cv.h" #include "highgui.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h>…
最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到Linux下有没有这么一个命令,能够找到一个可执行文件运行时所依赖的库文件,百度一下,还真的有ldd命令. ldd的作用是打印可执行文件依赖的共享库文件,它是glibc的一部分: root@zhangyingxiu-K43SJ:~# ldd --helpUsage: ldd [OPTION]...…
ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } 编译: javac HelloWorld.java 此时会在当前文件夹生成 HelloWorld.class…
原文地址:http://www.vcerror.com/?p=1483 问题描述: 用VC2013编译了一个程序,在Windows 8.Windows 7(64位.32位)下都能正常运行.但在Win XP,Win2003下运行时,却报错不能运行,具体错误信息为"指定的可执行文件不是有效的 Win32 应用程序". 用VS2012或VS2013在win7下编写的程序在XP下运行就出现"不是有效的win32应用程序 问题分析: 用eXeScope打开该exe,发现操作系统需求为&…
在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法. 先确定 libclntsh.so.11.1 所在目录: [oracle@localhost ~]$ locate libclntsh.so.11.1 /usr/local/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1 切换到 root 用户执行: [oracle@localhost]$ su Password: 把 libclntsh…
在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java    会提示未找到指令,但用java -verison测试环境变量是没问题的 百度了好久,说的很复杂,重新再linux配置环境变量,输入 vi /etc/profile进入,添加以下代码: export JAVA_HOME=/usr/local/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH export CLASSPA…
上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel模块,因为我们先前主要分析的split_1_*对应的是rmergel,我们先从rmergel查看,如下 ....................................................... split_1(X, Y, [], R, Rs) -> rmergel([[Y, X…
cc -mno-cygwin foo.c 1.$ ps PS的相关用法: QuoteUsage ps [-aefl] [-u uid]-f = show process uids, ppids-l = show process uids, ppids, pgids, winpids-u uid = list processes owned by uid-a, -e = show processes of all users-s = show process summary-W = show wi…
0. 说明  Windows 下开发 MapReduce 程序部署到集群 1. 前提 在本地开发的时候保证 resource 中包含以下配置文件,从集群的配置文件中拷贝 在 resource 中新建 mapred-site.xml(仅做测试使用,打包的时候删掉) <?xml version="1.0"?> <configuration> <property> <name>mapreduce.framework.name</name&…
1.先说下Ubuntu14.04系统开机紫框的问题: Grub theme:黑色屏幕出现紫色边框 There's a minor typo on the grub theme which produces a black screen with purple border before the grub menu is drawn and on Plymouth start. AIUI, there's a `!` (negation) missing before the background…
Ubuntu下删除卸载程序图标 方法一:直接在终端输入命令alacarte.可以任意增.改.隐藏.显示菜单,但无法删除菜单,即使拥有root权限. 方法二:注意几个目录和文件./usr/share/applications/下的desktop文件/usr/share/applications/mimeinfo.cache文件~/.local/share/applications下的desktop文件~/.local/share/applications/default.list目录下的文件~/.…
Linux下发布QT程序 概述 无论在windows下还是在linux下,可执行程序的运行都依赖于相关的运行库,我们需要将依赖的库找到放到特定的位置,让可执行文件能够找到.在不知道可执行文件依赖哪些库时,有时可以让它自己告诉你,例如直接运行程序会输出缺少的库名,执行ldd命令查看可执行文件的依赖库. 所以发布程序就是将必要的文件放到指定的位置,并修改某些系统配置. 我发布的环境为X86下的ubuntu 10.04-desktop. QT程序依赖的库 在linux中,一般依赖的库会放在/usr/l…
http://www.runoob.com/w3cnote/programming-intro.html 各类程序开发语言概述, 点击查看大图:…