We create an empty console project first:
```bash
$ xmake create -P ./hello
create hello ...
create ok!👌
```
And xmake will generate some files:
```bash
$ cd ./hello
$ tree .
.
├── src
│ └── main.c
└── xmake.lua
```
It is a simple console program only for printing hello xmake!
```bash
$ cat ./src/main.c
incl
继续阅读 »
tbox的vector容器沿用了stl库中vector的命名,说白了就是以数组方式存储元素,也是整个容器库中最基础的容器之一。
当然,在c中用tbox的vector跟用stl的vector其实差不了太多,用起来都很方便。
先看个简单的例子熟悉下:
```c
// 初始化一个维护大小写敏感字符串的vector容器,第一参数设置元素自动增长大小,这里使用0表示默认大小
tb_vector_ref_t vector = tb_vector_init(0, tb_element_str(tb_true));
if (vector)
{
// 在头部插入元素
tb_vect
继续阅读 »
The algorithm is based on libtess2 here and we optimizated some implementation and fixed some bugs.
The differents between our algorithm and libtess2's algorithm:
We change the coordinate system and the sweep direction (sweep line by horizontal here).
We need not project the vertices because our graphic engine is 2d,
继续阅读 »
xmake-sublime插件深度集成了xmake和sublime text,提供方便快速的跨平台c/c++构建。
注:使用此插件,需要先安装xmake,更多关于xmake的使用说明,请阅读:文档手册,项目源码:Github。
特性
快速开始
语法色彩高亮
API输入自动提示和补全
状态栏信息
完整的命令列表
快速配置支持
构建和运行
快速宏记录和回放
编译错误提示和跳转
快速开始
编译错误提示和跳转
继续阅读 »
redis https://github.com/antirez/redis/blob/5.0/src/adlist.h
https://github.com/antirez/redis/blob/5.0/src/adlist.c
结构体的定义
结构体的实现,双向链表的相关定义于adlist.h中
节点:
```C++
typedef struct listNode {
struct listNode *prev; //前一个节点
struct listNode *next; //后一个节点
void *value; //节点的值
} listNode;
more
迭代器:
C++
typedef s
继续阅读 »
greenlet是Python众多协程实现技术中的一种,eventlet是基于greenlet实现的。而eventlet和libev又是gevent的核心。greenlet的上下文切换清晰易懂,可以结合IO事件循环构建出一些高效的事件处理逻辑。不同于yield类型的上下文切换,greenlet的上下文切换从表现形式上看更纯粹,可以直接switch到另一个greenlet,不用管目标greenlet是否已经在运行,不同greenlet之间处于完全对等的状态,可以相互switch。基于yield实现的协程往往只能切换回自己的直接或间接调用者,要想在嵌套的调用中切换出去是比较麻烦的。本质上是因为yield只能保留栈顶的帧,Python3对
继续阅读 »
随着公司的业务的发展有幸接触到OpenCV 这个图形库,这篇文章主要是总结一下在Mac 上使用OpenCV做一个动态的广告植入。
OpenCV 是什么:
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。
继续阅读 »
首先我们通过内置的工程模板创建一个空工程:
```bash
$ xmake create -P ./hello
create hello ...
create ok!👌
```
这个时候xmake将会产生一些工程文件,如下:
```bash
$ cd ./hello
$ tree .
.
├── src
│ └── main.c
└── xmake.lua
```
这个简单的程序仅仅只是为了打印输出: hello xmake!
```bash
$ cat ./src/main.c
include
int main(int argc, char** argv)
{
printf("hello xmak
继续阅读 »
序
终于有点时间重新回到正常的学习节奏。心里念念不忘GO语言,于是重温一下GO语言的语法,顺便记录下笔记。希望成为一个能实战的GO程序员。
哲学,思想
"21世纪的C语言"
简洁编程哲学的宣言,从长远来看,简洁依然是好软件的关键因素。
Go从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想。
继续阅读 »
iOS网络编程层次结构
iOS网络编程层次结构分为三层,从上往下依次为:
Cocoa层:NSURL,Bonjour,Game Kit,WebKit
Core Foundation层:基于 C 的 CFNetwork 和 CFNetServices
OS层:基于 C 的 BSD Socket
Cocoa层:是最上层的基于 Objective-C 的 API,比如 URL访问,NSStream,Bonjour,GameKit等,这是大多数情况下我们常用的 API。Cocoa 层是基于 Core Foundation 实现的。
Core Foundation层:因为直接使用 socket 需要更多的编程工作,所以苹果对 OS 层的
继续阅读 »