Go语言中文网 为您找到相关结果 139

golang 在plugin 中import 静态库(//go:binary-only-package)无法编译的问题

当前 go 版本 1.9.2 把程序编译成plugin,plugin 里面引用了静态库,这时候编译会报错找不到静态库。 missing or invalid package binary for binary-only package say 但是如果把程序编译成 可执行文件,则可以成功,能找到静态库 1、say.go 文件在/work/golang/src/say 目录下 package say import "fmt" func Say(s string) string { return fmt.Sprintf("hello %s", s) } 2、编译成静态库 go build -i -o $GOPATH/pkg/linux_amd64/say.a 3...阅读全文

go语言与c语言的相互调用

最近由于工作原因,需要实现go语言与c语言的相互调用。由于go语言与c语言有着千丝万缕的暧昧关系,两者之间的调用可以通过语言层面实现。下文是对此的总结。 go语言调用c语言 以下为一个简短的例子: package main // #include // #include /* void print(char *str) { printf("%s\n", str); } */ import "C" import "unsafe" func main() { s := "Hello Cgo" cs := C.CString(s) C.print(cs) C.free(unsafe.pointer(cs)) } 与“正常”的go代码相比,上述代码有几处“特...阅读全文

博文 2018-02-25 23:40:15 p了个c

Docker部署Golang程序方法

之前我写过如何部署Golang程序到服务器,这次咱们来写写怎么利用Docker来部署我的Golang,当然如果要部署到Docker里面,Docker是必须安装的,可以点击这里查看安装步骤。 文/谦益 这篇文章可能不太适合对go和Docker零基础人士阅读,需要有一定的基础知识。 依赖知识 Go交叉编译基础 Docker基础 Dockerfile自定义镜像基础 docker-compose编排文件编写基础 当然,一点也不会也可以按照这个步骤部署完成,不过可能中间如果出点小问题,会不知道怎么解决,当然你也可以留言。 我是在mac环境上开发测试的,如果你是在windows上可能有一点出入,但应该不会有啥大问题。 一、依赖环境 Docker 二、编写一个GoLang web程序 我这里就写一个最简单...阅读全文

博文 2018-10-02 13:34:42 谦益_

flutter学习一:dart语言简介

Dart是什么? Dart是一门新的编程语言,如同JAVA、PHP一样,是为了解决编写应用程序中的一些实际问题而被造轮子发明出来的,而这个造轮子的人就是 Google。可能大家都熟悉Google 的另一个轮子Golang,而对Dart 听闻甚少,其实Dart 的出生跟Go很相近,只是由于它的星途比起Go来说有点坎坷,一直没有被广大开发者重视,相关的技术文章和应用比较匮乏,也就一直蒙尘在泛泛语言之中。最初设计Dart,是Google的一帮程序员出于对JavaScript的不满,决定自己搞一个新语言用来替换JavaScript的,所以刚开始Dart也就是用来作为浏览器脚本运行在浏览器中的。为了推广Dart,Google利用自己的利器Chrome让它内置了DartVM的引擎。有了运行环境,加上用户...阅读全文

博文 2019-03-26 13:34:40 浩之然

HTTPS以及golang使用方式

HTTPS相关知识以及在golang中的应用 最近简单学习了HTTPS,并在golang中实践了一下,现在把学到的知识记录下来。 一些简单的概念,可以自行百度百科 HTTPS简介:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。 HTTPS与HTTP的区别:HTTP是以明文的方式来传递数据的,HTTPS是在HTTP的基础上加入了SSL协议的加密传输方式。 CA(Certificate Authority):ca就是我们所说的证书颁发机构,ca是可信的权威机构,其实就是个办证的,给他钱,他给我们办证,当然了办的都是真证。ca机构也是有证书的,我们的电脑中自带了...阅读全文

博文 2019-08-07 09:32:38 黄淑宁

golang之递归

翠花,上代码 package main import ( "fmt" "time" ) /* 递归原则,一个大问题分解成相似的小问题 定义好出口条件,否则死循环 */ func calc(n int) int { if n == 1 { return 1 } return calc(n-1) * n } func recusive(n int) { fmt.Println("你好呀") time.Sleep(time.Second) if n > 10 { return } recusive(n + 1) } func factor(n int) int { if n == 1 { return 1 } return factor(n-1) * n } //斐波那 func fab(n in...阅读全文

博文 2017-12-31 05:30:00 pyyu

脑洞大开:用Go来保护我们的Jar程序

反编译带来的困扰 对于一个开发给自己组织内部用的程序,这么做其实是非常多此一举的,但是对于商业软件来说,这又显得有必要,软件行业现在的竞争非常的激烈,大家可以把竞争对手的程序搞过来反编译一下,轻易的知道对手基于什么软件来做,或者能够比较容易知道实现原理,然后。。抄抄抄,换个名字,完事,一个全新的产品就出来了。对于Java来说这个问题就更加明显了。虽然有类似ZKM这样的商业软件来进行混码,但是混码后只要你有耐心,还是有很大机会能读懂的 在这里不得不吐槽一下,ZKM实在太难用了 怎么保护我们的Jar文件 这里我们只讨论胖胖的Jar包(就是那种全部都打在一起直接java -jar就能跑的包,例如Spring Boot打出来的)。 对于防止反编译来说,Golang这类打包出来就是二进制的方式其实就非...阅读全文

博文 2017-08-15 08:05:08 小埋酱

golang web开发获取get、post、cookie参数

在成熟的语言java、python、php要获取这些参数应该来讲都非常简单,过较新的语言golang用获取这些个参数还是费了不少劲,特此记录一下。 golang版本:1.3.1在贴代码之前如果能先理解一下golang http.request的三个属性Form、PostForm、MultipartForm应该能较好的理解代码,下面摘录一下。 Form、PostForm、MultipartForm说明Form、PostForm、MultipartForm说明 简要说明一下 Form:存储了post、put和get参数,在使用之前需要调用ParseForm方法。PostForm:存储了post、put参数,在使用之前需要调用ParseForm方法。MultipartForm:存储了包含了文件上传...阅读全文

博文 2018-01-19 00:30:00 xiaoleiel

看清区块链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 虽然说比特币系统于2009年推出,但区块链技术自2015年才兴起,到今天也就两年多一点的时间。 比特币系统是把多种技术组合创新,实现了一个防止篡改、防止欺诈的多方记账机制,构建起一个平等、协作、信任的价值传输网络。而区块链技术从比特币系统中被挖掘出来,经过二次创新和发展,瞄准的是解决现实场景中的问题。 当前区块链构想的运行环境与现实世界之间还存在一个鸿沟。现实中很难找到像比特币一样封闭的体系,产生在网络中、流转在网络中、消失在网络中。它既不接收外部世界的输入,也不对外部世界产生输出。每10分钟产生一个区块,生成一定数量的新比特币,流转不定数量的旧比特币,就像一个数字货币游戏一样。现实中不管是跨境汇款,还是票据流转...阅读全文

博文 2019-09-12 17:32:45 链客

Go語言系統編程如何取得命令行參數或系統環境變量

首先取得命令行參數: 用法如下: root@centos:~/code/go/self$ ./sum 1 2 4 package main import "fmt" import "os" import "strconv" func main() int{ arg_num := len(os.Args) fmt.Printf("the num of input is %d\n",arg_num) fmt.Printf("they are :\n") for i := 0 ; i < arg_num ;i++{ fmt.Println(os.Args[i]) } sum := 0 for i := 1 ; i < arg_num; i++{ curr,err := strconv.Atoi(o...阅读全文

博文 2015-06-17 23:03:16 sibang

Web3极客日报 #3

如何构建一个最小化的区块链 原文链接(英文) 中文翻译 @Caos: 文章作者描述了一款最小可用的区块链需要具备什么样的核心模块,其核心思想是通过分层或隔离的方式来提高最小区块链的可维护性,希望这篇文章能够给我们一些启发。 Cosmos SDK中支持启用WASM虚拟机 https://mp.weixin.qq.com/s/iVXDO010WD4zP_olunuXFQ @Caos: Rust 即将统治世界,如果你是Rust开发人员,则可以轻松编写智能合约,这些合约可以上传到任何包含CosmWasm模块的基于Cosmos SDK的链。 你只需要极少的Golang知识。 你可以开始在Cosmos SDK上构建并轻松集成到现有Cosmos网络中。 可以以最小的开销将你现有的链或应用程序扩展到Cosm...阅读全文

博文 2019-12-27 16:33:06 空乱木

hello world _ golang

环境 : sublime text, ubuntu (至于环境变量的配置, 可以参考 http://www.cnblogs.com/yourihua/archive/2012/06/04/2529333.html) 我们第一个程序将打印出经典的 "hello world", 下面是代码 package main import ( "fmt" ) func main() { fmt.Println("hello world") } 1 : 将以上的代码保存为 helloworld.go, 加上可执行的权限 (chmod +x helloworld.go) 2 : 在 commond 直接运行 go run helloworld.go 总结 : 对就是这么简单, 有时我们想将程序编译成 bina...阅读全文

博文 2015-03-11 03:00:00 jackkiexu

【编程】Golang服务端程序部署

CentOS安装MongoDB 安装 为yum先创建设置文件 vi /etc/yum.repos.d/mongodb-org-4.2.repo 粘贴进去以下内容 [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc 按ESC退出插入模式,输入:wq保存并退出。下面命令开始安装。 sudo yum install -y mongodb-org 安装完成后...阅读全文

博文 2020-05-13 08:32:43 zhyuzh3d

GO错误

SQL Server 应用程序可将多条 Transact-SQL 语句作为一个批处理发给 SQL Server 去执行。在此批处理中的语句编译成一个执行计划。程序员在 SQL Server 实用工具中执行特定语句,或生成 Transact-SQL 语句脚本在 SQL Server 实用工具中运行,用 GO 来标识批处理的结束。 如果基于 DB-Library、ODBC 或 OLE DB APIs 的应用程序试图执行 GO 命令时会收到语法错误。SQL Server 实用工具永远不会向服务器发送 GO 命令...阅读全文

cmd/go: unsupported GOOS/GOARCH pair linux /amd64

windows下go编译成linux可执行文件报错: cmd/go: unsupported GOOS/GOARCH pair linux /amd64 操作步骤如下: D:\web\go>SET CGO_ENABLED=0 D:\web\go>SET GOOS=linux D:\web\go>SET GOARCH=amd64 D:\web\go>go build moniterLogstash.go 最后还是在 https://github.com/golang/go/issues/24501#issuecomment-375682124 找到原因。 是因为在 SET GOOS=linux 这句后面多了个空格(直接复制的命令。。。) 编译器也没有自动去掉多余的空格,不容易发现错误原因。 原...阅读全文

博文 2020-04-13 09:32:43 魏志明

《一个 Go 程序系统线程暴涨的问题》结论

文地址:https://zhuanlan.zhihu.com/p/22474724 作者的结论没写好,我来说两句。。 结论: Docker swarm自己有个函数,叫setTcpUserTimeout,这个函数调用了conn.File()方法,将tcp的fd变成了blocking,而且没有关闭对应的fd。相当于每次设定tcpUserTimeout参数,再去read一下fd,都会产生一个新的线程。因为老的线程在读fd,而fd被设置成blocking了,于是golang的运行时只好再开一个新的。 解决方法: 不要用swarm的这个方法,或者提交到上游让swarm fixed掉,或者自己调用SetsockoptInt…… 好奇八卦了一下TCP_USER_TIMEOUT是什么:根据RFC 5482,...阅读全文

博文 2016-09-19 02:00:00 Lifehacker

golang之cgo---调用C/C++动态库函数

之前说过golang调用C代码的方式可以通过cgo或者是swig,而cgo是不能使用C++相关的东西的,比如标准库或者C++的面向对象特性。怎么办,将c++的功能函数封装成C接口,然后编译成动态库,或者是功能较为简单的可以直接嵌入到go源文件中。   cgo的使用是在linux平台上,在windows平台上可以配置交叉编译器。 动态库头文件:myfuns.h #pragma once #include #include #include #include void fun1(); void fun2(int a); int func3(void **b); // others 动态库名:myfuns.so...阅读全文

博文 2016-09-07 09:00:08 FreeApe

LiteIDE使用

LiteIDE是一款开源,跨平台的轻量级Go语言集成开发环境。操作简单,提示迅速!当然不足之处也有很多,不过除了golad之外,个人觉得比vscode,eclipse等用的更舒心一点(ps:指的是编写golang,每个人的感受不一样,勿喷)目前本人使用的LiteIDE版本号是:x36.1其中让我感受不是很好的两个点是:1.没有自动go lint检测,需要手动。2.更改键盘映射不能捕获按键的内容,需要自己粘贴复制比方说Ctrl+C之类的上去,如果不能接受这两点需要考虑考虑。当然也有可能是我玩的不够透彻,如果有人知道,请评论告知,感激不敬:)。那么,接下来就让我们来学习一下LiteIDE这款国人开发的编辑器的简单用法:当我们使用一款IDE的时候,首先当然是配置一下环境,其次是快捷键,界面布局之类...阅读全文

博文 2019-10-25 15:32:49 aside section._1OhGeD

go语言工程管理

工程自管理步骤 1、安装Golang 在这里只说下windows下的安装步骤 这里有详细的windows安装以及环境变量设置步骤 安装完毕之后,我们要在相应目录下新建bin和src目录 2、编译操作 然后在src目录下创建hello.go YOURDIR是你的工程路径 mkdir -p YOURDIR/src/github.com/you/helloworld cd $GOPATH/src/github.com/you/helloworld 最后只要运行两行代码 go run helloworld.go//验证结果 go build//编译成二进制文件 当我们准备发布的时候运行 go install 就可以在bin目录下看到我们编译生成的exe文件 深入一些 除了上面的一些基本内容,我还找了...阅读全文

博文 2017-12-24 02:31:07 czZ__czZ

golang 关于bool一个奇怪的问题

之前,遇到一个奇怪的问题,先上代码 type BoolStruct struct { b1 bool b2 bool b3 bool b4 bool b5 bool b6 bool b7 bool b8 bool } func (bs *BoolStruct) DoSomething() { DoSomethingForBool( bs.b1, bs.b2, bs.b3, bs.b4, bs.b5, bs.b6, bs.b7, bs.b8) } func DoSomethingForBool( b1 bool, b2 bool, b3 bool, b4 bool, b5 bool, b6 bool, b7 bool, b8 bool) byte { var b byte if b1 { //...阅读全文

博文 2020-05-14 11:33:01 laomaozi

go语言开发动态库

go build 可以指定buildmode。分为了多种模式。具体模式如下。 模式 说明(当前go版本 1.10.3) archive 编译成二进制文件。一般是静态库文件。 xx.a c-archive 编译成C归档文件。C可调用的静态库。xx.a。注意要编译成此类文件需要import C 并且要外部调用的函数要使用 “//export 函数名” 的方式在函数上方注释。否则函数默认不会被导出。 c-shared 编译成C共享库。同样需要 import “C” 和在函数上方注释 // export xxx default 对于有main包的直接编译成可执行文件。没有main包的,编译成.a文件 exe 编译成window可执行程序 plugin 将main包和依赖的包一起编译成go plugi...阅读全文

博文 2020-04-30 03:32:42 笑吧小鸟

Go是如何实现protobuf的编解码的(1):原理

文链接:https://mp.weixin.qq.com/s/O8... 这是一篇姊妹篇文章,浅析一下Go是如何实现protobuf编解码的: Go是如何实现protobuf的编解码的(1): 原理 Go是如何实现protobuf的编解码的(2): 源码 本编是第一篇。 Protocol Buffers介绍 Protocol buffers缩写为protobuf,是由Google创造的一种用于序列化的标记语言,项目Github仓库:https://github.com/protocolbu...。 Protobuf主要用于不同的编程语言的协作RPC场景下,定义需要序列化的数据格式。Protobuf本质上仅仅是一种用于交互的结构式定义,从功能上和XML、JSON等各种其他的交互形式都并无本质不...阅读全文

golang docker部署

最简单的部署方式是拿生成的二进制文件直接构成镜像,但作者介绍的部署方式是镜像构建阶段使用源码自动编译成二进制文件的部署 1,首先写个将部署在docker中的http服务 package main import ( "fmt" "net/http" ) func IndexHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "hello docker") } func main() { http.HandleFunc("/", IndexHandler) err := http.ListenAndServe("0.0.0.0:80", nil) if err != nil { fmt.Println(err) } ...阅读全文

Golang语言下使用Protocol Buffer教程

代码仓库地址 一、介绍 Protobuf是Google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式。所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的协议格式即同一proto文件被编译成不同的语言版本,加入到各自的工程中去,这样不同语言就可以解析其他语言通过Protobuf序列化的数据。目前官网提供了C++,Python,JAVA,GO等语言的支持。 相对于JSON和XML具有以下优点: 简洁 体积小:消息大小只需要XML的1/10 ~ 1⁄3 速度快:解析速度比XML快20 ~ 100倍 使用Protobuf的编译器,可以生成更容易在编程中使用的数据访问代码 更好的兼容性,Protobuf设计的一个原则就是要能够很好的支持向下或向上兼容 注...阅读全文

博文 2018-08-14 00:30:02 OctoptusLian

区块链火爆,再不知道Golang就晚了

Golang,也叫Go语言,是2009年刚刚被发发布的一门新语言。 区块链,是2019年我国提出的新战略。 一个不争的事实就是,大多数从事区块链开发的小伙伴都是用Golang,大多数招聘区块链技术工作的公司都要求Golang背景的人员。 区块链,作为一个技术,本身跟开发语言没有一对一关系。 事实上,纯技术角度来看,编写区块链最好的语言反而是古老的C++,比JAVA还古老的语言。甚至,JAVA、Python、Rust等等语言都可以用来编写区块链程序。 Golang成为区块链世界的主流,除了市场的选择,还有这种语言自身的优点,比如:1. 天生支持并发,go关键字直接搞定;2. 采用协程来实现高并发,管道负责通信;3. 代码编译成二进制,执行速度快,堪比C语言;4. 适合做分布式系统开发;那么下面...阅读全文

博文 2019-12-17 04:32:40 Testfan软件测试

Kafka消息体大小设置的一些细节

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 还记得前几天有个小伙伴跟我反馈发送消息时提示请求数据过大的异常吗?经过调整 max.request.size 的大小之后,又报了了如下异常: image 查看相关资料后,发现 Broker 端对 Producer 发送过来的消息也有一定的大小限制,这个参数叫 message.max.bytes,这个参数决定了 Broker 能够接收到的最大消息的大小,它的默认值为 977 KB,而 max.request.size 的值已经设置成 2M 大小了,很显然已经比 message.max.bytes 大了很多,因此消息大于 997KB 时,就会抛出如上异常。 值得一提的是,主题配置也有一个参...阅读全文

博文 2019-10-28 23:33:00 aside section._1OhGeD

Go WebAssembly 入门(二)

系列文章 Go WebAssembly 入门(一) Getting Started 编写main.go package main import ( "strconv" "syscall/js" ) // 传入value1, value2, result三个元素的id,将value1+value2结果赋给result元素 func add(ids []js.Value) { // 根据id获取输入值 value1 := js.Global().Get("document").Call("getElementById", ids[0].String()).Get("value").String() value2 := js.Global().Get("document").Call("getEl...阅读全文

博文 2019-02-02 19:34:44 wlchn

Golang特性以及变量的使用方式

引言 Go语言(又称Golang)结合了编译语言的运行速度与脚本语言的开发速度,是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 Golang特性 环境变量之GOROOT、GOPATH、Path GOROOT: 指定了go sdk的安装目录 GOPATH: Golang的工作目录 Path: 指定了go sdk的bin目录 go run与go build go build可将.go文件编译成可执行文件,因为可执行文件打包了Golang的运行环境,所以文件变大了,且该可执行文件在没有Golang运行环境下任然可以运行,实际生产中一般使用go build编译成可执行文件。 go run是一条编译运行一体化的执行语句,所以运行速度没有直接运行go build所编译...阅读全文

博文 2020-05-26 11:35:07 Zzceaon

ClojureScript 的 Go 编译器 Cljs2go

Cljs2go 是 ClojureScript 转换为 Go 的编译器。 ClojureScript 转换到 Go,不是分支出来,而是直接覆盖到 ClojureScript 上。Go 是从 cljs.go.compiler 上发行出去,而 cljs.go.compiler 是 cljs.compiler 的一个补丁版本。在运行时,会提供简单的 JS 兼容以避免接触 cljs.core,这些 js 和 goog 包不打算对用户开放使用。 一旦编译器开始工作,该计划将提供第二个猴子补丁(monkey patch),这回是提供 Java 依赖,像 java.io.File 和其他 Clojure 副本,clojure.java.io。此补丁可以将编译器本身编译成 Go。这既不会改变运...阅读全文

开源项目 2016-09-07 16:07:08 hraberg

golang 生成 shared object 供其他语言使用

golang 生成 shared object 供其他语言使用 LINUX so 文件基本概念和命名规则 libxmns.so.1.2.3 1 major 2 minor 3 release major 增加,原有函数接口已经不能使用,minor和release 复归于0 minor 增加, 新增加了一些函数接口,但原有函数接口还能使用, release 复归于0 release 增加,修改一些bug, 函数接口不变 c-go 模板-供c、java等编译型语言或脚本语言使用 package main import "C" import "fmt" //export Sum func Sum(a int, b int) int { return a + b } //export GetName...阅读全文

关于编程语言的一些认知和思考

计算机本质上来讲就是可以运行一系列命令的机器,比如电灯拥有开和关的两个命令,计算机相比电灯要更加复杂一些罢了。 编程语言就是控制计算机的命令,好比电灯开我们就用数字1来表示,关我们就是用数字0来表示。可是对人类的自然语言来说01这样的命令实在太复杂了。如果我想让计算机进行加减乘除的计算可能就需要输入一串根本看不懂的01组合。好在后来发明了汇编语言。 汇编语言 汇编语言让我们可以使用字母符号来给计算机发送指令。比如: 操作:寄存器BX的内容送到AX中 1000100111011000 机器指令 mov ax,bx 汇编指令 汇编是直接面向CPU的程序设计语言,如果我们想要开发更高级的程序使用汇编语言可能就费劲了。这时候静态类型的语言就出现了。 静态语言 我们所谓的静态语言是什么?比如C语言这样...阅读全文

博文 2017-08-15 09:05:04 ppmoon

2.go命令源文件分析

回顾 上一节我们成功安装了golang,并设置好了环境变量,能使用go run来测试源码 这里我们介绍下go语言的源码: 以.go结尾的文件认为是go语言的源文件,go语言的源文件可以分为三类: 命令源文件: package声明为main 有且只有一个main函数,会编译成可执行文件 库源文件: package不能声明为main且不能包含main函数,会编译成库文件 测试源文件:以_test.go结尾的文件,主要用来对其他源码的测试。 每个源文件以包的声明语句开始,说明该源文件是属于哪个包。 import 导入依赖的包,少导入或者多导入都会导致报错。 这里我们导入一个标准库:fmt 实现了格式化的IO操作,我们可以用它输出我们想要的东西到命令行 go语言中文网有一个标准库的中文文档:http...阅读全文

已刪除

出現這個問題要怎麼解決 原先用goland編輯器正常 使用visual studio code編輯器卻發生問題 main.go:13:2: import "./a" is a program, not an importable package a\main.go:13:2: cannot find package "./a" in: C:\Users\ASUS\Desktop\golang\uintptrescapes.dir\a exit status 1 Process exiting with code: ...阅读全文

博文 2019-07-13 10:04:50 cho010012

2019-07-10

orm orm 全称 object relation mapping 对象映射关系,目的是解决面向对象和关系数据库之间存在的互不匹配的现象。 sql注入曾经是一种常见的网络攻击方式,针对程序编写疏忽而产生的问题比如:通过sql语句实现无账号登录、删除甚至篡改数据库。这是由于以前sql语句是拼接后执行的,因此在动态参数完成拼接时若有带有sql操作的关键字的动态参数参与拼接,则整体结果会向恶意注入者期望的方向执行。 orm就很好的解决了这些问题,在其底层逻辑中会带有转义操作,不担心注入问题,而且对于我们的struct结构体而言,也提供了对应关系操作,对于编程者来说是极大地便利:将注意力从数据库的细节转移到业务逻辑上。orm作为中间层,可以简化数据库的迁移操作。 orm的缺点:不能够生成所有的sq...阅读全文

博文 2019-07-10 17:03:04 JarAlreadyTaken

leetcode_55

Golang: 思路:这题挺有意思的,但并不是在于它的难度上,还是解题的思路上。目前我实现的是思路一:从前往后对数组做处理,但实现的效率极低,大概时间复杂度15%,空间复杂度15%左右。所以更高效的应该是思路二:使用迭代去实现一种类似回溯的方法,对数组进行从后往前的处理。后面我实现了思路二,程序效率如下: 实现效果 下面着重讲下思路二,这里有个前提,即这个问题是可以分解成子问题的。举例分析,我们从arr[i]可以到达终点,那么能否到达终点这个问题就变成了能否到达arr[i]这个问题了。当一个问题可以被分解,那么迭代就有了可行性。 Emmm,对于陌生的题,我会先选择最熟悉的JAVA去写,后面才会用Go去复写,所以上面的提交图是JAVA的。下面给出Go语言实现的代码: func canJump(...阅读全文

博文 2020-01-28 17:32:39 淳属虚构

Go语言学习-helloworld

之前学过一段时间的python,偶然的情况下接触到go语言。得知高性能,高并发,完美跨平台的优势,决定开始入手go语言学习。 首先,需要下载安装go。 https://golang.google.cn/dl/ 安装完成后,可以用命令查看是否安装成功。 打开终端,输入如下 go version // 查看版本 go env // 查看配置 接下来可以开始我们的第一个程序啦。 编写一个 hello world。需要注意文件名需要为 .go 结尾。 package main func main() { print("hello, world\n") } 运行与编译。 在终端中可直接输入 go run 进行编译运行。 在终端中输入go build 可编译为当前系统的可执行文件。 go run 文件名...阅读全文

博文 2020-05-16 21:32:50 阿巴砝特