Chen Quan

AI、DeepLearning、MachineLearning

cgo代码编译

1.cgo语句 在使用gcc对C语言进行编译时,我们会经常一些参数用于设置编译阶段和链接阶段的相关参数。 在import "C"语句前的注释中可以通过#cgo语句设置编译阶段和链接阶段的相关参数。编译阶段的参数主要用于定义相关宏和指定头文件检索路径。链接阶段的参数主要是指定库文件检索路径和要链接的库文件。 // #cgo CFLAGS: -DPNG_DEBUG=1 -I./includ...

cgo-C++类包装

CGO是C语言和Go语言之间的桥梁,原则上无法直接支持C++的类。CGO不支持C++语法的根本原因是C++至今为止还没有一个二进制接口规范(ABI)。一个C++类的构造函数在编译为目标文件时如何生成链接符号名称、方法在不同平台甚至是C++的不同版本之间都是不一样的。但是C++是兼容C语言,所以我们可以通过增加一组C语言函数接口作为C++类和CGO之间的桥梁,这样就可以间接地实现C++和Go之...

go并行计算大量数据的方法

并行计算的两种方式: 步骤并行:将一个计算公式拆解为多个计算步骤,为每一个步骤作为一个独立的协程计算 数据并行:将原始数据拆分成多个的较小的数据单元,为每一个数据单元作为一个独立的协程计算,最后再合并数据 数据并行: 可以解决原始数据庞大的计算,将数据拆分成单个较小的数据集,利用CPU多个核心,同时计算,最后对数据进行合并。最大效率的利用CPU的多核心特征 步骤并行: 可以...

go语言标准库

go语言标准库 像 fmt、os 等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。完整列表可以在 Go Walker 查看。 unsafe: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。 syscall-os-os/exec: ...

go语言指针

go语言指针 对于新手来说,在使用指针的时候,经常把&与*弄混。现在来简单的总结一下,他们的用法。 &是取地址符,放到一个变量前使用就会返回相应变量的内存地址 例如: package main import "fmt" func main() { var a int = 10 fmt.Printf("变量的地址: %x\n", &a ) //变量的...

go语言make与new区别

go语言make与new区别 Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。new 和 make 都可以用来分配空间,初始化类型,但是它们确有不同。 一、new(T) 返回的是 T 的指针 new是一个用来分配内存的内建函数,但是与C++不一样的是,它并不初始化内存,只是将其置零。也就是说,new(T)会为T类型的新项...

基于Github Travis-ci Docker自动化部署

基于Github Travis-ci Docker自动化部署 实现思路 Dockerfile + docker-compose来构建docker容器 travis-ci + github 来hook repo的变动 travis-ci 调用 Dockerfile打包 docker image并push到dockerhub travis-ci ssh 登录到目标机器,co...

Idea插件推荐

Idea插件推荐 Custom Postfix Templates 可以自定义Postfix模板,千言万语,不如一图。 Lombok Plugin 使用注解自动生成代码,码奴解放者 RestfulToolkit Java WEB开发必备,再也不用全局搜索RequestMapping了。 Translation 翻译插...

Docker将所有端口或端口范围从7000到8000

从Docker 1.5开始,您可以使用以下方法将一系列端口暴露给其他链接的容器: Dockerfile EXPOSE命令: EXPOSE 7000-8000 或Docker run命令: docker run –expose = 7000-8000 或者,您可以通过Docker run命令将一系列端口发布到主机: docker run -p 7000-8000:7000-8000

spring-分布式配置中心

spring-分布式配置中心 一、搭建配置服务中心(config server) 首先通过IDEA spring initializer(或直接通过https://start.spring.io/)创建一个spring boot项目(demo项目命名:configserver),创建过程中选择:config server依赖,生成项目后的POM XML文件如下:(如果缺少依赖请自行手动添...