如何用 Go 语言实现正向代理

正向代理是处理一组内网客户端发往外部机器的网络请求的一种代理方式。 实际上,正向代理是你的应用和你所要连接的服务器之间的中间人。它在 HTTP(S) 协议上起作用,并且被部署在网络设施的边缘。 你通常可以在大型组织或大学中见到正向代理,它被用来进行授权管理或网络安全方面的控制。 我发现在使用容器或者动态的云环境工作时,正向代理很有用,因为你会面临一组服务器和外部网络的通信问题。 如果你在 AWS、AZure 之类的动态环境下工作,你会拥有一批数量不定的服务器和一批数量不定...阅读全文

2018-04-01 00:10:18 vincent08
阅读:9376 评论:0

用 Go 创建一个新的智能合约语言 - 词法分析器部分

这是用 Go 创建新的智能合约语言项目的第二篇文章。在上一篇文章中,介绍了项目的概念,为什么我们决定去构建新的智能合约语言和简要的架构。这个项目就是 WIP 并且开放了源码,你可以在 [这里](https://github.com/DE-labtory/koa) 访问它并随时向我们做出贡献。 - **前面的文章:** [**新语言概念,目标,架构**](https://studygolang.com/articles/17960) ![koa architecture](https:...阅读全文

2019-03-10 19:56:46 PotoYang
阅读:1068 评论:0

阅读挑战:Go 的堆排序

![image](https://raw.githubusercontent.com/studygolang/gctt-images/master/heap-sort-in-go/1_EGrh0TP0gMPgQc0rTVUPzg.jpeg) *<center> 一堆废旧汽车 </center>* 堆排序是一种漂亮的排序算法。它使用一个最大堆对一系列数字或其他定义了顺序关系的元素进行排序。在这篇文章里,我们将深入探究 **Go 标准库**中堆排序的实现。 ## 最大堆 Firs...阅读全文

2019-03-28 21:04:18 krystollia
阅读:967 评论:0

什么是协程(goroutine),它们是怎样工作的呢?

![image](https://raw.githubusercontent.com/studygolang/gctt-images/master/What-are-goroutines-And-how-do-they-actually-work/pic1.jpeg) 在过去的几年里,Go 语言能获得如此难以置信的流行度的一个主要原因,是 Go 能通过轻量级的 Goroutines 和 channel 更加简便地处理并发问题。 并发并不是什么新鲜事物,它一直以多线程的形式存在于我们几乎每...阅读全文

阅读:5780 评论:0

构建一个快速的现代化网络爬虫

很久以来,我一直对网络爬虫充满热情,特别是它背后的理论。我曾经使用过许多语言来构建它,例如:C++、JavaScript(Node.JS)、Python 等。 但是首先,什么是网络爬虫? ## 什么是网络爬虫? 网络爬虫是一个计算机程序,它通过浏览互联网来将现有的网页、图像、PDF 等编入索引,并允许用户使用[搜索引擎](https://en.wikipedia.org/wiki/Web_search_engine)来检索这些内容。 这基本上就是著名的[谷歌搜索引擎](http...阅读全文

2019-12-11 15:20:32 polaris
阅读:1097 评论:0

Go 中可取消的读取操作

在使用 Go 进行工作时,使用 `io.Reader` 和 `io.Writer` 接口是最常见的情场景之一。这很合理,它们是数据传输的主力接口。 关于 `io.Reader` 接口,有一点令我困惑:它的 `Read()` 方法是阻塞的,一旦读取操作开始,你没有办法去抢占它。同样,也无法在读取操作上执行 `select` 操作,异步协调多个 `io.Reader` 时的读取操作会有点棘手。 `io.ReadCloser` 是 Go 提供的一个常用的退出通道,在许多情况下,它确实允许你...阅读全文

2020-08-18 14:49:05 DoubleLuck
阅读:1861 评论:0