golang的zap的SugaredLogger

2020-12-05
阅读 7 分钟
2.6k
SugaredLogger提供了debug、info、warn、error、panic、dpanic、fatal这几种方法(使用fmt.Sprint的默认格式),另外还有带f的支持format,带w的方法则支持with键值对

聊聊golang的zap的NewProduction

2020-12-04
阅读 4 分钟
4.1k
序文主要研究一下uber的zap的NewProduction。golang的log有zap、logrus等,不过logrus现在已经处于维护状态。实例SugaredLogger {代码...} SugaredLogger比普通的结构化logging包快4-10倍输出 {代码...} Logger {代码...} 当对性能和类型安全都要求比较高的场景就使用Logger,它比SugaredLogger速度更快,但是它只支持结...

聊聊golang的log

2020-12-03
阅读 5 分钟
2.5k
序本文主要研究一下golang的loglogflags {代码...} 这几个flags可以用来设置log的patternlogger {代码...} log包默认提供的Print、Fatal、Panic方法使用的是std标准输出流,它也提供了New方法可以自定义输出Fatal相关方法会执行os.Exit(1),Panic相关方法会执行panic,而panic执行的是os.Exit(1)f结尾的方法执行的是fmt....

聊聊golang的panic与recover

2020-12-02
阅读 3 分钟
5k
序本文主要研究一下golang的panic与recoverpanic与recoverrecover在如下三种情况下返回nilpanic参数为nilgoroutine没有发生panicrecover不是在defer func中调用实例实例1 {代码...} 这里fc为nil,因而产生runtime panic,然后被defer的recover捕获实例2 {代码...} 这里defer2捕获了panic,defer1就捕获不到panic了实例3 ...

聊聊golang的defer

2020-12-01
阅读 2 分钟
2k
序本文主要研究一下golang的deferdeferreturn先赋值(对于命名返回值),然后执行defer,最后函数返回defer函数调用的执行顺序与它们分别所属的defer语句的执行顺序相反defer后面的表达式可以是func或者是method的调用,如果defer的函数为nil,则会panic实例实例1 {代码...} 这里return先给result赋值为6,之后执行defer,...

聊聊golang的error增强

2020-11-30
阅读 2 分钟
2.8k
序本文主要研究一下golang的error增强Errors in Go 1.13golang的1.13版本对error进行了增强,主要是引入了Unwrap方法增加Is和As方法fmt.Errorf支持%w来包装error实例 {代码...} 输出 {代码...} 小结wrap对error进行了包装,不过没有包含堆栈Is会挨个unwrap去对error进行判断errors.Is function behaves like a compariso...

聊聊golang的error包装

2020-11-29
阅读 2 分钟
2.2k
序本文主要研究一下golang的error包装error {代码...} error接口定义了Error方法,返回stringruntime.Error {代码...} 对于panic,产生的则是runtime.Error,该接口内嵌了error接口wrap {代码...} 使用内置的errors,则没办法打印堆栈;使用pkg/errors可以携带堆栈输出 {代码...} 小结error接口定义了Error方法,返回str...

聊聊golang的类型断言

2020-11-28
阅读 2 分钟
8.8k
序本文主要研究一下golang的类型断言类型断言 {代码...} 断言x不为nil且x为T类型如果T不是接口类型,则该断言x为T类型如果T类接口类型,则该断言x实现了T接口实例1 {代码...} 直接赋值的方式,如果断言为true则返回该类型的值,如果断言为false则产生runtime panic;j这里赋值直接panic输出 {代码...} 不过一般为了避免p...

聊聊golang的包init

2020-11-27
阅读 2 分钟
1.7k
序本文主要研究一下golang中的包init包init实例pkg1 {代码...} pkg2 {代码...} pkg3 {代码...} main {代码...} 输出 {代码...} 小结每个package可以定义多个init函数,甚至在同一个go文件也可以有多个init函数。如果一个包没有import其他包,则多个init按出现顺序初始化同一个包多个文件都有init函数则按文件名顺序初始...

聊聊golang的包init

2020-11-27
阅读 2 分钟
2k
序本文主要研究一下golang中的包init包init实例pkg1 {代码...} pkg2 {代码...} pkg3 {代码...} main {代码...} 输出 {代码...} 小结每个package可以定义多个init函数,甚至在同一个go文件也可以有多个init函数。如果一个包没有import其他包,则多个init按出现顺序初始化同一个包多个文件都有init函数则按文件名顺序初始...

聊聊golang的零值

2020-11-26
阅读 2 分钟
2.2k
序本文主要研究一下golang中的零值zero value初始化时没有赋值的变量的默认值如下:false for booleans0 for numeric types"" for stringsnil for pointers, functions, interfaces, slices, channels, and maps访问nil实例 {代码...} 小结对于toJson来讲,大部分为null,func类型的会报错对于map,访问不存在的key则返...

leetcode之买卖股票的最佳时机

2020-11-25
阅读 1 分钟
2.4k
序本文主要研究一下leetcode之买卖股票的最佳时机题目 {代码...} 题解 {代码...} 小结这里用第一天的价格作为最小值,以0作为最大值,然后从第二天开始遍历,计算每天最大获利及股票的最小值,最后得出最大收益。doc买卖股票的最佳时机

leetcode之第三大的数

2020-11-24
阅读 2 分钟
1.8k
序本文主要研究一下leetcode之第三大的数题目 {代码...} 题解 {代码...} 小结这里依次维护最大,第二大,第三大的数字,遍历数组判断元素值是否大于最大值或者第二大值或者第三大的值,然后对应更新相应的值。doc第三大的数

