- 博客(15)
- 收藏
- 关注
原创 websocket与hijack
是什么WebSocket从字面意思来看,就是两个单词的拼接,分别是Web和Socket。学过网络协议的同学都知道传输层协议分别有TCP和UDP协议,都是双工协议,Socket就是操作系统对传输层协议的抽象实现,不过Socket除了支持网络通信,也支持像unix socket这样的基于本地文件系统的通信。而Web的释义也是字面意思,就是基于http协议的通信系统,所以顾名思义,websocket...
2023-03-15 13:58:45 125
原创 go程序的生前死后
最近想写一篇GC的文章,写着写着发现没有GMP调度模型和Memory Model的知识,gc就很难写下去,然后就又去看GMP模型,然后发现GMP的起点还是得看g0、m0这几个关键数据,这几个数据又是在程序启动时初始化的,然后发现GC和Memory Model其实在初始化时也有很多操作,所以先尝试把go程序启动到销毁的过程讲清楚,再去一步一步的去看runtime相关的内容开发者的视角...
2023-02-20 17:23:09 139
原创 深度解析GFS
本文通过对《The Google File System》的阅读,来了解GFS的设计、实现和应用,以及设计上的缺陷。1.简介GFS(The Google File System),一个面向大规模分布式数据密集型应用、弹性的分布式文件系统。作为谷歌三驾马车之一(2003年的GFS、2004年的MapReduce、2006年的Bigtable),对分布式系统的工程实现具有开创性的先驱意义。...
2022-12-04 17:59:12 100
原创 十年磨一剑 go 1.18泛型
泛型引入了抽象,无用的抽象带来复杂性。什么是泛型泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Java和C# 称之为泛型(generics)ML、Scala 和 Haskell 称之...
2022-06-07 15:18:07 47
原创 Consul 分享
是什么Consul 是一个分布式、高可用的数据中心解决方案,可在动态、分布式的基础设施上连接和配置应用程序,由HashiCorp公司推出的开源项目。https://github.com/hashicorp/consul https://www.consul.io/,Consul使用golang编写,具备天然的可移植性,同样在k8s、vm等平台上部署consul也是非常方便的。consul ...
2021-12-06 21:34:07 43
原创 Elasticsearch 从cluster到field
一、是什么Elasticsearch(ES) 是近实时、高性能、高弹性的分布式搜索和分析引擎,存储格式基于json,由apache lucene提供单机的搜索和存储。二、基础语法2.1 新建索引PUT juejin_hr_data_v1{ "settings": { "index": { "routing": { "allocation": { "enable": "all" } },
2021-11-14 19:51:31 1171
原创 Elasticsearch 从cluster 到field
theme: channing-cyan一、是什么Elasticsearch(ES) 是近实时、高性能、高弹性的分布式搜索和分析引擎,存储格式基于json,由apache lucene提供单机的搜索和存储。二、基础语法2.1 新建索引```PUT juejinhrdata_v1{"settings": {"index": { "routing": {...
2021-11-14 17:37:12 44
原创 在么?你的程序也想清凉一夏 | golang pprof
大家好啊,今天外边真的是热爆了,根本不想出去走动,这个天气在空调房里拿个小勺子????挖着冰镇西瓜吃,真的是绝了????,正当我一边看着奥运一边恰西瓜时,我突然想到,这大夏天的不能光我自己凉快,也得给我们的程序“降降温“,而降温的关键是要找到“升温点”,而golang就提供了非常好用的工具来帮助我们来定位程序中的很多问题,它就是pprof 。pprof简介pprof提供运行时程序的profil...
2021-08-16 15:20:39 64
原创 golang 条件变量源码剖析
theme: juejin1. 条件变量介绍```golangCondition variables allow threads to wait until some event or condition has occurred.```条件变量是并发编程中很经典的一个手段,常用的条件变量有两种实现。非阻塞式条件变量(Nonblocking condition var...
2021-08-05 16:03:27 65
原创 几丝欢喜&几声叹息 | 2021年中总结
时间真的过的好快,今天已经是2021年6月27日了,2021年也过去一半了,不能一直走,也确实需要回顾回顾自己的过去了。今天抽时间好好想了一下自己的这半年,这半年,是普通的半年,普通中带有几丝欢喜,普通中又带有几声叹息,普通中也过了自己的23岁生日。一丝欢喜换到了自己更喜欢的业务上,自己也负责了这个业务的一个活动的服务端开发工作。在个人角度上,我负责了服务端的技术方案制定(虽然是自己单...
2021-06-28 11:38:48 36
原创 golang sync.mutex 详解
theme: juejin1 定义1.1 基本概念互斥锁(英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行访问的代码,并非一种机制或是算法。一个程序、进程、线程可以拥有多个临...
2021-06-24 11:51:32 109
原创 ElasticSearch全流程
先聊点有意思的 : )许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,他开始使用 Lucene 的一个早期版本。直接使用 Lucene 是很难的,因此 Shay 开始做一个抽象层,Java 开发者使用它可以很简单的给他们的程序添加搜索功能。 他发布了他的第一个开源项...
2021-06-10 13:53:51 31
原创 深度解析golang map
基础知识map的概念map 的直观意思是映射,是 对组成的抽象结构,且 key 不会重复,所有的操作也都是key/value的。map的底层实现一般有两种:搜索树(search tree),天然有序,平均/最差的写入/查找复杂度是O(logN)哈希表(hash table),无序存储,平均的写入/查找复杂度是O(1),最差是O(N)在go语言中,map的底层实现是hash表。...
2021-04-24 21:01:21 99
原创 mysql binlog 基础 & 实战
主题使用方法:https://github.com/xitu/juejin-markdown-themestheme: juejinhighlight: juejin1. binlog简介binlog在mysql 3.23.14被首次引入,是 mysql server 实例产生的二进制日志,记录的是mysql所有更新数据及可能更新数据(例如一个未命中任何行的delete语句)的...
2020-11-07 23:12:33 33
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人