自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 字符编码发展梳理

从 Golang 中的字符串出发len("ab你好") 返回多少已经存在用下标遍历字符串的方式,为什么还要有for _,ch range str ,有什么区别从 ASCII 字符编码到 UTF-8起点: ASCII 码首先我们知道在计算机的世界中,一切数据都是以字节流的形式存在。例如下图,一个字节(8 个 bit)可以表示从 0 - 255 之间的整数。但是我如果想表示一个字符呢?字符定义:在电脑和电信领域中,字符(Character)是一个信息单位。对使用字母系统或音节文字

2022-03-04 16:42:03 314

原创 kmp 算法

KMP 相关题目28. 实现 strStr()459. 重复的子字符串686. 重复叠加字符串匹配基本思想KMP 算法是字符串匹配中经典算法,由 Knuth,Morris 和 Pratt 发现,所以取了三位学者名字的首字母,叫做KMP 算法以 28. 实现 strStr() 为例给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。我们普通人的暴力

2022-03-01 11:42:28 250

原创 流处理系统简介

主要内容来自 DDIA 第十一章 流处理系统,还有自己关于 Golang 流计算的一些调研背景计算服务可按以下方式分为三类:在线服务:当收到请求时,服务尽可能快的处理并且发挥一个响应,如常见 Web 服务。批处理(离线)系统:一次性接收并处理大量的数据,往往需要执行比较长的时间(几分钟到几天),所以用户不会同步等待返回结果,这种作业一般定期执行。最常见是 MapReduce流处理(近实时)系统:流处理介于在线与离线之间。批处理输入是有界的,而流处理的输入是无界的。当有新事件到达时.

2022-01-20 20:31:54 2205

原创 Golang 逃逸分析

