自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 为什么存在概率

人的思维深处一直存在着矛盾,意识中似乎认为一切都存在确定性,以至于很多人到现在依然无法摆脱机械论思想的控制,而概率就是一个幽灵,盘旋在确定性的周围,始终无法摆脱。 现在我们来思考一个问题,我们所谈论的世界到底是什么?是真实的世界?相信任何有思考过这个问题的人,都会给出一个否定的答案,我们谈论的世界,充其量只是真实世界的一个映射。 那么我们是怎么把真实的世界装到一个只有只有一千多毫升的“世界”中?我们有概念,抽象的能力,有数学的能力,试想,一个概念表达的信息只是字面意...

2020-08-12 22:30:36 544

原创 决定内在世界的诸要素

当我们谈论到世界一词时,我们必须要意识到我们所谈论的世界不是真实的世界,而是我们对世界的一个投影,而对于世界的投影,每个人对世界的投影不尽相同,有的世界可以看到每粒尘埃,有的世界能听见动物言语,有的世界却只有一片黑白,山水孤寂。 我们无法100%感知世界,这是一个不争的事实,外部世界经过我们自身的投影,进入我们内在世界,至少要经过多个环节,我认为至少要经过以下几个环节:(1)外部世界的散发的信息(2)感官捕获到外部世界散发的信息(3)感官将捕获到的信息存在潜意识中...

2020-06-06 22:20:00 198

原创 意识和潜意识的关系

意识和潜意识不是两个割裂的系统,潜意识是习惯构成的系统,当使用习惯无法应对环境中的变化时,选择就上升到意识层面,这时总是伴随着焦虑与不安,这个时候,焦虑与不安提醒着意识,潜意识正在处于失控的状态。潜意识在极力避免陷入到焦虑与不安的状态中,极力去维持原有的状态,让习惯足以应对环境,这是一种比较经济并且安全的方式,无可厚非,只有改变对环境的应对方式,形成新的习惯,才意味着改变。情绪是潜意识对意...

2018-11-11 17:39:01 2591

原创 kong安装插件

kong的插件大多以lua脚本的形式提供,新增插件需要把脚本打到kong镜像中,一般分下面几步:FROM kong:2.6 USER root //1.安装kong-response-string-replace依赖的工具包 RUN apk update && apk add git zlib zlib-dev libc-dev gcc brotli brotli-libs brotli-dev RUN cd kong-response-string-replace &

2021-12-16 22:45:00 1237

原创 k8s命令kubectl自动补全

source <(kubectl completion bash)

2021-12-14 19:55:12 1420

原创 kubectl删除某一类资源

kubectl delete 资源名 --all -n nginx

2021-12-08 09:51:33 367

原创 什么是k8s的operator

简单点理解所谓云里雾里的operator其实就是两个部分:控制器 + 用户自定义资源控制器:其实ReplicaSet,deployment,statefulset等就都是控制器,只是operator是一个用户自己实现的控制器(可以是go程序也可以是脚本,本质就是调用k8sAPI的小程序),他可以部署在k8s集群中用户自定义资源:可以理解为我们平时写ReplicaSet,deployment,statefulset等yaml时,出现的字段名以及这些字段的类型,长度等等的定义部署一个oper

2021-12-06 09:00:00 1347

原创 ipvsadm不显示名字解析直接显示主机和端口

ipvsadm -l -n

2021-11-27 17:29:50 523

原创 一键安装k8s集群测试环境

系统:centos7.9 - 2009 //只支持centos7 mini 安装即可配置要求:内存2G以上export release=3.0.0yum install wget -ywget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown chmod +x ./ezdown./ezdown -D./ezdown -Sdocker exec -it kubeasz ezctl st

2021-11-25 13:26:56 362

原创 yum查找应用所属的包

yum provides nslookup

2021-11-24 15:30:10 479

原创 解析k8s中headless(无头服务)服务的作用

解析k8s中headless(无头服务)服务的作用2.获取一个应用的headless服务3. 获取服务对应的pod4.通过nslookup 域名 dns服务器命令解析headless服务对应的ip地址我们可以看到headless服务其实解析成pod的地址,而如果把域名精确到pod,例如nac...

2021-11-23 09:45:00 10015

