自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王佳宇的个人博客

吾生也有涯,而知也无涯 。以有涯随无涯,殆已!

  • 博客(150)
  • 资源 (1)
  • 收藏
  • 关注

原创 Redis RDB持久化

RDB持久化《Redis 设计与实现》Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。如下图所示一个包含三个非空数据库的Redis服务器,这三个数据库以及数据库中的键值对就是该服务器的数据库状态。因为Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不像办法将储存在内存中的数据库状态保存在磁盘里面,那么一旦服务器进程推出,服务器中的数据

2020-08-04 23:28:01 1201

原创 Redis整数集合记录

Redis整数集合

2020-06-27 15:58:04 437

原创 Redis 链表记录

Redis 链表《Redis设计于实现》链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。作为一种常用的数据结构,链表内置在很多高级编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表的底层实现。举个例子,一下展示的intege

2020-06-23 22:19:54 318

原创 Redis字典记录

字典字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构。在字典中,一个键可以和一个值进行关联(或者说将键映射为值),这些关联的键和值就称之为键值对。字段中的每个键都是独一无二的,程序可以在字典中根据键查找与之关联的值,或者通过键来更新值,又或者根据键来删除整个键值对,等等。字典作为一种数据结构内置在很多高级编程语言中,但Redis所使用的C语言并没有内置这种数据结构,因此Redis构建了自己的字典实现。字典在Redis中的应用十分广泛,比如Redis的数据库就是使用字

2020-06-22 15:54:59 264

原创 Redis 跳跃表记录

首先我们找到Context源码包:

2020-06-19 14:40:08 223

原创 Redis的过期键删除策略记录

过期键删除策略:定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的国旗时间来临时,立即执行对键的删除操作。惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除键,如果没有过期,就返回该键。定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。在这三种策略中,第一种和第三种为主动删除策略,而第二种则为被动删除策略。定时删除定时删除策略对内存是最友好的

2020-06-16 19:02:55 325

原创 Redis 使用最多的String 类型是怎么实现的

Redis 使用最多的String 类型是怎么实现的其实string不光是我们在redis中使用最多的类型,我们日常编程中的业务代码string也是跟我们打交道最多的类型,但是对于string为了方便使用同字符串在相同的map中算出相同的值,我们不得不将一个引用类型变成了一个类值类型。。。从而引发的问题就是每一个string都是一个全新的string,当然这里不讨论带有string池的实现方式。今天我们就来看看redis中是如何优雅快速的实现基础类型string。简单动态字符串SDS:举个栗

2020-06-12 22:43:30 968

原创 mysql 索引失效 笔记

记录一下索引在哪些情况下会失效必要知识:EXPlAIN一.二.三.四.五.六.七.八.九.十.

2020-05-23 16:27:03 730

原创 goland 20.1.1小技巧

golang 20.1.1小技巧磨刀不误砍柴工版本号: Year.Major.Minor 2020 1 1在命令行使用goland:使用过vscode的同学也肯定使用过来打开代码仓库code .这个功能goland也支持我们可以通过设置toolbox来打开该功能:在使用goland . 即可打开项目仓库 :在github直接打开项目(需要在浏览器内下载toolbox插件):直接clone项目:插...

2020-05-18 17:33:43 767

原创 使用go 制作自己的命令行工具

为了方便工作中一些经常进行的操作我们都会写成工具来方便使用,今天我们就用go来实现一个命令行工具。目的是在当前文件夹下build一个项目类似这种当然其中的go结尾文件都是自己加进去的:使用到的框架:github.com/urfave/cli/v2文档地址:https://github.com/urfave/cli/blob/master/docs/v2/manual.md效果图:按照文档中解释以及demo选择自己需要的功能,详情查看注释即可:main.go:p

2020-05-17 15:19:21 2131

原创 mysql 事务隔离级别笔记

Transaction Control Language 事务控制语言笔记事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。事务有单独单元的一个或多个sql语句组成,在这个单元中,每个mysql语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条sql语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事务开始以...

2020-05-06 13:57:15 251

原创 k8s Ingress service 内部网络初探

在k8s内部的网络流转还是比较有趣的,接下来我们来了解一下client 是如何通过ingress、service在到具体服务提供的pod。实验的deployment.yaml:kind: DeploymentapiVersion: apps/v1metadata: name: nginx-deploymentspec: replicas: 3 selector: ...

2020-04-30 23:00:08 1673

原创 golang Redis 分布式锁

参考:https://redis.io/topics/distlock代码:package internalimport ( "errors" "fmt" "github.com/garyburd/redigo/redis")type RedisLock struct { //保存连接 Conn *redis.Conn //生成随机value用于判断是否为自己上锁...

2020-04-11 17:42:49 739

原创 Zookeeper 四 分布式锁

