Golang Recover提高程序的健壮性

2020-06-09
阅读 2 分钟
5k
在GO语言中goroutine的开启是很方便的只需要一个关键词go func() 就可以开启一个协程。但是在协程中我们可能会遇到一些致命的错误,如果这个时候我们没有对这个错误进行处理,那么整个程序就会崩溃。而在Go中为解决这个问题提供了一个recover函数来处理。

Golang笔记-基准测试

2020-05-21
阅读 5 分钟
3k
上一篇写了些简单的单元测试,这一篇来看看go中的基准测试。在go中基准测试也是开箱即用的。使用testing.B结构对象。 需要测试的代码 我们依然用上一篇的代码结构 {代码...} 创建一个基准测试 创建普通单元测试我们使用TestFunc来定义。创建基准测试我们需要使用BenchmarkFunc来定义。 {代码...} 执行基础测试 {代码...}...

Golang笔记-单元测试test初探

2020-05-16
阅读 4 分钟
5.9k
其实在很长一段时间,包括现在,我都很不喜欢写单元测试。因为维护单元测试的成本很高。只有接口做了一点变更,那么单元测试就必须做相同的变更,否则会导致测试不通过。

go-grpc-流式接口(streaming rpc)

2020-02-20
阅读 7 分钟
8.6k
比如一个订单导出的接口有20万条记录,如果使用simple rpc来实现的话。那么我们需要一次性接收到20万记录才能进行下一步的操作。但是如果我们使用streaming rpc那么我们就可以接收一条记录处理一条记录,直到所以的数据传输完毕。这样可以较少服务器的瞬时压力,也更有及时性

go-gRPC 初体验

2020-02-11
阅读 5 分钟
3.7k
微服务想必大家都不陌生了。刚接触到golang,那么在golang中怎么使用微服务呢。这里使用gRRC框架写了一个简单的例子。 环境要求 go>=1.13; set GO111MODULE=on 安装 protoc 安装 Protoc plugin-go 示例代码 iris-grpc-example 项目结构 {代码...} 通过目录可以看到这里使用了go mod,当前golang版本 1.13。 proto 使...

无处不在的幂等f(f(x)) = f(x)

2020-02-03
阅读 2 分钟
1.6k
幂等:在编码中谈的幂等一般对应数学概念中的一元幂等:某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次的结果相同f(f(x)) = f(x)。既对于同一个输入不管进行多少次函数运算都应该都应该得到相同的结果。

go学习笔记-init函数执行顺序分析

2020-01-14
阅读 2 分钟
9.5k
golang中有个神奇的函数init,该函数会在所有程序执行开始前被调用,每个包可以包含多个init函数,所有被编辑器识别到的init函数都会在main函数执行前被调用。通常被用来注册一个程序需要使用的依赖,如mysql注册,配置文件加载等。

go学习笔记-goroutine的好兄弟channel

2020-01-11
阅读 3 分钟
1.5k
上一篇介绍了atomic包以及互斥锁 mutex来解决并发竞争状态的问题。这一篇主要来介绍go中与goroutine经常搭档的好兄弟channel

go学习笔记-goroutine竞争状态

2020-01-07
阅读 2 分钟
1.5k
如果两个或者多个goroutine在没有相互同步状态的情况下同时访问某个资源,并且同时对这个资源进行读写的时候,对于这个资源就处于相互竞争状态(race candition)。下面来看一个相互竞争的例子。

Go学习笔记-接口(interface)的实现

2020-01-02
阅读 2 分钟
1.5k
接口是用来定义行为的类型。这些被定义的行为不由接口直接实现,而是通过方法由用户定义的类型实现。如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值。这个赋值会把用户定义的类型的值存入接口类型的值

Go学习笔记-面向对象struct之继承

