自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

咖啡色的羊驼

只是当作自己的备忘录

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

原创 一看就懂系列之Golang的pprof

前言这是一篇给网友的文章,正好最近在研究分析golang的性能,我觉得是时候来一个了断了。正文1.一句话简介Golang自带的一款开箱即用的性能监控和分析工具。(全篇看的过程中没必要特意记忆、看完自然让你有不一样的感觉)2.使用姿势?2.1 runtime/pprof手动调用runtime.StartCPUProfile/runtime.StopCPUProfile等API来进行...

2020-03-02 15:26:30 2963

原创 踩坑系列之go的unexpected directory layout

前言在本地起了一个test项目,用于日常的小测试,然后写了一个单测的代码,发现报错了。网上找了一下答案,发现也有小伙伴遇到。说实话没看懂,写的太不直接了。所以用最短的话,记录一下。正文在执行go test命令的时候,报错内容:unexpected directory layout: import path: _/Users/didi/go/src/test/gotest/lib r...

2020-02-29 16:35:14 6095 11

原创 2020年的第一篇技术文章

前言说实话,没想到这个是我2020年第一篇技术文章。真正意义上不算技术文章。正文促使我想起csdn的的还是,今天看到的一个文章。讲的是:为什么MySQL的索引机制不借鉴Kafka索引机制?我回想了我知道的所有知识记忆点,甚至连前女友的裤子型号这个记忆点都翻出来了,勉强能答上一些。当看完文章后,说实话我觉得太长了,因为年纪大了记忆力不好。所以打算罗列几个点,当作记忆索引,以便日后回忆...

2020-01-12 19:39:02 585

原创 一看就懂系列之Golang的Map如何做到最省空间?

前言今天在看源码的时候,发现一个东西,“空间”和“时间”一直是对立的,那么在“空间换时间”的时候,通常使用的是map中的key来快速判断,很多时候其value是用不到的。那么问题来了,既然很多时候value用不到,那么怎么写才是最节省空间的?正文说实话,我没有直接想到这个问题的答案。不过我查到了。struct{} 的巧妙使用当声明为map[int]struct{},由于stru...

2019-12-01 17:17:59 1473 3

原创 踩坑系列之 mysql的effect rows

前言这周的时候,和老铁就GoLang中mysql的“effect rows”这个问题讨论起来。关键点在于:在进行update操作的时候,如果不进行更新(也可以理解为当前数据库就是这样子了)或者没这条数据,effect rows都会为0。假设一个场景,需要区分这两种情况,就没法解决了。正文解决方案寻找过程1. 命令行验证通过命令行操作数据库,可以看到,mysql客户端是区分了match...

2019-11-10 21:49:43 2427 3

原创 由浅入深聊聊Golang的sync.Pool

前言今天在思考优化GC的套路,看到了sync.Pool,那就来总结下,希望可以有个了断。用最通俗的话,讲明白知识。以下知识点10s后即将到来。1.pool是什么?2.为什么需要sync.Pool?3.如何使用sync.Pool?4.走一波源码5.源码关键点解析6.用上池子效率怎么样?正文1.sync.Pool是什么?Golang在 1.3 版本的时候,在sync包中加入一个新...

2019-07-31 02:02:41 1768

原创 由浅入深聊聊Golang的sync.Map

前言今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记录一下吧。1.为什么需要sync.Map?2.sync.Map如何使用?3.理一理sync.Map源码实现?...

2019-07-21 01:22:34 15419 5

原创 如何处理Golang中int64类型变为科学计数法?

背景这周时候在处理订单消息传递的时候,发现定义的orderID大多数时候是正常的(例如:1152921570135310348)偶现科学计数法(例如:1.1529215701353103e+18)。传参的结构是这样的:map[string]interface{}赋值:data[“id”] = 1152921570135310348后面就开始调接口,记录日志等一系列操作。查了一会儿发现正常流...

2019-05-11 16:21:36 7387 5

原创 一看就懂系列之Golang的String

前言今天在写代码的时候,遍历Golang中的字符串时候,发现竟然和想象中不同,从而认真研究了一下,做个记录与string做一给了断,这是一篇实战贴。你将知道一下知识点:1.字符串的组成?2.如何遍历字符串?3.如何将字符串与整型互转?4.如何改变其中某个字符?5.如何截取字符串?6.如何计算长度?7.如何连接字符串?正文1.字符串的组成?Golang的字符串都是由单个字节连...

2019-02-24 16:36:58 784

原创 Golang优化之内存对齐