原创 修改kubeadm默认配置

修改kubeadm默认配置的方法,定制自己的kubeadm

2021-11-18 15:13:06 667

原创 Kubeadm源码下载位置

kubeadm没有单独的github项目,它是k8s下属的一个命令,源码放置于k8s的cmd目录下https://github.com/kubernetes/kubernetes/tree/master/cmd/kubeadmhttps://github.com/kubernetes/kubernetes/tree/master/cmd/kubeadm

2021-11-15 10:11:40 1318

原创 helm列出软件所有版本/指定下载某版本

helm列出所有版本:helm search repo harbor -lhelm 下载指定版本:helm fetch harbor/harbor --version 1.7.2

2021-11-12 13:31:39 8724

原创 逆向解析Docker镜像(image)中的Dockerfile的通用方法

1

2021-11-11 10:43:03 1863

原创 harbor低版本迁移到高版本

harbor低版本的数据不能直接导入到高版本,因为其中数据库字段,表等等均会在版本的升级过程中发生变化,需要将老的harbor中的镜像导出到本地,打上tag,再推送到新的harbor服务器,其整体思路如下: 1.通过harbor的API获取到所有的项目 2.通过项目获取到所有的repo 3.通过repo获取到所有的tag 4.将项目,repo,tag拼接起来,形成一个pull,tag和push的命令列...

2021-11-09 09:00:00 555

原创 rancher开发编译环境搭建

整体思路:在原有的rancher/rancher:v2.5.8,叠加go,gdb等工具,作为一个可以分发的开发镜像rancher编译环境搭建:0.下载rancher镜像并运行起来拉取rancher镜像:docker image pull rancher/rancher:v2.5.8启动rancher容器:docker run -d --privileged --restart=unless-stopped -p 80:80 -p 443:443 --name rancher

2021-11-04 16:50:34 555 1

原创 使用kube-bench和kube-hunter扫描k8s集群

(1)kube-benchdocker run --rm -v `pwd`:/host aquasec/kube-bench:latest install./kube-bench master./kube-bench node(2) kube-hunteryum install python3pip3 install kube-hunterkube-hunter

2021-11-04 16:41:10 2966

原创 控制变量法的适用条件

1.封闭系统2.问题是由单个原因导致的,除非将多个原因看成一个整体

2021-10-28 09:00:00 453

原创 harbor搭建

1.harbor依赖组件安装:yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -y docker-ce docker-ce-cli containerd.iocurl -L https://github.com/docker

2021-10-15 11:54:33 132

原创 nginx keepalive dns 高可用服务器搭建

高可用dns的搭建:整体思路:搭建一个三主的dns服务器使用Keepalive作为地址漂移的工具,Nginx作为负载均衡工具在keepalive上对nginx进行探活,如果nginx挂掉,降低本机优先级,让出vip0.安装dns服务0.1 安装软件yum install dnsmasq -y0.2.修改resolv.conf namesever为127.0.0.1vi /etc/resolv.conf# Generated by NetworkMana

2021-09-24 10:20:44 692

原创 构造一个死循环的shell脚本

while : ; do : ; done

2021-07-18 16:36:13 322

原创 sql语句(数据库)调优的通用方法

在看到下面这条SQL语句的时候,可能大多数人和笔者一样,都是头晕得一逼,这么复杂得语句,如果出现性能问题了,该怎么确定问题点在哪?所幸,数据库引擎可以给我们提供具体的执行计划SELECTuap.uidgroupid,uap.uidid,uap.strtargetfile,uap.dtopttime,flcp.filesize,uap.strusername,uap.struserdesc,uap.stradmindesc,uap.iuploadstate,uap...

2021-07-14 23:47:39 485

原创 asan(AddressSanitizer)内存诊断(越界,非法访问等)工具使用---一款比valgrind更好用的工具

操作系统:centos8gcc:8.3.1 asan是gcc原生的内存诊断工具,可以诊断内存越界,非法访问,内存泄漏,内存double free等常见内存问题,并且效率比valgrind高好几倍,可以克服valgrind的一些问题,比如占用内存高的问题,是一款比valgrind更好用的内存问题分析工具!1.准备工作: 1.在编译环境上安装asan的开发库 yum install libasan.x86_64 2.在运...

