Go语言中文网 为您找到相关结果 1496

求人不如求己,自己动手写一个CSDN博客备份小工具?

求人不如求己,自己动手写一个CSDN博客备份小工具? 前提概要 背景 cabtool 实践基础 爬虫实践 (一)分析如何爬取博客的markdown内容 (二)分析如何批量爬取博客的markdown (三)如何模拟登录,获得cookies 使用说明 方式一 方式二 前提概要 背景 因为笔者在上个月的时候,突然想扩展一下技术栈,不能仅仅局限于Java,还是得掌握一门工具语言,不然显得太low。所以也就对Python和Golang类的语言有了一些兴趣。也就在上个月简单的学习了Python3。但是呢,苦于没有时间也没有项目可以实践,所以爬虫就成为了避免忘记python的最佳实践 同时笔者发现在CSDN写的笔记好像也堆积了八九十篇啦。但是CSDN好像却没有类似简书一键导出的备份功能。于是之前没有数据备...阅读全文

博文 2019-07-20 08:32:52 SnailMann

游戏服务器开发一些心得体会

通信数据大小端需要注意:java收发的都是网络格式的数据是大端数据,c++运行在Linux中的服务如果没有转成网络格式数据,服务器一般都是小端格式的数据,这个在编解码的时候需要留心,否则可能解不出对方发来的数据,自己发的数据对方也解不出来。如何确认双方发送的数据是否一致呢,一般来说可以在收到一个完整的消息包后,把该消息包字节流的数据使用16进制字符串打印出来,就可以很容易比较 对于网关服务 GateServer,登录服务 LoginServer 这两种部署在外网的服务与客户端之间之间打交道的,它们的压力大部分来自网络IO而非业务计算,尤其是网关服务器 GateServer 几乎没什么业务逻辑处理,主要处理网络消息的转发(客户端发送到后端服务器,后端服务器发送到客户端)与过滤。从它负责的业务角...阅读全文

博文 2020-08-22 07:32:39 _给我一支烟_

Nali:一个查询IP地理信息和CDN提供商的离线终端工具

开源地址:github.com/zu1k/nali 来源 该工具受 Nali C版本 和 nali-cli js版本 的启发. 我想要在终端对IP地理信息和CDN服务提供商进行查询,发现了Nali这个工具,Nali与哪里谐音,非常适合这类工具 经过简单的使用,我发现最初的C语言版本功能缺失,而苏卡卡大佬的js版本包实在大的恐怖、而支持的平台非常有限,所以我用golang重写了这个工具,在原有功能的基础上增加了对IPv6的支持,并且增加了Geoip2数据库 功能 纯真 IPv4 离线数据库 ZX IPv6 离线数据库 Geoip2 城市数据库 (可选) IPIP 数据库 (可选) CDN 服务提供商查询 支持管道处理 支持交互式查询 同时支持IPv4和IPv6 查询完全离线 全平台支持 安装 ...阅读全文

golang爬虫框架colly

colly.png colly一款快速优雅的golang爬虫框架,简单易用,功能完备。 官网地址:http://go-colly.org/ 包地址:import "github.com/gocolly/colly" 一个简单的例子: package main import ( "fmt" "github.com/gocolly/colly" ) func main() { c := colly.NewCollector() c.OnHTML("a", func(e *colly.HTMLElement) { e.Request.Visit(e.Attr("href")) }) c.OnRequest(func(r *colly.Request) { fmt.Println("Visiting...阅读全文

博文 2020-09-07 00:10:25 写个代码容易么

聊聊在Go语言里使用继承的翻车经历

Go不是面向对象的语言,但是使用组合、嵌套和接口可以支持代码的复用和多态。关于结构体嵌套:外层结构体类型通过匿名嵌套一个已命名的结构体类型后就可以获得匿名成员类型的所有导出成员,而且也获得了该类型导出的全部的方法。比如下面这个例子: type ShapeInterface interface { GetName() string } type Shape struct { name string } func (s *Shape) GetName() string { return s.name } type Rectangle struct { Shape w, h float64 } 复制代码Shape类型上定义了GetName()方法,而在矩形Rectangle的定义中匿名嵌套了Sha...阅读全文

博文 2020-04-20 13:34:22 kevinyan

golang简单tcp代理

