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

国内有哪些知名公司在使用Golang语言?

统计在使用Golang的公司 和 使用效果 如果你的公司正在使用golang 欢迎回复告诉情况,和大家分享~~ 已知的如下: 360消息推送的数据: 16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 单机80万并发连接,load 0.2~0.4,CPU 总使用率 7%~10%,内存占用20GB (res) 目前接入的产品约1280万在线用户 2分钟一次GC,停顿2秒 (1.0.3 的 GC 不给力,直接升级到 tip,再次吃螃蟹) 15亿个心跳包/天,占大多数。 京东云消息推送系统 (团队人数:4) 单机并发tcp连接数峰值118w 内存占用23G(Res) Load 0.7左右 心跳包 4k/s gc时间2-3.x s 产品名: 美团后台...阅读全文

博文 2014-10-21 18:00:01 codemanship

在Golang中,Log打印行号等信息

做个小笔记, 默认情况下,log模块的只打印日期和时间, 没具体行号,比较不爽,嘿嘿 package main /* #include */ import "C" import "log" func main() { log.SetFlags(log.Lshortfile | log.LstdFlags) log.Println( C.random()) } 打印结果: 2012/07/24 19:27:55 X.cgo1.go:14: 1804289383 其中, log.Lshortfile 还可以设置为log.Llongfile 即完整文件路径 获取当前行数,文件名,函数名(方法名): package main import ( "runtime" "fmt" )...阅读全文

博文 2014-11-07 17:31:35 Wendal Chen

golang获取调用者的方法名及所在源码行数

