自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tinysakura的博客

每一次离散,都是为了下一次重聚。

  • 博客(27)
  • 收藏
  • 关注

转载 logrus使用进阶

文件名与行号logrus的一个很致命的问题就是没有提供文件名和行号,这在大型项目中通过日志定位问题时有诸多不便。Github上的logrus的issue#63:Log filename and line number创建于2014年,四年过去了仍是open状态~~~网上给出的解决方案分位两类,一就是自己实现一个hook;二就是通过装饰器包装logrus.Entry。两种方案网上都有很多代码,但...

2019-08-30 14:50:26 2128 3

转载 go语言日志框架logrus

转载自李文周的博客logrus介绍Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容。它有以下特点:完全兼容标准日志库,拥有七种日志级别:Trace, Debug, Info, Warning, Error, Fataland Panic。可扩展的Hook机制,允许使用者通过Hook的方式将日志分发到任意地方,如本地文件系统,logstash,e...

2019-08-30 14:25:55 1054

转载 go goroutine泄露

什么是goroutine泄露Go 中的并发性是以 goroutine(独立活动)和 channel(用于通信)的形式实现的。处理 goroutine 时,程序员需要小心翼翼地避免泄露。如果最终永远堵塞在 I/O 上(例如 channel 通信),或者陷入死循环,那么 goroutine 会发生泄露。即使是阻塞的 goroutine,也会消耗资源,因此,程序可能会使用比实际需要更多的内存,或者最...

2019-08-30 10:45:08 1069

转载 go闭包函数参数的作用

