阿章的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", ".", "静态文件目录")
...
共计 84 篇文章,11 页。