关闭

skill sum review

524人阅读 评论(0) 收藏 举报
linux (运维监控+测试(ab)+第三方搜索(sphinx xunsou es)+(数据+文件+代码)同步+负载均衡(http dns drdb)+异步(pcntl gearman curl ajax))+运维工具 +  命令+config+shell+api

mysql(知识 配置项 调试项 +数据关系 dba思想)  |库表列索引和分区的curd + pdo 防注入   +sql语句
               
php(算法 语法 配置  代码重构+优化  安全  设计模式  +框架 性能 原理 工具)  | 排序+小代码段

服务端(apache nginx  varnish)

缓存(redis memcache http +url) 

前端(html javascript jquery ) 

+ec+module功能要点

+高级( 架构|代理 缓存 版本 同步 测试 队列 |  运维 数据)



+shell脚本:linux系统下,用函数通过amp管理文件 Linux==>函数-->amp-->文件
1)管理:文本 文件  系统
文本:工具和筛选  
文件:curd 权限 压缩 
系统:进程管理  优先级  定时作业    | 磁盘(分区 加载 空间) 内存 cpu |用户 群组

2)应用:函数 参数  输出  | lamp
lamp:mysql+  apachectl  curl  
输入输出:stdin  stdout stderr lsof  /dev/null mktemp  tee  
参数选项:$#  $*  $@    getopt getopts  read
函数结构:#! expr bc  if-then-else  elif  else if    if-then case  case
for while  test util continue break  shift

========================================================= 
mysql sum
1.概述 334;
2.性能 因果关系;
3.数据类型  4种;
4.索引 结构 类型  三星评价;
5.优化 3个方面+5个流程+8个配置项;高级:分区+缓存+字符集+存储过程
6.复制:方法-方式-方案-线程-结构-原则 | 流程-问题(库-日志-复制-数据)-文件-配置;
7.扩展:原因 方式 演变 | 分片-规则 方式 工具 | 负载-方法 优化;
8.可用性:提高实效+缩短恢复+转移
9.应用+缓存
10.硬件:cpu 内存 硬盘(固态)
11备份+恢复

config:tool explain show 4 log 4 mysiam 6 innodb 5 skip 3 cache size 6  比率:8

 【终结小结】
连接-- max_connections + connection
索引-- Key_readskey + buffer_size
临时-- Created_tmp_disk_tables + tmp_table_size
查询-- 碎片率-bock/利用率-cache/命中率-hit+ query_cache
扫描-- Handler_read_rnd_nextread + read_buffer_size打开-- Open_tables + table_cache
缓冲-- Threads_created + thread_cache_size
表--innodb

+DBA核心:架构的本质思想是不让请求到达数据库
目标:运维就是保护数据和提供7x24小时服务 
经验:问题  报错  解决记录
思想:预防 补救  实战模拟 

+数据关系
差异数据:正常 非正常 有差异 无差异 | 对照分析 (适配器) 
计算数据:初始化 抓取 匹配(FIFO)  计算 修复 
核对数据:提取(pcntl) 加工 生成  通知  检查

table
表单状态关系(一个状态变多个):预存款+退货退款
表单父子关系(一条对多条数据):商品+配送
表单关联关系(一张表对多个表):购物+订单

sql 语句:统计查询 连表查询 子查询 | 排序 延迟关联 区分度 结构|多表 curd |语法 其他
思想:分治法,类似于主从句
实现:把握表之间的连接关系  表关系:学生+ sid +分数+ cid +课程 + tid/id +老师
注意:效率和安全

mysql:优化(缓存—>sql语句—>machine) 高级(事件 存储过程 触发器 视图 函数 授权 事务) 索引(独立 多列 场景 覆盖 聚族 重复 冗余 碎片) 语句  

=========================================================

php sum net  stream  url  http  dir  file  math  preg  hash   session date  variable array  string

+语法:
empty() ,”"、0、”0″、NULL、FALSE、array()、var $var ==>true ,非空非零的值为false ;
isset() 没有变量 或有变量但为null ==>false ,有变量不为null==>true
global:global 改变外部会改变内部  改变内部不会改变外部
$_GLOBALS 外部就是内部,所以改变外部就是改变内部,改变内部也改变外部
define:__FUNCTION__ __FILE __  __LINE__  __CLASS__  __METHOD__  DIRECTORY_SEPARATOR
sprintf  curl  $_SERVER
preg_match("/^[w-.]+@[w-]+(.w+)+$/", $email); 
preg_match("/^(((d{3}))|(d{3}-))?13d{9}$/", $mobile);
preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)

array 数组的curd和sort全是操作数组本身,指针也是。curd(array,value)而search是(value,array)
session 串号(相同的session_id) 共享(db nfs cache redis cookie + other) 集群(客户端 + 集中共享 + 复制)
cookie:k v ex  path domain secure

ini_set para 脚本执行 上传 session or cookie

php.ini sum--常用--错误日志  --文件上传--session--长时间运行脚本--安全
PHP安全 sum  session  html  form mysql password  过滤输入和避免输出 
code review sum1.代码质量 phploc phpcpd phpmd      PHPCpd  代码复制    PHPmd  代码建议 2.代码标准 phpcs3.代码文档 phpdoc4.代码效率xhprof

+原理:结构体的结构,决定了引用产生的相关问题,写时拷贝和引用计数和引用传值
+tool:excel+mail + upload + validate + cache  +filter + codetrans + (date  page chart  secede   ftp log)
Discuz x2.5防灌水设置涉及的地方:注册登录 user/group 内容过滤 防水插件和设置和防水墙


重构方法
目的:可读即可写
方法:提取-抽取(统一) 合并-内联(同一)  
种类:函数 对象 数据 表达式  方法  继承
--重新组织函数:
--对象间迁移:
--重新组织数据:
--简化条件表达式:
--重构方法:
--继承

class sum对象就是数据 | 类关键字 | 设计模式类型

算法 sum
复杂度          
—>区别 数组/链表(单双向)          
—>递归(种类)                       
—>堆/栈+队列(顺序)/集合(唯一)/哈希表(分布)                       
—>二叉树(遍历+平衡+旋转)/图(顶点和边+遍历)数据结构-->复杂度
遍历:排序  图   压缩
php:排序冒泡 插入 快排 选择 |  变量与引用  垃圾回收 |+小代码段 排序 二分查找 哈希 trie树 反转数组  数据压缩  左右值无限分类 任务调度


+mvc
model : model业务层(商品 用户  订单...)==>数据操作逻辑层(curd)==>数据操作实现层(mysql mysqi pdo)
control : mod_rewrite开启 => rewrite规则  => .htaccess使用   => url静态化   => route路由解析  => control分发   
view : 加载变量值 $_output[]=$values  加载显示页 include_once($templates)   跟踪信息(trace 系统函数显示)   
框架:shopnc: route(路由) core(公共方法) base(基类) goods(业务类) ,如果不存在就是__call

Yii:
controllers:filters  accessRules  常见调用 behavior
models:ar rules relations search curd  +labels
views:导航 日期 列表页  菜单层级 动态效果(按钮 弹窗 进度条 拖拽 选中) | 表单 上传 验证码 分页  ajax  防xss|编辑器 语言包  格式化
extensions:ajax 多图 多上传 编辑器 mail right debug  css/js压缩 editor srbac
configs:入口信息(path + import)设置信息(components(作为widget加载,可有自带的view)+modules) 其他信息  (time charset language) 
+url 逻辑 配置 参数
.htaccess 防盗链 规范网址 错误页面 加密 验证 缓存 伪静态  压缩 
yiiblog的东西


+架构

演化:初始阶段-->应用服务和数据服务分离-->分布式缓存-->负载均衡的服务器集群-->数据库读写分离 -->CDN和反向代理-->分布式文件和数据库系统-->NoSQL和搜索引擎-->业务拆分-->分布式服务

模式:

分层:(应用层  服务层  数据层)-->分割-->分布式(应用和服务 静态资源 数据和存储 计算 锁)-->集群-->缓存(CDN 反向代理 本地缓存 分布式缓存)-->异步(ajax gearman rabbitmq |削峰)-->冗余(冷/热备份)-->自动化(自动化发布-代理管理-测试-安全-部署-报警-失效转移-失效恢复-降级-分配资源)-->安全(密码和手机 加密 验证码 攻击--xss sql注入 编码 信息过滤 风险控制)  故障(日志 高并发锁和读写 缓存失效  应用启动 大文件读写 生产环境滥用)


