不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

秒杀系统架构设计都有哪些关键点

秒杀其实主要解决两个问题,一个是并发读,一个是并发写。

秒杀的整体架构可以概括为“稳、准、快”几个关键字。

所谓“稳”,就是整个系统架构要满足高可用,流量符合预期时肯定要稳定,就是超出预期时也同样不能掉链子,你要保证秒杀活动顺利完成,即秒杀商品顺利地卖出去,这个是最基本的前提。

所谓“准”,就是秒杀 10 台 iPhone,那就只能成交 10 台,多一台少一台都不行。一旦库存不对,那平台就要承担损失,所以“准”就是要求保证数据的一致性。

阅读全文 »

题目描述

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。

进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
示例 1:
输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]

示例 2:
输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]

示例 3:
输入:nums = [], target = 0
输出:[-1,-1]
 

提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
nums 是一个非递减数组
-109 <= target <= 109
阅读全文 »

题目描述

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
示例 1:
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

示例 2:
输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1


提示:
你可以假设 nums 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。

题目解析

中规中矩的一道专门考察二分查找的题目,直接上代码,注释写的很详细了。

阅读全文 »

golangci-lint 基本介绍

golangci-lint 是一个 Go linters 聚合器。

特征

⚡ 非常快:并行运行 linter,重用 Go 构建缓存并缓存分析结果。
⚙️ 基于 Yaml 的配置。
🖥 与 VS Code、Sublime Text、GoLand、GNU Emacs、Vim、Atom、GitHub Actions 的集成。
🥇 包含 48 个linters,无需安装。
📈 由于调整了默认设置,误报的最小数量。
🔥带有颜色、源代码行和标记标识符的漂亮输出。

golangci-lint 各配置项介绍

阅读全文 »

记得最开始看到这句话,是在《小时代1》中那个帅气的混血儿,因为拿错演讲稿,但依旧有条不紊的说了自己准备的planB开场白。

当时觉得不以为然,心想秘书都帮你安排好了,何必多此一举,现在想想,我真是天真啊…

感谢社会大学在这一周给我上了精彩的一课,为了等这一刻,你们估计也已经蓄谋很久了吧,没关系的,我心态很好,我有家人,有朋友,有一定的资源人脉,而你们也只能在这里继续啃食下一个天真的灵魂。

再一次,对这块天府之国上的企业感到失望,我不会哭,因为我要假装坚强,我不会气馁,因为打不死的会让我变的更强,我也不会随意的发牢骚,而是要在黑夜里坚持不懈的练拳头。

再见了,天真的自己。

阅读全文 »

MTV架构

设计思想

  • 不重复造轮子
  • MVT
  • 快速开发
  • 灵活易于扩展
  • 松耦合
  • 显式优于隐式

优缺点

阅读全文 »

今天是和T项目合伙人的第4or5次开线上腾讯会议,为了一个数据库表的问题争论了10几分钟,才发现问题原来出在我这里,我把问题想复杂了,导致Th童鞋进度慢了两周,额,好吧,在此说声抱歉….

目前产品原型图、人员都固定了,就照着做就行。然而没想到还是会出现这样那样的问题,Lzd都感到无语了。

但是,我想,也许这就是一个磨合的过程吧,如果不是这次项目合伙,我也不会频繁的和你沟通、从而了解你的野心、你的执行力,甚至不知道川大南门那附近的一家好吃的小笼包店,嘻嘻…

后面的路,我想我得抓紧赶业务流程了,感谢目前公司带我的leader,耐心指导我的编码风格,让我一点一点的走上正轨,让我慢慢掌握了gormgin这两个主流后端框架。

加油,办法总比困难多,迎难而上解决掉,让自己不断成长!

阅读全文 »

本以为自己离开了地狱走向天堂,却不知离开的才是天堂,走向的才是地狱。

什么是地狱、什么是天堂?

在我看来,只要是愿意将时光定格在某个时刻,并且保持身心愉悦,它就是天堂,反之即是地狱。

曾经的我非常怀念高三那段时光,虽然有成堆的试卷要做,但老班说做不完就别做了,睡眠要紧,每一章前几道题一眼就看出答案的就别做了…哈哈哈,这句话至今印象深刻。

那时候的我,单纯且乐观,对待一切事物都是尽力就好,不留遗憾。心情不好的时候,约上一个朋友操场散心,亦或是放学留下来打球释放压力,大家开开心心的数着高考的倒计时日历…

阅读全文 »

日志

日志级别

https://github.com/golang/glog 是 google 提供的一个不维护的日志库,glog 有其他语言的一些版本,对我当时使用 log 库有很大的影响。它包含如下日志级别:

  • Info
  • Warning
  • Error
  • Fatal(会中断程序执行)

还有类似 log4go,loggo,zap 等其他第三方日志库,他们还提供了设置日志级别的可见行,一般提供日志级别:

阅读全文 »