2020-11-02 22:54:10 4570 5

原创 为什么需要存在同一律

同一律作为逻辑四大定律之一,作为一个已知事实,但万事皆有其存在的理由,同一律为何可以成为四大定律之一?在低速的世界里,世界是又无数的原子构成的,只有知道每个原子的定位和速度,就可以知道世界往后的演化。 然而,大脑作为大世界中的小世界,自然无法追踪定位每个原子,甚至连超过七的事物就难以记清。为此,小世界要模拟大世界的运行,就要找到一种降低负荷的办法,比如把一整团的原子标记为某物,又把性质相近的某物归类为一个概念,这样小世界中物体的数量就大大减少了,以达到一种小世界可以驾驭的...

2020-10-19 22:50:42 298

原创 rpm包制作全过程

1.安装rpm制作工具yum -y install rpm-buildyum installrpmdevtools2.生成rpm制作目录rpmbuild -ba postgres-xl-10r1.1.rpm注意默认是生成在/root/rpmbuild目录下3.在SPECS生成rpm制作脚本rpmdev-newspec -o postgres-xl.spec注意这里必须以spec为后缀...

2020-10-15 22:58:26 600 1

原创 uftrace实现原理

"-pg"指定编译器在函数入口插入对mcount()桩函数的调用,而“-finstrument-functions”会指定编译器在函数入口插入对__cyg_profile_func_enter()函数的调用,在函数返回时插入对__cyg_profile_func_exit()函数的调用。 uftrace对这2种情况都能支持。正常情况下,c库提供了对这些桩函数的定义,所以我们链接程序时,是可以链接到c库里面的桩函数定义。[root@localhost test]# readelf -s /l...

2020-10-13 22:02:20 504

原创 gdb可视化调试过程中需要注意的问题点

1.调试过程中与实际行号对应不上 原因是编译器优化的问题,需要查看编译选项中是否有-O2或者-O3的编译选项,将优化的编译选项去掉后,一般就可以对应上了2.一定要加上-g选项,不然会找不到符号...

2020-09-28 11:52:33 273

原创 gdb可视化调试使用的一个小技巧

在vs上调试工具可以通过单步调试,一行一行可视化地跟踪代码的执行,而linux上其实也是可以的,gdb本身就自带了这个功能,可通过以下命令来启用: gdb ./xxx -tui 通过-tui选项,也就可以获得与vs一样的可视化调试效果...

2020-09-28 11:19:18 840

原创 跟踪postgresql语句执行过程

在项目中,有时会遇到一些自己不熟悉的模块,如果在这个模块中对数据库进行了一些操作,但由于我们对这个模块不熟悉,并不清楚这个模块做了什么操作,我们可以通过数据库日志追踪这些过程,具体如下:1.打开postgresql数据库的日志开关2.设置postgresql日志类别设置日志类别,可以将日志类别设置为all即会打印所有日志,mod会打印所有修改语句,none则为不打印3.重启postgresql4.进入postgresql日志目录,使用tail -f xxx.log...

2020-09-22 23:19:20 823

原创 确认可执行文件是否编译成功的方法

在linux上开发程序的过程中,要进行编译再替换,但有时候替换后,代码并没有生效,我们需要确定下是新增的代码没有编译进去还是替换没有成功,或者是我们编写的代码逻辑还是有问题,导致程序执行没有达到预期,我们可以使用以下步骤来确认:1.确认文件是否替换成功ls -lrt 如果可执行文件在末尾,并且时间符合预期,即可判断为替换成功2.确认文件是否编译成功nm ./a.out | grep new_symbolstrings ./a.out | grep new_sy...

2020-09-03 23:04:27 1480

原创 如何追踪thrift接口的调用过程

当使用thrift作为一种为外部提供服务的方式,作为一个后端人员,通常会遭遇一个问题,即:前端到底调了我哪些接口?调用的顺序是怎么样的?这个问题很大程度上是在问业务的具体情况,如果对业务非常熟悉,那自然也能猜到具体是调用了那几个接口,但不可能谁都是老员工,并且对于业务细节需要进行确认的时候,我们也需要明确我们猜测的到底对不对,也需要对调用的接口,以及其顺序进行确认,我们可以在每个接口都打印一个日志来确认,但这种方式太low了,笔者这里提供一种通用的方式来打印日志,或者接口的调用信息,如下:...

