分类 编程 中的文章

LastBattle | 服务架构

服务器架构简图如下: 连线说明: 实线:表示客户端登录流程,①②③④⑤表示登录流程,详细解释见下文。 虚线:表示服务器间的连接,虚线箭头指向监听方。 架构说明: |英文名称|简称|中文名称|功能简介|单个大区需……

阅读全文

Cgo | 使用libevent库实现一个定时器

使用libevent库作为例子 下载 & 编译 & 安装libevent $ git clone https://github.com.cnpmjs.org/libevent/libevent.git $ cd libevent && mkdir build && cd build $ cmake .. $ make libevent实现的定时器 // main.cpp #include "event.h" struct event ev; struct timeval tv; void time_cb(evutil_socket_t fd, short event, void *argc) { printf("timer wakeup\n"); event_add(&ev, &tv); // reschedule timer } int main() { struct event_base *base = event_base_new(); tv.tv_sec = 2;……

阅读全文

Golang | builds

概述 通常我们会给每个产品环境设置不同的配置,比如 redis 要在开发环境就连接 localhost:6379,测试环境可能连接某一个主机的 redis。 如果放在 go 里面是否可行?因为 go 是编译二进制包,也没有动态加载这……

阅读全文

Cgo | 简单使用

使用自己的C函数 文件名:testC.go package main /* #include <stdio.h> #include <stdlib.h> void c_print(char *str) { printf("%s\n", str); } */ import "C" //import “C” 必须单起一行,并且紧跟在注释行之后 import "unsafe" func main() { s := "Hello Cgo" cs := C.CString(s) //字符串映射 C.c_print(cs) //调用C函数 defer C.free(unsafe.Pointer(cs)) //释放内存 } 说明: 1、g……

阅读全文

Libevent | 定时器

libevent 实现定时器流程 首先初始化libevent库,并保存返回的指针 struct event_base * base = event_init(); 实际上这一步相当于初始化一个Reactor实例;在初始化libevent后,就可以注册事件了。 初始化事件event,设置回调函……

阅读全文

FFmpeg | 画中画和视频多宫格处理

FFmpeg生成画中画 静态画中画 将视频sub.mp4视频文件缩放成宽 480 、高 320 的视频,然后显示在 视频 input.mp4,x坐标为0,y 坐标为0 的位置 ffmpeg -re -i input.mp4 -vf "movie=sub.mp4, scale=480x320[test]; [in][test]overlay [out]" -vcodec libx264 output.flv 显示在画面的右下角,则需要用到……

阅读全文