手记
分享经验交流心得,学习前沿流行技术
-
golang微服务框架go-zero系列-4:go-zero文件服务
golang微服务框架go-zero系列-4:go-zero文件服务 go-zero本身支持文件服务,但是我们需要写相关的handler文件,本文目的在于 不写任何一个和文件相关的handler 如果有新的文件,直接把文件模板到某个特定目录就好,不要动任何go代码 需求在这里,开撸吧 注意 微服务讲究资源分离,实际生产过程中尽量使用专业的文件服务器或者OSS等第三方存储平台 file服务实现思路 在gin中有专门的static file服务封装,go-zero目前并没有提供。目前go-zero提供非常严格的路径匹配,如 访问 /asset/l1.jpg
2084浏览
0推荐
1评论
-
golang微服务框架go-zero系列-3:扩展go-zero,使之支持html模板解析自动化
扩展go-zero,使之支持html模板解析自动化 go-zero本身支持html模板解析,我们只需要添加url对应模板解hanlder,实现逻辑就可以了 但是winlion太懒了,我甚至想 不写任何一个和模板相关的handler 如果有新的模板,直接把模板到某个特定目录就好,不要动任何go代码 在开发环境下没有缓存,修改了模板文件无需重启 需求在这里,开撸吧 创建项目 生成go.mod文件 以如下指令创建项目 mkdir html cd html go mod init html 定义html.api 本文设计API如下 |描述|格式|方法|参数|返回|是否
2349浏览
1推荐
0评论
-
这个IM项目没时间搞了,开源算了。10万并发,基于golang。
先上效果 安装方法 本系统升级到golang1.12,请开启如下支持 #开启go mod支持 export GO111MODULE=on #使用代理 export GOPROXY=https://goproxy.io 1.下载项目 git clone https://github.com/winlion/chat.git 2.项目配置 2.1 ide配置 goland IDE ADD Configuration->左上角+->go build类型,右侧填写 files :{你的项目路径}/hellox.x/main.go workdir:{你的项目路径}/hellox.x/ vscode 安装golang插件即可,无需配置,推荐使用 2.2 数据库配置 修改service/init.go
1741浏览
1推荐
0评论
-
golang微服务框架go-micro 入门笔记2.4 go-micro service解读
本章节阐述go-micro 服务发现原理 go-micro架构 下图来自go-micro官方 Service 实现如下接口的,都是Service type Service interface { Init(...Option) Options() Options Client() client.Client Server() server.Server Run() error String() string } 我们根据常见的service初始化流程来理解这个接口 func main() { // New Service service := micro.NewService( micro.Name("go.micro.srv.broker"), micro.Version("latest"), ) // Initialise service
1050浏览
0推荐
0评论
-
golang微服务框架go-zero系列-1:在go-zero中使用jwt-token鉴权实践
创建项目 生成go.mod文件 以如下指令创建项目 mkdir jwttoken cd jwttoken go mod init jwttoken 定义user.api 本文设计API如下 描述 格式 方法 参数 返回 是否需要鉴权 用户登录 /open/authorization post mobile:手机号,passwd:密码,code:图片验证码 id:用户ID,token:用户token 否 更新用户信息 /user/update post mobile:用户手机号 token:用户新的token 是 根据以上描述,书写api的模板文件如下 type ( UserOptReq struct { mobile string `form:"mob
1254浏览
0推荐
0评论
-
golang微服务框架go-zero系列-1:适合创业的golang微服务框架go-zero + 金光灿灿的gorm V2实践
为什么使用go-zero 可以有第三个选择 golang圈子不大,微服务框架框架屈指可数:除了go-micro、go-kit,几乎没有其他选择。go-zero为此提供第三个可能。 go-micro 对webapi支持并不友好,需要运行micro指令,难以定制 创业产品需要一款支持业务成长的框架 我们到底需要什么样的框架?我们需要一款可以支持业务成长的框架!产品运营初期,比如需求验证阶段,我们并不需要采取微服务架构,因为运营成本太高。一款单体应用足以应付。随着业务发展,微服务成为必要,此时我们希望不进行太多的代码工作量
4996浏览
0推荐
1评论
-
golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布
本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-micro 入门笔记2.1 micro工具之micro api golang微服务框架go-micro 入门笔记2.2 micro工具之micro web broker代理 微服务之间需要通过broker来传递消息,go-micro支持http/nats/memory三种broker,其中http是默认的broker。 同时,go-micro以强大的插件形式,提供如下几种常见的broker。 $ls gocloud/ googlepubsub/
1015浏览
0推荐
0评论
-
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web
micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-micro 入门笔记2.1 micro工具之micro api 本文应用环境 名称 描述 操作系统 win10 go version go version go1.12.7 windows/amd64 GOPATH E:\winlion\gopath GOPROXY https://goproxy.io G111MODULE on 命令行工具 cmder工具,可自行百度安装 命令行说明 micro web
717浏览
0推荐
0评论
-
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api
micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 主要作用 主要作用是为微服务提供http网关支持。假如后端服务名称为go.micro.srv.hello,提供call方法,则我们可用通过http协议来调用微服务。 curl http://127.0.0.0:8080/hello/call?name=123 micr
1321浏览
0推荐
0评论
-
golang微服务框架go-micro 入门笔记1.搭建 go-micro环境
微服务的本质是让专业的人做专业的事情,做出更好的东西。 golang具备高并发,静态编译等特性,在性能、安全等方面具备非常大的优势。go-micro是基于golang的微服务编程框架,go-micro操作简单、编码高效、功能强大。但是网络上资料偏少,本系列文章定位最简单最容易上手的go-micro入门教程,所有案列来自实操,而非网络上的复制粘贴。 本章节的目的是让大家最快速搭建好go-micro环境 软件 环境 操作系统 win10 golang go 12.7/AMD64 micro micro version 1.8.4 consul consul 1.5
5370浏览
0推荐
0评论
-
扫小程序码实现网站登陆,提供源代码
使用扫小程序码登陆网站 网络上关于实现本本功能的文章很多,但是给出案列的几乎没有,今天笔者实现用小程序码实现网站登陆,体验地址如下 https://idea.techidea8.com/open/login.shtml 思路 关键流程 建立场景sceneid和websocket的绑定关系 获得sceneid 场景ID可以前端生成,也可以后端生成,只需要保证sceneid的同一时间唯一性即可。 前端生成可以采用随机数加时间戳的形式,也可以用uuid算法 //时间戳 var sceneid ="scend-" + new Data().getTime() + Math.ceil(Math.rando
1487浏览
1推荐
0评论
-
100行代码写个前端压缩的js插件
最近开了一节课,《支持10万人同时在线 Go语言打造高并发web即时聊天(IM)应用》课程播出后,很多同学询问了前端图片压缩相关知识,有鉴于此,笔者整理了一个前端压缩的JS插件,老规矩,文章最末给源代码。目前貌似支持Jquery 啦函数原型说明function compress(file,options)file对象即文件对象,对应filedom 的文件数组中的元素options 是一个对象,包括参数如下参数名称参数描述maxwidth压缩后图片的最大宽度,int,默认400maxheight压缩后图片的最大高度,int,默认400threshold图片大小阈值,单位b,低于这个值将不压缩,int,默认102400quality图片压缩质量返回说明支持promisssuccess,function(base64data)类型函数,base64data代表文件的base64编码,包括头如data:image/png;base64,/ivxxxxxxfail,function(errmsg)类型函数。errms
2648浏览
1推荐
0评论
-
千万级流量 H5 应用涉及到图片处理技能点
最近开了一节课,《支持10万人同时在线 Go语言打造高并发web即时聊天(IM)应用》课程播出后,很多读者问到图片处理相关的东西,如怎么进行前端压缩,和异步上传等,有鉴于此,笔者系统性地整理了图片处理相关技术细节。老规矩,文章末尾给有源代码地址。从 2017 年开始,我们持续为某企业支撑多场 HTML5 晒单赢红包活动,活动规则(套路)如下:用户在商超里面购买产品 P,获得小票 T;用户关注公众号,从菜单进入小票上传页面内,用手机拍摄小票,并上传;上传成功后,后端通过图像识别,分辨小票内容是否包含产品 P,借此判断用户是否有抽奖的机会;小票上传成功后,将在列表页面 L 中按照上传先后顺序显示。整个活动持续运维 2 年多,整个过程遇到了各种奇葩问题,举例如下:因为有些手机像素太高,拍照图片达到 2M 左右,上传太慢,上传出错;部分手机上传后相片旋转了 90 度;列表页面加载速度越来越慢,甚至卡顿;图片铺满了硬盘空间,导致应用日志写入失败,系统报错;用户反应页面打开慢,白屏;多用户同时上传图片,有用户上传失败;
4190浏览
7推荐
1评论
-
把手教你花10分钟封装一款适用自己的golang编程框架
最近开了一节课,《支持10万人同时在线 Go语言打造高并发web即时聊天(IM)应用》课程播出后,很多同学希望将其中的编程框架进行分享,有鉴于此,笔者整理了一套适用于golang一般项目的编程框架。老规矩,文章末尾给有源代码地址。这套框架笔者已经使用在数十个项目中了。结构还是比较合理的。MVC 应用一般结构,目录结构说明如下名称内容model模型层目录,类比Java 中的entityview视图层,存放所有templete模板ctrl控制器层, 存放全部控制器service服务层,类比Java里面的servicehtml一些静态资源页面util核心工具包,Md5加密,返回数据封装等asset静态资源目录,存放js/css/image等args封装全部请求参数对象mnt上传文件的存放目录app.dev.conf开发环境配置文件app.prod.conf生产环境配置文件start.sh/start.bat启动脚本build.sh/build.bat打包脚本main.go主应用程序文件主程序结构主程序主要做各种初
6098浏览
8推荐
3评论