自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

华章酱的博客

记录生活的点点滴滴

  • 博客(39)
  • 收藏
  • 关注

原创 php防注入和XSS攻击通用过滤

对网站发动XSS攻击的方式有很多种,仅仅使用php的一些内置过滤函数是对付不了的,即使你将filter_var,mysql_real_escape_string,htmlentities,htmlspecialchars,strip_tags这些函数都使用上了也不一定能保证绝对的安全。那么如何预防 XSS 注入?主要还是需要在用户数据过滤方面得考虑周全,在这里不完全总结下几个 Tips1. 假定所...

2018-04-29 15:37:34 741

原创 php Shell大文件数据统计并且排序

诸多大互联网公司的面试都会有这么个问题,有个4G的文件,如何用只有1G内存的机器去计算文件中出现次数最多的数字(假设1行是1个数组,例如QQ号码),如果这个文件只有4B或者几十兆,那么最简单的办法就是直接读取这个文件后进行分析统计,但是这个是4G的文件,当然也可能是几十G甚至几百G的文件,这就不是直接读取能解决了的.同样对于如此大的文件,单纯用PHP做是肯定行不通的,我的思路是不管多大文件,首先要...

2018-04-29 15:28:24 339 1

原创 php特殊字符防止xss攻击以及sql注入

addslashes,htmlspecialchars,htmlentities转换或者转义php特殊字符防止xss攻击以及sql注入一、转义或者转换的目的    1. 转义或者转换字符串防止sql注入    2. 转义或者转换字符防止html非过滤引起页面布局变化    3. 转义或者转换可以阻止javascript等脚本的xss攻击,避免出现类似恶意弹窗等等形式二、函数    1. addsl...

2018-04-29 15:15:35 1250

原创 MySQL 对于千万级的大表要怎么优化?

很多人第一反应是各种切分;我给的顺序是:第一优化你的sql和索引;第二加缓存,memcached,redis;第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sq...

2018-04-29 15:12:50 468

原创 MySQL建索引的几大原则

1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。2.=和in可以乱序,比如a = 1 and b...

2018-04-29 15:05:01 1340

原创 高并发下的抢购、秒杀方案

抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数    ...

2018-04-29 14:26:32 1153

原创 【高并发简单解决方案】redis队列缓存 + mysql 批量入库

需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中;存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮。问题分析思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择;但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试。解决:    问题一:要求日志最好入库;但是,直接入库mysql确实扛不住,批量入库没有问...

2018-04-29 14:03:46 4075

原创 redis 简单消息队列

个人理解在项目中使用消息队列一般是有如下几个原因:    把瞬间服务器的请求处理换成异步处理,缓解服务器的压力    实现数据顺序排列获取redis实现消息队列步骤如下:1).redis函数rpush,lpop2).建议定时任务入队列3)创建定时任务出队列文件:demo.php插入数据到redis队列<?php$redis = new Redis();$redis->connect('...

2018-04-29 13:56:33 278

原创 CentOS上安装Redis的记录

1、安装需要的支持环境在安装Redis之前首要先做的是安装Unix的Tcl工具,如果不安装的话后期将无法对Redis进行测试。在后期执行make test的时候返回如下错误信息:You need tcl 8.xuyao de5 or newer in order to run the Redis test,具体的流程为:cd /usr/local/srcwget http://downloads....

2018-04-29 13:51:21 146

原创 centos7与centos6常用命令区别

CentOS 7 vs CentOS 6的不同   (1)桌面系统[CentOS6] GNOME 2.x[CentOS7] GNOME 3.x(GNOME Shell)(2)文件系统[CentOS6] ext4[CentOS7] xfs(3)内核版本[CentOS6] 2.6.x-x[CentOS7] 3.10.x-x(4)启动加载器[CentOS6] GRUB Legacy (+efibootm...

2018-04-26 18:33:36 2573 2

原创 接口api开发中安全性问题

所谓接口,就是类似http://Example.com/index.php?module=users&action=info&user_id=333的请求,然后服务器端直接根据user_id来做相应的会员操作,这是及其危险的接口处理,等于把当前的会员系统全暴露出来了,只要对方改一下user_id既可操作所有会员对应的接口。一般在PC端,我们是通过加密的cookie来做会员的辨识和维...

2018-04-26 10:50:31 6088

原创 Git 忽略一些文件不加入版本控制

 在Git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如:            # 此为注释 – 将被 Git 忽略            *.a       # 忽略所有 .a 结尾的文件            !lib.a    # 但 lib.a 除外            /TODO     # ...

2018-04-26 10:38:24 1181

原创 高并发量网站解决方案

      一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原...

2018-04-26 10:32:28 1661

原创 Apache与Nginx的优缺点比较

Apache与Nginx的优缺点比较 1、nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速啊 apache 相对于nginx 的优点: rewrite ,...

2018-04-26 10:28:16 233

原创 PHP生成唯一订单号

做商城类项目经常需要生成唯一订单号方法一:return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);方法二: 正在使用。。。return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))),...

2018-04-26 10:26:02 1120

原创 Linux tar 加解压缩

tar:tar并不是一个压缩软件,而是一个打包软件,就是将文件或者文件夹打包成一个文件,便于文件备份及归档,通常扩展名为tar。# tar -cvf test.tar test  ----将test文件夹打包成test.tar。从下图中可以看出test和test.tar大小上没有什么变化,说明tar只是将文件打包。# tar -xvf test.tar     ----将test.tar 进行拆解...

2018-04-26 10:01:21 225

原创 linux常用命令

top                动态显示当前耗费资源最多进程信息ps                  显示瞬间进程状态 ps -aux查看端口号:1,ps -aux | grep 33062,netstat –apn | grep 3306找相应的服务:ls /etc/init.d/ | grep mysql找到文件夹下的文件夹名称:ls -l |grep ^d |awk '{print ...

2018-04-26 09:57:05 122

原创 Linux中修改环境变量及生效方法

 Linux中修改环境变量及生效方法方法一:  在/etc/profile文件中添加变量【对所有用户生效(永久的)】  用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。  要让刚才的修改马上生效,需要执行以下代码  # source /etc/profile方法二:  在用户目录下的.bash_profile文件中增加变量【对单一用户生效...

2018-04-26 09:50:16 169

原创 运维常用shell脚本

1、用shell脚本批量建立Linux用户实现要求:创建用户student1到student50,指定组为student组!而且每个用户需要设定一个不同的密码!脚本实现如下:#!/bin/bashfor i in `seq 1 50`do    useradd -G student student$i ;     echo student$i | passwd student$i --stdin;...

2018-04-26 09:44:36 10169

原创 配置nginx php mysql 自动启动

Nginx添加Nginx启动脚本vim /etc/init.d/nginx# 复制粘贴保存以下内容#!/bin/sh## nginx - this script starts and stops the nginx daemon## chkconfig:   - 85 15# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \# ...

2018-04-25 18:32:06 148

原创 centos6安装php7

cd /usr/local/srcwget -O php-7.0.6.tar.gz http://cn2.php.net/get/php-7.0.6.tar.gz/from/this/mirrortar -zxvf ./php-7.0.6.tar.gzcd ./php-7.0.6./configure --prefix=/usr/local/php --with-config-file-path=...

2018-04-25 18:28:27 238

原创 centos6安装mysql5.7

cd /usr/local/srcwget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.12.tar.gzwget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.12.tar.gztar -zxvf ./mysql-5.7.12.tar.gztar -zxv...

2018-04-25 18:25:48 140

原创 centos6安装Nginx

CentOS-6.8 安装 NginxNginx 环境准备:安装Nginx需要完成以下依赖的安装1.gcc 安装:yum install gcc-c++2.PCRE pcre-devel 安装:yum install -y pcre pcre-devel3.zlib 安装: yum install -y zlib zlib-devel4.OpenSSL 安装:yum install -y open...

2018-04-25 18:19:43 175

原创 MySQL权限实战

给root任何ip地址都可以链接并有SELECT, INSERT权限GRANT all privileges ON *.* TO 'root'@'%';给repl任何ip地址都可以链接并有SELECT, INSERT权限GRANT FILE ON *.* TO 'repl'@'%';GRANT SELECT, INSERT ON *.* TO 'repl'@'%';查看当前用户的权限:mysql&...

