自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(169)
  • 收藏
  • 关注

原创 go exporter开发 第一篇

为什么go程序要采集指标?通过采集指标,可以从外部观测到程序运行中的一些运行中的数据,比如协程数,web请求的接口等情况,从而进一步分析程序是否有不退出的协程,以及性能,是否存在内存泄漏,通过对接Prometheus,能够观测接口请求时间,访问量,访问成功和访问失败等。

2024-07-18 12:41:12 654

原创 docker-compose部署redis-exporter

浏览器打开:http://127.0.0.1:9121/metrics。

2024-07-15 12:52:48 288

原创 部署windows-exporter

在windows中使用二进制方式部署安装好之后,打开 http://127.0.0.1:9182/metrics。

2024-07-08 19:26:40 276

原创 docker-compose部署node-exporter

我用的是社区版:v7.0.0,从仪表盘 -> 内置仪表盘 -> 搜索linux -> 点击搜索到的,选择带有 Node Exporter的图表。夜莺里面也有内置一些常用的监控策略,从告警管理 -> 内置规则 ->linux,选择 linux_by_exporter。夜莺内置了一些常用exporter采集图表。一般需要对这些比较核心的指标进行配置告警。之后下载,导入到grafana里。搜索:node-expoter。

2024-07-05 12:47:36 375

原创 go 泛型函数里调用公共方法

在go泛型中,有时候会用到从泛型函数中调用结构体变量的方法。

2024-07-04 10:38:14 382

原创 docker-compose搭建prometheus、grafana

浏览器打开 http://127.0.0.1:9090。浏览器打开 http://127.0.0.1:3000。默认账号密码:admin/admin。配置prometheus地址。

2024-07-02 19:21:07 299

原创 golang 获取字符串切割之后的最后一个字符串

有些场景需要获取字符串按某个字符切割之后,获取最后,有个比较好的实践分享。strings.LastIndex 如果没有匹配到,则返回-1。

2024-06-25 17:12:23 285

原创 grafana 通过自定义API获取数据

安装infinity插件。

2024-06-22 17:21:14 413

原创 mongo工具篇 --- mongotop

mongotop返回每个集合的统计信息。

2024-06-19 19:38:43 458

原创 mongo工具篇 --- mongostats

安装链接

2024-06-18 12:28:04 297

原创 Go使用https

为了方便介绍后面的检测h2的插件和检测有没有开h2的方法,这边给出了几个已经开启了h2的一些网站地址。开启了http1.1的网站。开启了http2.0的网站。当访问开启h2的网站。

2024-06-11 12:30:46 525

转载 debian “更换介质:请把标有…… DVD 的盘片插入驱动器“/media/cdrom/”再按回车键“ 解决方法

debian “更换介质:请把标有…… DVD 的盘片插入驱动器“/media/cdrom/”再按回车键“ 解决方法在新安装的debian后,有时候,在通过apt-get install 安装软件的时候,会出现:“更换介质:请把标有“Debian GNU/Linux 7.1.0 Wheezy - Official amd64 DVD Binary-1 20130615-23:06”的盘片插入驱动器...

2018-06-06 13:54:47 7714

原创 面试题21: 二维数组搜索

题目: 设计一个算法对 m*n 矩阵进行搜索,这个矩阵拥有如下属性.    1)每行的数都是从左到右排序好的.    2)每行的首数大于上行的尾数.其实这题就是用二分查找算法,二分查找一般是在一维数组上进行搜索,解决这道题的关键就是如何将二维数组映射成一维数组.映射关系为: k=i*n+j,j<n,k为在一维数组的中的下标值,i,j分别为二维数组中的行和列.根据前面的可以推导出i=k/n,j...

2018-05-19 15:45:54 335

原创 面试题20: 三角形