转载自cbsfly_的博客今天写代码的时候用到了协程go func,发现func函数块内部的代码也能使用外部的局部变量,当时我就加上了打印发现闭包内部的变量值和外部的局部变量是一样的,就觉得很费解匿名函数的传参是什么用的?然后我就做了个小实验,运行如下代码func main() { i := 1 go func() { time.Sleep(100*tim...

2019-08-30 09:35:28 793

转载 go runtime.Gosched()函数解析

runtime.Gosched()Go语言runtime.Gosched()函数的官方文档如下:func Gosched func Gosched()Gosched yields the processor, allowing other goroutines to run. It does not suspend the current goroutine, so executi...

2019-08-30 09:23:20 7279 4

转载 Slf4j MDC使用与实现

前言如今,在 Java 开发中,日志的打印输出是必不可少的,Slf4j + LogBack 的组合是最通用的方式。有了日志之后,我们就可以追踪各种线上问题。但是,在分布式系统中,各种无关日志穿行其中,导致我们可能无法直接定位整个操作流程。因此,我们可能需要对一个用户的操作流程进行归类标记,比如使用线程+时间戳,或者用户身份标识等;如此,我们可以从大量日志信息中grep出某个用户的操作流程,或者...

2019-08-29 17:23:08 3999

转载 go time包定时器和断续器

定时器在time包中有两个函数可以帮助我们初始化time.Timertime.Newtimer函数初始化一个到期时间据此时的间隔为3小时30分的定时器t := time.Newtimer(3*time.Hour + 30*time.Minute)注意,这里的变量t是*time.NewTimer类型的,这个指针类型的方法集合包含两个方法Rest用于重置定时器该方法返回一个bool...

2019-08-29 09:19:48 225

转载 import 下划线作用

import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。示例目...

2019-08-28 20:56:00 816

转载 SSL证书签署流程

转载自灏玮的博客用openssl生成nginx.key1.key的生成openssl genrsa -des3 -out server.key 2048这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:openssl rsa -in server.k...

2019-08-28 15:34:20 390

转载 go Tag详解

转载自OhBonsai的博客我们可以通过Tag来增强结构体的定义,Tag会带上一些meta信息,在本文中我们将通过几个例子来深入了解Tag的用法。结构Struct是由一组field组成,每个field包括了名字(可选)和字段类型package mainimport "fmt"type T1 struct { f1 string}type T2 struct { T1...

2019-08-27 11:51:10 5883

转载 go 函数类型(function types)

转载自咕咕鷄的博客从golang的官方文档得知function types的解释是这样的。A function type denotes the set of all functions with the same parameter and result types.先找个例子来看一下:package mainimport "fmt"// Greeting function ...

2019-08-27 09:03:05 1084 1

原创 grpc命令行工具grpcurl使用

安装go get github.com/fullstorydev/grpcurlgo install github.com/fullstorydev/grpcurl/cmd/grpcurl注册reflection服务grpcurl对于其他grpc服务的感知皆来自reflection服务,所以在注册自己的服务之前需要先注册reflection服务,否则会提示$ grpcurl -pla...

2019-08-25 16:46:59 17973

原创 go语言 grpc入门

what grpcgRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load b...

2019-08-25 15:25:25 795

转载 go unsafe包使用

转载自stefno的博客什么是 unsafe前面所说的指针是类型安全的,但它有很多限制。Go 还有非类型安全的指针,这就是 unsafe 包提供的 unsafe.Pointer。在某些情况下,它会使代码更高效,当然,也更危险。unsafe 包用于 Go 编译器,在编译阶段使用。从名字就可以看出来,它是不安全的,官方并不建议使用。我在用 unsafe 包的时候会有一种不舒服的感觉,可能这也是语...

2019-08-22 17:17:46 149

原创 go select语句

简介go语言的select语句和其它语言有所不同select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。注意select没有case运行的情况下是会阻塞的,如果想要...

2019-08-13 11:27:45 222

转载 go Context深入理解

转载自飞雪无情的博客Context背景 和 适用场景golang在1.6.2的时候还没有自己的context,在1.7的版本中就把golang.org/x/net/context包被加入到了官方的库中。golang 的 Context包,是专门用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。比如有一个网络请...

2019-08-13 11:15:20 281

原创 如何使用bit位更高效的声明协议状态

前言众所周知一个byte由8位bit组成,当我们表示一个状态时没有必要使用整个字节而是转为使用一个字节的一位或连续几位,这样做可以有效的减少协议头长度,提高传输效率。而如何灵活的使用bit表示状态,则需要对位操作比较熟悉。下面通过go语言rpcx协议的设计为示例进行介绍。rpcx使用的字节序是大端序(也是几乎所有网络协议的选择),如果对字节序不够了解的读者可以参考我的这篇博客rpcx协议r...

2019-08-12 20:15:39 648

原创 字节序与go binary库

二进制协议基于文本类型的协议(比如 JSON)和二进制协议都是字节通信,他们不同点在于他们使用哪种类型的字节和如何组织这些字节。文本协议只适用于 ASCII 或 Unicode 编码可打印的字符通信。例如 “26” 使用 “2” 和 “6” 的 utf 编码的字符串表示,这种方式方便我们读,但对于计算机效率较低。在二进制协议中,同样数字 “26” 可使用一个字节 0x1A 十六进制表示,减少...

2019-08-12 16:03:40 2265

转载 Go 反射

转载自赵帅虎的博客飞雪无情的博客简介Reflection(反射)在计算机中表示 程序能够检查自身结构的能力,尤其是类型。它是元编程的一种形式,也是最容易让人迷惑的一部分。本文中,我们将解释Go语言中反射的运作机制。每个编程语言的反射模型不大相同,很多语言索性就不支持反射(C、C++)。由于本文是介绍Go语言的,所以当我们谈到“反射”时,默认为是Go语言中的反射。阅读建议本文中,我们...

2019-08-12 10:54:16 864

转载 nginx try_files指令

转载自博客try_files指令说明try_files指令语法:try_files file … uri 或 try_files file … = code默认值:无作用域:server location其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。需要注意的是,只有最后...

2019-08-08 17:54:57 426

转载 java并发工具类——Phaser

转载自sithcait的博客在JAVA 1.7引入了一个新的并发API:Phaser,一个可重用的同步barrier。在此前,JAVA已经有CyclicBarrier、CountDownLatch这两种同步barrier,但是Phaser更加灵活,而且侧重于“重用”。一、简述1、注册机制与其他barrier不同的是,Phaser中的“注册的同步者(parties)”会随时间而变化,Phas...

2019-08-08 09:02:29 607

转载 深入浅出java semphore

转载自占小狼的博客前言JDK的并发包中提供了几个非常有用的工具类,这些工具类给我们在业务开发过程中提供了一种并发流程控制的手段,本文会基于实际应用场景介绍如何使用Semaphore,以及内部实现机制。Semaphore是什么Semaphore也叫信号量,在JDK1.5被引入,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。Semaphore内部维护了一组虚...

2019-08-07 20:19:30 205

转载 go grountine通讯管道Channel

转载自鸟窝的博客什么是channelChannel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。它的操作符是箭头 <- 。(箭头的指向就是数据的流向)ch <- v // 发送值v到Channel ch中v := <-ch // 从Channel ch中接收数据,并将数据赋值给v...

2019-08-07 17:02:34 462

转载 go goroutine线程模型

转载自guyan0319的博客Go语言最大的特色就是从语言层面支持并发(Goroutine),Goroutine是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。为了更好理解Goroutine,现讲一下线程和协程的概念线程(Thread):有时被称为轻量级进程(Lightweight Process,LWP),...

2019-08-07 16:27:30 279

转载 go文件操作大全

转载自鸟窝的博客[译]Go文件操作大全参考Go官方库的文件操作分散在多个包中,比如os、ioutil包,我本来想写一篇总结性的Go文件操作的文章,却发现已经有人2015年已经写了一篇这样的文章,写的非常好,所以我翻译成了中文,强烈推荐你阅读一下。原文: Working with Files in Go, 作者: NanoDano介绍万物皆文件UNIX 的一个基础设计就是"万物皆文件"...

2019-08-07 14:59:13 588

转载 redis执行lua脚本

转载自琦彦的博客EVAL 脚本 numkeys 键[键…] arg [arg …]自Redis2.6.0版本起可用。时间复杂度:取决于执行的脚本。EVAL介绍EVAL和EVALSHA用于从Redis2.6.0版本,开始使用内置在Redis中的Lua解释器来评估脚本。EVAL的第一个参数是一个Lua 5.1脚本。脚本不需要定义一个Lua函数(不应该)。这只是一个将在Redis服务器上...

2019-08-07 11:00:10 222

原创 简单理解一个dubbo服务的完整调用过程

转载自dubbo官网感受学习业内优秀开源分布式框架的底层rpc实现

2019-08-02 10:43:33 4420

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除