自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yuchenfw的博客

坚持学习…………

  • 博客(75)
  • 资源 (1)
  • 收藏
  • 关注

原创 Go json tag的大小写匹配问题

你知道json tag的具体匹配规则吗

2022-08-29 08:00:00 935 1

原创 Go test之理

Go test背后执行的原理

2022-06-27 08:00:00 585

原创 Go Signal信号处理机制

深入了解Go Signal信号处理机制

2022-03-07 08:00:00 1123

原创 gomod的版本选择策略

gomod的最小版本选择策略

2022-01-03 21:14:06 3026

原创 Gorm TableName相关

前言使用Gorm构造模型时,通过实现Tabler interface的TableName() func可以指定table的名称。那么TableName()何时调用?操作时每次都会调用TableName()吗?TableName()支持动态表名吗?怎样实现动态表名?TableNameGorm增删改查等操作最终交由Excute执行。以Find为例:// Find find records that match given conditionsfunc (db *DB) Find(dest

2021-08-15 23:05:03 8004 1

原创 go select编译期的优化处理逻辑

你知道select case数量不同时的底层处理也不一样吗

2021-06-27 22:28:50 297 1

原创 Go channel——block为false时chansend/chanrecv的处理机制

前言本篇聚集select 2个case(1个send/recv case、1个default case)场景时send、recv的具体处理。更多内容分享,欢迎关注公众号:Go开发笔记chansendselect {case c <- v: ... foodefault: ... bar}其底层对应func为selectnbsend。selectnbsend// compiler implements//// select {// case c <- v://

2021-05-23 13:53:30 353

原创 Go channel——block为true时chansend/chanrecv的处理机制

前言上篇文章提到channel send/recv使用形式及场景,其中 select单个send/recv case与send/recv单独使用时一致,因此本篇先从这些简单场景出发关注send、recv的具体处理。更多内容分享,欢迎关注公众号:Go开发笔记send单独使用c <- x select单个send caseselect { case c <- x :}以上两种场景send处理方式一致,底层对应func为chansend1。chansend1具体实现

2021-05-16 20:39:17 594

原创 Go channel——send/recv使用形式及场景

搭配select的处理逻辑你清楚吗?

2021-05-09 23:13:19 465

原创 Go channel——基本机制及结构

