为了方便节省时间, 现在都是使用lnmp一键安装包
搭建LNMP环境的. 今天恰好有个用Laravel
开发的项目, 部署完一直500错误, 百思不得其解... 谷歌了一番, 记下来备用嘿嘿~
首先处理一下目录权限:
chmod -R 777 bootstrap/
chmod -R 777 storage/
再确认一下是否是open_basedir
的问题, 方法是修改php.ini
, 打开PHP的错误显示:
为了方便节省时间, 现在都是使用lnmp一键安装包
搭建LNMP环境的. 今天恰好有个用Laravel
开发的项目, 部署完一直500错误, 百思不得其解... 谷歌了一番, 记下来备用嘿嘿~
首先处理一下目录权限:
chmod -R 777 bootstrap/
chmod -R 777 storage/
再确认一下是否是open_basedir
的问题, 方法是修改php.ini
, 打开PHP的错误显示:
还是从hello world
开始(hello.c
):
#include <stdio.h>
int main()
{
printf("hello, world\n");
}
逐步介绍它的整个生命周期: 被程序员创建 -> 到在系统上运行 -> 输出简单的消息 -> 然后终止.
大部分的现代操作系统都使用ASCII
标准来表示文本字符, 即使用一个单字节大小的整数值来表示每个字符. 具体来说:
此外, 由ASCII
字符构成的文件成为文本文件, 所有其他文件都称为二进制文件.
现在在高铁上, 赶着春节回家过年, 无座站票, 电脑只能放行李架上, 面对着行李架撸键盘--看过<Redis的设计与实现>这本书, 突然想起, 便整理下SDS的内容, 相对后面的章节, 算是比较简单的~
大多数情况下, Redis使用SDS(Simple Dynamic String, 简单动态字符串)作为字符串表示, 比起C字符串, SDS具有以下优点:
以上列举的优点, 也算是这篇文章的主要内容. 先从定义说起吧:
SDS结构定义如下(sds.h/sdshdr
):
struct sdshdr {
// 记录buf数组中已使用字节的数量, 等于SDS所保存字符串的长度
int len;
// 记录buf数组中未使用字节的数量
int free;
// 字节数组, 用于保存字符串
char buf[];
}
SDS遵循C字符串以空字符串结尾的惯例, 空字符不计入SDS的len属性, 即额外为空字符分配了1字节的空间, 并且添加空字符到字符串末尾均由SDS函数自动完成, 对使用者完全透明. 该特性带来的好处是, SDS可以直接复用C字符串函数库的部分函数.