jackfya 发表于 2015-11-26 12:41:27

skill sum review

linux (运维监控+测试(ab)+第三方搜索(sphinx xunsou es)+(数据+文件+代码)同步+负载均衡(http dns drdb)+异步(pcntl gearman curl ajax))+运维工具 +命令+config+shell+api+http://blog.sina.com.cn/s/blog_477071c50102vjde.html
mysql(知识 配置项 调试项 +数据关系 dba思想)|库表列索引和分区的curd + pdo 防注入   +sql语句               php(算法 语法 配置代码重构+优化安全设计模式+框架 性能 原理 工具)| 排序+小代码段
服务端(apache nginxvarnish)
缓存(redis memcache http +url)
前端(html javascript jquery )
+ec+module功能要点
+高级( 架构|代理 缓存 版本 同步 测试 队列 |运维 数据)


+shell脚本:linux系统下,用函数通过amp管理文件 Linux==>函数-->amp-->文件1)管理:文本 文件系统文本:工具和筛选文件:curd 权限 压缩 系统:进程管理优先级定时作业    | 磁盘(分区 加载 空间) 内存 cpu |用户 群组
2)应用:函数 参数输出| lamplamp:mysql+apachectlcurl输入输出:stdinstdout stderr lsof/dev/null mktemptee参数选项:$#$*$@    getopt getoptsread函数结构:#! expr bcif-then-elseelifelse if    if-then casecasefor whiletest util continue breakshift
========================================================= mysql sum1.概述 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 netstreamurlhttpdirfilemathpreghash   session datevariable arraystring
+语法:empty() ,”"、0、”0″、NULL、FALSE、array()、var $var ==>true ,非空非零的值为false ;isset() 没有变量 或有变量但为null ==>false ,有变量不为null==>trueglobal:global 改变外部会改变内部改变内部不会改变外部$_GLOBALS 外部就是内部,所以改变外部就是改变内部,改变内部也改变外部define:__FUNCTION__ __FILE ____LINE____CLASS____METHOD__DIRECTORY_SEPARATORsprintfcurl$_SERVERpreg_match("/^+@+(.w+)+$/", $email); preg_match("/^(((d{3}))|(d{3}-))?13d{9}$/", $mobile);preg_match("/^{1,3}\.{1,3}\.{1,3}\.{1,3}$/", $ip)
array 数组的curd和sort全是操作数组本身,指针也是。curd(array,value)而search是(value,array)session 串号(相同的session_id) 共享(db nfs cache redis cookie + other) 集群(客户端 + 集中共享 + 复制)cookie:k v expath domain secure
ini_set para 脚本执行 上传 session or cookie
php.ini sum--常用--错误日志--文件上传--session--长时间运行脚本--安全PHP安全 sumsessionhtmlform mysql password过滤输入和避免输出 code review sum1.代码质量 phploc phpcpd phpmd      PHPCpd代码复制    PHPmd代码建议 2.代码标准 phpcs3.代码文档 phpdoc4.代码效率xhprof
+原理:结构体的结构,决定了引用产生的相关问题,写时拷贝和引用计数和引用传值+tool:excel+mail + upload + validate + cache+filter + codetrans + (datepage chartsecede   ftp log)Discuz x2.5防灌水设置涉及的地方:注册登录 user/group 内容过滤 防水插件和设置和防水墙

重构方法目的:可读即可写方法:提取-抽取(统一) 合并-内联(同一)种类:函数 对象 数据 表达式方法继承--重新组织函数:--对象间迁移:--重新组织数据:--简化条件表达式:--重构方法:--继承
class sum对象就是数据 | 类关键字 | 设计模式类型
算法 sum复杂度          —>区别 数组/链表(单双向)          —>递归(种类)                     —>堆/栈+队列(顺序)/集合(唯一)/哈希表(分布)                     —>二叉树(遍历+平衡+旋转)/图(顶点和边+遍历)数据结构-->复杂度遍历:排序图   压缩php:排序冒泡 插入 快排 选择 |变量与引用垃圾回收 |+小代码段 排序 二分查找 哈希 trie树 反转数组数据压缩左右值无限分类 任务调度