要素:性能(缓存) 可用性(负载) 伸缩性(分片) 扩展性(分布式) 安全性(注入)


+websecure
同源:不同域 的客户端脚本 没授权 情况下,不能 读写对方 资源 | iframe http cookie(内存变本地)

区别:CSRF:借用,XSS盗用| CSRF蠕虫在攻击网站,XSS蠕虫在目标网站
xss:突破同源策略, 跨域(document.domain = ‘com’) 字符集(encodeURI) 注入点(html css js url) referer 屏幕劫持
csrf:获取唯一值(通过refe得到uid)  跨域获取数据(服务端代理 jsonhijack)
+暴力破解 sql注入

安全防御:浏览器  服务器 用户
+browser:HTTP:X-Frame-Options  X-XSS-Protection  X-Content-Security-Policy
+server:
server:域分离 https传cooie 验证码  小心第三方(<script> <iframe> <object>)
xss:OWASP(html标签 属性 javascript  css url)
csrf:http refer是否同域  session cookie生命周期  验证码  一次性token  +临时cookie(客户端生成,javascript生成  网络连接失败需要再提交一回)
界面劫持:X-Frame-Option Frame-Busting token
+user:noscript插件 最小信任(邪恶双胞胎) 忠告:不要泄露个人信息  



+性能
【1】在循环中判断时,数值判断使用恒等要比等于高效。
【2】在数组中,数组下标是字母时一定要加上单引号或双引号。因为$row['id']的效率是$row[id]的7倍。
【3】不要使用“@”去屏蔽错误输出。用@屏蔽错误消息的做法非常低效。
若你真的想抑制报错,可以通过设置error_reporting来控制,好比栗子中的,行前设置,行后取消即可。
【4】尽量不要在for循环中使用函数,比如for ($x=0; $x < count($array); $x)每循环一次都会调用count()函数。
【5】注销那些不必的变量尤其是大数组,以即开释内存。
【6】数据库连接该使用完毕时当闭掉。
【7】使用挑选分支语句(switch case)佳于使用少个if,else if语句。
【8】尽量使用include/require, 而不是include_once/require_once.
【9】不要重复造车。很多人在重复写着已有的内置function.
【10】假如在代码中具有大批耗时的函数,最好能f够斟酌用C扩大的方法完成它们。
【11】str_replace函数比preg_replace函数快,但strtr函数的效力是str_replace函数的四倍。
【12】合理运用字符串比较函数:strncmp / strncasecmp 要比 substr 什么的好很多,不管怎样,都比preg_*系列的字符串匹配方法好。
【13】使用echo的多重参数取代字符串衔接。即使用逗号而不是点连接字符串。
【14】不要引入不需要的文件。每个php脚本文件的引入,都会造成zend编译与执行环节。编译耗时远大于执行的时间。
【15】获取时间的方式:请不要一遍遍的调用 time()直接使用 $_SERVER['REQUEST_TIME']即可得到秒级别的时间戳,不必调用函数
【16】 Session 存储。PHP默认是把SESSION存储在一个文件中。把存储session分落在一个目录中,减轻单位间的读写频度。
【17】 Session不采用文件存储。文件存储不是一个优秀的方案
【18】系统调用时昂贵的。请手动释放你的资源(Please release resources manually) 
【19】代码约简单,跑得越快。为啥,因为简单。



====================================================

html sum1.元信息标签 2.表单 3.显示 4.选择器 5.框架 
javascript sum优化  加载 语法   方法 
jquery sum元素  | 单个值  结果集 |移动|复制、删除和创建 |工具 |事件|效果  |$.ajax:url  type:  timeout  async  cache  data  dataType  beforeSend  complete  success error  contentType  dataFilter global  ifModified  jsonp
js 跨脚本小结:1、json数据格式 2、js跨脚本执行特性 3、json与jsonp的分别 4、$.getJSON vs $.ajax 5、数据安全与优化搜索等