2020-08-27 22:13:53 484

原创 一种查找C++函数符号所在文件的通用方法

#include<iostream>using namespace std;class symbol{public: symbol(){}; ~symbol(){}; void make_symbol(int a){return;}};int main(){ symbol test; test.make_symbol(); return 0;} 在上面一个简单的程序中,如果我们要找make_symbol这个...

2020-08-18 10:47:56 894

原创 在epoll中如何实现流量控制

epoll实现的经典模式是:for(){}

2020-08-17 09:20:59 126

原创 解决epoll产生过多EPOLLOUT事件导致cpu升高

当socket的缓冲区不满的时候,就会产生EPOLLOUT事件,但是通常情况下,应用层缓存并未准备好,这会导致epoll所在线程不断检测应用层缓存是否就绪,进而导致cpu高,一般情况下,解决消费者生产者速度不协调的通用办法是通过增加两个条件变量来解决,通过应用层缓存的非空和非满两个状态,来控制线程的休眠与运行,但epoll如果是使用单线程的反应器模式,就无法使用该方法了,我们可以通过另外一种方法来解决cpu高的问题,即: 如果epoll如果检测到缓存为空,那么就将该socket...

2020-08-09 11:13:15 1347

原创 一个最简单的RPC的定义与实现

当我们要实现一种属于自己的RPC,自然而然应该先想到如何定义一个协议,协议的本质就是解决客户端与服务端通讯过程中遇到的问题。首先,是语义问题,我们必须明确数据流的含义,数据中那些部分是协议头,哪些部分是数据,数据是以什么格式来存储的等等,其次是内容问题,协议头中必须包含哪些字段,这些字段与我们采用的技术,实际实现的需求相关。 首先,实现一个RPC,需要考虑采用什么技术,要实现一种高性能RPC,假如我们使用的是以epoll为基础的I/O多路复用技术,由于tc...

2020-06-19 17:06:25 220

原创 调试的第一原则

程序难免会出现各种各样的问题,对于一般的问题,只要借助于调试器、日志,很快也可以解决,对于一些特殊的情况,比方非必现问题,问题现象多变,或者出现问题所在的模块庞大而且我们对其只是一知半解,要定位到问题往往要耗费大量的时间。 笔者在前几日,遇到一问题,问题现象如此:在客户端每进行一次文件分享操作,文件的分享记录数会变为原来的两倍。 笔者在接到该问题后,觉得该问题应该很好排查,毕竟只是一个必现的问题,当排查了文件的分享接口后,发现接口的每个数据项都没有问题,才意识到该问题...

2020-06-15 12:54:13 226

原创 使用快速排序处理多个变量的排序

在window的文件排序中,我们可以看到这样一种情况,当我们在文件管理器中点击按照名称排序时,总是先出现所有的文件夹在出现所有的文件,或者相反,也就是说window的文件管理器是先按照文件/文件夹进行归档,再进行排序的,也就是在排序过程中有两个变量在发挥作用,一个是文件类型(文件夹/文件),另外一个是文件名称:对于这种涉及到两个或者两个以上变量的排序,常见的排序算法是否可以处理?答案是可以的,比如快速排序算法的处理方式如下:static int SortCmp(void *contex.

2020-06-01 22:05:39 727

原创 python提取中文词条

最近因为需要处理提示信息的国际化问题,编写了一个小工具扫描工程中的中文词条,其基本的思路如下:(1)获取文件的编码(2)以文件的编码打开文件(实际上就是统一转化为Unicode),并读取所有文件行(3)使用正则表达式获取所有的中文(re.compile(ur'[^\u4e00-\u9fa5]')),中文编码的范围在\u4e00-\u9fa5之间(4)拼接所检测出的中文其具体的实现如下:# coding=utf-8import reimport sysimpor...

2020-06-01 21:36:02 858

FlowCtrl.zip

流控的一个实现,支持了常见的流量控制算法,比如令牌桶算法,可以直接移植到项目中使用,分享给需要的网友。。。

2020-08-15

瀑布流代码

瀑布流代码

2014-05-12

空空如也

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

TA关注的人

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