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

用 Go 写了个类似 Rails ActiveRecord 的 ORM 库, gorm

目前支持的功能有 * CURD * Chainable API * Before/After Create/Save/Update/Delete Callbacks * Order/Select/Limit/Offset Support * Update, Updates Like Rails's update_attribute, update_attributes * Dynamically set table name when search, update, delete... * Automatically CreatedAt, UpdatedAt * Soft Delete * Create table from struct * Prevent SQL ...阅读全文

主题 2013-10-29 06:01:59 jinzhu

golang按行写文件

将map[string]string写入文件 func WriteMaptoFile(m map[string]string, filePath string) error { f, err := os.Create(filePath) if err != nil { fmt.Printf("create map file error: %v\n", err) return err } defer f.Close() w := bufio.NewWriter(f) for k, v := range m { lineStr := fmt.Sprintf("%s^%s", k, v) fmt.Fprintln(w, lineStr) } return w.Flush() ...阅读全文

博文 2016-03-14 17:00:01 xielingyun

switch _ golang

switch 1: 在条件语句中,可以写多条的语句 2: 也可以不添加语句 package main import ( "fmt" "time" ) func main() { i := 2 fmt.Println("write ", i, " as ") switch i { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") } switch time.Now().Weekday() { case time.Saturday, time.Sunday: fmt.Println("it's the weekend") default: fmt.Println("it's a w...阅读全文

博文 2015-03-13 03:00:01 jackkiexu

go语言三——并行

go从语言层面就支持并行程序设计goroutine(Go语言并行设计的核心),比thread高效易用 package main import( "fmt" "runtime" ) func say(word string){ for i:=0; i<10; i++ { // runtime.Gosched() //让出时间片 fmt.Println(word) } } func main(){ //默认系统线程数量为1,可通过下面指令调整,充分利用多核优势 runtime.GOMAXPROCS(4) go say("Hello") say("World") } 多个 goroutine 运行在同一个进程里面,共享内存数据,不过设计上我们要遵循:不要通过共享来通信,而要通过通信来共享go提供了...阅读全文

博文 2014-10-04 19:26:22 ciaos

以io.Writer为例看go中的interface{}

阅读该文后的一些理解 1 io.Writer接口 io.Writer接口有如下定义 package io type Writer interface { Write(p []byte) (n int, err error) } //根据go中接口的特点,所有实现了Write方法的类型,我们都说它实现了io.Writer接口。 2 somepkg.abc类型实现了io.Writer接口 package somepkg type Abc struct { id int } func (a *Abc) Write(p []byte) (n int, err error){ //writing.... return 1,nil //模拟返回,n表示写了几个字节,err表示是否有错误 } //根据go...阅读全文

博文 2014-10-04 19:26:27 waynehu

golang 写文件

package main import ( "bufio" "fmt" "io" "os" ) func main() { fil, err := os.OpenFile("C:/Documents and Settings/xxx/Desktop/tax.txt", os.O_RDWR|os.O_APPEND, 0420) if err != nil { fmt.Printf("Error: %s\n", err) return } defer fil.Close() fil.WriteString("Hello World!\n") } ===============io WriteString================== package main import ( "fmt" ...阅读全文

博文 2015-04-07 03:00:05 rojas

golang 写二叉查找树练习

package main import ( "fmt" ) type item struct { key int } type tree struct { lchild, rchild *tree item item count int } func compare(x, y item) int { var ret int switch { case x.key > y.key: ret = 1 case x.key == y.key: ret = 0 case x.key < y.key: ret = -1 } return ret } func create(T *tree, x item) *tree { if T == nil { T = new(tree) T.item = x T...阅读全文

博文 2015-06-21 00:01:19 u014798316

Golang版的CRC16校验(查表法)

用go仿写了一个CRC16校验方法 var ( aucCRCHi = []byte{ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0...阅读全文

博文 2017-12-14 08:06:00 iuoui

golang--gopher北京大会

大会感想:牛人真的很能写代码,实现很多功能,而且开源的精品越多,影响力越大,换工作跟玩似的,越能过上dream life。比如beego的作者,去了America,进入了Apple。另外,创业公司的精英们特点是表达能力很强,也能撕逼。比如Golang和Rust性能pk就争论得不可开交。参与这种技术社群真的是让人脑洞大开,记得谁说过那么一句话--不让你感到惊喜的语言不值得学。我想表达的是不让我感到惊喜的会议不值得花钱参加。 我很想分享一些干货,后续我会通过图片展示出来,目前我只想说,本来很有激情,但是说给老婆听后,就很沮丧了。老婆那句话说的好,golang再容易上手,我估计这辈子是没希望能站到讲台上和大牛那样撕逼了。虽然这几年和老婆吵架,撕逼技术已经渐长。但距离高手的路还是很长。起码githu...阅读全文

博文 2016-04-17 09:00:01 zzuse

分享:用四十种语言分别写一个MD5算法 之12 Go语言MD5算法

分享:用四十种语言分别写一个MD5算法 之12 Go语言MD5算法 package main import ( "crypto/md5" "fmt" ) func main() { for _, p := range [][2]string{ } { validate(p[0], p[1]) } } var h = md5.New() func validate(check, s string) { h.Reset() h.Write([]byte(s)) sum := fmt.Sprintf("%x", h.Sum()) if sum != check { fmt.Println("MD5 fail") fmt.Println(" for string,", s) fmt.Println(...阅读全文

博文 2015-06-17 23:01:48 sooch

云数据库HBase版重磅商业化上线

摘要: 云数据库HBase版经过4个月的公测,正式商业化上线了,本文介绍了云数据库HBase的前世今生(结尾有彩蛋)。   随着近些年互联网行业的飞速发展,很多业务的数据量都在急剧的增大,传统的RDBMS数据库逐渐撑不住,逐渐出现读写分离策略、分库分表策略。从数据结构上看,非结构化数据的量在不断剧增。总之,从架构搭建、程序调用到后期运维上,数据库的复杂度变的越来越高,且很多中小型的公司,数据规模都达到了数TB、数PB的级别,对数据的吞吐要求也达到了百万QPS,甚至是千万级别。 HBase的起源   在这样的大背景下,HBase出现了,它是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储...阅读全文

golang写一个简单的爬虫

package main import( "fmt" "io/ioutil" "net/http" ) func gethtml(url string) (r *http.Response, e error){ resp,err := http.Get(url) if err != nil { fmt.Print("error") } return resp,err } func main(){ resp, _ :=gethtml("http://www.baidu.com") defer resp.Body.Close() fmt.Println(resp.StatusCode) if resp.StatusCode==http.StatusOK{ body,err :=ioutil.Re...阅读全文

博文 2018-06-07 15:30:01 c-x-a

2018年总结

2018年瞬时而过,现总结如下。每月做的事情:一月,教师资格面试二月,过年三月,微信转发统计程序四月,忘记。(需要做月总结)五月,学习消防工程师相关内容六月,学习消防工程师相关内容,提升计划去郑州七月,提升计划去郑州学习,带孩子八月,提升计划去郑州学习,入wish坑九月,wish发布商品并编写相关程序十月,wish发布商品并做自动化发布程序十一月,wish被罚弃坑,计划靠python爬虫挣钱坑大,需要账号,ip资源,入golang坑十二月,编了一个月golang,计划解决淘宝客引流问题,ip资源问题去年计划完成情况:去年未制定计划总之,今年理想很多,行动很饱满,现实是没有一个做成的,很失败。自己不断的入坑,弃坑。是自己没有制定2018年计划的原因吗?是一方面,明显今年没有目标,行动比较散乱。...阅读全文

博文 2019-01-02 18:34:47 勇勇_cf62

Go 生态圈的 K/V 数据库 benchmark

Go生态圈有好几个K/V数据库,我们经常用它来做我们的存储引擎,但是这些数据库引擎的性能如何呢?本文试图用性能而不是功能的数据考察这些数据库,我测试了几种场景: 并发写、并发读、单一写并发读、并发删除,得出了一些有趣的数据。 测试在两台机器上测试的,一台机械硬盘,一台固态硬盘,使用256字节作为value值的大小,9个字节作为key的大小,测试简单的读写删除操作,并没有测试批量读写操作。 每个测试case测试1分钟。 代码: kvbench K/V 数据库 Rocksdb: RocksDB是Facebook维护的高性能的嵌入式K/V数据库。它是LevelDB的克隆版,针对多核、SSD做了很多优化。 LSM tree数据结构。 badger: 一个纯Go实现的快速的嵌入式K/V数据库,针对LS...阅读全文

博文 2019-04-16 14:56:58 smallnest

golang并发编程读写锁sync.RWMutex

一、介绍 sync.RWMutex 为读写锁,lock为写锁定 ,Unlock 为写解锁,RLock为读锁,RUnlock为读解锁。 二、场景 适用于场景:多读一写,读可以同时进行,但是写只能一个写,读写是互斥的要么只能读或者只能写 三、代码测试 功能性测试 第一种场景 测试内容 : 读锁存在的情况下,同时出现读和写的操作,此时优先获取写锁 package main import ( "testing" "fmt" "sync" "time" ) var rwlock = &sync.RWMutex{} var wg = &sync.WaitGroup{} func TestRWMutex(t *testing.T) { //读 wg.Add(1) go rlockwork() time.S...阅读全文

博文 2019-06-27 21:32:40 清晨的麦田

分享一个gin的middleware gin-dump

### [gin-dump](https://github.com/tpkeeper/gin-dump) ##### 项目地址[https://github.com/tpkeeper/gin-dump](https://github.com/tpkeeper/gin-dump) * gin的middleware * 可以输出出req ,res的header和body内容,方便观察请求和相应结果 ##### 使用 ``` package main import ( "fmt" "time" "github.com/gin-gonic/gin" "github.com/tpkeeper/gin-dump" ) func main() { ...阅读全文