Skip to main content

Shinki

一个程序员的博客

掘金文章
掘金历史文章
迁移博客到vuePress

原因

shinki.moe这个域名注册了差不多4年了,之前网站一直使用的pm2+hexo+nginx的方式运行,当时对运维相关的内容不是非常关注,想的是写个博客,能渲染md格式的文件有个记录就行,就一直放着没管.中间有一段时间对分布式相关的东西特别感兴趣,所以读了点书写了点心得外加翻译了一些东西,为了方便就直接放掘金了.

最近工作相关的原因闲下来了,外加最近两年写了不少前端的代码,对vue也算熟悉了,于是想着看看能不能优化下hexo的运行方式,写个githubAction自动部署,两年多没相关文字输出了,重新开始写点东西.于是登录上了我的博客服务器,结果发现服务器硬盘被pm2的日志写爆了,最后靠着服务商的crt才把日志给清理了,清理完成之后去看了下hexo的文档,这才发现hexo的运行方式似乎是不支持编译成前端静态文件的,这明显是没法接受的,虽然说我这个服务器跑个node进程+pm2不是多大问题,但是如果要做自动化就得依赖脚本完成了,如无必要,勿增实体,于是我就开始寻找其他的博客框架.


Achab.Wang...About 2 minblogvue
记一次 mysql 重构优化

前言

比较长一段时间没有写博客了,倒不是因为懒,主要现在工作主要内容CRUD居多,虽然现在接受的项目和 ElasticSearch 相关,但是感觉相关的内容在 ES 的手册都找的到,没必要当个复读机把这些问题都记录下来,所以博客这边还是写一点一般途径找不到的东西。这次分享的内容和一次后台页面查询优化相关,觉得可以讨论下,刚好最近也在和同学讨论 Mysql 相关的东西,于是记录下,权当分享了。这里顺便预告下,最近在看 《七周七并发编程》 与 《七周七理解多语言编程范型》 接下来的博客可能讨论这两本书相关的内容,顺便也推荐下这两本书,把这两本当做增长见识,理解一些语言特性来源很不错。


Achab.Wang...About 5 minmysql b+tree hash tree
一次成功(失败)的Redis重构

导言

很久没写博客了,主要觉得工作上值得写博客的地方不多,个人对于写博客的看法是:凡是网上能找到的东西更适合记忆,比如说 shell 命令、某些语言的官方库或者某项开源技术的文档等。博客更适合的是总结和复盘自己的经验,更适合原创用来深化记忆。下面开始复盘这次重构。

复盘

起因

​ 这次重构起因是一个后台管理项目添加功能的需求,先介绍一下项目的大致情况:

  • 表 A :数据量K级,主要保存一些单条数据内容,核心表,日增长大概几十条左右

  • 表 B :数据量 100K 级,和表A是多对一关联,日增长千条左右。

  • 表 C :数据量 100K 级,和表A也是多对一关联,日增长同表B,表C和表B关联字段不同

  • 表 D :整个数据库的大 BOSS ,慢查询的根本原因所在,数据1000K级而且增长迅速,保存的是表 A 和表 B 的关联状态也就是保存的表 A 与表 B 关联状态的各种值。基本上所有条件查询都是从表D而来


Achab.Wang...About 4 min
go夜读之httpRouter

大晚上的睡不着,看了下B站的go夜读52期,看见在讲httpRouter相关的内容,之前在写gin的时候看到有人说过gin的router就是基于HttpRouter演变过来的,于是看了下视频,发现还是挺受用的 于是写篇博文谈下感想(顺便吐槽下 写这篇文章的时候北京时间凌晨2点40左右 真的是名副其实的"夜读"了)
首先谈下起源,httpRouter算是go很经典的拓展之一了,go原生的http.HandleFunc很难满足restefulAPI的要求,当需要根据POST PATCH UPDATE GETURI来获取不同的方法以及参数的时候,原生的handleFunc无法满足取路由变量以及针对不同类型的请求返回不同的值的需求。于是httpRouter诞生了。
httpRouter根据GET HEAD OPTIONS POST PUT PATCH DELETE分别建立了基数树 大概解释下基数树的原理:基数树会根据文本来生成树结构,当只有一个文本来作为节点的时候,这个文本即是根节点,再添加节点会根据文本与根节点的文本重复度来生成子节点。这里借用wiki的一张图来说明


Achab.Wang...About 2 min