架构
雪东~
这个作者很懒,什么都没留下…
展开
-
mongodb for go driver
还是给自己看,单纯记录/*@Time : 2020/9/2 14:37@Author : xd@File : main@Software: GoLand*/package mainimport ( "context" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/.原创 2020-09-02 16:40:20 · 290 阅读 · 0 评论 -
最简单mqtt协议客户端实现
懒得写介绍了,直接放代码,给自己看的!/*@Time : 2020/8/24 13:48@Author : xd@File : main.go@Software: GoLand*/package mainimport ( "fmt" MQTT "github.com/eclipse/paho.mqtt.golang" "github.com/gogf/gf/os/glog" "github.com/gogf/gf/os/gtime" "time")func main()原创 2020-08-25 09:39:28 · 802 阅读 · 0 评论 -
mysql索引篇之覆盖索引、联合索引、索引下推
覆盖索引在之前《mysql索引初识》这篇文章中提到过,mysql的innodb引擎通过搜索树方式实现索引,索引类型分为主键索引和二级索引(非主键索引),主键索引树中,叶子结点保存着主键即对应行的全部数据;而二级索引树中,叶子结点保存着索引值和主键值,当使用二级索引进行查询时,需要进行回表操作。假如我们现在有如下表结构CREATE TABLE `user_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `username`.转载 2020-08-07 16:39:21 · 330 阅读 · 0 评论 -
phpstorm在Windows平台开启xdebug打断点教程
第一步安装xdebug图片中有两个xdebug不要被误导,第二个是我下载得来的,xdebug下载地址修改php.ini主要修改zend_extension的地址,其他的可以选用我的默认配置[Xdebug]zend_extension="D:\phpstudy_pro\Extensions\php\php7.3.4nts\ext/php_xdebug.dll"xdebug.profiler_enable=onxdebug.auto_trace=onxdebug.collect_params原创 2020-07-02 12:05:50 · 217 阅读 · 0 评论 -
超轻量级golang的Goroutine池
本文是阅读GoFrame内grpool包的理解大致理解// 这是个Goroutine的 pooltype Pool struct { limit int //池子中最大数量 count *gtype.Int // 当前运行的任务计数器,并发安全,郭大nb list *glist.List //异步工作的队列 closed *gtype.Bool // 是否关闭的状态}两种工作方式,一种是链式操作,另一种非链式操作,这里只讲链式操作第一步初始化一个池子,可.原创 2020-07-01 15:58:59 · 763 阅读 · 0 评论 -
goKit微服务系列文章二:增加log中间件
再系列文章一的基础上 增加 loggings.go文件/*@Time : 2020/6/22 14:04@Author : zhb@File : loggings@Software: GoLand*/package mainimport ( "github.com/go-kit/kit/log" "time")type loggingMiddleware struct { Server logger log.Logger}//日志功能的中间件结构体func Logg原创 2020-06-22 15:34:44 · 841 阅读 · 0 评论 -
goKit微服务系列文章一:http rest
本文主要为个人记录,首先实现的是一个简单的基于HTTP的微服务实例,将以REST形式对外暴露,具体要求如下:使用gokit构建REST接口;URL格式为:/calculate/{type}/{a}/{b},请求方法为POST;server.go 文件/*@Time : 2020/6/20 10:20@Author : zhb@File : server@Software: GoLand*/package mainimport "errors"type Server inte.原创 2020-06-20 13:03:44 · 429 阅读 · 0 评论 -
git在命令行上创建新的存储库
echo "# rpcDemo" >> README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin git@github.com:zhangHongBo21/rpcDemo.gitgit push -u origin master 或从命令行推送现有存储库git remote add origin git@github.com:zhangHo原创 2020-06-20 09:56:44 · 447 阅读 · 0 评论 -
golang操作excel
Excelize安装go get github.com/360EntSecGroup-Skylar/excelize如果您使用 Go Modules 管理软件包,请使用下面的命令来安装最新版本。go get github.com/360EntSecGroup-Skylar/excelize/v2创建 Excel 文档下面是一个创建 Excel 文档的简单例子:package mainimport ( "fmt" "github.com/360EntSecGroup原创 2020-06-19 14:31:41 · 6737 阅读 · 0 评论 -
golang监听文件变动
废话不多说,直接上抄袭来的demopackage mainimport ( "log" "github.com/fsnotify/fsnotify")func main() { watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() done := make(chan bool) go func() { for { select .原创 2020-06-19 13:28:38 · 3465 阅读 · 0 评论 -
livego介绍以及最全使用方法介绍
昨天用nginx搭建了一套rtmp的服务器,心血来潮找到了用go语言写的livego,官方提供的使用手册不全,自己看源码琢磨出来的使用方式,先放一波官方介绍!简单高效的直播服务器:安装和使用非常简单;纯 Golang 编写,性能高,跨平台;支持常用的传输协议、文件格式、编码格式;支持的传输协议RTMPAMFHLSHTTP-FLV支持的容器格式FLVTS支持的编码格式H264AACMP3安装直接下载编译好的二进制文件后,在命令行中执行。从 Docker.原创 2020-06-11 10:42:56 · 37149 阅读 · 14 评论 -
Windows环境下基于NGINX进行rtmp推流直播
准备工作NGINX下载地址Rtmp扩展下载地址下载完进行解压nginx点播设置worker_processes 1; events { worker_connections 1024;} ##################RTMP服务#################rtmp { server { listen 1935; #//服务端口 chunk_size 4096; #//数据传输块的大小 application原创 2020-06-10 11:02:38 · 1999 阅读 · 1 评论 -
grpc同时支持rpc以及http服务
假定我们有一个项目需求,希望用Rpc作为内部API的通讯,同时也想对外提供Restful Api,写两套又太繁琐不符合于是我们想到了Grpc以及Grpc Gateway,这就是我们所需要的准备环境假设以及安装好go环境以及grpc所需的组件GolangGrpcProtoc PluginProtocol BuffersGrpc-gateway准备构建所需组件// +build toolspackage toolsimport ( _ "github.com/grp原创 2020-06-08 11:02:56 · 2618 阅读 · 1 评论 -
mysql,sum求和之后赋值到变量精度丢失
不管什么语言,只要从mysql中查询出来的数据是数字类型,就会有内存溢出的风险,解决办法,超级简单,//重点在cast函数SELECT cast(SUM(num) as CHAR) FROM `tra_fund`原创 2020-06-06 16:11:28 · 1630 阅读 · 0 评论 -
记录一哈
原创 2020-06-05 13:10:50 · 118 阅读 · 0 评论 -
protobuf在Windows平台下生产golang代码
开始protobuf默认情况下执行 --go_out是报错的,'protoc-gen-go' 不是内部或外部命令,也不是可运行的程序或批处理文件。--go_out: protoc-gen-go: Plugin failed with status code 1.废话不多说,直接上干货!建立在你有go环境上以及安装过了protobuf执行这个命令go get -u github.com/golang/protobuf/protoc-gen-go下载完之后GOPATH目录下回出原创 2020-06-04 09:38:37 · 3288 阅读 · 1 评论 -
protobuf在Windows平台下载
下载自己按需下载,我是Windows平台,所以下载了win64下载链接接着自行添加环境变量验证一下原创 2020-06-03 17:35:24 · 295 阅读 · 0 评论 -
OpenTracing语义标准
语义惯例OpenTracing标准 描述的语言无关的数据模型,以及OpenTracing API的使用方法。在此数据模型中,包含了两个相关的概念 Span Tag 和 (结构化的) Log Field,尽管在标准中,已经明确了这些操作,但没有定义Span的tag和logging操作时,key的使用规范。这些语义习惯通过这篇文档进行描述。这篇文档包括两个部分:一. 通过表格罗列出所有的tag和logging操作时,标准的key值。二.描述在特定的典型场景中,如何组合使用这些标准的key值,进行建模。版本转载 2020-06-03 09:44:39 · 388 阅读 · 0 评论 -
Sentinel 的golang版本简单使用以及介绍
开始对 Sentinel 进行相关配置并进行初始化埋点(定义资源)配置规则对 Sentinel 进行相关配置并进行初始化使用 Sentinel 时需要在应用启动时对 Sentinel 进行相关配置并触发初始化。 api包下提供如下函数: InitDefault():从环境变量中读取相应配置来初始化 Sentinel,若环境变量不存在则使用默认值 Init(configPath string):从给定的 YAML 文件中读取相应配置来初始化 Sentinel。日志目录配置会从环境变量读取或原创 2020-06-02 17:08:27 · 3590 阅读 · 0 评论 -
HTTPS对比HTTP
本文来源:腾讯优图实验室笔者来自腾讯优图实验室,主要从事视觉 AI 能力赋能边缘计算设备的工作。一直以来,在实验室甚至整个公司特别强调“安全和隐私”,近半年,笔者在用 GoLang 开发智能边缘计算设备的网络通信项目时,常被要求务必重视“通信的安全和隐私”。期间,对接了多个合作方,有的要求“公网下要防止域名劫持”,有的要求“客户端上报要带‘证书’啊,更安全”,还有要求除了要用 HTTPS,还要...转载 2020-03-04 14:44:31 · 697 阅读 · 0 评论 -
记录一次MongoDB安装启动报错
使用工具连接数据库时候报错随即解决问题然后在服务当中手动启动,结果报了一个我不知道的错误,因为我已经解决了我就不截图了然后点击查看属性查看可执行命令,我是不会说我安装完忘了安装到那个目录了这个时候就去cmd窗口手动执行这个命令,报错Unrecognized option: mptry 'mongod.exe --help' for more information这个错误是mo...原创 2019-11-23 12:38:05 · 1565 阅读 · 0 评论 -
应对高并发nginx限流
为了防止大流量恶意搞死项目,从nginx下手进行限流http { #geot和map两段用于处理限速白名单,map段映射名单到$limit,处于geo内的IP将被映射为空值,否则为其IP地址。 #limit_conn_zone和limit_req_zone指令对于键为空值的将会被忽略,从而实现对于列出来的IP不做限制 geo $whiteiplist { ...原创 2019-08-19 09:42:11 · 713 阅读 · 1 评论 -
HTTP缓存机制与CDN
前提:周末看视频了解到一个关键词,http缓存,然后顺带这了解了一下cdnweb应用程序的缓存大致分为数据库缓存,服务器端缓存(redis以及CDN 等缓存)、本地缓存。本地缓存还包含很多内容:http缓存,indexdb,cookie,localstorage 等,我主要介绍http缓存相关内容,其他的后期在介绍http缓存主要是针对图片,css以及js等不经常更新的静态文件ht...原创 2019-08-26 16:46:04 · 5679 阅读 · 1 评论 -
分享一个免费的远程ssh链接工具
摘要:之前一直使用的是xshell,但是xshell过期了之后,一直找不到好用的破解版,无意间发现了一个国产版的官网地址window版下载地址这是使用界面,速度可能没有xshell快...原创 2019-08-28 10:27:11 · 1794 阅读 · 0 评论 -
关于分布式的理解
都会有哪些错误异常云服务内部错误有时候程序引起的内存溢出或者是服务器意外重启等意外都会引起服务器短暂宕机,此时当前节点无法正常提供应有的服务,称之为不可用。网络异常有时候多台服务器中间的某一个服务器所在的机房断网了,或者是网关异常。导致节点不可用,磁盘故障嗯,不多解释,就是硬盘坏了超时在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态。分布式的衡量指标性能...原创 2019-08-29 16:21:19 · 2431 阅读 · 0 评论 -
消息中间件
原文出处不可知了一、消息中间件相关知识1、概述消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。2、消息中间件的组成 2.1 Bro...转载 2019-09-04 16:52:11 · 1425 阅读 · 0 评论 -
分布式锁
01为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis 里面的某个...转载 2019-09-05 13:25:39 · 329 阅读 · 0 评论 -
微服务的一些知识点梳理
摘要:大概解释了什么是rpc以及rpc的注意事项,还有各个rpc框架RPC(Remote Procedure Call),远程过程调用。在先介绍远程过程调用之前,先介绍一下什么是本地调用,形象点说,就是你想次饭,然后自己去厨房做了个饭,远程过程调用就是你打开饿了么,订了个外卖,厨师去厨房给你做了个饭,这么说,是不是很容易理解。个人理解,rpc的起源为分布式,是分布式促使了rpc的诞生。...原创 2019-09-07 12:37:06 · 3320 阅读 · 0 评论 -
进程、线程、协程、例程、过程的区别是什么?
首先解释下程序、进程、上下文切换和线程。然后再解释协程、例程、过程。程序程序:源代码堆起来的东西。相当于一个一动不动没有生命的机器人。虽然是没有生命的机器人,但是它被设计后就表示有了硬件,它的硬件决定了之后它有生命后是如何干活的 机器人有优劣,所以有些优秀的机器人干活很快,而有些机器人干活很慢进程进程:程序在系统上跑起来(运行)之后的东西(动态的)。相当于有了生命的机器人。生命...转载 2019-09-15 10:36:14 · 1177 阅读 · 0 评论 -
五种IO模型透彻分析
1.基础在引入IO模型前,先对io等待时某一段数据的"经历"做一番解释。如图:当某个程序或已存在的进程/线程(后文将不加区分的只认为是进程)需要某段数据时,它只能在用户空间中属于它自己的内存中访问、修改,这段内存暂且称之为app buffer。假设需要的数据在磁盘上,那么进程首先得发起相关系统调用,通知内核去加载磁盘上的文件。但正常情况下,数据只能加载到内核的缓冲区,暂且称之为kern...转载 2019-08-06 16:40:09 · 286 阅读 · 0 评论