一个简单的Golang实现的HTTP Proxy方法
最近因为换了Mac,以前的Linux基本上不再使用了,但是我的SS代理还得用。SS代理大家都了解,一个很NB的socks代理工具,但是就是因为他是Socks的,想用HTTP代理的时候很不方便。以前在...
最近因为换了Mac,以前的Linux基本上不再使用了,但是我的SS代理还得用。SS代理大家都了解,一个很NB的socks代理工具,但是就是因为他是Socks的,想用HTTP代理的时候很不方便。以前在...
1. 下载非标准的包,"golang.org/x/net/html"2. 先安装git,使用git命令下载git clone https://github.com/golang/net3. 将net包,放到GOROOT路径下比如:我的是:GOROOT = E:\go\所...
golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多...
测试代码如下package mainimport ( "fmt" "log" "time" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context")var ( dialTimeout = 5 * time.Second requestTim...
什么是粘包问题
最近在使用Golang编写Socket层,发现有时候接收端会一次读到多个数据包的问题。于是通过查阅资料,发现这个就是传说中的TCP粘包问题。下面通过编写代码来重现这...
之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的。看了下beego的实现主要是使用...
利用了golang对高并发的良好支持,同目录下将ip每行一个写入pinglist.txt文件即可其实这个功能用linux一条命令就能搞定: cat pinglist.txt | xargs -P 10 -I {} ping -fc 100...
最近在项目中,一个go服务给前端提供了一个接口,返回json格式数据,其中Int64字段会超出javascript Number可表示的最大的Int值会丢精度,可以通过返回string类型值来屏蔽这个问题...
模板
在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染。这篇文章不讨论go...
go语言的net/http包的使用非常的简单优雅(1)服务端package main import ( "flag" "fmt" "net/http") func main() { host := flag.String("host", "127.0.0.1", "listen host"...
我们平时使用的动态库都是由C/C++开发最后生成的.so文件。可以先看看一个JNI的开发过程。一. 开发JNI有两种方式,现在一种比较快的方式是AndroidStudio你在创建项目选择Modul...
前言对于Golang来说,实现一个简单的 http server 非常容易,只需要短短几行代码。同时有了协程的加持,Go实现的 http server 能够取得非常优秀的性能。这篇文章将会对go标准库 n...
本文介绍什么是链表,常见的链表有哪些,然后介绍链表这种数据结构会在哪些地方可以用到,以及 Redis 队列是底层的实现,通过一个小实例来演示 Redis 队列有哪些功能,最后通过 Go 实...
目前大都是使用 validator安装
go get gopkg.in/go-playground/validator.v9原理当然只能通过反射来实现了,之前写过一篇反射的文章 golang之反射和断言 ,里面有写到怎么通过...
背景最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高。从日志中调用关系来看,有2个调用链经常发生超时问题。问题1: A服务使用 http1.1 发送请求到...
问题描述:有一串数字1到5,按照下面的关于顺序的要求,重新排列并打印出来。要求如下:2在5前出现,3在2前出现,4在1前出现,1在3前出现。该问题是一个非常典型的拓扑排序的问题,一般解决...
简介Nginx 是一个高性能的 HTTP 服务器和反向代理服务器.最常用的两个功能是反向代理和负载均衡.反向代理反向代理是正向代理的反面.普通的代理服务器是需要用户主动去设置...
来做一个快速测验-以下代码输出什么?vals := make([]int, 5)for i := 0; i < 5; i++ { vals = append(vals, i)}fmt.Println(vals)Run it on the Go Playground → https://...
简介
- CentOS 7 继承了 RHEL 7 的新的特性,例如强大的 systemd, 而 systemd 的使用也使得以往系统服务的 /etc/init.d 的启动脚本的方式就此改变, 也大幅提高了系统服务的运...
语义理解切片
go 语言中的切片是 go 语言的一个特色,从语义上来说,切片就是把一个整体的东西切分成小的部分,那么对于语言中的切片也是同理。
举个例子看如下代码:package maini...
在 Go 语言中切片是使用非常频繁的一种聚合类型,它代表变长的序列,底层引用一个数组对象。一个切片由三个部分构成:指针、长度和容量。指针指向该切片自己第一个元素对应的底层...
Why Poolgo自从出生就身带“高并发”的标签,其并发编程就是由groutine实现的,因其消耗资源低,性能高效,开发成本低的特性而被广泛应用到各种场景,例如服务端开发中使用的HTTP服务...
我在学习go语言之前,在对数据库进行CRUD的操作基本是用java和sql来对mysql数据库进行操作,但是到了实习中公司业务都是用的是mangodb,通过一段学习时间后,我有了一些收获。简述...
1. 重复的随机数
废话不多说,首先我们来看使用seed的一个很神奇的现象。func main() { for i := 0; i < 5; i++ { rand.Seed(time.Now().Unix()) fmt.Println(rand.Intn...
最近在使用grpc协议的时候,由于采用的是Proto3协议,在查找记录信息的时候,由于某些字段会有默认空值,导致在通过协议调用后,返回的json结构中并没有这些字段,虽然作为前端使用没有...