=========================================================================

apache sum全局 容器 认证 日志 cgi 负载
nginx_conf sum并发配置   工作模式   Http请求  服务器    特点
+varnish 配置文件--启动脚本--生成日志--命中率查看--调优管理
=========================================================

http sum报文组成3,连接过程3,加密4, 状态码5, robot3,cookie3,encode3,dns3,日志2,代理作用2,缓存与新鲜度(客户端+服务端,命中和设置)检测,

请求:GET  POST  HEAD PUT  DELETE  OPTIONS TRACE CONNECT
请求头: cookie from host if-modified-since refer user-agent charset encoding  language connection authorization content-lenght
响应:100 200 301 302 304 401 403 403 502 054
响应头:allow encoding length type date expires last modified location refresh
实体头:allow encoding language length location md5 range type expires last-modified
========================================================

url:解析|跨域

二级域名:泛解析(rewrite preg)+共享(session)

取得对象实例:实例化-->类-->方法-->参数
call_user_func_array

func_get_args()     这个函数返回的是包含当前函数所有参数的一个数组
func_get_arg()       函数返回的是指定位置的参数的值
func_num_args()  这个函数返回的是当前函数的参数数量 返回的是数字

结果:http://localhost/aaa/index.php?p=222&q=333
$_SERVER['QUERY_STRING'] = "p=222&q=333";
$_SERVER['REQUEST_URI']  = "/aaa/index.php?p=222&q=333";
$_SERVER['SCRIPT_NAME']  = "/aaa/index.php";
$_SERVER['PHP_SELF']     = "/aaa/index.php";
$_SERVER['argv'][0] = "p=222&q=333"

seo爬虫:url 待抓取列表 按优先级抓取  抓取的无限空间
黑网站:挂链接 useragent  跳转 增加页面 偷数据
P3P:; b域下访问a,b设置了a的cookie



========================================================

redis(setex or ttl)+master/slave   |  mem(expire_time)  ==>key to type of funcs
写入缓存(只适用于内存缓存) key(+prefix) val(+serialize)  ttl   
读/写缓存方法:额外的存储了键名key 到static静态变量$cache中去,全局就能使用了

redis:
array(php)-->cache(mem)-->nosql(主从 事务 持久化)
使用:返回值  场景  字段
设计:字段  mysql冷数据 写入  测试
weibo:推拉  关注/被关注  用户注册登录
主从(含义、迁移和切换) +  运维(命令和参数) + Redis-sentinel(集群管理工具) |  语法+配置+区别
主(-rdb +aof)--从(+rdb slaveof passwd  slave-read-only)备份—>读写分离—>任务分离(分担备份、计算)
返回:个数|是否修改|存在性|类型|秒数 -1(已过期) -2(不存在);空字符串|旧值|头尾元素或中间元素|返回随机值

key的设计
Redis key 设计技巧
1: 把表名转换为key前缀 如, tag:
2: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid
3: 第3段放置主键值,如2,3,4...., a , b ,c
4: 第4段,写要存储的列名

用户表 user  , 转换为key-value存储
userid
username
passworde
email
9
Lisi
1111111
lisi@163.com

set  user:userid:9:username lisi
set  user:userid:9:password 111111
set  user:userid:9:email   lisi@163.com
 * 
keys user:userid:9*


冷数据:
平均每秒发布700条微博,4000次redis写入.
后台定时任务,回归冷数据入mysql

redis:创建 连接=>curd+存在性+批量+数据增减+排序+生存时效+配置=>持久化+主从+事务

string 静态数据:存取
hash   属性数据:关系
set:去重数据:集合
list:列表数据:头尾
sort set    排序数据:先后

//存取 时效 加减1 键名操作  事务 持久化 
//get set setex setex delete  mset getMultiple  flushdb flushall| ttl  persist  setTimeout expireAt| 
//incr incrby decr decrby | multi exec discard watch unwatch
//save bgsave lastsave bgrewriteaof slaveof  info auth
//keys randomKey  type dbsize  rename renameNx  move exists

