netcore

module
v0.1.17 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2020 License: Apache-2.0

README

NetCore

自己用的脚手架

Menu 目录

[TOC]

How to use? 如何使用?

STEP1 第一步: 配置文件

[Sys]
  num_cpu = 2 

[WebSocket]
  ip = "0.0.0.0" 
  port = 5678
  name = "ws"
  [WebSocket.log]
    WriteToFile = true
    LogFilePath = "./logs/websocket/"
    ZipTime = 2
    ChannelSize = 25

[Http]
  ip = "0.0.0.0"
  port = 5679
  name = "http"
  [Http.log]
    WriteToFile = true
    LogFilePath = "./logs/http/"
    ZipTime = 2
    ChannelSize = 25
Sys
1. num_cpu : 设定使用多少个核心来运行本程序,设定为0表示自动分配,此时程序将根据运行设备的总CPU数采取尽可能占用的策略分配CPU.
Websocket
  1. ip : 服务器运行的IP,绝大多数请填写0.0.0.0
  2. port : websocket 服务监听的端口,0-65535 请不要重复已占用的端口
  3. name : 给 websocket 起( mei )个( qiu )名( luan )字( yong )呗
Http
  1. ip : 服务器运行的IP,绝大多数请填写0.0.0.0
  2. port : http 服务监听的端口,0-65535 请不要重复已占用的端口
  3. name : 给 http 起( mei )个( qiu )名( luan )字( yong )呗
Log
  1. WriteToFile : 是否写入文件,如果这里是 false 的话,将只会把日志输出到控制台
  2. LogFilePath: 如果 WriteToFilefalse 此项无效, 为true 时为日志输出目录
  3. ZipTime: 如果 WriteToFilefalse 此项无效, 为true时为执行压缩日志文件的时间小时数
  4. ChannelSize: 如果 WriteToFilefalse 此项无效, 为true时为接受日志的通道大小.
STEP2 第二步: 配置通讯协议

此步骤可以在创建完服务器之后再做,此处只是为了书写方便

本项目采用Google的ProtoBuf协议

protobuf 1.4.1

protoc 1.11.4

范例

syntax = "proto3";

package msg;

message PingRequest {
    int64 time = 1;
}

message PingResponse {
    int64 time = 1;
}

建议性设置所有请求都增加Request 作为标志, 所有返回都增加 Response 作为标志.

STEP3 第三步: 创建服务器

main.gomain程序入口当中写下面的代码可以创建一个服务器

  if e, err := entry.Create(); err != nil {
		fmt.Printf("启动异常: %s", err.Error())
	} else {
		e.Start()
		e.ExitSignalMonitor()
	}
STEP4 第四部: 编写任务处理函数
函数结构体
// websocket 任务处理函数 
type RecvHandler func(message *MessageData) *MessageData
// http(gin) 任务处理函数
type HandlerFunc func(c *gin.Context)
MessageData 参数结构
type MessageData struct {
	MessageType uint16
	Message     []byte
}
  1. MessageType 的含义表示消息的指令ID
  2. Message 消息体
如何将处理函数添加至服务
if e, err := entry.Create(); err != nil {
		fmt.Printf("启动异常: %s", err.Error())
	} else {
    // 添加HTTP处理函数
		hs := e.GetHttp()
		hs.AddHandler("GET", "/ping", func(c *gin.Context) {
			message, exists := c.Get("data")
			if exists {
				fmt.Printf("handler --> %s \n", message)
			}
			data := &protoexample.Test{
				Label: &label,
				Reps:  reps,
			}
			c.ProtoBuf(http.StatusOK, data)
		})
    // 添加WebSocket处理函数
		wss := e.GetWebSocket()
		wss.AddHandler(uint16(1), func(message *network.MessageData) *network.MessageData {
			return nil
		})

		e.Start()
		e.ExitSignalMonitor()
	}

Context 内容

日志
如何开启日志
  [WebSocket.log]
    WriteToFile = true
    LogFilePath = "./logs/websocket/"
    ZipTime = 2
    ChannelSize = 25
    
  [http.log]
    WriteToFile = true
    LogFilePath = "./logs/http/"
    ZipTime = 2
    ChannelSize = 25

将服务的日志配置项当中的 WriteToFile 改为 true ,并且配置剩余选项,即可开启日志服务,配置详情参考**日志配置**

如何使用日志

日志分为主要的三个级别 一个是 infodebug用来存储日常信息, 另个一个是 error 当系统报错的时候使用

  1. Debug

    log.Debugf(format string, v ...interface{})
    
  2. Info

    log.Infof(format string, v ...interface{})
    
  3. Error

    log.Errorf(format string, v ...interface{})
    

format 支持所有 Golang 占位符语法

系统监控
CLI

Libs 引用库

  • protobuf: 通讯协议库 安装方式: $ go get -u github.com/golang/protobuf 首次安装ProtoBuff需要安装生成工具protoc.

  • UUID: UUID 生成 安装方式: $ go get -u github.com/satori/go.uuid

  • x-net: Golang 网络扩展库Websocket 安装方式: $ go get -u golang.org/x/net

  • g-toml: Toml 配置文件 安装方式: go get -u github.com/BurntSushi/toml

  • gin: Gin Web服务 安装方式: go get -u github.com/gin-gonic/gin

  • ksuid: 不重复的ID生成 安装方式: go get -u github.com/segmentio/ksuid

  • gopsutil 系统信息读取

    安装方式:

    go get -u github.com/shirou/gopsutil

Directories

Path Synopsis
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
internal
netcard
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
netpoll
Package netpoll provides a portable interface for network I/O event notification facility.
Package netpoll provides a portable interface for network I/O event notification facility.
manager
network
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
plugins
configPlugins
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
apiService
A quick and easy way to setup a RESTful JSON API http://ant0ine.github.io/go-json-rest/ Go-Json-Rest is a thin layer on top of net/http that helps building RESTful JSON APIs easily.
A quick and easy way to setup a RESTful JSON API http://ant0ine.github.io/go-json-rest/ Go-Json-Rest is a thin layer on top of net/http that helps building RESTful JSON APIs easily.
apiService/trie
Special Trie implementation for HTTP routing.
Special Trie implementation for HTTP routing.
hardwareService
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
logService
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
socketService
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
websocketService
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
utils
filetools
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com
* * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com * * ______ __ * /\__ _\ /\ \ * \/_/\ \/ ___ __\ \ \ __ ___ ___ __ * \ \ \ / ___\ / __ \ \ \ __ / __ \ / _ \ / ___\ / __ \ * \_\ \__/\ \__//\ __/\ \ \_\ \/\ \_\ \_/\ \/\ \/\ \__//\ __/ * /\_____\ \____\ \____\\ \____/\ \__/ \_\ \_\ \_\ \____\ \____\ * \/_____/\/____/\/____/ \/___/ \/__/\/_/\/_/\/_/\/____/\/____/ * * * @寒冰 * www.icezzz.cn * hanbin020706@163.com

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL