当前位置: 首页 > news >正文

golang通过go-aci适配神通数据库

1. go-aci简介
go-aci是神通数据库基于ACI(兼容Oracle的OCI)开发的go语言开发接口,因此运行时需要依赖ACI驱动和ACI库的头文件。支持各种数据类型的读写、支持参数绑定、支持游标范围等操作。

2. Linux部署步骤

2.1. Go安装:

版本:1.9以上
Go安装目录:/usr/lib/go

2.2. 编译环境:

版本:gcc和g++ 4.8以上

2.3. go-aci文件拷贝

将神通go-aci驱动拷贝到go的src目录,比如:/usr/lib/go/src,如下:
image.png

2.4. go-aci文件配置

  1. 更新aci的头文件和aci库文件:
    头文件:go-aci自带aci头文件,默认情况下不用更新,aci头文件可从数据库安装目录: S Z O S C A R H O M E / a c i / i n c l u d e 获取。 A c i 库文件: a c i 库文件在 g o − a c i 目录中,需要根据部署平台从数据库中的安装目录中拷贝 SZ_OSCAR_HOME/aci/include获取。 Aci库文件:aci库文件在go-aci目录中,需要根据部署平台从数据库中的安装目录中拷贝 SZOSCARHOME/aci/include获取。Aci库文件:aci库文件在goaci目录中,需要根据部署平台从数据库中的安装目录中拷贝SZ_OSCAR_HOME/aci/,比如在arm平台下,
    $SZ_OSCAR_HOME/aci/arm64/libaci.so文件拷贝到/usr/lib/go/src/go-aci目录下。

  2. 修改aci.pc文件:
    aci.pc文件中记录的是编译go-aci依赖头文件和aci库文件的路径,将其修改为对应目录,比如:
    image.png

2.5. go-aci编译

设置环境变量:PKG_CONFIG_PATH,export PKG_CONFIG_PATH=$go-aci , $go-aci为go-aci代码的路径,比如export PKG_CONFIG_PATH=/usr/lib/go/src/go-aci
终端中cd /usr/lib/go/src/,执行go build go-aci,确保编译无错,如图:
image.png

2.6. go-aci测试

到/usr/lib/go/src/go-aci/test目录下,编译test.go : go build -o test_goaci test.go,如图
image.png
执行test_goaci:./test_goaci sysdba/szoscar55@localhost:2003/osrdb
image.png
备注:链接数据库的用户名、密码、ip和端口、实例名称都是可以更改的,执行前在数据库中建表:create table test( a int ,b text);

3) 注意事项:
因为go-aci依赖的是神通aci库,因此在go调用go-aci程序时,需要确认aci库所在的路径是否系统运行时找到,如果没有可以将aci库与运行程序放在同一目录即可。

3. Win部署步骤

3.1. mingw-w64安装

mingw能提供在windows环境下的gcc和g++编译换环境,安装方式如下:
下载mingw-w64-install.exe,可在线安装,下载链接:
https://nchc.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe
运行:mingw-w64-install.exe,选择x86_64,直接下一步
image.png
选择安装路径:比如c:\mingw-w64
image.png
等待安装:
image.png
安装完成:
image.png
将c:\mingw-w64\mingw64\bin目录添加到系统path环境变量中:
image.png

备注:对于离线环境,可以将安装好mingw-w64的整个文件拷贝到无网环境,通用需要配置path路径即可。

安装是否成功验证,开启新的cmd窗口,执行gcc ,提示如下即可:
image.png

3.2. Go SDK安装

Go sdk要求1.9以上,下载链接:https://dl.google.com/go/go1.14.1.windows-amd64.msi
然后进行安装
image.png
image.png
image.png
将c:\Go\bin\bin目录添加到系统path环境变量中:
image.png
验证是否安装成功,开启新cmd终端,执行go,如图:
image.png

3.3. pkg-config依赖安装

下载pkg-config,地址http://ftp.acc.umu.se/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip
将下载的pkg-config放置到c:\go\bin目录下。

pkg-config会依赖libglib-2.0-0.dll库,需要下载glib,链接如下,将libglib-2.0-0.dll与pkg-config.exe都放置在c:\go\bin目录下。
http://ftp.acc.umu.se/pub/gnome/binaries/win64/glib/2.18/glib_2.18.4-1_win64.zip

3.4. go-aci配置

将go-aci源码拷贝到go目录下,比如C:\Go\src目录下:
image.png
修改go-aci目录下的aci.pc文件如下,路径需要和安装路径一致:
image.png
开启一个cmd,然后进入到C:\Go\src\go-aci目录下,依次执行,没有报错即为正确
set PKG_CONFIG_PATH=%cd%
go build go-aci
如图:
image.png

3.5. test程序

cmd中进入到C:\Go\src\go-aci\test目录,执行
go build test.go
image.png
备注:需要在数据库中创建test表:create table test( a int ,b text);

相关文章:

golang通过go-aci适配神通数据库

1. go-aci简介 go-aci是神通数据库基于ACI(兼容Oracle的OCI)开发的go语言开发接口,因此运行时需要依赖ACI驱动和ACI库的头文件。支持各种数据类型的读写、支持参数绑定、支持游标范围等操作。 2. Linux部署步骤 2.1. Go安装: 版本:1.9以上…...

【Vue】Vue2中的Vuex

目录 Vuex介绍Vuex 中的核心概念 在vue2中使用Vuex安装 Vuex创建一个 Vuex Store在 Vue 实例中使用 Vuex编写 Vuex 的 state、mutations 和 actions在组件中使用 Vuex Vuex的核心State组件中获取 Vuex 的状态mapState 辅助函数对象展开运算符 Getter基本使用示例 通过属性访问通…...

