Go 每日一库之 goquery

简介goquery是用 Go 语言编写的一个类似于 jQuery 的库。它基于 HTML 解析库net/html和 CSS 库cascadia,提供与 jQuery 相近的接口。Go 著名的爬虫框架colly就是基于 goquery 的。快速使用本文代码使用 Go Modules。创建目录并初始化:$ mkdir goquery && cd goquery $ go mod init github.com/darjun/go-daily-lib/goquery安装goquery库:$ go ge...阅读全文

Segmentfault 2020-10-15 02:32:33 darjun

开源项目: prome_shard consulwatch+动态分片实现Prometheus采集端高可用

开源项目地址:项目地址: https://github.com/ning1875/prome_shard项目说明prometheus采集端单点问题采集类型采集机器级别的指标采集k8s基础监控指标采集部署在lb后面的vm业务指标采集部署在pod里的业务指标采集各种中间件的指标 如kafka zk clickhouse等面对如此复杂的采集类型,一般会使用一批采集Prometheus各司其职sd发现问题面对不同的采集来源,有对应的服务发现类型,如k8s_sd,我们修改Prometheus代码适配不同的...阅读全文

Segmentfault 2020-10-11 14:32:38 ning1875

bee generate docs

1. beego支持的注解 bee 1.12.0 注释 描述 router 以空格分隔的路径定义。 path,[httpMethod] Title 用于标识操作的唯一字符串。在所有API操作中必须唯一。 Description 操作行为的详细说明。 Summary 该操作的简短摘要。 Success 以空格分隔的成功响应。return code,{param type},data type,comment Param 用空格分隔的参数。param name,param type,data typ...阅读全文

简书 2020-10-11 12:32:42 天地一小儒

链表深拷贝

在 leetcode 上做到了一道题,让返回一个链表的深拷贝,感觉很有意思,记录一下。 深拷贝和浅拷贝 什么是浅拷贝?当你在拷贝一种数据结构的时候(结构体、类、map...),如果拷贝的只是这个数据结构的引用,那么这就是浅拷贝 举个例子(浅拷贝) 此时有一个 map,暂且命名为 "s",存放一个 1 s := make(map[int]int, 0) s[1] = 1 将 "s" 拷贝给 map "p",修改 p 的值 p[1] = 2 分别打印出修改前和修改后 "s" 里存的值,看看是什么效果...阅读全文

简书 2020-10-11 10:34:03 没有梦想的阿巧

利用 Docker Compose 编排 PHP-FPM+Apache

前言 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用,项目源码可以在 Github 上查看:https://github.com/docker/compose,主要基于 Python 编写。 Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multicontainer Docker applications)」,其前身是开源项目 Fig。 关于 Docke...阅读全文

简书 2020-10-11 10:34:02 金刀大菜牙

判断系统是大端还是小端存储——golang

简单来说,大端存储是将高位的数值存储于低位的内存地址(以字节为单位),而小端与之相反。比如一个16位的整数,两个字节,假定是0x1,若采用大端存储,则高位字节的值为1,低位字节的值为0 具体代码实现如下: package byteorder import ( "encoding/binary" "unsafe" ) const intWidth int = int(unsafe.Sizeof(0)) var byteOrder binary.ByteOrder func ByteOrder() ...阅读全文

简书 2020-10-11 10:34:00 卜是

Go并发编程之传统同步—(3)原子操作

