golang 日志 zap的使用

简介: 日志是我们开发程序必不可少的一部分,go官方的提供的日志包默认功能很简洁,但是满足不了生产环境的全部需求(例如:更精细的日志级别、日志文件分割,以及日志分发等)。虽然Go是新兴语言,但是go的生态圈还是很活跃的,目前比较流行的第三方开源log包有seelog,zap,logrus,还有beego中的日志框架部分。今天我们就着重讲一下uber的zap包,本文中难免会有错误的地方,如有请联系本人,本人会及时更正。zap是uber开源的Go高性能日志库Lumberjack用于将日志写入滚动文件...阅读全文

Segmentfault 2020-07-25 10:32:32 这个名字好长

golang_并发安全: slice和map并发不安全及解决方法

并发安全 并发安全也叫线程安全,在并发中出现了数据的丢失,称为并发不安全 map和slice都是并发不安全的 切片并发不安全 场景: 10000个协程同时添加切片 var s []int func appendValue(i int) { s = append(s, i) } func main() { for i := 0; i < 10000; i++ { //10000个协程同时添加切片 go appendValue(i) } for i, v := range s { //同时打印索引和...阅读全文

CSDN博客 2019-02-23 21:11:20 Grayan

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换

1、获取当前时间 (1) currentTime:=time.Now() //获取当前时间,类型是Go的时间类型Time (2) t1:=time.Now().Year() //年 t2:=time.Now().Month() //月 t3:=time.Now().Day() //日 t4:=time.Now().Hour() //小时 t5:=time.Now().Minute() //分钟 t6:=time.Now().Second() //秒 t7:=time.Now().Nanoseco...阅读全文

51CTO博客 2020-07-21 13:52:39 阿泽Aze

不得不了解系列之限流

限流简介 现在说到高可用系统,都会说到高可用的保护手段:缓存、降级和限流,本博文就主要说说限流。限流是流量限速(Rate Limit)的简称,是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理。对于server服务而言,限流为了保证一部分的请求流量可以得到正常的响应,总好过全部的请求都不能得到响应,甚至导致系统雪崩。限流与熔断经常被人弄混,博主认为它们最大的区别在于限流主要在server实现,而熔断主要在client实现,当然了,一个服务既可以充当server也可以充当...阅读全文

Segmentfault 2020-07-24 16:32:35 梦朝思夕

阿里巴巴ICBU团队开始招人啦

【阿里巴巴】【2021校招】| 提供【简历优化】,为你提高通过率【全程进度跟进查询】阿里巴巴 - ICBU技术部2021届 - 应届秋招开始啦! 提前批都结束了,这次机会真的不能再错过啦!!!!工作地点在【浙江杭州】,职位是【Java后端开发】,团队招聘非常友好,欢迎各位计算机、电子以及各专业跨届牛人前来报名简历投递邮箱:cxp223472@alibaba-inc.com保证当天回复部门介绍:阿里巴巴国际技术事业部隶属于新零售事业群, Base 在杭州滨江园区 负责阿里巴巴国际站(https:/...阅读全文

简书 2020-07-21 12:32:51 NightSprings

字节跳动Android岗经典面试真题——水壶问题

有钱的字节跳动面试题就是这么枯燥无味! 原题:给你一个装满水的 8 升满壶和两个分别是 5 升、3 升的空壶,请想个优雅的办法,使得其中一个水壶恰好装 4 升水,每一步的操作只能是倒空或倒满。 理解了这个题目的意思之后,我们的第一个方法肯定就是使用强大的脑力来进行暴力破解法,瓶子里的水在我们的脑子里颠三倒四,但是脑子有可能没那么清晰,想了几步之后就开始出现记忆错乱,然后就不得不开始慢慢重播。 甚至到最后好不容易搞定了,但是怎么走过来的步骤又给忘记的一干二净 —— 智商好像受到了点小小的侮辱! 这...阅读全文

简书 2020-07-21 12:32:46 字节走动_Android

手把手教你如何获取全网可访问的所有网站网址和网站信息

# 如何获取全网可访问的所有网站网址和网站信息呢今天由于有一个小程序项目,是专门给织梦dedecms网站、WordPress网站做小程序制作免费小程序的。但是手上织梦网站和WordPress网站用户数量都不是很多,很好的项目却没有触及到用户,没有能给网站带来好处,于是就想,能不能收集现在网上所有的织梦网站和WordPress网站,并且获取他们的邮箱、QQ、微信、电话等有用信息呢?带着疑问百度了一番,没有发现现成的可用数据,可是小程序项目还得往前推呢,等着用户来使用呢?既然网上没有现成的,要不就自...阅读全文

简书 2020-07-21 12:32:46 Fesion

排序算法

前言 golang实现排序算法 正文 选择排序 func selectSort(arr []int) { for i := 0; i < len(arr)-1; i++ { minIndex := i for j := i + 1; j < len(arr); j++ { if arr[j] < arr[minIndex] { minIndex = j } } swap(arr, i, minIndex) } } 冒泡排序 func bubbleSort(arr []int) { for i :...阅读全文

简书 2020-07-21 12:32:45 k洛洛

Nali:一个查询IP地理信息和CDN提供商的离线终端工具

开源地址:github.com/zu1k/nali 来源 该工具受 Nali C版本 和 nali-cli js版本 的启发. 我想要在终端对IP地理信息和CDN服务提供商进行查询,发现了Nali这个工具,Nali与哪里谐音,非常适合这类工具 经过简单的使用,我发现最初的C语言版本功能缺失,而苏卡卡大佬的js版本包实在大的恐怖、而支持的平台非常有限,所以我用golang重写了这个工具,在原有功能的基础上增加了对IPv6的支持,并且增加了Geoip2数据库 功能 纯真 IPv4 离线数据库 ZX ...阅读全文

Nali:一个查询IP地理信息和CDN提供商的离线终端工具

开源地址:https://github.com/zu1k/nali来源该工具受 Nali C版本 和 nali-cli js版本 的启发.我想要在终端对IP地理信息和CDN服务提供商进行查询,发现了Nali这个工具,Nali与哪里谐音,非常适合这类工具经过简单的使用,我发现最初的C语言版本功能缺失,而苏卡卡大佬的js版本包实在大的恐怖、而支持的平台非常有限,所以我用golang重写了这个工具,在原有功能的基础上增加了对IPv6的支持,并且增加了Geoip2数据库功能纯真 IPv4 离线数据库ZX...阅读全文

Segmentfault 2020-07-24 15:32:38 zu1k

一些 Go test 技巧

### 前言 测试驱动开发是一个写出高质量代码的好方法,同时避免将代码越写越烂,并证明你的代码能实现预期的效果。 ### 以Table Driven的方式写测试用例 `Table Driven`的意思就是以表格的形式写好测试用例的输入和期望结果,然后写完所有测试用例之后直接在一个循环里遍历所有测试用例,这样的好处是你只需要专注写测试用例的输入和期望结果就OK了。 ```go package add import "testing" func TestAdd(t *t...阅读全文

Go语言中文网 2020-07-21 09:23:47 deletelazy

Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API

太累了,不想来回复制粘贴,多么想有一键发布到各大写作平台上的功能。说重点,Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API:https://blog.csdn.net/dong19891210/article/details/107424704Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API文章转载:http://www.shaoqun.com/a/463338.html阅读全文

51CTO博客 2020-07-21 08:00:08 品途旅游

从零学习 Go 语言(34):关于接口的 "潜规则"

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- ## 1. 对方法的调用限制 接口是一组固定的方法集,由于静态类型的限制,接口变量有时仅能调用其中特定的一些方法。 请看下面这段代码 ```go package main import ...阅读全文

Go语言中文网 2020-07-21 08:10:13 hello_wbm

Go语言基础(二)

一 运算符 1 运算符基础 1 算法: 解决问题的过程,运算符和表达式来串联数据和指令。 算数运算符 赋值运算符比较运算符逻辑运算符位运算符其他相关运算符 2 算数运算符 1 简介 算术运算符是对数值类型的变量进行运算的,如加减乘除,在Go语言中使用较多 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 ++ 自增 -- 自减 2 重点讲解 除(/)和取模(%) 针对除(/): 默认的当除号两边都是整数时,其值为整数,其会直接削减掉对应的小数部分,当一个为小数时,则会继承小数的属性...阅读全文

51CTO博客 2020-07-19 23:51:05 长跑者1号

Golang学习系列第四天:操作数据库PostgreSQL

继Golang学习系列第三天https://www.cnblogs.com/dongguangming/p/13311198.html:数组、切片、Map、结构体、指针、函数、接口类型、channel通道,今天开始学习golang操作数据库,以PostgreSQL为例。 0. 安装PostgreSQL 数据库可以参考PostgreSQL官网https://www.postgresql.org/download/linux/redhat/安装该数据库特别需要说明的是,安装完成后,自动建立了一个名为...阅读全文

51CTO博客 2020-07-18 02:00:08 品途旅游

谈谈自己对GO的Mutex的理解

目前GO已经更新到了1.14的版本咱们一般人如果直接去看mutex的源码的话,其实是比较难理解为什么写成了现在这个样子,尤其是加锁里面的各种逻辑判断太多了,各种位运算一脸懵逼,其实我们只要掌握它最初的设计思想,那么后面新增的逻辑,理解起来都很简单了。 Mutex最初版本 Mutex第一版代码加上注释不过才109行。非常精简,下面介绍一下我对第一版Mutex源码的理解 // Mutex有state和sema两个成员变量,这一点是在1.14没有变化的 // 其中 state 字段代表当前锁的状态,s...阅读全文

Segmentfault 2020-07-24 10:32:33 iuoui