自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hugo_lei的博客

在这里,助力你快速成长

  • 博客(77)
  • 收藏
  • 关注

原创 基于windows WSL安装Docker Desktop,修改默认安装到C盘及默认下载镜像到C盘

基于windows WSL安装Docker Desktop,修改默认安装到C盘及默认下载镜像到C盘。

2022-09-03 13:31:00 1155 1

原创 Mac下通过brew安装多个版本的go并实现切换

mac下通过brew安装多个版本的go并实现切换

2022-08-23 19:33:34 2236

原创 k8s使用的iptables,具体原理是什么?一学就会

不是我吹牛,真的一学就会。针对kube-proxy使用的iptables技术,本文图文并茂、深入浅出的解释了netfilter,rule,table,chain等,看似高深的概念,你现在也能完全掌握。

2022-08-05 16:11:38 1990

转载 要面试了,你还没有掌握MySQL join的原理?

MySQL8开始新增hash join,基本原理是对于等值join条件key,将驱动表的key计算hash值后放入内存hash表内,然后遍历被驱动表,并在hash表中查找符合join的数据。下文仅介绍了3种nested loop join。1. 使用join 是 MySQL 用来进行联表操作的,用来匹配两个表的数据,筛选并合并出符合我们要求的结果集。join 操作有多种方式,取决于最终数据的合并效果。比如有:left join,保留左表所有数据,左边没有数据设置为 n.

2021-08-04 11:59:23 346

原创 什么是伟大的企业?

巴菲特语录伟大企业的定义如下:在25年或30年仍然能够保持其伟大企业地位的企业。以有限的语文知识来直观的理解伟大企业的定义:首先是伟大的企业然后在25年或30年仍然能够保持其伟大企业地位的企业。那到底什么就是伟大的企业呢?...

2021-07-27 10:35:05 516

原创 go最佳实践:go模拟spring的依赖注入

背景使用过java的spring的依赖注入的朋友,一定会觉得由系统来实现单例并注入到要使用的地方,这个过程是极度舒适的。博主从java转go后,在某些场景的项目里,依然想使用类似spring的依赖注入的功能,但是go并没有这方面的框架支持。从博主使用go的体验来看,go是一门简洁且非常注重实用的语言。由于工作原因,博主看到一些老项目的代码里,对go的使用基本就是面向过程编程,连面向接口编程的思想都没有体现。在go中使用单例的两种常见方式全局变量例如包级别的全局变量,声明时直接初始化var

2021-07-26 17:48:28 962

原创 企鹅寨 is what?

企鹅寨未来有一个寨子,会叫企鹅寨。企鹅寨里住着一群企鹅。他们一起捕食,一起烤鱼,一起打雪仗。在他们之间还发生了一些其他的,或有趣,或二B,或严肃,或令人愤怒的事情。企鹅寨故事会接下来,你将会看到一系列关于企鹅寨的故事。来吧,朋友们。...

2021-07-20 11:03:23 142

原创 Mac docker x509: certificate signed by unknown authority

原因:https证书拉取私有镜像仓库的证书echo -n | openssl s_client -showcerts -connect xxxxxx:8080 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /Users/xxxx/xx.crt证书放在/Users/xxxx/xx.crt里加载证书sudo security add-trusted-cert -d -r trustRoot -k

2021-07-08 20:56:08 1715

原创 go踩坑指南:修改slice里的struct类型的元素不生效?