前端生成二维码

直接img标签显示 npm i use_qrcode npm包地址 <img :src"qrcode" alt"QR Code" /> const txt: any ref(https://baidu.com) const qrcode useQRCode(txt) const qrcodeLogo useQRCode(txt, { logoSrc: https://www.antdv.com/assets/logo.1ef800…...

wordpress woocommer 添加代码实现,点击按钮,将产品添加到购物车并且跳转到结账页面

wordpress woocommer 添加代码实现&#xff0c;点击按钮&#xff0c;将产品添加到购物车并且跳转到结账页面 案列代码1&#xff0c;解决的是普通产品的 //短代码生成按钮&#xff0c;传入短代码&#xff0c;点击直接到达结账页面 function add_product_to_cart_button($atts)…...

Scala学习笔记6: 类

目录 第六章 类1- 简单类和无参方法2- 带有getter和setter的属性3- 只带getter的属性4- 对象私有化5- 辅助构造器6- 主构造器7- 嵌套类end 第六章 类 在Scala中, 类用于创建对象的蓝图; 类可以包含方法、值、变量、类型、对象和特质等成员; 类名应该以大写字母开头, 可以包含…...

JS数组根据对象的某一个字段排序

const person [{ name: aa, age: 9 },{ name: bb, age: 17 },{ name: cc, age: 6 },{ name: dd, age: 18 }];// 升序const arr1 person.sort((a, b) > {return a.age - b.age;b})console.log(arr1)// 降序const arr2 person.sort((a, b) > {return b.age - a.age;})co…...

JavaScript操作

做UI自动化的时候&#xff0c;有些操作无法直接通过selenium自带方法操 作成功&#xff0c;那么就需要借助前端js操作实现。 比如浏览器的滚动条这种不是html页面的内容&#xff0c;无法直接通过selenium 控制到。需要借助JavaScript控制。比如有些点击操作无法通过普通点击鼠…...

雪花算法 代码

/*** author lwh* date 2023/9/5* description 批量插入&#xff0c;手动设置**/ public class IdWorker {//因为二进制里第一个 bit 为如果是 1&#xff0c;那么都是负数&#xff0c;但是我们生成的 id 都是正数&#xff0c;所以第一个 bit 统一都是 0。//机器ID 2进制5位 3…...

我把PostgreSQL最核心的插件撸干净了!!!

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…...

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…...

使用Flask Swagger自动生成API文档

文章目录 安装Flask Swagger使用Flask Swagger生成API文档总结1. 自动化文档生成2. 交互式文档展示3. 规范化API设计4. 提升协作效率5. 支持多种格式 Flask Swagger是一种用于管理Flask API文档的工具。它基于OpenAPI规范&#xff0c;可以自动生成API的交互式文档。使用Flask S…...

操作系统408考研-经典例题

什么是操作系统?答:操作系统,是计算机系统中最基本、最重要的系统软件,是其它软件 的***支撑***。控制和管理计算机系统的硬件和软件资源,合理的组织计算机工 作流程,并为用户使用计算机提供公共和基本的服务 2.多道程序 (multiprogrammming) 和多重处理 (multiprocessi…...

工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…...

react中hook 函数的使用

以 use 开头的函数被称为 Hook。useState 是 React 提供的一个内置 Hook。你可以在 React API 参考 中找到其他内置的 Hook。你也可以通过组合现有的 Hook 来编写属于你自己的 Hook。 Hook 比普通函数更为严格。你只能在你的组件&#xff08;或其他 Hook&#xff09;的 顶层 调…...

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类 1.1陈述式资源管理方式&#xff1a;增删查比较方便&#xff0c;但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 即通过命令的方式来实 1.2声明式资源管理方式&#xff1a;yaml文件管理 使用yaml配置文件或者json配置文…...

webgl入门-绘制三角形

绘制三角形 前言 三角形是一个最简单、最稳定的面&#xff0c;webgl 中的三维模型都是由三角面组成的。咱们这一篇就说一下三角形的绘制方法。 课堂目标 理解多点绘图原理。可以绘制三角形&#xff0c;并将其组合成多边形。 知识点 缓冲区对象点、线、面图形 第一章 web…...

深入分析 Android Activity (三)

深入分析 Android Activity (三) 1. Activity 的配置变化处理 当设备配置&#xff08;如屏幕方向、语言、屏幕大小等&#xff09;发生变化时&#xff0c;默认情况下&#xff0c;Android 会销毁并重新创建当前的 Activity。这种行为确保了新配置能够正确应用&#xff0c;但在某…...

电影《朝云暮雨》观后感

上周看了电影《朝云暮雨》&#xff0c;看完之后&#xff0c;感觉自己整个人都不太好了&#xff0c;也不是说电影太差&#xff0c;只是觉得电影没有传达正能量&#xff0c;让人很不舒服。 &#xff08;1&#xff09;演技在线 对于著名的演员“范伟”&#xff0c;或者说&#x…...

Isaac Sim仿真平台学习(1)认识Isaac Sim

0.前言 上一个教程中我们下载好了Isaac Sim&#xff0c;这一章我们将来简单了解一下Isaac Sim平台。 isaac Sim仿真平台安装-CSDN博客 1.Isaac Sim是啥&#xff1f; What Is Isaac Sim? — Omniverse IsaacSim latest documentation Isaac Sim是NVDIA Omniverse平台的机器…...

C++:vector基础讲解

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;vector基础讲解》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...