//set   s   +add rem move pop sort + inter/store union/store diff-前面的差集/store +randMember members contains size
//zset  z+ add rem  |rev/range rem/rangebyscore score rank  |count incrby size  |union/inter
//list:l r + push/x pop+set get | l+range/trim/rem/insert lsize  |rpoplpush 
//string:getSet get/setRange   append  strlen
//hash  h   +m/set m/get del  +keys vals getall +len exists incrby 

memcache:
原理:分布 场景 调优 | 缓存故障(雪崩 无底洞 数据踢除)
分布:一致性哈希+虚拟节点对缓存命中率的影响  & memcache lru lazy_delete
应用:memached确认主从延迟+秒杀
调优:memcached在启动时可以通过­f选项指定 Growth Factor 因子,并在某种程度上控制 slab 之 间的差异.默认值为1.25. 但是,在该选项出现之前,这个因子曾经固定为2,称为”powers of 2”策略。

Memcache:
set(key,val,compress,timeout) get delete flush  flush_all close  add replace
new connect
increment  decrement
addServer(host,port,persist,weight,timeout,retry_intval,status,failecallback)

./memcached  -m 256 -c 1000 -P  -l 127.0.0.1  -p 11211  -u root -d   /tmp/memcached.pid
getVersion  getStats  hit/cmd..  getExtendedStats  getStatus

Memcached:
append prepend + getDelayed fetch fetchall + setMulti getMulti  +  addServers getServerByKey  setByKey + cas--写锁的set  setOptions
set = add + replace
========================================================
运维工具汇总
操作系统:Centos※,Ubuntu,Redhat※,suse,Freebsd
网站服务:nginx※,apache※,lighttpd,php※,tomcat※,resin
※数据   库:MySQL※,Mysql-proxy,MariaDB,PostgreSQL
代理相关:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)
网站缓存:squid※,nginx※,varnishNOSQL库:memcached※,memcachedb,TokyoTyrant※,MongoDB※,Cassandra※,redis※,CouchDB
存储相关:Nfs※,Moosefs(mfs)※,Hadoop※,glusterfs※,lustre,FastDFS版本管理:svn※,git※
监控报警:nagios※,cacti※,zabbix※,munin,hyperic,mrtg
域名解析:bind※,powerdns,dnsmasq※
同步软件:rsync※,inotify※,sersync※,drbd※,csync2,union,lsyncd,scp※批量管理:ssh+rsync+sersync※,Saltstack※,expect※,puppet※,cfengine虚拟   化:kvm※,xen※
云计   算:openstack※,cloudstack
内网软件:iptables※,zebra※,iftraf,ntop※,tc※,iftop
邮件软件:qmail※,posfix※,sendmail远程拨号:openvpn※,pptp,openswan※,ipip※
统一认证:openldap(可结合微软活动目录)※
队列工具:ActiveMQ,RabbitMQ※,Metaq,MemcacheQ,Zeromq
打包发布:mvn※,ants※,jenkins※
测试软件:apacheab,smokeping,siege,JMeter,Webbench,LoadRunner(此行都是※)
日志相关:syslog,rsyslog,Awstats,flume logstash scribe kafka
DB代理:mysql-proxy,amoeba(更多还是程序实现读写分离)
搜索软件:Sphinx,Xapian(大公司会自己开发类似百度的小规模内部搜索引擎)

========================================================
数据+产品

数据:数据收集-->数据处理—>数据分析 ->数据展现-> 报告编写
统计:主要包括广告统计和网站统计(停留时间 跳出率 退出率 转化率参与度),生成相应图表

产品:
信息架构:组织+标签+导航+搜索+受控词表
设计文件:网页+组件+群组+链接
工具:visio+dreaweaver
========================================================

电商:通用|电商
页面呈现:首页  导航   推荐位  广告  | 商城  购物车  订单
通用模块:防灌水  第三方登录和分享  上传  SEO  通知  |  权限  分类   状态   审核   |cms+sns+im
电商核心:异步支付  订单生成 购物车添加  配送信息  退款退货流程 |  团购  促销种类  会员黏性 商品分类 商户 团购优惠券 统计转化  |  结算 预存款金额  
框架:功能==>表单==>流程  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:42790次
    • 积分:145
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:61篇
    • 译文:0篇
    • 评论:0条
    文章分类