问题Go 中 New/Make 出来的对象存在哪,栈还是堆?下面 FooA 与 FooB 函数哪个性能高一点,为什么(来自 stack overflow)?package mainimport ( "fmt" "time")type User struct { Name string Age int}func main() { fooA() fooB()}func fooA() { start := time.Now() var c = make(chan

2022-01-13 20:49:03 1061 1

原创 日志结构流派存储引擎的演化

本文主要内容来自于《数据密集型应用系统设计》 第三章,内容对我很有启发,所以分享给大家,推荐看原作。背景存储引擎存在着两个主要流派:日志结构流派,只允许追加式更新/删除文件,不会修改已写入的文件,Bitcast,SSTables,LSM-Tree,LevelDB,RocksDB,Cassandra,HBase,Lucene 等属于此类原地更新流派,将磁盘视为可以覆盖的一组固定大小的页。B-tree 就是这一流派的典型代表,已用于所有主流关系型数据库,以及大量的非关系数据库大部分人已经对原地.

2022-01-07 17:08:45 797

原创 分布式链路追踪Jaeger快速入门-01

Logging,Metrics 与 Tracing 关系同:都是为了提高基础设施和应用程序的可观测性区别:----LoggingMetricsTracing特点记录离散的事件记录可聚合的数据记录请求范围内的信息典型指标用户自行打印的调试信息…QPS, 接口时延分布一个具体 RPC 调用中的过程:各个服务的耗时占比典型应用ELK(收集,分析), log4j(记录)…Prometheus…Dapper, OpenZipkin,Jaeger…它们之

2022-01-04 01:40:02 675

原创 Golang 汇编介绍

在阅读 Golang 源代码时,总是被其中的汇编代码卡住,读起来不流畅。今天来简要了解下 Golang 中的汇编语言。汇编分类按指令集架构分类(针对 CPU)x86汇编(32bit):这种架构常被称为i386, x86x86汇编(64bit), 这种架构常被称为 AMD64, Intel64, x86-64, x64, 它是 AMD 设计的, 是 x86 架构的 64 位扩展, 后来公开ARM汇编, ARM处理器由于高性能, 低耗电, 常用于嵌入式, 移动设备.…按汇编.

2022-01-04 01:39:21 947

原创 6.824 README

MIT6.824-2021MIT6.824 Distributed Systems Engineering 2021 个人学习记录仓库地址官方地址B 站视频学习个人博客在线阅读声明:不生产知识,只是知识的搬运工遵循协议实验代码不公开,但博客中会记录个人实现思路在每个翻译文档开头都放了原链接,若翻译不行(我也大部分都是翻译器复制的),请直接查看原文档文件夹说明:docs-cn --> 官方 note,lab 中文翻译my-blog --> 个人学习过程想法

2022-01-04 01:30:00 189

原创 Prometheus 快速入门-02

数据模型Prometheus 底层将所有数据存储为时间序列: 即以相同 metric 和 label 维度聚合的带时间戳的流。时序格式下面格式表示一个 metric 和 label 的时序数据集合<metric name>{<label name>=<label value>, ...}例如,一个时间序列的度量名称 api_http_requests_total 和 label 方法=“POST” 和handler="/messages"可以写成这样:ap

2021-12-10 23:10:47 364

原创 Prometheus 快速入门-01

Prometheus 是什么Prometheus 是 SoundCloud 公司开源的系统监控告警工具。2016 年,继 k8s 后,作为第二个托管项目加入了云原生计算基金会。这个项目拥有着非常活跃的开发者和用户社区,随着云原生和 k8s的推广,越来越多的公司的运维都是使用 Prometheus + Grafana(可视化) 的这一套。Prometheus 以时序数据的形式收集和存储其指标,同时支持添加自定义 label 的可选键值对监控对象硬件状态:电源状态、CPU 状态、机器温度、风扇状态…

2021-12-07 20:37:45 627

原创 Golang 的骚操作:linkname

背景在看源码时,一些源码方法没有方法体,难道说明这些方法为空?例如:time.Now 调用的 now(), time.Sleep , reflect.makechan// Provided by package runtime.func now() (sec int64, nsec int32, mono int64)func Sleep(d Duration)func makechan(typ *rtype, size int) (ch unsafe.Pointer)在写代码时,如

2021-12-03 01:33:10 887

原创 Golang协程与调度器原理

思考从容器上该如何设置 GOMAXPROCS 大小引发,这个数字设置多少合理,其到底限制了什么,cpu 核数,系统线程数还是协程数?背景Go 语言可以说为并发而生。Go 从语言级别支持并发,通过轻量级协程 Goroutine 来实现程序并发运行,go关键字的强大与简洁是其它语言不可及的,接下来让我们一起来探索 Golang 中 Goroutine 与协程调度器设计的一些原理吧。Go 协程概念进程: 操作系统分配系统资源(cpu 时间片,内存等)的最小单位线程:轻量级进程,是操作系统调度的最.

2021-11-22 18:31:38 388

原创 MESI 缓存一致性协议引发的一些思考

某个下午偶尔间看到了 MESI 缓存一致性协议,引出了我不少相关的疑惑,写下此文记录通过这篇文章你能了解到的知识MESI 协议是什么,解决了什么问题指令重排 是什么,解决了什么问题内存屏障 是什么,解决了什么MESI 与 并发同步的区别MESI 缓存一致性协议MESI 产生的前提多级缓存的出现多核 CPU 的出现总之为了计算机的性能,现代计算机都具备上述两点的设计,下图为不同存储的 IO 速度对比MESI 解决的问题由于现在计算机都是多核 CPU 了,并且每一个 CPU.

2021-11-18 23:23:37 197

原创 MySQL binlog 设计

通过这篇文章你能了解到的知识binlog 是什么binlog 的作用binlog 的三种类型,以及各自优缺点binlog 文件的结构与内容binlog 是什么Binary Log,顾名思义是一种二进制格式的日志。具体来说,binlog 日志是一组包含了对 MySQL server 实例进行数据修改(update/delete/insert/...)信息的文件。binlog 作用用于复制,如主从复制数据恢复binlog 类型基于语句 (Statement-based)的日志记

2021-11-16 00:59:13 491

原创 研发convert资源集合

json2gohttps://mholt.github.io/json-to-go/sql2gohttps://sql2go.ricestdiotech.com/curl2gohttps://mholt.github.io/curl-to-go/curl2allhttps://curlconverter.com/yaml2gohttps://yaml2go.prasadg.dev/toml2gohttps://xuri.me/toml-to-go/数据转换大集

2021-11-10 01:17:10 214

原创 Golang日志库介绍

前言为什么需要日志调试开发程序运行日志用户行为日志不同的目的决定了日志输出的格式、频率。作为开发人员,调试开发阶段打印日志目的是输出尽可能全的信息(如上下文,变量值…),辅助开发测试,因此日志格式要易读,打印频率要高。而在程序运行时,日志格式倾向于结构化(便于分析与搜索),而且为了性能和聚焦于关键信息(如error ),打印频率更偏低。Go 标准库 Log使用我们常使用 Go log 以下三组函数:Print/Printf/Println: 打印日志信息Panic/Panicf/P

2021-11-10 00:21:32 1277

原创 使用 Hugo 与 GitHub Pages 快速搭建博客

前言作为一名程序员,并且是一名有追求的程序员,技术影响力 对我们不可或缺。今天介绍一下我是如何利用 Hugo 与 GitHub Pages 快速搭建个人内容输出平台。Hugo 与 GitHub Pages 简介Hugo: 世界上最快的网站建设框架,将 Markdown 文件生成 HTML 静态页面。GitHub Pages GitHub 提供的静态网页托管服务,不需要额外的服务器来部署你的博客系统了。搭建过程安装 HugoMac 直接使用以下命令二进制安装brew install hug

2021-11-08 19:24:38 352

空空如也

空空如也

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

TA关注的人

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