PHP的一套位移加密算法
算法概述加密因子:0xA3 加密算法:将待加密的字符串中的每一个字节,分别与加密因子进行异或,然后将异或后的二进制结果进行高低位交换,然后将交换后的结果转换成2进制字符串。所有的字节转换完成后,将最终的结果base64加密。 解密算法:其实就是加密算法的反向操作。先将加密字符串base64解密,然后字符串的每一个字节(就是上面转的二进制字符串)转换成二进制,再将二进制高低位交换、异或,最后将二进制转换成字符。 /** * 加密算法 */function encrypt($str, $secret){ // 存放结果字符串 $result = ''; // 加密 for($i = 0; $i < strlen($str); $i++) { // 异或 $xor = ord($str[$i]) ^ hexdec($secret); // 转二进制 $binary = decbin($xor); // 高低位交换 $revers...
关于MySql中explain结果filtered的理解
MySql explain语句的返回结果中,filtered字段要怎么理解? MySql5.7官方文档中描述如下: The filtered column indicates an estimated percentage of table rows filtered by the table condition. The maximumvalue is 100, which means no filtering of rows occurred. Values decreasing from 100 indicate increasing amounts of filtering. rows shows the estimated number of rows examined and rows × filtered shows the number of rows joined with the following table. For example, if rows is 1000 and filtered is 50.00 (50%), the number of...
/var/spool/postfix/maildrop 小文件过多解决办法
由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送cron所有者, 而我的服务器中关闭了postfix,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面。如果sendmail或者postfix正常运行,则会在/var/mail目录下也会堆积大量的邮件。 此问题也会导致系统innode占用过多,导致创建文件失败。 解决办法: sed -i 's$MAILTO=root$MAILTO=""$g' /etc/crontab/etc/init.d/crond restat 删除多余的小文件: find /var/spool/postfix/maildrop/ -type f |xargs rm -rf
为什么用GIF做埋点
使用GIF上报的原因向服务器端上报数据,可以通过请求接口,请求普通文件,或者请求图片资源的方式进行。只要能上报数据,无论是请求GIF文件还是请求js文件或者是调用页面接口,服务器端其实并不关心具体的上报方式。那为什么所有系统都统一使用了请求GIF图片的方式上报数据呢? 防止跨域一般而言,打点域名都不是当前域名,所以所有的接口请求都会构成跨域。而跨域请求很容易出现由于配置不当被浏览器拦截并报错,这是不能接受的。但图片的src属性并不会跨域,并且同样可以发起请求。(排除接口上报) 防止阻塞页面加载,影响用户体验通常,创建资源节点后只有将对象注入到浏览器DOM树后,浏览器才会实际发送资源请求。反复操作DOM不仅会引发性能问题,而且载入js/css资源还会阻塞页面渲染,影响用户体验。 但是图片请求例外。构造图片打点不仅不用插入DOM,只要在js中new出Image对象就能发起请求,而且还没有阻塞问题,在没有js的浏览器环境中也能通过img标签正常打点,这是其他类型的资源请求所做不到的。(排除文件方式) 相比PNG/JPG,GIF的体积最小最小的BMP文件需要74个字节,PN...
Mysql : SQL_CALC_FOUND_ROWS 和count(*) 性能比较
1.创建表:此处使用了覆盖索引 CREATE TABLE IF NOT EXISTS `Ben` (`aa` int(10) unsigned NOT NULL AUTO_INCREMENT,`bb` int(10) unsigned NOT NULL,`cc` varchar(100) NOT NULL,PRIMARY KEY (`aa`),KEY `bar` (`bb`,`aa`)) ENGINE=MyISAM; 无覆盖索引 DROP TABLE IF EXISTS `ben`;CREATE TABLE IF NOT EXISTS `ben` (`aa` int(10) unsigned NOT NULL AUTO_INCREMENT,`bb` int(10) unsigned NOT NULL,`cc` varchar(100) NOT NULL,PRIMARY KEY (`aa`),KEY `bar` (`bb`)) ENGINE=MyISAM; 2.插入100万条数据://插入数据function insertData(){ //数据表中插入10...
Linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
lsof命令是什么?可以列出被进程所打开的文件的信息。被打开的文件可以是 普通的文件, 目录 网络文件系统的文件, 字符设备文件 (函数)共享库 管道,命名管道 符号链接 底层的[socket][1]字流,网络socket,unix域名socket 在linux里面,大部分的东西都是被当做文件的…..还有其他很多 怎样使用lsof这里主要用案例的形式来介绍lsof 命令的使用 1. 列出所有打开的文件:lsof 备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位 2. 查看谁正在使用某个文件lsof /filepath/file 3. 递归查看某个目录的文件信息lsof +D /filepath/filepath2/ 备注: 使用了+D,对应目录下的所有子目录和文件都会被列出 4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法lsof | grep ‘/filepath/filepath2/’ 5. 列出某个用户打开的文件信息lsof -u username 备注: -u 选项,u其实是user的缩写 6. 列出某个程序所打开的文件信...
[踩坑] Mysql `for update` 行锁 踩坑
最近业务偶现并发问题. 举个例子: -- 行锁select * from `table` where id = 123 and a = 2 for update; 上面看似行锁 , 实际上使用 for update 需要配合索引去使用, 行锁/区间锁 都需要基于索引上锁. table表仅 配置了 a 字段的索引, 所以上面的sql是区间锁. 解决问题就需要基于 where 条件设置索引.
Sourcetree 设置代理
Sourcetree 设置代理在使用Sourcetree进行版本控制时,有时我们需要通过代理服务器连接到远程仓库。本文将介绍如何在Sourcetree中设置代理,以便顺利进行版本控制操作。 步骤按照以下步骤设置Sourcetree的代理: 打开Sourcetree软件,并点击顶部菜单栏中的“工具”按钮。 在下拉菜单中选择“选项”。 在弹出的选项窗口中,选择“高级”选项卡。 在“网络”部分,找到“代理”设置。 选择“自定义”选项,并填写代理服务器的相关信息,包括代理类型、代理地址和端口号。 (可选)如果代理服务器需要身份验证,勾选“需要身份验证”选项,并提供相应的用户名和密码。 单击“确定”保存设置。 完成以上步骤后,Sourcetree将使用指定的代理服务器进行远程仓库的连接和操作。 注意事项在设置Sourcetree代理时,需要注意以下几点: 代理类型:根据实际情况选择合适的代理类型,包括HTTP代理、HTTPS代理或SOCKS代理。 代理地址和端口号:填写正确的代理服务器地址和端口号。可以咨询网络管理员或查看代理服务器的配置信息。 身份验证:如果代理服务器需要身份验...
Mysql 存储 Emoji 坑
Mysql 存储 Emoji 坑在现代的应用程序中,Emoji表情符号已经成为用户之间交流的重要组成部分。然而,在将Emoji存储到MySQL数据库时,你可能会遇到一些问题。本文将介绍这些问题以及相应的解决方案。 问题描述当我们尝试将包含Emoji的文本插入到MySQL数据库中时,可能会遇到以下问题: 存储问题:MySQL默认使用UTF-8字符集,但并不是所有的UTF-8编码都能正确地存储和处理Emoji字符。有些Emoji字符可能无法存储,或者在存储和检索过程中出现乱码或截断。 索引和排序问题:在进行索引和排序操作时,MySQL可能无法正确处理包含Emoji的字段。这可能导致排序结果不正确或无法正常使用索引。 解决方案针对上述问题,我们可以采取以下解决方案: 选择合适的字符集和编码:为了正确地存储和处理Emoji字符,我们可以将MySQL的字符集和编码配置为utf8mb4。utf8mb4字符集支持四字节的UTF-8编码,可以存储包含Emoji的字符。 调整字段的长度:Emoji字符可能占用多个字节,因此在定义存储Emoji的字段时,确保字段长度足够容纳Emoji字符的...
Mysql text和blob 区别
一.相同在TEXT或BLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告. BLOB和TEXT列不能有 默认值. 当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同).对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的. 二.相异text : TEXT值是大小写不敏感的 TEXt被视为非二进制字符串 TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较 可以将TEXT列视为VARCHAR列 MySQL连接程序/ODBC将TEXT值定义为LONGVARCHAR BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型,并且...



