如何理解 Golang 的参数传递都是值传递?

在 Golang 中函数之间传递变量时总是以值的方式传递的,无论是 int,string,bool,array 这样的内置类型(或者说原始的类型),还是 slice,channel,map 这样的引用类型,在函数间传递变量时,都是以值的方式传递,也就是说传递的都是值的副本。

PHP intval 转换浮点数精度丢失问题

在 PHP 和其他一些语言都会存在这个问题,转换浮点数为整数的时候会出现精度丢失,如下:

1
$n="19.99"; print intval($n*100); // prints 1998

解决办法:

1.转换成字符串再 intval

1
print intval(strval($n*100)); // prints 1999

2.使用 round 函数替代 floatval

1
php -r "echo round(19.99*100);"

服务器返回 502,503,504 原因及解决办法

502 bad gateway

问题原因:服务器作为网关或代理,从上游服务器收到无效响应。

nginx 在这里充当的是反向代理服务器的角色,是把http协议请求转成fastcgi协议的请求,通过 fastcgi_pass指令传递给 php-fpm进程,当 php-fpm 进程响应的内容是 nginx 无法理解的响应,就会返回 502 bad gateway

Git 变基和合并

变基 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。 在本节中我们将学习什么是“变基”,怎样使用“变基”,并将展示该操

PHP发送HTTP请求的几种方式

PHP 开发中我们常用 cURL 方式封装 HTTP 请求,什么是 cURL?

cURL 是一个用来传输数据的工具,支持多种协议,如在 Linux 下用 curl 命令行可以发送各种 HTTP 请求。PHP 的 cURL 是一个底层的库,它能根据不同协议跟各种服务器通讯,HTTP 协议是其中一种。

在 Laravel 中设置 Etag 缓存

本文介绍浏览器缓存 Etag 的概念,和客户端服务器如何生成和比较 Etag 的过程,以及使用 Laravel 中间件的示例。

什么是“ETag”?

Etag 是一种标识,一般附带在响应头部中,值是页面内容的哈希值,用来判断资源(页面,json,xml)有没有修改,如果没有修改,就返回 304 状态码,有修改则生成新的 Etag 值。

浏览器根据状态码判断是否缓存过期。

Golang append slice to slice

把一个 slice 追加到另一个 slice,以下两种方式都是把 s1 追加到 s0 中,但两种结果不同,注意区别。

片段1:

s0 := []interface{}{1, 100, 122} s1 := []interface{}{3, 4, 5, 6} s0 = append(s0, s1) fmt.Println(“result:”, s0) //result: [1 100 122 [3 4 5 6]]

此时 s0 结果:result: [1 100 122 [3 4 5 6]]