概述
此版本主要增强了vs201x工程的生成,以及支持vs2017编译环境,并且针对archlinux提供更加方便的aur安装。
项目主页
查看文档
详细更新内容如下:
新特性
添加aur打包脚本,并支持用yaourt包管理器进行安装。
添加set_basename接口,便于定制化修改生成后的目标文件名
改进
支持vs2017编译环境
支持编译android版本的rust程序
增强vs201x工程生成插件,支持同时多模式、架构编译
Bugs修复
修复编译android程序,找不到系统头文件问题
修复检测选项行为不正确问题
#57: 修复代码文件权限到0644
构建演示
继续阅读 »
tbox里面针对三个正则库(pcre/pcre2/posix)进行了封装,实现接口统一和跨平台处理,只要xmake在编译配置的时候自动检测到其中一种库,就可以使用了,一般会优先使用pcre2。
如果你不想过多的依赖第三方库,可以切换到posix的正则,调用 xmake f --pcre=false --pcre2=false 把pcre的库禁用了就行了。
首先给个最简单的匹配单个子串的例子:
```c
// 执行简单匹配,第二个参数是匹配模式,默认传0就行了
tb_vector_ref_t results = tb_regex_match_done_simple("(\w+)\s+?(\w+)", 0, "he
继续阅读 »
新特性
自动检测所有系统libc接口,优先使用系统版本
支持自定义内存分配器,并且能够在debug模式下,获取每次分配的代码位置信息,用于自定义追踪
增加轻量级static_pool来维护整块buffer的内存分配,适合局部管理部分内存,pool虽然也能维护,但是底层基于large_pool,比较重量级,适合全局管理内存
增加stream快速读取全部数据到string的接口
增加adler32 hash算法
增加tb_memmem接口
采用pcre/pcre2/posix regex实现正则表达式库
改进
优化stream,支持对字符设备文件的读写
修改tb_init接口,增加allocator自定义内存分配器参数,实现用户的侵
继续阅读 »
本节实现的是读取视频,并显示视频的每一帧以实现视频的播放。
创建摄像头对象,指向文件
逐帧显示实现视频播放
实现过程
引用
不再赘述,代码如下。
python
import cv2
import numpy
创建视频对象
使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。
python
cap = cv2.VideoCapture("../test.avi")
逐帧显示实现视频播放
在while循环中,利用视频对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间检测到了键盘输入q,则退出,即关闭窗口。
pyt
继续阅读 »
今天谈谈“层”这个字,如果要让我在计算机科学中挑选一个最神奇的字,我会选择“层”字,因为生活中随处可见使用“层”的例子。
先从我们身边的电脑说起,电脑就是一个典型的层次化产品的例子。从下往上看,第一层是看得见摸得着的硬件,比如CPU、内存条和硬盘等,第二层是BIOS(Basic Input Output System),即基本输入输出系统,主要作用是检测硬件和引导操作系统,第三层就是操作系统,比如Windows、Linux和Mac等,第四层就是我们常用的软件比如微信、QQ和浏览器等,这样做有什么好处呢?其实最主要的目的就是为了简单方便。你可以想象下如果使用QQ需要特定的硬件、特定的BIOS和特定的操作系统,那估计就没几个人使用了。
继续阅读 »
默认编译出来的tbox库,支持的功能比较全,带有所有模块,并且支持ssl(依赖polarssl/openssl)、gzip(依赖zlib)、database(依赖sqlite3/mysql)。
因此生成的库文件偏大,而且会依赖三个第三方库,如果你用不到上述三个模块,完全可以自己配置编译所需要的模块,减小生成库的大小。
新版采用xmake进行构建,裁剪模块已经是相当方便了,默认情况下回去自动检测依赖的第三方库进行编译。
如果要禁用某个第三方库或者模块,只要执行xmake f --xxxx=false就行了,所有第三方库依赖都是可选,完全可以禁用。。
例如,禁用所有第三方库支持:
bash
xmake f --pola
继续阅读 »
创建对象
工厂模式
工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题
缺点:没有解决对象识别问题,所有对象都仅是Object的实例
```
function createPerson(name,age,job)
{
var o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){
alert(this.name);
};
return o;
}
var person1=createPerson("Jack",29,"Engineer");
//检测对象类型
继续阅读 »
文/Robin
今天给大家推荐一款软件,名叫「Macs Fan Control」。它是做什么用的呢?
Macs Fan Control 是一款好用的 Mac 硬件温度监控软件,使用该软件可以有效地检测电脑中每个硬件的实时温度,并拥有控制风扇转速、调节系统启动的特色,可以有效地解决电脑部分硬件温度过高的问题,可以有效地保护电脑硬件安全,提高使用寿命。
Macs Fan Control 界面长这样。
Macs Fan Control 可以在 Mac 和 Windows 下运行,本身是免费的,Pro 版本支持自定义 fan presets。
至于笔者为什么要用呢?主要是今年维修 MacBook,真是一个麻烦的事情。有过维
继续阅读 »
原作者:kiwik
直接使用ISO镜像和没有ephemeral卷的规格创建虚拟机,创建成功,但是安装OS到写分区表的步骤失败,检测不到可用的disk device。
直接使用ISO镜像和有ephemeral卷的规格创建虚拟机,创建成功,安装OS成功,但是最后安装完成,OS提示弹出cdrom后重启,OpenStack没有弹出cdrom的接口,重启后,再次进入安装OS的界面。
直接使用ISO镜像和有ephemeral卷的规格创建虚拟机,创建成功,安装OS成功,然后通过nova image-create导出镜像成功,用这个镜像再次创建虚拟机,虚拟机启动后进入安装OS的界面。
通过qemu-img convert命令将iso格
继续阅读 »
上段时间组内解决的一个奇葩内存泄露问题, 找到最终原因时发现真是奇坑无比的一个原因.
一开始怀疑某个逻辑会导致dict引用数一直增加, 或是其他对象始终不释放, 导致内存一直在涨, 期间开启gc collect也没用.
使用memory grapher 等内存泄露工具检测, 打印出一段时间对象的增长量, dict, list等数据结构的增长量, 从打印信息看虽然有一定问题, 但是确实不可能会导致那么严重的内存泄露, 我们某个游戏服有时甚至会突然从300MB进程内存, 很快就上涨到3GB.
继续阅读 »