Go的切片(进阶版)
带着设计的思维去学习! 引入:为什么要引入切片? 因为数组真的不好用啊,啊sir!你看看它,声明的时候就要说明容量,容量到了还不能自动扩容,那剩下的不就只有一个按下标遍历的功能了吗? 所以我们想要的是什么呢?是不需要声明容量,并且自动扩容,支持增删等操作的一个数据结构,其他语言里就有这样的东西,比如Python里的List,C++里的Vector,JAVA里的ArrayList。 如果我们自己实现,需要怎么做呢?带你回忆一下数据结构课教的东西 动态数组这个数据结构包含什么东西呢?首先,动态数组也...阅读全文
JANUSEC应用网关1.0发布,提供一站式安全交付能力
本文首发微信公众号:数据安全架构与治理01 背景简介在2018年的时候,笔者发布了一篇:基于Golang打造一款开源的WAF网关 ,那会儿是JANUSEC应用网关刚刚在Github开源,构建了一款全新的应用网关的基本框架。初始版本虽然功能不多,却是按照《数据安全架构设计与实战》中介绍的最佳实战来进行打造的,或者说比《数据安全架构设计与实战》成书的时间还要早,因为我是先做开源产品,后来才写书的(他们的确一脉相承,都是过去十几年安全最佳实践经验的总结)。随后,是近三年的不断改进,但版本长期维持在0....阅读全文
Golang后端面试汇总-002
micro服务发现 image 服务的注册与发现是微服务必不可少的功能,这样系统才能有更高的性能,更高的可用性。go-micro框架的服务发现有自己能用的接口Registry。只要实现这个接口就可以定制自己的服务注册和发现。 go-micro在客户端做的负载,典型的Balancing-aware Client模式。 参考链接: https://www.cnblogs.com/li-peng/p/9689786.html mysql底层有哪几种实现方式 1 MySQL 的常用引擎 a InnoDB...阅读全文
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 . . ...阅读全文
Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第二篇(内附开发 demo)
系列云原生 API 网关,gRPC-Gateway V2 初探Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第一篇鉴权微服务数据持久化使用 Docker 快速本地搭建 MongoDB 4.4.5 环境拉取镜像docker pull mongo:4.4.5 # .... # Digest: sha256:67018ee2847d8c35e8c7aeba629795d091f93c93e23d3d60741fde74ed6858c4 # Status: Imag...阅读全文
LAL-开源Go语言音视频流媒体服务器
中文文档LAL is an audio/video live streaming broadcast server written in Go. It's sort of like nginx-rtmp-module, but easier to use and with more features, e.g RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]-FLV/HTTP-TS, WebSocket-FLV/TS, H264/H265/AAC, relay, cluste...阅读全文
go设计模式之策略模式浅谈
### 策略模式 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换 ### 策略模式与状态模式的区别联系 查看知乎上的一篇文字[状态模式和策略模式的区别与联系](https://www.zhihu.com/question/23693088) 本文也是参考这篇文章的想法,通过go语言翻译出来,如有不合适,请找知乎冤大头,哈哈 ### 与状态模式类似 本质上讲,策略模式和状态模式做得是同一件事:去耦合。怎么去耦合? 就是把干什么(语境类)和怎么干(策略接口)分开,互...阅读全文
使用LibreOffice将word转化为pdf -解决中文乱码
1、下载安装linux 下载rpm包# wget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.0.6/rpm/x86_64/LibreOffice_7.0.6_Linux_x86-64_rpm.tar.gz# wget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.0.6/rpm/x86_64/LibreOffice_7...阅读全文
go module 引入本地包的问题
问题来源:自己写了一个小框架,想单独放到项目外面方便多项目引入使用。但是放到“$GOPATH/pkg/mod”下不能直接用,各种报错,后经过各种试验最终编译通过,总结下来就以下几点,分享给大家。项目是放到“project”文件夹下的,想要引入的包是“frame”,这两个文件夹可以各自在计算机磁盘任意位置。该文章使用go版本号1.16.5/*项目文件中的"go.mod"文件:module projectgo 1.16require frame v1.0.0replace frame v1.0.0 ...阅读全文
Go业务系统开发总结
.markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{line-height:1.5;margin-top:3...阅读全文
生产环境中推荐使用的一款服务器性能监测工具——WGCLOUD
在我们项目的生产环境,会涉及到各种资源使用,比如服务器性能、各种应用、服务接口、数据源等,我们迫切想把这些资源都监测起来,发现异常时候可以收到告警通知,降低故障时间 我们项目里用的[WGCLOUD监控系统](http://www.wgstart.com),运行非常稳定,它是一款集成度较高的分布式运维监控系统,具有易部署、易上手使用、轻量、高效等特点,server端基于springboot开发,agent端使用go编写。核心模块包括:主机系统信息监控,CPU监控,CPU温度监控,内存监控...阅读全文
Go 日常开发常备第三方库和工具
![](https://tva1.sinaimg.cn/large/008i3skNly1gvyvycad0ej30rs0rsta4.jpg) 不知不觉写 `Go` 已经快一年了,上线了大大小小好几个项目;心态也经历了几轮变化。 因为我个人大概前五年时间写的是 `Java` ,中途写过一年多的 `Python`,所以刚接触到 Go 时的感觉如下图: ![](https://tva1.sinaimg.cn/large/008i3skNly1gvywcqamm1j30ng0l6did....阅读全文
golang 解决下载文件名乱码 Safari浏览器下载文件名乱码
一开始的写法: `c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", url.QueryEscape(showFileName)))` 能够兼容大多数浏览器,部分浏览器文件名还是会乱码,比如iPhone的Safari浏览器 终极写法: `c.Header("Content-Disposition", fmt.Sprintf("attachment; filename*=utf...阅读全文
SQL审核 | SQLE 如何开发一条自定义的规则
>作者:Jason > >就职于捷信消费金融有限公司,担任 DBA 工作。先后从事过 Oracle 、Mongo 、MySQL 的 DBA ,以及大数据 ETL 的开发工作。对 NEWSQL 以及云原生分布式数据库具有浓厚的兴趣爱好。 > >本文来源:原创投稿 > >*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 > --- SQLE 是由上海爱可生信息技术股份有限公司 开发并开源,支持SQL审核、索引优化、事前审核、事后审核、支持标准化...阅读全文
go Dijkstra算法 leetcode 743
# go Dijkstra算法 Dijkstra算法可以计算带权图上某个点k,到其他点的最短路径,思路是bfs,全局维护一个distance表,distance[i] 表示节点k到节点 i 的最短路径,,每次bfs的起点是j,distance[j] = min(distance),直到bfs结束,为了每次找bfs的起点j,还需要用上[优先队列](https://studygolang.com/articles/35556) ## code ```go package main ...阅读全文
PowerWeChat 微信SDK 介绍
## 产品介绍 PowerWechat是一款全覆盖微信开发接口,基于Golang的开源项目。您只需安装一次Power WeChat SDK,就可以对接企业微信,小程序,公众号,支付等,微信的开发功能接口。同时我们提供了丰富的文档教程和辅助工具,帮助您轻松使用微信的接口功能。 ## 快速上手 ```go go get -u github.com/ArtisanCloud/PowerWeChat ``` 示范:初始化实例对象,调用小程序的授权登陆接口 ```go ...阅读全文
ZTool一款Go语言非常好用开发工具集
# 官方文档地址->:[文档地址](https://termites.gitee.io/zbook-blog) # 一、概述 **ZTool是在上个gotool的基础上延伸过来的,因为gotoo这个项目中间存在很多第三方库的依赖,然而第三方库停止更新,中间存在很多bug没有维护,造成工具包中间同样存在很多问题** **最终经过考虑,停止维护gotool重新开一个工程,ztool不进行任何的第三方库依赖,进行开发。同时经过两年多的实际项目开发总结,将业务底层代码抽离,抽出了由,字符串、时...阅读全文