摘要:
qsort快速排序函数是C语言的高阶函数,支持用于自定义排序比较函数,可以对任意类型的数组进行排序。本节我们尝试基于C语言的qsort函数封装一个Go语言版本的qsort函数。 认识qsort函数 qsort快速排序函数有<stdlib.h>标准库提供,函数的声明如下: void qsort( vo 阅读全文
摘要:
CGO内部机制 CGO生成的中间文件 要了解CGO技术的底层秘密首先需要了解CGO生成了哪些中间文件。我们可以在构建一个cgo包时增加一个-work输出中间生成文件所在的目录并且在构建完成时保留中间文件。如果是比较简单的cgo代码我们也可以直接通过手工调用go tool cgo命令来查看生成的中间文 阅读全文
摘要:
CGO函数调用 函数是C语言编程的核心,通过CGO技术我们不仅仅可以在Go语言中调用C语言函数,也可以将Go语言函数导出为C语言函数。 Go调用C函数 对于一个启用CGO特性的程序,CGO会构造一个虚拟的C包。通过这个虚拟的C包可以调用C语言函数。 package main /* static in 阅读全文
摘要:
#类型转换 最初CGO是为了达到方便从Go语言函数调用C语言函数(用C语言实现Go语言声明的函数)以复用C语言资源这一目的而出现的(因为C语言还会涉及回调函数,自然也会涉及到从C语言函数调用Go语言函数(用Go语言实现C语言声明的函数))。现在,它已经演变为C语言和Go语言双向通讯的桥梁。要想利用好 阅读全文
摘要:
#CGO基础 要使用CGO特性,需要安装C/C++构建工具链,在macOS和Linux下是要安装GCC,在windows下是需要安装MinGW工具。同时需要保证环境变量CGO_ENABLED被设置为1,这表示CGO是被启用的状态。在本地构建时CGO_ENABLED默认是启用的,当交叉构建时CGO默认 阅读全文
摘要:
share/share.go /****** ** @创建时间 : 2020/5/25 20:26 ** @作者 : SongZhiBin ******/ package share import ( "fmt" "net/http" "net/http/httputil" "net/url" "o 阅读全文
摘要:
中间件是一种计算机软件,可为操作系统提供的软件应用程序提供服务,以便于各个软件之间的沟通,特别是系统软件和应用软件。广泛用于web应用和面向服务的体系结构等。 纵观GO语言,中间件应用比较普遍,主要应用: 记录对服务器发送的请求(request) 处理服务器响应(response ) 请求和处理之间 阅读全文
摘要:
runtime.SetFinalizer func SetFinalizer(obj interface{}, finalizer interface{}) SetFinalizer sets the finalizer associated with obj to the provided fin 阅读全文
摘要:
ARM基础 ARM主要有7个基本工作模式 User:非特选模式,大部分任务执行在这种模式 FIQ:当一个高优先级(fast)中断产生时会进入这种模式 IRQ:当一个低优先级(normal)中断产生时将会进入这种模式 Supervisor:当复位或软中断指令时将会进入这种模式 Abort:当存取异常时 阅读全文
摘要:
基于嵌入式的数据库 基于嵌入式Linux的数据库主要有SQLift,Firebird,Berkeley DB,eXtremeDb Friebird是关系型数据库,功能强大,支持存储过程,SQL兼容等 SQLite关系型数据库,体积小,支持ACID事务 Berkeley DB中并没有数据库服务器的概念 阅读全文