go-平常使用中的一些小技巧

######打乱数组中的顺序 data := make([]uint, 10) rand.Seed(time.Now().Unix()) length := len(data) for i := 0; i < length; i++ { data[rand.Intn(length)] ,data[i] = data[i],data[rand.Intn(length)] }

九月 28, 2022 · 1 分钟 · Ken

go-Gin中间件

func LoginMiddleware(ctx *gin.Context) { var UserId uint UserId = 2 //example fmt.Printf("LoginMiddleware UserId: %v\n", UserId) ctx.Set("UserId", UserId) ctx.Next() } 在入口函数上添加中间件 group := r.Group("/api/group").Use(LoginMiddleware) { group.POST("/create", GroupController{}.Create) }

九月 14, 2022 · 1 分钟 · Ken

go-gin连接gorm

本次记录如何在gin中简单的使用和封装gorm 创建database.go,用于定义gorm连接数据库的配置和DB的统一引用 database.go package common import ( "fmt" "note.hello-api.cn/model" "gorm.io/driver/mysql" "gorm.io/gorm" ) var DB *gorm.DB func InitDB() *gorm.DB { host := "localhost" port := "3306" username := "gin" database := "gin" password := "gingin" charset := "utf8mb4" arg := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true", username, password, host, port, database, charset) db, err := gorm.Open(mysql.Open(arg)) if err != nil { panic(err.Error()) } db.AutoMigrate(&model.User{}) db.AutoMigrate(&model.Note{}) DB = db return db } func GetDB() *gorm.DB { return DB } 在gin的入口main....

九月 2, 2022 · 1 分钟 · Ken

go-Mysql入门操作

选用扩展 gorm.io Install go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite Test models.go package models import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/schema" ) var ( dsn string = "gin:gingin@tcp(127.0.0.1:3306)/gin?charset=utf8mb4" // 数据库配置 root账号 0000密码 shop数据库 utf8mb4编码 ) //实现orm func DB() *gorm.DB { // 连接mysql数据库, gorm.Config有很多配置 例如前缀 后准 等等 db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ TablePrefix: "tp_", SingularTable: true, }, }) // 数据库连接出错 退出 if err != nil { fmt.Println("数据库连接失败", err) panic(1) } // 返回数据库实例 db....

九月 2, 2022 · 1 分钟 · Ken

go-第一个Gin程序

第一个Gin程序 安装环境 go 下载对应系统的安装包 安装完毕后敲出 go version 显示 go version go1.18.3 windows/amd64 表示安装成功了 vscode 安装软件后还需安装go扩展 vscode打开项目所在的文件夹目录 go mod init demo go get -u -v github.com/gin-gonic/gin 创建文件 main.go package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.String(200, "Hello World") }) r.Run() // listen and serve on 0.0.0.0:8080 } 页面访问 http://localhost:8080/ 打印 Hello World ,表示gin框架也安装成功了

九月 1, 2022 · 1 分钟 · Ken

go-了解数组和切片的基础用法

var splice1 []int fmt.Printf("splice1: len:%d,cap:%d,%T", len(splice1), cap(splice1), splice1) 结果 splice1: len:1,cap:1,[]int var splice1 []int = make([]int, 1, 3) fmt.Printf("splice1: len:%d,cap:%d,%T\n", len(splice1), cap(splice1), splice1) splice1 = append(splice1, 1) splice1 = append(splice1, 1) splice1 = append(splice1, 1) splice1 = append(splice1, 1) // 超出当前数组的长度后,会以cap=3的进行对数组扩容 fmt.Printf("splice1: len:%d,cap:%d,%T\n", len(splice1), cap(splice1), splice1) 结果 splice1: len:1,cap:3,[]int splice1: len:5,cap:6,[]int splice2 := []int{1, 2, 3,4} fmt.Printf("splice2: len:%d,cap:%d,%T\n", len(splice2), cap(splice2), splice2) splice2 = append(splice2, 1) fmt.Printf("splice2: len:%d,cap:%d,%T\n", len(splice2), cap(splice2), splice2) 当没有设置cap后,append后的容量会以初始的数组len来进行新的扩容 结果...