go踩坑指南:修改slice里的struct类型的元素不生效?show the codeslice的元素内容被修改了吗?执行A,也即modSliceIndex函数,元素内容被修改执行B,也即modSlice函数,元素内容没有被修改采坑指南值传递slice数据类型,包含指向底层数组的指针range的原理show the codeimport "fmt"type MyS struct { name string}func MySliceModify() { s := make([]MyS,

2021-07-01 17:01:12 1394

原创 k8s deployment报错Invalid value:found a tab character that violates indentation

# deployments.apps "view-lib-task-server" was not valid:# * : Invalid value: "The edited file failed validation": [yaml: line 44: found a tab character that violates indentation, invalid character 'a' looking for beginning of value]#

2021-05-14 13:33:29 4718

转载 一文带你了解学习Istio的正确姿势

1 什么是 Istio?官方对 Istio 的介绍浓缩成了一句话:An open platform to connect, secure, control and observe services.翻译过来,就是”连接、安全加固、控制和观察服务的开放平台“。开放平台就是指它本身是开源的,服务对应的是微服务,也可以粗略地理解为单个应用。中间的四个动词就是 Istio 的主要功能,官方也各有一句话的说明。这里再阐释一下:连接(Connect):智能控制服务之间的调用流量...

2021-03-22 16:28:20 491

原创 Prometheus核心概念:你是如何在项目中使用Summary类型的Metric的?

目录1 背景2 微服务项目中如何监测请求耗时呢?3 使用Prometheus的Summary类型来统计HTTP请求耗时3.1 实践:如何使用Summary类型Metric?3.2 源码分析:Summary是如何计算分位数的?首先看Summary的定义再看Summary的实现如何计算分位数?4 Summary就这么简单?如果你对上述这些问题有答案,欢迎留言探讨。1 背景在微服务项目中,我们通常需要监测客户请求的耗时,进而掌握系统整体的性能情况。若发现某.

2021-02-08 12:30:21 5318 2

原创 Prometheus核心概念:一图了解Counter和Gauge两种数据指标类型的区别

目录1 背景2 何为Counter类型?2.1 Counter定义3 何为Gauge类型?3.1 Gauge定义4 Counter和Gauge的对比1 背景Prometheus整体架构分为Server端和Exporter端,而Exporter通常是基于官方的SDK开发(例如Go SDK)。这里要明确一个概念:数据指标类型只是Client端的一个概念,用于维护Metric的生产,以方便在业务上有所区分。而Server端是不区分数据类型的,因为所有的数据都是一种格式.

2021-02-02 21:01:03 18409 2

原创 MySQL Group Replication MGR 启动报错,Error in `/xxx/mysql/bin/mysqld‘: malloc(): memory corruption:

1 背景在物理机上装了k8s 在物理机上继续装MySQL 启动MySQL MGR 报错如下:*** Error in `/data/uncle/mysql/bin/mysqld': malloc(): memory corruption: 0x00007fd300026390 ***======= Backtrace: =========/lib64/libc.so.6(+0x82aa6)[0x7fd46dac9aa6]/lib64/libc.so.6(__libc_malloc+0x4

2021-01-14 17:08:23 590

原创 nginx静态资源文件无法访问,403 forbidden错误

问题浏览器访问nginx,然后nginx访问静态文件,结果提示403原因在nginx.conf的配置中,第一行 user nobody;但是静态文件都是root的解决修改nginx.conf配置,第一行改为user root;./nginx -t // 检查配置./nginx -s reload // 重启nginx...

2020-11-27 17:12:29 641

原创 [ERROR] sarama.NewSyncProducer error:kafka: client has run out of available brokers to talk to (Is y

[ERROR] sarama.NewSyncProducer error:kafka: client has run out of available brokers to talk to (Is your cluster reachable?)这个提示里线索比较明显:Is your cluster reachable?也就是:是否能连到集群?出现此问题的原因kafka集群并没有开启user password连接,但是客户端连接的时候使用了user password解决方案..

2020-11-27 10:45:27 1921

原创 职场中接手了老项目,如何做性能优化?

作为一名程序员,在工作中大概率都会遇到接手老项目的情况。跳槽从一个坑跳到另一个坑,接手老项目 同事内部活水了,他手上的项目都交接给你 团队“核心”成员要上新项目or重点项目了,团队人力资源调整,“核心”成员的老项目交接给你维护。老项目谁接谁知道,不是坑就是泪。前人新做的项目,拿了绩效+晋升,完事了抹抹嘴,扔给你。别人吃完肉了,到你这,你还能喝到汤吗?别说喝汤了,项目里的坑你都不知道在哪里,搞不好哪天出个问题,责任全在你这。兄弟,既然工作中避免不了接手老项目,那咱就得思考怎么做老项目

2020-11-01 18:52:12 1124

原创 illegal base64 data at input byte 37

golang,base64.StdEncoding.DecodeString解码时报错:illegal base64 data at input byte 37可能的原因一:要decode的字符串不是encode后的可以检查下base64 encode后的字符串是什么,看是否和要decode解码的一样。

2020-10-14 18:02:21 4154

原创 k8s原生工作流引擎Argo——快速开始

快速开始要查看Argo的工作原理,您可以安装它并运行简单工作流程和使用工件的工作流程的示例。首先,您需要一个Kubernetes集群和kubectl设置。安装Argo工作流要快速入门,您可以使用快速入门清单,该清单将安装Argo Workflow以及一些常用组件:注意:可能需要代理才能访问https://raw.githubusercontent.comkubectl create ns argokubectl apply -n argo -f https://raw.gi

2020-09-20 21:37:58 2925

原创 如何优雅地实现定时任务?go定时任务库cron详解

目录可管理多个定时任务默认上次任务没运行完,下次任务依然会运行(任务运行在goroutine里相互不干扰)支持上次任务未执行完,下次任务不启动cron是一个定时任务管理框架,可以将服务中所有的定时任务统一管理起来。cron代码库:https://github.com/robfig/cron可管理多个定时任务多任务代码示例:c := cron.New(cron.WithSeconds())spec := "*/5 * * * * *" // 每隔5s执行一次,cron格.

2020-09-20 20:33:21 3150

原创 Docker Desktop for Mac设置代理proxy,加速镜像拉取

由于某些原因,国内拉取docker image速度极慢,甚至直接不通。使用Docker Desktop for Mac时,拉取镜像也会遇到相同的问题,因此需要配置代理来解决。在图中指定位置配置好自己的代理就可以了。试试看,代理是否生效?docker run -d -p 80:80 docker/getting-started...

2020-09-11 11:13:56 12645

转载 Skywalking 的字节码注入技术到底是啥?

Skywalking 使用的是Java 动态字节码技术对 Debug 的好奇初学 Java 时,我对 IDEA 的 Debug 非常好奇,不止是它能查看断点的上下文环境,更神奇的是我可以在断点处使用它的 Evaluate 功能直接执行某些命令,进行一些计算或改变当前变量。刚开始语法不熟经常写错代码,重新打包部署一次代码耗时很长,我就直接面向 Debug 开发。在要编写的方法开始处打一个断点,在 Evaluate 框内一次次地执行方法函数不停地调整代码,没问题后再将代码复制出来放到 IDEA 里,

2020-07-21 19:39:10 3261 1

原创 如何安装 Helm?Helm 2.16.0版本安装,MacOS

Helm 官网指导:https://helm.sh/docs/intro/quickstart/下载安装包下载地址:https://github.com/helm/helm/releases下载后解压,压缩包里包含如下文件将可执行文件 helm 添加到 pathmv helm /usr/local/bin/验证安装$ helm versionClient: &version.Version{SemVer:"v2.16.9", GitCommit:"8ad.

2020-07-15 16:31:57 1663

转载 简单!自己打包的 docker镜像,如何部署到本地 k8s 上?

前提:k8s 内部使用的 docker 和本地安装的 docker daemon 是两回事,这就导致一个问题,我在本地打包的 docker image,如何在 k8s 里部署呢?答案是:使用 docker 本地仓库,将 docker image push 到本地仓库,然后修改 k8s 为从本地仓库拉取 image。在实际使用docker的过程中,因为产品主要使用了微服务的架构,会有很多不同的服务镜像,将生成的镜像放到docker-hub上是不合适的。而且为了便于后续的自动化运维和部署...

2020-07-02 21:52:13 11405

转载 Service Mesh 是如何做到对业务代码无侵入的透明代理?Istio 中通过 iptables 做流量拦截

目录传统微服务MicroService的问题:侵入式 Client 端服务发现+LoadBalanceClient 端服务发现+负载均衡Istio 是如何实现流量劫持的?要做哪些事?透明代理SidecariptablesInit 容器问题:如何判断目标服务的类型?Cluster IP传统微服务MicroService的问题:侵入式 Client 端服务发现+LoadBalanceClient 端服务发现+负载均衡传统微服务,服务发现+负载均衡的代码,.

2020-06-24 12:23:36 1631

转载 最全面最简洁的 LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

版权声明:本文为CSDN博主「chenhuyang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639目录一、LVS简介二、三种工作模式的解析。1、基于NAT的LVS模式负载均衡2、基于TUN的LVS负载均衡3、基于DR的LVS负载均衡三、LVS负载均衡调度算法1.轮询调度2.加权轮询调度3...

2020-06-17 10:41:19 824

原创 CNCF:kubernetes本地环境搭建,操作系统Ubuntu 18.04 LTS,安装工具minikube,运行环境Docker

在 Ubuntu 上使用 snap 安装 kubectl切换到 snap 用户并运行安装命令:

2020-06-14 15:20:34 1357

转载 应用性能管理APM巅峰对决:skywalking P.K. Pinpoint

转自:http://skywalking.apache.org/zh/blog/2019-02-24-skywalking-pk-pinpoint.html作者:王振飞, 写于:2019-02-24说明:此文是个人所写,版本归属作者,代表个人观点,仅供参考,不代表skywalking官方观点。说明:本次对比基于skywalking-6.0.0-GA和Pinpoint-1.8.2(截止2019-02-19最新版本)。另外,我们这次技术选型直接否定了Zipkin,其最大原因是它对代码有侵入性,CA...

2020-06-10 20:15:00 1938 1

原创 程序员日常:男程序员手腕上一般戴什么?程序员的第一只手表

据我的观察,程序员手腕上一般会带的物品如下:手链:绳艺 皮艺 金属制作 手串:菩提子,小叶紫檀等木制 手环:小米,华为等 智能手表:华为,佳明,松拓,小米,三星等智能手表 Apple Watch:3,4,5 Casio:G-SHOCK 机械手表:天梭,MIDO,浪琴,爱彼,沛纳海,欧米茄我购入的第一枚机械手表,精工PROSPEX...

2020-06-04 20:00:15 4479 13

转载 什么是MTU?为什么MTU值普遍都是1500?

原文地址:https://yq.aliyun.com/articles/222535感谢作者!什么是MTUMaximum Transmission Unit,缩写MTU,中文名是:最大传输单元。这是哪一层网络的概念?从下面这个表格中可以看到,在7层网络协议中,MTU是数据链路层的概念。MTU限制的是数据链路层的payload,也就是上层协议的大小,例如IP,ICMP等。OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终.

2020-06-03 19:58:30 4567

原创 Elasticsearch:ES 的近实时到底是因为什么?一文带你读懂 ES 的 translog refresh flush 原理

这篇文章主要介绍Elasticsearch的索引工作机制,探究它近实时查询的原因。探究它是如何利用translog来保证数据的安全,以及我们在生产环境中如何优化translog的参数来最大化性能。主要会介绍到elastic中常见的2个操作:refresh和flush,以及这2个接口是如何保证数据能够被检索到的。WAL translog 数据持久化数据 fsync 落盘我们把数据写到磁盘时,通常是先将数据写到操作系统的虚拟文件系统里,也既内存中,然后需要调用fsync才能把虚拟文件系统里的数据刷到磁盘

2020-06-03 10:58:09 4187 1

原创 Idea SpringBoot, Disconnected from the target VM, address: 127.0.0.1:56577, transport: socket

Idea debugSpringBoot 项目时报错Disconnected from the target VM, address: ‘127.0.0.1:56577’, transport: ‘socket’解决方案勾选:Include dependencies with “Provided” scope

2020-05-29 11:41:20 10320 1

原创 面试一点都不难:Redis Cluster 模式分析,哈希槽,Cluster 模式高可用, 一致性,客户端 JedisPool,集群扩容

文章目录1 Cluster 模式与主从模式的区别2 Cluster 模式下节点数据的划分3 Cluster 模式至少需要三个主节点4 Cluster 模式集群高可用5 Cluster 模式下单 key 的操作5.1 简单客户端 redis-cli 下操作5.1.1 为什么是 client执行redirect,而不是server帮忙将操作转发到正确的节点?5.2 Java JedisPool 下的操作6 Cluster 模式下multi keys 的操作6.2 使用 hash tag 控制key 对应的 sl

2020-05-27 21:33:25 1339

原创 gRPC java 实战:通过 maven 插件自动根据 proto 文件生成 java 代码

问题:gRPC 官方文档不够详细在调研 gRPC java 时遇到一个问题,根据官方文档,没有办法一次性就把示例跑成功。而是花了整整两天时间,翻了各种文档才搞清楚,proto compiler、maven、gRPC-java 这几个之间的关系。现在提供一个端到端的,能够保证一次性就跑起来的 gRPC-java 示例程序。通过 maven 构建 java 工程java version: 1.8gRPC version: 1.29.0pom.xml 核心配置部分pom核心依赖<depen

2020-05-13 15:22:24 4628

原创 kafka 异常:org.apache.kafka.common.errors.UnknownTopicOrPartitionException: This server does not host

org.apache.kafka.common.errors.UnknownTopicOrPartitionException: This server does not host this topic-partition。producer 向一个之前不存在的 topic 写数据,因此时 topic 正在创建中 producer 就发送了数据,因此 topic 不存在。这是一个可重试异常,也既等一会再发送数据就可以了,因此 producer 需要加入重试 retry 逻辑。

2020-05-06 17:21:56 17964 2

原创 大厂面试必会:AQS LockSupport Unsafe之间的关系

文章目录AQS与UnsafeAQS 与 LockSupportLockSupport 与 UnsafeUnsafe park unpark 原理LockSupport 与 wait notify 的区别AQS与UnsafeAQS 中对 Unsafe 的使用,主要是 CAS 操作。例如:/*** CAS head field. Used only by enq.* 入队时 CAS 修改队...

2020-04-28 15:08:25 1157

原创 程序员如何创新?逆工程师思维

这里写自定义目录标题什么是工程师思维?工程师思维是保守倾向工程师思维阻碍创新逆工程师思维:接受不确定性什么是工程师思维?在 code 时,为了保证程序的健壮性,我们要全面思考各种可能的异常,并针对每种异常设计对应的处理逻辑。例如 catch 异常,参数合法性校验等。若有一种异常我们没有想到,则程序在一定条件下就会报错,导致服务可用性降低。所谓工程师思维,就是把各种极端情况,各种异常都想到并...

2020-04-27 15:39:30 1748

空空如也

空空如也

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

TA关注的人

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