前言之前文章中介绍的互斥锁虽然能够保证同串行化,但是却保证不了执行过程中的中断。要么成功、要么失败,没有中断的情况,我们叫它叫原子性,这种由硬件 CPU 提供支持的特性,是非常可靠的。百度百科上关于原子操作的介绍。原子操作由 sync/atomic 包提供操作支持。加法(add)实现累加func TestDemo1(t *testing.T) { var counter int64 = 0 for i := 0; i < 100; i++ { go func() { atomic.AddInt6...阅读全文

Segmentfault 2020-10-11 10:33:59 sown

冒泡、选择、插入排序

三个时间复杂度为 O(n^2)的排序算法排序有很多种,有些算法连名字都没听过,经过这段时间的刷题,我在这里总结一下几个常见的排序。我们都知道,算法是要考虑时间复杂度和空间复杂度的,所以我把算法分了三类,分别是时间复杂度是 O(n^2)、O(nlogn)、O(n)。注意这里的时间复杂度是指平均时间复杂度,关于最坏情况下的时间复杂度和最好情况下的时间复杂度在下面讨论。对于排序算法,我们需要了解几个问题,算法的时间复杂度是多少?是否是原地排序算法?算法是否稳定?时间复杂度我个人感觉可以理解为代码需要执...阅读全文

Segmentfault 2020-10-14 18:32:33 五行缺金

链表深拷贝

在 leetcode 上做到了一道题,让返回一个链表的深拷贝,感觉很有意思,记录一下。深拷贝和浅拷贝什么是浅拷贝?当你在拷贝一种数据结构的时候(结构体、类、map...),如果拷贝的只是这个数据结构的引用,那么这就是浅拷贝举个例子(浅拷贝)此时有一个 map,暂且命名为 "s",存放一个 1s := make(map[int]int, 0) s[1] = 1将 "s" 拷贝给 map "p",修改 p 的值p[1] = 2分别打印出修改前和修改后 "s" 里存的值,看看是什么效果。s := ma...阅读全文

Segmentfault 2020-10-14 17:32:33 五行缺金

学习计划

2020/10/10 作为一名程序猿深表遗憾,虽然积累了丰富处理问题的经验但是对于一个工作了8年的程序员来说,我的水平太低了。虽然作为c语言工程师之前都是面向过程,但是看了redis和nginx的源码才意识到必须做思想上的改变------面向对象。 目前本人已经转向了golang的怀抱,而立之年开始努力学习,笨人有笨法先从抄代码开始。 读书记录 1.《head first》 代码抄写 1.golang的设计模式(新手入门) https://github.com/senghoo/golang-de...阅读全文

简书 2020-10-11 08:32:39 g_Dotaer

Go-Flag包文档翻译

golang-flag包文档翻译 flag包实现了命令行参数解析。 代码中仅对注释进行翻译。 使用 使用flag.String()、flag.Bool()、flag.Int()等函数声明命令行参数。 如下示例声明了一个整型参数-flagname,并将信息存储在了指针ip中,类型为*int。 import "flag" var ip = flag.Int("flagname", 123, "help message for flagname") 如果你喜欢,你可以使用Var()这类函数将参数绑定到...阅读全文

简书 2020-10-11 07:32:39 A_Donga

Golang标准库——go(1)

ast ast ast包声明用于表示Go包语法树的类型。 func FileExports func FileExports(src *File) bool FileExports在适当的位置修剪Go源文件的AST,以便仅保留导出的节点:未导出的所有顶级标识符以及它们的关联信息(例如类型,初始值或函数体)都将被删除。 删除非导出字段和导出类型的方法。 File.Comments列表未更改。 FileExports报告是否存在导出的声明。 func FilterDecl func FilterDe...阅读全文

简书 2020-10-11 01:32:39 DevilRoshan

Golang标准库——go(2)

build constant doc build 包build收集有关Go的信息。 Go Path Go路径是包含Go源代码的目录树的列表。咨询以解决在标准Go树中找不到的导入。缺省路径是GOPATH环境变量的值,它被解释为适合于操作系统的路径列表(在Unix上,该变量是用冒号分隔的字符串;在Windows上,是用分号分隔的字符串;在Plan 9中,是列表)。 Go路径中列出的每个目录必须具有规定的结构: src /目录包含源代码。 “ src”下面的路径确定导入路径或可执行文件名称。 pkg ...阅读全文

简书 2020-10-11 01:32:39 DevilRoshan

Golang标准库——go(3)

format importer parser printer scanner format format包实现Go源码的标准格式。 func Node func Node(dst io.Writer, fset *token.FileSet, node interface{}) error 节点以标准gofmt格式格式化节点,并将结果写入dst。 节点类型必须为* ast.File,* printer.CommentedNode,[] ast.Decl,[] ast.Stmt,或与ast.Exp...阅读全文

简书 2020-10-11 01:32:39 DevilRoshan

Golang 字符串 格式化

golang format在 Go 语言中,fmt.Sprintf(), fmt.Printf(), fmt.Fprintf(), Log.Printf(), log.Panicf() 等函数常常会用字符串格式化参数,这一篇文章带你熟悉所有参数。参数介绍动 词功 能%v按值的本来值输出%+v在 %v 基础上,对结构体字段名和值进行展开%#v输出 Go 语言语法格式的值%T输出 Go 语言语法格式的类型和值%%输出 % 本体%b整型以二进制方式显示%o整型以八进制方式显示%d整型以十进制方式显示%...阅读全文

Segmentfault 2020-10-14 15:32:32 小白要生发

Windows 下 Golang 多版本管理

Windows 下 golang 多版本管理当前 golang 各个版本还是有些许不兼容,最近遇到 go-micro 框架只能运行在 go 1.13 ~ 1.14 版本,而我Windows 下安装的又是 1.15,所以这时就需要安装 其他版本的golang,那么多版本 golang 如何在 Windows 上共存呢。如果你在以下操作过程中,发现命令不生效,可以新开一个命令行窗口进行重试。接下来会给大家介绍我尝试过的 4 种方案。 最好的方案是第四个,第一、三个方案失败了。建目录 改 PATH在W...阅读全文

Segmentfault 2020-10-14 10:32:34 小白要生发

服务树系列(二):开源项目:stree-index 物化路径+倒排索引实现的开源服务树核心组件

开源项目地址:项目地址: https://github.com/ning1875/stree-index什么是服务树及其核心功能服务树效果图可以看我之前写的文章 服务树系列(一):什么是服务树及其核心功能核心功能有三个树级结构灵活的资源查询权限相关今天仅讨论前两种的实现树级结构实现调研后发现有下列几种实现方式左右值编码区间嵌套闭包表物化路径而stree-index采用的是物化路径物化路径原理在创建节点时,将节点的完整路径进行记录,方案借助了unix文件目录的思想,主要时以空间换时间+-----+...阅读全文

Segmentfault 2020-10-13 15:32:37 ning1875

eventrouter 采集kubernetes事件

<meta charset="utf-8"> eventrouter可以采集集群中的event 到es中。 对于集群的问题排查,事件取证还是很有帮助的。开源的eventrouter 支持多种sink,可以方便的和es结合,这里采用代码库中的代码打包到本地仓库后部署。 clone 源代码 git clone https://github.com.cnpmjs.org/heptiolabs/eventrouter.git 修改Makefile中相关参数,以适应中国网络 修改REGISTRY变量为自己...阅读全文

简书 2020-10-10 17:32:47 浩洋的运维笔记

周结

又一周结束了,其实总的来看我这周好像什么都没做,但是不知道为什么现在的学习状态还不错。虽然让我觉得很实在没有当时那种百分一百二的涨感,但是让我有每天百分之六七十的饱满感,这也许就是温水煮青蛙的感觉吧!一切都很自然,似乎本就该这样。 马上面临着发现杯和蓝桥杯的到来想要测试自己比去年进步了多少,也许进步很大也许没有多少进步,毕竟算法竞赛上面下的功夫不深了解更多的是面向面试的一些算法问题,如果正常积累情况下我感觉以后面试算法这一块问题不大,但是和我刚刚入时候的愿望可是相差太多了,也是自己没有认知到算法...阅读全文

简书 2020-10-10 17:32:47 刘超_强化班

18.Golang设计模式之中介者模式

中介者模式 GitHub代码链接 中介者模式(Mediator Pattern)用来降低多个对象和类之间的通信复杂性。 什么是中介者模式 对象之间存在大量的关联关系,势必会导致系统结构变得复杂。若一个对象改变,还要跟踪与其相关的对象,跟着一起改变。 中介者模式提供了一个中介类,该类通常处理不同类之间的通信,并且支持松耦合,使代码易于维护。 解决了什么问题 中介者模式解决了多个类相互耦合,导致系统复杂度升高的问题。通常1.用于机场调度系统。2.MVC框架,其中C(控制器)就是M(模型)和V(视图)...阅读全文

简书 2020-10-10 17:32:47 ShawnLee_123