PHP函数如何使用可变数量参数

PHP
答案 PHP 5.6+可以用...。 所有版本都可以用func_num_args()、func_get_arg()、func_get_args()三个函数, 如下两种方式,效果是一样的。 // 所有 PHP 版本 function plus() { echo func_num_args(), PHP_EOL; echo func_get_arg(0), PHP_EOL; print_r(func_get_args()); } plus(1, 2, 3, 4, 5…

HTTP响应状态码有哪些?

HTTP , ,
答案 常见的响应状态码有: 200 OK 请求成功。一般用于GET与POST请求 301 Moved Permanently 永久移动。 302 Found 临时移动。 304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 400 Bad Request 客户端请求的语法错误,服务器无法理解 401 Unauthoriz…

如何设计一个购物车

系统设计 , , ,
答案 未登陆时,新增产品放在本地浏览器的Cookie中。 登陆时,同步购物车数据到服务器,同步完成后删除本地Cookie。 已经登陆状态,新增产品直接添加到服务器。 对于服务器数据保存的位置,访问量不大就直接存储在MySQL,访问量大就以集合方式存储在Redis,速度快又能保证唯一。 因为Redis数据…

大数据量的Redis数据库为什么不能用KEYS命令

Redis, 数据库 ,
答案 因为KEYS有了能一次性遍历并返回所有的键值对,对于数据量大的Redis数据库,这个命令就会直接阻塞其他命令。 替代方案是:用SCAN命令。 解析 众所周知,Redis 是单线程程序,是按照顺序执行指令的。 如果说我们现在正在执行 keys 命令,那么其它指令必须等到当前的 keys 指令执行完了才可…

HTTP三次握手四次挥手

HTTP
答案 第一次握手:Client 发送位码SYN=1到 Server,Server 由SYN=1知道,Client 要求建立联机; 第二次握手:Server 收到请求后,要确认联机信息,向 Client 发送SYN=1, ACK=1; 第三次握手:Client 收到后回复确认信息ACK=1,Server 收到后确认信息后连接建立成功。 TCP断开链接的过程和建立…

Nginx location的作用和设置

Nginx
答案 location 的作用是根据请求URI设置配置。 location 匹配的是$document_uri,$document_uri 会随着重定向而改变,request_uri 则由浏览器访问的url决定,不会随着nginx服务器重定向改变而改变。 location语法格式: location [ = | ~ | ~* | ^~ ] uri { # ... } location @name { # ... }…

Redis持久化方式有哪几种?

Redis, 数据库
答案 Redis有两种持久化的方式: 快照方式(Snapshotting):生成RDB文件,RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。 追加文件方式(Append-only file):生成AOF文件,AOF持久化方式则会记录每一个服务器收到的写操作。在服务启动时,这些记录的操作会逐条执行从而重…

快速排序Python版

算法 ,
答案 # coding: utf-8 def quick_sort(arr, low, high): # 继续排序的条件是low小于high if low < high: # 将数组分成左右两个区,并返回分区的位置 part_index = partition(arr, low, high) # 递归排序左边的数组 # 这里直接在arr上原地排序,所以不占用额外空间 quick_sort(arr, low, par…

什么情况下快速排序最慢?

算法
答案 这个得看pivot(基准元素或枢轴)的选择策略。 如果选择最左面或最右面的元素作为基准元素,那最坏的情况就会在: 数组已经是正序排过序的。 数组已经是倒序排过序的。 所有的元素都相同(1、2的特殊情况)。 因为这些案例在用例中十分常见,所以这个问题可以通过要么选择一个随机的基准…