自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 GRPC简单介绍和使用

GRPC简单介绍和使用一、基本介绍 GRPC是一个高性能、通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化协议开发,支持众多的开发语言。二、概括 在grpc框架中,客户端可以像调用本地对象一样直接调用位于不同机器的服务端方法,如此我们就可以非常方便的创建一些分布式的应用服务。 在服务端,我们实现了所定义的服务和可供远程调用的方法,运行一个gRPC server 来处理客户端的请求; 在客户端,gRPC实现了一个stub(可以简单理解为一个...

2020-09-06 17:37:22 1186

原创 Go sync包 sync.Pool

Go sync包 sync.Pool Go版本为go1.14可以存或取临时对象集合;可以安全的同时被多线程使用,保证线程安全;sync.Pool中保存的任何项都可能随时不做通知的释放掉,所以不适合用于像socket长连接或数据库连接池;主要用途是增加临时对象的重用率,减少GC负担。sync.Pool 结构 sync.Pool 存取流程图 ...

2020-09-06 17:30:04 184

原创 Golang 3种并发模型

控制并发有三种种经典的方式,一种是通过channel通知实现并发控制 一种是WaitGroup,另外一种就是Context。1. 使用最基本通过channel通知实现并发控制无缓冲通道无缓冲的通道指的是通道的大小为0,也就是说,这种类型的通道在接收前没有能力保存任何值,它要求发送goroutine和接收goroutine同时准备好,才可以完成发送和接收操作。从上面无缓冲的通道定义来看,发送goroutine和接收gouroutine必须是同步的,同时准备后,如果没有同时...

2020-05-18 09:59:31 974

原创 Golang GMP

前言随着服务器硬件迭代升级,配置也越来越高。为充分利用服务器资源,并发编程也变的越来越重要。在开始之前,需要了解一下并发(concurrency)和并行(parallesim)的区别。并发: 逻辑上具有处理多个同时性任务的能力。并行: 物理上同一时刻执行多个并发任务。通常所说的并发编程,也就是说它允许多个任务同时执行,但实际上并不一定在同一时刻被执行。在单核处理器上,通过多线程共享CPU时间片串行执行(并发非并行)。而并行则依赖于多核处理器等物理资源,让多个任务可以实现并行执行(并发且并行)

2020-05-18 09:59:13 435

原创 由浅入深剖析 go channel

channel是golang中最核心的feature之一,因此理解Channel的原理对于学习和使用golang非常重要。channel是goroutine之间通信的一种方式,可以类比成Unix中的进程的通信方式管道。CSP模型在讲channel之前,有必要先提一下CSP模型,传统的并发模型主要分为Actor模型和CSP模型,CSP模型全称为communicating sequential processes,CSP模型由并发执行实体(进程,线...

2020-05-13 14:56:07 252

原创 golang cron 定时任务

cron 用法首先先把第三方库下载下来:$ go get -v -u github.com/robfig/cron我们来看一个小的demo:每隔一秒打印"hello world"package mainimport ( "github.com/robfig/cron" "log")func main() { log.Println("Starting...") c := cron.New() //新建一个定时任务对象 c.AddFunc("...

2020-05-13 14:44:36 982

原创 PV、UV、QPS之间的关系

QPS:每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力。QPS = req/sec = 请求数/秒QPS统计方式 [一般使用 http_load 进行统计]QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS: 单个进程每秒请求服务器的成功次数峰值QPS:原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间...

2019-11-06 14:37:32 1561

原创 go 类型转换

#string到intint,err:=strconv.Atoi(string)#string到int64int64, err := strconv.ParseInt(string, 10, 64)#int到stringstring:=strconv.Itoa(int)#int64到stringstring:=strconv.FormatInt(int64,10)...

2019-09-27 10:11:03 275

原创 Go的json解析:Marshal与Unmarshal

简介Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json 字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等。go语言本身为我们提供了json的工具包”encoding/json”。更多的使用方式,可以参考:https://studygolang.com/artic...

2019-09-27 10:06:26 524

原创 php生产环境部署代码后访问的以前的代码

有一次上线,运维部署代码后测试,发现没有新加的功能,访问的还是更新前的功能。上服务器,查看有更新后的代码,为保留上个版本的代码,采用的是每个版本一个文件夹,软链最新的版本为线上版本,进入最新文件夹发现,没有产生任何日志,就推测访问的是上个版本的代码,进入上个版本发现有访问日志,日志文件一般一天产生一次,新的明天才会在新版本产生。找了很久没有找到原因,后来运维屏蔽了服务器访问,重...

2018-09-30 11:34:39 904 1

原创 php excel 导出报错

php版本7.1.12使用yii2的  "moonlandsoft/yii2-phpexcel": "*" 扩展在本地没有问题,到测试环境点击导出会提示:无法访问此网页,已永久性地移动到了新网址网上找了很久没有一个方法可以后修改   使用excel版本好了修改文件:vendor/moonlandsoft/yii2-phpexcel/Excel.php  565行   把Ex...

2018-09-30 11:19:52 682

原创 Ubuntu 安装 RabbitMQ 和PHP扩展

1.ubuntu16.04中安装RabbitMQ1).首先必须要有Erlang环境支持 安装之前要装一些必要的库:sudo apt-get install build-essential sudo apt-get install libncurses5-dev sudo apt-get install libssl-dev sudo apt-get install m4 sudo a

2017-07-13 18:19:16 1848

原创 linux服务器自动切割并清理日志

linux服务器自动切割并清理日志 由于nginx的日志会不停地增大,所以需要我们自己去切割日志,方便管理,需要达到以下的效果:1.按日期自动切割日志,最小单位是天。2.当日志总量超过一定量时,自动直接清理日志,限定总量不能超过1GB。3.写入crontab定时任务里。 分析1.nginx日志目录下分别有access.log和error.log,按照日期自动切割日志则需要将每天的日志以

2017-07-10 17:29:32 598

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除