Golang动态规划
1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。 若这两个字符串没有公共子序列,则返回 0。 示例 1: 输入:text1 = "abcd...阅读全文
2020-05-03
It's ten o'clock PM, I sleep not very well. because last night, i wake up again. it's about three o'clock. some mosquito bite me. that is hard to suffer. so i get up, spraying insecticides, and try to sleep again. i have no insecticides , i need buy ...阅读全文
Golang Context 原理与实战
本文让我们一起来学习 golang Context 的使用和标准库中的Context的实现。 golang context 包 一开始只是 Google 内部使用的一个 Golang 包,在 Golang 1.7的版本中正式被引入标准库。下面开始学习。 简单介绍 在学习 context 包之前,先看几种日常开发中经常会碰到的业务场景: 业务需要对访问的数据库,RPC ,或API接口,为了防止这些依赖导致我们的服务超时,需要针对性的做超时控制。 为了详细了解服务性能,记录详细的调用链Log。 上面...阅读全文
用golang 写了一个问答系统
域名是 studyseo问答 个位大佬觉得应该怎么做seo优化,及页面得调整 image widget阅读全文
Go语言(十七) 配置文件库项目
配置文件库项目 简介 用途: 解析ini类型的配置文件 知识点: 主要基于反射 ini配置文件的解析,配置文件如下 ;config file [server] host = www.baidu.com port = 8080 [cartdb] user = root.xxx password = root host = localhost port = 3306 database = cartdb rate = 1.2 需求分析 拆离出动态配置 映射数据到项目数据结构中-包含配置文件读取(UnM...阅读全文
Golang学习——如何判断Golang接口是否实现?
前言 在看一个底层库的的时候,看到了一个比较奇怪的写法,于是乎有了本文。 主要探讨两个问题: 1.利用编译来判断Golang接口是否实现 2.延伸出的make和new的区别 正文 1.利用new()来判断Golang接口是否实现 看了一个底层通用链接池的库,有这么一行代码: var _ Pooler = new(WeightedRoundRobin) 复制代码 需要解释的是:Pooler是一个接口类型。 type Pooler interface { // ... } 复制代码 刚开始看是疑惑的...阅读全文
Go语言之数组与切片
数组数组简介数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度。注意:和C中的数组相比,又是有一些不同的:Go中的数组是值类型,换句话说,如果你将一个数组赋值给另外一个数组,那么,实际上就是将整个数组拷贝一份如果Go中的数组作为函数的参数,那么实际传递的参数是一份数组的拷贝,...阅读全文
知识更新越来越快,但是学习起来越来越困
我是一个着迷于产品和运营的技术人,乐于跨界的终身学习者。欢迎关注我的个人公众号「跨界架构师」 每周五11:45 按时送达~ 我的第「140」篇原创敬上 大家好,我是Z哥,先祝大家节日快乐。不知道这个假期你打算出门吗?Z哥我是打算不出远门了,怕死,哈哈。索性好好宅家里学习,强化一下自己。相信大家也感受到了,随着互联网加速了信息的流动速度,知识的更新迭代也在加速。可能原本靠着一门手艺可以过一辈子,现在可能每5~10年就需要一次大的迭代才能跟上社会的发展步伐,不被out。并且,随着最近几年知识付费的...阅读全文
golang的指针类型,unsafe.Pointer类型和uintptr类型的区别
一,区别 1,指针类型 golang支持指针类型,指针类型的变量存的是一个内存地址,这个地址指向的内存空间存的才是一个具体的值。 比如int,int32,A(自定义结构体类型),string等,都是指针类型。 golang的指针类型和c/c++的指针类型基本一样,但是多了几个限制: 1,int,int32等不同的指针类型不能相互转化. 2,指针类型不支持c/c++这样的指针运算。 2,unsafe.Pointer类型 这个类型比较重要,它是实现定位和读写的内存的基础。go runtime大量使用...阅读全文
Golang 中状态和结果总结
操作 通道状态 结果 Read nil 阻塞 打开且非空 读取到值 打开且空 阻塞 已关闭(Closed) <初始空值> 只能写入 编译错误 Write nil 阻塞 打开且满 阻塞 打开且非满 写入成功 已关闭(Closed) panic 只能接收 编译错误 close nil panic 打开且非空 关闭 channel,读取成功,直到通道耗尽,然后读取到默认空值 打开但空 关闭 channel, 读取到默认空值 已关闭(Closed) panic 只能接收 编译错误 close nil p...阅读全文
Go reflect 反射实例解析
Go reflect 反射实例解析 ——教坏小朋友系列 0 FBI WARNING 对于本文内容,看懂即可,完全不要求学会。 1 现象分析 网上关于golang反射的文章多如牛毛,可实际用反射的人,寥寥可数。 我分析大家不用反射的原因,大概有两点: 不会 笨重 1.1 不会 网上关于反射的文章很多,可多数都是在分析原理,并没有给出实例。而反射恰好处在一个很尴尬的点上:懂了原理不等于会用。 于是乎,大多数人高喊口号:“官方不推荐用这个库!”是的,官方不推荐用的库有两个:reflect和unsafe...阅读全文
windows 下载 grpc
最近在windows 下安装grpc,趁着现在放假整体记录一下下载过程。 一.安装protoc程序 protoc下载地址,打开链接,下载对应版本(我下载的是protoc-3.11.4-win64.zip),解压后将protoc.exe拷贝至放入到GOPATH/bin目录下。 二.安装grpc 由于google.golang.org/grpc 已经迁移到https://github.com/grpc/grpc-go,所以我们需要另辟蹊径 在GOPATH/src 目录下创建google.golang...阅读全文
“���”引发的线上事故
最近遇到了一起依赖升级 + 异常数据引发的线上事故,教训惨痛,本文对此进行回故和总结。 背景起因是我们使用的服务框架版本比较老,GC 次数的 metrics 打点一直为 0,咨询了相关同学后,决定升级框架。升级的过程中,出现了 use of internal package xxx not allowed 的报错,又咨询了一下相关同学后,尝试使用 go mod 解决。 从 go vendor 到 go mod 的升级的过程也不太顺利,这里按下不表,最终是升级成功了。一同升级的还有 Go 版本,从...阅读全文
深度解密Go语言之sync.pool
最近在工作中碰到了 GC 的问题:项目中大量重复地创建许多对象,造成 GC 的工作量巨大,CPU 频繁掉底。准备使用 sync.Pool 来缓存对象,减轻 GC 的消耗。为了用起来更顺畅,我特地研究了一番,形成此文。本文从使用到源码解析,循序渐进,一一道来。 本文基于 Go 1.14 是什么sync.Pool 是 sync 包下的一个组件,可以作为保存临时取还对象的一个“池子”。个人觉得它的名字有一定的误导性,因为 Pool 里装的对象可以被无通知地被回收,可能 sync.Cache 是一个更合...阅读全文
defer 链表如何被遍历执行
去年开始写文章的第一篇就是关于 defer,名字比较文艺:《Golang 之轻松化解 defer 的温柔陷阱》,还被吐槽了。因为这篇文章,到《Go 夜读》讲了一期。不过当时纯粹是应用层面的,也还没有跳进 Go 源码这个大坑,文章看着比较清新,也没有大段的源码解析。 自从听了曹大在《Go 夜读》分享的 Go 汇编,以及研读了阿波张的 Go 调度器源码分析的文章后,各种源码、汇编满天飞…… 上次欧神写了一篇《Go GC 20 问》,全文也没有一行源码,整体读下来很畅快。今天这篇也来尝试一下这种写法,...阅读全文