使用golang网络编程实现一个简单的TCP代理(不支持HTTP) package main import ( "flag" "github.com/rs/zerolog" "net" "os" ) var logger = zerolog.New(os.Stdout).With().Timestamp().Logger() func main() { help := flag.Bool("help", false, "print usage") bind := flag.String("bind", "127.0.0.1:6000", "The address to bind to") backend := flag.String("backend", "", "The backend s...阅读全文

博文 2020-06-06 11:32:42 写个代码容易么

Elasticsearch初识

开源分布式搜索分析引擎, 基于Java语言开发, 采用Lucene内库构建 近实时 分布式存储, 搜索, 分析引擎 特性 支持分布式, 可水平扩展, 集群规模可以单个扩展到数百个节点 降低全文检索的学习曲线 可以被任何编程语言调用 生态圈 ELK 日志套件(Elasticsearch, Logstash, Kibana) Logstash 数据处理管道, 支持从不同来源采集数据, 转换数据, 并将数据发送到不同的存储库中. Kibana 可视化分析利器,帮助用户解开对数据的任何可疑问题 Beats是轻量的数据采集器.基于golang开发 Elasticsearch的应用 搜索 日志管理 指标分析 安全分...阅读全文

博文 2020-01-18 15:32:40 百里江山

使用Vim编辑器开发Go的简单入门

今天是一次做Go的笔记,一开始直接打开Github上的Go项目然后跑到Wiki位置,然后作者列出了一堆学习Go的资料,这里我 以第一个学习资料https://tour.golang.org/作为Go学习到入门。然后为了训练我的终端运用 能力还有Vim下的编码能力这里我使用到了tmux和Vim编辑器,然后之前已经在VIM里面安装了Vim-go插件了,所以在之前 的Go项目文件目录下可以直接使用命令模式使用:Go来执行相应的操作。如果项目报错都话你可能是没有按照 Vim-go的要求现在项目里面执行:GoInstallBinaries. You will also need to install all the necessary binaries. vim-go makes it easy to...阅读全文

理解Kubernetes网络:ingress篇

在本系列的第一篇文章中,我讲了Pod跨Kubernetes集群中的节点相互连接的网络。第二篇重点讲了服务网络如何为Pod提供负载平衡,以便群集内的客户端可以与它们可靠地通信。对于这第三篇也是最后一篇文章,我想以这些概念为基础来展示集群外的客户端如何使用同一服务网络连接到Pod。由于各种原因,这很可能是三篇涉及最多的,并且掌握前两篇关于pod和service的内容是理解本篇的的前提。 路由并不是负载均衡 在上一篇文章中,我们创建了一个具有两个Pod的部署,并为该服务分配了一个IP,称为“集群IP”,针对Pod的请求已发送到该IP。我将在此处继续根据该示例进行构建。回想一下,该服务的群集IP 10.3.241.152位于与Pod网络以及节点本身所在的网络不同的IP地址范围内。我称这个地址空间为“...阅读全文

好程序员大数据培训技术分享:Hadoop集群同步

好程序员分享:Hadoop集群同步分享——是技术突飞猛进的很好体验!在好程序员学习大数据技术,开始学会了分享,班里五十个人,每个人就能得到49份不同技术探讨。每次到分享的时刻,总会收获不同的想法。一、同步方式 选择一个机器,作为时间服务器(这里选择hadoop01),所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。二、所需工具 时间同步服务器有两个:ntpd和ntpdatp。虽然使用二者都能达到时间同步的目的,但是使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,它还可通过客户端与标准时间服务器进行时间同步,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。三、...阅读全文

Golang 约瑟夫环

总共有多少人n,每隔着几个报数 func test( n int,spaceNum int) { memberArr := []bool{} for i := 0; i < n; i++ { memberArr = append(memberArr, true) } count := 0 //计数器 index := 0 //下标 killNum := 0 //kill的人数 for { if memberArr[index] { count++ if count == spaceNum { memberArr[index] = false killNum++ count = 0 fmt.Printf("kill人数是%v\n", killNum) fmt.Printf("数组是%v\n",...阅读全文

博文 2020-09-04 15:14:42 邦_

C++服务端面试准备(5)网络协议相关

声明:本文内容纯属博主自己查找和归纳的个人所需的知识点,仅作参考,如有错误,博主强烈希望您指出。如果您是某个知识点的原创博主,如有需要,可联系本人加上链接。本文内容会根据博主所需进行更新,希望大家多多关照。 由于博主不是计算机专业出身,个人能力有限,本文内容涉及到博主的知识盲区,在这领域不知道需要掌握多少,只是把自己看到的大概归纳一下,请见谅。也希望网友们可以指点指点,谢谢! 网络层次划分 TCP/IP 4层模型:应用层、传输层、网络层、网络接口层TCP/IP 5层模型:应用层、传输层、网络层、数据链路层、物理层OSI 7层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 物理层:发送高低电压即电信号 数据链路层:电信号分组,以太网协议,单位为帧 网络层:对子网间的数据包进行...阅读全文

博文 2020-04-10 21:32:41 DX3906

新装Linux操作系统后,要保留哪些自启动服务?

和Windows系统一样,Linux服务器运行过程中也会一些没用的软件服务默认运行,这些占用了很多系统资源,也会有安全隐患,所以一般是建议关闭的。那么,工作中Linux主机到底需要有哪些开机自启动服务呢? 新装Linux系统之后,有必要保留的开机自启动服务有5个: Ø sshd:远程连接Linux服务器时要用到,所以必须开启,不然就无法提供远程连接服务了。 Ø rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中。 Ø network:系统启动时,如果想激活或关闭各个网络接口的话,可以考虑开启。 Ø crond:用于周期性的执行系统及用户配置的任务计划。有需要时开启。几乎是运维工作中必须要用的一个软件。 Ø sy...阅读全文

博文 2019-11-15 16:40:15 zhouzhou2018

AQS抽象队列同步器

模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 Lock接口及其实现 中,DemoReentrantLock 和 DemoReadWriteLock 代码相似度很高。DemoReentrantLock 中的加解锁完全可以用DemoReadWriteLock中代替,即可实现加解锁。 优化两个锁的代码-采用模板方法模式 CommonMask实现两个锁共有的方法 import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurr...阅读全文

博文 2020-01-19 01:32:42 依弗布德甘

Go安装使用

引言: 上篇 《Golang快速入门(不用急,但要快)》 我们大致过了一遍Go语言的基本语法,但在开始正式的项目创建前,有必要选择一个比较顺手的 IDE (编辑器),由于之前一直都是做Java相关的开发,自然而然地想着能否用一样的编辑器来进行开发,毕竟 Eclipse 还是挺强大的,但是它并不具备跨平台特性,目前只支持Windows平台。不过,对于日常开发已经够用了,最后发布的时候再将项目部署到Linux即可,通常我们也不会直接在Linux环境进行开发。接下来我们就来配置一下我们的 Eclipse ,让它支持Go项目的开发。 安装配置: 进行此操作的前提是你已经安装好了Eclipse,假如还没有,可以到官方下载指定版本的安装包,先完成Eclipse的安装:Eclipse下载页 1.安装goc...阅读全文

博文 2019-06-13 18:32:42 Saxon_323e

Nebula Graph 的数据模型和系统架构设计

本篇主要介绍 Nebula Graph 的数据模型和系统架构设计。 有向属性图 DirectedPropertyGraph Nebula Graph 采用易理解的有向属性图来建模,也就是说,在逻辑上,图由两种图元素构成:顶点和边。 image.png 顶点 Vertex 在 Nebula Graph 中顶点由标签 tag 和对应 tag 的属性组构成, tag 代表顶点的类型,属性组代表 tag 拥有的一种或多种属性。一个顶点必须至少有一种类型,即标签,也可以有多种类型。每种标签有一组相对应的属性,我们称之为 schema 。 如上图所示,有两种 tag 顶点:player 和 team。player 的 schema 有三种属性 ID (vid),Name (sting)和 Age (in...阅读全文

RocketMQ主从同步源码分析

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 之前写了一篇关于 RocketMQ 队列与 Kafka 分区副本的区别文章,里面提到了 RocketMQ 的消息冗余主要是通过主备同步机制实现的,这跟 Kafka 分区副本的 Leader-Follower 模型不同,HA(High Available) 指的是高可用性,而 RocketMQ 的HA机制是通过主备同步实现消息的高可用。 HA 核心类 HA 的实现逻辑放在了 store 存储模块的ha目录中,其核心实现类如下: image HAService:主从同步的核心实现类 HAService$AcceptSocketService:主服务器监听从服务器连接实现类 HAServic...阅读全文

博文 2019-10-14 20:33:36 aside section ._1OhGeD

xxl-job定时任务golang执行器 xxl-job-executor-go

# xxl-job-executor-go 很多公司java与go开发共存,java中有xxl-job做为任务调度引擎,为此也出现了go执行器(客户端),使用起来比较简单: # 支持 ``` 1.执行器注册 2.耗时任务取消 3.任务注册,像写http.Handler一样方便 4.任务panic处理 5.阻塞策略处理 6.任务完成支持返回执行备注 7.任务超时取消 (单位:秒,0为不限制) 8.失败重试次数(在参数param中,目前由任务自行处理) 9.日志查看(未完成) ``` ## Example ``` package main import ( xxl "github.com/xxl-job/xxl-job-executor-g...阅读全文

硬核!《DNS 速成指南》一文搞懂 DNS ,网络排查不再难

1. DNS 是什么? DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。 举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。 2. 域名的层级 由于后面我会讲到 DNS 的解析过程,因此需要你对域名的层级有一些了解 根域名 :.root 或者 . ,通常是省略的 顶级域名,如 .com,.cn 等 次级域名,如 baidu.com 里的 baidu,这个用户是可以注册购买的 主机域名,比如 baike.baidu.com 里的baike,这个用户是可分配的 主机名.次级域名.顶级域名.根域名 baike.baidu.com....阅读全文

博文 2020-06-09 11:48:45 王一白

pip包管理器的使用

前情提要: python包的介绍: 可以说是python的功能扩展模块,有官方开发的也有第三方开发的,总之都会经过pip官方社区的整合才会上架。 区别于C++、java这些传统的语言需要自己去找扩展功能的文件,而pip直接就可以从社区服务器下载(不过网络不怎么好) 其实新开发的语言都有这样的特点,比如nodejs和golang都可以在线下载扩展包,甚至还有自带web服务的组件 目前如果你在 python.org 下载最新版本的安装包,那已经自带了pip包管理器。 Python 2.7.9 + 或 Python 3.4+ 版本都自带 pip包管理器。 pip 官网:https://pypi.org/project/pip/ Ubuntu安装pip: $sudo apt-get install ...阅读全文

博文 2020-06-17 17:45:41 JJJoeee

Go 译文之词法分析与解析 Part Two

作者:Adam Presley | 地址:adampresley.github.io/2015/05/12/… 译者前言 本文是关于词法器实现的具体介绍,如果在阅读时遇到困难,建议参考源码阅读,文中的代码片段为了介绍思路。如何解析会在下一篇介绍。 最近简单看了下 Go 源码,在 src/go 目录下有几个模块,token、scanner 和 parser 应该就是 Go 词法相关实现的核心代码,打开 token 目录会发现其中的源码和上一节介绍的内容有诸多相似之处。 由于最近并发任务比较多,不能以最快的速度更新。词法的相关内容,除了本系列,我把其他一些相关文章的链接都贴在下面,如果英文阅读功底不错,可自行阅读。 A look at Go lexer/scanner packages Rob ...阅读全文

博文 2019-07-26 18:06:42 波罗学

Golang之iOS自动化接口测试(一)需求简介

1.为什么要搞这种东西? 1.测试资源不够 ,没有时间测试iOS的需求 2.因为平时测试的不多, 所以对上报等问题总是漏测 3.会有一些改动, 会影响之前的一些上报逻辑 4.想自己跑一边所有的上报逻辑, 展示上报, 点击上报, trace上报等 2.为什么选择了Golang? 1.以前用python写过自动化的iOS app安装, 脱壳,打开,卸载等操作,想试试其他的方法. 2.考虑并尝试了privoxy , anyproxy ,对https的代理返回等都不够友好,花了很多时间没弄好,anyproxy有些https抓不到, 也不知道什么原因, 但是挺好写 3.同事跟我说要不试试golang, 看了下, 感觉可以符合需求, 还能学习新的知识点 安排 3.大致思路 1.因为我要测试的是SDK ,...阅读全文

博文 2020-04-30 21:32:54 西博尔

隧道转发爬虫代理的使用

网络爬虫,是一种自动获取网页内容的程序,是搜索引擎的重要组成部分。一般人能访问到的网页,爬虫也都能抓取。爬虫抓取,就是模拟真实用户浏览网页采集数据。爬虫是可以按照一定的规则,自动的采集信息。正常的用户访问网站浏览时间较长,访问也不会太过于频繁,目标网站服务器会限制爬虫行为,这是就需要降低访问评率或者停止访问或者用http代理去配合爬虫访问HTTP代理分很多类型,至于选择哪种类型的代理IP最适合爬虫,看个人业务的需求,需求大的业务,对IP池要求大的可以选择一些高质量的隧道转发的爬虫代理加强版。HTTP代理的作用:1、通过HTTP代理访问一些被反爬的网站。2、加快访问目标网站的速度。3、修改本地外网,隐藏本地IP如何使用隧道转发代理: package main import ( "net/url...阅读全文

记一次使用 frp 完成内网服务器实现穿透全过程

写在前面 因之前内网穿透一直使用的 ngrok,使用的 ngrok 1.x 版本的最新 1.7.1,而1.7.1有严重的内存泄露问题,再加上 1.x 早已不在维护,ngrok 2.x 后已经不再开源,所以考虑换一个内网穿透工具。 一、业务场景 装备情况如下: 一台阿里云服务器(Windows Server 2012)、公网IP。 三台内网服务器,其中两台 Windows Server,一台 CentOS。 一个一级域名,已解析到公网IP。 需求:通过域名或IP可访问三台内网部署的 http 服务、通过域名或IP可通信三台内网的远程桌面或 SSH 二、为什么选择 frp 开源,维护频繁。 支持 TCP、UDP、HTTP、HTTPS、STCP 等协议。 GoLang开发占用内存小,代理稳定。 配...阅读全文

博文 2020-09-03 11:32:48 六小六的世界

32. 理解 Go 语言中的 Context

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 什么是 Context? 在 Go 1.7 版本之前,context 还是非编制的,它存在于 golang.org/x/net/context 包中。 后来,Golang 团队发现 context 还挺好用的,就把 context 收编了,在 Go 1.7 版本正式纳入了标准...阅读全文

博文 2020-06-10 08:32:43 Python编程时光

您需要了解的有关Kubernetes服务质量(QoS)

服务质量(QoS)类是Kubernetes的概念,它确定Pod的调度和驱逐优先级。 Kubernetes调度程序使用QoS类来做出有关将Pod调度到节点上的决策。 Kubelet使用它来管理驱逐pod的顺序,以及使用高级CPU管理策略允许更复杂的pod调度决策。 QoS类由Kubernetes本身分配给Pod。但是,DevOps可以通过处理Pod内各个容器的资源请求和限制来控制分配给容器的QoS类。 在kubernetes 中存在三种QoS类: Guaranteed Burstable BestEffort 让我们看一下不同的QoS类,看看它们如何与Kubernetes Scheduler和Kubelet一起工作。 Guaranteed 如何分配Pod的QoS Guaranteed 等级? ...阅读全文

Go 译文之词法分析与解析 - Part One

作者:Adam Presley | 地址:Writing a Lexer and Parser in Go - Part 1 译者前言 一直对词法分析与解析的话题比较感兴趣,最近发现了好几篇相关的优秀文章,准备好好翻译和研究下。我的理解,词法分析与解析的应用还是比较广泛的,无论简单的配置文件、各种模板语言、还是我们每天在写编程语言都离不开它。 本篇文章一个系列文章的第一篇,主要介绍的是词法分析与解析的一些基础概念,包括什么是词法分析,什么是解析,Token 如何表示等等。 正文如下: 从今天开始,我将会用三篇文章介绍在 Go 中如何构建一个简单的词法分析与解释器。文中介绍的内容主要是基于 Rob Pike 在 2011 年关于 Lexical Scanning In Go 的演讲。这个系列文...阅读全文

博文 2019-07-20 19:04:16 波罗学

32. 理解 Go 语言中的 Context

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 什么是 Context? 在 Go 1.7 版本之前,context 还是非编制的,它存在于 golang.org/x/net/context 包中。 后来,Golang 团队发现 context 还挺好用的,就把 context 收编了,在 Go 1.7 版本正式纳入了标准库。 Con...阅读全文

博文 2020-06-10 11:35:51 王一白

内网穿透工具frp的源码解读之概念流程篇

最近学习go语言,看完基础和高级篇后,果断拿起一个开源项目看看,于是就找到内网穿透工具——frp,它具体干嘛的,我就不多说,可以自己上官网看看,动手试试。 概念 连接,本文用的连接,可以成为socket连接,connection,tcp连接, udp连接等工作连接和通信连接要分开的理解工作连接是实际用户操作的连接,如ssh通信的流量就走这连接。通信连接是客户端与服务端的协议通信建立内网穿透的逻辑,里面逻辑就包含工作连接的创建用户连接是用户发起与服务端的连接实际业务的连接就是目标程序的连接,如ssh,就是内网22端口的连接,frpc会创建一个tcp连接,连接到22端口 角色 客户端:就是执行frpc程序的机子(也就是内网的机子)服务端:就是执行frps程序的机子用户: 就是外网机子,访问frp...阅读全文

博文 2020-07-01 14:32:53 黄小数

图解kubernetes服务打散算法的实现源码

在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,node则是一个具体的节点,而该打散算法的目标就是将pod在zone和node之间进行打散操作 1.2 namespace namespace是k8s中进行资源隔离的实现,同样的筛选也是如此,在筛选的过程中,不同namespace下面的pod并不会相互影响 1.3 计数与聚合 SelectorSpread算法是scheduler中优先级算法的一种,其实现了优先级算法的map/reduce方法,其中ma...阅读全文

博文 2020-01-19 14:34:19 代码仔

硬核!《DNS 速成指南》一文搞懂 DNS ,网络排查不再难

1. DNS 是什么? DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。 举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。 2. 域名的层级 由于后面我会讲到 DNS 的解析过程,因此需要你对域名的层级有一些了解 根域名 :.root 或者 . ,通常是省略的 顶级域名,如 .com,.cn 等 次级域名,如 baidu.com 里的 baidu,这个用户是可以注册购买的 主机域名,比如 baike.baidu.com 里的baike,这个用户是可分配的 主机名.次级域名.顶级域名.根域名 baike.baidu.com....阅读全文

博文 2020-06-09 10:34:54 Python编程时光

通过例子学习 Go 和 Rust ---- 闭包

闭包简而言之,是一段有状态的代码。咱试着用闭包来做一个计数器,每次调用,闭包的状态就加1. Go func intSeq() func() int { i := 0 return func() int { i++ return i } } func main() { nextInt := intSeq() fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) } 1 2 3 Rust 由于编译时我们无法知道闭包的体积,所以用一个Box把它套起来。另外,闭包的具体类型是不可描述的,只能用dyn关键字来通过Trait来描述。 fn main() { fn int_seq() -> Box阅读全文

博文 2020-03-03 15:32:56 Tericoder

Go入手

1、Mac配置环境 1.1 安装go: https://golang.org/dl/ 下载画圈文件,安装即可1.2 配置环境vim ~/.bash_profile 打开配置文件复制下面这些: export PATH="/opt/local/bin:/opt/local/sbin:/usr/local/go/bin:$PATH" export GOROOT=/usr/local/go export GOPATH=/Users/你的go目录/Go export GOBIN=$GOPATH/bin export PATH=$GOBIN:$PATH source ~/.bash_profile 是配置生效 使用 go env 查看go配置 或者 go version 查看版本,这两个命令来检测是否成...阅读全文

Aura: 一个专注于监控和采集的 SDK 组件

## 🎬 Overview ☁️ 在云原生时代,以 [Prometheus](https://prometheus.io) 为中心的监控生态已经逐渐完善,社区也出现了大量的中间件,数据库以及各种基础组件的 exporter,Prometheus 官方也给出了维护了一份 exporter 列表 [instrumenting/exporters](https://prometheus.io/docs/instrumenting/exporters)。 但是 Prometheus 的缺点和它的优点一样明显,缺少高可用的集群方案。想了解 Prometheus 和监控系统的同学可阅读 [Prometheus 折腾笔记](https://github.com/chenjiandongx/promethe...阅读全文

博文 2020-06-01 10:24:46 chenjiandongx

图解kubernetes服务打散算法的实现源码

在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,node则是一个具体的节点,而该打散算法的目标就是将pod在zone和node之间进行打散操作 1.2 namespace namespace是k8s中进行资源隔离的实现,同样的筛选也是如此,在筛选的过程中,不同namespace下面的pod并不会相互影响 1.3 计数与聚合 SelectorSpread算法是scheduler中优先级算法的一种,其实现了优先级算法的map/reduce方法,其中ma...阅读全文

Golang标准库——crypto(3)

tls tls tls包实现了TLS 1.2,细节参见RFC 5246。 Constants const ( TLS_RSA_WITH_RC4_128_SHA uint16 = 0x0005 TLS_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0x000a TLS_RSA_WITH_AES_128_CBC_SHA uint16 = 0x002f TLS_RSA_WITH_AES_256_CBC_SHA uint16 = 0x0035 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA uint16 = 0xc007 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA uint16 = 0xc009 TLS_ECDHE_ECDSA_...阅读全文

博文 2020-09-23 00:32:40 DevilRoshan

Dubbo2.6.x—注册中心源码分析 dubbo-registry模块 (api and zookeeper)

文章有点长,亲,要慢慢看! 1. 概述 1.1 注册中心作用 在Dubbo中,注册中心为核心模块,Dubbo通过注册中心实现各个服务之间的注册与发现等功能,而本次源码的分析为registry模块的api和zookeeper的实现。 服务的提供者和消费者都需要把自己注册到注册中心,提供者让消费者感知到服务存在,从而消费者发起远程调用,也让服务治理中心感知到有服务提供者上线;消费者则是让服务治理中心可以发现自己。 1.2 Zookeeper Zookeeper是一个提供分布式协调服务的开源软件,常用于解决分布式应用中经常遇到的一些数据管理问题。Zookeeper功能非常强大,可以实现如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。关于Zookeeper,大家如果想了解可以关注一...阅读全文

博文 2020-01-11 21:32:47 苡仁ilss

网络爬虫如何添加爬虫代理

现在的互联网时代,大数据的进步,网络爬虫也越来越多的网络爬虫用户。网络爬虫用户在做业务是,访问目标网站时会触发目标网站的反爬机制。由于网络爬虫用户的请求量大和采集速度快,就会导致出现这种情况,如何解决这种情况,就需要用到常见的爬虫代理IP了。那网络爬虫如何寻找这些有效的爬虫代理IP呢?1、浏览器上搜索免费代理IP2、通过自己的爬虫程序去爬取IP3、通过浏览器或者代码验证IP的有效性4、保存文本格式网上爬虫取到的免费代理加到自己的IP池去使用,有些代理虽然能用。但是对于公司业务或者是对代理IP的质量要求高的爬虫用户,不建议使用网上的免费代理,在使用免费代理的过程中很有可能会出现IP失效,网络不稳定,安全性和稳定性等问题,质量明显不行。至于如何选择取决于自己的需求,个人建议使用自动转发的爬虫代理...阅读全文

Golang中没有Struct的动态JSON解析器

Gabs是一个小型实用程序,用于处理Go中的动态或未知JSON结构。它不需要您知道有效负载的结构(例如,创建结构),并且可以通过提供指向它们的路径来访问字段。它几乎只是一个有用的包装,用于导航由encoding / json包提供的map [string] interface {}对象的层次结构。除了出色之外,它没有任何壮观的东西。 安装 go get github.com/Jeffail/gabs 例子 package main import ( "fmt" "github.com/Jeffail/gabs" ) func main() { data := []byte(`{ "employees":{ "protected":false, "address":{ "street":"22...阅读全文

博文 2020-09-21 23:32:40 追梦人在路上不断追寻

Go 每日一库之 gojsonq

简介 在日常工作中,每一名开发者,不管是前端还是后端,都经常使用 JSON。JSON 是一个很简单的数据交换格式。相比于 XML,它灵活、轻巧、使用方便。JSON 也是RESTful API推荐的格式。有时,我们只想读取 JSON 中的某一些字段。如果自己手动解析、一层一层读取,这就变得异常繁琐了。特别是在嵌套层次很深的情况下。今天我们介绍gojsonq。它可以帮助我们很方便的操作 JSON。 快速使用 先安装: $ go get github.com/thedevsaddam/gojsonq 复制代码后使用: package main import ( "fmt" "github.com/thedevsaddam/gojsonq" ) func main() { content := `{...阅读全文

博文 2020-02-25 10:34:28 darjun

go的 bytes.buffer 缓冲器

一、创建缓冲期bytes.buffer是一个缓冲byte类型的缓冲器1、使用bytes.NewBuffer创建:参数是[]byte的话,缓冲器里就是这个slice的内容;如果参数是nil的话,就是创建一个空的缓冲器。2、bytes.NewBufferString创建3、bytes.Buffer{} func main(){ buf1 := bytes.NewBufferString("hello") buf2 := bytes.NewBuffer([]byte("hello")) buf3 := bytes.NewBuffer([]byte{'h','e','l','l','o'}) 以上三者等效,输出//hello buf4 := bytes.NewBufferString("") buf...阅读全文

博文 2020-08-07 14:32:44 code

golang 反向代理reverseproxy源码分析

1 基于reverse proxy实现的反向代理例子 package main import ( "log" "net/http" "net/http/httputil" "net/url" ) func main() { // 地址重写实例 // http://127.0.0.1:8888/test?id=1 =》 http://127.0.0.1:8081/reverse/test?id=1 rs1 := "http://127.0.0.1:8081/reverse" targetUrl , err := url.Parse(rs1) if err != nil { log.Fatal("err") } proxy := httputil.NewSingleHostReverseProx...阅读全文

博文 2020-06-21 07:33:44 筑梦攻城狮

golang websocket失败怎么办

golang websocket失败怎么办?问题:使用 github.com/gorilla/websocket 包,在 windows 下运行 go websocket 服务程序,输入地址后浏览器显示如下问题:WebSocket connection to 'ws://localhost:8080/ws' failed: Connection closed before receiving a handshake response 和 Provisional headers are shown 问题解决:最后将程序部署到 Linux 上启动,该问题解决,怀疑可能是对 Windows 支持不友好。本文来自php中文网的golang教程栏目:https://www.php.cn/be/go...阅读全文

博文 2020-09-18 17:33:01 MO_ON_e503

解决 go mod 下载依赖报410 Gone错误问题

背景通过 go mod 管理依赖包, 其中有几个依赖是私有仓库的, 之前下载下来没有问题。 最近刚把 Go 版本升级到13, 发现拉不下来,报 410 Gone 。(其实这个报错跟 HTTP Code 410 的语义是一样的,表示资源的访问在源服务器上不再可用 )详细错误类似如下:go get -v bitbucket.org/compay/lucifer go: finding bitbucket.org/compay/lucifer latest go: downloading bitbucket.org/compay/lucifer v0.0.0-20190921175342-61a76c096369 verifying bitbucket.org/compay/lucifer@v0....阅读全文

plan9 汇编

声明 golang使用的是plan9汇编,不少调度的底层代码都是通过plan9实现,因此了解plan9汇编对Go源码剖析有非常重要的意义,以下的内容均针对golang中使用的plan9汇编。 汇编知识比较杂,如果有需要可以专门去学,本文只是为了看懂golang使用的汇编代码,因此只是简单介绍。 以下内容均来自网上整理,非原创,如有雷同,见谅。 通用寄存器 rax, rbx, rcx, rdx, rdi, rsi, r8~r15 共15个通用寄存器。 在golang中这些寄存器对应了R1-R15,对应关系如下 硬件寄存器 Golang中的表示 rax R1 rbx R2 rcx R3 rdx R4 rdi R5 rdi R6 rsi R7 r8-r14 R8-14 rip(pc) R15 在g...阅读全文

博文 2020-05-11 07:32:46 不争_900c

Go 译文之词法分析与解析 Part Two

作者:Adam Presley | 地址:https://adampresley.github.io... 译者前言 本文是关于词法器实现的具体介绍,如果在阅读时遇到困难,建议参考源码阅读,文中的代码片段为了介绍思路。如何解析会在下一篇介绍。 最近简单看了下 Go 源码,在 src/go 目录下有几个模块,token、scanner 和 parser 应该就是 Go 词法相关实现的核心代码,打开 token 目录会发现其中的源码和上一节介绍的内容有诸多相似之处。 由于最近并发任务比较多,不能以最快的速度更新。词法的相关内容,除了本系列,我把其他一些相关文章的链接都贴在下面,如果英文阅读功底不错,可自行阅读。 A look at Go lexer/scanner packages Rob Pi...阅读全文

博文 2019-08-01 10:32:42 波罗学

「Go学习笔记」1.初识Go

前言 由于在公司广泛使用Docker的大环境下,突然对它的编程语言(Go)了解下。并且感觉现在Go语言的应用也是越来越广泛,很多互联网大厂都在使用,目前利用业余时间来学习下,主流还是Java,学明白以后可能考虑转哦🤡。如果你也感兴趣不如一起来学习。 Go介绍 简史Go语言是Google于2009年正式发布的一款开源的静态编译型语言。Go语言最早于2007年Robert Griesemer(Java HotSpot虚拟机、V8引擎开发者之一)和Ken Thompson(贝尔实验室UNIX团队成员,C语言、UNIX和Plan9创始人之一)与Rob Pike三人在业余时间联合开发。(老外就是吊)时至今日Go语言已完成自举,社区生态斐然,包括大量拿的出手的杀手锏级项目(Moby、Docker、Kub...阅读全文

博文 2019-10-16 10:02:38 码处高效

Golang 开发环境配置-Windwos

下载安装Go语言 下载地址:https://golang.google.cn/dl/ 下载完成后,直接双击 msi 文件进行安装,一路点击Next即可 打开wind+R 输入cmd,打开命令行工具,输入 go version 查询安装的go版本。 $ go version go version go1.14.2 windows/amd64 配置go环境变量 GOPATH是一个环境变量,用来表明你写的go项目的存放路径。使用msi安装的golang,会为你配置默认的环境变量,我们需要修改GOPATH的路径,设置为一个比较明显的路径。 创建GOPATH目录,在目录下创建三个文件夹 bin:用来存放编译后生成的可执行文件 pkg:用来存放编译后生成的归档文件 src:用来存放源码文件 配置path...阅读全文

博文 2020-05-05 18:32:43 进击的小白