深入研究memcache

特性和限制
1、Memcached 单进程最大使用内存为2G,要使用更多内存,可以分多个端口,开启多个Memcached进程
2、最大30天的数据过期时间,设置为永久的也会在这个时间过期, 常量REALTIME_MAXDELTA 60*60*24*30控制
3、最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250控制
4、单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576进行控制,它是默认的slab大小
5、最大同时连接数是200,通过 conn_init()中的freetotal进行控制,
6、最大软连接数是1024,通过settings.maxconns=1024 进行控制
7、跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式 继续阅读“深入研究memcache”

多行文本溢出显示省略号(…) text-overflow: ellipsis

text-overflow 属性规定当文本溢出包含元素时发生的事情。

默认值:  clip
继承性:  no
版本:  CSS3
JavaScript 语法:  object .style.textOverflow="ellipsis"
语法: text-overflow: clip|ellipsis| string ;

然而,text-overflow:ellipsis; 不可独立使用,必须结合overflow:hidden;  white-space:nowrap;才生效。但是而white-space:nowrap; 是指不换行,就是说只能一行显示。如果我们想要实现多行的情况下,在最后一行的最后用“…”来表示,则可以: 继续阅读“多行文本溢出显示省略号(…) text-overflow: ellipsis”

JavaScript 常用功能总结

目录:
众所周知,JavaScript是动态的面向对象的编程语言,能够实现以下效果:
1. 丰富Web 网页功能
2. 丰富Web界面
3. 实现本地或远程存储。
4. 实现分布式网络应用的前端组件,并在后台进行数据存储管理。
5. 使用JavaScript可以实现完整的分布式Web 应用。

JavaScript 中的数据类型
JavaScript 提供三种元数据类型,string,number,和Boolean,可使用typeof(v) 测试变量V 的类型,typeof(v)===”number”
提供五种基本的引用类型:Object, Array, Function, Date 及RegExp。数组,函数,日期和正则表达式是特殊类型,但是严格来讲,日期和正则表达式是元数据类型,可封装在其他对象中。
JS 中变量类型,数组元素类型,函数参数以及返回值的类型不需要声明类型,类型之间的转换是自动执行的。 继续阅读“JavaScript 常用功能总结”

移动端样式小技巧

本文只针对两大手机阵营 Android和IOS 中的魅蓝metal 和 iPhone6进行样式对比。

一、line-height
line-height经常用于文字居中,当然也有小伙伴会用上下padding去写.but!不管你用padding还是line-height,不同手机显示效果还是…不一样。
一般会这样写:

.demo{
height:16px;
line-height:14px;
font-size:9px;
border:1px solid #ff6815;
}

嗯,在我们的chrome由于字体小于9px已经看不出边框和字之间的间隙了,再来看看Android和IOS的
魅蓝文字已经飞起~, ios正常显示
如果把line-height加1px,iPhone文字就会下移,由于我们app的ios用户居多,并且android机型太多,不同机型也会显示不同,所以只能退而求其次了。
line-height的兼容问题不太好解决,容器高度越小,显示效果的差距越明显。稍微大一点的高度,最好把line-height设置为高度+1px,两个平台显示都还不错。 继续阅读“移动端样式小技巧”

Nginx配置文件详细说明

在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络.

#运行用户
user www-data;
#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#全局错误日志及PID文件
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

#工作模式及连接数上限
events {
use   epoll;             #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections  1024;#单个后台worker process进程的最大并发链接数
# multi_accept on;
}

继续阅读“Nginx配置文件详细说明”

CentOS网络配置

一、手动修改文件配置网络:
1、使用VI编辑/etc/sysconfig/network-scripts/ifcfg-enoxxxx
     配置IPADDR、子网掩码NETMASK、网关GATEWAY、DNS1…
    如:

BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.137.3
NETMASK=255.255.255.0
GATEWAY=192.168.137.2
DNS1=202.96.134.133
DNS2=8.8.8.8
DNS3=114.114.114.114
DNS4=8.8.4.4

继续阅读“CentOS网络配置”

Redis容量及使用规划

在使用Redis过程中,我们发现了不少Redis不同于Memcached,也不同于MySQL的特征。
(本文主要讨论Redis未启用VM支持情况)

