GO使用SMTP发送邮件

核心代码:smtp.SendMail(host, auth, user, send_to, msg),auth := smtp.PlainAuth("", user, password, hp[0]) 可行方案:使用企业邮箱的SMTP发送邮件,host :="smtp.exmail.qq.com:25",因此需要一个企业邮箱的账号和密码 直接上代码: main.go package main import ( "fmt" "net/smtp" "strings" ) func SendToMai...阅读全文

阅读:46844 评论:4

使用 Golang 操作 Linux Namespaces

Linux 命名空间简介命名空间分类CLONE_NEWPIDCLONE_NEWIPCCLONE_NEWNSCLONE_NEWNETCLONE_NEWUTSCLONE_NEWUSER代码示例总结参考 Linux 命名空间简介 Linux Namespaces(Linux 命名空间)机制提供了进程使用操作系统资源时的隔离方式,是基于内核实现轻量级虚拟化(容器化,例如 docker)的实现基础。 具体来说就是当我们创建一个进程时,可以给进程设置 flag 组合来构建进程的命名空间,处于不同命名空间的进...阅读全文

阅读:4934 评论:0

Go-数组去重

package main import( "fmt" "sort" ) func RemoveDuplicatesAndEmpty(a []string) (ret []string){ a_len := len(a) for i:=0; i < a_len; i++{ if (i > 0 && a[i-1] == a[i]) || len(a[i])==0{ continue; } ret = append(ret, a[i]) } return } func main(){ a := []s...阅读全文

2015-08-10 11:12 shuanger_
阅读:17533 评论:2

详解 Go 语言中的 time.Duration 类型

长久以来,我一直抓狂于 Go 标准库中的 Time 包,我的抓狂来自于两个功能,一是捕获两个不同时间段之间间隔的毫秒数,二是将一个用毫秒表示的连续时间段与预先定义的时间段进行比较。这听起来很简单,没错,确实如此,但它的确让我抓狂了。 在 Time 包中,定义有一个名为 Duration 的类型和一些辅助的常量: ```go type Duration int64 const ( Nanosecond Duration = 1 Microsecond = 1000 * ...阅读全文

2018-03-17 23:10:54 swardsman
阅读:78027 评论:1

GORM 关联查询

定义了一个 User 和 Company, User 中可以包含多个 Company, 如下: type User struct { ID int `gorm:"TYPE:int(11);NOT NULL;PRIMARY_KEY;INDEX"` Name string `gorm:"TYPE: VARCHAR(255); DEFAULT:'';INDEX"` Companies []Company `gorm:"FOREIGNKEY:UserId;ASSOCIATION_FOREIGNKEY:I...阅读全文

2018-12-05 11:34:43 jouyouyun
阅读:5040 评论:1

github.com/robfig/cron【Golang 常用包推荐】

企业项目完整之后,经常会有一些定时任务,例如备份、检查数据等,需要经常定时跑,如果我们能把这些定时任务,做成一个业务系统,通过与liunx下cron一样的规则,来表示定时执行的规则,岂不美哉。 Golang的cron包帮忙解决这个问题。 官方说明文档: https://godoc.org/github.com/robfig/cron package main import ( l4g "github.com/alecthomas/log4go" "github.com/robfig/cron" ...阅读全文

2018.12.06 11:06 微信小程序开发
阅读:2587 评论:0

Golang学习笔记之WEB框架(gin)基本使用

gin是Go语言写的一个web框架,API性能超强,运行速度号称较httprouter要快40倍。封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点。 Github地址:https://github.com/gin-gonic/gin gin的安装:go get github.com/gin-gonic/gin API gin.Default() 创建路由 gin.DisableConsoleColor() 禁用控制台颜色 gin.SetMode() 设置gin模式。参数可...阅读全文

2018.12.16 10:00 学生黄哲
阅读:11484 评论:0

gorm 初步研究实例

表设计 CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID', `name` varchar(64) NOT NULL DEFAULT '' COMMENT '用户名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `birthday` datetime NOT NULL DEFAULT '1000-01-01 00:00:00' ...阅读全文

2018-12-30 15:34:43 flamefatex
阅读:3244 评论:0

golang_go-micro整合各种mq

NATS 介绍 NATS是一个开源、轻量级、高性能的分布式消息中间件,实现了高可伸缩性和优雅的Publish/Subscribe模型,使用Golang语言开发。NATS的开发哲学认为高质量的QoS应该在客户端构建,故只建立了Request-Reply,不提供 1.持久化 2.事务处理 3.增强的交付模式 4.企业级队列。 NATS消息传递模型 NATS支持各种消息传递模型,包括: 发布订阅(Publish Subscribe) 请求回复(Request Reply) 队列订阅(Queue Sub...阅读全文

2019-09-04 16:32:31 yylany
阅读:1144 评论:0

使用 Go 记录日志

简介 定义配置 读取日志相关的配置 总结 当前部分的代码 简介 在上一节内容中, 我们使用 viper 读取了配置文件. 本节将使用 logrus 记录日志. logrus 是一个结构化的日志记录器, 和标准库中的 logger 具有完全兼容的 API. 定义配置 首先, 更新一下配置文件, 加入以下参数: log: use_json: true logger_level: debug logger_file: log/server.log gin_file: log/gin.log gin_c...阅读全文

2019年09月16日 帅气猫咪
阅读:3722 评论:0

深入理解Golang之http server

前言 对于Golang来说,实现一个简单的http server非常容易,只需要短短几行代码。同时有了协程的加持,Go实现的http server能够取得非常优秀的性能。这篇文章将会对go标准库net/http实现http服务的原理进行较为深入的探究,以此来学习了解网络编程的常见范式以及设计思路。 HTTP服务 基于HTTP构建的网络应用包括两个端,即客户端(Client)和服务端(Server)。两个端的交互行为包括从客户端发出request、服务端接受request进行处理并返回respon...阅读全文

2019年11月17日 Turling_hu
阅读:12496 评论:2

手把手教你写一个完美的Golang Dockerfile

引言 对于dockerfile而言,何为完美? 我认为应该满足以下三点: 体积小 构建快 够安全 话说不说,直接上拿走可用的Dockerfile。 FROM golang:1.13.5-alpine3.10 AS builder WORKDIR /build RUN adduser -u 10001 -D app-runner ENV GOPROXY https://goproxy.cn COPY go.mod . COPY go.sum . RUN go mod download COPY ....阅读全文

2020年02月26日 raining1127
阅读:6770 评论:0

golang的指针类型,unsafe.Pointer类型和uintptr类型的区别

一,区别 1,指针类型 golang支持指针类型,指针类型的变量存的是一个内存地址,这个地址指向的内存空间存的才是一个具体的值。 比如int,int32,A(自定义结构体类型),string等,都是指针类型。 golang的指针类型和c/c++的指针类型基本一样,但是多了几个限制: 1,int,int32等不同的指针类型不能相互转化. 2,指针类型不支持c/c++这样的指针运算。 2,unsafe.Pointer类型 这个类型比较重要,它是实现定位和读写的内存的基础。go runtime大量使用...阅读全文

阅读:2947 评论:0