自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猴子哥哥的博客

学习交流

  • 博客(262)
  • 资源 (2)
  • 收藏
  • 关注

原创 工作七年经验总结

工作七年经验总结

2023-01-20 15:06:19 1615

转载 k8s client-go 避坑指南

k8s client-go 踩坑、优化

2023-01-12 23:28:53 75

转载 k8s限流机制

使用client-go操作k8s性能优化

2023-01-03 23:31:07 61

原创 分辨率、帧率和码率三者之间的关系

分辨率、帧率、码率

2022-10-15 08:53:14 1413

转载 Mac的环境变量配置文件zsh与bash

一、什么是shell?shell 单词的本意是“壳子”,在计算机领域一样可以理解为机器外面的一层壳,目的是进行用于人机交互,本质上是命令解释器。总结一下就是:只要是人与电脑之间交互的接口,就可以称为 shell。二、shell有哪些?1、zsh很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。2、shsh的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为

2022-05-25 23:10:07 4493

转载 golang yaml与json相互转化

原文链接:https://github.com/ghodss/yamlpackage mainimport ( "fmt" "github.com/ghodss/yaml")func main() { j := []byte(`{"name": "John", "age": 30}`) y, err := yaml.JSONToYAML(j) if err != nil { fmt.Printf("err: %v\n", err) return } fmt.Println

2022-04-18 21:41:47 1052

转载 git cherry-pick 冲突解决

cherry pick1、作用:把A分支的commit同步更新(提交)到B分支2、使用步骤1)git checkout B2)git cherry-pick -n [A分支中的commitId]3)git status 查看是哪些文件发生冲突(红色的为有冲突的文件)4)解决冲突5)git add 这些文件(git add相当于标记为已解决)6)接下来可以继续cherry pick下一个需要同步的commit,如若不继续,即可在B分支提交同步转自:https://blog.csdn.net

2022-03-23 23:45:07 2356

转载 在 macOS 系统上安装和设置 kubectl

转自 https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration

2022-03-23 23:37:07 1516

原创 使用kubeadm安装Kubernetes

一、环境信息1、操作系统:CentOS 7.62、master节点:172.26.167.1383、worker节点:172.27.192.168,172.26.167.1394、docker版本:18.06.35、kubelet版本:1.15.06、kubeadm版本:1.15.07、kubectl版本:1.15.0二、所有节点(master和worker)1、检查操作系统1)cat /etc/redhat-release CentOS Linux release 7.6.1810

2022-03-13 22:23:18 1988

转载 kubernetes调度之污点与容忍

  NodeAffinity节点亲和性,是Pod上定义的一种属性,使Pod能够按我们的要求调度到某个Node上,而Taints则恰恰相反,它可以让Node拒绝运行Pod,甚至驱逐Pod。  Taints(污点)是Node的一个属性,设置了Taints(污点)后,因为有了污点,所以Kubernetes是不会将Pod调度到这个Node上的。  于是Kubernetes就给Pod设置了个属性Tolerations(容忍),只要Pod能够容忍Node上的污点,那么Kubernetes就会忽略Node上的污点,就

2022-03-10 21:48:58 548

原创 Prometheus metric

一、Metric获取方式1、graph页面http://普罗米修斯域名/graph2、API接口1)瞬时数据查询2)区间数据查询二、PromQL1)基本语法2)操作符3)内置函数三、常用度量指标类型指标含义CPUcontainer_cpu_cfs_periods_total容器生命周期中度过的 cpu 周期总数CPUcontainer_cpu_cfs_throttled_periods_total容器生命周期中度过的受限的 cpu 周期总数CP

2022-03-06 16:17:39 584

原创 工作六年经验总结

2021年终总结2022展望

2022-02-02 21:39:03 463

原创 golang学习笔记

golang学习笔记

2022-01-04 19:30:30 256

转载 安装wiki

一、下载安装包和破解包1、下载confluencewget https://downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-6.15.4-x64.bin2、下载破解工具wget https://files.cnblogs.com/files/Javame/confluence破解工具.zip3、下载mysql驱动wget https://files.cnblogs.com/files/Javam

2021-10-24 10:39:08 924

原创 安装Docker环境

