go语言实现视频上传下载
用go语言实现视频的上传和下载
项目结构
main.go
package main
import (
"github.com/julienschmidt/httprouter"
"log"
"net/http"
)
type MiddlewareHandler struct {
r *httprouter.Router
l *ConnLimiter
}
func NewMiddlewareHandler(r *httprouter.Router, concurentLimit int) http.Handler {
h := MiddlewareHandler{r: r, l: NewConnLimiter(concurentLimit)}
return ...
nginx常用配置
最简洁配置
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
# Basic Settings
# 做了最简单的一个静态代理
server {
listen 80;
server_name www.azhangbaobao.cn;
location / {
root /home/ubuntu/课件/爬虫课件;
index index.html;
}
}
sendfile on;
tcp_nop...
ssh端口转发
为什么写这篇文章
一般公司会把服务器放在内网中, 比如数据库只能通过跳板机来访问, 这就导致一些很好用的工具, 比如navicat,studio 3T, adminMongo这样的图形界面工具与生产数据库无缘了, 程序员只能带着命令行里玩泥巴. 好一点的给你的TUI(终端图形界面), 或者有个自动提示, 比如mycli, postcli依靠可怜的tab提示自娱自乐.对于效率来说, 阿章觉得这还是在玩泥巴.
然后呢? 公司会给你个VPN, 在公司可以拨通VPN然后再被限定了端口范围里面, 可以直接本机连. 在家还要拨通VPN去连公司的数据库, 阿章觉得这样不好玩.
下面的部分参考了阮一峰的博客 SSH原理与运用(二):远程操作与端口转发, 但是做了修改.大神的介绍深入浅出, 而且...
docker从入门到日常
安装
安装
centos:
sudo yum -y install docker-io
Ubuntu:
sudo wget -qO- https://get.docker.com/ | sh
如果是ubuntu14.04安装最新版本需要升级内核之后重启
执行
sudo apt-get install --install-recommends linux-generic-lts-xenial
然后reboot.
如果为了不重启可以按照低版本docker
sudo apt-get -y install --force-yes dock...
周末大放送:自制麻辣小龙虾
先上图
食材
小龙虾 葱 蒜 香菜 芹菜 朝天椒 小龙虾底料 盐 油 生抽 料酒
操作步骤
首先准备活的小龙虾, 最好是能动的那种, 我传了一个视频见证一下(视频只有3s, 不费流量)
将小龙虾放入煮锅当中, 放入一些醋, 把小龙虾煮死😆
小龙虾捞出来, 控水
清洗小龙虾, 用剪刀剪掉虾头, 小龙虾的尾巴有三片,把中间那一片抽出来, 会连带着抽出虾肠. 把绒毛状的腮剪掉. 用牙刷把腹部, 侧面的脏东西都刷干净. 我买了20只, 弄了好大一会儿, 不过以后就熟练了, 就快了.
准备其他东西. 小葱切段, 大...
mongodb所有问题汇总
安装mongodb
centos7安装mongodb
创建/etc/yum.repos.d/mongodb-org-4.0.repo文件,编辑内容如下:
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
运行以下命令安装最新版的mongodb:
sudo yum **install** -y mongodb-org
配置mongod.conf允许远程连接:
v...
python在多个线程当中,开启多个事件循环
参考链接
深入理解asyncio(三)
我自己写的总结
背景
我一直在想, 虽然异步代码切换很快, 比多线程多进程能创建更多的协程来支持并发. 但是事件循环只能在单进程单线程当中进行并发.
有没有可能在多线程中, 每个线程再开启一个事件循环呢? 研读了董伟明的公众号之后, 发现原来可以😺. 但是多进程不可以. 因为EventLoop对象不能被管道传递, 而python多进程的本质是底层通过管道来发送消息进行通信.
逻辑要点
在主线程当中通过asyncio.new_event_loop创建三个事件循环. 然后开启三个线程, 分别将对应的事件循环跑起来. 通过asyncio.run_coroutine_threadsafe(coroutine_object, loop_obj...
总结epoll
参考链接
epoll 的本质是什么?
总结
epoll本质的第一步 是知道网卡把从网线接收到的数据写进内存,第二步如何知道接收到了数据,是网卡写完以后给cpu发送一个中断信号,然后操作系统知道了再去执行网卡中断程序,第三步为什么recv或者accept这样的阻塞方法不占用cpu资源呢?可以从操作系统进程管理的角度来理解,假设有三个进程A B C同时运行着,那么他们都在工作队列里面,被cpu分时执行,这时候进程A创建了一个socket对象,对象包含发送缓冲区 接受缓冲区和等待队列,执行recv的时候操作系统会把进程A的引用从工作队列移入到等待队列,这样就不占用cpu资源了,等到socket接收到数据之后,操作系统再把进程A从等待队列移入工作队列,也就是唤醒进程A,此时接收缓冲区已经...
共计 84 篇文章,11 页。