自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sjy8207380的专栏

尽量多写博客

  • 博客(33)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 读完Golang源码之Context

介绍Go 1.7 标准库引入 context,中文译作 “上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。context 用来解决 goroutine 之间退出通知、元数据传递的功能。实现包整体介绍名称...

2020-03-30 00:12:33 148

原创 【Prometheus】查询数据接口

以下是介绍调用Prometheus的API获取数据的方法。

2024-03-24 18:08:26 1235

原创 【Prometheus】查询语法(PromQL)

Prometheus 提供了一种功能表达式语言 PromQL,允许用户实时选择和汇聚时间序列数据。在gafana中,选择prometheus的数据源之后,在Metrics输入PromQL,语法正确后,图表页面就会显示出监控数据。瞬时向量(Instant vector) - 一组时间序列,每个时间序列包含单个样本,它们共享相同的时间戳。也就是说,表达式的返回值中只会包含该时间序列中的最新的一个样本值。而相应的这样的表达式称之为瞬时向量表达式。

2024-03-24 16:48:07 686

原创 Blackbox-Exporter对服务进行探活

blackbox-exporter

2023-02-16 15:24:57 765

原创 Kubelet监控指标说明

kubelet的监控指标

2023-02-15 19:05:37 1292

原创 【CRD】Probe撰写规范

Prome这种CRD的撰写规范

2023-02-14 17:48:02 232

原创 Linux-容器网络基础知识