1. Schema
MySQL: 需事先设计
Memcached: 无需设计
Redis: 小型系统可以不用,但是如果要合理的规划及使用Redis,需要事先进行类似如下一些规划

数据项: value保存的内容是什么,如用户资料
Redis数据类型: 如String, List
数据大小: 如100字节
记录数: 如100万条(决定是否需要拆分)
⋯⋯
上面的规划就是一种schema,为什么Redis在大型项目需要事先设计schema?因为Redis服务器有容量限制,数据容量不能超出物理内存大小,同时考虑到业务数据的可扩充性,记录数会持续增多、单条记录的内容也都会增长,因此需要提前规划好容量,数据架构师就是通过schema来判断当前业务的Redis是否需要“分库分表”以满足可扩展需求。 继续阅读“Redis容量及使用规划”

Memcached的参数说明


"a:" //unix socket的权限位信息,unix socket的权限位信息和普通文件的权限位信息一样  
"p:" //memcached监听的TCP端口值,默认是11211  
"s:" //unix socket监听的socket文件路径  
"U:" //memcached监听的UDP端口值,默认是11211  
"m:" //memcached使用的最大内存值,默认是64M  
"M"  //当memcached的内存使用完时,不进行LRU淘汰数据,直接返回错误,该选项就是关闭LRU  
"c:" //memcached的最大连接数,如果不指定,按系统的最大值进行  
"k"  //是否锁定memcached所持有的内存,如果锁定了内存,其他业务持有的内存就会减小  
"hi" //帮助信息  
"r"  //core文件的大小,如果不指定,按系统的最大值进行  
"v"  //调试信息  
"d"  //设定以daemon方式运行  
"l:" //绑定的ip信息,如果服务器有多个ip,可以在多个ip上面启动多个Memcached实例,注意:这个不是可接收的IP地址  
"u:" //memcached运行的用户,如果以root启动,需要指定用户,否则程序错误,退出。  
"P:" //memcached以daemon方式运行时,保存pid的文件路径信息  
"f:" //内存的扩容因子,这个关系到Memcached内部初始化空间时的一个变化,后面详细说明  
"n:" //chunk的最小大小(byte),后续的增长都是该值*factor来进行增长的  
"t:" //内部worker线程的个数,默认是4个,最大值推荐不超过64个  
"D:" //内部数据存储时的分割符  
"L"  //指定内存页的大小,默认内存页大小为4K,页最大不超过2M,调大页的大小,可有效减小页表的大小,提高内存访问的效率  
"R:" //单个worker的最大请求个数  
"C"  //禁用业务的cas,即compare and set  
"b:" //listen操作缓存连接个数  
"B:" //memcached内部使用的协议,支持二进制协议和文本协议,早期只有文本协议,二进制协议是后续加上的  
"I:" //单个item的最大值,默认是1M,可以修改,修改的最小值为1k,最大值不能超过128M  
"S"  //打开sasl安全协议  
"o:" //有四个参数项可以设置:  
maxconns_fast(如果连接数超过最大连接数,立即关闭新的连接)  
hashpower(hash表的大小的指数值,是按1< slab_reassign(是否调整/平衡各个slab所占的内存)  
slab_automove(是否自动移动各个slab,如果该选项打开,会有专门的线程来进行slab的调整)  

Android 安全分析和漏洞挖掘|工具集

@tanprathan 最近在Github上放出了一份移动应用安全分析工具的清单(Cheat Sheet),里边工具比较齐全。Security Toolkit翻译了其中的Android部分,大家有兴趣可以收藏之,以备日后要用。

一、测试工具
Appie– 轻量级的软件包, 可以用来进行基于Android的渗透测试, 不想使用VM的时候可以尝试一下.
Android Tamer – 可以实时监控的虚拟环境, 可以用来进行一系列的安全测试, 恶意软件检测, 渗透测试和逆向分析等.
AppUse – AppSec Labs开发的Android的虚拟环境.
Mobisec – 移动安全的测试环境, 同样支持实时监控
Santoku – 基于Linux的小型操作系统, 提供一套完整的移动设备司法取证环境, 集成大量Adroind的调试工具, 移动设备取证工具, 渗透测试工具和网络分析工具等.

二、逆向工程和静态分析 继续阅读“Android 安全分析和漏洞挖掘|工具集”