go
github_zwl
乐观,开朗是我的本性,认真是我的态度
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
golang windows64位操作系统上编译32位应用
golang windows64位操作系统上编译32位应用原创 2023-01-10 18:56:43 · 1509 阅读 · 0 评论 -
golang操作pg数组
golang操作pg数组原创 2022-11-03 13:54:05 · 535 阅读 · 0 评论 -
minio/sio进行加解密文件
minio/sio进行加解密文件原创 2021-11-21 11:40:36 · 975 阅读 · 0 评论 -
从Go语言的设计原则分析其适用性
文章的标题其实就给我们透露了2个重要信息:Go at Google 和 Software Engineering。先看第一个,Rob在概要和第3段描述了Google在系统开发过程中面临的主要问题:软硬件规模庞大,数据量大,系统众多且复杂,使用多种语言,编译构建缓慢等。文中用了多个big去描述这些问题,并且在开篇就明确的表示:Go is a programming language designed by Google to help solve Google's problemsGo语言是为goog原创 2021-04-24 17:06:02 · 263 阅读 · 0 评论 -
力扣102:二叉树的层序遍历
二叉树的层序遍历1.递归实现-相同层次的节点归入同一个数组-传入辅助的level参数决定层次时间复杂度O(n)空间复杂度O(n)2.迭代-关键词:层次遍历-模式识别:一旦出现树的层次遍历,都可以用队列作为辅助结构//二叉树的层序遍历//递归 dfsfunc levelOrder1(root *TreeNode) [][]int { ans := [][]int{} var f func(*TreeNode, int) f = func(r *TreeNode,原创 2021-03-02 15:52:54 · 326 阅读 · 0 评论 -
力扣101:对称二叉树
判断二叉树是否对称给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的1/\22/\/\3443下面这棵二叉树不对称。1/\22\\33备注:希望你可以用递归和迭代两种方法解决这个问题示例1输入{1,2,2}输出true示例2输入{1,2,3,3,#,2,#}输出...原创 2021-03-01 21:19:17 · 254 阅读 · 0 评论 -
力扣5:最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。1.中心扩散法//中心扩散法func longestPalindrome(s string) string { if s == `` || len(s) < 2 { return s } start, end := 0, 0 for i := 0; i < len(s); i++ { left1, right1 :=原创 2021-02-27 11:33:26 · 163 阅读 · 0 评论 -
力扣2:两数相加
题目:给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9...原创 2021-02-19 10:33:26 · 142 阅读 · 0 评论 -
力扣2道简单题(485 最大连续 1 的个数和566重塑矩阵)
//485最大连续1的个数func findMaxConsecutiveOnes(nums []int) (maxCnt int) { cnt := 0 if len(nums) < 1 { return } for _, v := range nums { if v == 1 { cnt++ } else { maxCnt = max(maxCnt, cnt) cnt = 0 } } maxCnt = max(maxCnt, cnt) return.原创 2021-02-17 19:39:44 · 235 阅读 · 0 评论 -
力扣11. 盛最多水的容器
//MaxArea .func MaxArea(height []int) int { ans := 0 begin, end := 0, len(height)-1 for end > begin { area := Min(height[begin], height[end]) * (end - begin) if area > ans { ans = area } if height[begin] == Min(height[begin], height[e.原创 2021-02-04 15:24:36 · 127 阅读 · 0 评论 -
力扣100. 相同的树
//TreeNode .type TreeNode struct { Val int Left *TreeNode Right *TreeNode}func isSameTree(p *TreeNode, q *TreeNode) bool { //递归遍历比对 if p == nil && q == nil { return true } if p == nil || q == nil { return false } if p.Val != ..原创 2021-01-29 16:49:58 · 112 阅读 · 0 评论 -
力扣98. 验证二叉搜索树
三种解法:1,递归,2.迭代,3,中序遍历(二叉搜索树的中序遍历是一个递增数列)1.递归func isValidBST(root *TreeNode) bool { return helper(root, math.MinInt64, math.MaxInt64)}func helper(root *TreeNode, lower, upper int) bool { if root == nil { return true } if root原创 2021-01-28 20:53:11 · 261 阅读 · 0 评论 -
力扣95. 不同的二叉搜索树 II
给定一个整数 n,生成所有由 1 ...n 为节点所组成的 二叉搜索树 。示例:输入:3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 ...原创 2021-01-28 20:42:29 · 152 阅读 · 0 评论 -
力扣724. 寻找数组的中心索引
func pivotIndex(nums []int) int { total := 0 for _, v := range nums { total += v } sum := 0 for i, v := range nums { if 2*sum+v == total { return i } sum += v } return -1}func main() { nums := []int{1, 7, 3, 6, 5, 6} fmt.Println(piv.原创 2021-01-28 14:56:08 · 130 阅读 · 0 评论 -
golang限流
golang限流其实官方提供了golang.org/x/time/rate包,直接rate.NewLimiter(2, 5),然后判断func limit(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if limiter.Allow() == false { http.Error(w, h原创 2021-01-28 12:47:51 · 426 阅读 · 0 评论 -
力扣1579. 保证图可完全遍历
Alice 和 Bob 共有一个无向图,其中包含 n 个节点和 3种类型的边:类型 1:只能由 Alice 遍历。类型 2:只能由 Bob 遍历。类型 3:Alice 和 Bob 都可以遍历。给你一个数组 edges ,其中 edges[i] = [typei, ui, vi]表示节点 ui 和 vi 之间存在类型为 typei 的双向边。请你在保证图仍能够被 Alice和 Bob 完全遍历的前提下,找出可以删除的最大边数。如果从任何节点开始,Alice 和 Bob 都可以到达所有其他节点,...原创 2021-01-27 14:46:28 · 128 阅读 · 0 评论 -
golang带TZ的格林威治时间字符串转时间格式
to, _ := time.Parse("2006-01-02T15:04:05Z", "2021-01-27T10:10:10.294Z")stamp := to.Format("2006-01-02 15:04:05")原创 2021-01-27 11:40:32 · 4309 阅读 · 0 评论 -
golang括号匹配
用数组实现一个栈,如果栈底元素和栈顶元素匹配,则删除栈底元素和栈顶元素,最后判断栈空func KuohaoMatch(s string) bool { //特殊情况,空字符串返回true if len(s) == 0 { return true } //配对字典 m := map[string]string{")": "(", "]": "[", "}": "{"} //栈 var stack []string //把字符串的每个字符放进栈中,每放一个就判断与前一个是不是配对的转载 2020-11-26 11:16:03 · 802 阅读 · 0 评论 -
golang cron
import ( "github.com/robfig/cron/v3" "log")func newWithSecond() *cron.Cron { secondParser := cron.NewParser(cron.Second | cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.DowOptional | cron.Descriptor) return cron.New(cron.WithP.原创 2020-11-23 11:47:37 · 283 阅读 · 0 评论 -
grpc结合protobuf生成pb.go文件demo
syntax = "proto3";option go_package = ".;proto"; //生成在当前目录下package proto;import "google/protobuf/struct.proto";// service definition.service HelloService { rpc HelloInfo (Request) returns (Reply) {}}// The request messagemessage Request { st.原创 2020-11-19 14:16:27 · 1695 阅读 · 0 评论 -
golang怎么判断chan已经关闭
我们都知道data, ok := <- chan第一个变量表示读出的数据,第二个变量表示是否成功读取了数据,有意思的是,第二个变量并不用于指示管道的关闭的状态。第二个变量常常被误以为关闭状态是因为它确实和管道状态有关,确切的来说,是和管道缓冲区是否有数据有关。如果判断golang的channel是否关闭,data, ok := <- chan,当ok不是true的时候,说明是channel关闭了。 那么问题来了,channel关闭了,我们是否可以立马获取到channel被关闭的状态?我想这个原创 2020-11-14 11:07:13 · 5314 阅读 · 1 评论 -
golang解决循环引用的方法
第一种方式:抽象出来一个接口层:golang不允许循环import package ,如果检测到 import cycle ,会在编译时报错,通常import cycle是因为设计错误或包的规划问题。以下面的例子为例,package a依赖package b,同事package b依赖package a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15原创 2020-11-13 17:29:09 · 7244 阅读 · 1 评论 -
根到叶子的数字之和
用深度优先搜索type TreeNode struct { Val int Left *TreeNode Right *TreeNode}func dfs(root *TreeNode, prevSum int) int { if root == nil { return 0 } sum := prevSum*10 + root.Val if root.Left == nil && root.Right == nil {.原创 2020-10-29 10:58:32 · 140 阅读 · 0 评论 -
golang的ping检测网络实现
golang ping 服务器,可以用系统调用也可以用go内置的库。系统调用func NetWorkStatus() bool { cmd := exec.Command("ping", "www.google.com", "-c", "4", "-W", "5") fmt.Println("NetWorkStatus Start:", time.Now().Unix()) err := cmd.Run() fmt.Println("NetWorkStatus End :", time.转载 2020-10-28 15:10:53 · 9755 阅读 · 3 评论 -
leetcode第六题 判断回文链表golang完整可运行实现
package mainimport "fmt"type ListNode struct { Val int Next *ListNode}func isPalindrome(head *ListNode) bool { var vals []int for ; head != nil; head = head.Next { vals = append(vals, head.Val) } n := len(vals) f.原创 2020-10-23 10:37:26 · 219 阅读 · 0 评论 -
golang 正则
1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实数:^[0-9]+(.[0-9].原创 2020-10-12 18:29:59 · 729 阅读 · 0 评论 -
golang text/template包
import "text/template"概观索引Examples子目录概观打包模板实现了用于生成文本输出的数据驱动模板。要生成 HTML 输出,请参阅包 html / template ,它与此包具有相同的接口,但会自动保护 HTML 输出免受某些攻击。通过将模板应用于数据结构来执行模板。模板中的注释引用数据结构的元素(通常是结构中的字段或映射中的键)来控制执行并导出要显示的值。模板的执行遍历结构并设置光标,以句点'。'表示。并称为“点”,作为执行过程中结构中当前位置的值。模板转载 2020-09-17 10:55:08 · 697 阅读 · 0 评论 -
casbin的表字段解释
casbin_rule表中 p_type --类型,可以是p策略,g角色等等 v0 --角色 roleName/roleId sub v1 --Path 路径 obj v2 --Method 请求方式 act v3 --允许读/写 read/write v4 --不知道 v5 --不知道ptype=g的时候v1=角色ptype=p的时候,v2=action,v0=subject,v1=obj策略:即ptype为p的数据...原创 2020-09-15 20:28:25 · 2610 阅读 · 0 评论 -
问题集
Docker容器关了,启动一下修改静态ip安装elasticseachdocker pull elasticsearch:7.8.0docker run -d -e "ES_JAVA_OPTS=-Xms20g -Xms20g" --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" 121454ddad72(images号)//这种方式安装plugins有问题,最后...原创 2020-09-08 16:59:09 · 158 阅读 · 1 评论 -
es安装IK分词器
安装分词器:进入es容器https://github.com/medcl/elasticsearch-analysis-ik/releases./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip参考文章:https://blog.youkuaiyun.com/a243原创 2020-09-08 16:55:18 · 946 阅读 · 0 评论 -
2020-09-08
今天在向ES导入数据,通过kibana进行查询时出现[circuit_breaking_exception] [parent] Data too large, data for [<http_request>] would be [1003569608/957mb]错误,一顿google解决了这个问题,记录一下。0X01 异常信息kibana的异常日志如下:log [15:53:41.570] [error][status][plugin:reporting...转载 2020-09-08 14:11:20 · 320 阅读 · 0 评论 -
golang使用excelize导出Excel表格数据
import "github.com/360EntSecGroup-Skylar/excelize"func getExcelData(f *excelize.File) error { filePath := `./static` count := getCount() frequency := (count / SIZE) + 1 log.Println("要分为", frequency, "个excel表格") for i := 0; i < frequen.原创 2020-08-31 17:30:56 · 2306 阅读 · 0 评论 -
golang操作yaml
// 可以用于处理读yaml格式的配置文件,同时也可以用于理解golang中的反射package config_yamlimport ( "strings" "errors" "io/ioutil" "gopkg.in/yaml.v2" "reflect" "fmt" "strconv")type ConfigEngine struct { data map[interface{}]interface{}}// 将ymal.原创 2020-06-25 14:48:10 · 3663 阅读 · 0 评论 -
GOPATH那些事儿
1.设置GOPATH有什么意义?环境变量 GOPATH 的值可以是一个目录的路径,也可以包含多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace)。这些工作区用于放置 Go 语言的源码文件(source file),以及安装(install)后的归档文件(archive file,也就是以“.a”为扩展名的文件)和可执行文件(executable file)这个问题它背后的知识点到底是什么呢Go 语言项目在其生命周期内的所有操作(编码、依赖管理、构建、测试、安装等)基本上都是原创 2020-06-09 12:48:24 · 423 阅读 · 0 评论 -
golang复合类型总结
golang复合类型总结指针类型,数组,切片,map和结构体 指针:指针就是地址var p *inta=1p = &a*p = 999 相当于a=999指针必须有一个合法的指向才能调用赋值等 new关键字和make关键字留意一下。new之后不需要释放,自动的gc值传递和指针传递的区别---值传递是拷贝一份,指针则是指向其内存...原创 2020-04-17 16:46:52 · 386 阅读 · 0 评论
分享