leetcode之重新排列数组

2020-11-23
阅读 1 分钟
1.4k
序本文主要研究一下leetcode之重新排列数组题目 {代码...} 题解 {代码...} 小结这里使用双指针,两个指针都从0开始,一个每次加2,一个每次加1,每次遍历给i及i+1赋值。doc重新排列数组

leetcode之丢失的数字

2020-11-22
阅读 1 分钟
1.9k
序本文主要记录一下leetcode之丢失的数字题目 {代码...} 题解 {代码...} 小结这里利用nums中的所有数字都独一无二这个条件,使用异或运算来对数组index及值进行运算,遍历完得出的结果就是丢失的数字。doc丢失的数字

leetcode之多数元素

2020-11-21
阅读 1 分钟
1.2k
这里采用投票法来解题,遍历数组,若vote小于等于0则给当前计数对象重新赋值,之后判断当前值是否为计数对象,是的话投票数加1,否则减1,遍历完即得到结果。

leetcode之复写零

2020-11-20
阅读 1 分钟
1.3k
这里遍历数组,计算值为0的个数count,然后从后遍历数据,遇到0就递减该值,然后判断i + count是否超出数组长度,没有的话则将i的值设置到i + count,紧接着再当前位置值为0且i + count + 1不超出数组长度的时候将i + count + 1的值设置为0。

leetcode之移动零

2020-11-19
阅读 1 分钟
1.4k
序本文主要记录一下leetcode之移动零题目 {代码...} 题解 {代码...} 小结这里遍历数组,维护一个下标,当值不为0时则进行移动同时递增下标,遍历完一次之后,在从该下标起往后遍历,赋值为0。doc移动零

leetcode之最小绝对差

2020-11-18
阅读 1 分钟
2k
这里先对数组进行排序,然后遍历数据判断前后差的绝对值,看是否比存储的绝对差小,若小则情况结果集,更新最小绝对差;若等于则追加该记录到结果集。

leetcode之判断能否形成等差数列

2020-11-17
阅读 1 分钟
2k
序本文主要记录一下leetcode之判断能否形成等差数列题目 {代码...} 题解 {代码...} 小结这里先对数组进行排序,然后遍历数据判断前后差是否相等,不等则立刻返回false,遍历完返回true。doc判断能否形成等差数列

leetcode之移除元素

2020-11-16
阅读 1 分钟
1.1k
序本文主要记录一下leetcode之移除元素题目 {代码...} 题解 {代码...} 小结这里遍历数组,然后维护一个下标,从0开始,每遇到不为val的时候就给赋值给该下标,然后递增下标,最后返回该下标。doc移除元素

leetcode之缀点成线

2020-11-15
阅读 1 分钟
1.6k
序本文主要记录一下leetcode之缀点成线题目 {代码...} 题解 {代码...} 小结这里利用斜率公式来判断两个坐标是否在同一直线上。doc缀点成线

leetcode之斐波那契数

2020-11-14
阅读 1 分钟
1.2k
序本文主要记录一下leetcode之斐波那契数题目 {代码...} 题解 {代码...} 小结这里使用公式方法来计算,F(0) = 0, F(1) = 1,在N>1时,F(N) = F(N - 1) + F(N - 2)。doc斐波那契数

leetcode之第k个缺失的正整数

2020-11-13
阅读 1 分钟
1.4k
这里根据严格升序排序的条件来解题,遍历数组,对于数组的值是否大于等于k+i+1(由于i从0开始,这里+1变为第N个的语义),是的话直接返回k+i,遍历到最后没有提前返回的话,返回k+len。

leetcode之合并两个有序数组

2020-11-12
阅读 1 分钟
1.5k
这里从后往前遍历,每次比较两个数组的值,取大的覆盖到nums1数组,同时移动对应的index;最后在判断下nums2数组有没有比较完,没有的话将nums2剩余的元素复制到nums1。

leetcode之有序数组的平方

2020-11-11
阅读 1 分钟
1.8k
序本文主要记录一下leetcode之有序数组的平方题目 {代码...} 题解 {代码...} 小结这里使用双指针,每次对比前后平方之后的数据,大的则将新增赋值给结果集,然后移动对应的指针及结果集的游标。doc有序数组的平方

leetcode之山羊拉丁文

2020-11-10
阅读 2 分钟
1.2k
这里先将字符串按空格分割为单词,然后遍历每个单词,判断首字母是否为元音,是的话在后面添加ma,不是的话将首字母移到后面再拼接ma,最后再根据单词在句子中的index拼接指定个数的a。

leetcode之最后一个单词的长度

2020-11-09
阅读 1 分钟
1.4k
序本文主要记录一下leetcode之最后一个单词的长度题目 {代码...} 题解 {代码...} 小结这里从后往前遍历字符串数组,遇到非空格的累加长度,遇到空格则判断结果是否为0,不为0则返回结果。doc最后一个单词的长度

leetcode之反转字符串中的元音字母

2020-11-08
阅读 2 分钟
1.5k
这里先使用HashSet存放大小写的元音字母,之后使用头尾指针同时对字符串数组进行遍历,当i指向的字符与j指向的字符都是元音时,进行交换同时更新指针,不是元音字符时仅仅更新指针。

leetcode之判断路径是否相交

2020-11-07
阅读 1 分钟
1.4k
这里维护走过的点,然后遍历path的字符,对x,y坐标进行相应移动,每次移动之后都判断下该点是否走过,走过则返回true,没有则将改点记录到走过的的点中,遍历完都没有符合条件就返回false。