03 2023 档案

go gin web 应用 实现 参数校验 自定义功能
摘要:1.准备工作 在进行 web 业务开发时,尽管 validator/v10 这个库已经为我们预置了很多校验的字段约束,难免有些场景下,我们想自定义一些规则进去,比如校验用户注册的密码,约束是含数字、大写字母、小写字母,特殊字符("*|&|$|#")的至少3种,常规的字段约束此时就不管用了,怎么办,当 阅读全文

posted @ 2023-03-25 12:47 进击的davis 阅读(468) 评论(0) 推荐(0)

go gin web应用-通过中间件形式实现通用的参数检验
摘要:都知道 gin 在web开发方面应用广泛,但在参数校验上,之前写一堆 POST 接口的时候,每个接口的业务代码里都要去实现 validate 校验逻辑,感觉代码复用糟糕。 为解决这问题,想到通过 reflect 包是不是可以实现通用的校验处理呢。如果可以实现,业务逻辑就只需要专注与业务实现,进一步实 阅读全文

posted @ 2023-03-25 12:45 进击的davis 阅读(404) 评论(0) 推荐(0)

go 标准包flag的基本用法
摘要:相关用法见代码 flag.Type() # 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 package main import ( "flag" "fmt" "time" ) func main() { // 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 阅读全文

posted @ 2023-03-23 10:56 进击的davis 阅读(46) 评论(0) 推荐(0)

基于go/pprof用于常用排序场景下的性能分析
摘要:我们常用的排序常见的有: 冒泡 选择 插入 希尔 快排 归并 堆排 计数 基数 桶排序 关于排序算法的时间复杂度、空间复杂度这里不加赘述,今天主要分享通过 go 性能分析工具 pprof 看看几种常见排序的性能情况。 sort.go 点击查看代码 package sort import "math" 阅读全文

posted @ 2023-03-22 12:21 进击的davis 阅读(71) 评论(0) 推荐(0)

Golang 大杀器之性能剖析 PProf
摘要:参考文章: Golang 大杀器之性能剖析 PProf Graphviz安装及入门教程 接触了那么久的go,一直也在用go写项目代码,有时遇到一些性能、内存问题,一时不好下手,幸好go自带性能大杀器,帮助我们及时知悉项目代码运行情况与cpu耗时、内存占用等一系列问题。 本次分享主要基于 Golang 阅读全文

posted @ 2023-03-22 11:36 进击的davis 阅读(911) 评论(0) 推荐(0)

go 常用设计模式-结构型模式
摘要:本次分享结构型模式,主要包括: 代理模式 装饰器模式 适配器模式 享元模式 1.代理模式 package proxy import "fmt" /* 结构型模式 代理,代表打理,以他人的名义代表委托人打理其本职工作之外或不所能及的事务,达成合作关系并更高效地促成事务完成的目的。 强调的是对被代理对象 阅读全文

posted @ 2023-03-21 18:09 进击的davis 阅读(43) 评论(0) 推荐(0)

go 常用设计模式-行为型模式
摘要:本次分享的行为型模式,主要包含: 责任链模式 策略模式 观察者模式 模板模式 访问者模式 1.责任链模式 package chainOfResponsibility import "fmt" /* 行为模式: 通过账目报销的例子说明,不同的级别领导,其权限不同,如100元级别,100元级别等 */ 阅读全文

posted @ 2023-03-21 18:04 进击的davis 阅读(55) 评论(0) 推荐(0)

go 常用设计模式-创建型模式
摘要:本次分享的创建型模式主要包括: 单例模式 简单工厂模式 工厂模式 抽象共工厂模式 1.单例模式 package singleton import "sync" /* 创建型模式 */ var ( instance Singleton once sync.Once ) type Singleton s 阅读全文

posted @ 2023-03-21 17:56 进击的davis 阅读(39) 评论(0) 推荐(0)