2018-04-25 17:49:41 165

原创 mysql主从配置

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来...

2018-04-25 17:44:21 117

原创 mysql索引

索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;MYISAM和InnoDB存储引擎只支持BTREE索引;MEMORY...

2018-04-25 14:08:21 241

原创 mysql导入导出sql文件

window下1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u dbuser -p dbname > dbname.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u dbuser -p dbname users> dbname_users.sql3....

2018-04-25 13:57:05 123

原创 mysql语句查看优化

一、定位慢查询                                                                                      我们要对sql语句进行优化,第一步肯定是找到执行速度较慢的语句,那么怎么在一个项目里面定位这些执行速度较慢的sql语句呢?下面就介绍一种定位慢查询的方法。 1.1、数据库准备     首先创建一个数据库表:CREA...

2018-04-25 13:52:11 152

原创 sql语句中GROUP BY 和 HAVING的使用 count()

在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。 SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有 国家的总人口数。 havi...

2018-04-25 13:47:56 216

原创 浏览器关闭cookie后,session处理

本文实例讲述了php禁用cookie后session设置方法。分享给大家供大家参考,具体如下:我们都知道当在session 会话有基于cookie和基于url两种传递SESSIONID的方法。为了实现客户端禁止cookie发送的情况也不影响客户登陆网站,可以设置 php.ini中 session.use_trans_sid=1 ,表示当客户端浏览器禁止cookie的时候,页面上的链接会基于url传...

2018-04-23 15:41:28 2646 1

原创 php字符串

iconv_strlen得到字符个数//假设当前页面编码为GBK<?php$str="中国abc";echo strlen($str); //返回7,因为 GBK编码每个中文两个字节,strlen是返回字符串所占的字节长度。echo "<hr>";echo iconv_strlen($str,"GBK"); //返回5.iconv_strlen 是统计字符串的字符数量?>/...

2018-04-23 15:38:41 137

原创 php知识

概率性抽奖(lottery_raffle)//chance为抽到概率,数值越小,概率越小$arr = [    ['name'=>'1000元手机','chance'=>'1'],    ['name'=>'100元代金券','chance'=>'10'],    ['name'=>'10元代金券','chance'=>'100'],    ['name'=&g...

2018-04-23 15:37:32 115

原创 php学习心得笔记20140929

2014/09/29//begin$_SERVER['SCRIPT_NAME'] 返回/mantis/test.php,相对路径;__FILE__ 返回文件的绝对路径D:\Projects\mantis\test.php用法:echo $_SERVER['SCRIPT_NAME'];      echo __FILE__;$GLOBALS一个包含了全部变量的全局组合数组。变量的名字就是数组的键。 ...

2018-04-23 15:35:32 209

原创 php学习进阶

php要想学得好,一些周边是必须要达到一定的水平才可以快速提升,列下方向- PHP非常深入 - 扩展很了解 - 在github上有自己的扩展,很高的标星 - 分享PPT深入人心,深入浅出 - 正则非常的厉害 - 正则的各种高级语法随手粘来,优化各种写法,分享PPT - 用正则实现了一个语法解析器,在github上有很高的标星 - MVC原理 - 深知各个模块应该是在哪个层级,以及一般的实...

2018-04-23 15:33:56 890

原创 php四种排序

前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。定义数组变量,$arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互...

2018-04-23 15:31:49 288

原创 php数组

模拟数据结构数组后添加array_push$a=array("red","green");array_push($a,"blue","yellow");Array ( [0] => red [1] => green [2] => blue [3] => yellow ) 数组前添加array_unshift$a=array("a"=>&qu

2018-04-23 15:29:38 131

原创 php二维数组排序-自定义

function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'...

2018-04-23 15:24:53 281

原创 php安全过滤

安全的过滤函数:function filter($input){ $input=strip_tags(trim($input)); $input=htmlentities($input,ENT_QUOTES,'UTF-8'); $input=str_ireplace( array('\\','script','expression'), ar...

2018-04-23 15:20:51 290

原创 array_multisort—对多个数组或多维数组进行排序

案例一:PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 关联(string)键名保持不变,但数字键名会被重新索引。 输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。——这句话是理解...

2018-04-23 15:12:42 1288

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除