golang请求网站返回body信息乱码问题

​ 这次请求的网站是bilibili,乱码的内容有很多菱形符号。 ​ 一般乱码问题,我首先会考虑字符编码的问题。比如典型的日文编码SHIFT_JIS在windows系统记事本中打开,就会出现乱码。 ​ 但是这次有点不一样,因为我拿notepad++打开后切换了几种常用的编码后还是乱码,参考别人写的针对b站的爬虫才发现了问题所在。b站返回的请求包是经过gzip压缩的。 ​ 所以需要一个解压返回的请求的过程。为了提高代码的可维护性,还是把请求和解压,编码转换之类的固定流程封装一下比较好。 // 检测...阅读全文

简书 2020-11-12 09:32:38 mudssky

【go系列1】go的安装(mac)

由于之前项目依赖到了k8s,且与k8s的集成比较多,而k8s的源码是go写的,网上搜索了一大堆关于go的信息, 发现很多云原生的项目都是由go写的,所以又来折腾以下go语言,因为之前用brew install mac安装了go,也用了pkg包安装了go,所以环境够的很乱,至此,特定来清理一下安装方式brew install go官网下载对应的安装包,直接安装注意: 第一种方式安装,go可执行文件在/usr/local/bin下,其实这个目录下的go是一个软连接,➜ bin ll /usr/loc...阅读全文

Segmentfault 2020-11-17 09:32:33 鸿乃江边鸟

【go系列1】go的安装(mac)

由于之前项目依赖到了k8s,且与k8s的集成比较多,而k8s的源码是go写的,网上搜索了一大堆关于go的信息, 发现很多云原生的项目都是由go写的,所以又来折腾以下go语言,因为之前用brew install mac安装了go,也用了 pkg包安装了go,所以环境够的很乱,至此,特定来清理一下 安装方式 brew install go 官网下载对应的安装包,直接安装 注意: 第一种方式安装,go可执行文件在/usr/local/bin下,其实这个目录下的go是一个软连接, ➜ bin ll /u...阅读全文

简书 2020-11-11 22:32:45 鸿乃江边鸟

零基础小白学golang语言还是java语言

对于新手而言,学习Java是一个比较稳妥的选择一方面Java的应用比较普遍,80%的企业项目都是Java开发,按照目前的发展情况来看,未来Java的应用空间依然非常大。另一方面Go语言并不适合零基础学习的编程语言,能学只是相对比较吃力,Go语言在很多概念的理解上还是需要一定基础的,可以先把Java学习好,然后在学习go语言,有java基础再学习Go语言就会更加容易一些。就语言的设计来说,目前 Java 还是比 Go 好很多的,特别是高版本 Java 的进步还算不错。Go 的异步模型是个明显的优点...阅读全文

简书 2020-11-11 22:32:45 程序员阿狸

centos安装go1.14.4

1、下载文件 wget https://golang.google.cn/dl/go1.14.4.linux-amd64.tar.gz 2、解压文件到 /usr/local 如果之前已经安装过go的版本,先清空下go下面src,不然可能会报一些previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:16:24的错误 rm -rf /usr/local/go 解压go包 tar -zxf g...阅读全文

简书 2020-11-11 22:32:45 德玛西亚万岁

关于Mac配置提示zsh: command not found: XXX的问题

安装完mysql与golang,使用网上各种配置教程尝试后,输入mysql -u root -p或者go version,仍会出现:zsh: command not found: XXXX的提示。 cd /usr/local进入发现包确实在。 比较苦恼!!!然后忽然想明白,可能是 oh my zsh 所加载的环境变量与 Mac 本身自带的环境变量不同。 于是,解决方案: 关于zsh: command not found: go 1.在终端进入目录:cd /usr/local 查看你的 go 是否...阅读全文

2020-11-11:手写代码:如何获得有序数组中指定元素的个数?

