2016-02-04 ruki
TBOX封装了一套跨平台的异常捕获实现,来模拟windows的seh异常处理功能,而且是线程安全的。 在linux/mac下的实现 使用signal 捕获异常信号 使用sigsetjmp保存现场寄存器和信号掩码,出现异常后使用 siglongjmp 跳转到异常处理过程,并恢复状态 使用线程局部存储维护 sigjmpbuf 寄存器现场状态堆栈,保证多线程安全,并且可以实现多层嵌套捕获处理。 在windows下的实现 这个就不用多说了,在vs下直接用 try、except 关键字就行了,如果在mingw下编译, 通过 setjmp实现也很方便。 具体使用 注: 由于使用setjmp 进行寄存器现场保护, 如果使用整型局部变量, 继续阅读 »
2016-12-14 ruki
lua原生并没有提供try-catch的语法来捕获异常处理,但是提供了pcall/xpcall等接口,可在保护模式下执行lua函数。 因此,可以通过封装这两个接口,来实现try-catch块的捕获机制。 我们可以先来看下,封装后的try-catch使用方式: ```lua try { -- try 代码块 function () error("error message") end, -- catch 代码块 catch { -- 发生异常后,被执行 function (errors) print(errors) end } } ``` 上面 继续阅读 »
2016-06-09 Lu Huang
本节实现的是使用内建摄像头捕获视频,并显示视频的每一帧以实现视频的播放。 创建摄像头对象 逐帧显示实现视频播放 实现过程 引用 不再赘述,代码如下。 python import cv2 import numpy import matplotlib.pyplot as plot 创建摄像头对象 使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。 python cap = cv2.VideoCapture(0) 逐帧显示实现视频播放 在while循环中,利用摄像头对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间 继续阅读 »
2015-08-01 Lim Geng
分组 非捕获分组 在正则表达式中遇到小括号就可以认为是一个分组,比如/(a)bcda\1/,(a)就是一个分组,\1代表第一个分组。这种分组可以成为 捕获分组。 var reg = /(a)bcd\1/ console.log(reg.test('abcdef')) // false console.log(reg.test('abcdaef')) // true \1是个占位符,意思是这里的内容匹配的和第一个分组的一样,比如/(xyz)bcd\1/实际上就等同于/(xyz)bcdxyz/, 与其相对的就是非捕获分组,比如/(?:a)bcda/,(?:a)就是非捕获分组,不能通过\1引用 var reg = /(?:a 继续阅读 »
2016-03-15 demon7452
Java面试题总结(其一) 1、sleep和wait方法的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在 任何地方使用 synchronized(x){ x.notify() //或者wait() } sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 继续阅读 »
2016-06-16 Lu Huang
本节实现的是使用OpenCV里自带的函数,检测出视频里图像中的蓝色和天蓝色、青色,比如我的手机背景、我衣服上的蓝色格子,墙砖的蓝色和学生证照片上的蓝色背景。 设置“蓝色”HSV范围 BGR转HSV 捕获摄像头视频 获取蓝色部分mask 图像按位与操作 显示蓝色部分图像 实现过程 定义视频对象 视频对象用于捕获摄像头视频流。 ``` python import cv2 import numpy as np cap = cv2.VideoCapture(0) ``` 设置HSV中蓝色、天蓝色范围 这里主要参考了这个博客,我设置的颜色范围如下。 ```python set blue thresh lower_blue= 继续阅读 »
2016-06-11 Lu Huang
本节实现的是使用内建摄像头捕获视频,并保存视频。 创建摄像头对象 逐帧显示实现视频播放 保存摄像头的每一帧图像 实现过程 引用 不再赘述,代码如下。 python import cv2 import numpy 创建摄像头对象 使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。 python cap = cv2.VideoCapture(0) 定义写入视频格式和写入对象 利用cv2.cv.FOURCC(*'XVID')定义视频格式,然后创建视频写入对象。 ``` python Define the codec and create 继续阅读 »
2016-06-09 ruki
源码 更新内容 此版本重构了90%的代码 新特性 增加task任务机制,可运行自定义任务脚本 实现plugin扩展机制,可以很方便扩展实现自定义插件,目前已实现的一些内置插件 增加project文件导出插件(目前已支持makefile的生成,后续会支持:vs, xcode等工程的生成) 增加hello xmake插件(插件demo) 增加doxygen文档生成插件 增加自定义宏脚本插件(支持动态宏记录、宏回放、匿名宏、批量导入、导出等功能) 增加更多的类库用于插件化开发 实现异常捕获机制,简化上层调用逻辑 增加多个option进行宏绑定,实现配置一个参数,就可以同时对多个配置进行生效 增加显示全局构建进度 继续阅读 »