前言GO官方博客的Share Memory By Communicating中提到:Go’s concurrency primitives - goroutines and channels - provide an elegant and distinct means of structuring concurrent software. (These concepts have an interesting history that begins with C. A. R. Hoare’s Com

2021-04-26 21:44:23 395 1

原创 iota的使用

iotaiota在builtin中说明如下:// iota is a predeclared identifier representing the untyped integer ordinal// number of the current const specification in a (usually parenthesized)// const declaration. It is zero-indexed.const iota = 0 // Untyped int.翻译过来就是:

2021-03-14 22:26:26 333 1

原创 strconv.FormatFloat的精度处理问题

strconv.FormatFloat真的是四舍五入吗?

2021-01-10 17:39:05 13059 1

原创 goquery的初步使用

goquery的初步使用

2020-12-10 10:41:18 2834

原创 为何sql.Rows使用结束后一定要Close

前言常见的sql.Rows使用方式如下:var db *sql.DB....rows, err :=db.QueryContext(ctx,selectSql,args...)...defer rows.Close()for rows.Next() { if err = rows.Scan(&dst); err != nil { return }}我们知道sql.Rows使用结束后一定要关闭。但为何要关闭?不关闭又会发生什么呢?源码会告诉我们答案。RowsRow

2020-11-09 22:48:05 2925

原创 了解Go编译处理(六)—— 表达式解析

Go表达式的解析

2020-11-01 22:05:18 936

原创 sqlx的使用及注意点

前言sqlx是基于Go内置database/sql包上的扩展,主要是简化了sql的使用过程。sqlx的sql.DB, sql.TX, sql.Stmt等保持底层实现不变,因此可以很方便地从database/sql切换到sqlx。sqlx另外还提供了一些功能:可以将Rows内容解析至struct(支持内嵌)、map、slice命名参数支持Get/Select可以快速将查询结果转为为struct/slice使用1. Open/ConnectOpen可能仅校验参数,而没有与db间创建连接,要确认

2020-10-25 20:56:25 6709 1

原创 一个json Unmarshal to slice的问题及延伸

一个json数组解析至slice的问题

2020-10-25 20:52:02 2546 1

原创 详解map(一)—— map的常用方法

前言map是语言中常用的一个数据结构,其在不同语言中有着不同的实现的,现在我们看下在go中的底层实现。更多内容分享,欢迎关注公众号:Go开发笔记map源码map的底层实现的源码位于runtime/map.go中,其相关方法的调用在编译时确认。map说明简单来说,map就是一个哈希表。数据被排列成一个bucket数组。每个bucket最多包含8个key/elem对。哈希的低位用于选择一个bucket。每个bucket包含每个hash的一些高位,以区分单个bucket中的条目。map的数据存储结构

2020-10-19 23:28:06 6873

原创 sync.Map详解

从源码了解sync.Map

2020-10-11 15:19:32 1917

原创 了解Go编译处理(五)—— 顶层声明解析

import、const、type、var的解析过程

2020-08-13 22:37:40 536

原创 了解Go编译处理(四)—— go文件的解析

go编译时.go文件的解析过程

2020-08-09 10:48:57 1503

原创 了解Go编译处理(三)—— 初识go compile

.go文件的编译过程

2020-08-02 10:30:47 1999

原创 go-join——按规则快速拼接字符串的工具

go-join是一个按规则快速拼接字符串的工具,适用于map、struct、url encoded url string等类型。

2020-07-29 22:49:12 1880

原创 Go类型零值及初始化

本文主要总结了常见的基础类型及组合的零值及使用过程中相关初始化的问题。

2020-07-19 15:23:43 2623

原创 了解Go编译处理(二)—— go build

从源码角度看go build的处理过程

2020-07-05 22:48:12 5713

原创 深入了解gorm Scan的使用

前言在使用gorm查询数据保存时,可以通过Scan快速方便地将数据存储到指定数据类型中,减少数据的手动转存及赋值过程。那么,你知道:Scan支持哪些数据类型吗?Scan如何确定接收类型的数据与查询数据之间的匹配关系的呢?我们带着这两个问题去看下相关的源码。Scan使用示例直接将查询到的数据存储到结果中。type Result struct { Name string Age int}var result Resultdb.Table("users").Selec

2020-07-02 23:06:10 25108 17

原创 了解Go编译处理(一)—— go tool

从go工具的源码了解go命令的处理过程。

2020-06-27 15:47:50 2301

原创 Go字符串拼接方式深入比较

从源码的角度分析Go中"+"、"fmt.Sprintf"、strings.Join三种拼接字符串的优缺点及性能问题,帮助你更好地了解、选择、使用字符串拼接。

2020-06-07 15:42:20 2127

原创 ​深入了解Go Slice(三)—— append的处理过程

从源码的角度看slice append数据的处理过程。

2020-06-01 22:55:08 2244

原创 深入了解Go Slice(二)—— 切片的详细处理过程

从源码的角度看Slice切片的实现过程,理解Slice后len、cap及数据的变化。

2020-05-25 22:24:24 755

原创 深入了解Go Slice(一)—— make的详细处理过程

关于Slice的使用有很多文章已经介绍了,本系列文章无意再重复介绍使用过程,主要专注于了解Slice后的处理逻辑,从源码的角度加深对使用的了解,解决一些常见的使用错误点。

2020-05-24 11:21:09 6167

原创 Base64 Encoding详解

本文主要以Go base64 package为例,详细介绍了Base64中4种Encoding的异同点及使用环境,同时对base64编/解码的详细实现过程进行了较深入的探讨。

2020-05-15 15:27:01 5992

原创 golang struct json tag的使用及深入理解

struct json tag主要在struct与json数据转换的过程(Marshal/Unmarshal)中使用。本文主要介绍struct json tag的使用及探寻源码中的设计处理过程。

2020-05-09 10:54:09 22096

原创 golang RSA秘钥的解析方式总结

文章目录前言解析方式1. 字符串格式(1)公钥(2)私钥2. 证书文件格式(1).pem、.cert、.cer、.crt(2).pkcs12、.pfx、.p123. N,E参数总结前言加密、解密、签名、验签等操作总少不了对秘钥的处理,秘钥的存储格式决定了解析方式。在golang中关于RSA加密、解密、签名、验签的总结一文中提到的仅是针对的字符串类型的秘钥处理,本文中将对常见的几种RSA秘钥存...

2020-04-26 22:40:15 7164

原创 优雅重启Go服务——gracehttp详解

从源码的角度详细说明gracehttp实现优雅重启的原理及过程。

2020-04-16 23:00:06 3220

原创 influxDB 2.0安装及使用说明

influxdb2.0使用指南

2020-03-29 11:57:33 41647 29

原创 zap细节拾遗——日志信息内容的具体顺序问题

前言我们在之前的篇章中主要按照几个核心使用点进行源码的分析,有些细节未能覆盖到,因此特意对使用时可能需要注意的细节,特意说明下。1.输出的日志信息内容的具体顺序问题先说结论,先后顺序为:Level-Time-LoggerName-Caller-Message-已排序的InitialFields-Stack-Fields注意:以上部分信息可缺省。(1)config build时对Ini...

2020-03-03 17:47:37 1352

原创 zap——SugaredLogger

SugaredLogger// A SugaredLogger wraps the base Logger functionality in a slower, but less// verbose, API. Any Logger can be converted to a SugaredLogger with its Sugar// method.//// Unlike the Lo...

2020-02-26 11:30:21 2863

原创 zap——Logger的设计思路

前言之前的一系列文章中主要追踪的是代码的执行逻辑和处理思路,进而熟悉代码,加深理解及使用。但是zap为什么快?它是怎么设计的?在熟悉代码后,再回头看看zap的设计思路,看看能否解答之前的一些疑惑。设计思路zap README的Performance一节中提到:For applications that log in the hot path, reflection-based serial...

2020-02-07 14:40:32 1606

原创 zap——logger的创建及logger的使用过程

文章目录根据Conifg创建LoggerbuildEncoderopenSinksCombineWriteSyncerslog的使用check levelWirteEncodeEntryc.out.WriteSync总结根据Conifg创建Logger// Build constructs a logger from the Config and Options.func (cfg Conf...

2020-01-18 15:23:19 2853

模仿今日头条的简单实现源码

模仿今日头条的简单实现,主要实现主页及新闻页等页面的实现。 注意:volley需要自己导入哦。

2017-10-13

空空如也

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

TA关注的人

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