mysql使用笔记
Explain
Extra 内容解释
类型
说明
Using filesort
MySQL 有两种方式可以生成有序的结果:通过排序操作或者使用索引。当 Extra 中出现了 Using filesort 说明使用了前者,但注意虽然 filesort 但并不是一定就是用了磁盘文件来进行排序,也可能是在内存里完成的。当出现排序,可以通过添加合适的索引来改进性能,用索引来为查询结果排序。
Using temporary
用临时表保存中间结果,常用于 GROUP BY 操作中,一般看到它说明查询需要优化了。
Using index
使用索引覆盖的情况
Using index condition
发生索引条件下推(Index Condition Pushdown)的情况
Using where
全表扫描的时候,MySQL 服务层应用 where 条件过滤数据;使用索引访问数据,但是 where 子句中有除了改索引包含的字段之外的条件
Using join buffer
当关联查询使用 Block Nested Loop 算法或者 Batched Key Acce ...
资源
Application
Typora旧版本(免费)
Typora 最后一个免费版本是 0.11.18(Windows、macOS、Linux 系统通用) 。在这个版本之后,Typora 从免费软件转变为采用订阅制的付费软件。
mac:https://typora.cn.uptodown.com/mac/versions
win:https://typora.cn.uptodown.com/windows/versions
Charles
抓包工具
www.charlesproxy.com/
https://juejin.cn/post/6844904182588112904
推荐阅读:https://www.cnblogs.com/Uni-Hoang/p/13796852.html
配置https:https://blog.csdn.net/jdsjlzx/article/details/95970917 (没有配置,抓到加密数据看不了啊)
破解:https://www.cnblogs.com/hahaniuer/p/17915980.html
内网穿透
内网穿透是一种将内网 ...
技术摘抄
systemd
systemd.unit 中文手册 https://www.jinbuguo.com/systemd/systemd.unit.html#
grafana
视频:https://www.bilibili.com/video/BV1Yv4y1W7tF/?vd_source=eca8bef44f4d5efc79f226fa688a5064
echart官方case:https://echarts.volkovlabs.io/dashboards
插件链接:https://grafana.org.cn/grafana/plugins/volkovlabs-echarts-panel/ (数据源)
jenkins
https://devtest-notes.readthedocs.io/zh/latest/CI/continuous-integration-for-jenkins-api-2.html
confluence
API:https://docs.atlassian.com/ConfluenceServer/rest/6.9.1/
个人访问令牌使用方式:
...
plantUML
B站:https://www.bilibili.com/video/BV1wb4y1d7XP?t=3.7
Gitee: https://gitee.com/lastinglate/PlantUML-Samples
官网—中文文档:https://plantuml.com/zh/
流程图
* 设置节点背景填充颜色
1234skinparam activity { BackgroundColor #fff BorderColor #000}
case:
12345678910111213141516171819202122232425@startuml xxxskinparam activity { BackgroundColor #fff BorderColor #000}start:输入数据集、k_max、k_min、H_T、m、i、采样比例;while (i < m) is (Y) :求最小信息熵及对应k值; if (最小信息熵 < H_T) then (Y) :KNN分类; ...
go限流
摘抄:https://blog.admpub.com/blog/post/admin/常见限流算法和go语言time-rate和go.uber.org-ratelimit讲解
背景:保护服务节点或者数据节点,防止瞬时流量过大造成服务和数据崩溃,导致服务不可用
流量突发、流量突刺 1️⃣ 流量突刺(Traffic Spike)
流量突刺指的是 短时间内(比如几秒钟或者几分钟)请求量的 突发性急剧增加,然后很快恢复正常。突刺通常指短暂的,突如其来的流量激增。
持续时间:短时间内迅速上升,然后恢复正常。
特点:突如其来、瞬间流量激增,通常维持几秒到几分钟。
示例:
在一个短暂的促销活动开始时,用户涌入网站提交订单,导致网站瞬间流量激增,之后恢复正常。
某篇新闻报道发布,造成大量短时间内的访问,突刺流量通常会很快消失。
2️⃣ 流量突发(Burst Traffic)
流量突发通常指在一个较长的时间范围内,请求量突然增加,但它可以是持续一段时间的高峰,而不是一个短暂的波动。
持续时间:虽然也是短期的流量增长,但通常更长时间,可能持续几分钟到几小时。
特点:长时间持续的高流量。 ...
jwt - go
摘抄:https://learnku.com/go/t/52399
身份验证使应用程序知道向应用程序发送请求的人是谁。JSON Web 令牌(JWT)是一种允许身份验证的方法,而无需在系统本身实际存储任何有关用户的任何信息(与基于会话的身份验证相反 )。
在本文中,我们将演示基于 JWT 的身份验证的工作原理,以及如何在 Go 中构建示例应用程序以实现该示例。
如果你已经知道 JWT 的工作原理,并且只想看一下实现,则可以 跳过,或者在 Github 上查看源代码 。
JWT 格式
假设我们有一个名为的用户 user1,他们尝试登录到应用程序或网站。一旦成功,他们将收到一个看起来像这样的令牌:
1eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InVzZXIxIiwiZXhwIjoxNTQ3OTc0MDgyfQ.2Ye5_w1z3zpD4dSGdRp3s98ZipCNQqmsHRB9vioOx54
这是一个 JWT,由三部分组成(以分隔.):
第一部分是标题 header(eyJhbGciOiJIUzI1NiIsInR5c ...
设计模式(golang)
参考:https://github.com/mohuishou/go-design-pattern
参考课程:极客时间《设计模式之美》
资源:https://github.com/ggw2021/design-pattern-books
KISS 原则(Keep It Simple and Stupid,也常被译为 “保持简单愚蠢”)是设计、工程、管理等领域广泛遵循的重要原则,核心思想是让事物保持简单易懂,避免过度复杂。它强调在解决问题或创造产品时,最简单的方案往往是最有效的。
KISS 原则的起源与核心内涵
起源:普遍认为该原则由美国海军工程师凯利・约翰逊(Kelly Johnson)提出。他在设计军用飞机时要求团队:“任何设计都必须简单到让新手在紧急情况下也能轻松操作”,因为复杂的系统在高压环境下容易出错。
核心内涵:
并非倡导 “愚蠢”,而是反对不必要的复杂。即 “用最简单的方式解决问题,避免冗余的步骤、概念或结构”。过度复杂会导致理解困难、执行低效、出错率高,而简单的方案更易维护、推广和优化。
KISS 原则的应用场景
产品设计与开发
例如:苹果产品的极简界面,通 ...
connection pool
一次 HttpClient 连接池设置不当,引发服务雪崩
gRPC 客户端调用服务端需要连接池吗?
Go 语言使用 grpc 时,是否需要 grpc 连接池?
linux日常笔记
BSD & System V 风格
BSD(Berkeley Software Distribution)和 System V 都是 Unix 操作系统的重要分支和变体,它们在 Unix 的发展历程中有着重要地位,在系统架构、功能特性和应用场景等方面存在一定差异,以下是具体介绍:
BSD
起源与发展:BSD 起源于 20 世纪 70 年代末的加州大学伯克利分校。它是在 AT&T 的 Unix 基础上进行开发的,添加了许多新的特性和功能。在发展过程中,产生了如 FreeBSD、NetBSD、OpenBSD 等多个衍生版本,这些版本在服务器、嵌入式系统等领域都有广泛应用。
特点
网络功能强大:BSD 在网络方面的支持非常出色,它率先实现了许多重要的网络协议和功能,如 TCP/IP 协议栈的完善和优化,为现代网络通信奠定了基础。像 FreeBSD 就因其强大的网络性能,常被用于构建网络服务器和防火墙等设备。
开源与社区活跃:BSD 及其衍生版本大多采用开源的方式发布,拥有活跃的社区。社区成员积极参与开发和维护,不断为系统添加新功能、修复漏洞,使其技术不断更新和进步。
可移 ...
golang并发编程
摘抄自极客时间课程
go并发编程实战课:https://b.geekbang.org/member/course/intro/100061801
检查程序的工具:
race detector
vet工具
一、开篇词
学习 Go 并发编程,有哪些困难? 那学习 Go 并发会有哪些困难呢?
主要总结为 5 大问题。
在面对并发难题时,感觉无从下手,不知道该用什么并发原语来解决问题。
如果多个并发原语都可以解决问题,那么,究竟哪个是最优解呢?比如说是用互斥锁,还是用 Channel。
不知道如何编排并发任务。并发编程不像是传统的串行编程,程序的运行存在着很大的不确定性。这个时候,就会面临一个问题,怎么才能让相应的任务按照你设想的流程运行呢?
有时候,按照正常理解的并发方式去实现的程序,结果莫名其妙就 panic 或者死锁了,排查起来非常困难。
已知的并发原语都不能解决并发问题,程序写起来异常复杂,而且代码混乱,容易出错。
怎么提升 Go 并发编程能力?
学习这件事儿,最怕的就是不成体系,即使知识点之间是彼此独立的,也必定存在着联系。我们要做的,就是找出逻辑关系,拎出知识线。关于 ...