自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 WireShark使用lua接口截获网络数据

wireshark可以使用lua来扩展wireshark的功能。 例如你可以用wireshark结合lua来做一个截获http传输并存储到磁盘的脚本。 首先定义一个监听器用来监听http数据包。local tap = Listener.new("http")然后定义里需要截获的分析好的数据,这需要使用Field对象。 例如local host = Field.new("http.host")-

2016-04-01 15:58:54 4841

原创 解线性互补问题(LCP)

线性互补在数学上的提法 y=Ax+by=Ax+b yTx=0y^Tx=0 x≥0,y≥0x\ge0,y\ge0 满足这三个条件的x,y就是线性互补问题的解。 其中A是一个nxn矩阵,b,y,x是nx1向量。x≥0x\ge0和y≥0y\ge0意思是向量的每一个元素都大于等于零。A和b是已知的求x,y。

2016-03-02 21:29:30 5968 1

原创 有用的链接

关系型数据库查询原理 关系型数据库是如何运作的(上)编译原理体素渲染

2016-02-22 17:29:58 490

原创 lua io函数

ioio库提供两种io操作风格。第一种使用隐含的文件描述符,有操作设置默认的 输入文件和输出文件。第二种是明确的文件描述符。当使用明确风格时,所有的 操作由表io提供。|io.open|返回文件描述符和它们的操纵方法。 表io也提供3个于定义的文件描述符io.stdin,io.stdout,io.stderr。I/O库绝不 会关闭这些文件。 I/O函数在出错时返回nil(加一个错误消息和一

2016-01-26 14:58:53 3145

原创 lua os函数

osos.clock ()返回一个CPU时间,秒级精度。 os.date (format[,time]])返回一个字符串或者一个包含日期和时间的表,格式由format给定。 如果给出time参数,格式化输出time描述的时间(看|os.time|),否则data格式化当 前时间。 如果format开始于’!’,日期格式为CUT(标准时间)。这个可选操作后面,如果format 是字符串’**t

2016-01-26 14:56:58 1078

原创 lua table函数

table记住每当操作需要表的长度,表需要有正确的序列或者有__len元方法。 所有的函数忽略non-numeric key参数。 为了性能考虑,所有表函数使用raw模式。table.concat (list[,sep[,i[,j]]])给定一个表list所有的元素都是string或者number组成,函数concat 返回字符串list[i]..sep..list[i+1]..sep..li

2016-01-26 14:55:01 811

原创 lua重要函数

_G全局变量。Lua自己不使用这个变量。改变它的值不会影响任何环境。_ENV_VERSION全局变量(不是一个函数),存储当前Lua版本号。当前这个值是”Lua5.2”RegistryLua提供一个注册表,一个预定义表C代码可以使用它来存储Lua值.这个注册表 总是使用伪索引LUA_REGISTRYINDEX来定位.C代码可以存储数据进入该表. 但是要小心选择键值不要和其他库冲突.典型的你能将你

2016-01-26 14:52:16 2160

原创 Lua string函数说明

string函数string.byte (s,[,i[,j]])返回字符串内部编码s[i],s[i+1],...,s[j]。i默认是1,j默认是i;和|string.sub|规则相同。内部编码不一定可移植。 string.byte("hello",1,5)在mac上返回104,101,108,108,111string.char (…)接收零个或多个整数。返回由参数编码组成的字符串

2016-01-26 14:46:43 1007

原创 lua 字符串模式匹配

string模式 patternpattern魔法字符包括^ $ ( ) % . [ ] * + - ?,如果要在 pattern表示魔法字符可以使用%进行转义,如%.表示. . 所有字符 %a 字母a-z A-Z %c 控制字符 %d 单个数字0-9 %g

2016-01-26 14:41:15 450

原创 ODE数学运算

