Keal's Blog

我的天空, 是雨是风

非理性繁荣

by 罗伯特·J·希勒

1 股票市场的历史回顾 修正后的美股指数. 1927, 1973, 2000, 2003-2007, 2009-2014是几个高峰和上涨区 2000年3月24日最高峰时的市盈率为47.2, 第二高的市盈率是1929年的32.6 每次高峰后的衰落, 平均实际回报率经历20-25年才为正 这种虚假的,非理性的繁荣无法准确预测. 2 债券市场的历史回顾 长期债券的价...

PostgreSQL数据库的索引

索引不只有优点,还有缺点

索引优化了查询速度, 但代价是会占据更多的空间以及导致写操作的复杂度变高. 索引有什么类型,每种类型有什么用处呢? 之前看«高性能MySQL»知道了关于MySQL的索引, 但是PostgreSQL的还没建立一个系统的知识,这篇文章就是写来帮助自己理解PostgreSQL的索引 https://mastermind.dev/indexes-in-postgresql 总结的几点: ...

Postgres数据库的Checkpoint机制

背景 项目生产环境有一个服务的数据库的监控数据有异常, 主要是CPU和WriteIOPS会有规律性的尖刺. 排查 cpu飙升问题 CPU的使用率升高通常都是做数据量大的操作,例如多表Inner join或者同时在数据库做了一些计算操作. 因为尖刺是规律的5min出现一次,所以大概率猜到是某个定时任务导致的. 排查后发现有个5min的定时任务是去统计某个千万数据级别表, 同时还要做...

2022回顾&2023计划

记录生活

2022 书籍阅读 微观经济学 曼昆经典著作, 随宏观经济学一起买的. 之前读过电子版, 买了实体书又读了一遍, 巩固了下经济学的一些知识 什么样的爱值得勇敢一次 失恋的时候读的, 本来是抱着学习的态度, 发现大多数事情原来我已经都做到了. 可能是我的思想太超前了(笑 X的悲剧 埃勒里圭因的经典推理书籍. 经典. 经典 克莱因壶 基于虚拟和现实的推理, 当虚拟可以完全模拟现...

HTTP请求全部使用POST的一些思考

之前技术群里有人转发了一个建议后端所有接口都使用POST来与前端交互. 当时仔细看了下,大概的思路是觉得用POST更统一,也没什么坏处云云.. 现在比较流行的使用HTTP来做前后端交互的应该是RESTful风格. REST把HTTP里的动词作为对资源的一种操作,例如GET对应获取,POST对应创建,PUT和PATCH对应更新等.这里不详细说规范的细节.只说一些我认为的原则上的问题和一些设计...

2021读书总结&2022计划

2021 «伊芙琳的七次死亡» 斯图尔特·特顿 简评:kindle上推荐说是英国的畅销推理书,设定新颖.作为在一个特殊设定下完成的推理小说,我觉得认真推敲的话可能还是呼存在一些漏洞,但是对于一个案件,不仅给予了不同参与者的角度,还赋予了其行动的能力,这样的想象设定的确很适合写推理案件. 因为推理小说本身总是存在一个侦探式的角色来去串联起参与事件的每个人物. 伊芙琳的七次死亡里的”我”...

从gRPC源码学习Golang默认参数和可变参数的使用

Golang默认参数和可变参数 Golang函数支持默认参数吗?No Golang函数支持可变参数吗?Yes 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package main import "fmt" //可变参数的声明 func test(a ...int) { var total int...

Golang之array,slice,map的底层实现

Slice, Map

Array Array即常说的数组数据类型. Golang中的数组类型由两个部分组成,即元素类型和数组长度.例如 [10]int 10个int元素类型的数组 [10]string 10个string元素类型的数组 即使元素类型相同, 但是数组长度不同,在Golang中也被视为是类型不一样. 声明数组 1 2 arr1 := [3]int{1, 2, 3} arr2 := [...

Golang的踩坑记录

记录Golang一些小坑,避免 uint类型直接相减如果是负数,会得到一个非常大的值 gorm更新时如果使用orm去更新会忽略类型的零值,比如将某个int类型改为0时,会被忽略. goroutine中如果不注意panic的话可能会导致整个程序的崩溃 小心在循环中直接使用临时变量,循环中的临时变量复用了地址,而循环的执行顺序问题会使得程序运行情况不一定符合预期

Golang之Channel

"channel chan?"

Channel channel是golang实现的”通过通信来实现共享内存”并发同步方案. Channel有点类似python里的Queue, 例如内部通过锁的机制实现了并发安全.遵循先入先出的设计. Channel的三种类型: 同步 Channel — 不需要缓冲区,发送方会直接将数据交给(Handoff)接收方; 异步 Channel — 基于环形缓存的传统生产者消费者...