+mvcmodel : 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:filtersaccessRules常见调用 behaviormodels:ar rules relations search curd +labelsviews:导航 日期 列表页菜单层级 动态效果(按钮 弹窗 进度条 拖拽 选中) | 表单 上传 验证码 分页ajax防xss|编辑器 语言包格式化extensions:ajax 多图 多上传 编辑器 mail right debugcss/js压缩 editor srbacconfigs:入口信息(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注入
安全防御:浏览器服务器 用户&#43;browser:HTTP:X-Frame-OptionsX-XSS-ProtectionX-Content-Security-Policy&#43;server:server:域分离 https传cooie 验证码小心第三方(<script> <iframe> <object>)xss:OWASP(html标签 属性 javascriptcss url)csrf:http refer是否同域session cookie生命周期验证码一次性token&#43;临时cookie(客户端生成,javascript生成网络连接失败需要再提交一回)界面劫持:X-Frame-Option Frame-Busting token&#43;user:noscript插件 最小信任(邪恶双胞胎) 忠告:不要泄露个人信息


&#43;性能【1】在循环中判断时,数值判断使用恒等要比等于高效。【2】在数组中,数组下标是字母时一定要加上单引号或双引号。因为$row['id']的效率是$row的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:urltype:timeoutasynccachedatadataTypebeforeSendcompletesuccess errorcontentTypedataFilter globalifModifiedjsonpjs 跨脚本小结:1、json数据格式 2、js跨脚本执行特性 3、json与jsonp的分别 4、$.getJSON vs $.ajax 5、数据安全与优化搜索等
=========================================================================
apache sum全局 容器 认证 日志 cgi 负载nginx_conf sum并发配置   工作模式   Http请求服务器    特点&#43;varnish 配置文件--启动脚本--生成日志--命中率查看--调优管理=========================================================
http sum报文组成3,连接过程3,加密4, 状态码5, robot3,cookie3,encode3,dns3,日志2,代理作用2,缓存与新鲜度(客户端&#43;服务端,命中和设置)检测,
请求:GETPOSTHEAD PUTDELETEOPTIONS TRACE CONNECT请求头: cookie from host if-modified-since refer user-agent charset encodinglanguage 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)&#43;共享(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'] = &quot;p=222&q=333&quot;;$_SERVER['REQUEST_URI']= &quot;/aaa/index.php?p=222&q=333&quot;;$_SERVER['SCRIPT_NAME']= &quot;/aaa/index.php&quot;;$_SERVER['PHP_SELF']   = &quot;/aaa/index.php&quot;;$_SERVER['argv'] = &quot;p=222&q=333&quot;
seo爬虫:url 待抓取列表 按优先级抓取抓取的无限空间黑网站:挂链接 useragent跳转 增加页面 偷数据P3P:; b域下访问a,b设置了a的cookie


========================================================
redis(setex or ttl)&#43;master/slave   |mem(expire_time)==>key to type of funcs写入缓存(只适用于内存缓存) key(&#43;prefix) val(&#43;serialize)ttl   读/写缓存方法:额外的存储了键名key 到static静态变量$cache中去,全局就能使用了
redis:array(php)-->cache(mem)-->nosql(主从 事务 持久化)使用:返回值场景字段设计:字段mysql冷数据 写入测试weibo:推拉关注/被关注用户注册登录主从(含义、迁移和切换) &#43;运维(命令和参数) &#43; Redis-sentinel(集群管理工具) |语法&#43;配置&#43;区别主(-rdb &#43;aof)--从(&#43;rdb slaveof passwdslave-read-only)备份—>读写分离—>任务分离(分担备份、计算)返回:个数|是否修改|存在性|类型|秒数 -1(已过期) -2(不存在);空字符串|旧值|头尾元素或中间元素|返回随机值
key的设计Redis key 设计技巧1: 把表名转换为key前缀 如, tag:2: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid3: 第3段放置主键值,如2,3,4...., a , b ,c4: 第4段,写要存储的列名
用户表 user, 转换为key-value存储useridusernamepasswordeemail9Lisi1111111lisi@163.com
setuser:userid:9:username lisisetuser:userid:9:password 111111setuser:userid:9:email   lisi@163.com * keys user:userid:9*

冷数据:平均每秒发布700条微博,4000次redis写入.后台定时任务,回归冷数据入mysql
redis:创建 连接=>curd&#43;存在性&#43;批量&#43;数据增减&#43;排序&#43;生存时效&#43;配置=>持久化&#43;主从&#43;事务
string 静态数据:存取hash   属性数据:关系set:去重数据:集合list:列表数据:头尾sort set    排序数据:先后
//存取 时效 加减1 键名操作事务 持久化 //get set setex setex deletemset getMultipleflushdb flushall| ttlpersistsetTimeout expireAt| //incr incrby decr decrby | multi exec discard watch unwatch//save bgsave lastsave bgrewriteaof slaveofinfo auth//keys randomKeytype dbsizerename renameNxmove exists
//set   s   &#43;add rem move pop sort &#43; inter/store union/store diff-前面的差集/store &#43;randMember members contains size//zsetz&#43; add rem|rev/range rem/rangebyscore score rank|count incrby size|union/inter//list:l r &#43; push/x pop&#43;set get | l&#43;range/trim/rem/insert lsize|rpoplpush //string:getSet get/setRange   appendstrlen//hashh   &#43;m/set m/get del&#43;keys vals getall &#43;len exists incrby
memcache:原理:分布 场景 调优 | 缓存故障(雪崩 无底洞 数据踢除)分布:一致性哈希&#43;虚拟节点对缓存命中率的影响& memcache lru lazy_delete应用:memached确认主从延迟&#43;秒杀调优:memcached在启动时可以通过­f选项指定 Growth Factor 因子,并在某种程度上控制 slab 之 间的差异.默认值为1.25. 但是,在该选项出现之前,这个因子曾经固定为2,称为”powers of 2”策略。
Memcache:set(key,val,compress,timeout) get delete flushflush_all closeadd replacenew connectincrementdecrementaddServer(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.pidgetVersiongetStatshit/cmd..getExtendedStatsgetStatus
Memcached:append prepend &#43; getDelayed fetch fetchall &#43; setMulti getMulti&#43;addServers getServerByKeysetByKey &#43; cas--写锁的setsetOptionsset = add &#43; 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&#43;rsync&#43;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 kafkaDB代理:mysql-proxy,amoeba(更多还是程序实现读写分离)搜索软件:Sphinx,Xapian(大公司会自己开发类似百度的小规模内部搜索引擎)
========================================================数据&#43;产品
数据:数据收集-->数据处理—>数据分析 ->数据展现-> 报告编写统计:主要包括广告统计和网站统计(停留时间 跳出率 退出率 转化率参与度),生成相应图表
产品:信息架构:组织&#43;标签&#43;导航&#43;搜索&#43;受控词表设计文件:网页&#43;组件&#43;群组&#43;链接工具:visio&#43;dreaweaver========================================================
电商:通用|电商页面呈现:首页导航   推荐位广告| 商城购物车订单通用模块:防灌水第三方登录和分享上传SEO通知|权限分类   状态   审核   |cms&#43;sns&#43;im电商核心:异步支付订单生成 购物车添加配送信息退款退货流程 |团购促销种类会员黏性 商品分类 商户 团购优惠券 统计转化|结算 预存款金额框架:功能==>表单==>流程
页: [1]
查看完整版本: skill sum review