
服务器和网络
qauzy
这个作者很懒,什么都没留下…
展开
-
读Linux内核(4.9.9)之TCP连接三次握手
简单介绍TCP连接建立的三次握手。第一次:客户端发送SYN报文,主动发起连接请求,SYN=1,seq=x第二次:服务端收到SYN报文,回复ACK报文,SYN=1, ACK=1,seq=y ,ack=x+1第三次:客户端收到服务端ACK,回复ACK报文,SYN=1, ACK=1,seq=x+1 ,ack=y+1,连接连接建立下面我们进入内核源码,分析这个过程在内核中的实现。首先客户端调用connec...原创 2018-02-21 01:28:55 · 1553 阅读 · 0 评论 -
beego orm多字段唯一键约束
1 手动修改数据库表alter table user_friends add constraint user_friends_user_id_friend_user_id unique (user_id,friend_user_id);2 代码中添加(需要设置自动建表,如果已建好则需要删除表,重新建表)// 多字段唯一键func (u *User) TableUnique() [...原创 2018-09-17 19:39:18 · 4540 阅读 · 0 评论 -
【docker】打包go项目出现 x509: failed to load system roots and no roots provided
原始dockerfile如下FROM alpine:latestMAINTAINER xxx "xxx@gmail.com"WORKDIR $GOPATH/src/appADD conf $GOPATH/src/app/confADD xxx $GOPATH/src/app/xxxRUN mkdir /lib64 && ln -s /lib/libc.musl...原创 2018-10-22 17:41:54 · 2050 阅读 · 0 评论 -
yum 安装 mongodb
1 添加阿里源vi /etc/yum.repos.d/mongodb.repo[mongodb-org]name=MongoDB Repositorybaseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/3.2/x86_64/gpgcheck=0enabled=12 使用命令安装...原创 2018-11-04 15:58:54 · 1154 阅读 · 0 评论 -
申请免费的ssl证书
1 申请地址https://www.sslforfree.com 2 申请流程 点击创建按钮后:进入手动验证流程:在域名管理后台(以腾讯云为例),添加验证域名和TXT值:点击验证,完成所有权验证后,点击下载证书成功后,既可以得到三个文件两个证书文件和一个密钥: 3 部署流程使用cat命令合并两个证书文件(注意先后)cat...原创 2018-12-22 15:04:56 · 339 阅读 · 0 评论 -
【golang实现的CMS系统QOR】管理模块菜单
1 管理模块菜单图示2 使用示例默认情况下,菜单资源添加到一级菜单栏Admin.AddResource(&User{})也可以自定义二级菜单,将资源添加到耳机菜单Admin.AddResource(&Product{}, &admin.Config{Menu: []string{"Product Management"}})Admin.AddR...原创 2019-03-14 16:27:04 · 1237 阅读 · 5 评论 -
关于 HTTP 307 状态码(307 Temporary Redirect)
1 各种状态码的含义2 状态码30X规范动作301永久重定向 302临时重定向,HTTP1.0的状态码,HTTP1.1也有保留。如果client向server发送post请求。server返回URL和302。如果用户确认,client发送post请求。(但实际情况是,很多浏览器都不问问用户,直接变为get发送get请求)303临时重定向,HTTP1.1的状态码//...原创 2019-05-30 11:03:36 · 117638 阅读 · 0 评论 -
go-sql-driver: invalid connection 和 [mysql] 2019/xx/xx 12:xx:55 packets.go:36: unexpected EOF
在使用go-sql-driver/msqyl驱动过程中,发现偶尔出现invalid connection错误,字面上看就是无效连接的意思。开始以为是数据库压力问题或是网络不好,后来发现服务器和数据库是走内网的,网络出现问题几率非常小;只是在测试服务器上跑,没多少连接,不存在压力问题。最后只能分析代码里面的原因。最后确定问题在:db.SetConnMaxLifetime(3600*time...原创 2019-06-08 16:14:34 · 4563 阅读 · 1 评论 -
k8s部署nginx实例、iptables开放端口
1 运行nginx实例kubectl run nginx --image=nginx --replicas=2 --port=802 查看pod[root@localhost ~]# kubectl get podsNAME READY STATUS RESTARTS AGEnginx-3449338310-tmlqp ...原创 2019-07-16 11:48:26 · 3038 阅读 · 2 评论 -
配置nginx ssl反向代理Gogs
原文:https://www.guai.im/2016/04/03/Full%20SSL%20with%20GOGS%20using%20NGINX/Generate Self-Signed SSL CertificateMake a work directory to hold the certificate (in the current users home folder) Cre...转载 2018-09-17 11:19:46 · 2770 阅读 · 0 评论 -
[权限控制] casbin规则持久化到数据库与适配beego
casbin一个支持ACL, RBAC, ABAC的开源方案,github地址在https://github.com/casbin/casbin作者有开发beego的适配器,在https://github.com/casbin/beego-orm-adapter,但是如果使用该适配器,只能单独建一个数据库,如果跟其他表公用一个数据库,将导致原来的表被刷丢。为此需要一定的改动,具体是:1...原创 2018-08-24 12:08:35 · 6694 阅读 · 4 评论 -
postgresql多字段唯一索引与beego的orm.InsertOrUpdate
1 单字段唯一键我们知道beego orm中可以这样设置Name string `orm:"unique"`2 多字段唯一键多字段唯一键怎么处理?两种方法:1 手动修改表CREATE UNIQUE INDEX name ON table (column [, ...]);2 代码中配置(注意必须自动建表,且如果已建好的表要先删除)// 多字段唯一键fu...原创 2018-08-13 16:26:45 · 4857 阅读 · 1 评论 -
读内核源码(Linux 4.9.9)之共享内存的实现
1 共享内存使用1.1 共享内存头文件#include#include1.2 共享内存APIint shmget(key_t key,size_t size,int shmflg);@key : 提供一个参数key,它有效地为共享内存段命名,@size : 以字节为单位指定需要共享的内存容量@shmflg : 是权限标志,它的作用与open函数的mo原创 2018-01-22 20:18:01 · 1387 阅读 · 0 评论 -
读内核(Linux4.9.9)之epoll内核实现简单分析记录
1 epoll三个系统调用函数原型#include <sys/epoll.h>int epoll_create(int size);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);int epoll_wait(int epfd, struct epoll_event* event...原创 2017-03-26 19:10:56 · 740 阅读 · 0 评论 -
Linux内核协议栈(附4) accept得到新的socket的本端端口号是什么?
背景:前两天有个人跟我争论accept之后新得到的描述连接的socket的端口是多少。我说是原来监听的端口,因为我之前经常用netstat查看连接,例如ssh,端口22,所有客户端与服务端建立的连接,服务端都是22。而那位同仁认为是随机获取可用端口,理由是如果端口相同怎么区分连接呢?当时脑子抽筋,没办法反驳。真是那句话,虽然你不对,但是我却找不到理由反驳你,只怪当时没有细看。现在我们整理下:有两种...原创 2016-04-01 21:19:16 · 1790 阅读 · 1 评论 -
Linux多线程编程之条件变量
1 条件变量简介 在服务器编程中常用的线程池,多个线程会操作同一个任务队列,一旦发现任务队列中有新的任务,子线程将取出任务;这里因为是多线程操作,必然会涉及到用互斥锁保护任务队列的情况(否则其中一个线程操作了任务队列,取出线程到一半时,线程切换又取出相同任务)。但是互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。设想,每个线程为了获取新的任务不断得进行这样的操作:锁定任务队列,检查任务...原创 2018-04-18 00:27:02 · 2703 阅读 · 1 评论 -
JWT实现用户认证原理与实现(golang)
1 JWT标准规范JWT(JSON Web Token)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。一个JWT由三部分组成,头部、载荷与签名。头部:用于说明签名的加密算法等,下面类型的json经过base64编码后得到JWT头部{ "typ": "JWT", "alg": "HS256"}载荷:包含生成Token时间,过期时间,以及一些身份标识,...原创 2018-06-30 15:58:26 · 8004 阅读 · 1 评论 -
go打包静态资源
1 xx我们知道go编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。但是在web开发中往往有一些模板,配置文件,css,js,图片等其他类型的静态文件,这些文件是与go可执行文件是相互独立的,部署的时候要另外考虑将这些文件部署...原创 2018-07-24 11:18:47 · 8876 阅读 · 0 评论 -
CentOS 7 安装配置supervisord
1 XX在开发阶段我们一般用supervisord守护我们的程序,是个挺不错的工具2 安装yum install epel-releaseyum install -y supervisor3 配置3.1 开机启动配置(如果不改,systemctl会卡住)修改 /etc/systemd/system/supervisord.service[Unit]Descrip...原创 2018-07-15 23:30:07 · 522 阅读 · 0 评论 -
tc命令模拟访问特定地址延迟,丢包
1 删除原规则队列tc qdisc del dev eth0 root2#添加tc规则队列 tc qdisc add dev eth1 root handle 10: htb3生成根类tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbps quantum 400004 添加延迟策略tc qd...原创 2019-08-10 16:23:50 · 1876 阅读 · 0 评论