前文话说今天在用uintptr进行指针运算的时候,突然想起来有个内存对齐的东西,那么对这个uintptr计算是否会有影响?带着疑问,开始吧。你将获得以下知识点:1.什么是内存对齐?2.为什么需要内存对齐?3.如何进行内存对齐?4.golang的内存对齐如何体现?5.如何利用内存对齐来优化golang?正文1.什么是内存对齐?在想象中内存应该是一个一个独立的字节组成的。像这样:...

2018-12-18 03:57:12 3826 8

原创 如何判断Golang接口是否实现?

前言在看一个底层库的的时候,看到了一个比较奇怪的写法,于是乎有了本文。主要探讨两个问题:1.利用编译来判断Golang接口是否实现2.延伸出的make和new的区别正文1.利用编译来判断Golang接口是否实现看了一个底层通用链接池的库,有这么一行代码:var _ Pooler = new(WeightedRoundRobin)需要解释的是:Pooler是一个接口类型。typ...

2018-10-27 14:45:07 8918 1

原创 关于goroutine的一些小理解

前言今天看一个大神的代码,看到了runtime.Gosched(),瞬间把我看懵了。。后面梳理了下,其实这个竟然之前学习goroutine的时候没学到,所以顺便记录下,以便日后留恋。知识点理解这个goroutine必须要知道以下三大块东西。进程、线程、协程并发、并行Golang中的M、P、G我会用非常通熟易懂的方式来进行说明。(我也怕很烦的解释,不利于记忆啊!)进程、线程、...

2018-10-11 21:55:04 9422 1

原创 由浅入深聊聊Golang的context

前言正文

2018-10-07 01:49:13 24112 6

原创 由浅入深聊聊Golang的slice

前言今天本来想去外地玩耍,结果睡过头错过了动车,只好总结一下slice,希望能与slice之间做一个了断。文章由浅入深,遵从能用代码说话就不bb的原则。正文1.基本操作1.1 声明var stringSlice []stringstringSlice := []string{"咖啡色的羊驼"}var intSlice []int64intSlice := []int{18}...

2018-10-04 20:04:09 918 4

原创 由浅入深聊聊Golang的map

前言今日听了大佬们对于map的讲解,结合自己之前的积累,专门来由浅入深的总结一下,希望可以与map之间做一个了断。文章的深浅顺序是递进的,当你看完这篇文章,你也基本掌握了map的99%的知识点了,可以装逼和吹牛逼了。正文1.map的基本使用1.1声明 & 默认值// 声明var m map[string]stringmap的声明的时候默认值是nil ,此时进行取值,返回的...

2018-10-04 00:32:51 26482 9

原创 由浅入深聊聊Golang中select的实现机制

