项目背景
学习go基础之后,写一个单体的go项目熟悉熟悉go的基本写法
go环境准备
go的安装就不说了,网上有很多,因为这次用到了go mod所以设置一个go mod的参数
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go mod简单扫盲
go mod init 初始化项目,一般用golang去创建项目都会生成go.mod文件
go mod tidy 这个命令很使用,可以拉取缺少的依赖和清除一些不用的依赖,一般复制一些网上中间件使用的代码的时候,这个时候使用go mod tidy一键下载,不用一个一个去执行了 go get 了
另外使用golang开发
激活码可以关注** 巴德吟游诗人**,里面有获取验证码的方法,好用,不像一些其他公众号关注了提供给的激活码都不能使用
中间件的使用
redis 记录验证码
docker run -d --name test_redis -p 6379:6379 redis:5.0 --requirepass "password"
mysql
docker run -p 3306:3306 --name mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
sql脚本
CREATE TABLE `user_basic` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`identity` VARCHAR(36) DEFAULT NULL,
`name` VARCHAR(60) DEFAULT NULL,
`password` VARCHAR(32) DEFAULT NULL,
`phone` VARCHAR(100) DEFAULT NULL,
`now_volume` INT ,
`total_volume` INT ,
`created_at` DATETIME DEFAULT NULL,
`updated_at` DATETIME DEFAULT NULL,
`deleted_at` DATETIME DEFAULT NULL,
`status` INT,
PRIMARY KEY (`id`)
) ENGINE=INNODB
CREATE TABLE `repository_pool` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`identity` varchar(36) DEFAULT NULL,
`hash` varchar(32) DEFAULT NULL COMMENT '文件的唯一标识',
`name` varchar(255) DEFAULT NULL COMMENT '文件名称',
`ext` varchar(30) DEFAULT NULL COMMENT '文件扩展名',
`size` int(11) DEFAULT NULL COMMENT '文件大小',
`path` varchar(255) DEFAULT NULL COMMENT '文件路径',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`deleted_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `user_repository` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`identity` varchar(36) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL COMMENT '父级文件层级, 0-【文件夹】',
`user_identity` varchar(36) DEFAULT NULL COMMENT '对应用户的唯一标识',
`repository_identity` varchar(36) DEFAULT NULL COMMENT '公共池中文件的唯一标识',
`ext` varchar(255) DEFAULT NULL COMMENT '文件或文件夹类型',
`name` varchar(255) DEFAULT NULL COMMENT '用户定义的文件名',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`deleted_at` datetime DEFAULT NULL,
`status` INT ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
CREATE TABLE `share_basic` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`identity` varchar(36) DEFAULT NULL,
`user_identity` varchar(36) DEFAULT NULL COMMENT '对应用户的唯一标识',
`repository_identity` varchar(36) DEFAULT NULL COMMENT '公共池中文件的唯一标识',
`user_repository_identity` varchar(36) DEFAULT NULL COMMENT '用户池子中的唯一标识',
`expired_time` int(11) DEFAULT NULL COMMENT '失效时间,单位秒,【0-永不失效】',
`click_num` int(11) DEFAULT '0' COMMENT '点击次数',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`deleted_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
结束
这个项目也是从b站上面学习的,也对之前博主的逻辑进行了修改,这个博客只是为了记录,初学go项目的一些经验和踩坑
b站go cloud-disk项目