package main import "runtime" import "log" func main() { test() } func test() { test2() } func test2(){ pc,file,line,ok := runtime.Caller(2) log.Println(pc) log.Println(file) log.Println(line) log.Println(ok) f := runtime.FuncForPC(pc) log.Println(f.Name()) pc,file,line,ok = runtime.Caller(0) log.Println(pc) log.Println(file) log.Println(line) log....阅读全文

博文 2015-02-04 03:00:00 wangxusummer

Golang操作数据库

基本概念 Open() – creates a DB Close() - closes the DB Query() - 查询 QueryRow() -查询行 Exec() -执行操作,update,insert,delete Row - A row is not a hash map, but an abstraction of a cursor Next() Scan() 注意:DB并不是指的一个connection 连接到数据库 我们以mysql为例,使用github.com/go-sql-driver/mysql,首先我们需要导入我们需要的包 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 注意我们导入gith...阅读全文

博文 2015-08-09 18:00:01 nop4ss

golang读写mysql的例子,使用mymysql驱动

http://www.dotcoo.com/golang-mysql-mymysql golang,做很多系统都离不开数据库,当然最常用的还是mysql,今天测试了一下连接mysql数据库,呼呼爽啊.再次为golang欢呼. 这次用的是golang的mymysql驱动,好久没有用mysql了,还是忘不了她. package main import ( "fmt" "database/sql" "github.com/ziutek/mymysql/godrv" ) // 用户结构 type User struct { uid int username string password string } func main() { // 设置连接编码 godrv.Register("SET NAM...阅读全文

博文 2014-10-05 00:00:02 DarkWingBoy

golang log用法

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> package main import ( "log" "os" ) var logger *log.Logger func main() { file, err := os.OpenFile("test.log", os.O_APPEND|os.O_CREATE, 666) if err != nil { log.Fatalln("fail to create test.log file!") } defer file.Close() logger = log.New(file, "", log.LstdFlags|log.Lshortfile) // 日志文件格式:log包含时间及文件行数 log.Pri...阅读全文

博文 2018-09-01 14:33:12 Robin3D

统计代码行数工具 用golang实现

首先:修改conf文件,配置要查找什么后缀的文件代码行数 使用方法:countcodeliine filename or nothing(计算可执行程序所在目录) 实现功能: 1,统计代码行数 2,可以根据配置文件(conf)来进行设置要对什么类型的代码进行统计 3,统计每个类型文件行数,和总行数 将来要实现功能: 1,注释行数 2,注释率 3,导出csv功能 源代码: package main import( "os" "container/list" "io" "log" "path/filepath" "bufio" ) func init(){ log.SetFlags(log.Llongfile| log.LstdFlags) } func main(){ conf,err := ...阅读全文

博文 2015-06-22 03:01:19 rufidmx

Golang 计算目录中代码的行数

程序名字 countline os 包来获取运行参数 运行的时候要提供两个参数,一个是目录,一个是扩展名 如: countline . go 没有运行参数的就退出程序 if len(os.Args) != 3 { fmt.Println("countline [Dir] [extention]") return } 计算文件有多少个 ‘\n’ func countFileLine(name string) (count int64, err error) { fmt.Println("count file:", name) data, err := ioutil.ReadFile(name) if err != nil { return } count = 0 for i := 0; i <...阅读全文

博文 2015-06-17 20:00:58 juxuny

3D 可视化展示 Go 项目源码GoCity

GoCity 用于可视化展示 Go 项目的源代码。GoCity 将 Go 项目当作一个城市并遵循以下的约定: 将整个项目看作城市的“区” 将项目中的 Go 文件看作是城市的“建筑物” 将 Go 源码文件中的数据结构看作是构建于文件之上的“建筑物”(和 Go 文件通过颜色进行区分) **建筑物说明** 建筑的颜色深浅表示代码行数(LOC),行数越多,颜色越暗 建筑的基本尺寸表示变量数(NOV) 建筑的高度表示方法数(NOM) **示例** ![image](https://static.oschina.net/uploads/space/2018/1105/155107_wKLb_2720166.png...阅读全文

开源项目 2018-11-05 16:30:00 网友

GoLang中flag标签使用

正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包。在 Golang 语言中也为我们提供了相应的功能,直接上代码,在代码中会做详细的解释,当前运行环境为:Go-1.8.1 package main import ( "flag" "log" "os" ) func usage() { log.Fatalf("Usage: myProgram [-s server] [-t isShowTimeStamps] \n") } func printMsg(message string) { log.Printf("Received message is : %s \n", ...阅读全文

博文 2017-09-23 03:30:01 grimm

beego excel表格批量导入数据问题

想得到的是这种sql语句 [INSERT INTO `user` (`name`, `email`, `age`, `is_active`) VALUES (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?)] str是一个切片数组 现在代码得到的sql语句都是单条插入 求大神来解决 var info models.Info for num, strsclice := range str { if num == 0 { contin...阅读全文

一种 golang 实现 多协程任务处理的套路

# 一种 golang 实现 多协程任务处理的套路 ## 那么是什么样的任务呢,一般是在生产者-消费者模式的消费者进程 ,举几个例子 1. 消费kafka 数据 2. 消费redis 数据 3. 轮询处理数据库数据 4. ... ## 下面来分析一下 1. 业务逻辑处理协程 到底多少个呢 ?处理一个数据 就 go 一个吗,也可以不过有点粗暴,协程也不是越多越好,调度也是要好性能的 所以还是控制一下,一般吧 弄个cpu * 2 就差不多了 (runtime.NumCPU() *2) 2. 获取数据协程 由于我要分析的例子 都是一个 for 循环 不停读取数据 交个任务处理协程,所以这里就 用一个协程 3. 进程如何关闭 总不能kill -9 粗暴处理吧,这样容易造成数据异常或者丢数据,一般都是...阅读全文

博文 2018-04-29 14:48:46 Bulesxz

PostgreSQL 管理系统 pgweb

pgweb 是一个采用 Go 语言开发的基于 Web 的 PostgreSQL 管理系统。 主要特性: * 可连接到本地和远程服务器 * 浏览表格和表格数据 * 读取表格详情,包括结构、大小、索引和行数 * 执行 SQL 查询和运行分析 * 导出查询结果到 CSV * 查看查询历史记录 支持 PostgreSQL 9.1-9.3,服务器启动参数:

Usage:
  pgweb [OPTIONS]

Application Options:
  -v, --version  Print version
  -d, --debug    Enable debug...阅读全文

开源项目 2014-10-27 16:00:00 sosedoff

Go语言将使用Go代替C重写运行时环境

Go 1.4 的合并窗口在 9 月份将关闭,从现在开始到12月份发布 Go 1.4 之前将只接受 bug 修复和小调整。 Go 1.4 最主要的变化是将使用 Go 语言本身来重写 Go 的运行时,而之前是采用 C 语言开发。这也是为什么 Go 的发行版中包含一个 C 编译器的原因。 使用 Go 重写的好处是: 当前如果在 Goroutine 的调用堆栈中发现 C 代码,runtime 将在需要增长堆栈时回滚到老的堆栈方法。如果使用 Go 来重写 runtime,那么堆栈拷贝的方法就会更加高效 目前转换工作只计划转 Go 编译器 (5g, 6g, 8g), 而不是 C 编译器,降低运行时中的 C 代码行数,甚至可能完全清除 注意 这是 golang.org 分发版,也就是 gc ,而不是 gc...阅读全文

博文 2014-10-09 16:00:05 u012797015

golang模仿tail命令,显示文件末尾指定行数的文件内容

项目中需要实现读取文件末尾指定行数的功能(类似于tail命令),就去看了一下tail命令的实现思路。然后用go语言按照思路仿写了一下。后面可以结合 https://github.com/fsnotify/fsnotify 实现日志的实时输出功能。类似于 `tail -f xxx.log`效果 ``` package main import ( "bufio" "bytes" "io" "log" "os" "strings" ) func main(){ lines := int64(200) file, err := os.Open("C:\\Users\\Administrator\\Desktop\\test.log") if err != nil { log.Println(err)...阅读全文

博文 2018-02-06 17:06:43 iuoui

关于go语言

腾讯soso 文/王益 最近几个星期里,我的工余时间基本全部放在学习和使用Go语言上了。这只螃蟹很好吃;向大家推荐。 对Go语言的总体感觉:- Go语言的语法简单(语言的复杂程度小于C++和Java,关键词数量相当于C), - Go程序的编译速度非常快。我尝试了两种Go编译器: 1. Rob Pike的GC编译器编译起来瞬间完成; 2. Ian Taylor的gccgo编译速度虽然不如GC,但是也快过g++,而且代码生成优化做的更好) - 生成的代码的执行效率和g++的结果的可比。 这个链接(http://shootout.alioth.debian.org/u64q/benchmark.phptest=all⟨=go&lang2=gpp)比较了GC编译的Go程序和g++编译的C++程序的。...阅读全文

博文 2014-10-04 19:25:59 soso_blog

golang连接orcale

使用glang有一段时间了,最开始其实并不太喜欢他的语法,但是后来熟悉之后发现用起来还挺爽的。之前数据库一直使用mysql,连接起来没有什么问题,github上有很多完善的驱动,所以以为连接其他数据库也应该没什么问题,近日听说其连接orcale比较麻烦,所以就试了试。 之所以连接orcale比较麻烦是因为orcale并没有提供golang的驱动,所以并不能像java那样引入个驱动包就能连接,也不能像mysql之类的开源数据库可以自己实现驱动。不过正所谓天无绝人之路,既然纯go实现不了,那么还可以用cgo实现,c语言总该支持了吧。 网上有很多方法,不过都是使用oci实现的,这里我们使用go-oci8(https://github.com/wendal/go-oci8) 一、安装MinGW 首先...阅读全文

博文 2014-10-04 19:26:41 oO脾气不坏Oo

[UMU 学 golang](1) Hello code!

一直玩 WSH,被说逼格跟不上时代,又据说 go 即将发布的 1.5 版解决了 GC stop-the-world 问题了,所以 UMU 打算以后用它来开发工具。 最近想统计代码行数,以前用 VBS 写的一时间居然找不到,直接就用 golang 写了一个,基本从零开始用了大约 4 小时完成。下面谈一下心得。 1、golang 的 runtime 居然没有 set,只能用 map 代替了,一开始觉得不优雅,不过想来也差不多,不计较那么多了。 2、语法还确实挺简洁的,第一次练手就感觉学这个语言,其实是在学它的规范,语言本身太容易了。 3、defer 挺好用的,简洁、省心,比如这个核心函数: func CountLine(path string) (num int) { f, err := os....阅读全文

博文 2015-08-19 17:00:01 UMU

C++面向对象之string类的使用详解

  1.包含头文件string,使用命名空间;   2.声明和定义string。 ![1.png](http://studygolang.qiniudn.com/161009/0d053d9e9c611ba9197e4a6afeeb5482.png) 1)声明一个string类型的变量str1;   2)声明并定义一个string类型的变量str2;   3)声明并定义一个string类型的变量str3;   4)声明并定义一个string类型的变量str4;   5)声明并定义一个string类型的变量str5,它的值为十个a;   6)利用变量str5创建str6,两个变量是一样的内容。   3.字符串的加法 ![2...阅读全文

用golang写的mysql orm 简单实用mysql

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 没事用golang写了个简单的orm管理框架mysql的,当然简单使用了一下,然后大家提交一下bug,然后我会持续更新和优化这个程序 官方网站 介绍 gomysql是基于go-sql-driver基础上开发的orm,这是一个轻量级的库。它会使数据库的增删改查变得非常容易。当然也是测试开发版,会一直优化和更新!请时刻关注我们 安装 go get github.com/go-sql-driver/mysql go get github.com/widuu/goini go get github.com/widuu/gomysql 依赖的包 mysql :github.com/Go-SQL-Driv...阅读全文

博文 2017-02-09 18:41:10 widuu

Golang使用感受

 Golang使用感受 说白了一门语言对你造成重大影响的就四个东西:性能,行数,易理解度,坑的多寡深浅(包括网上的相关资料和第三方类库)。 性能方面 Go 的性能基本上只输 C 家族,最坏情况也就慢几倍(不像某些流行语言慢几十上百倍),就算用来实现对性能要求苛刻的算法也算不上浪费 CPU。但如果看广义的性能,把并发算进去,还是比较爽的。像 Ruby / Python 这类被 GIL 束缚手脚的语言就不说了,而相比那些直接操作系统级线程/进程的语言来说,速度优势就很明显。当然,很多语言也可以包一个轻量级线程的实现,但问题就出在这里,他们官方没做这个事情,这种命根子需求使用第三方库会带来很多隐患。 行数方面 这是 Go 的小劣势,总体表现力不如 Ruby / Python / Scala / ...阅读全文

博文 2016-08-10 10:00:04 yueguanyun

Go语言:打印杨辉三角

杨辉三角的样式如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 它的特征是,每一行的最左边和最右边的元素都是1,而其它元素等于它上方“肩膀”上的两个元素之和。 使用Go语言打印杨辉三角: package test import ( "fmt" ) //行数 const LINES int = 8 //杨辉三角 func ShowYangHuiTriangle() { nums := []int{} for i := 0; i < LINES; i++ { //补空白 for j := 0; j < (LINES - i); j++ { fmt.Print(" ") } fo...阅读全文

博文 2015-06-17 23:01:18 books1958

golang实现读取当前所在文件夹里面的txt数据,去除空格,以列的形式保存在excel中

假如原始数据在txt中,格式如下: 1.23 486 89.001 456.2 8.25 96.01 456.01 456.6 456.1 每一行的空格数量不同,但是数字数量相同,列数保持一致。希望将这些数据保持所在行数和列数不变,保存在excel中。 保存在excel中,格式如下: col1 col2 col3 row1 1.23 486 89.001 row2 456.2 8.25 96.01 row3 456.01 456.6 465.1 golang代码如下: package main import ( "encoding/csv" "fmt" "io/ioutil" "os" "os/exec" "path/filepath" "strings" ) func main() { d...阅读全文

博文 2016-11-17 13:00:04 su_sai

GO Logger 日志实践

分析一下用过的打印日志的log包 Go标准库自带log, 这个log的func比较少, 没有区分level, 但足够简单, 有prefix功能, 可以设置flag来控制时间格式, caller的文件名和行数, 其它的标准包如 net/http database/sql 等也用了此包. 对自带的log进行包装, 加入level, 颜色. 如ngaut/log, 这个log star数并不多, 还是从最近很火的一个项目pingcap/tidb里看到的, 有点小清新的感觉, 但这个log可能只是为tidb使用的, 缺少自带log的一些方法, 导致没法使用在一些可以定制logger的第三方库如gorm中. 于是我fork了一下https://github.com/hanjm/log, 增加了一些方法...阅读全文

博文 2017-12-18 04:42:09 hanjm

招募golang开源爱好者,一起开发完善golang论坛系统

gentlesys招募版主,招募golang开源爱好者,一起开发完善golang论坛系统! gentlesys是开源项目,本着对golang语言及论坛系统设计的热爱,一直是本人坚持独立开发。可对一个完善的系统而言,需要涉及的事情太多,尤其是网页前端等表现,并不是本人所擅长的领域。 希望golang项目开源爱好者,论坛设计爱好者们,加入项目,一起共享力量。凡是对gentlesys开源项目有一定贡献的人,只要提交的代码行数在10行以上,均无条件获得终身免费授权。欢迎加入我们。 项目地址: https://github.com/cxasm/gentlesys 我们的论坛地址: http://www.itdp.c...阅读全文

golang 算法-矩阵

版权声明:哈哈,一起学习,一起进步 https://blog.csdn.net/qq_36183935/article/details/80785371 矩阵相乘: package main import "fmt" type SQ struct { m,n int data [][]int } //a的列数和b的行数相等 func mul(a SQ,b SQ) [][]int{ res := [][]int{} for i:=0;i阅读全文

博文 2018-12-15 13:31:33 qq_36183935

TiDB 优化器实现的基础:统计信息的收集

收集统计信息的意义一个 SQL 数据库里,优化器实现的好坏对性能的影响是决定性的。一个未经优化的执行计划和经过充分优化后的执行计划,执行时间的差别往往是成千上万倍。而对一个 SQL 优化器来说,统计信息是必不可少的条件,只有依赖统计信息提供的数据,优化器才可以正确估算不同的执行计划的执行代价,以选择最优的执行计划。就像一个大厨无论多么优秀,没有上等食材也是无法做出美味的饭菜。 统计信息包含的内容 统计信息有两类,包括 Table 统计信息和 Column 统计信息。Table 统计信息包含 Row Count 和 Row Size。Column 统计信息包含 Null Count,Max Value,Min Value,Distinct Count 以及 Histogram。其中 Histo...阅读全文

博文 2017-02-10 02:39:37 PingCAP

Go实现杨辉三角的输出

概述 前提:端点的数为1. 每个数等于它上方两数之和。 每行数字左右对称,由1开始逐渐变大。 第n行的数字有n项。 第n行数字和为2n-1。 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。 每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。 (a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。 将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契...阅读全文

博文 2017-02-10 12:23:56 谢权

golang使用闭包降低测试代码行数

有如下函数,简单来说就是有错误则直接返回,没错误则执行f函数。 func (t *transaction) Do(f func()) *transaction { if t.fail || t.rollback || t.finish { return t } f() return t } 函数很简单,但如何测试呢,简单但丑陋的方法: func Test_func(t *testing.T) { isCalled := false f := func() { isCalled = true } trans := New() // do something trans.Do(f) // check if isCalled { // do something } } 在f中修改外部变量,然后判断...阅读全文

博文 2017-02-10 10:28:52 冥灭

ARTS 第9周

ARTS 第9周分享 [TOC] Algorithm 682. 棒球比赛 [思路] 用一个栈来存储所有的分数即可 [参考代码] func baseballGame(ops []string) int { intSlice := make([]int, 2) sum := 0 for _, v := range ops { switch { case v == "+": lens := len(intSlice) vInt := intSlice[lens-1] + intSlice[lens-2] sum += vInt intSlice = append(intSlice, vInt) case v == "D": lens := len(intSlice) vInt := intSlic...阅读全文

博文 2019-06-02 23:34:40 陈卧虫

Go语言学习笔记:数据类型

go语言已经出来5年了,最近才开始学习,真是惭愧。 如果要用一个词来形容go语言的话,那么没有比高并发更合适的。levelDB就是用go语言来实现的。 下面主要看下go语言的数据类型 布尔型:bool,取值true, false 整型:int/uint 32位或64位 8位整型:int8/uint8 字节型:byte(unit8别名) 16位整型:int16/uint16 32位整型:int32(rune)/uint32 64位整型:int64/uint64 浮点型:float32/float64 小数点精确到7/15位 复数:complex64/complex128 足够保存指针的32位和64位整数型:uintptr 其它值类型:array, struct, string 引用类型:sli...阅读全文

博文 2017-07-02 19:21:33 Tao Kelu

10-GoLang数组

1.和C语言一样,Go语言中也有数组的概念, Go语言中的数组也是用于保存一组相同类型的数据 2.和C语言一样,Go语言中的数组也分为一维数组和多维数组 3.C语言中定义数组的格式 int ages[3]; 4.Go语言中定义数组的格式 var ages [3]int 5.C语言中操作数组的格式: ages[索引]; 6.Go语言中操作数组的格式和C语言一样 var ages [3]int = [3]int{1, 3, 5} // 取出数组中保存的值 fmt.Println(ages) //[1 3 5] fmt.Println(ages[0]) fmt.Println(ages[1]) fmt.Println(ages[2]) 7.C语言中数组的初始化方式有好几种 7.1先定义再初始化 只...阅读全文

博文 2018-10-18 13:34:40 箩篼

Go 语言函数

1.Go 语言函数定义格式如下: func function_name( [parameter list] ) [return_types] { 函数体 } parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。函数体:函数定义的代码集合。 2.函数返回多个值: package main import "fmt" func swap(x, y string) (string...阅读全文

博文 2018-11-14 09:34:38 楷楷

提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化

摘要: 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案,DMS企业版旨在帮助企业安全、高效的使用数据库,提升研发与DBA运维的协作效率,为企业核心数据提供更安全的访问管控和操作记录查询审计。 **点此查看原文: http://click.aliyun.com/m/41268/** 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 ![图片描述](http://img.blog.csdn.net/20180130104827243?watermark/2/text/aHR0cDov...阅读全文

(六) ZigZag Convert

题目 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int numRows); 示例 1: 输入: s = "LEETCODEISHIRING", numRows = 3 输出: "LCIRETOESIIGEDHN" 示例 2: 输入: s = "LEETCODEISHIRING", numRows = 4 输出: "LD...阅读全文

博文 2019-02-16 08:34:44 L白水飘萍

Beego Logs 源码分析 中篇

文件输出引擎使用到的读写锁 sync.RWMutex 读写锁是一种同步机制,允许多个读操作同时读取数据,但是只允许一个写操作写数据。锁的状态有三种:读模式加锁、写模式加锁、无锁。 无锁。读/写进程都可以进入。 读模式锁。读进程可以进入。写进程不可以进入。 写模式锁。读/写进程都不可以进入。 就拿文件行数这个变量来看,如果开启了日志文件按小时按行数切割的功能,要先读取当前文件行数变量值。当并发情况下,多个 goroutine 在打日志,读取文件行数和修改文件行数便成为一对“读写”操作,所以需要用读写锁,读写锁对于读操作不会导致锁竞争和 goroutine 阻塞。 // WriteMsg write logger message into file. func (w *fileLogWriter...阅读全文

博文 2019-03-14 12:34:41 chencanxin

LeetCode-6-Z 字形变换

题目描述 Z 字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int numRows); 示例 1: 输入: s = "LEETCODEISHIRING", numRows = 3 输出: "LCIRETOESIIGEDHN" 示例 2: 输入: s = "LEETCODEISHIRING", numRows = ...阅读全文

博文 2019-07-12 21:32:44 monigo

如何使用Go接口

## 常见写法 经常看到许多人的写法 ```go package animals type Animal interface { Speak() string } //实现animal这个接口 type Dog struct{} func (a Dog) Speak() string { return "woof" } ``` ```go package circus import "animals" func Perform(a animal.Animal) string { return a.Speak() } ``` 这种写法很像java 风格,`Java-style`接口使用方式。解读上面的代码步骤 - 定义了一个...阅读全文

通过消除错误消除错误处理

本文译自 Eliminate error handling by eliminating errors 版权@归原文所有. Go 2 旨在改善错误处理的开销, 但是你知道有什么比处理错误的改进语法更好吗? 根本不需要处理错误. 现在, 我不是说 “删除你的错误处理代码”, 相反我建议改变你的代码, 这样你就没有多少错误需要处理. 本文从 John Ousterhout 软件设计的哲学的一章中汲取灵感, “定义不存在的错误”. 我尝试将他的建议应用于 Go. 这是一个计算文件行数的函数: func CountLines(r io.Reader) (int, error) { var ( br = bufio.NewReader(r) lines int err error ) for { _,...阅读全文

博文 2019-04-01 14:10:27 lingchao.xin

Golang log 和os 配合,flag标志位心得,配合部分stdout,stderr,UNIX上

https://github.com/stvenyin/GO-lesson 参考国内大神无闻 package main import ( "flag" "log" "os" ) func usage() { log.Fatalf("Usage: myProgram [-s server] [-t isShowTimeStamps] \n") } func printMsg(message string) { log.Printf("Received message is : %s \n", message) } func main() { //os.Args 提供原始命令行参数访问功能。注意:切片中的第一个...阅读全文