正文话说今天在玩select的时候发现一个问题,是这样的:片段1:func main(){ var count int for { select { case <-time.Tick(time.Millisecond * 500): fmt.Println("咖啡色的羊驼")

2018-08-31 01:40:42 18668 7

原创 Golang中defer的三个实战要点

前言Golang中的defer是使用频次比较高的,能创造出延迟生效特效的一种方式。defer也有自己的矫情,需要注意的。 本文将从通过代码的方式来说明defer的三点矫情。1.defer的生效顺序 2.defer与return,函数返回值之间的顺序 3.defer定义和执行两个步骤,做的事情。正文1.defer的生效顺序先说结论:defer的执行顺序是倒序执行(同入栈...

2018-08-25 16:42:34 4803

原创 Golang如何获取Request Payload的数据

前言话说今天对接fe,发现一直出现参数错误的报错。对了参数格式没问题,后面发现数据不是Form Data的,而是Request Payload的,所以来总结备忘下。正文了解Request Payload这个要从POST请求说起: POST请求有两种方式:1.方式一: Form Data形式 当POST请求的请求头里设置Content-Type: applicatio...

2018-08-20 23:43:13 7798 2

原创 一看就懂系列之Golang的测试

前言10s后以下知识点即将靠近: 1.为什么需要测试? 2.Golang的测试规矩 3.功能测试 4.压力测试 5.测试代码的覆盖率测试 6.测试框架正文

2018-07-30 01:15:27 21089 1

原创 一看就懂系列之Golang的反射

前言10s后,以下知识点即将靠近: 1.反射的简介 2.为什么使用反射? 3.反射的实现 4.反射具体能做什么?https://www.jianshu.com/p/53adb1e92710正文1.反射的简介Golang提供了一种机制,在编译时不知道类型的情况下,可更新变量、运行时查看值、调用方法以及直接对他们的布局进行操作的机制,称为反射。2.为什么使用反射...

2018-07-29 09:35:42 29803 7

原创 [详解]由浅入深的了解一下composer自动加载机制

前言由于对于composer自动加载机制的记忆只剩下了”spl_auto???”和”根据命名空间来推导出文件路径”这两个了。。。还是残缺的。。本想网上收藏一篇详解,奈何,没发现符合我觉得的”由浅入深”文章。 所以有了这篇笔记。以下知识点即将赶来: 1.了解一下spl_autoload_register 2.composer update发生的故事 3.追踪一下composer的...

2018-07-26 02:18:42 8975

原创 一看就懂系列之Golang的goroutine和通道

前言10s后,以下知识点即将靠近:1.从并发模型说起 2.goroutine的简介 3.goroutine的使用姿势 4.通道(channel)的简介 5.重要的四种通道使用 6.goroutine死锁与处理 7.select的多路复用 8.select死锁正文1.从并发模型说起看过很多大神简介,各种研究高并发,那么就通俗的说下并发。 并发目前来看比较主流的...

2018-07-24 08:04:03 30965 16

原创 一看就懂系列之Golang的接口

前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。 是的。Golang中也有接口这玩意儿。本文将以通俗易懂的方式,走一波Golang的接口。10s后,以下知识点即将到达战场: 1.接口是什么?如何定义? 2.为什么需要接口? 3.接口实战初体验 4.如何测试是否已实现该接口? 5.接口零值 6.空接口&类型断言&switch判断 7.一...

2018-07-22 03:12:02 41283 8

原创 一看就懂系列之Golang的方法

前言在Go里头是没有类的概念的,但是Go一样实现了同样的效果。 本文主要通过Go和PHP的对比来做笔记,致力于”一篇讲清楚go方法”,对于说phper的同学,看完印象会更深刻。即将get到以下知识小点: 1.Go的方法 vs PHP的类 2.Go的继承 vs PHP的继承 3.重载?重写? 4.指针接收者的方法 5.封装&访问权限说明正文1.Go的方法 vs...

2018-07-20 02:33:34 4518

原创 一看就懂系列之Golang实战基础

前言学习任何东西都是从模仿开始的。 golang最精华的基础部分,在网上找了半天没发现合适的,还是自己总结一篇吧。 本文包括以下内容:1.Golang的基础语法 2.Golang的基础命令此文浏览即可无需记住,使用时当字典来查会有惊喜哦~正文Golang的基础语法1.官方关键字与变量的类型 关键字 break...

2018-07-19 02:40:09 8194 2

原创 一看就懂系列之Golang准备

前言开始学习之前要做的一些准备: 1.golang的简历 2.本地开发环境的搭建 3.编辑器的选择 4.推荐的书籍正文golang的简历golang的背景和背影都很多,简单一句话介绍: ··· 123123123123 ···...

2018-07-16 01:50:16 4099

原创 咖啡色的羊驼学习Golang

前言四年前便与golang结缘,学了一波由于没有应用场景便雪藏了,前几个月重新开始学习,此篇用于自己的总结备忘录。正文[先写标题,先留坑日后再填]1.golang基础操作总结...

2018-07-16 00:24:03 2143 2

原创 [小技巧]两台mac pro如何更快的传输文件

前言在同一个网络下,传文件方式有很多,可以通过qq等支持传文件功能软件,但是这个走了一层网络,其实是比较慢的。分享从同事那儿get到的两种方式正文 1.通过phpphp -S 172.21.205.xxx:9999 2.通过pythonpython -m SimpleHTTPServer 8001...

2018-07-15 12:00:17 9669

原创 如何同步本地php代码到远程机器,来实现本地开发?

前言近期遇到一种情况,本地开发环境的搭建为了快速,很多公司已打包好现成的镜像提供使用,同时开发的时候人手一台云机器。这边就有一个很重要的问题了。如何同步本地代码到远程机器,来实现本地开发?有的同学喜欢VIM的开发环境当让可以直接登上机器开发,包括GIT中啥的都可以用命令行处理,肯定可以。但是那些就是喜欢本地开发,要用IDE,要使用sourcetree等工具的同学,要怎么办?正文...

2018-06-23 10:47:47 1896

原创 [详解]优化API接口响应速度的套路

前言API接口响应慢? SLA一直提不上去? 其实这是后端程序员想进阶必须要跨过去的坎:就是把它优化掉。 那么这其中到底有没有套路呢?答案是:有的。本文将介绍目前正在用并且十分“无脑”有效的这个套路。正文埋点追踪分析,找出真凶 首先呢,第一部肯定是在关键函数(有db、文件、复杂计算等操作)的前后,进行时间的记录。这里分享一个前文跟踪的类Trace.php<?phpclass Trace

2017-09-18 01:53:06 19324 3

原创 如何使用brew将mac本地升级至php7

前言由于公司已经全线升级php7,所以将本地的环境进行升级了下。 由于早年乱跑百度搜索的各种一键安装脚本,导致此次升级困难重重,但发现问题并解决之后,发现升级步骤,还是很清晰的。记录一下sb的一天正文 1.使用brew进行升级(已安装或者知道使用姿势请跳过)安装命令ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew

2017-09-15 00:06:16 2990

原创 记一次偶然遇到mysql的max_connection_errors错误

前言打开项目后台发现数据库连接报错,没仔细看大概看了下,噢,是连接数太多了,应该过一会儿就好了,后面发现同事可以访问,我竟然不行,认真看了下这不仅是连接太多,而且还是同一个ip连接太多。懵。错误关键字Host is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’错误原因短时间内同一个ip

2017-08-12 14:22:14 8063 2

原创 一看就懂系列之 由浅入深聊一聊php的垃圾回收机制

转载请附上本文地址:前言是的,平时经常听到大牛说到的gc,就是垃圾回收器,全称Garbage Collection。早期版本,准确地说是5.3之前(不包括5.3)的垃圾回收机制,是没有专门的垃圾回收器的。只是简单的判断了一下变量的zval的refcount是否为0,是的话就释放否则不释放直至进程结束。乍一看确实没毛病啊,然而其中隐藏着变量内存溢出的风险:http://bugs.php.net/bug

2017-08-08 03:34:23 10660 4

原创 记录一次解决PHP返回数据被nginx截断的问题

前言今日,发生了一件懵逼的事情,通过内部接口获取数据的时候,概率性出现返回的数据被截断的问题。内部接口好好的为何突然出现问题了?此文将记录这次本应该很快解决却没有很快解决的过程。正文背景内部接口分为5+3=8台机器,为什么这么说呢,5台是一直有的,而3台是刚新增的,问题就出在了这三台,由于负载均衡策略所以出现在前文说到的概率性出现返回的数据被截断的问题。一般开发是没有机器权限的,再不申请临时机器权限

2017-08-01 02:05:12 4574

原创 linux查看本机IP、出口IP、gateway、DNS

本机IP: ifconfig 出口IPcurl ipinfo.io curl ip.cn curl cip.cc curl myip.ipip.net curl ifconfig.me curl http://members.3322.org/dyndns/getip gateway:[root@localhost ~]# netstat -rnKernel IP rout

2017-07-25 02:58:21 2755

转载 分布式发布订阅消息系统 Kafka 架构设计

我们为什么要搭建该系统Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础。现在它已为多家不同类型的公司 作为多种类型的数据管道(data pipeline)和消息系统使用。活动流数据是所有站点在对其网站使用情况做报表时要用到的数据中最常规的部分。活动数据包括页面访问量(page view)、

2017-07-25 01:36:18 804

原创 一看就懂系列之 高并发的短链接替换实现方案

转载请附上本文地址:http://blog.csdn.net/u011957758/article/details/75810039前言是的,相信只要是社交类的app,或多或少会涉及到描述。那么当存在链接的时候,我们不知道链接有多长,所以描述字段就没法准确的用varchar(140)了。 难道用text?好像不行,两方面原因:1.描述肯定要有限制的。2.dba不推荐text,效率你懂的。 所以对

2017-07-23 01:55:29 7991

原创 如何解决BIGINT UNSIGNED value is out of range

前言近日一早上都在解决数据库的问题,这是新遇到的一个报错,特此记录一下。正文背景:需要在sql中之间执行类似:UPDATE {$table} SET point=point-{$point} WHERE `id`={$id}突然发现要被减去的point的数目是大于数据库中存储的。不是前文没做检验是因为前文sql写错了,导致的这里id错了,所以扣到了一个已经被扣光的记录(即point=0)里头,由于设

2017-07-19 02:45:12 23730

转载 详解mysql的悲观锁与乐观锁

悲观锁介绍(百科):悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。使用场景举例:以MySQL InnoDB为例商品good

2017-07-19 02:12:01 571

原创 详解mysql的for update

前言近期开发与钱相关的项目,在高并发场景下对数据的准确行有很高的要求,用到了for update,故总结一波以便日后留恋。本文讲解几个点: 1.for update的使用场景 2.for update如何使用 3.for update的锁表 4.for update的注意点 5.for update的疑问点for update的使用场景如果遇到存在高并发并且对于数据的准确性很有要求的场景,

2017-07-16 21:23:18 25066 2

空空如也

空空如也

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

TA关注的人

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