-
RainNight
2021-05-14
Golang
1851°
# beego下实现JSON格式数据返回
----
* 在编写程序是通常需要返回数据格式为
```
this.Data["json"] = res
this.ServeJSON() // 对json进行序列化输出
this.StopRun()
```
但是返回的数据格式有点问题,所以只有自己封装一套数据返回格式。
*
定义路由
----
```
package routers
import (
beego "github.com/beego/beego/v2/server/web"
)
func
-
RainNight
2021-05-5
Golang
1517°
# RabbitMQ Golang教程(三)
----
## 什么是发布/订阅?
----
* 创建一个队列每个任务只传递给一个工人,做些不同的事,向多个消费者传递一个消息。这就是所谓的“订阅/发布模式”。
* 构建一个简单的日志系统。它将由两个程序组成——第一个程序将发出日志消息,第二个程序将接收并打印它们。
* 已发布的日志消息将被广播到所有接收者。
## Exchanges(交换器)
----
RabbitMQ消息传递模型中的核心思想是生产者从不将任何消息直接发送到队列。实际上,生产者经常
-
RainNight
2021-05-4
Golang
1542°
# RabbitMQ Golang教程(二)
---
## 任务队列
----
### 什么是任务队列 ?
> 把要执行的任务放在队列中。使用较多的任务队列有machiney、Celery、goWorker、YTask。每一个任务队列都有自己的特点,这里就不细讲了。
> 我们将创建一个工作队列,该队列将用于在多个工人之间分配耗时的任务。
> 工作队列(又称任务队列)的主要思想是避免立即执行某些资源密集型任务并且不得不等待这些任务完成。相反,我们安排任务异步地同时或在当前任务之后完成。我们将任务封
-
RainNight
2021-05-1
Golang
1550°
# RabbitMQ Golang教程(一)
----
## 介绍
----
RabbitMQ是一个消息代理:它接受并转发消息。你可以把它想象成一个邮局:当你把你想要邮寄的邮件放进一个邮箱时,你可以确定邮差先生或女士最终会把邮件送到你的收件人那里。在这个比喻中,RabbitMQ是一个邮箱、一个邮局和一个邮递员。
RabbitMQ和邮局的主要区别在于它不处理纸张,而是接受、存储和转发二进制数据块——消息。
RabbitMQ和一般的消息传递都使用一些术语。
生产仅意味着发送。发送消息的程序是生产者:
-
RainNight
2021-05-1
Golang
1438°
# 如何在CenOS下安装RabbitMQ
----
> 因为服务器环境比较复杂、不想搞坏现在的环境、所以决定使用docker的方式进行安装。
## 获取镜像
---
```
#指定版本,该版本包含了web控制页面
docker pull rabbitmq:management
```
## 运行镜像
---
```
#方式一:默认guest 用户,密码也是 guest
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672
-
RainNight
2021-05-1
golang
1408°
# 基于golang实现的redis连接池
----
## 代码篇:
---
```
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
var pool *redis.Pool //创建redis连接池
func init()
{
pool = &redis.Pool{
//实例化一个连接池
MaxIdle:16,
//最初的连接数量
// MaxActive:1000000,
//最大连接数量
MaxActive:
-
RainNight
2021-05-1
Golang
1346°
# 基于golang的redis使用
----
## 下载package
----
```
go get github.com/garyburd/redigo/redis
```
## redis 在使用中、会涉及到set、Mset、expire、lpush、Hset等
----
### 代码篇:
```
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
"log"
)
func main()
{
c,err := re
-
RainNight
2021-04-21
Golang
1276°
# 基于golang的爬虫系统
----
## 本代码基本功能实现、数据库操作,发送邮件和发送钉钉通知、定时任务、解析html
----
> 最基础的代码体系、后期会完成log日志等功能
> 代码篇:
```
ckage main
import (
"fmt"
"github.com/PuerkitoBio/goquery"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
"github.com/jordan-wright
-
RainNight
2021-04-20
Golang
1713°
# golang实现cron定时任务
----
> 在编写爬虫的时候,需要定时抓取实时的新闻资讯、原来采用的linux的crontab,但是发现并不是很灵活、而且不能定制,所以就采用golang写了一套、发现网上的文章、有很多坑、所以整理了一套代码。
## 下载包
----
```
╰$ go get github.com/robfig/cron
```
---
## 代码篇:
---
```
package main
import (
"fmt"
"github.com/robfig/cron
-
RainNight
2021-04-18
Golang
1534°
# golang利用钉钉机器人实现消息通知
----
>
无论是爬虫和代码管理,都需要消息通知,所以在“雨夜的博客”的架构下,需要集成钉钉机器人和邮箱发送功能,日后还会需要集成微信公众号、小程序等,功能的开发变现,实现一个商业价值的博客系统。
## 代码篇:
----
```
package main
import (
"net/http"
"strings"
)
func SendDingMsg(msg string)
{
webHook := "https://oapi.dingtalk.c
-
RainNight
2021-04-18
Golang
1195°
# golang并发发送邮件
----
## 在某些场景下,需要发送多次发送邮件,就需要用到并发处理
-----
### 代码篇:
----
```
package main
import (
"fmt"
"github.com/jordan-wright/email"
"log"
"net/smtp"
"os"
"sync"
"time"
)
func main() {
ch := make(chan *email.Email, 10)
p, err := email.NewPool(
"sm
-
RainNight
2021-04-17
Golang
1341°
# go语言实现邮件发送
-----
## 安装相关的包
----
```
go get github.com/jordan-wright/email
```
## 代码篇:
----
```
package main
import (
"fmt"
"github.com/jordan-wright/email"
"log"
"net/smtp"
"time"
)
func main()
{
e := email.NewEmail()
//设置发送方的邮箱
e.From = "XXXXXXXXX