网络命名空间通过对网络资源的隔离,就能在一个宿主机上虚拟多个不同的网络环境。Docker正是利用了网络的命名空间特性,实现了不同容器之间的网络隔离。命名空间的元素有:进程、套接字、网络设备。网络设备:它的特征决定它是否可以在命名空间移动网络命名空间的实现建立了新的网络命名空间,并将某个进程关联到这个网络命名空 间后,就出现了类似于如图7.1所示的内核数据结构,所有网站栈变量 都被放入了网络命名空间的数据结构中。这个网络命名空间是其进程组 私有的,和其他进程组不冲突。所有的网络设备(物理的或

2022-04-20 17:52:20 761

原创 Redis之持久化

AOF介绍AOF(Append Only File)是一种数据库写后日志,“写后”的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志。内容AOF中记录的内容如下:其中,“*3”表示当前命令有三个部分,每部分都是由“$+数字”开头,后面紧跟着具体的命令、键或值。这里,“数字”表示这部分中的命令、键或值一共有多少字节。例如,“$3 set”表示这部分有 3 个字节,也就是“set”命令。三种写回策略AOF 机制给我们提供了三个选择,也就是 AOF 配置项 appendfsync

2021-01-31 22:07:44 92

原创 Redis之数据结构

数据结构分类数据结构按键和值分类,可以分为两类,键值数据结构和值的数据结构。键值数据结构是hash表,用户通过键在hash表中找到值;值的数据结构又可以分为两类,API层面数据结构和底层数据结构。API层面的数据结构包括String、List、Set,Sorted Set,Hash,Bitmap;底层数据结构包括SDS(简单动态字符串)、dict(哈希表)、ziplist(压缩列表)、quicklist(双向链表)、skiplist(跳表),intset(整数数组)。值的底层数据结构是这篇文章介绍的重点。

2020-12-31 23:17:21 187

原创 MySQL之索引

前言索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。InnoDB 的索引模型每一个索引在 InnoDB 里面对应一棵 B+ 树。所以一张表会有多个索引。B+树:每个节点放大:特点树的每一层都是一个双向链表,最后一层的用户数据层也是一个双向链表一个节点的数据对应操作系统一页数据,大概16kb。页内是一个单休链表n叉树的n会比较大,所以b+树的整体高度不高根据叶子节点的不同我们可以分为两类:主键索引和非主键索引根据字段数分为两类:普通索引和联合索引主键索引主键索引的

2020-08-31 17:38:09 121

原创 https和数字证书

什么是HTTPSHTTPS是在HTTP和TCP网络层之间新增了一层SSL层(TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善)HTTPS协议的主要作用可以分为两种,一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网络的真实性数字证书的原理数字签发认证机构(CA)也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公约的合法性检验的责任。普通数字证书签发的流程首先用RSA产生一对公私钥,

2020-08-24 15:04:12 208

原创 MySQL之binlog和redolog

binlog特性binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1”binlog 是可以追加写入的。“追加写”是指 binlog 文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。用处可以归档日志,因为redo log是循环写,所以会覆盖掉老的日志MySQL很多内部系统依赖于binlog,比如主从同步很多异构系统也依赖于binlog,比如数据分析系统数据库

2020-06-24 10:39:40 279

原创 MySQL Explain详情

在你书写的SQL语句加一个单词 - explain,然后将 explain + SQL执行后会出现一个表,这个表会告诉你MySQL优化器是怎样执行你的SQL的。普通子查询是嵌套在另一个查询的SELECT语句中,用于返回一个单一的值或多个值,通常与WHERE子句一起使用。这是最高级别的查询类型,表示只有一行数据,因为这个查询只是对系统表中的一行数据进行操作,不需要扫描表。表示连接时使用了唯一索引,常见于连接查询(Join),并且在查询结果集中使用索引的所有列的值都相等。这是最慢的查询类型。

2020-06-15 23:54:33 321

原创 读完Golang源码之Runtime-Slice

基于源码Golang1.14.2切片和数组的不同数组:计算机会为数组分配一块连续的内存来保存数组中的元素,我们可以利用数组中元素的索引快速访问元素对应的存储地址切片:切片其实就是动态数组,它的长度并不固定,可以追加元素并会在切片容量不足时进行扩容。slice相关源码结构type slice struct { array unsafe.Pointer len int cap...

2020-04-14 20:26:52 795

原创 读完Golang源码之Container

堆type Interface interface { sort.Interface Push(x interface{}) Pop() interface{} // remove and return element Len() - 1.}其中sort.Interface如下图,具体介绍会在Sort里面介绍type Interface interface { Len() i...

2020-03-31 18:55:36 155

翻译 Go 1.14新特性

工具module相关go build等命令默认将会使用 -mod=vendor,如果需要使用mod cache需要显示指定 -mod=mod。go mod init 设置go.mod文件是-mod=readonly,go.mod是只读模式的。go mod tidy之外的go命令不再编辑go.mod文件除非明确要求或已经要求该版本,否则 go get 将不再升级到该模块的不兼容主要版本。...

2020-03-31 11:04:55 759

原创 Dockerfile最佳实践

前言本文参考Docker官方文档撰写Dockerfile我们有几个大前提变化最少的部分放在Dockerfile的前面,变化大的放在后面,这样持续集成的时候可以重复使用之前的layer一个容器应该只运行单个应用,不要写一个脚本在一个容器中同时运行多个应用构建高效和可维护的镜像.dockerignore防止不需要的文件拷贝到build context写法和.gitignore相似...

2020-02-16 00:44:48 133

原创 MySQL中Innodb引擎的各种锁

前言本文是MySQL使用innodb引擎涉及到的相关的锁MySQL中有着Lock和Latch的概念,在数据库中,这两者都可以被称为“锁”,但是两者有着截然不同的含义。...

2020-02-04 22:53:01 132

原创 SSH及登录

SSH以及代理SSH详解SSH代理详解SSH详解SSH代理详解

2020-02-01 23:36:06 281

原创 MySQL自增id溢出

前言线上推送业务的数据库出现连接数激增,同时出现推送内容丢失。综合两种情况,查询推送表发现自增id已经增加到21亿+。初步判断应该是自增id过多影响连接数,但是有多个问题不太理解(如自增id为什么不连续、int(11)会在多大数据时溢出、为什么溢出后会出现mysql连接数激增),所以写下这篇文章加深理解。自增id为什么不是连续的唯一键冲突事务回滚批量插入,分配自增id不连续对于批量...

2020-01-29 18:05:03 1953

原创 跨域资源共享(CORS)

一,简介CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能。前端:对应于前端请求来说CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。后端:只要服务器实现了CORS接口,就可以跨源通信。二,若干访问场景浏览器将CORS请求分成两类:简单请求和预检...

2019-12-17 16:13:29 300

原创 Linux Namespace

前言前两天在学习docker相关知识,知道docker是基于Linux Namespace来让不同的容器在宿主机上实现隔离的,遂对Linux Namespace产生了兴趣。Linux Namespace是Linux提供的一种内核级别环境隔离的方法。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存...

2019-12-17 16:12:58 172

原创 WebSocket初探

WebSocket初探WebSocket定义WebSocket握手客户端申请协议升级服务端响应协议升级WebSocket定义WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之前的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之前就直接可以创建持久性的连接,并进行双向...

2019-12-17 16:11:31 176

原创 Swarm初探

架构分析基本架构如上图所示,Swarm Node表示加入Swarm集群中的一个Docker Engine实例,基于该Docker Engine可以创建并管理多个Docker容器。其中,最开始创建Swarm集群的时候,Swarm Manager便是集群中的第一个Swarm Node。在所有的Node中,又根据其职能划分为Manager Node和Worker Node。manager nod...

2019-04-18 11:30:12 1038

原创 Docker网络模式

传统网络none网络host网络bridge网络集群网络

2019-04-01 15:24:52 159

原创 Docker镜像的存储机制

Docker pull流程docker发送image的名称+tag(或者digest)给registry服务器,服务器根据收到的image的名称+tag(或者digest),找到相应image的manifest,然后将manifest返回给dockerdocker得到manifest后,读取里面image配置文件的digest(sha256),这个sha256码就是image的ID{ ...

2018-12-20 16:16:15 2151

原创 Leetcode——股票类型题目总结

一,前言总结的题目如下:121,Best Time to Buy and Sell Stock122,Best Time to Buy and Sell Stock 2123,Best Time to Buy and Sell Stock 3188,Best Time to Buy and Sell Stock 4309,Best Time to Buy and Sell ...

2018-04-27 17:53:47 1474

原创 Go并发初探

1,前言在这里我们不再赘述进程和线程的同步方式、并行程序和并发程序的关系、亦或是多进程与多线程的开销等基础内容,直接切入Go语言的并发线程模型和内部实现。(1)多线程模型多线程模型即用户级线程和内核级线程的不同连接方式。① 多对一模型(M : 1)将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。此模式中,用户级线程对操作系统不可见(即透明)。优点:    这种模型的好处是线程上下文切...

2018-04-23 08:55:49 572

原创 授权和鉴权

1,前言在这里总结一下工作中遇到的鉴权和授权的方法① 固定token的方案通过在nginx或者代码中写死token,或者通过在限制外网访问的方式已来达到安全授权的方式② session方案分布式会话方案原理主要是将关于用户认证的信息存储在共享存储中。当用户访问微服务时,用户数据可以从共享存储中获取。③ 客户端token方案例如JWT,令牌在客户端生成,由身份验证服务进行...

2018-02-28 18:03:18 12643

原创 Get和Post的区别

一,简介Get和Post是超文本传输协议(HTTP)的两种方法:·GET - 从指定的资源请求数据。· POST -向指定的资源提交要被处理的数据(修改数据)。二,从广义上区分1,网络上有很多文章认为广义上GET和POST只是一个或两个TCP数据包的问题如:https://zhuanlan.zhihu.com/p/22536382,文章的作者认为而对于PO...

2018-01-25 19:18:48 155

原创 Golang小数精度问题

一,Golang浮点数存在一些问题1,两个浮点数相加减,可能不准确(1)相减x := 74.96y := 20.48b := x - yfmt.Println(b) //output: 54.47999999999999(2)相加var a = 0.6fmt.Println(a + 0.7) //output: 1.2999999999999998· 出现浮点数不精

2018-01-09 15:56:32 31971 1

原创 rabbitmq 发送方确认模式来确认投递——基于pika 0.10.0

一,网上和书上给的实例报错rabbitmq实战上曾经在上写了一个——带有确认功能的Hello World生产者但是这个代码实际上会报错的像这样TypeError: confirm_delivery() got an unexpected keyword argument 'callback'The issue is its using a BlockingCon

2016-11-08 20:07:15 4799

转载 柔性数组

柔性数组 柔性数组* 柔性数组即数组大小待定的数组 * C语言中结构体的最后一个元素可以是大小未知的数组 * C语言中可以由结构体产生柔性数组#include #include typedef struct _soft_array{ int len; int array[];}SoftArray;int main

2015-04-08 19:48:17 240

lxml-2.2.8.win-amd64-py2.7.exe

lxml-2.2.8.win-amd64-py2.7.exe

2016-08-25

pywin32-220.win-amd64-py2.7.exe

2016-08-25

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

TA关注的人

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