- 博客(52)
- 收藏
- 关注
原创 深入理解GO语言——GC垃圾回收二
书接上回,无论怎么优化,Go V1.3都面临这个一个重要问题,就是mark-and-sweep 算法会暂停整个程序。Go是如何面对并这个问题的呢?接下来G V1.5版本 就用 三色并发标记法 来优化这个问题那么Go是如何解决标记-清除(mark and sweep)算法中的卡顿(stw,stop the world)问题的呢?我们后续继续总结。
2024-04-07 16:09:16
786
1
原创 深入理解GO语言之GC垃圾回收
《深入理解Go语言》-GC全场景分析,关于以下知识总结,进行分享垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的内存对象,让出存储器资源。
2024-04-07 15:45:48
1509
原创 K8s 是如何完成调度和权重调整?
kube-scheduler作为 K8s 集群的默认调度器,它监听(watch机制)kube-apiserver,查询还未调度的 pod,根据调度策略将 pod 调度至集群内最适合的Node。提示:以下是本篇文章正文内容,下面案例可供参考。
2024-01-09 20:27:11
1752
3
原创 获取热门电影算法
功能#2:获取热门电影为我们的“Netflix”项目实现“获取热门电影”功能。我们将介绍以下内容描述解决方案复杂性措施时间复杂度空间复杂度描述#现在,我们需要建立一个标准,以便将来自多个国家的顶级电影组合成一个单一的顶级电影列表。为了扩展,内容搜索以分布式方式执行。每个国家/地区的搜索结果在单独的列表中生成。给定列表的每个成员都按受欢迎程度排名,1最受欢迎和受欢迎程度随着排名数字的增加而下降。假设以下标题由提供的 ID 表示:电影映射到他们的行列我们将得到n 个列表,这些列表都按受
2023-09-26 15:00:28
312
原创 在Golang中依赖注入-wire篇
实现各struct的工厂函数,wire称之为provider在wire.go中利用函数签名和函数体中调用wire.Build描述一个struct的所有依赖,此函数被称为 injector执行wire命令,会生成wire_gen.go 其中包含和injector签名相同的函数,函数的内容为构建的相关依赖并组合使用wire_gen.go中的函数创建我们的实例除了基础用法之外,还有很多高级用法,例如绑定接口、绑定值,来实现面向接口编程和单例模式,此部分可以参考官方文档。
2023-09-25 18:34:27
2642
原创 使用Gorm动态更新数据表中的字段
当使用API 更新数据表中的记录时,会存在只需要更新部分字段的需求。这里我使用了Gin 构建API, 通过Gorm进行数据表的操作。
2023-09-16 17:57:18
659
原创 etcd watch 机制源码解析——客户端篇
下图是本文讨论内容的目录树结构:提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2023-09-16 17:51:19
383
原创 快速理解进程、线程、协程的概念,它们的区别和共同点,以及应用场景。
深入理解:子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。这里的a,b,c就是线程,也就是说线程是共享了进程的上下文环境,单核任务中划分更为细小的CPU时间段。实质上的理解:——先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。
2023-03-27 17:16:51
894
原创 容器运行时runc
Docker引擎——详解docker开始发布时:有两个核心组件:LXC 和 docker daemonDocker daemon 是一个单一的二进制文件,包含:Docker客户端、Docker API、容器运行时、镜像构建等LXC提供了命名空间(Namespace)和控制组(CGrouop)等基础工具的操作能力。摆脱LXCDocker公司开发了Libcontainer的自研工具,来代替LXCLIBcontainer可基于不同内核为Docker上层提供必要的容器交互工具。在docke
2022-06-20 18:56:08
376
转载 Clear Read-Only Status
文章目录前言一、问题处理?前言Pycharm 问题:Clear Read-Only Status开发工具 git 人工智能一、问题处理?用的是ubuntu系统,一直在普通用户模式下打开Git下建的项目,今天运行神经网络程序时,由于有一个cudnn错误,必须要在sudo模式下才不会报错,所以用sudo试着打开了pycharm,发现是完全另一个pycharm,原先界面设置都没有了,发现在root模式和普通模式下pycharm的配置不一样,应该是有两个配置文件,一个属于普通用户模式,一个属于root
2022-05-19 17:50:45
1752
原创 XXL-Job Docker部署
文章目录一、环境准备二、拉取镜像三、启动数据库并执行初始化脚本四、启动xxl-job-admin登录验证一、环境准备服务器IP:192.168.0.1操作系统:centosDocker:Docker version 19.03.5二、拉取镜像docker pull xuxueli/xxl-job-admin:2.1.2docker pull mysql:5.7.28三、启动数据库并执行初始化脚本docker run -d -p 3386:3306 --name mysql -e MYSQ
2022-05-03 16:50:08
3801
1
原创 docker学习
文章目录@[TOC](文章目录)一、docker发展之路二、落后的旧时代1.虚拟机的不足2.容器3.Linux容器4.Windows 容器三、运行中的容器共享宿主机的内核一、docker发展之路容器为什么会出现容器的作用容器的应用场景二、落后的旧时代曾经win和linux没有响应的技术来保证在一台服务器上稳定而又安全的运行多个应用1.虚拟机的不足缺点就是依赖其专用的操作系统(OS),OS会占用额外的CPU,RAM和存储。虚拟机启动比较慢,可移植性差2.容器容器模型与虚拟机
2022-05-03 16:25:57
983
原创 一键部署k8s
文章目录一、一键安装docker二、一键部署k8s三、一键安装kubectl一、一键安装docker//安装docker yum -y install docker//运行dockersystemctl start docker//查看docker状态 systemctl status dockerdocker状态二、一键部署k8s//下载minikube curl -LO https://storage.googleapis.com/minikube/releases/la
2022-03-31 18:17:57
2579
原创 SQL调优
文章目录前言一、SQL优化索引的弊端索引的优势二、索引1.索引的分类2.创建索引2.SQL性能问题总结前言SQL编写过程:select dinstinct from join … on … where… group by … having … order bySQL解析过程:from … on … join … where… group by… having …select dinstinct …order by提示:以下是本篇文章正文内容,下面案例可供参考一、SQL优化
2022-03-31 17:58:47
978
原创 GoLang panic 用法
文章目录一、Go panic用法二、recover:三、偶尔的 panic 是必要的Go 中 panic 恢复的限制条件一、Go panic用法Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下
2022-01-10 13:46:43
1026
原创 根据docker搭建rancher
文章目录一、先在dashboard上创建机器二、登录机器1.引入库一、先在dashboard上创建机器然后点击创建实例二、登录机器1.引入库[root@host-192-168-0-65 ~]# ssh root@192.168.0.65The authenticity of host '192.168.0.65 (192.168.0.65)' can't be established.ECDSA key fingerprint is SHA256:UCKaEWbMMQu9j9fr7
2021-12-16 15:57:10
989
原创 GO面试题
文章目录一、go中,new 和 make 的区别二、go中,printf()、Sprintf()、Fprintf()函数的区别用法是什么?三、go中数组与切片的区别3.1 数组3.2 切片四、go基本命令五、go 语言中的协程六、 进程、线程、协程之间的区别一、go中,new 和 make 的区别new 的作用是初始化一个指向类型的指针(*T)new 函数是内建函数,函数定义: func (Type) *Type使用 new 函数来分配空间。传递给 new 函数的是一个 类型,不是一个值。返回值
2021-11-17 10:05:48
377
原创 HTTP状态码汇总
文章目录前言正文1××: 信息状态码2××: 成功状态码3××: 重定向状态码4××: 客户端错误状态码5××: 服务端错误状态码前言http 状态码可以让我们很方便的了解到所请求的所在状态。所以有必要总结一下。HTTP 状态码总分为五类:1 开头:信息状态码2 开头:成功状态码3 开头:重定向状态码4 开头:客户端错误状态码5 开头:服务端错误状态码正文1××: 信息状态码状态码含义描述100继续初始的请求已经接受,请客户端继续发送剩余部分101切换
2021-11-02 16:52:03
821
原创 StorageClass
文章目录前言一、创建二、新建三、测试前言PV和PVC都是静态的,什么意思呢,就是如果我们要使用一个PVC 的话就必须要手动去创建一个 PV ,这种方式在很大程度上并不能满足我们的需求,比如我们有一个应用需要对存储的并发度要求比较高,而另外一个对读写速度有要求比较高,特别是对于StatefulSet 类型的应用简单的来使用静态的 PV 就很不合适,这种情况下我们要用到动态 PV,就需要 StorageClass。一、创建要使用 StorageClass,我们就得安装对应的自动配置程序,比如我们使用的
2021-10-28 09:26:12
284
原创 Kubernetes之Informer机制
文章目录一、Index二、DeltaFIFO三、Reflector四、Controller五、Informer六、Work Queue代码示例:通过informer 采集 event 并存入 ESKubernetes是典型的 server-client 架构,etcd存储集群的数据信息,apiserver 作为统一的操作入口,任何对数据的操作都必须经过apiserver。客户端通过ListAndWatch 机制查询apiserver,而informer 模块则封装了 List-Watch整体架构大
2021-10-13 17:12:08
612
原创 Kubernetes之RBAC
文章目录前言一、RBAC API 对象二、创建一个只能访问某个namespace的用户二、使用步骤1.引入库2.读入数据总结前言RBAC 使用rbac.authorization.k8s.io API Group 来实现授权决策,允许管理员通过 Kubernetes API 动态配置策略,要启动RBAC,需要在 apiserver 中添加参数 --authorization - mode - RBAC,如果使用 kubeadm 安装的集群,1.6版本以上都默认开启了 RBAC, 可以通过查看Maste
2021-10-08 10:59:32
322
原创 Service
文章目录一、Service二、三种 IP三、定义 Service四、kube-proxy五、Service 类型NodePort 类型六、ExternalName一、ServicePod 的生命是有限的,死亡之后是不会复活的。但是RC 和 Deployment 可以用来动态的创建和销毁 Pod。尽管每个 Pod 都有自己的 IP 地址,但是如果 Pod 重新启动了的话那么他的 IP 很有可能也就变化了,这就会带来一个问题:比如我们有一些后端的 Pod 的集合为集群中的其他前端的 Pod 集合提供 AP
2021-09-27 17:14:15
133
原创 Job和 CronJob 的使用
文章目录一、Job 和CronJobJobCronJob一、Job 和CronJob我们在日常生活中经常会遇到一些需要进行批量数据处理和分析的需求,当然也会按时间来进行调度的工作,在我们 Kubernetes 集群中为我们提供 Job 和 CronJob 两种资源对象来应对我们的这种需求。Job我们用 Job 这个资源对象来创建一个任务,我们定一个 Job 来执行一个倒计时的任务,定义 YAML 文件:apiVersion: batch/v1kind: Jobmetadata: name
2021-09-24 16:58:34
472
1
原创 Pod 自动扩缩容
文章目录Pod 自动扩缩容Pod 自动扩缩容我们可以手动实现 Pod 的扩缩容,但是如果业务请求量很大的时候,就很麻烦了,所以我们需要去实现自动扩缩容。如果 Kubernetes 系统能够根据 Pod 当前的负载的变化情况来自动的进行扩缩容就好了,因为这个过程本来就是不固定的,频繁的发生,所以手动实现扩缩容是不现实的。Kubernetes 为我们提供了一个资源对象: Horizontal Pod Autoscaling (Pod 水平自动伸缩)简称 HPA 。HPA通过监控分析 RC 或者 Depl
2021-09-23 16:07:39
382
原创 Deployment的使用
文章目录一、使用二、创建三、滚动升级四、回滚Deployment一、使用之前我们学习了 Replication Controller 和 ReplicaSet 两种资源对象, RC 和 RS 的功能基本上是差不多的,唯一的区别就是 RS 支持集合的 selector 。我们也学习到了用 RC /RS 来控制 Pod 副本的数量,也实现了滚动升级 Pod 的功能,现在好像一切都在完美运行,但是我们之前也提到了推荐使用 Deployment 这种控制器了,而不是我们之前的 RC 或者 RS。没有对比就没
2021-09-22 16:15:05
560
原创 使用Replication Controller、Replica Set 管理 Pod
文章目录一、使用Replication Controller、Replica Set 管理Pod二、Replication Controller(RC)三、ReplicaSet (RS)一、使用Replication Controller、Replica Set 管理Pod我们之前是学习的Pod 的一些基本使用方法,而且我们都是直接来操作 Pod,假如我们现在有一个 Pod 正在提供线上的服务,我们可能遇到以下场景:某次运营活动非常成功,网站访问量突然暴增运行当前 Pod 的节点发生故障了, P
2021-09-18 11:25:06
222
原创 初始化容器
文章目录一、Init Container一、Init Container上次学到容器的健康检查的两个探针: liveness probe(存活探针)和 readiness probe (可读性探针)的使用方法,我们说在这两个探针是可以影响容器的声明周期,包括我们之前提到的容器的两个钩子函数 PostStart 和 PreStop。今天给大家介绍的是 Init Container(初始化容器)。Init Container就是用来做初始化工作的容器,可以是一个或者多个,如果有多个的话,这些容器会按定
2021-09-17 10:35:33
954
原创 Pod健康检查
文章目录一、健康检查一、健康检查Pod中容器的声明周期的两个钩子函数, PostStart 与 PreStop,其中, PostStart 是在容器创建后立即执行的,而 preStop 这个钩子函数则是在容器终止之前执行的,除了上面两个钩子函数之外,还有一项配置会影响到容器的生命周期,那就是健康检查的探针。在 Kubernetes 集群中,我们可以通过配置 liveness probe(存活探针)和 readingess probe(可读性探针)来影响容器的生存周期* kubelet 通过使用 l
2021-09-16 15:12:08
1292
原创 YAML文件
文章目录前言一、YAML基础MapsLists使用YAML创建Pod创建pod前言一、YAML基础它的基本语法规则如下:大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格键缩进的空格数目不重要,只要相同层级的元素左对齐即可# 表示注释,从这个字符一直到行尾,都会被解析器忽略在Kubernetes中,只需要了解俩种结构类型就行了ListsMaps也就是说,你可能会遇到Lists的Maps和Maps的Lists等等但是只需要掌握这俩种就够了MapsMap
2021-09-15 15:17:23
154
原创 kubernetes基本概念与组件
文章目录一、基本概念组件通信一、基本概念Kubernetes 中的绝大部分概念都抽象成 Kubernetes 管理的一种资源对象,下面我们一起学习一些资源对象:Master:Master 节点是 Kubernetes 集群的控制节点,负责整个集群的管理和控制。Master 节点上包含以下组件:kube-apiserver:集群控制的入口,提供HTTP REST 服务kube-controller-manager: Kubernetes集群中所有资源对象的自动化控制中心kube-schedul
2021-09-09 09:13:21
562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人