- 博客(63)
- 收藏
- 关注
转载 connection pool exhausted
1.发现问题生产环境发现有一些redis报错日志 connection pool exhausted。如果redis中没有数据 就直接回源 查DB。暂时不会有什么大问题。中文意思是连接池耗尽。2.追踪问题查看源码我们用的redis客户端类似于redigo 按照错误提示搜索到了一段代码(基于最新的redigo 源码版本分析) // Handle limit for p.Wai...
2019-09-28 15:48:00
990
转载 golang 单元测试&&性能测试
一:单元测试1.为什么要做单元测试和性能测试减少bug快速定位bug减少调试时间提高代码质量2.golang的单元测试单元测试代码的go文件必须以_test.go结尾单元测试的函数名必须以Test开头,是可导出公开的函数测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值3.golang单元测试组有好几个不同的输入以及输出组成的一...
2019-07-13 08:16:00
269
转载 golang http 中间件
golang http 中间件源码链接golang的http中间件的实现 首先实现一个http的handler接口type Handler interface { ServeHTTP(ResponseWriter, *Request)}type Router struct { route map[string]Handle}func (r *Rout...
2019-06-26 08:29:00
375
转载 golang 函数的特殊用法
1.可以复用一些写法。经常在单元测试过程中需要new一些对象可以new的操作抽离出来package mainimport "fmt"type S struct {}func (s *S) Service1(name string) { fmt.Println("Service 1", name)}func (s *S) Service2(name strin...
2019-05-26 18:57:00
287
转载 Goroutine 中执行匿名函数 坑
//相对应for 循环 goroutine跑到慢 所以这里很大概率只会打印最后一条数据func goRun() { values := []int{1, 2, 3} for _, v := range values { go func() { fmt.Println(v) }() }}//解决1 将参...
2019-04-20 13:53:00
402
转载 Golang map并发 读写锁
golang并发一:只有写操作var ( count int l = sync.Mutex{} m = make(map[int]int))//全局变量并发写 导致计数错误func vari() { for i := 0; i < 10000; i++ { go func(i int) { ...
2019-03-31 18:56:00
1017
转载 memcache 协议 && Golang实现
https://github.com/quguolin/memcache一:ErrorERROR\r\n客户端发送了一个不存在的命令CLIENT_ERROR\r\n客户端发送了一个不符合协议的命令SERVER_ERROR\r\n服务的错误二:Storage commands1.<command name> <key> <flags&g...
2019-03-02 11:28:00
146
转载 Go IO && bufio
IOIO包 是对数据流的操作。从哪里来, 怎么处理,再到哪里去。图片来源 https://medium.com/learning-the-go-programming-language/streaming-io-in-go-d93507931185IO包 对数据的读写 是通过接口的形式约定的。数据的来源或者去向可能是 网络,内存,文件。type Reader inte...
2019-01-05 17:08:00
154
转载 Buffered Channels and Worker Pools
原文链接:https://golangbot.com/buffered-channels-worker-pools/buffered channels带有缓冲区的channel 只有在缓冲区满之后 channel才会阻塞WaitGroup如果有多个 goroutine在后台执行 那么需要在主线程中 多次等待 可以有一个简单的方法 就是 通过WaitGroup 可以控制 Go...
2018-03-12 11:52:00
114
转载 Goroutines和Channels
原文链接 https://golangbot.com/goroutines/GoroutinesGoroutines 可以被认为是多个函数或方法同时允许。可以认为是一个轻量级的线程。与线程的花费相比是非常小的。与线程相比的优势Goroutines 非常的轻量级,只需要几kb的内存分配 并且是可以根据需要动态可伸缩的。而线程的内存分配大小是固定的Goroutines 可以多路复...
2018-03-11 20:07:00
140
转载 GOPATH和GOROOT
安装指定版本golangapt-get purge golang* //删除之前安装的文件add-apt-repository ppa:evarlast/golang-1.8apt-get updateapt-get install golang-1.8vim ~/.bashrcPATH=$PATH:/usr/lib/go-1.8/binsource ~/.bashrc...
2018-03-10 18:10:00
603
转载 go基础
本教程 链接 : https://tour.go-zh.org流程控制for只有这一种循环结构初始化语句:在第一次迭代前执行条件表达式:在每次迭代前求值后置语句:在每次迭代的结尾执行例子sum := 0for i:=0; i<=100; i++{ sum += i}只保留条件表达式sum := 0i := 1for ; i <= 10...
2018-03-08 12:36:00
92
转载 Linux 磁盘相关
挂载文件系统 mountmount [-t fstype] filesystem dir ##mount /dev/sdb /data卸载文件系统 umountumount /dev/sdbumount /data显示所有块设备 lsblkroot@ubuntu:/var# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTs...
2018-02-11 20:11:00
84
转载 Linux NFS
nfs简介nfs 或者叫网络问卷系统 是一种分布式文件系统协议,使得你可以挂载远程的目录到你的服务器上。使得你可以在不同的地点管理存储空间 而且可以从多个客户端写入数据。NFS通过网络提供了一种相对便捷和简单的方式 去访问远程的系统 特别是在某些需要定期访问分享资源情况下构建一个简单的NFS系统 需要一个客户端 和 一个远程端安装Hostapt-cache pkgnames...
2018-02-10 16:03:00
79
转载 Nginx Upstream模块
upstream模块原文链接:http://nginx.org/en/docs/http/ngx_http_upstream_module.htmlupstream 定义一组Server去监听不同的端口 当然也可以监听TCP或者Unix主机Socketupstream backend { server backend1.example.com weight=5; ...
2018-02-10 11:16:00
114
转载 手动搭建redis集群(3台)
安装redis1.搜索源中的redis包 apt-cache pkgnames | grep redis2.安装redis-server apt-get install redis-server根据端口号配置redis并开启集群配置1.复制redis配置文件 cp redis.conf nodes7000.conf2.搜索cluster-enabled变量 ...
2018-02-06 20:01:00
167
转载 laravel使用总结(二)
Mysql Eloquent 模型新建Model 对应 表前缀 + 类名称 + snamespace App;use Illuminate\Database\Eloquent\Model;class User extends Model{ //对应 表前缀 + members}获取所有记录$users = Member::all();根据主键获取一条记录//默认...
2018-02-05 20:26:00
162
转载 InnoDB体系架构总结(二)
事务确保事务内的SQL都可以同步执行 要么一起成功 要么一起失败。事务有四个特性原子性 一致性,隔离性,持久性实现方式开始事务的时候回家记录记录一个LSN日志序列 当事务执行的时候 会首先在Innodb_log_buffer 日志缓冲区插入事务日志 redo log;当事务提交的时候 再根据不同的策略将缓冲日志刷新到日志文件和磁盘中。 将数据写入InnoDB buffer p...
2018-02-04 17:51:00
86
转载 laravel 设计思想简单了解
服务容器laravel框架中 服务容器是整个系统功能调度配置的核心,在系统运行过程中动态的为系统提供需要的服务 从而实现了解耦控制反转(IOC)控制反转是一种设计模式 主要解决了系统组件之间的相互依赖关系 。工厂模式 工厂模式中 一般会有一些共同的接口 通过调用不同的类 来实现相同的结果 比如出去旅游 有的人骑自行车 那就new一个自行车类 有的人可能坐火车 还有的人可能坐飞机...
2018-02-03 20:12:00
285
转载 Redis原理及集群相关知识
读书笔记 《Redis开发与运维 》Redis使用场景作为缓存层 减少对Mysql的压力计数功能 比如使用原子命令incr共享Session设置过期时间 可以限制短信接口等调用使用hash类型存储一些关系型数据库表中的数据 如用户信息 可以通过表名+id的方式列表类型的数据 可以用来模拟队列或者栈 或者最新的新闻信息等实现发布、订阅命令执行过程Redis使用了...
2018-02-03 15:19:00
75
转载 高可用技术之keepalived原理简单了解
Keepalived工作原理keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在...
2018-01-28 16:28:00
329
转载 PHP 语法
匿名函数匿名函数也叫做闭包函数 即不指定名称的函数 常用作回调函数参数的值匿名函数演示一$values = array('first','second','third');array_map(function($para){ echo $para; echo "<br>";}, $values);## 输出 ## first## secon...
2018-01-27 17:22:00
64
转载 VMware搭建内网并通过iptables端口转发联网
整体流程图配置Server1 新建两块网卡 一块网卡设置为桥接模式,另外一块设置为仅主机模式查看两块网卡配置root@ubuntu:~# ifconfigens33 Link encap:Ethernet HWaddr 00:0c:29:42:81:1c inet addr:192.168.31.159 Bcast:192.168.31....
2018-01-22 21:29:00
267
转载 Mysql 锁总结
锁部分总结参考博客http://b.codejs.cc/articles/2017/10/23/1508749325215.htmlhttp://blog.youkuaiyun.com/cug_jiang126com/article/details/50544728MyISAM 只支持表锁show create table crm_member; ##查看引擎alter table ...
2018-01-20 10:49:00
47
转载 php 操作RabbitMQ
基本流程图如果exchange 没有绑定queue,则消息将会被丢弃如果创建exchange,queue,并且已经绑定了,则可以直接使用为了防止脚本出问题 可以配合supervisor安装从网站 https://packagist.org 搜索rabbitmq插件使用composer安装插件composer require php-amqplib/php-amqplib...
2018-01-18 20:24:00
289
转载 在ubuntu16上搭建rabbitMQ环境
在ubuntu16上搭建rabbitMQ环境安装rabbitMQapt-cache pkgnames | grep rabbitmqapt-get install rabbitmq-server使web管理插件生效rabbitmq-plugins enable rabbitmq_management查看端口号root@ubuntu:~# netstat -lntpAct...
2018-01-17 20:35:00
236
转载 RabbitMQ基本原理
MQ是一种消息队列 项目中需要对接Java系统,这里做一下总结。图片链接来源https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.htmlRabbitMQ 消息走向流程Producer 消息生产者,Consumer消息消费者,Exchagne交换机,Qu...
2018-01-14 20:25:00
141
转载 搭建Mysql主从复制
mysql 主从复制流程图Server version: 10.0.24-MariaDB-7 Ubuntu 16.04Master 记录二进制文件导出数据并记录二进制位置导入数据,设置二进制位置,并开启同步具体配置流程1.打开Master二进制记录功能[mysqld]server_id = 132log_bin =...
2018-01-07 10:43:00
67
转载 mysql优化之参数优化(转)
1、优化方式硬件优化=》系统优化=》mysql配置优化=》SCHEMA优化=》sql优化=》其他解决方案(redis orMongoDB or Cassandra or HBase)2、mysql配置分析1)常见瓶颈90%系统瓶颈都在IO上,所以提高IOPS尤为总要,iowait过高,加内存,减小数据读取量如果CPU很高,或者查询时间很长,90%索引不当如果系统...
2018-01-06 17:31:00
95
转载 crontab 和 supervisor
crontablinux系统自带的工具,可以做定时任务,最小间隔是1分钟配置crontab 命令如果是以root用户编辑的,那么最后运行也是以root用户运行脚本文件 crontab -e 命令格式如下* * * * * commandminute hour day month week commandminute: 表示分钟,可以是从0到5...
2018-01-02 20:31:00
612
转载 laravel使用总结(一)
安装composer create-project laravel/laravel learnlaravel5 --prefer-dist v5.3.*安装成功之后会自动生成一个key> Illuminate\Foundation\ComposerScripts::postUpdate> php artisan optimizeGenerating optimi...
2018-01-01 10:49:00
776
转载 项目中遇到的超卖问题及解决办法(使用go做测试工具)
超卖问题:在一个很短的时间内,Mysql的数据状态在 取出,比较,提交,或修改中,另外一个进程访问数据导致的超卖问题。 案例: 1.前端没有做限制,如果用户连续点击签到,那么会有多条数据发送到后端,如果数据状态没有来得及完全修改过来,导致用户的签到数据被多次添加。 2.每天签到用户的前3名用户可以获得一张价值100元的优惠券,如果有多名用户在很短的时间内同时...
2017-12-25 21:05:00
368
转载 MySQL 索引
聚簇索引和非聚簇索引:图片来源:http://blog.youkuaiyun.com/voidccc/article/details/40077329 聚簇索引: 按照每张表的主键构造一颗B+树,叶子节点存放的就是行记录的所有数据,也将聚簇索引的叶子节点成为数据页。页与页之间通过双向链表链接,页按照主键的顺序排序。每张表只能有一个聚簇索引。...
2017-12-23 17:23:00
43
转载 MySQL 优化 之 Copying to tmp table on disk
项目中遇到了慢查询问题Sql语句SELECT sum(price) AS price, `member_id`FROM `crm_upload`GROUP BY member_idORDER BY price DESCLIMIT 10;Explain 之后的结果:MariaDB [memb...
2017-12-23 10:55:00
329
转载 Linux基础(Ubuntu)
更换apt源为清华源 1.备份 /etc/apt/sources.list 2.vim 编辑 /etc/apt/sources.list 添加 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe 3.apt-get update 更新源...
2017-12-16 18:12:00
74
转载 Linux常用命令
#监听指定端口tcpdump tcp port 3306 #监听指定端口和hosttcpdump tcp port 3306 and host 192.168.110.128转载于:https://www.cnblogs.com/alin-qu/p/8012616.html
2017-12-09 20:28:00
104
转载 InnoDB体系架构总结(一)
缓冲池: 是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。在数据库中读取的页数据会存放到缓冲池中,下次再读取相同页的时候,会首先判断该页是否在缓冲池中。对于数据库中页的修改操作,会首先修改在缓冲池中的页,然后再以一定的频率刷新到磁盘上。缓冲池中缓存的数据页有 索引页,数据页,UNDO页等。show variables like 'inn...
2017-12-09 19:31:00
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人