1、下载安装包,本文用的docker-20.10.0.tgz2、安装:本文安装在/home/docker 目录(安装目录需要足够大,或挂载较大磁盘) 1)创建文件夹:mkdir /home/docker 2)安装包上传到/home/docker目录 3)安装cd /home/dockertar zxvf docker-20.10.0.tgzcp docker/* /usr/binln -s /home/docker /var/lib/ 4)配置成系统服务vi /usr/lib/syst

2021-10-24 10:00:49 581

原创 JVM参数设置模版

-Xmx4g \ 最大堆内存-Xms4g \ 初始化堆内存-Xmn1g \ 年轻代大小-XX:SurvivorRatio=10 \ 伊甸园:幸存1:幸存2=10:1:1-XX:MetaspaceSize=256m \ 元空间高水位线,默认21m-XX:MaxMetaspaceSize=512m \ 元空间最高水位线-server \-XX:LargePageSizeInBytes=128M \ 单个内存页大小,默认4M-XX:SoftRefLRUPolicyMSPerMB=1000 \ 每

2021-09-03 20:22:18 81

原创 JVM监控:springboot actuator + springboot admin

最近几个月天天加班,好久没更新博客了。这两天排查一个CPU飙高导致服务假死的问题,常规套路:jpstop -H -p 进程IDjstack -l 高CPU线程以上常规套路相信大家都比较熟练,但是当节点比较多的时候,就需要挨个进到机器或容器内,查看jvm堆栈情况,耗时耗力,如果能使用可视化工具就方便多了。Arthas(阿尔萨斯)需要单独部署成进程,部署复杂;springboot actuator作为信息采集客户端,springboot admin作为可视化页面,侵入性较小,因此选择后者,废话不多,上

2021-08-03 01:41:13 861

转载 监控工具选型对比

  监控维度可以分为节点资源监控(CPU、内存、带宽、磁盘)、应用探活监控(探活心跳)、应用服务能力监控(自动化回归测试)、应用服务性能监控等(全链路追踪),本文主要对比节点资源监控中常使用的prometheus和zabbix。一、监控工具1、prometheus  Kubernetes自从2012年开源以来便以不可阻挡之势成为容器领域调度和编排的领头羊,Kubernetes是Google Borg系统的开源实现,于此对应Prometheus则是Google BorgMon的开源实现。Promethe

2021-02-27 13:29:58 903

转载 全链路追踪选型对比

  监控维度可以分为节点资源监控(CPU、内存、带宽、磁盘)、应用探活监控(探活心跳)、应用服务能力监控(自动化回归测试)、应用服务性能监控等(全链路追踪),本文主要对比全链路追踪中常使用的Zipkin、Pinpoint、SkyWalking和CAT。一、全链路追踪工具1、Zipkin  Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。2、Pinpoint  韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特

2021-02-27 13:29:16 2426

原创 远程调用选型对比

一、远程调用  一般来说服务间远程调用有两种方式,HTTP和RPC。HTTP主要包括Httpclient、OkHTTP、RestTemplate、Feign(对RestTemplate封装可集成Ribbon做负载均衡)等;RPC主要包括dubbo、grpc、brpc、motan、rpcx、thrift等。本文主要对比springcloud框架常使用的远程服务调用框架Feign和Dubbo二、远程调用对比对比项feigndubbo协议httprpc/rmi/http性能

2021-02-27 13:28:17 557

原创 网关选型对比

一、为什么使用网关  不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:  1)客户端会多次请求不同的微服务,增加了客户端的复杂性  2)存在跨域请求,在一定场景下处理相对复杂  3)认证复杂,每个服务都需要独立认证  4)难以重构,随着项目的迭代,可能需要重新划分微服务  5)某些微服务可能使用了防火墙 / 浏览器不友好的协议,直接访问会有一定的困难  典型的网关架构如下:二、常见网关对比1

2021-02-27 13:27:33 2658

原创 配置中心选型对比

一、为什么使用配置中心1、配置的动态更新:修改配置后,不重启服务也能使修改后的配置生效2、配置集中式管理:如果每个节点自己维护配置文件,当有成百上千的服务节点时,维护起来成本太大3、配置内容的安全性和权限:有些密码、密钥等保存在代码库会被所有享有代码库权限的程序员看到,容易泄密4、多环境下的配置管理二、常见配置中心对比功能点SpringCloud ConfigApolloNacos开源时间2014.92016.52018.6配置实时推送支持(SpringCl

2021-02-27 13:26:50 822

原创 注册中心选型对比

一、为什么使用注册中心  服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。二、常见注册中心对比对比项NacosEurekaConsulZookeeper数

2021-02-27 13:25:56 858

原创 基于Netty实现UDP双向通信

1、Channel继承关系关于ChannelPipeline原理可参考:https://blog.csdn.net/qq_21033663/article/details/1056742612、NIO Channel分类1)NioDatagramChannel:发送和接收数据包,支持TCP和UDP,对DatagramSocket和selector进行封装2)NioServerSocketChannel:服务端使用,对JDK的ServerSocketChannel进行了封装3)NioSocketC

2021-02-09 17:44:27 3949 4

原创 Nginx Https 双向认证

1 基础知识1.1 单向认证 SSL 步骤1、客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息2、服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书3、客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和

2021-02-04 17:27:08 539

原创 工作五年经验总结

2020年终总结1、工作: 1)加入了百度自动驾驶(百度AI逆袭关键),并在新工作中成为骨干力量 2)意外收获:刚入职就赶上公司薪酬体系调整加了0.5薪,股票算是抄底目前已经double+了 3)机会成本:放弃了对标阿里P7的offer,此处应手动@谭小胖同学补顿酒,说好的能申请跨级转正呢2、生活: 1)30岁,而立之年,划过一道美丽的弧线 2)百善孝为先:奶奶去世了,到现在我也不太能接受,总觉得一回到老家就能见到奶奶,希望趁爸妈还未老去多陪陪他们,尽尽孝心,从未感受过能和家人在一起原来那么重

2021-01-01 12:31:13 3371 5

原创 分布式数据一致性/分布式事务总结

一、简述1、分布式事务/分布式数据一致性问题根源:存储资源的分布性,写多个资源,写入不能确保一定成功2、分布式事务模型: 1)AP:Application,应用程序 2)RM:Resource Manager,资源管理器 3)TM:Transation Manager,事务管理器 注:事务可分为全局事务和分支事务二、常见解决方案1、两阶段提交 1)实现思路:  a)准备阶段:事务管理器(TM)通知资源管理器(RM)准备分支事务,记录事务日志,并告知事务管理器的准备结果。即挨个资源管理器除

2020-11-14 19:34:35 533

原创 Protobuf序列化

Protobuf是Google出品的一款编解码框架。1、优点:  1)谷歌内部长期使用,成熟度高  2)跨语言,支持C++、Java、Python、JavaScript、PHP、Ruby、C#、Objective-C等  3)码流小  4)性能高2、缺点:  1)pojo生成方式增加额外复杂度  2)灵活性差,定义数据格式后不可修改,需要重新生成pojo  3)pojo不支持json操作综上所述:Protobuf序列化方式适用于跨语言通信、对码流大小和性能要求高、且pojo不经常变化的场

2020-05-17 11:51:02 4993 2

原创 使用jclasslib修改字节码/源码

  查看源码很简单,一些常用IDE里如idea、eclipse都提供了查看class文件源码的功能,虽然跟源码有些出入(解语法糖等),但功能实现上是一致的,且比源码更贴近于JVM运行时的情况。  有时候我们需要修改源码以满足使用要求,对于java代码生成的字节码重新源码就比较简单了,一种方式是继承然后重新部分功能,另一种方式是直接创建一个同名类文件,把反编译的源码复制进去,修改后,将新生成的cl...

2020-05-05 11:38:31 1148

原创 虚拟机字节码指令表

本文字节码指令图片来源于《深入理解Java虚拟机》第2版

2020-05-04 10:41:17 356

原创 gateway url适配

由于版本迭代,有的时候需要做老接口的兼容适配,有很多种方式,比如在nginx配置路由规则,在网关配置路由规则,本篇通过使用反射的方式在网关层全局过滤器中重写request请求的方式实现url适配。import lombok.extern.log4j.Log4j2;import org.apache.commons.lang3.StringUtils;import org.springfram...

2020-05-03 13:28:05 1813

原创 网关支持跨域

一、zuul跨域:配置方式application.ymlzuul: sensitive-headers: Access-Control-Allow-Origin ignored-headers:Access-Control-Allow-Origin,H-APP-Id,Token,APPToken二、gateway跨域:过滤器方式Spring Cloud Gateway 2.x Net...

2020-05-03 13:18:14 700

原创 java序列化框架码流、性能对比

本文对序列化框架:JDK、Kryo、Hession、FST、Fastjson、Gson进行对比,对比维度包括序列化后码流大小、10w次序列化反序列化性能耗时。1、依赖jar包 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifa...

2020-04-25 11:57:34 574

转载 ChannelPipeline

Netty4Netty是一个和MINA类似的Java NIO框架,目前的最新版本是4.0.13,这两个框架的主要作者好像都是同一个韩国人。ChannelChannel是Netty最核心的接口,一个Channel就是一个联络Socket的通道,通过Channel,你可以对Socket进行各种操作。ChannelHandler用Netty编写网络程序的时候,你很少直接操纵Channel,而是...

2020-04-22 09:37:32 2230

原创 将微服务运行在Docker上

 将微服务运行在Docker上,首先要把服务制作成镜像,然后将镜像推送到公有仓库或私有仓库(可选步骤),最后像使用其他镜像的方式一样,使用我们的镜像。 本文将展示三种将微服务运行在Docker上的方式:1)通过Dockerfile;2)通过maven插件;3)通过Docker Compose一、Dockerfile的方式 Dockerfile是一个文本文件,其中包含了若干指令,指令描述了构建...

2020-03-08 17:21:51 453

原创 springboot集成rocketmq

  本文是springboot集成rocketmq的入门篇,主要介绍单机环境下安装rocketmq,并集成到springboot框架中,实现字符串类型消息的生产和消费。  1)高可用集群部署方案请参考 待更新。。。  2)更多使用方式请参考 待更新。。。一、下载、安装、启动1、下载http://rocketmq.apache.org/dowloading/releases/2、安装...

2020-02-17 22:22:07 1124

转载 使用Docker安装Nginx

本文主要讲述使用docker安装nginx镜像,并将docker内文件挂载到物理机上1、下载Nginx镜像docker pull nginx2、本地创建挂载文件夹/Users/zhanghao/data/nginx/conf//Users/zhanghao/data/nginx/conf.d//Users/zhanghao/data/nginx/html//Users/zhangh...

2020-01-30 23:27:45 556

原创 工作四年经验总结

  今年的年终总结做的比较迟,这个月发生了好多事:搬家、找工作、带娃过年、肺炎疫情、科比离开,虽然一直坚信唯一不变的是变化,但当很多事情同时发生时,还是需要一点时间来适应。2019年总结1、工作上:由于可控和不可控的一些因素,今年的两个小目标都没有实现,不想说太多,尽全力做最好的自己,来年继续奋斗,fire!!!2、生活上:收获了一枚可爱的猪宝宝(琛宝),过渡性的买了第一套房(昌平北六环)。...

2020-01-28 01:10:50 701 4

原创 如何设计一个秒杀系统

1、问题抽象:并发读、并发写、稳准快2、4要1不要:数据要尽量少、请求数要尽量少、路径要尽量短、依赖要尽量少(服务分级)、不要有单点3、秒杀思路:秒杀系统独立部署、热点数据进缓存、答题环节、动静分离、本地缓存、限流4、动静分离 1)做法:  a、把静态数据缓存到离用户最近的地方:浏览器、CDN、服务端Cache  b、静态化改造,直接缓存HTTP连接  c、代理层缓存 2)动静分离...

2019-11-20 21:54:27 190

原创 Kafka安装及使用

本示例使用docker安装,springboot使用1、安装zookeeper(示例中单点)1)下载:docker pull wurstmeister/zookeeper2)安装:docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper2、安装kafka(示例中两台broker组成的集群)1)下载:docker ...

2019-10-07 11:36:11 295

jclasslib-猴子哥哥.zip

使用jclasslib修改字节码,使用说明参考:https://blog.csdn.net/qq_21033663/article/details/105928982

2020-05-05

中国省市区数据库(mysql)

最全的中国省市区三级联动数据库,mysql版

2016-01-09

空空如也

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

TA关注的人

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