WireGuard 笔记

简介 WireGuard 是个 VPN, 多用于企业之间的数据安全传输. 准备 使用 Parallels Desktop 新建两台 CentOS 7.9 的 Linux 虚拟机, 分别命名为 vm01, vm02. # 关闭防火墙 systemctl stop firewalld.service # 安装 yum install -y epel-release elrepo-release yum install -y yum-plugin-elrepo yum install -y...

December 15, 2020 · 3 min

POSIX 线程

什么是线程 线程是一个进程内部的一个控制序列. 当在进程中创建一个新线程时, 新的执行线程将拥有自己的栈 (因此也有自己的局部变量), 但与它的创建者...

October 12, 2020 · 5 min

JavaScript V8 引擎入门

什么是 V8? V8 是谷歌开源的 JavaScript 解析器. 编译 通过 git 拉取的 V8 项目源码是不完整的, 缺少依赖, 只能通过 gclient 方式拉取源码. nodejs 是依赖 V8 作为 JavaScript 的运行环境的, 本文不...

October 10, 2020 · 2 min

C++ SFML 游戏客户端编程中的样板代码

记录一些阅读 «SFML Game Development» «SFML Game Development By Example» 等的样板代码, 以及做些笔记. 主循环 void Application::run() { sf::Clock clock; sf::Time timeSinceLastUpdate = sf::Time::Zero; sf::Time timePerFrame = sf::seconds(1.f/60.f); while (mWindow.isOpen()) { sf::Time dt = clock.restart(); // dt: deltaTime 两次循环时间差 timeSinceLastUpdate += dt; // 游戏世界中...

October 7, 2020 · 1 min

位运算笔记

位运算符 符号 描述 运算规则 & 与 AND 两个操作数都为 1 时,运算结果为 1 | 或 OR 两个操作数都为 0 时, 运算结果为 0 ^ 异或 XOR 两个操作数相同时运算结果为 0, 两个...

September 26, 2020 · 2 min

C 语言编译流程

编译 编译分为多个步骤: 预编译: 处理源文件里的预编译指令(以#开头), 如 #include 翻译: gcc -c, 对源代码进行语法检查并翻译成机器指令, 生成目标文件(.o)...

August 29, 2020 · 2 min

Linux (Ubuntu) OpenGL 开发环境

准备 sudo apt-get install build-essential sudo apt-get install libgl1-mesa-dev # OpenGL 库 sudo apt-get intsall libglm-dev sudo apt-get install libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev GLFW 下载编译源码 cd ~/Codes git clone https://github.com/glfw/glfw.git # git@gitee.com:pyq19/glfw.git mkdir -p ~/Codes/glfw/glfw-build cd ~/Codes/glfw/glfw-build cmake ~/Codes/glfw sudo make install 运行 example ./examples/wave GLAD GLAD 是第三方的 OpenGL 开源库,需要到 https://glad.dav1d.de/ 生成...

August 28, 2020 · 1 min

MacOS MongoDB 安装

Ubuntu Server 16.04 安装 MongoDB sudo apt install mongodb -y 配置文件在 /etc/mongodb.conf MacOS 安装 MongoDB 方法 1: brew 安装 brew tap mongodb/brew brew install mongodb-community brew untap mongodb/brew (删除仓库) 默认配置文件位置参考官方文档 方法 2: 二进制文件安装 从官方网...

May 4, 2020 · 1 min