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

用http实现文件共享(python和go语言示例)

平时工作中少不了文件共享,所以了解文件共享的方法很有必要。 文件共享有很多方法,大致分为以下几类: 1、系统共享(windows共享或samba等): windows下我们可以借助windows共享完成简单的文件共享,linux下也可以用samba之类的软件轻松实现。 2、ftp共享: 可以借助常见的ftp软件实现。 3、http共享: 可以借助常见的web服务器(比如IIS、Apache等)实现。 今天我要介绍的是http文件共享。 首先以IIS为例介绍下用常用的web服务器实现文件共享的方法,具体如下(以我机器为例): 1、打开IIS,打开“网站 --> 默认网站”,右键点击“属性”,点击“主目录”,勾选“目录浏览”选项,如下图所示: 2、进入文件夹C:\Inetpub\wwwroot,...阅读全文

博文 2014-10-04 19:26:38 MikeZhang

go语言beego框架 orm实现insertOrUpdate功能

在beego1.6.1版本orm中并未提供insertOrUpdate,但是自己做项目时遇到了这个需求,顾写了一个自己的实现,暂只支持mysql与postgres。实现原理是数据自带可实现insertorupdate的功能语句。 mysql:-ON DUPLICATE KEY UPDATE postgres : -ON CONFLICT DO UPDATE SET 然后去orm实现中自己拼装sql语句 好了,亮代码: func (d *dbBase) InsertOrUpdate(q dbQuerier, mi *modelInfo,ind reflect.Value, tz *time.Location, dn string, args …string) (int64, error) { ...阅读全文

博文 2016-07-17 15:00:01 fudali133

浅谈滚服游戏如果实现一键合服

文地址-黑胡子Blog:http://www.bugclosed.com/post/12 背景 近几年的游戏行业中,出现了各种各样的滚服游戏,包括页游,手游,H5游戏等等。滚服游戏和大服游戏的区别在于同时游戏人数,大服游戏是有很多用户在一起玩,甚至几十上百万玩家。而滚服游戏则一般会设计游戏在线上限,比如3000,达到上限则新开一组服务器,并引导用户进入新区。 滚服模式是游戏类型,技术架构和急功近利的坑钱策略等因素共同决定的,大服游戏包括绝大部分端游,以及类COC这样类型的游戏。另外,虽然像英雄联盟,王者荣耀这样的游戏也分服架构,但是这个并不是我理解中的“滚服游戏“,首先他们虽然分服,但是每个服的人数上限也是可以高达几十万,他们并不会发生频繁的合服情况。而滚服游戏更多是通过游戏策略设计,鼓励玩...阅读全文

博文 2018-05-31 18:34:37 石匠

ubuntu /elementary os下vscode 配置go开发环境

安装go 配置环境变量 设置权限 设置GOPATH 安装vscode go 安装delve 安装go 从下载地址选择符合自己系统的安装包(.tar.gz文件),我的是elemenray os 32位,我选择的是go1.6.linux-386.tar.gz 下载后,cd到下载目录,利用命令 sudo tar -xzf go1.6.linux-386.tar.gz -C /usr/local 网上的方法大部分是解压到/usr/local/ ,但是我自己在后面vscode安装go插件时经常遇到权限的错误,导致插件无法安装,所以建议安装到用户主目录下面 sudo tar -xzf go1.6.linux-386.tar.gz -C /home/kingeasternsun 配置环境变量 配置Ubun...阅读全文

博文 2016-11-12 00:00:00 KingEasternSun

golang中os/user包用法

os/user包允许用户账号通过用户名或者用户id查找用户 type UnknownUserError type UnknownUserError string func (e UnknownUserError) Error() string //当通过lookup无法查找到某个用户时,便会返回该错误.type UnknownUserIdError type UnknownUserIdError int func (e UnknownUserIdError) Error() string ////当通过lookup无法查找到某个用户id时,便会返回该错误. type User type User struct { Uid string // user id Gid string // pri...阅读全文

博文 2015-06-18 17:05:37 chenbaoke

golang中通过orm实现对mysql数据库的增删改查

package models import ( "fmt" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _"github.com/go-sql-driver/mysql" ) //定义一个用户结构体 type user struct{ Id int Name string Password string } func init() { //ORM操作数据库 //获取连接对象 err:=orm.RegisterDataBase("default","mysql","u:u@tcp(127.0.0.1:3306)/u?charset=utf8") if err!=nil{ beego.Error(err) } //创建表 o...阅读全文

博文 2019-08-06 11:32:48 七八个星天

golang switch 之坑

昨天在星球星主分享了一个题目,是关于一行结束不加分号直接换行,编译期会直接加分号的题目,随后又分享了一道题,如下 import "fmt" func False() bool { return false } func main() { switch False() { case true: fmt.Println("true") case false: fmt.Println("false") } } 其实乍一看,是false,但是不妨你写成如下看看 func main() { switch False(){ case true: fmt.Println("true") case false: fmt.Println("false") } } 完全不同的两种结果 对于第一种结果是因为编译期...阅读全文

博文 2019-05-22 17:34:53 ochipe

面试题分享:BAT+网易+美团最全技术面试题118道(含标准答案)

![image.png](https://static.studygolang.com/181222/bcdb6e2bdfd8e5bba78cae64beafebc8.png) 1.ISO模型与协议 http1.0:需要使用keep-alive参数来告知服务器端要建立一个长连接 http1.1:默认长连接。支持只发送header信息,可以用作权限请求。支持Host域。 http2.0:多路复用的技术,做到同一个连接并发处理多个请求。HTTP2.0使用HPACK算法对header的数据进行压缩。支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。 会话层:负责管理...阅读全文

博文 2018-12-22 19:00:22 Javaspring12

一个golang项目笔记 (二) 动态加载库

这个项目需要用到动态链接库技术, 主程序动态加载一些功能模块,这样在扩充功能时,无须修改主程序,只需要新增功能模块动态调用就可以了。 研究了一下golang官方支持的plugin功能,发现有几点不足。 1.官方plugin功能本质上是用cgo实现的,编译一个so文件,然后再调用 2. 只支持linux, 不支持windows 3. plugin模块panic时, 主程序也会panic, 无法做到隔离。 基于上述原因,我开始另外寻找合适的第三方支持。后来发现这样一个开源库,https://github.com/hashicorp/go-plugin , 感觉符合我的需求。它基于net/rpc ,grpc实现,主程序和plugin程序是两个qtj独立进程,可以通过主程序调用plugin进程启动,...阅读全文

博文 2018-08-20 00:30:01 elonlee

Go 语言开发环境设置(Fedora x64)

如果以工作需要来看,Go语言对我一无是处——我不需要写(“不会写”的另一种说法)操作系统级的代码。但是这个编程语言的Newbie看起来确实很适合开发国际象棋引擎和围棋引擎——既有接近C的速度,又有很好的并发支持,还包括了安全的数据容器,因此,我还是忍不住想学点新把戏了。 安装Go的过程其实异常简单。可以参考http://golang.org/doc/install.html,不要被页面的篇幅吓住,其实上面一大半在解释几个关键的环境变量,一小半在谈mercurial,最后实际安装的语句……只有一句!下面就谈如何在Fedora的64位版本下安装Go。 Go语言的推荐开发平台当然是64位的Linux,在官方文档里的方法针对的是ubuntu,当然,Fedora下的安装是大同小异。 首先在.bash_...阅读全文

博文 2014-10-12 22:00:00 hiarcs

OS X 10.11搭建go语言1.5.1开发环境

1、安装Golang的SDKhttp://golang.org ,下载最新的安装包,之后双击安装即可。某此同学国内打不开的。。。我只想说,学谷歌的东西,自己想个好点办法吧。。。你懂的 安装完成之后,打开终端,输入go、或者go version(查看安装版本)出现如下信息即表示安装成功: $ go version go version go1.5.1 darwin/amd64 2、配置环境变量安装完sdk之后接下来便是配置环境变量了,打开终端输入cd ~ 进入用户主目录,之后输入ls -all命令查看是否存在.bash_profile 文件,存在既使用vim .bash_profile打开并编辑该文件。根据自己实际情况,内容如下: export GOPATH=/Users/lvtao/Docu...阅读全文

beego orm操蛋问题:操作都需要主键

查看bee generate appcode自动生成的代码,会发现orm操作都是以主键为依据的。 如果我不想根据主键怎么操作?用 ORM.Raw(cmd).Exec()吧,cmd=[你的mysql语句] func Del()(err error){ o := orm.NewOrm() rawSetter,err := o.Raw("DELETE FROM nginx_cfg WHERE host='aaa' AND port='22'").Exec(); num, err := rawSetter.RowsAffected() logs.Info("[%v] recodes deleted!", num) return ...阅读全文

博文 2018-01-12 00:30:01 dannyyao

Go语言工具箱--Gorm获取新增记录自增主键,使用NewScope还是降级处理?

默认情况下我们在创建mysql表结构的时候会设置一个自增的主键id,创建好一条记录之后,使用该主键id关联其他的业务。 表结构如下: CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1; 复制代码Gorm默认提供的Create方法在创建一条数据之后,可以之前的对象中获取,如: type Tests struct { Id int64 `json:"id"` Name string `json:"nam...阅读全文

博文 2020-05-27 23:34:36 大漠胡萝卜

文件变更监听通知系统fileboy

fileboy,文件变更监听通知系统,使用 GO 编写。 适用于 Hot Reload (典型的如开发go项目,无需每次手动执行 go build;又比如前端 node 打包) 或者 系统监控的场景。 go version >=1.10 [正式版 v1.0](https://github.com/dengsgo/fileboy/releases) 直接下载已经编译好的对应平台二进制文件,加入系统 Path 中即可。 clone 该项目,进入主目录,运行命令: fileboy 的正常运行依赖于 `filegirl.yaml` 配置,所以首次在项目中使用需要初始化 `filegirl.yaml`。 进入你想要 hot reload 的项目主目录下; 运行 `fileboy ...阅读全文

《Go语言编程》【3.6 完整示例】代码错误和文件目录结构

1. 音乐结构体命名错误,不是Music,而是MusicEntry,如下: 2. 包名错误,不是library,而是mlib: 3. manager.go代码Remove函数删除中间元素有错,index-1应当改成index: 4. m0变量初始化错误,"Celion Dion", 为多余,MP3应当加上双引号: 5. manager_test.go代码错误,无Genre: 6. manager_test.go代码错误,err多余: 7. 少了wav.go代码,可以直接拷贝mp3.go全部替换MP3关键字即可 8. 主程序mplayer.go代码ctrl和signal变量声明和调用多余: 9. manager.go和主程序mplayer.go,Go语言中午elseif关键字,应当是else ...阅读全文

博文 2014-12-21 08:00:01 董松

Mac OSX 安装Go语言环境

go语言运行包下载地址:http://code.google.com/p/go/downloads/list 我这里安装的是 go version go1.4.1 darwin/amd64 下载安装就可以了 然后就是配置环境变量 GOROOT安装好就是已经配置好了的,我们只需要配置GOPATH,我是在当前用户桌面创建Go目录,里面分别是 src,bin,pkg三个目录 查看当前用户主目录是否有.bash_profile文件,没有则创建输入 export GOPATH=${HOME}/Desktop/Go export PATH=${PATH}:${GOPATH}/bin 保存,source ~/.bash_profile不报错就可以了 现在环境已经搭建好...阅读全文

博文 2015-02-02 03:00:01 qifeng1991

[心凉半截]怎么到处都是陷阱?golang,我总觉得好危险。

``` package main import ( "fmt" "sort" ) type Score struct { score int } func main() { slc := []Score{Score{10}, Score{9}, Score{7}, Score{6}, Score{5}, Score{4}, Score{3}, Score{2}, Score{1}, Score{0}} temp := append(slc, Score{12}) fmt.Println("temp 1:", temp) fmt.Println("slc 1:", slc) // 输出: //temp 1: [{10} {9}...阅读全文

26.蛤蟆笔记go语言——beedb库使用

26.蛤蟆笔记go语言——beedb库使用 beedb是一个Go进行ORM操作的库,它采用了Go style方式对数据库进行操作,实现了struct到数据表记录的映射。是一个十分轻量级的Go ORM框架,本意降低复杂的ORM学习曲线,尽可能在ORM的运行效率和功能之间寻求一个平衡. 安装 支持go get方式安装,是完全按照Go Style的方式来实现的。 命令行执行:go get github.com/astaxie/beedb 需要import相应的数据库驱动包、database/sql标准接口包以及beedb包 import ( "database/sql" "github.com/astaxie/beedb" _"github.com/ziutek/mymysql/godrv" ) ...阅读全文

博文 2016-06-29 00:00:00 notbaron

Dimension(EON)千万美金社群共建激励计划

随着项目测试主网即将启动,Dimension(EON)将继续致力于为公链底层基础架构研发,以及及公链生态系统构建。为此,Dimension(EON)项目正式发布千万美金社群共建激励计划,邀请区块链各社群及机构,共同参与构建区块链生态系统,打造赋能分布式商业的高性能公链。项目将投入超过1000万美金用于社区激励计划,鼓励更多参与者共同推动Dimension生态系统的不断演进及落地。Dimension(EON)社群激励计划包含开发激励、治理激励、参与激励以及社群激励等。通过多维度激励机制拓展项目生态层级,完善生态激励机制,引导区块链项目实现多领域技术落地。Dimension社群共建激励方案面向Dimension(EON)全球社群,通过选择完成一系列社群任务,对作出优秀贡献的社群成员给予奖励。希望...阅读全文

博文 2019-11-04 18:33:24 aside section._1OhGeD

全局唯一ID - snowflake

为什么需要全局唯一ID 比如以下 分布式下唯一ID 如果数据库分了库/表, 那么表的自增主键就不再唯一, 这时候就需要一个全局唯一的ID生成器才能保证唯一. 可以用来作为事务ID等需要保证唯一的业务 (事务ID可以用来确保幂) 预生成ID 有些业务下需要提前生成唯一ID, 这也是表的自增主键不能满足的需求. snowflake 生成全局唯一ID有多种方法(可以搜到), 比如使用额外的数据库或者UUID, 但笔者认为性能更好 适用性更广的是snowflake算法. snowflake是witter开源的分布式ID生成算法, GITHUB在此. 我们如果要在代码中使用还需要根据语言实现它的算法, 笔者使用编程语言是golang, 幸运的是GITHUB上已经有了实现好的库, 如 github.co...阅读全文

关于select的无法退出的问题

想实现一个主程序在监听多个channel的练习。如下,我理解只输出一次就会退出,但是实际上,似乎跑了个死循环,问题出在哪里? ```golang package main import ( "fmt" "time" ) func put(c chan<- string, msg string) { time.Sleep(time.Second * 1) //for i := 1; i < 10; i++ { c <- msg //} close(c) } func main() { c1 := make(chan strin...阅读全文

linux常用命令面试(2)

11 如何查看占用端口8080的进程。 方法一 [root@zxc data]# ps -ef|grep 8080 root 3886 3804 0 17:11 pts/1 00:00:00 grep 8080 [root@zxc data]# 12 Linux所有服务的启动脚本都存放在(/etc/rc.d/init.d )目录中。 A /etc/rc.d/init.d B /etc/init.d C /etc/rc.d/rc D /etc/rc.d 13 如果用户想对某一命令详细的了解,可用(man). A ls B help C man D dir 14 企业中Linux服务器系统分区标准是什...阅读全文

[mongodb-10gen]ubuntu下安装方法

由于自己老是不死心,所以还是继续在UBUNTU下开始我的GOLANG,今天发现服务源很快一下子就把GO的源代码从GoogleProject上给hg回来了,所以今天才查了一下在UBUNTU下安装Mongodb-10gen的方法。其实在linux下有apt-get命令都相当的简单,唯一的需要就是要有很好的网速,如果能够FQ那是最好不过的了。 其实在mongodb官网上面有介绍,我们只要依照他的方法一步一步进行就可以完成安装了,地址如下: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ 首先需要添加GPG键,在终端中输入: sudo apt-key adv --keyserver hkp://keyserver....阅读全文

博文 2014-10-04 19:26:24 xdotnet

javaer to go之简单的ORM封装

身为一个做企业级开发的javaer,习惯使用hibernate、ibatis等ORM框架来操作数据库。虽然也发现golang也有ORM框架,像beego ORM等。 为了熟悉golang的一些特性,我还是觉得自己封装一个ORM。 1、struct与interface简单说明 golang是一门面向过程的语言,所以它本身是没有像java那样的类与对象的概念。但golang中提供了struct与interface。甚至通过struct与interface结合,可以模拟类与对象的各种方式。 什么是interface,golang的interface与java的interface是不是一回事呢? 简单的说,interface是一组method的组合,我们通过interface来定义对象的一组行为。 ...阅读全文

博文 2016-04-13 15:00:01 p_3er

kingshard: Go语言开发的高性能MySQL Proxy

kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 主要功能 1. 读写分离。 2. 跨节点分表。 3. 客户端IP访问控制。 4. 平滑上线DB或下线DB,前端应用无感知。 5. 支持多个slave,slave之间通过权值进行负载均衡。 6. 支持强制读主库。 7. 支持将sql发送到特定的node。 8. 支持在单个node上执行事务,不支持跨多个node执行事务...阅读全文

博文 2016-11-10 07:00:04 txj236

GoLang环境配置

**1.Go包的下载与安装**我这里下载是Mac-pkg包,安装按顺序即可[Golang官网下载所需的操作系统和版本包](https://golang.org/dl/)**2.Go的环境变量配置**打开终端输入cd ~ 进入用户主目录,之后输入ls -a查看是否存在.bash_profile文件,存在既使用vi .bash_profile打开并编辑该文件。根据自己情况,内容如下:export GOPATH=/Users/zhangqiang/goexport GOBIN=$GOPATH/binexport PATH=$PATH:$GOBIN**3.Sublime Text 下载与安装**[Sublime 3 链接](https://pan.baidu.com/s/1dFKSg8p) 百度网盘...阅读全文

博文 2017-07-25 13:08:26 ironbox_boy

golang协程的使用-2018-11-06

1. 创建一个协程 一般直接在要执行的函数前,加上 go 就是启用了一个执行该函数的协程。 比如下面的小例子,启动say函数的协程。 package main import ( "fmt" "time" ) func say(s string) { fmt.Println(s) } func main() { for i := 0; i < 5; i++ { go say("Hello") } } 这样已经是在main函数中启动了一个协程,去执行say函数。但是结果却什么都没打印出来。 后来理解了一下,go启动了一个协程,启动之后,系统不会阻塞,程序可以继续执行后面的流程。这个go协程启动之后,后面直接到了main函数的结束的地方,所以main函数直接结束了,但是协程启动的函数还没来得及执行...阅读全文

博文 2018-11-06 19:34:39 淸_兲鮭鮭

学生到课率监控系统(go_class_system)_ssh_sqlserver

超级管理员表创建语句如下: --超级管理员 create table t_admin( id int identity(1,1) primary key not null,--主键 username varchar(100),--超级管理员账号 password varchar(100)--超级管理员密码 ); insert into t_admin(username,password) values('admin','123456'); 辅导员表创建语句如下: --辅导员表注释 create table t_fdy( id int identity(1,1) primary key not null,--主键 username varchar(100),--账号(真实姓名) passwor...阅读全文

博文 2018-08-30 22:35:33 ruyadebcjs

boltdb 源码分析-数据结构-1

boltdb 数据结构 boltdb暴露给用户的数据概念较少,只有以下: Options 初始化boltdb时的相关配置选择; DB 整个boltdb的持有者,跟boltdb相关操作都要通过调用其方法发起,是boltdb的一个抽象; Stats 调用DB.Stats()方法返回的数据结构,内包含一些boltdb内部的计数信息,可以供用户查看; Bucket 类似于表的一个概念,在boltdb相关数据必须存在一个Bucket下,不同Bucket下的数据相互隔离,每个Bucket下 有一个单调递增的Sequence,类似于自增主键; BucketStats Bucket的一些统计信息; Tx boltdb的事务数据结构,在boltdb中,全部的对数据的操作必须发生在一个事务之内,boltdb的并...阅读全文

博文 2017-06-02 03:23:15 lrita

学生到课率监控系统(go_class_system)_ssm_oracle

超级管理员表创建语句如下: create table t_admin( id integer, username varchar(100), password varchar(100) ); insert into t_admin(id,username,password) values(1,'admin','123456'); --超级管理员字段加注释 comment on column t_admin.id is '主键'; comment on column t_admin.username is '超级管理员账号'; comment on column t_admin.password is '超级管理员密码'; --超级管理员表加注释 comment on table t_admi...阅读全文

博文 2018-08-31 19:35:33 ruyadebcjs

go语言入门-安装-编写-运行

一、安装 把下载的GO语言解压后放到C盘。 二、进行变量设定。 在环增变量-系统变量中我们共增加了五个全局变量,具体名字是 1、变量名:GOBIN 变量值:c:\go\bin 它的意思就是GO的编译目录在c:\go\bin这个文件夹里。 2、变量名:GOROOT 变量值:c:\go 它的意思就是GO的主目录在c:\go这个文件夹里. 3、变量名:GOOS 变量值:mingw 如果你下载的是第二个地址的话,这个变量值应当是windows. 这是为什么呢,因为我们C:\go\pkg目录下有个文件夹名字叫mingw_386,它的破折号前面就是mingw 。而如果我们下载第二个地址的GO语言时,C:\go\pkg目录下那个文件夹名字变成了windows_386,GOOS要找这个文件夹,所以我们要根据...阅读全文

博文 2014-10-08 20:00:01 yjflinchong

《Go语言编程》【3.6 完整示例】代码错误和文件目录结构

1. 音乐结构体命名错误,不是Music,而是MusicEntry,如下:2. 包名错误,不是library,而是mlib:3. manager.go代码Remove函数删除中间元素有错,index-1应当改成index:4. m0变量初始化错误,"Celion Dion", 为多余,MP3应当加上双引号:5. manager_test.go代码错误,无Genre:6. manager_test.go代码错误,err多余:7. 少了wav.go代码,可以直接拷贝mp3.go全部替换MP3关键字即可8. 主程序mplayer.go代码ctrl和signal变量声明和调用多余:9. manager.go和主程序mplayer.go,Go语言中午elseif关键字,应当是else if,中间少了空...阅读全文

博文 2015-12-14 19:00:01 dongsong1117

gf框架之基本介绍 - 哈喽世界!

文章来源:http://gf.johng.cn/494366 gf框架提供了非常强大的Web Server模块,由ghttp包支持,API文档地址: godoc.org/github.com/johng-cn/gf/g/net/ghttp。 哈喽世界! 老规矩,我们先来一个Hello World: package main import "gitee.com/johng/gf/g/net/ghttp" func main() { s := ghttp.GetServer() s.BindHandler("/", func(r *ghttp.Request){ r.Response.Write("哈喽世界!") }) s.Run() } 这便是一个最简单的Web Server,它不支持静态文件...阅读全文

博文 2018-04-16 23:34:38 John

Golang操作MySQL

数据库创建demo表 CREATE TABLE `demo` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', `age` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '年龄', `sex` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '性别:1男,2女', `mobile` char(11) CHARACTER SET utf8 COLLAT...阅读全文

博文 2020-03-26 17:40:40 是个懒人

Gorm的使用心得和一些常用扩展

Gorm是golang的一个orm框架,它提供了对数据库操作的封装,使用起来相当便利。 但在项目开发中,代码写的多了,还是发现在它之上还是有再次封装的空间,比如说添加错误日志、或者是一些使用频率非常高的对单个表的条件查询、分页查询、数据更新等。再则是,关于相同的功能操作,gorm也提供多种实现方式,对新学多少有些困惑,不知道该用哪个好。 于是,我基于自己在项目中的使用经验和编码习惯,做了如下一些扩展,供大家参考。 准备 为了兼容gorm的使用方法,我使用了内嵌类型来扩展。 定义如下: type DBExtension struct { *gorm.DB logger DBLogger } 这样子定义的wrapper对象是最小侵入式的扩展,不仅可以直接点出gorm的原有方法,也可以点出扩展的方...阅读全文

博文 2019-07-13 15:32:41 海之方

Golang mysql

还是那句话,服务器嘛,每个数据库支持,那成啥子啦嘛! 好吧,今天,就让Go能连上数据库,当然是之前给你铺垫的MySql的啦,哈哈 一。安装第三方包支持访问mysql数据库 #go get github.com/go-sql-driver/mysql 二。写一个主程序 //database.go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func checkErr(err error) { if err != nil { panic(err) } } func main() { //打开数据库mytest fmt.Println("open the database, myte...阅读全文

博文 2017-10-27 14:00:01 woodzcl

用Golang写一个搜索引擎(0x03)--- 跳跃表,哈希表

前面已经说了倒排索引的基本原理了,原理非常简单,也很好理解,关键是如何设计第二个倒排表,倒排表的第二列也很好设计,第一列就是关键了,为了满足快速查找的性能,设计第一列的结构,我们需要满足以下两个条件。 查找非常快,能在极短的时间内找到我们需要的关键词所在的位置。 添加关键词也需要比较快,能保证输入文档的时候尽可能的快。 除了上面两个条件以外,还有一些加分项: 如果能尽可能少的使用内存,那肯定是好的 如果能顺序的遍历整个列,也肯定比较好 为了满足能查找,能添加,我们首先想到的是顺序表,也就是链表了,链表的话,添加不成问题,关键是查找的复杂度是O(n),这还能忍?所以链表第一个不考虑了。不过有一个链表的变种,我们是可以考虑一下,那就是跳跃表。 跳跃表(SkipList) 什么是跳跃表呢?跳跃表也...阅读全文

博文 2016-07-27 10:53:16 吴yh坚

用http实现文件共享(python和go语言示例)

http://www.cnblogs.com/MikeZhang/archive/2012/02/11/httpFileSharePythonAndGo.html 平时工作中少不了文件共享,所以了解文件共享的方法很有必要。 文件共享有很多方法,大致分为以下几类: 1、系统共享(windows共享或samba等): windows下我们可以借助windows共享完成简单的文件共享,linux下也可以用samba之类的软件轻松实现。 2、ftp共享: 可以借助常见的ftp软件实现。 3、http共享: 可以借助常见的web服务器(比如IIS、Apache等)实现。 今天我要介绍的是http文件共享。 首先以IIS为例介绍下用常用的web服务器实现文件共享的方法,具体如下(以我机器为例): 1、打...阅读全文

博文 2015-06-17 23:00:31 bellwhl

golang gorm

参考链接 https://learnku.com/docs/gorm/2018 http://gorm.book.jasperxu.com/ package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/go-sql-driver/mysql" "log" ) type UserInfo struct{ gorm.Model UserName string `gorm:"size:255;column:username"` Password string `gorm:"size:255;column:password"` } // 设置表名 func (UserInfo) TableName() string{ retu...阅读全文

博文 2019-11-14 23:33:27 更多精彩内容free-programming-books六块腹肌数据记录:静阅读-列表-外国-page0书籍数据记录Golang GORM使用刘昊2018数据记录:静阅读-列表-外国-page5书籍数据记录无标题文章S_Lance

闭包与普通函数的区别

闭包与普通函数**最大的区别是有两个return, 而且都被顺序执行了**,普通函数只能return一次就彻底跳出函数了。比如: 1,func closure1() func() int{ 2, i :=0 3, return func() int{ 4, i++ 5, return i 6, } 7,} 8, f := closure1() 9, fmt.Println(f()) 10,fmt.Println(f()) 11,fmt.Println(f()) 12,fmt.Println(f()) 此例中1-7行定义了闭包函数closure1,8-12行为...阅读全文

Go 语言实现的 ORM 库Toyorm

使用 go 实现的 orm 库,用 go 的结构体与数据库表关联,来简化各种数据库操作。 特性: 语句与查询:支持Insert/Replace/Find/Delete/Update等操作 条件:支持Limit/Offset/Where/Group by/Order by  支持事务 预加载:基于表主键的关联查询 支持BelongTo/OneToOne/OneToMany/ManyToMany 4种模式 预加载条件:操作预加载的表和操作基本表一样 预加载查询聚合:对于预加载字段会优化成Where id in [...]的查询,一个预加载字段永远只占一个Select Result:生成数据库语句报告和语句导致的错误,支持预加载模式 上下文结构,可以在数据库语句逻辑中插入自定义逻...阅读全文

开源项目 2018-03-21 15:30:02 网友

golang channel 超时如何处理

个人理解的channel超时处理思路分享,若有错误或者不足,请联系我:qq 869329877 package main import "time" import "fmt" func main() { ch := make(chan int) go timeout(10, 14, ch) hah:=<-ch fmt.Println("主程序打印出来=",hah) } //todo 这里是方法 func timeout(a,b int,params chan int) { ch := make(chan int) go func() { //todo 逻辑处理 c := a + b //todo 手动在这里做睡眠,在实际生产环境中,是不会出现这样的情况,我这里是为了做数据测试 time.Sl...阅读全文

博文 2020-04-29 00:34:27 追赶技术的脚步

【go】继续go go go,ubuntu环境搭建及golang的依赖关系分析

这次是在ubuntu14.04 amd64上搭建go的编译环境,使用的IDE换成了sublime text,具体步骤参照的是 http://blog.csdn.net/aqiang912/article/details/46775409 ,我就不赘述了。 关于依赖分析,应该算是比较头疼的地方了。花了点时间看了语法,发现除了一些很不一样的地方比如类型放在变量后面等,其他大多跟C和java类似,很容易上手。 下面以一个小例子来说明golang是怎么import一个包的: 首先我们在自己的主目录下创建一个文件夹test,里面创建一个go文件,test.go,内容如下: package test import "fmt" func Test() { fmt.Printf("This is test-...阅读全文

博文 2016-07-01 02:00:00 puyangsky

go in action

需求 公司要实现大中台战略,以往的后台都是基于传统的技术架构实现的系统。 系统在性能及扩展性上都存在有客观的局限性。 如何将传统系统的原子性服务或组合服务提供给中台是需要解决的一个问题。 概要设计 原子性的服务,通过直连数据模型,并将其转化为RESTFULL的方式来实现。 组合服务通过接口适配转换及转化为统一RESTFULL的方式来实现。 详细设计 原子性服务设计 服务列表 服务编号 服务名称 备注 模型元数据 schema/base/${MODEL_NAME} 如果${MODE_NAME}为空,则是全部信息 模型属性元数据 schema/prop/${PROP_NAME} 如果${PROP_NAME}为空,则是全部信息 模型主键元数据 schema/primary_key/${PRIMAR...阅读全文

博文 2019-07-17 14:33:50 do_young

阿里云免费教你使用营销引擎

课程介绍 阿里云数加营销引擎可以帮助企业快速搭建或升级自有DSP/ADN/DMP系统,提供高质量的竞价、投放、受众定向、pCTR点击率预估/pCVR转化率预估、相关性评估等核心能力。 产品详情:https://data.aliyun.com/product/openad 课时列表 • 课时1:营销引擎 - 如何快速搭建自有DSP • 课时2:营销引擎 - DSP如何进行流量管理 • 课时3:营销引擎 - 如何在DSP中接入【友盟+】DIP • 课时4:营销引擎 - 广告主如何使用借助营销引擎快速搭建的DSP • 课时5:营销引擎 - 广告主如何借助【友盟+】DIP创建人群 开始学习http://click.aliyun.com/m/278...阅读全文

go-反射机制

思路 结构对象映射出来:类名,成员名,成员值 package dao import ( _ "ChbeeGoTest/models" "ChbeeGoTest/utils/myLog" "fmt" "reflect" "strings" ) type Dao struct { } var DaoInter = new(Dao) //将对象映射到表格中,返回主键ID func (this *Dao) Insert(obj interface{}) { //对象转表格 table := obj2table(obj) fmt.Println(table.TbName) //序列化列名 cloums := strings.Join(table.Cloum, ",") fmt.Println(clou...阅读全文

博文 2016-05-01 22:00:02 shuanger_

在linux云服务器下配置GoLang环境

1、下载go环境:Golang当然你如果可以翻墙还可以去这个网址下载:https://golang.org/dl/下载对应版本的包 2、上传下载的文件scp /Users/zt/Desktop/go1.11.2.linux-amd64.tar.gz hz@94.191.79.156:/home/hz/桌面 3、给用户添加权限(1)在root用户下运行vim /etc/sudoers 添加:对应的用户名添加权限,我的是hz 4、在服务器上解压缩 成功后去用户/usr/local查看有没有对应的go文件夹 5、配置go终端下输入cd 进如当前用户主目录vim .bashrc 在.bashrc添加对应指令export GOROOT=/usr/local/goexport GOPATH=$HOME/...阅读全文

博文 2018-12-05 09:34:42 学生黄哲

Golang笔记-Plugin初探

前言 最近在学习fabric 1.2版本的新特性,其中有一个是实现了交易背书和区块结果验证这两个原本由系统链码escc和vscc负责的模块的可插拔。它们的可插拔用到了Go的plugin技术,这也是我第一次知道Go Plugin的概念(虽然在Go 1.8版本就有了),于是准备探一探究竟Go Plugin是什么,怎么用。 什么是Go Plugin Golang是静态编译型语言,在编译时就将所有引用的包(库)全部加载打包到最终的可执行程序(或库文件)中,因此并不能在运行时动态加载其他共享库。Go Plugin提供了这样一种方式,能够让你在运行时动态加载外部功能。 为什么用Go Plugin 其实应该问为什么要用Plugin,我觉得原因有很多,比如: 可插拔:有了Plugin,我的程序可以根据需要随...阅读全文

博文 2018-07-29 13:34:55 tinywell