主页

阿章的go语言教程[0]

我为什么想写一份自己的go语言教程 其实需求是广泛存在的,我身边的前端开发者,产品,运营都有对golang感兴趣的,都想学习一下。公司外部新的项目,老的项目迁移golang也是非常火爆的。 市面上有很多go语言的入门读物,大家一般推荐《go语言圣经》,但是那本书我看了之后觉得写得并不是那么好。比如有一道题就是让你整个 ftp 服务器的命令行版本,你说你要是个新手,你咋写?单靠刚学完的那点知识肯定不够的。另一方面,如果我是一个python的开发者或者前端开发者,我已经熟悉了另一门语言了,我重点想看下go语言不同的地方,书里面也没有很明确的指出。 由于书是老外写得,好像作者数学功底还”挺好“,书里面总是搞一些类似sin函数啊之类的,一句话,就是他的例子不好,晦涩难懂,不实用。我希望看...

阅读更多

asyncio使用中的若干问题

问题 跑代码的时候直接报错: RuntimeError: This event loop is already running 解决方案 安装库解决 pip install nest_asyncio import nest_asyncio nest_asyncio.apply() 问题 如何编写测试asyncio的异步函数的单元测试 解决方案 import inspect def async_test(f): def wrapper(*args, **kwargs): if inspect.iscoroutinefunction(f): future = f(*args, **kwargs) ...

阅读更多

tmux多session管理

需求 多个用户使用一台服务器上的tmux。可能会出现使用的时候彼此冲突的情况。可以使用tmux多session管理 实现 查看所有的session tmux ls # chenzhang: 1 windows (created Wed Dec 16 16:37:21 2020) [178x44] 创建新的session tmux new -s chenzhang # 使用ctrl+b d退出后台 tmux new -s kaijie # 使用ctrl+b d退出后台 重命名session(把之前的session重命名为common) tmux rename-session -t spider-center common 这时候查看所有session tmux ...

阅读更多

python分块下载大文件

需求 使用python下载大文件,文件大小可能超过了内存大小。那么我们可以分块下载,并且显示进度条 实现 import os import requests from tqdm import tqdm def get_url_file_content_length_without_download(url: str) -> int: """ 不下载获取url上面文件的文件大小 """ try: resp = requests.head(url, allow_redirects=True, headers=headers) content_length = int(resp.headers.get("cont...

阅读更多

centos安装最新版python

需求 centos上面安装最新版python 实现 python3.6可以直接 yum install python36即可。后面的版本需要编译安装 version=3.7.9 #version=3.9.1 sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel tk-devel tcl-devel sqlite-devel xz-devel wget https://www.python.org/ftp/python/$version/Python-$version.tgz tar xzf Python-$version.tgz cd Pyt...

阅读更多

什么?你不知道怎么读取文件结尾的N个字符?

前言 话说有这么个事,有个日志文件很大,需要在前端展示后N个字符,类似于linux的tail命令。一开始文件是用aiofiles读的,读取后10000个字符,每次都是用read()读取全部,然后用切片截取后10000个字符,,后来有时候发现会报错MemoryError ,后来查了一下发现aiofiles并不是真正的异步,只是开了另一个线程去阻塞另一个线程读文件,因为epoll不支持本地io,操作系统读取本地文件只有阻塞的一种。所以最后就放弃了aiofiles的方案。使用seek先定位到文件末尾,再seek一下定位到当前位置减去N,然后读取即可。 代码 def read_last_n_of_file(self, file_name, max_len): wi...

阅读更多

静态文件下载服务go语言版

重要更新见最下头!!! 前言 之前写过python版的高性能静态文件下载服务,直接运行访问端口就可以下载服务器上的静态文件。但是代码是python写的,部署起来真的是太难了,尤其是依赖问题,使用go语言有天生的部署优势。 代码 static_file_server.go package main import ( "flag" "fmt" "net/http" "path/filepath" ) var ( port int dir string ) func main() { flag.IntVar(&port, "p", 8888, "开放端口") flag.StringVar(&dir, "d", ".", "静态文件目录") ...

阅读更多

go语言交叉编译

交叉编译 windows CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o xxx.exe src/xxx/xxx.go mac CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o xxx_mac src/xxx/xxx.go linux CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o xxx_linux src/xxx/xxx.go

阅读更多