关于在金融公司做开发一些教训

作者: 分类: 闲谈 时间: 2016-09-14 评论: 暂无评论

1.删除数据,能不做就不做。非要删除,备份是必须的。Delete id前,请先SELECT 下id数据,防止删错。

2.不要过于依赖REDIS,这东西是很好,但还是得以数据库为基本,你不能只把数据保存在REDIS,数据库也得保存,不然redis数据丢了,又或者显示的不对,到时候就有得你哭了。

3.每个程序都是精密的齿轮,不要觉得这个语句操作错误不可能发生,就不对语句的结果进行处理,万一出错,你很可能找不到错误在哪里。精密的程序才是合格的程序。

fastcgi_param 详解

作者: 分类: lnmp 时间: 2016-08-31 评论: 暂无评论
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;#脚本文件请求的路径  
fastcgi_param  QUERY_STRING       $query_string; #请求的参数;如?app=123  
fastcgi_param  REQUEST_METHOD     $request_method; #请求的动作(GET,POST)  
fastcgi_param  CONTENT_TYPE       $content_type; #请求头中的Content-Type字段  
fastcgi_param  CONTENT_LENGTH     $content_length; #请求头中的Content-length字段。  
  
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; #脚本名称   
fastcgi_param  REQUEST_URI        $request_uri; #请求的地址不带参数  
fastcgi_param  DOCUMENT_URI       $document_uri; #与$uri相同。   
fastcgi_param  DOCUMENT_ROOT      $document_root; #网站的根目录。在server配置中root指令中指定的值   
fastcgi_param  SERVER_PROTOCOL    $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。    
  
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;#cgi 版本  
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;#nginx 版本号,可修改、隐藏  
  
fastcgi_param  REMOTE_ADDR        $remote_addr; #客户端IP  
fastcgi_param  REMOTE_PORT        $remote_port; #客户端端口  
fastcgi_param  SERVER_ADDR        $server_addr; #服务器IP地址  
fastcgi_param  SERVER_PORT        $server_port; #服务器端口  
fastcgi_param  SERVER_NAME        $server_name; #服务器名,域名在server配置中指定的server_name  
  
#fastcgi_param  PATH_INFO           $path_info;#可自定义变量  
  
# PHP only, required if PHP was built with --enable-force-cgi-redirect  
#fastcgi_param  REDIRECT_STATUS    200;  

在php可打印出上面的服务环境变量
如:echo $_SERVER['REMOTE_ADDR']
转载地址

Redis教程 哈希

作者: 分类: redis 时间: 2016-08-01 评论: 暂无评论

s.n. 命令和说明

1    hdel key field2 [field2] 

删除一个或多个哈希字段

2    hexists key field 

判断一个哈希字段存在与否

3    hget key field 

获取存储在指定的键散列字段的值

4    hgetall key 

让所有的字段和值在指定的键存储在一个哈希

5    hincrby key field increment 

由给定数量增加的哈希字段的整数值

6    hincrbyfloat key field increment 

由给定的递增量哈希字段的浮点值

7    hkeys key 

获取所有在哈希字段

8    hlen key 

获取哈希字段数

9    hmget key field1 [field2] 

获得所有给定的哈希字段的值
注意:php 里面得这样写 $redis->hmget($key,array($field1,$field2)) 返回的是数组

10    hmset key field1 value1 [field2 value2 ] 

设置多个哈希字段的多个值

11    hset key field value 

设置哈希字段的字符串值

12    hsetnx key field value 

设置哈希字段的值,仅当该字段不存在

13    hvals key 

获取在哈希中的所有值

14    hscan key cursor [match pattern] [count count] 

增量迭代哈希字段及相关值

Redis 教程 队列

作者: 分类: redis 时间: 2016-07-18 评论: 暂无评论

s.n. 命令 & 描述

1    blpop key1 [key2 ] timeout 

取出并获取列表中的第一个元素,或阻塞,直到有可用

2    brpop key1 [key2 ] timeout 

取出并获取列表中的最后一个元素,或阻塞,直到有可用

3    brpoplpush source destination timeout 

从列表中弹出一个值,它推到另一个列表并返回它;或阻塞,直到有可用

4    lindex key index 

从一个列表其索引获取对应的元素

5    linsert key before|after pivot value 

在列表中的其他元素之后或之前插入一个元素

6    llen key 

获取列表的长度

7    lpop key 

获取并取出列表中的第一个元素

8    lpush key value1 [value2] 

在前面加上一个或多个值的列表

9    lpushx key value 

在前面加上一个值列表,仅当列表中存在

10    lrange key start stop 

从一个列表获取各种元素

11    lrem key count value 

从列表中删除元素

12    lset key index value 

在列表中的索引设置一个元素的值

13    ltrim key start stop 

修剪列表到指定的范围内

14    rpop key 

取出并获取列表中的最后一个元素

15    rpoplpush source destination 

删除最后一个元素的列表,将其附加到另一个列表并返回它

16    rpush key value1 [value2]

添加一个或多个值到列表

17    rpushx key value 

添加一个值列表,仅当列表中存在

Mysql Explan优化

作者: 分类: mysql 时间: 2016-06-29 评论: 暂无评论

1.使用explain语句去查看分析结果

如explain select * from test1 where id=1;
会出现:
id selecttype table type possible_keys key key_len ref rows extra各列。

其中,

type=const表示通过索引一次就找到了;

key=primary的话,表示使用了主键;

type=all,表示为全表扫描;

key=null表示没用到索引。type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF。

2.各个属性的含义

id

select查询的序列号

select_type

select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。

table

输出的行所引用的表。

type

对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。

常用的类型有: ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)

ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行

index: Full Index Scan,index与ALL区别为index类型只遍历索引树

range:只检索给定范围的行,使用一个索引来选择行

ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件

const、system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system

NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。

type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL**

一般来说,得保证查询至少达到range级别,最好能达到ref。

possible_keys

指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。

key

显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。

key_len

显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。

ref

显示哪个字段或常数与key一起被使用。

rows

这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。

Extra

using index: 覆盖索引

using where:不用读取表中所有信息,仅通过索引就可以获取所需数据,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤

Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询,常见 group by ; order by

Using filesort:当Query中包含 order by 操作,而且无法利用索引完成的排序操作称为“文件排序”

如果此信息显示Using filesort或者Using temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算

Top ↑