初始化将实数数组都填成0或者某个值,其中n是元素个数。ODE_API void dSetZero (dReal *a, int n);ODE_API void dSetValue (dReal *a, int n, dReal value);向量点积返回两个n维向量的点积,如果n<=0返回0ODE_API dReal dDot (const dReal *a, const dReal *b, in

2016-01-13 16:52:59 1895

原创 ODE的线程模型

dxWorld线程模型dxWorld继承dxThreadingBase,dxIThreadingDefaultImplProvider用来实现多线程调度。 dxIThreadingDefaultImplProvider仅用来将dxWorld中的实现传送给dxThreadingBase。 dxThreadingBase封装了一个多线程调度接口,但是内部它将具体的事务委托给具体的实现。 dxThr

2016-01-12 15:30:26 723

原创 zeromq实例分析

前言这个例子是zeromq指南中的一个例子(peering3),你去这个地址可以看到例子的原文。当然原文并没有详细的解析这个例子,但是你把这个例子搞懂了zeromq基本就算入门了。介绍在这之前先看看它要解决的问题到底是什么。让我们先看这样的一种模型,你有很多客户,很多的工人,你还有一个中心用来将客户的请求发给工人,工人处理完将结果发给客户。工人可以任意的增加,客户也可以任意的增加。中心将客户的任务分

2015-12-31 16:24:41 3412

原创 zeromq模式介绍

REQ-REP模式请求回复模式,REQ方先发后收,send-recv。REP方先收后发,recv-send。REQ和REP不停的重复它们的操作循环。REP类似于一个http服务器,REQ类似于客户端。一个REP可以连接多个REQ端,REP顺序处理REQ的请求。PUSH-PULL模式推拉模式,PUSH发送,send。PULL方接收,recv。PUSH可以和多个PULL建立连接,PUSH发送的数据被顺序

2015-12-30 16:12:04 4486

原创 zeromq封包

zeromq支持一种叫做多部分消息的结构(multipart messages)。就是说一个消息可以被分成多个部分。多部消息要么收不到要么完全受到,不存在收到一部分的问题。zeromq就是通过多部消息进行封包。static ints_sendmore (void *socket, char *string) { int size = zmq_send (socket, string, st

2015-12-28 16:58:01 1796

原创 为什么需要使用zeromq

现在的许多应用是包括跨越不同网络的组件,LAN或者Internet。因此许多应用做了消息机制。另一些开发人员使用消息队列产品,但是大多数时候他们自己写,使用TCP或者UDP。这些协议并不难用,但是从A发送几个字节到B和一个可靠的消息机制有很大的区别。 让我们看看我们将面临什么问题,当我们开始使用TCP时的一些经典问题。任何可重复使用的消息层都需要解决部分和全部。 - 我们如何处理I/O?难度我们

2015-12-28 13:48:17 1589

原创 zeromq退出与linger值的设置

默认情况下zeromq的LINGER值被设置为-1,就是说如果网络读写没有进行完是不能退出的。例如你用一个zeromq的socket发送数据,但是数据没有发送出去。那么你调用zmq_term()终止zeromq上下文将阻塞,直达指定的数据正常发送。 你可以使用zmq_setsockopt来设置一个LINGER值。 如果LINGER被设置为0,那么zmq_term时将离开返回,并丢弃一切未完成的网

2015-12-22 14:00:47 5040 1

原创 解决NDK编译问题member at n is not an ELF object

当使用ndk-build链接libzmq.a库的时候出现:error: G:\source\cocos2d-x/external/zeromq/prebuilt/android/armeabi/libzmq.a: member at 69836 is not an ELF object问题是因为没有使用ndk带的ar来进行打包。 解决办法先解开全部的.o文件,然后在重新使用ndk带的ar命令进行

2015-12-09 11:43:36 5103

原创 libsodium,zeromq编译问题

使用msvc编译libsodium生产DLL需要定义下面的宏。export CPPFLAGS=-DSODIUM_DLL_EXPORT./configure --host=i686_pc_cygwin --enable-shared --disable-static在Makefile中删除-DHAVE_PID=1 删除 -DHAVE_EMMINTRIN_H=1 -DHAVE_TMMINTRIN

2015-12-07 15:22:22 2927

转载 USING THE ANDROID TOOLCHAIN AS A STANDALONE COMPILER

It is now possible to use the toolchains provided with the Android NDK as standalone compilers. This can be useful if you already have your own build system, and only need to ability to invoke the cros

2015-12-04 09:12:41 739

原创 libtool在产生DLL中遇到的问题

在windows下使用msvc编译时,libtool有可能报告”warning : undefined symbols not allowed in i686-pc-cygwin shared libraries“这使用无libtool缺少参数 -no-undefined参数简单的处理可以修改Makefile文件的编译规则。要加入到LDFLAGS中,例如库libzmq_la_LDFLAGS=-no

2015-12-03 11:32:11 1892

原创 MSVC链接参数

编译器控制的链接操作编译器CL没有/c选项时自动的调用linker。CL提供了一些参数控制linker。下面列出一些影响链接的CL参数。 CL参数 CL传入LINK的对应参数 不是.c,.cxx,.cpp,.def的文件 这些文件都被传输给link作为输入 filename.def /DEF:filename.def /Fnumber /STACK:number /

2015-12-01 17:31:30 1153

原创 MSVC编译参数

msvc的命令行编译链接命令cl.execl命令格式CL [option…] file… [option | file]… [lib…] [@command-file] [/link link-opt…] 选项 用途 option 参数可以使用/或者-,具体含义可以使用/HELP option看到解释。 file 一个或者多个源文件,.obj文件或者。lib文件,CL编译源文件

2015-12-01 16:47:32 5037

原创 configure.ac范例二

变量在configure.ac,makefile.am,makefile,config.h中怎么传递。 比如你如何更具configure的参数让一部分源代码加入到编译,或者根据不同的cpu或者平台决定哪些代码需要编译哪些不编译。 AM_CONDITIONAL (conditional, condition) 首先开头不是AC而是AM它是一个automake宏。在configure.ac中使用,

2015-11-30 15:45:30 1274

原创 configure.ac范例一

检查头文件AC_CHECK_HEADERS([headers]) 例如:AC_CHECK_HEADERS([unistd.h windows.h])这个宏将在当前建造环境下检查unistd.h,windows.h是否存在。并将两个参数写入到配置头文件中。一般是config.h,你可以使用AC_CONFIG_HEADERS([headers])来指定。AC_CONFIG_HEADERS([confi

2015-11-30 14:27:05 7610

原创 autotool,libtool实践二

简单的例子: 我们使用strip.c、procpath.c创建动态库libstrip.dll 然后编译ah.c并连接libstrip.lib产生执行程序ah.exe Makefile.am如下:lib_LTLIBRARIES=libstrip.lalibstrip_la_SOURCES=strip.c procpath.clibstrip_la_LDFLAGS=-no-undefined

2015-11-27 11:26:27 659

原创 autotool编译实践

1.libtool 在windows下编译时不加-no-undefined将不产生动态库。 -avoid-version可以去掉库的版本。2.libtool脚本中max_cmd_len=8192可能会带来问题,当工程比较大文件列表很长超过8192时,在windows下将会出问题,我在编译libsodium时就出现过问题,简单的增加可以解决问题。3.config.sub脚本会检查host,看看是不是

2015-11-26 12:06:04 797

原创 autotool 交叉编译

等待建造。。。

2015-11-26 11:47:40 812

转载 使用 GNU Libtool 创建库

这篇文档向大家介绍 GNU Libtool 的用途及基本使用方法,同时描述如何结合 GNU Autoconf 和 Automake 来使用 Libtool。介绍在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对于开发人员,如果尝试将使用动态库的软件在这些系统之间移植,需要参考枯涩难懂的系统手册,以及修改

2015-11-25 11:02:04 391

转载 调试 configure

当程序不能编译时怎么办通常,在软件包的 README 文件中只能找到非常简单的“编译说明:运行 configure,然后运行 make”。但是,这样行不通时怎么办?在本文中,Peter Seebash 讲述了当自动的配置脚本失效时应该如何去做——以及作为开发者您应如何尽量避免这种错误。毕竟,如果您的程序无法编译,其结果将和您的程序编译后不能运行一样,您的用户会减少。现在许多开放源代码的程序都会附带有

2015-11-24 15:17:26 411

转载 调试 make

make 工具如 GNU make、System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具,但是每个 make 工具之间又有所不同。本文将介绍 makefile 的结构,避免如何在创建 makefile 时出现一些共同的错误,并探索如何修复或解决可移植性问题,还为解决突发的问题提供了一些技巧。大部分 UNIX® 和 Linux® 程序都是通过运行 make

2015-11-24 14:42:20 535

转载 使用 GNU Libtool 创建库

原文介绍在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对于开发人员,如果尝试将使用动态库的软件在这些系统之间移植,需要参考枯涩难懂的系统手册,以及修改相应的 Makefile,这一工作是乏味的,并且具有一定的难度。 使用 GNU Libtool 可以容易的在不同的系统中建立动态链接库。它通过一个称为

2015-11-24 10:06:25 386

转载 Shell脚本调试技术

一. 前言shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言相比,shell解释器缺乏相应的调试机制和调

2015-11-23 21:08:31 1092

原创 怎么在程序内部确定程序自己的绝对路径(windows,linux)

在linux下可以这么实现char * get_process_path( ){ char arg1[20]; char exepath[1024 + 1] = {0}; sprintf( arg1, "/proc/%d/exe", getpid() ); readlink( arg1, exepath, 1024 ); return strdup(exepa

2015-11-19 10:55:49 369

原创 execl,execv说明

int execl(char * cmdfile,char *cmd,...);第一个参数是命令文件,第二个可以和第一参数相同也可以是命令的文件名,后面是字符串参数,最后一个一定要是NULL结束。 例如:execl("/usr/bin/hello","hello","arg1","arg2",NULL);int execv(char * cmdfile,char *arg[]);arg[0]是命令

2015-11-18 22:05:38 987

原创 autotools例子1

建造中

2015-11-17 23:11:40 488 1

原创 编写Makefile.am

Makefile.am将指明工程需要哪些源文件,建造的是什么,如何安装它们。 具体语法如下: option_where_PRIMARY = targets … targets是要建造的目标 PRIMARY可以是下面的一个: 可能值 解释 PROGRAMS 目标是可执行程序 LIBRARIES 目标是静态库 LTLIBRARIES 目标是动态库 HEADERS

2015-11-17 22:57:55 3781

原创 编写configure.ac

configure.ac由一些宏组成 最基本的组成可以是下面的AC_INIT([PACKAGE], [VERSION], [BUG-REPORT-ADDRESS])# Checks for programs.# Checks for libraries.# Checks for header les.# Checks for typedefs, structures, and compi

2015-11-17 17:52:03 11559

原创 autotools 使用二

产生configure需要三个文件 configure.ac Makefile.am src/Makefile.am (参考我的另外两篇文章编写configure.ac和编写Makefile.am) 编辑好这几个文件就可以产生configure脚本,和config.h.in,Makefile.in,src/Makefile.in configure.ac主要初始化一些信息,检查编译器,检

2015-11-17 16:52:16 779

原创 Autotools使用一

autotools基础一般在linux上编译一个工程需要先调用./configure,大部分linux开源项目都使用autotools编译架构,都会有configure这个脚本。通过在执行./configure,产生Makefile,src/Makefile,config.h,为下一步编译做准备。随后调用make进行编译。一般步骤如下:./configuremakemake checksuP

2015-11-17 15:30:43 1412

原创 zeromq push-pull 模式

举一个例子,在并行处理中的一个经典情形。一个任务分发者拆解任务并进行分配,很多执行者领取任务然后执行,最后执行者将结果发送给一个收集者。见下图: - 最上面是产生任务的 分发者 ventilator - 中间是执行者 worker - 下面是收集结果的接收者 sink任务分发者首先给接受者sink发送“0”表示开始处理,然后给执行者发送一个休眠时间代表它的工作负载。// Task ven

2015-11-10 16:41:54 11952

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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