是时候用我们之前学习的知识实践一波了!使用Zookeeper实现一个分布式锁,思路:利用带序号断开连接自动消失的特性来实现分布式锁,如果当前节点为最小节点则获取锁,否则监听上一个节点如果上个节点下线则获取锁,有点类似链表。只链接自己前面的节点,如果前面没有节点则自己为链表头。优点:可能大家用的最多的是redis分布式锁这个很好理解,但是有个缺点就是一定要客户端去拉取状态,如果不需要等待...

2020-04-09 22:34:10 619

原创 golang jenkins devops (二)

在golang jenkins devops (一)中我们已经将image push 到了docker hub 这一章我们将彻底实现自动化:第一步 代码push 自动发布:下载码云插件:

2020-04-06 14:26:40 472

原创 golang jenkins devops (一)

首先创建项目并上传至任意git 仓库为了演示jenkins ssh登录这里我创建的是 私有仓库:code:项目结构:Init.go:package Initimport ( "fmt" "github.com/jinzhu/configor")func Init(config configor.Config) { fmt.Println("Init")...

2020-04-05 22:00:08 981

原创 Zookeeper 三 代码测试

golang 代码测试:使用:"gozookeeper/internal"package internalimport ( "fmt" "github.com/samuel/go-zookeeper/zk" "time")type ZkUtil struct { conn *zk.Conn}func (zkUtil *ZkUtil) Init(servi...

2020-04-02 23:34:33 573

原创 Zookeeper 二 stat、listener

Stat结构体cZxid:创建节点的事物 id 每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事物ID。 事物ID是ZooKeeper中所修改总的次序。每个修改都有唯一的Zxid,如果zxid1小于zxid2,那么zxid1在zxid之前发生ctime: znode呗创建的毫秒数mzxid:z...

2020-03-30 23:25:13 243

原创 Zookeeper 一 基础知识以及简单命令

Zookeeper工作机制Zookeeper从设计模式角度来理解:是一个基于观察者模式的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察着的注册,一旦这些数据的状态发生变化,Zookeeper讲讲负责通知已经在Zookeeper上注册的那些观察者作出响应的反应。Zookeeper特点一个领导者(Leader),多个跟随者(Follower)组成的集群 集群中只要有半...

2020-03-29 23:16:25 733

原创 k8s测试十九 Jenkins 安装

在k8s集群中部署Jenkins:第一步创建 namespace:kubectl create ns devops第二步创建 sa:apiVersion: v1kind: ServiceAccountmetadata: labels: app: jenkins name: jenkins-admin namespace: devops---apiV...

2020-03-24 17:03:11 907

原创 k8s测试十八资源限制

资源限制基于podKubernetes对资源的限制实际上是通过cgroup来控制的,cgroup是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU和各种设备都有对应的cgroup。默认情况下,Pod运行没有CPU和内存的限制。这一位这系统中的任何Pod将能够像执行该Pod所在的节点一样,消耗足够多的CPU和内存。一般会针对某些应用的pod资源进行资源限制,这个资源限制...

2020-03-21 16:56:17 340

原创 k8s测试十七 Horizontal Pod Autoscaling

如果看过测试十六到这里我们已经具备了去实验HPA的条件了,没看过的可以去看一下!简介:Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 Replication Controller、Deployment 或者Replica Set 中的 Pod 数量。运行一个比较耗费资源的pod:kubectl run php-apache --imag...

2020-03-21 16:10:49 614

原创 k8s测试十六 部署Prometheus

文档地址:https://github.com/coreos/kube-prometheusgit 到本地:git clone https://github.com/coreos/kube-prometheus.gitcd到yaml文件目录:cd /kube-prometheus/manifests 修改svc为NodoPort可供外部访问:修改 grafana-s...

2020-03-21 00:04:30 604

原创 k8s测试十五 部署Dashboard

文档:https://github.com/kubernetes/dashboard?spm=5176.2020520152.0.0.7d1f16ddknWTPvhttps://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md以下操作文档中都有记录跟着傻...

2020-03-20 22:18:07 402

原创 k8s测试十四 Helm部署datadog

Helm官网提供的安装方官方安装文档:https://helm.sh/docs/intro/install/安装完毕后:给tiller配置权限:---apiVersion: v1kind: ServiceAccountmetadata: name: tiller namespace: kube-system---apiVersion: rbac....

2020-03-19 22:42:22 714

原创 k8s测试十三 集群调度 污点和容忍

Taint和Toleration节点亲和性,是pod的一种属性(偏好或硬性要求),它使pod被吸引到一类特定的节点。Taint则相反,它使节点能够排斥一类特定的pod。Taint和toleration互相配合,可以用来避免pod被分配到不合适的节点上。每个节点上都可以应用一个或多个taint,这表示对于那些不能容忍这些taint的pod,是不会被该节点接受的。如果toleration应用于...

2020-03-17 22:21:47 1367

原创 k8s测试十二 集群调度过程

测试硬策略NotIn:集群调度过程简介:Scheduler是Kubernetes的调度器,主要的任务是把定义的pod分配到集群的节点上。听起来非常简单,但有很多要考虑的问题:公平:如何保证每个节点都能被分配资源 资源高效利用:集群所有资源最大化被使用 效率:调度的性能要好,能够尽快地对大批量的pod完成调度工作 灵活:允许用户根据自己的需求控制调度的逻辑Sche...

2020-03-15 23:18:18 407

原创 k8s测试十一 PV

测试yaml:概念PersisitentVolyme(PV)是由管理员设置的存储,它是集群的一部分。就像节点是集群中的资源一样,PV也是集群中的资源。PV是Volume之类的卷插件,但具有独立于使用PV的Pod的生命周期。此API对象包含存储实现的细节,即NFS、iSCSI或特定于云供应商的存储系统。PersistentVolu...

2020-03-15 21:20:14 4306 2

原创 k8s测试十 Volume

Volume容器磁盘上文件的生命周期是短暂的,这就使得在容器运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态重新启动。其次在pod中同时运行多个容器时,这些容器之间通常需要共享文件。kubernetes中的volume抽象就很好的解决了这些问题。背景Kubernetes中的卷有明确的寿命--与封装它的pod相同,所...

2020-03-14 22:41:10 349 1

原创 k8s测试九 Secret

Secret 存在的意义Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret 可以以Volume或者环境变量的方式使用。类型:Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/sercrets/kubernetes.io...

2020-03-14 18:33:58 458

原创 k8s测试八 存储

configMapConfigMap功能在Kubernetes1.2版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap APi给我们提供了向容器中注入配置信息的机制,ConfigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。ConfigMap的创建:使用目录创建Secretvolume...

2020-03-14 01:01:30 400

原创 k8s 测试七 Ingress

Ingress官网:https://kubernetes.github.io/ingress-nginx/deploy/kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yamlkubectl ...

2020-03-08 18:10:29 1362

原创 K8s 测试六SVC

Service 的概念kubernetes Service 定义了这样的一种抽象:一个Pod的逻辑分组,一种可以访问他们的策略--通常称之为微服务。这一组Pod能够被Service访问到,通常是通过Label Selector。Service 能够提供负载均衡的能力,但是在使用上有以下限制: 只提供四层负载均衡能力,而没有7层功能,但有时我们可能需要更多的匹配规则来转发...

2020-03-08 00:07:09 1171

原创 K8s 测试五控制器

DaemonSet确保全部或者一些Node上运行一个Pod的副本。当有Nodo加入集群时,也会为它们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod。yaml:apiVersion: apps/v1 #版本号kind: DaemonSet #类型metadata: #元数据 na...

2020-03-06 23:43:45 350

原创 K8s 测试四控制器

ReplicationController RC用来确保容器应用的副本数始终保持在用户定义的副本书,即如果有容器异常退出,会自动创建新的pod来替代;而如果异常多出来的容器也会自动回收。在新版本的Kubernetes 中建议使用ReplicaSet来取代ReplicationControllerReplicaSet RS跟ReplicationController没有本质的不同,知...

2020-03-05 23:26:27 282

原创 k8s 测试三 Pod生命周期

检测探针 - 就绪检测:apiVersion: v1kind: Podmetadata: name: readiness-httpget-pod namespace: defaultspec: containers: - name: readiness-httpget-container image: wangyanglinux/myapp:v1 ...

2020-03-03 23:06:56 1094

原创 k8s 测试二 Pod Init

测试pod探测:init 模版:apiVersion: v1kind: Podmetadata: name: myapp-pod labels: app: myappspec: containers: - name: myapp-container image: busybox command: ['sh','-c','echo ...

2020-03-02 22:54:17 712

原创 k8s 测试一 简单命令测试

上一篇我们已经部署好了k8s集群:https://blog.csdn.net/weixin_40165163/article/details/104546284接下来我们测试一下是否可用:下面的操作均在master拉取一个测试image:docker pull wangyanglinux/myapp:v1运行:kubectl run nginx-deployment...

2020-03-01 16:55:02 1631

原创 k8s的部署以及开启ipvs

准备工作:https://blog.csdn.net/weixin_40165163/article/details/104526461当centos的环境准备好后,就可以开始部署k8s了首先设置k8s下载源cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbas...

2020-02-27 22:35:34 5490

原创 k8s部署的准备工作

必备: Centos7 服务器 or 虚拟机 需要可以连接外网。第一步更新系统:这里提供一个shell脚本:curl -O https://raw.githubusercontent.com/bboysoulcn/centos/master/centos.sh...

2020-02-26 23:31:25 1548

Alfred_3.7.1_946加强版command+空格

Alfred是一款屡获殊荣的macOS应用程序,通过热键、关键字、文本扩展等功能提高效率。搜索您的Mac和web,使用自定义操作来控制您的Mac会更高效。

2019-01-23

空空如也

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

TA关注的人

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