福哥答案2020-11-11: 1.遍历法。无代码。 2.二分法。二分查找元素,然后二分查找左边界,再查找右边界,最后右边界减去左边界就是指定元素个数。这道题实际上是如下三道题的综合。 在一个有序数组中,找某个数是否存在 。 在一个有序数组中,找>=某个数最左侧的位置 。 在一个有序数组中,找<=某个数最右侧的位置 。 golang代码如下: package main import "fmt" func main() { arr := []int{0, 1, 2, 3, 3, 5, 5, 5, ...阅读全文

简书 2020-11-11 22:32:42 福大大架构师每日一题

DNS在Kubernetes中的高阶玩法(一)

自从Kubernetes1.11之后,CoreDNS作为集群内默认的域名解析服务,你是否对它还仅仅还停留在对Kubernetes的Service解析呢?事实上光DNS在K8S内就有很多有意思的操作,今天我们不妨来看看CoreDNS的各种高阶玩法。 1. 自定义hosts解析 默认情况下,Kubernetes集群内的容器要解析外部域名时,CoreDNS会将请求转发给/etc/resolv.conf文件里指定的上游DNS服务器。这个是由这个配置决定的。 forward . /etc/resolv.c...阅读全文

简书 2020-11-11 22:32:41 云原生小白

MAC安装GO

1,下载1.1 墙内人访问不了go的官网golang.org, 可以使用google专门为国人搭建的网站,golang.google.cn。下载go1.15.4最新版地址:https://golang.google.cn/doc/install?download=go1.15.4.darwin-amd64.pkg2,安装2.1 点击安装包安装,按下继续,一直安装完成,如下图: 2.2 安装完成之后,测试安装是否成功,打开终端(启动台-》其他-》终端),输入go version 回车,即可看到安装...阅读全文

简书 2020-11-11 22:32:39 CStart

【golang】interface原理

0.引言在上一篇文章 《深入理解 Go Interface》中从设计和使用的角度介绍了 Golang 的 interface,作为补充,这篇文章将从源码级别来看看 interface 的具体实现。所有源码分析都是基于 Go 1.8.3。在开始之前,我们先看一个例子。func Foo(x interface{}) { if x == nil { fmt.Println("empty interface") return } fmt.Println("non-empty interface") } ...阅读全文

Segmentfault 2020-11-17 22:32:33 去去1002

手把手教你本地 k8s 集群搭建云原生 Tekton CICD 流水线

Tekton CICD Demo这是一个演示 Tekton CICD 的 demo。下面我们将从搭建本地 k8s 集群开始,同步镜像至国内并部署 Tekton,一步一步实现一个 CICD 流水线。实现更新代码自动触发流水线,构建镜像推送到目标仓库,并更新 deployment 镜像滚动更新应用,最后钉钉机器人通知到群聊。源码:https://github.com/win5do/tek...[TOC]前言我心目中理想的CICD工具应该包含以下特性:声明式配置,新增配置不需要在UI上操作,便于迁移,...阅读全文

Segmentfault 2020-11-14 10:32:33 无风

Visual Studio Code配置Golang开发环境

安装Golang程序,由于官网被墙了,所以推荐https://studygolang.com/ 下载Go1.15.4版本(最新版本) 配置Golang国内镜像,推荐https://goproxy.io(亲测) go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct 或者阿里云的镜像 go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/ 配置Gopath,推荐将项...阅读全文

简书 2020-11-11 16:33:05 delicacylee

记一次rpcx拦截器的实现+使用TLS证书启动

安装首先,你需要安装 rpcx:go get -u -v github.com/smallnest/rpcx/...这一步只会安装 rpcx 的基础功能。如果你想要使用 etcd 作为注册中心,你需要加上etcd这个标签。 (see build tags)go get -u -v -tags "etcd" github.com/smallnest/rpcx/...如果你想要使用 quic ,你也需要加上quic这个标签。go get -u -v -tags "quic etcd" github....阅读全文

Segmentfault 2020-11-17 09:32:32 吃馍夹菜

【go-libp2p源码剖析】Swarm拨号

1. 简介libp2p swarm 是用于 libp2p 网络的“低级”接口,可以更精细地控制系统的各个方面。swarm 可以建立监听,也可以向其他主机拨号建立新的连接(比如和某个主机建立 tcp 连接),而这里所指的拨号其实就是建立出站连接的过程,它的实现逻辑较为复杂,我们在这里做一个梳理。2. 代码结构仓库地址:https://github.com/libp2p/go-libp2p-swarm.git拨号相关代码主要分布在swarm_dial.go,limiter.go,dial_sync....阅读全文

Segmentfault 2020-11-16 19:32:32 Netwarps

MixGo V1.0 发布,混合型高性能 Go 框架

Mix Go 是什么Mix Go 是混合型高性能 Go 框架,该框架改造整合了 gin, logrus, gorm, go-redis, jwt-go, gorilla ... 等多个流行组件,可以开发 console, api, web, grpc 等各种项目,并且引入了依赖注入、控制反转、事件驱动等高级特征,框架追求简单实用主义,试图让更多开发者以更低的学习成本获得极具生产力的第二编程语言。与其他 Go 框架的差别骨架代码全部基于 bean, event 依赖注入、控制反转、事件驱动库构建,...阅读全文

Segmentfault 2020-11-15 21:32:32 撸代码的乡下人

数据结构与算法系列之递归(GO)

以下完整代码均可从这里获取https://github.com/Rain-Life/data-struct-by-go/tree/master/recursion/step理解递归已经不知道是第几次被递归阻断我学习数据结构的道路了,每次学到递归,我都自我怀疑,是我脑子有问题吗?我是真的学不明白它!发现之前理解递归过于刻板和传统,看递归的时候总是按照机器的执行顺序一直的往每一层递归里边进,不断的下一层、下一层、下一层,直到自己彻底崩溃,自己的CPU也没把一个完整的递归给走完我们的脑子总是想着跟着机...阅读全文

Segmentfault 2020-11-15 20:32:33 书旅