在使用Redis过程中,我们发现了不少Redis不同于Memcached,也不同于MySQL的特征。
(本文主要讨论Redis未启用VM支持情况)
1. Schema
MySQL: 需事先设计
Memcached: 无需设计
Redis: 小型系统可以不用,但是如果要合理的规划及使用Redis,需要事先进行类似如下一些规划
数据项: value保存的内容是什么,如用户资料
Redis数据类型: 如String, List
数据大小: 如100字节
记录数: 如100万条(决定是否需要拆分)
⋯⋯
上面的规划就是一种schema,为什么Redis在大型项目需要事先设计schema?因为Redis服务器有容量限制,数据容量不能超出物理内存大小,同时考虑到业务数据的可扩充性,记录数会持续增多、单条记录的内容也都会增长,因此需要提前规划好容量,数据架构师就是通过schema来判断当前业务的Redis是否需要“分库分表”以满足可扩展需求。
LVS 服务器集群三种实现模式配置
LVS服务器集群中基于IP的负载均衡技术,有3种实现模式:VS/NET模式,VS/TUN模式(IP隧道模式),VS/DR模式(直接路由模式)
一,【VS/NET 模式】
1,配置Linux Director(前端负载调度器)IP,并打开IP数据包转发功能
一,【VS/NET 模式】

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的调试工具, 移动设备取证工具, 渗透测试工具和网络分析工具等.
二、逆向工程和静态分析
一、测试工具 Appie– 轻量级的软件包, 可以用来进行基于Android的渗透测试, 不想使用VM的时候可以尝试一下.
Android Tamer – 可以实时监控的虚拟环境, 可以用来进行一系列的安全测试, 恶意软件检测, 渗透测试和逆向分析等.
AppUse – AppSec Labs开发的Android的虚拟环境.
Mobisec – 移动安全的测试环境, 同样支持实时监控
Santoku – 基于Linux的小型操作系统, 提供一套完整的移动设备司法取证环境, 集成大量Adroind的调试工具, 移动设备取证工具, 渗透测试工具和网络分析工具等.
二、逆向工程和静态分析
Redis和Memcache的区别分析
1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3. Redis支持数据的备份,即master-slave模式的数据备份。
4. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存
来看下Redis作者对比redis和memcache
2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3. Redis支持数据的备份,即master-slave模式的数据备份。
4. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存
来看下Redis作者对比redis和memcache
UltraEdit中检查php语法是否正确
可以直接在UltraEdit中檢查php語法是否正確的設定
很好用的東東
記下來免得又忘了:Advanced-->Tool Configuration 按Insert
很好用的東東
記下來免得又忘了:Advanced-->Tool Configuration 按Insert
[Command]設到這樣就已經可以用了
Manu Item Name: PHP syntax Check
(PHP5)
Command Line: C:\php\php-win.exe -l -f %F
Working Directory: C:\php\
[Options]
Program Type: Dos program
v Save active File
[Output]
Command Output: Output to List Box
v Capture Output
Replace select text with: No Replace
#1146 - Table 'performance_schema.session_variables' doesn't exist
一下子从Mysql5.1 手动升级到5.7.9,然后用Navicat进行查询时,却提示错误:
因为我是使用压缩包直接解压替换的,想想可能是升级中出的问题,于是度娘一下,发现很多类似的情况,但解决方法都是都回到旧版本,然后再用mysqldump导出,再到新版本里解压,费时也不方便。
我忽然想到以前出现个类似的情况,Mysql的Bin目录的下工具:mysql_upgrade.exe
于是就抱着试试的心态在命令行下执行:
执行一切顺利:
然后重启mysql服务,再次进入,果然一切都正常了,哈!
Table 'performance_schema.session_variables' doesn't exist
因为我是使用压缩包直接解压替换的,想想可能是升级中出的问题,于是度娘一下,发现很多类似的情况,但解决方法都是都回到旧版本,然后再用mysqldump导出,再到新版本里解压,费时也不方便。
我忽然想到以前出现个类似的情况,Mysql的Bin目录的下工具:mysql_upgrade.exe
于是就抱着试试的心态在命令行下执行:
mysql_upgrade -uroot -p
执行一切顺利:
......
Repairing tables
mysql.proxies_priv OK
Upgrade process completed successfully.
Checking if update is needed.
然后重启mysql服务,再次进入,果然一切都正常了,哈!
php5.5下配置imagick
首先上http://pecl.php.net/package/imagick下载对应的版本,我这里下载的是:
php_imagick-3.4.0rc4-5.5-ts-vc11-x64
然后去http://windows.php.net/downloads/pecl/deps/下载对应的imageMagick,我下载的是
ImageMagick-6.9.1-2-vc11-x64.zip
解压php_imagick-3.4.0rc4-5.5-ts-vc11-x64.zip里的php_imagick.dll到PHP的ext目录下
解压ImageMagick-6.9.1-2-vc11-x64.zip里BIN目录下:
CORE_RL_XXXX.dll文件到D:\AMP\imagick下
IM_MOD_RL_XXXX.dll文件到D:\AMP\imagick\coders目录下
设置系统环境变量:
在php.ini里启用imagcik
php_imagick-3.4.0rc4-5.5-ts-vc11-x64
然后去http://windows.php.net/downloads/pecl/deps/下载对应的imageMagick,我下载的是
ImageMagick-6.9.1-2-vc11-x64.zip
解压php_imagick-3.4.0rc4-5.5-ts-vc11-x64.zip里的php_imagick.dll到PHP的ext目录下
解压ImageMagick-6.9.1-2-vc11-x64.zip里BIN目录下:
CORE_RL_XXXX.dll文件到D:\AMP\imagick下
IM_MOD_RL_XXXX.dll文件到D:\AMP\imagick\coders目录下
设置系统环境变量:
path=D:\AMP\imagick
MAGICK_HOME=D:\AMP\imagick\coders
在php.ini里启用imagcik
extension=php_imagick.dll
a标签加入单击事件 屏蔽href跳转页面
在a中调用js函数最适当的方法推荐使用:
a href="javascript:void(0);" onclick="js_method()"
a href="javascript:;" onclick="js_method()"
a href="#" onclick="js_method();return false;"
a href="javascript:void(0);" onclick="js_method()"
a href="javascript:;" onclick="js_method()"
a href="#" onclick="js_method();return false;"
MYSQL配置与优化
通过慢日志查询可以知道哪些SQL语句执行效率低下
通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。
通过profiling命令得到更准确的SQL执行消耗系统资源的信息。
通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。
通过profiling命令得到更准确的SQL执行消耗系统资源的信息。