- 博客(51)
- 资源 (3)
- 收藏
- 关注
原创 k8s集群监控系统部署方案
本文介绍一种k8s集群监控系统,该系统可以监控k8s集群中的pod和node的性能指标,以及K8s资源对象的使用情况。
2025-01-05 23:02:56
288
原创 k8s中 pod 或节点的资源利用率监控
通过Kubectl Top命令,可以查看你k8snode节点或者pod的资源利用率,比如,内存、cpu使用了多少,方便资源异常的排查
2023-10-28 15:00:18
1856
原创 docker基础镜像定制
官方基础镜像一般自带的linux命令是比较少,tcpdump、telnet登等命令是没有的,这时,定制一套适合自己的基础镜像是必要的,在定制的基础镜像中,可以安装自己想要的linux命令或者配置环境等。
2023-10-27 20:07:43
451
原创 K8s外部网络访问之Ingress
本章节详细解释Ingress搭建,证书制作,应用部署,应用测试。其中应用功能:通过域名和路由即可访问,如访问https://ingress-demo.example.com:30011/,并得到回复
2023-10-25 23:58:58
409
原创 K8s外部网络访问之NodePort
本章节要实现的功能:(1)k8s内部服务配置nodeport模式.通过浏览器访问k8s内部服务,发出http请求http://nodeIp:nodeport/hello,并得到回复(2)内部服务收到http请求后也会打印对应日志
2023-10-22 17:51:51
571
原创 k8s集群之harbor仓库应用
这一章节将讲解harbor仓库的应用,有以下两个内容:(1) 制作一个hello-word镜像,给镜像打标签,并把镜像推送到harbor仓库上(2) k8s上部署hello-word应用,镜像从harbor仓库上拉取,应用能够正常运行
2023-10-22 00:41:38
80
原创 k8s集群部署简易应用
这个章节讲解如何在k8s上部署一个简单的应用,应用的功能:1、每秒打印hello word2、kubectl logs test -n default -f 命令 可以查看输出hello word日志
2023-10-20 20:14:18
80
原创 内网穿透之pierced
钉钉内网穿透piercedwindow端使用方法pierce提供了window版本的内网穿透的集成软件,ding可执行文件和ding-cfg配置文件,如图所示:进入windows_64,然后cmd命令启动ding -config=ding.cfg -subdomain=cjg 8888参数说明config内网穿透的配置文件,按命令照示例固定为钉钉提供的。/ding.cfg,无需修改subdomain您需要使用的域名前缀,该前缀将会匹配到“vaiwan.com”前面
2021-10-23 19:47:56
910
原创 go json反系列化精度丢失问题
场景说明:在go语言开发当中, json反系列过程中往往会使用interface来接受任意类型的值,以便提高业务拓展性,但在反系列化中可能会遇到精度丢失问题,主要表现为uint64、int64类型反系列化后精度丢失问题。json反系列转为interface类型时的对应对应关系从图中可以可以看出, number类型json反系列后,科学计数法1、遇到uint64、int类型的,使用string表示2.使用json的useNumber属性JSON 协议中没有整型和浮点型之分,都是number。G
2021-07-17 21:33:06
2763
3
原创 http之tcpdump使用
1、tcpdump之http过滤过滤命令:tcpdump -i ens33 -A -v -s 0 'tcp port 8000 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'过滤结果如图所示:过滤说明:(1)接受和回复的http报文的header和body可以以ascii 显示,非常直观(2)区分每一次连接看端口号,端口号不变时,说明是一次长连接还没结束,端口号变化时,说
2021-06-13 14:33:30
4217
1
原创 完善的调试方式和监控管理
调试方式(完善的调试方式和监控管理)一、监控管理(监控进程)1、内存检测每个10秒检测内存,若可用内存小于15%,进行释放系统缓存,提高内存的利用率,并记录日志。利用sysinfo获取内存大小,或者free命令获取struct sysinfo s_info;sysinfo(&s_info);系统缓存释放nret = system("sync;sync");//先同步,防止数据丢失nret = system("echo 3 > /proc/sys/vm/drop_caches
2020-11-17 19:46:30
1744
6
原创 acc之ADTS解说一
AAC概述AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术。由Fraunhofer IIS、Dolby Laboratories、AT&T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术(PS,SBR),为区别于传统的MPEG-2 AAC,故含有SBR或PS特性的AAC又称为MPEG-4 AAC。AAC是新一代的音频有损压缩技术,它通过一些附加的编码技术(比如
2020-11-04 19:27:44
1971
1
原创 fork与vfork的理解
fork的定义函数原型:pid_t fork(void)返回值:-1失败,0或者大于0的正整数作用:fork成功后,产生一个新的子进程,在新的子进程中返回0,在父进程中返回大于0的正整数,该正整数即为子进程的PID。fork特点:1、子进程会从fork()返回值的下一条逻辑语句中开始运行2、父子进程的执行顺序是随机、并发的。3、父子进程是相互独立的,子进程会复制父进程的整个内存空间(虚拟空间和物理空间)、包括栈、堆、数据段、代码段标志IO缓冲区等。但在现在的Unix内核(包括Linux),采用
2020-10-31 18:15:52
374
原创 system的另一种封装
system的封装代码#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <sys/wait.h>#include <dirent.h>#include <string.h>#include <time.h>#include <sys/time.h>char *pmalloc = NULL;int system_vf
2020-10-31 18:14:07
229
原创 进程间通信-本地套接字
UNIX域套接字UNIX域套接字用于同一台计算机上运行的进程之间的通信。他的执行效率更高,仅仅是复制数据,并不执行协议处理,不需要添加和删除网络报头,不需要计算校验和等 只支持流式和数据报两种接口,服务是可靠的,不会丢失报文也不会出错。服务端的创建流程:1、创建本地套接字2、绑定本地套接字文件(选定文件位置和名称)3、监听4、消息收发客户端的创建流程:1、创建本地套接字2、绑定本地套接字文件(选定文件位置和名称)3、链接4、消息收发(1)创建套接字int socket(int do
2020-10-31 18:11:22
1029
原创 静态链接之深度解剖
readelf命令//查看文件头信息readelf -h [file]//查看文件依赖的动态库readelf -d [file]//查看文件中的符号readelf -s [file]//查看文件中的重定位符号readelf -r [file]重定位表的作用(静态库与动态库)
2020-10-16 18:35:08
246
原创 动态链接之深度解剖
readelf命令//查看文件头信息readelf -h [file]//查看文件依赖的动态库readelf -d [file]//查看文件中的符号readelf -s [file]//查看文件中的重定位符号readelf -r [file]objdump命令-h, --[section-]headers Display the contents of the section headers-r, --reloc Display the relocation
2020-10-16 18:33:29
293
原创 动态链接与静态链接的优缺点
静态链接的优点*1、程序的启动速度和运行速度相对于动态链接快。静态链接的缺点1、内存的磁盘空间的浪费当多个进程静态链接同一个静态库时,会复制多个副本,每个程序链接静态库的时候都会链接一个副本到目标文件里,链接的进程越多,副本也就越多,在磁盘上占用的空间就会变大,程序运行的时候,也会占用内。2、模块更新麻烦一个大型项目都会有很多个独立的功能模块,项目发布出去后,后期的维护中,有一个功能模块需要修改bug,而模块又是静态模块,需要整个项目程序进行重新编译后,再发布给客户升级,升级文件的容量非常大,客
2020-10-11 19:56:22
4879
2
原创 Linux文件删除但空间不释放问题篇
通常报磁盘不足的错误,有两个原因:•磁盘空间满:可以通过df -h命令查看磁盘的使用情况。•磁盘inode资源占用完:可以通过df -i命令查看,确认inode节点使用率;如果是inode资源占用完,是因为使用的小文件过多导致的。但如果是磁盘空间满,我们需要删除文件,挤出空间来,但发现磁盘空间根本没减少。这就需要了解rm删除文件原理。rm删除文件原理Linux是link的数量来控制文件删除的。只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来讲,每个文件都有两个link计数器:i_
2020-09-23 19:27:25
2698
1
原创 linux 硬链接与软连接的简介篇
在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。软链接软链接(也叫符号链接),类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接特点•1.软链接是存放另一个文件的路径的形式存在。•2.软链接可以 跨文件
2020-09-23 17:49:49
644
原创 ilinux动态库的版本号管理篇
动态库的版本号命名规则共享库的命名必须如 libname.so.x.y.z最前面使用前缀”lib”,中间是库的名字和后缀”.so”,最后三个数字是版本号。x是主版本号(Major Version Number),y是次版本号(Minor Version Number),z是发布版本号(Release Version Number)。(1)主版本号(不兼容):重大升级,不同主版本的库之间的库是不兼容的。(2)次版本号(向下兼容): 增量升级,增加一些新的接口但保留原有接口。高次版本号的库向后兼容低次版本
2020-09-23 17:19:23
696
原创 论函数形参与实参的常见错误篇
1、形参与实参的类型不一致引发的错误,例子1如下#include<stdio.h>#include <sys/select.h>int add(int *pdate){ pdate[0] = 2; pdate[1] = 5;}int main(){ short int buf[2] = {0}; add(buf); printf("buf[0] = %d\n",buf[0]); printf("buf[1] = %d\n",buf[1]); ret
2020-09-18 15:04:19
3703
1
原创 嵌入式之gdb调试篇
一、gdb简介GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具。查看断点info break [n] – n断点好设置断点break filename:linenum 在源文件filename的linenum行处停住。break 在进入指定函数时停住v删除禁用断点delete 删除所有断点delete breakpoint [n]
2020-09-17 17:31:28
1276
原创 嵌入式之交叉栈回溯
背景简介段错误的调试有很多方式,比如gdb工具,栈回溯的backtrace依赖于-g选项等,1、栈回溯原理介绍栈回溯是arm架构基于fp寄存器的栈回溯,通过fp寄存器和lr寄存器数据的关系,可以依次找出每个函数栈中存储的lr寄存器地址,即函数返回地址。通过函数dladdr()去获取函数返回地址的符号信息,即可得到函数符号名与加载模块的名称(动态库名),从而找出每一级函数调用关系。平台不同,fp寄存器和lr寄存器的关系也不相同,只要找出fp寄存器和lr寄存器的关系,就可以找出每一级函数调用关系。下面将介
2020-09-14 17:36:53
1507
1
原创 嵌入式之栈回溯backtrace篇
程序发生段错误借助gdb工具去定位是非常好用而精准的。但如果有些段错误是概率性发生,那么有时使用gdb工具去定位就显得那么好用了。如果在代码里去监控段错误,段错误一旦发生,就能很好得记录段错误信息,就能排查问题。所以gdb工具一般只适用于程序调试阶段,而如果想要在程序维护阶段去监控段错误的发生,只能在代码里实现段错误的监控措施,即栈回溯。int backtrace(void **buffer,int size)该函数用于获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参
2020-09-11 11:24:27
1712
原创 嵌入式之goto对与错篇
很多书籍都会把“”goto“”当成反面教材使用,认为其如果使用不当,将会造成很多意想不到的问题。但goto作为C语言的一部分,存在即合理,goto有它的缺点,也有它的优点。缺点:很容易把逻辑弄乱,增加理解难度,goto是可以实现无条件跳转的,一旦跳转,就忽略很前面很多代码,特别是在在一些逻辑复杂的地方使用,会很容易出问题。所以goto能不用就不用,特别对于新手的,尽量避讳。优点:方便处理异常情况,特别是内存,系统资源的释放。很多大型项目,开源项目,包括Linux内核,都会使用goto来处理异常情况。
2020-09-08 20:08:55
296
1
原创 嵌入式之select、poll、epoll 区别总结篇
1、支持的最大连接数(1)selectselect的文件描述符是由unsigned long型、大小为32的数组管理,每一位代表一个文件描述符,在32位中,支持少于1024个文件描述,在64位机中,支持少于2048个文件描述。select支持的最大连接数是受限的。(2)poll只受限于进程限制与系统限制(即进程和系统最多允许同时打开文件数)和内存大小,调整进程限制与系统限制后,poll连接数就取决于内存大小了。poll文件描述符是基于链表来存储的。(3)epoll只受限于进程限制与系统限制(即进
2020-09-07 14:57:28
293
原创 嵌入式select之文件描述符限制篇
select系统调用可以实现一个进程同时监听多个文件描述符的状态变化,但select 对于一个进程所打开的FD是有一定限制的,最大的文件描述符需小于1024,即文件描述符的范围【0-1023】。select支持的描述符为什么会有限制呢?能不能修改呢?select支持的文件描述符是在#include <sys/select.h>的宏定义定死的,所以有局限性,但并不是说文件描述符一定就不能超过1024,因为宏定义的值是可以人为修改的,但比较麻烦,修改宏定义的值,需要重新编译内核。但为什么文件描述
2020-09-04 19:20:10
824
原创 嵌入式之coredump调试篇
Coredump简介Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。该文件是二进制文件,可以使用gdb、elfdump、objdump或者windows下的windebug、solaris下的mdb进行打开分析里面的具体内容。Linux系统调用–getrlimit()与setrlimit()函数详解功能描述:获取或设定资源使用限制。每种资源都有
2020-09-02 09:16:28
1821
原创 goahead(web服务器)之测试例程下载网址
goahead编译环境介绍本次章节主要讲解goahead在不同平台的编译,如x86、arm平台。提供gohead源码集成编译,支持https协议,提供openssl源码以及不同平台的编译环境,提供goform、asp、cgi、文件上传测试例程,讲解测试例程的测试步骤。例程测试方法简单、便捷、只需将demo文件拷贝到对应的平台的某个目录,运行./goahead即可。本次章节讲提供两套goahead测试样例,一个是支持https协议的,需要openssl库支持,占用相对大一些。另一个是不支持https协议的
2020-09-01 17:36:18
1034
原创 嵌入式之内存泄漏定位篇
嵌入式之内存泄漏定位篇在嵌入式开发中,经常会使用malloc,free分配释放堆内存,当malloc,free不配对使用时,就会导致内存一点点地泄露,直至堆内存泄露完,导致设备异常重启或死机现象。对于内存泄漏的情况,如果一开始不做预防,定位内存泄漏就会相当繁琐,定位也会很长,非常的耗时、耗力。这里可通过malloc、free的第二次封装来预防内存泄漏,主要表现是分别记录不同地方调用malloc、free的次数,来判断malloc、free是否配对使用,如果不配对使用,可以帮助定位到哪个地方是不配对使用的
2020-09-01 16:18:21
1832
1
原创 嵌入式之模块去初始化篇
嵌入式之去模块初始化初始化和去初始化一般是成对出现的,而很多时候,往往会忽略去初始化国家,因为部分的情况下,进程一结束,资源就会被系统自动回收,也就没有去初始化的必要,这个很容易养成忽略去初始化的过程,系统资源管理考虑不全的习惯。当分配堆内存时,申请共享内存、申请锁资源等系统资源时,如果再进程退出后,不做销毁、释放,就会占用系统的资源,影响资源的配置、进程的正常运行。所以不管什么时候,都应该养成去初始化的习惯。去初始化只要考虑一下以下方面:(1)内存释放(2)线程释放(3)系统资源销毁(共享内存、
2020-08-31 15:44:50
1174
原创 嵌入式之磁盘管理命令调试篇
df作用:用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。-h 人性化阅读方式-i 显示i -nodes的使用量-T 文件系统类型du作用: 查询档案或目录的磁盘使用空间-h 人性化阅读方式-s 只显示各档案大小的总合 (summarize)ln作用:创建链接文件或目录-s 软链接(符号链接)ln -s source targetmount作用:挂载设备或查看已挂载设备mount [参数] (需要挂载的分区) (挂载目录)mount (cat
2020-08-31 11:00:00
507
原创 嵌入式之网络管理命令调试篇
网络调试命令*1、ifconfig**作用:**linux中用于显示或配置网络设备(网络接口卡)的命令(1)修改ip、子网掩码ifconfig eth0 IP netmask子网掩码例如:ifconfig eth0 10.82.16.195 netmask 255.255.255.0(3)关闭、打开网卡启用网卡:ifconfig 网卡 up 例如:ifconfig eth0 up禁用网卡: ifconfig 网卡 down 例如:ifconfig eth0 down(4)查看IP地址、M
2020-08-31 10:20:22
452
原创 gdb之交叉编译篇(适用于各个平台)
本篇将介绍GDB的交叉编译,提供各个平台的编译环境,适合于各个平台编译。本篇用的gdb编译的版本为7.9.1,依赖的ncurses库的版本为6.0Makefile的内容TOOLS_TOP_DIR := $(shell pwd)TOOL_TAR_BALL := gdb-7.9.1.tar.gzTOOL_TAR_BALL2 := ncurses-6.0.tar.gzTOOL_NAME := gdb-7.9.1TOOL_NAME2 := ncurses-6.0TOOL_BIN := instTO
2020-08-29 14:34:01
1797
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人