2016-08-01 AllanChan
今天想和大家分享的是命令模式。下面还和之前一样,先给出基本的定义。 命令模式(Command) 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或纪录请求日志,以及支持可撤销的操作。 那么让我们简要的说一下命令模式的特点: 1. 它能比较容易地设计一个命令队列; 2. 在需要的情况下,可以较容易地将命令记入日志; 3. 允许接收请求的一方决定是否要否决请求; 4. 可以容易地实现对请求地撤销和重做; 5. 新的命令类不影响其他的类,因此增加新的命令类很容易; 6. 把请求一个操作的对象与知道怎么执行一个操作的对象分隔开; 继续阅读 »
2015-07-06 王财勇
首先说明一下我的安装环境: 操作系统:Win7 64位 SP1 Matlab: 2012a 64位& 2013a 64位(两个版本均试验过) Visual Studio:2010 sp1旗舰版 下面介绍具体的安装方法: more Windows SDK 7.1 的安装(Win 7 64bit,x64平台) 闲话少说,先准备素材。这里我已经为您准备好了一切。 Windows SDK 7.1 安装包 vs2010 sp1 VC-Compiler-KB2519277 注意:在安装VS2010时还自动安装了 Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319 及更高版本 继续阅读 »
2016-06-17 YongHao Hu
C++
Here is a simple example, what is the output of this program? ``` include using namespace std; int main() { float f = 0.0; int i = 5; f = (float)i; cout< 继续阅读 »
2016-06-01 JustWe
分析一个C语言的Lex & Yacc 程序 博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse 本节我们来分析一个能匹配C语言的Lex & Yacc 程序 Lex文件:http://www.lysator.liu.se/c/ANSI-C-grammar-l.html Yacc文件:http://www.lysator.liu.se/c/ANSI-C-grammar-y.html 也可以直接在我的github代码地址中进行下载。 先来分析Lex文件 ``` c D [ 继续阅读 »
2015-02-24 YongHao Hu
QNAN wiki上是这样说的: A QNaN is a NaN with the most significant fraction bit set. QNaN’s propagate freely through most arithmetic operations. These values pop out of an operation when the result is not mathematically defined. (details)[http://en.wikipedia.org/wiki/NaN] 我尝试过sqrt(-1), 1/0, NAN/NAN都不行 结果: 继续阅读 »
2016-02-04 ruki
TBOX封装了一套跨平台的异常捕获实现,来模拟windows的seh异常处理功能,而且是线程安全的。 在linux/mac下的实现 使用signal 捕获异常信号 使用sigsetjmp保存现场寄存器和信号掩码,出现异常后使用 siglongjmp 跳转到异常处理过程,并恢复状态 使用线程局部存储维护 sigjmpbuf 寄存器现场状态堆栈,保证多线程安全,并且可以实现多层嵌套捕获处理。 在windows下的实现 这个就不用多说了,在vs下直接用 try、except 关键字就行了,如果在mingw下编译, 通过 setjmp实现也很方便。 具体使用 注: 由于使用setjmp 进行寄存器现场保护, 如果使用整型局部变量, 继续阅读 »
2016-10-12 曹强
闭包是js中一个难懂又必须征服的概念,他的形成与变量作用域以及变量的生存周期密切相关。 变量作用域和生存周期 作用域,按字面理解,就是指变量的有效范围,超出这个范围就无法访问。 在函数中,里面函数可以访问外面的变量,但是外面无法访问内部变量。举个简单例子: var a = 1; var fun1 = function() { var b = 2; var fun2 = function() { var c = 3; alert(b); //2 alert(c); //3 } fun2(); alert(c); //c is not de 继续阅读 »
2016-10-12 曹强
用策略模式实现缓动动画 需求:让小球以各种缓动效果在页面中运动 动画开始前需要记录的: 小球所在原始位置 小球移动的目标位置 动画开始时的时间点 小球运动的时间点 之后,用setInterval创建一个定时器,定时器每19秒循环一次。 //缓动算法,此算法移植于flash var tween = { //t:动画已消耗的时间,b:小球原始位置,c:小球目标位置,d:动画持续时间 linear: function(t, b, c, d) { return c*t/d + b; }, reseIn: function(t, b, c, d) { ret 继续阅读 »
2016-06-26 ruki
xmake provides some project templates, you can easily create an empty project. Create a c++ console project: bash xmake create -l c++ -t 1 demo or xmake create --language=c++ --template=1 demo Create a c static library project: bash xmake create -l c -t 5 demo or xmake create --language=c 继续阅读 »
2016-11-09 YongHao Hu
go
虽然go1.5支持共享库,但是由于golang并不能像C语言一样通过export,头文件与.C文件分离,所以并不能实现与C语言一样,只提供头文件与共享库而不提供实现的方法。 go1.7引入了binary-package, 实现了以上C语言的功能,提供二进制包。 继续阅读 »