golang插入字符串_golang用多个协程,生成随机字符串,插入数据库

这篇博客介绍了如何利用Golang的多协程特性提高生成随机字符串并插入数据库的效率。通过创建指定数量的协程,每个协程生成一定数量的随机字符串,然后将这些字符串插入到MySQL数据库中。文章展示了具体的Go代码实现,并给出了运行结果,包括成功和失败的计数、开始和结束时间以及总耗时。
摘要由CSDN通过智能技术生成

之前都是用php在cli下去跑,生成随机字符串,由于php单线程 插入速度快不起来

利用golang起很多个协程一起去跑,就可以达到快速插入数据库的目的

demopackage main

import (

"database/sql"

"fmt"

_ "github.com/go-sql-driver/mysql"

"math/rand"

"os"

"strconv"

"time"

)

var xiecheng int

var num int

var total int

var db *sql.DB

var success_total int

var error_total int

var start_time int64

var end_time int64

func main(){

defer func() {

if err := recover(); err != nil {

fmt.Println(err)

}

}()

start_time = time.Now().Unix()

fmt.Println("生成总数=协程数*每个协程生成的数量")

fmt.Println("请输入要启用的协程数")

fmt.Scanln(&xiecheng)

if xiecheng == 0{

fmt.Println("请输入正确的协程数")

return

}

fmt.Println("请输入每个协程生成的数量")

fmt.Scanln(&num)

if num == 0{

fmt.Println("请输入正确的数量")

return

}

total = num*xiecheng

if xiecheng == 0{

fmt.Println("请输入正确的数量 需大于100")

return

}

rand.Seed(time.Now().UnixNano())

DB,_ := sql.Open("mysql","数据库用户名:密码@tcp(主机名:端口号)/数据库名?charset=utf8")

db = DB

for i:=0;i

go insert()

}

select{}

}

func randstr(lens int)string{

var str string

strpol := "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

for i:=0;i

num := rand.Intn(len(strpol)-1)

str = str + strpol[num:num+1]

}

return str

}

func insert(){

var success int

var error int

for i:=0;i

key := randstr(8)

sql_str := "insert into code(`key`,create_time,update_time) values('" + key + "','" + strconv.Itoa(int(time.Now().Unix())) + "','" + strconv.Itoa(int(time.Now().Unix())) + "')"

_, err := db.Exec(sql_str)

//_, err := db.Query(sql)

if err == nil{

success++

fmt.Printf("生成成功:%s\n",key)

}else{

error++

fmt.Println(err)

fmt.Println(sql_str)

fmt.Printf("生成失败:%s\n",key)

}

}

success_total += success

error_total += error

if success_total + error_total == total{

end_time = time.Now().Unix()

fmt.Printf("\n生成总数:%d\n成功数:%d\n失败数:%d\n开始时间:%s\n结束时间:%s\n耗时:%d秒\n",total,success_total,error_total,time.Unix(start_time, 0).Format("2006-01-02 15:04:05"),time.Unix(end_time, 0).Format("2006-01-02 15:04:05"),end_time-start_time)

os.Exit(0)

}

}版权属于:本文是原创文章,版权归 吾梦小站 所有。

本站所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

您可以自由地转载和修改,但请务必注明文章来源并且不可用于商业目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值