题目: 给定一个正整数n,产生Pascal三角形的前n行.代码实现:package mainimport "fmt"var a [100][100] intfunc init() { for i := 0;i < 100;i++ { a[i][0] = 1 for j := 1;j <= i;j++ { a[i][j] = a[i - 1][j - 1] +...

2018-05-19 15:14:23 472

原创 面试题19: 合并有序数组

题目: 给定两个有序数组A和B,把B合并到A里,保持结构有序.假设A有足够的空间容纳B的元素.初始时,A和B的元素各有m个和n个.分析: 这题可以这样来,从A和B的末尾向前移动,进行比较,将比较大的值放到A中下标为len(A)+len(B)-1的地方(假设两个序列是从小到大排列的),之后比较大的值的序列往前一个,然后再比较,放到len(A)+len(B)-2的地方,重复前面的操作,直到两个序列合并...

2018-05-19 15:03:33 420

原创 面试题18: 首个正数

题目: 给定一个无序整型数组,找出第一个不在数组里的正整数.要求时间复杂度O(n),空间复杂度为O(l).举例:     输入数组{5,3,-1,1},返回2代码实现:package mainimport "fmt"// 解法1,使用哈希思想,空间复杂度为O(n)func hxqj(a []int) int { m := make(map[int]bool) for _, v := ...

2018-05-18 09:33:11 210

原创 面试题17: 旋转数组搜索

题目: 给定一个有序数组的旋转和一个目标值,返回目标值在该数组的下标,如果不存在,则返回-1.假设该数组没有重复值.代码实现:使用二分查找package mainimport "fmt"func Min(a, b int) int { if a > b { return b } return a}func searchRotatedArray(A []int, tar...

2018-05-17 14:23:41 546 1

原创 面试题16: 旋转数组最小值

题目: 输入一个递增排序的一个旋转,输出旋转数组的最小值.分析:第一步:要知道什么是旋转数组?其实就是将一个有序的数组,前n个直接丢到最后面.    根据上面什么是旋转数组,我们可以知道旋转数组会有这样一个规律,就是这个一个递增排序数组的一个旋转,可以看成两个递增数组的组合.有一个核心的地方,就是左边序列的所有值会大于等于右边的值,那么我们就可以使用二分查找.第二步:使用二分查找,中间的要么在第一...

2018-05-17 13:18:58 157

原创 面试题15: 两数组中值

两个有序数组A和B,分别拥有m和n的长度,求其合并后的值

2018-05-17 08:32:45 197

原创 面试题14: 两数组第K个值

题目: 两个有序数组A和B,分别拥有m和n的长度,求其合并后的第k个值.代码实现:// 二分归并排序func binaryMerge(arr1, arr2 []int) interface{} { i, j, la1, la2, temp := 0, 0, len(arr1), len(arr2), 0 var ms []int for i < la1 && j &...

2018-05-16 11:27:36 195

原创 面试题10:数位重组

题目:给定两个数组表示的整数,比如x = 1234={1,2,3,4},y=2410={2,4,1,0},返回第一个整数的重组后的值最接近第二个整数,并且要大于第二个整数。假设两个整数的数组大小相同,并且肯定能够找到符合答案的数,例如输入{1,2,3,4},{2,4,1,0},返回{2,4,1,3}。package mainimport ( "fmt")func getClose...

2018-05-12 19:49:16 565

原创 面试题9:数组配对

题目:给定N个整数,N为偶数,是否能找到N/2对,使得每队和都能被k整除。注意:每个元素只能出现在一个配对中。观察:     如果某个数能被k整除,那么该数除以k的余数为零。假设a和b之后能被k整除,即(a+b)%k=0,如果a%b=z,那么当z不等于0时,b%k=k-z;当z等于时,b%k=0。通过上面的推导,我们需要记录这个数组除以k之后的余数情况。然后从余数里找出配对。    使用额外一个数...

2018-05-08 09:05:17 622

原创 面试题8:合并区间

题目:给定一个区间集合,合并里面重叠区间;并返回新的不含重叠区间的集合。例如,输入:[1,5],[6,10],[4,6],[15,20]。输出:[1,10],[15,20]。package mainimport (    "fmt"    "sort")type Interval struct {    start int    end int}type PointSlice []Pointf...

2018-05-08 08:28:12 558

原创 面试题7:插入区间

题目:给定一个没有叠加的区间序列,现插入一个新的区间到该序列中,要求维持没有重叠的情况。假设该系列存放的区间有序的,区间定义如题目“重叠区间个数”。举例:    假定我们已有两个不重叠而且排好序的区间:[1,5],[6,10],现插入一个新的区间[4,6],那么最后结果是[1,10]。代码实现:package mainimport (    "fmt")type Interval struct {...

2018-05-07 20:37:15 197

原创 面试题6:重叠区间个数

题目:给定多个可能重叠的区间,找出重叠区间的个数。举例    输入:[1,5],[10,15],[5,10],[20,30]    输出:3解法一:常规解法,就是我们一上来,最先想到的方法就是使用暴力破解,直接扫描,先第一个区间开始,看这个区间是不是在后面其他区间里面,两两区间判断是否重叠的方式,用一个数组存放区间是否存在重叠,如果两个区间重叠,比如第一个区间和第五个区间重叠,则把数组下标0,4这...

2018-05-07 17:14:45 2996

原创 面试题5:最大下标距离

题目:给定一个整型数组A,找出最大下标距离j-i,当且仅当 A[i]<A[j]和i<j书中给出的思路:思路一:常规我们最直观想到的解决方法是(1)i=0,j=end(end为最后下标所在位置),max=0(2)如果A[i]<A[j],j-i>max,则max=j-i(3)i++,j=end(4)重复第二、第三步骤,直到i==j这种算法的时间复杂度是 1+2+...+n-1 ...

2018-05-05 22:59:31 536

原创 面试题4:数组旋转

题目:返回将一维数组向右旋转k个位置的结果。比如,一维数组{1,2,3,4,5},k=2时,返回结果时{4,5,1,2,3}。要求常数级空间复杂度,允许修改原来数组。书中给出的思路:    如果允许额外分配线性空间,那么可以错位复制原有数组的元素。如果允许修改原有数组,那么我们可以通过三次反转数组来实现数组旋转,不需要申请额外空间,并且每次反转时间为O(n),从而实现线性的时间复杂度和常数级的空间...

2018-05-05 21:20:45 208

原创 面试题3:两数之和

题目:设计一个类,包含如下两个成员函数:    Save(int input)    插入一个整数到一个整数集合里,整数集中可以存在相同值。    Test(int target)    检验是否存在两个数和为输入值。如果存在这两个数,则返回true,否则返回false。书中给出的解析:这题相比上一题,只要把<值,下标>改成<值,个数>,第一次遍历将数组存到哈希表里面;第二...

2018-05-05 20:19:32 458

原创 面试题2:两数之和 2

题目:给定一个整型的数组,找出其中的两个数使其和为某个指定的值,并返回这两个数的下标(数组下标是从0开始)。假设数组元素的值各不相同,则要求时间复杂度为O(n),n为数组的长度。书中给出的核心思想:利用哈希函数,因为题意给出的是数组元素的值各不相同,所以第一次可以以键值<value,index>方式存入哈希表中;第二次扫描的时候,检查这个target与当前值的差值是否在哈希表中,且这个...

2018-05-05 16:22:20 210

原创 面试题1:两数之和 1

题目:给定一个整型数组,能否找到找出其中的两个数使其和为某个指定的值?(这个数组是无序的)直接实现(暴力解决):// 暴力破解,O(n^2)的时间复杂度func hasSum(arr []int, target int) bool { length := len(arr) for i := 0;i < length;i += 1 { for j := i + 1;j < le...

2018-05-05 16:01:44 173

转载 Go语言中的构造函数

1、构造函数定义 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。 而golang没有相关的构造函数定义,只能通过new来创建构造函数。 2、构造函数声明 声明一个struct结构: 声明一个全局函数,返回*s...

2018-04-21 19:42:25 2100

转载 ubuntu如何完全卸载Java

1、 移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ): (1) apt-get update (2) apt-cache search java | awk '{print($1)}' | gre...

2018-04-13 21:24:01 3159

原创 ubuntu中下载.tar.gz 安装包添加到桌面启动

第一步:解压tar.gz文件    sudo tar -xzf tar.gz文件 解压之后的路径第二步:创建全局变量     sudo ln -s 软件的绝对路径 /usr/bin/软件名第三步:添加启动器应用图标,也就是可以从启动器快速启动,执行    vim /usr/share/applications/软件名.desktop并添加如下内容[Desktop Entry]Encoding=UT...

2018-04-13 12:44:02 1704

转载 ubuntu 安装lamp环境

基本设置1.配置网络环境管理员给分配了一个静态IP,所以还需要进一步配置网络环境配置DNS:右上角网络连接->编辑链接->有线连接1->IPv4设置->DNS服务器:202.112.80.106->保存登陆网关:对于校园网用户来说,登陆网关才能访问外网测试: ping www.baidu.com2.设置root密码sudo passwd切换到root用户:su 或 s...

2018-04-13 10:35:59 209

转载 中序表达式转后缀表达式

对于一个算术表达式我们的一般写法是这样的(3 + 4) × 5 - 6这种写法是中序表达式 而后序表达式则是将运算符放在操作数的后面,如3 4 + 5 × 6 -可以看出后序表达式中没有括号, 只表达了计算的顺序, 而这个顺序恰好就是计算器中的一般计算顺序。运用后缀表达式进行计算的具体做法:建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运...

2018-04-12 21:40:37 477

转载 Mware Workstation 与 Device/Credential Guard 不兼容.

解决办法   禁用hyper版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hangyejiadao/article/details/53468687

2018-04-11 08:23:21 1443

原创 archive/tar包

        Go标准库中的tar包实现了tar格式压缩文件的存取。本包目标是覆盖大多数tar的变种,包括GNU和BSD生成的tar文件。前面一句是go标准库中所说,其实就是可以使用这个包,然后可以在windows,linux,mac,unix系统上运行,达到不需要去知道不同操作系统的tar文件底层实现而可以跨平台使用。接下来学习这个标准库的使用:一、首先是这个包里面的常量[html] view...

2018-04-08 21:03:43 2049

原创 DHCP协议

DHCP协议采用UDP作为传输协议,DHCP服务器端使用67号端口,DHCP客户端使用68号端口接收来自DHCP服务器端的回应应答消息。1、DHCP Client以广播的方式发出DHCP Discover报文。2、所有的DHCP Server都能够接收来自DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP ...

2018-04-05 04:02:41 769

原创 堆排序

在理解堆排序前,先理解下什么是堆?堆:所谓的堆就是一颗完全二叉树的每个节点都不大于子节点。完全二叉树:二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。堆排序的核心思想:(1)先将数据排序成一个堆(2)输出堆顶(3)将最后一个节点(最低层,最右边)放入堆顶(4)调整使之成为一个堆(5)重复 (2)~(4) ...

2018-04-05 03:11:03 142

原创 插入排序

算法原理:插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法步骤:1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素带最后一个元素当成是未排序序列。2)从头到尾依次扫描未排序系列,将扫描到的每一个元素插入到有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素想等,则将待插入元素插入到相等元素的后...

2018-04-05 01:56:36 162

空空如也

空空如也

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

TA关注的人

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