Machine

SCTP 库的简述和代码 (3)

∥☆過路亽.° 提交于 2019-12-06 04:16:37
--- 如转请保留作者信息 jundai2009@gmail.com 接这上回说, 上面, g_sctp_fsm 是状态列表入口, 不同的状态下,处理网络包的方法不一样, 就是说处理的API不一样, 那这API就在这里选择. 状态表格中, 左边fsm_handler_fn 是执行动作, 右边是下面将要进入的状态. 关于这个库的状态机设计, 还有下面两个比较重要的宏 #define SCTP_TRANSFER_STATE(assoc, new_state) do {\ if ((assoc)->cur_state != new_state) {\ sctp_enter_state(assoc, new_state);\ assoc->cur_state = new_state;\ }\ }while(0); #define SCTP_PROC_PKG(instance, assoc, pkg, parsed_info, new_assoc) do {\ sctp_state old_state, new_state; \ old_state = (assoc) ? (assoc->cur_state):SCTP_STATE_CLOSED;\ new_state = (g_sctp_fsm[old_state] + (pkg))->new_state;\ new_assoc =

【讲古堂】状态机(二)

那年仲夏 提交于 2019-12-04 22:05:41
状态机 状态机的概念是来自硬件的。描述一系列状态转换的电路叫状态机。主要用来实现一个数字系统设计中的控制部分。运行模式类似于CPU,但和CPU相比,具有结构简单、易读易懂等特点。 对于无限个状态(无限状态机,Infinite State Machine,ISM)是难以检证的,所以这里所说的状态机通常是指有限状态机或有穷状态机,即Finite State Machine,FSM。 状态模式可以允许客户端改变状态的转换行为,而状态机则是能够自动改变状态,状态机是一个比较独立的而且复杂的机制。 状态机看上去就像是一个有向图,其中状态是图的节点,而状态转换则是图的边。 此外这些状态中还必须有一个初始状态和至少一个接受状态。 但是由于一些原因并不会执行初始化(initialization),而是直接通过一个节点进入状态是允许的,则此节点称之为进入节点(Entry Point)。 进入终了状态的节点称为退出节点(Exit Point) 转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中,因为预先定义的触发器的发生导致警界条件满足时进入目标状态(Target State)。 触发器(Trigger):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。 警界条件(Guard

OpenBR安装与编译过程

故事扮演 提交于 2019-12-03 05:12:53
转载请注明出处: Gaussic 。 原始文档地址: 这是链接 。 在安装的时候碰上几个说大不大说小不小的坑,折腾了很长时间,在此做个总结。 安装VS2013 首先要安装VS2013,官网上说装Express版本就行,我这边装了Professional中文版,除了编译的时候经常出现字符问题,其他没什么影响。 下载并安装 CMake 3.0.2 最好跟它的版本保持一致,以免入坑,下载地址: 这是链接 。 在安装过程中,记得选 Add CMake to PATH ,把CMake添加到环境变量里去。 下载OpenCV 2.4.11 理论上说新一点的版本也是可以的。最好保持一致,官网链接: 这是链接 。 解压到你想要解压的地方,官方放在了C盘,操作方便。 接下来就是编译了,先要打开VS2013 x64兼容工具命令提示,(开始菜单->所有程序->Visual Studio 2013->Visual Studio Tools里面)。 开始敲命令: $ cd C:\opencv-2.4.11 $ mkdir build-msvc2013 $ cd build-msvc2013 $ cmake -G "NMake Makefiles" -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DWITH_FFMPEG=OFF -DCMAKE_BUILD_TYPE

使用Oracle SQL Developer报错:Unable to find a Java ...

对着背影说爱祢 提交于 2019-12-01 22:04:31
1.环境 win7 x64,oracle 11g r2,jdk6 x64 2.问题 第一次启动Oracle SQL Developer的时候会让我们填写java.exe的路径,我在jdk安装目录下的bin中找到了java.exe,但是填写以后报如下错误: 3.原因 oracle 11g中安装的Oracle SQL Developer是32位的,而我们现在给他指定的java.exe却是64位的,所以会出现这种错误。 4.解决方法 1)从网上下载Oracle SQL Developer x64,然后替换原目录:D:\app\oracle\product\11.1.0\db_1\sqldeveloper下的32位的Oracle SQL Developer。这样重新启动Oracle SQL Developer 并制定java.exe的路径就可以了。 2)安装JDK6 x86,也就是32位的JDK,虽然我们的系统是64位的,但是也兼容32位的JDK。 上述两种方法均试过,都可以正常运行。 来源: oschina 链接: https://my.oschina.net/u/941309/blog/106531

OpenBr快速入门

心已入冬 提交于 2019-12-01 20:55:46
转载请注明出处: Gaussic 官方翻译加实践,基于Windows版本。 官网地址: 这是链接 。 这篇教程旨在使用一些有趣的例子让你熟悉OpenBR背后的思想、对象以及动机。注意需要摄像头的支持。 OpenBR是一个基于QT、OpenCV和Eigen而构建的C++库。它既可以在命令行使用 br 命令来使用,还可以通过C++或C的API接口来使用。使用 br 命令是最简单也是最快地起步方法,这篇教程中的所有例子都是基于 br 命令的。 首先,确认OpenBR正确地安装。 Windows版本的安装教程: 这是Windows版教程 。 如果是其他版本,请参照官网: 官网 。 官方文档存在一定错误,Windows版本可参照上面的链接。 在终端或命令行输入: $ br -gui -algorithm "Show(false)" -enroll 0.webcam 如果每一步都按照上面进行操作,你的摄像头应该打开了并且开始捕捉视频了。恭喜你,你正在使用OpenBR。注:如果是Windows用户请切换到 openbr\build-msvc2013\install\bin 目录下,也可以把这个目录加到环境变量里面。 现在我们来聊聊上面的命令到底发生了什么。 -gui , -algorithm 和 enroll 是OpenBR的一些flag,它们被用来指定 br 应用的指令操作

SenchaCmd堆空间分配错误的解决办法

余生长醉 提交于 2019-12-01 20:49:37
今天安装完SenchaCmd 还没来得及爽爽呢 一打开黑窗口 键入sencha 傻眼了。。。不知道神马情况 进入sencha目录 啊哈~ 看到一个sencha.jar 计上心来 怪不得在这之前要安装jre环境呢 新建一个mysencha.bat文件,内容如下: cd C:\Users\xue777hua\bin\Sencha\Cmd\3.1.1.274 java -jar sencha.jar %* 打开一个黑窗口,键入mysencha help generate app 哈哈 成功了! 这个SenchaCmd刚出来没多久,对windows平台的支持不是太好,也值得理解。 后续:后来发现了当前环境变量中有 SENCHA_CMD_3_0_0=C:\Users\xue777hua\bin/Sencha/Cmd/3.1.1.274 故而mysencha.bat代码升级为 java -jar %SENCHA_CMD_3_0_0%\sencha.jar %* 来源: oschina 链接: https://my.oschina.net/u/854191/blog/132057