some 规约

===========服务器规约============
1.高并发服务器调小tcp协议的time_wait超时时间。
/etc/sysctl.conf     #net.ipv4.tcp_fin_timeout =  30

2.服务器所支持的最大文件句柄数(file descriptor )调大。

  主流的操作系统是将TCP/UDP的连接采用与文件一样的方式与管理,一个连接对应一个fd;默认的linux服务器所支持的fd的数量为1024,当并发连接数过大时,容易报错“open too many files”导致新的连接无法建立;一般是根据服务的内存来设置句柄数是1024*n。
3.给JVM设置-XX:+HeapDumpOnOutOfMemeoryError参数;
4.服务器内部重定向必须使用forward;外部重定向必须使用URL Broker生成,否则会因为线上使用https协议而导致浏览器提示不安全。
 
===========安全规约================
1.可以被用户直接访问的功能必须进行权限控制校验;
2.用户的敏感数据,在展示的时候必须进行脱敏设置,如支付宝中查看 个人手机号码,需要隐藏中间四位;
3.用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL访问数据库;
4.用户请求传入的任何参数必须做有效性验证;可能出现  page size过大导致内存溢出;恶意order by 导致数据库慢查询,正则输入源串拒绝服务ReDos,任意重定向,SQL注入,shell注入,反序列化注入;
5.禁止向HTML页面输出未经安全过滤或者未正确转义的用户数据;
6.表单、AJAX提交必须执行CSRF安全过滤。
7.URL外部重定向传入的目标地址必须执行白名单过滤;
8.web应用必须正确配置Robots文件,非SEO URL必须配置为禁止爬虫访问。
User-agent : * Disallow:/

 

===========SQL规约==============
1.count(*)是标准的统计行数的语法,跟数据库无关,跟null  not null和空无关;
 count(*)会统计值为null的行,但是count(列名)不会统计此列为null值的行

我们一般会使用 select count(1)~~; 是因为一般默认第一列为id,id不为空,这样统计出来的就是该表的实际行数。
2.count(distinct col)是计算该列除null之外的不重复数量;但是count(distinct col1,col2)若出现其中一列为null,那么即使另一列有不同的值,也会返回0;
3.当某一列col全为null,count(col)返回结果为0,但是sum(col)则返回null,可以采用
select ifisnullsum(g)),0,sum(g)) from table;

4.null与任何值的直接比较,返回结果都为null。

null<>null ==>null;
null = null ==>null;
null <>1   ==>null;

5.不得使用外键与级联,外键概念必须在应用层解决;外键与级联更新适用于单机顶并发,并不适合分布式、高并发集群;级联更新是强阻塞,影响更新和插入速度。禁止使用存储过程,存储过程难以调试和扩展,也没有移植性。

6.truncate table 与delete 相比较,truncate速度快很多,而且使用的系统事务日志资源特别少,但是truncate无事务且不触发trigger,在删除数据时,可以直接这么做。
 
 
补充一个常见的格式化时间字段的使用方法:
======日期格式和substr()的区别=============
返回的数据主要是格式有区别,MySQL是两种都支持的。
SELECT DATE_FORMAT(modify_date,'%Y-%m'),COUNT(1) FROM `vip` GROUP BY DATE_FORMAT(modify_date,'%Y-%m');

SELECT SUBSTR(modify_date,1,7) FROM `vip` LIMIT 1 GROUP BY SUBSTR(modify_date,0,7);

与substr()类似的还有一个函数,substring_index()。SUBSTRING_index函数的使用下面补充

---substr和substring函数的使用是一样的---
substring_index(str,delim,n)
  --str是需要处理的字符串,delim是分隔符,n为正数,则表示从左往右 取第n个分隔符的左边全部内容;若n为负数,则表示从右往左数,第n个分隔符的右边全部内容。

posted on 2018-03-09 10:21  Kid_Zora  阅读(230)  评论(0编辑  收藏  举报

导航