go 1.19 gRPC的简单实操
摘要:学习一段时间的grpc了,今天简单记录下grpc的使用流程。 在进入今天的分享前,请确保自己已经安装好相关的环境: go 1.19 protoc v3.19.4 protoc-gen-go v1.28.1 protoc-gen-go-grpc v1.3.0 1.项目目录结构 如下图显示: 2.pro 阅读全文

posted @ 2023-03-20 15:12 进击的davis 阅读(316) 评论(0) 推荐(0)

golang grpc编译工具的安装
摘要:本次安装前提是已经安装go环境,我的环境是ubuntu20.04。 安装环境主要是: protoc protoc-gen-go protoc-gen-go-grpc 1.编译器:protoc的安装 参考官方安装方式, 方式一 如果你是ubuntu类似的系统, $ apt install -y pro 阅读全文

posted @ 2023-03-20 10:37 进击的davis 阅读(480) 评论(0) 推荐(0)

docker 运行mysql5.7
摘要:本文主要分享在ubuntu20.04下通过docker安装mysql 5.7的相关实操,通常介于多方面因素我们不会将mysql运行在docker下,但对数据不是很敏感下,又想快速部署相关服务或者简单的开发测试,我们也是可以通过docker运行mysql的。 环境: ubuntu 20.04 dock 阅读全文

posted @ 2023-03-17 18:22 进击的davis 阅读(1314) 评论(0) 推荐(1)

linux通过docker实现文件日志输送到logstash中
摘要:本文主要分享通过logstash进行日志的收集,传输到es的实操。 logstash作为ELK stack中的一员,凭借其强大的插件实现过滤功能,这是Filebeat组件没法比的,但logstash运行起来相对也更重,更吃内存和CPU。 下面我将从logstash的部署到运行,最后在kibana上查 阅读全文

posted @ 2023-03-17 18:22 进击的davis 阅读(790) 评论(0) 推荐(0)

docker 运行filebeat收集日志
摘要:1.简介 beats 首先filebeat是Beats中的一员。 Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几 阅读全文

posted @ 2023-03-17 15:18 进击的davis 阅读(1554) 评论(0) 推荐(0)

go gin viper读取配置并实现配置热加载
摘要:go的gin简单好上手,用了都说香,快速开发api应用这块,go的gin库确实没的说,今天分享的是通过viper库读取配置并实现配置热加载,在gin应用docker后:二进制+配置,这样的配置确实很高效。 话不多说,直接看项目结构: 接下来是各个文件源码。 config.yaml app: name 阅读全文

posted @ 2023-03-17 11:07 进击的davis 阅读(899) 评论(0) 推荐(0)

docker部署go程序实现极小镜像占用
摘要:1.交叉编译 通常我们编写代码会在linux的环境中,一般开发环境就是win里面装个linux虚拟机,有的时候在虚机里安装相关IDE,这就使得本来资源有限的虚机进一步压缩,go恰好可以交叉编译,这为编码带来了极大的好处。 根据go的编译逻辑,我们在编译前更改go env后可实现win平台build 阅读全文

posted @ 2023-03-16 18:34 进击的davis 阅读(363) 评论(0) 推荐(0)

docker容器化部署nginx代理的go-web应用-解决反向代理、ssl、负载均衡问题
摘要:通常我们的web应用程序部署的时候不会直接暴露,通过nginx反向代理,一是隐藏真实后端,二是通过nginx的epoll网络IO多路复用,获取高性能的网络访问。 今天我们分享个通过nginx代理go的后端web服务。 主要内容: nginx初始化配置 go应用的初始化配置 部署实战(反向代理serv 阅读全文

posted @ 2023-03-16 11:38 进击的davis 阅读(1081) 评论(0) 推荐(0)

python/go通过kafka实现消息解耦
摘要:参考文章: Ubuntu安装单机模式kafka kafka-python3 GO kafka sarama 生产者 消费者 简单 实现 之前做项目的时候,重构了业务的部分逻辑,一些非实时性的通知业务就通过消息队列实现解耦,server1生产消息,发送到kafka,server2从kafka消费消息, 阅读全文

posted @ 2023-03-10 14:38 进击的davis 阅读(157) 评论(0) 推荐(0)

导航