2020-01-01
阅读 1 分钟
1.6k
上面这个示例,我们首先定义一个person类型。然后定义了一个worker类型,继承了person。但是对于worker又希望有自己的age属性,与getAge方法。那么这个时候我们可以重写person的属性与方法。但是在使用的时候,如果我们想要使用person中已经被worker重写的方法或者属性,我们就需要指定到person,比如andy.Person.getAge(...

Go学习笔记-面向对象struct成员变量

2019-12-29
阅读 2 分钟
1.6k
结构体struct可以用来描述一组数据值,这组值的本质即可以是原始的,也可以是非原始的。是用户自定义的类型,它代表若干字段的集合,可以用于描述一个实体对象,类似java,php中的class,是golang面向对象编程的基础类型。今天我们先来看看golang中的成员变量的实现。

win10 docker-toolsbox 搭建php开发环境

2019-10-19
阅读 5 分钟
3.1k
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql57 mysql:5.7

win10家庭版安装docker

2019-10-17
阅读 1 分钟
2.5k
网上有很多win10家庭安装docker的教程。什么修改注册表模拟为win10专业版之类的,还有人直接建议换系统的。其实win10家庭版也是可以装docker的。需要通过 docker-toolbox ,网上也有类似的教程,可是都是走到半路就卡了。这里把自己的安装的过程整理了一次。

golang学习笔记-map类型

2019-09-03
阅读 3 分钟
2k
map (映射)是一个种数据结构,用于存储一些无序的键值对。映射使用了两个数据结构来存储数据。第一个数据结构是数组,内部存储的是用户选择桶的散列值。第二个数据结构是一个字节数组,用于存储键值对。映射是一个存储键值对的无序集合。

整理了几个golang的学习练习题

2019-08-22
阅读 1 分钟
5.7k
goLearningTest golang学习练习题 初学go一直找不到合适的练习,最近在一本书中发现了一些练习题,整理,分享给大家 代码地址

golang学习笔记--切片slice 与数组 arr

2019-08-05
阅读 3 分钟
3.3k
因为我是写php的,刚开始写go的时候老是被数组坑。因为在go中的数组是固定长度,所以会存在越界的时候。而在go中也很少直接使用数组。更多的时候会使用slice(切片)。

Mysql优化--Limit查询的优化考虑

2019-07-24
阅读 4 分钟
1.8k
在实际业务中对于分页来说是一个比较常见的业务需求。那么就会使用到limit查询,当我们在使用Limit查询的时候,在数据比较小、或者只查询前面一部分数据的时候效率是很高的。但是当数据量大的时候,或者查询offset数量比较大的时候,如:limit 100000,20效率往往就不尽人意了。通常的一个办法就是Limit配合order by,如...

Mysql索引优化_ORDER BY中索引的使用

2019-07-17
阅读 2 分钟
1.3k
另一种是排序的字段没有索引,所以需要对结果进行排序,这种情形下如果我们EXPLAIN分析的话就会出现 Extra: Using filesort

Mysql索引优化(一)_索引类型(索引策略)

2019-07-15
阅读 5 分钟
1.8k
现在我们要根据学生成绩查询学生姓名,这是一个很简单的查询。select first_name,last_name from student where score=99;这条sql就使用到了索引score。但是我们通常会看到很多查询不恰当的使用到索引,最后就导致mysql没办法使用到索引。如果查询中的不是独立的,则Mysql不会使用到索引,独立的列是指索引列不能是表达...

Mysql索引优化(一)_索引类型

2019-07-03
阅读 2 分钟
1.8k
索引对于良好的性能非常关键,尤其是在数据量越来越大的时候。恰当的索引对性能的帮助是非常巨大的,不恰当的索引不禁不能对性提升有帮助,当数据量达到一定级别的时候还可能造成性能的下降。所以了解索引对Mysql性能优化有着至关重要的作用。

Mysql范式与数据类型选择

2019-06-29
阅读 2 分钟
1.6k
良好的逻辑设计与物理设计是高性能的基石,当我们在设计数据表结构的时候,应该跟根据业务逻辑来分析具体情况,然后设计出比较合理,高效的数据表结构

小程序位置授权处理

2019-06-11
阅读 2 分钟
4.7k
这两天在做小程序调取地图的时候遇到一个问题,如果用户第一次拒绝了位置权限请求。那么就不会再次唤起授权弹出。需要我们引导用户去开启。 具体做法如下。在 aap.json中加入授权配置 {代码...} 在 page页面中使用,需要有几个注意的地方,初次使用的时候,去申请权限。这里我是放在onShow 方法里面。 {代码...} 然后在...

Mysql事务隔离级别之读提交

2019-01-09
阅读 2 分钟
3.3k
Mysql事务隔离级别之读提交 查看mysql 事务隔离级别 {代码...} 可以看到当前的事务隔离级别为 READ-COMMITTED 读提交 下面看看当前隔离级别下的事务隔离详情,开启两个查询终端A、B。 下面有一个order表,初始数据如下 {代码...} 第一步,在A,B中都开启事务 {代码...} 第二步查询两个终端中的number值 A {代码...} B {代...

Laravel框架FormRequest中重写错误处理

2019-01-09
阅读 2 分钟
3.2k
laravel 框架中默认的validate验证,在处理错误的时候,默认是返回上一页,当为ajax的时候才会返回Json。如果我们要一直返回Json的话,那么需要重写错误处理

Mysql事务隔离级别之可重复读

2019-01-04
阅读 2 分钟
10.4k
Mysql事务隔离级别之。可重复读(REPEATABLE-READ) 查看mysql 事务隔离级别 {代码...} 可以看到默认的事务隔离级别为 REPEATABLE-READ 可重复读 下面看看当前隔离级别下的事务隔离详情,开启两个查询终端A、B。 下面有一个order表,初始数据如下 {代码...} 第一步,在A,B中都开启事务 {代码...} 第二步查询两个终端中的...

关于Jwt的一些思考

2018-10-11
阅读 1 分钟
2.8k
每次更新过期时间,跟session一样,每次请求的时候都会去更新下token过期时间.但是对于jwt来说,更新过期时间就意味着jwt的token会变,那么前端就需要每个请求都去保存一次新的token。这样使得前端的工作变的复杂起来。而且这样做的话,会存在多个令牌同时有效,可能会引起一些安全问题。

PHP JWT初识

2018-10-10
阅读 4 分钟
3.2k
一直没有好好看过jwt,直到前两天要做web验证,朋友给我推荐了jwt。才发现jwt已经被大家广泛的应用了。看来我有点out了。哈哈,趁着这个世界来好好看看这个。

YII分模块加载路由

2018-09-30
阅读 2 分钟
2.7k
起因。因为项目比较大了之后划了很多模块。就使得config下面的路由文件变得很庞大,变得不好维护。这个时候就想如果可以把路由拆分到不同模块去自己管理,就会变得清晰很多。拆了之后项目配置结构如下

PHP插入排序

2018-09-07
阅读 1 分钟
1.4k
冒泡排序 对数组$arr = [9,7,2,77,31]按从小到大进行排序 {代码...} 比较,逻辑大致是这样的。默认第一个元素是最小值,所以从第二个元素开始一次与前面的元素进行比较,插入到合适的位置 i=1 j=0 时;将7与9进行比较。发现7比9小,交换位置,此时得到数组[7,9,2,77,31] i=2 j=1时;将2与9进行比较。发现2比9小,交换位...