• 展开微博窗口
  • QQ:52619941
  • 微信:cnmemory
  • 展开分类目录
  • 还没有账号?

Memory

聊一聊字节顺序

每次提到字节顺序就只记得大端法(Big Endian)小端法(Little Endian)。因为平时开发中并不会经常用到,但偶尔又不得不提起它,所以为了加深对它的印象,今天就肤浅的聊一下自己的理解。

字节序在我的理解中就是数据在内存存储中或网络传输中的字节的排列顺序。

一般来说,一个内存地址对应一个字节,那么一组数据在内存中的存储必然会有一个顺序,而这个顺序就需要一定的规范,使得数据在读取、写入的时候才能得到一致的结果,那这个规范指的就是字节顺序,那么字节顺序又存在两种规范,即大端小端

举个例子,假设一个int型数据0x12345678在一台32位的机器上,内存地址由0x00000000开始递增。

那么大端法的存储则是如下表…

NAT网络下tcp_timestamp与tcp_tw_recycle引发丢包问题

场景

服务器A与服务器B在同一个NAT网络环境下,出口IP相同
服务器A -访问服务器C接口
服务器B -访问服务器C接口
此时AB其中一台服务器无法得到响应。

解决方式

通过查阅资料,是因为被调用服务端配置了tcp_tw_recycle,而调用方配置了tcp_timestamp造成了丢包的问题。

需要客户端关闭tcp_timestamp或者服务端关闭tcp_tw_recycle

## /etc/sysctrl.conf
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 0

mac下编译php扩展找不到php.h的问题

编译php扩展时执行make命令时出现下面错误

fatal error: 'php.h' file not found

建立软连接

sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include /usr/include

或者修改Makefile里的phpincludedir = /usr/include/php到你的php source目录下

编译完后结果发现版本对不上,索性将源码包里的…

利用ssh tunnel进行socks5代理

为了从本地浏览器能够直接访问公司内网的web,我们需要额外的vpn代理或者其他方式代理。经过查阅资料,找到一种比较快速的方案,即通过ssh隧道和socks5代理实现访问公司内网项目,前提是跳板机能通过外网访问,并且支持ssh方式登录。

开启支持socks5协议的ssh隧道

ssh -D 1337 -f -C -q -N user@remote -p 2222
  • -D 表示本地端口转发,当监听到此端口有连接时,此连接中的数据将通过安全隧道转发到server端,目前支持socks4和socks5协议
  • -f 请求ssh在工作在后台模式。该选项隐含了"-n"选项,所以标准输入将变为/dev/null。
  • -C 请求会话间的数据压缩传递。对于网络缓慢的主机,压缩对连接有所提升。但对网络流畅的主机来说,压缩只会更糟糕。
  • -q 静默模式。大多数警告信息将不输出。

ElementUI Selection Table 中获取被勾选的index

el-table中加入:row-class-name="tableRowClassName",利用tableRowClassName方法将rowIndex赋值给row对象

html

<el-table 
    ref="multipleTable"
    :data="data"
    :row-class-name="tableRowClassName"
    @selection-change="handleSelectionChange"
>

javascript

handleSelectionChange(rows) {
    //用一个变量来存放被选中的index
    this.selectionItemIndexes = 

启用swap来应对临时的内存不足问题

前段时间在一台小内存服务器上使用composer更新第三方类库时出现了内存不足的问题,以至于触发了OOM异常,使得composer进程被kill,无法完成更新。
通过free -h查看,测试服务器上并没有启用swap交换分区

当内存不足时,系统会将部分数据交换到swap空间上。类似win上的虚拟内存

OK,那就让我们启用swap。

  1. 创建交换分区文件
mkdir /data
touch /data/swapfile
  1. 分配交换分区容量
dd if=/dev/zero of=/data/swapfile bs=1M count=2048

/dev/zero是linux设备上一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL,

MySQL索引小记

在表关联查询时,如两个表的关联字段类型、编码不同,是无法利用索引的。

星期三