九月 1, 2022 · 1 分钟 · Ken

go-了解Printf输出的用法

var splice1 []int //打印切片长度和切片类型 fmt.Printf("splice1: len:%d,%T", len(splice1), splice1) 结果 splice1: len:1,[]int fmt.Printf 一般可支持的输出流为: %v 以默认的方式打印变量的值 %+v 带字段名称 %T 打印变量的类型 %+d 带符号的整型 %d 整型 %5d 表示该整型最大长度是5 %05d 会在数字前面补零 %s 正常输出字符串 %t 打印true或false %b 打印整型的二进制

九月 1, 2022 · 1 分钟 · Ken

dapp

合约在线开发IDE solidity 中文文档 trongrid.io <!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> <meta charset="UTF-8"> <title>dapp</title> </head> <body> <div id="vue"> 目标地址:<input v-model="to_address" style="width: 100%"> 订单编号:<input v-model="transaction" style="width: 100%"> <br/> <br/> <button @click="init_tronWeb"> 登录tronlink </button> <button @click="transferTrx"> transferTrx </button> <button @click="getBalance"> 获取trx余额 </button> <button @click="getUSDTBalance"> 获取usdt余额 </button> <button @click="transferUSDT"> 转账0.001usdt </button> <button @click="transferUSDTRemark"> 带备注的转账0.001usdt </button> <button @click="getTransaction"> 获取交易详情 </button> <p v-show="result.length" v-html="result.join('<br/>')"></p> </div> <script src="./js/tronweb.js"></script> <script src="./js/trongrid.js"></script> <script src="./js/vue.min.js"></script> <script src="....

八月 19, 2022 · 3 分钟 · Ken

php-如何使用powerdns的接口

powerdns安装教程 如何使用powerdns的http-api ? 文档需知 powerdns文档 Swagger接入开发 powerdns的yaml配置文件 | swagger官网 Swagger 生成插件 Sign in 登录 (没有账号的免费注册一个) Create New -> Create New API 创建完毕将powerdns的yaml配置文件粘贴到代码框中 右上角 -> Export -> Client SDK -> 指定的开发语言,像我就用PHP github创建一个新的 repository , 将导出来的文件上传上去 修改composer.json { "repositories": [ { "type": "git", "url": "https://github.com/suguer/powerdns.git" } ], "require": { "suguer/powerdns": "*@dev" } } 开始使用 DnsPowerDnsClient.php use Swagger\Client\Api\ZonesApi; use Swagger\Client\ApiException; use Swagger\Client\Model\RRSet; use Swagger\Client\Model\Zone; use Swagger\Client\Configuration; class DnsPowerDnsClient { private $server_id = "localhost"; /** * @var \GuzzleHttp\Client */ private $client; /** * @var ZonesApi */ private $zoneApi; private $currentNsList = ['ns1','ns2']; public function __construct() { $config=[ "ip" => "", "api_key" => "", ]; $this->client = new \GuzzleHttp\Client([ 'timeout' => 40....

八月 19, 2022 · 7 分钟 · Ken

php-laravel自定义https端口访问异常

最近项目上需要吧后台的链接升级,开启https并且设置到8443端口,在laravel的翻页以及跳转的页面上,会把端口号给隐藏了, 原因在于laravel/vendor/symfony/http-foundation/Request.php public function getPort() { if ($this->isFromTrustedProxy()) { if (self::$trustedHeaders[self::HEADER_CLIENT_PORT] && $port = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PORT])) { return $port; } if (self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && 'https' === $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO], 'http')) { return 443; } } if ($host = $this->headers->get('HOST')) { if ($host[0] === '[') { $pos = strpos($host, ':', strrpos($host, ']')); } else { $pos = strrpos($host, ':'); } if (false !== $pos) { return (int) substr($host, $pos + 1); } return 'https' === $this->getScheme() ?...

八月 19, 2022 · 1 分钟 · Ken