基于CLion远程开发 发表于 2021-10-17 分类于 essay 简介本文介绍基于docker和projector搭建一套c++的开发环境,提升研发效率问题。大多数c++服务是运行在linux平台的,代码也只能在linux上编译,但大部分开发者使用的是macbook或者thinkpad,很少用linux开发。开发环境、编译运行环境两边代码同步影响研发效率。隔壁的vscode通过remote插件,支持远程开发模式,一定程度上提升了研发效率。年初Jetbrains开源的projector_install项目,旨在让IDE运行在服务端,然后本地通过网络与其交互。本文将介绍这个环境的搭建。 环境搭建 阅读全文 »
bazel使用文档 发表于 2020-11-08 分类于 cpp-devel 简介bazel是google开源的构建系统,支持多种语言、支持云端构建等功能。 bazel与cmake、autoconf不太一样,bazel进行构建时会启动一个服务,然后bazel命令与这个服务进行交互发送指令,这个服务实际进行编译任务。同时bazel提供了一套远程构建、缓存的接口,实现这套接口就可以制定自己的远程构建系统了。 阅读全文 »
autofdo调研 发表于 2020-10-23 分类于 cpp-devel autoFDO调研背景传统 FDO(Feedback-Directed Optimization)需要两步编译:先插桩编译出 instrumented 二进制,用它跑 workload 生成 profile,再基于 profile 重新编译。插桩版本运行开销大,且需要维护两套二进制。 阅读全文 »
asio_multithread 发表于 2020-02-01 分类于 cpp-devel 简介boost.asio是boost中的一个基于事件的网络库。本文将介绍asio的多线程模型。asio有两种支持多线程的方案:方案一,开启一个线程池,每个线程独占一个io_context,并在各自的线程中运行io_context的run方法;方案二,开启一个线程池,并创建一个全局的io_context,在每个线程中调用io_context的run方法。备注:新版本的asio使用io_context代替io_servvice。 多io_context方案 阅读全文 »
v8嵌入式开发--v8js篇 发表于 2019-12-04 分类于 nodejs 简介v8js是一个特殊的php拓展, 其作用是将v8嵌入到php中, 使得用户可以在php中运行js代码. 同时, 经过作者的努力, 运行在php中的js可以无缝访问并php中的数据结构, 调用php內建的函数, 从而实现”1 + 1 > 2”的目标. 本文将跟随作者的, 领略v8js的风采. 功能介绍 阅读全文 »
node-addon-api使用文档 发表于 2019-03-29 分类于 nodejs 简介“node-addon-api”是nodejs的”n-api”接口的c++封装, 通过提供c++对象模型和异常异常处理方式, 简化nodejs开发的成本. “n-api”是nodejs为原生拓展提供的c语言风格ABI, 它独立于js运行环境, 旨在屏蔽js运行环境的差异, 让拓展能够运行在不同版本的nodejs下. 阅读全文 »