设为首页 收藏本站
查看: 1551|回复: 0

[经验分享] skill sum review

[复制链接]
累计签到:6 天
连续签到:1 天
发表于 2015-11-26 12:41:27 | 显示全部楼层 |阅读模式
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 nginx  varnish)
缓存(redis memcache http +url)
前端(html javascript jquery )
+ec+module功能要点
+高级( 架构|代理 缓存 版本 同步 测试 队列 |  运维 数据)


+shell脚本:linux系统下,用函数通过amp管理文件 Linux==>函数-->amp-->文件1)管理:文本 文件  系统文本:工具和筛选  文件:curd 权限 压缩 系统:进程管理  优先级  定时作业    | 磁盘(分区 加载 空间) 内存 cpu |用户 群组
2)应用:函数 参数  输出  | lamplamp: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  casefor while  test util continue break  shift
========================================================= 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 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==>trueglobal:global 改变外部会改变内部  改变内部不会改变外部$_GLOBALS 外部就是内部,所以改变外部就是改变内部,改变内部也改变外部define:__FUNCTION__ __FILE __  __LINE__  __CLASS__  __METHOD__  DIRECTORY_SEPARATORsprintf  curl  $_SERVERpreg_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树 反转数组  数据压缩  左右值无限分类 任务调度

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


&#43;性能【1】在循环中判断时,数&#20540;判断使用恒等要比等于高效。【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元素  | 单个&#20540;  结果集 |移动|复制、删除和创建 |工具 |事件|效果  |$.ajax:url  type:  timeout  async  cache  data  dataType  beforeSend  complete  success error  contentType  dataFilter global  ifModified  jsonpjs 跨脚本小结:1、json数据&#26684;式 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;服务端,命中和设置)检测,
请求: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)&#43;共享(session)
取得对象实例:实例化-->类-->方法-->参数call_user_func_array
func_get_args()     这个函数返回的是包含当前函数所有参数的一个数组func_get_arg()       函数返回的是指定位置的参数的&#20540;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'][0] = &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(主从 事务 持久化)使用:返回&#20540;  场景  字段设计:字段  mysql冷数据 写入  测试weibo:推拉  关注/被关注  用户注册登录主从(含义、迁移和切换) &#43;  运维(命令和参数) &#43; Redis-sentinel(集群管理工具) |  语法&#43;配置&#43;区别主(-rdb &#43;aof)--从(&#43;rdb slaveof passwd  slave-read-only)备份—>读写分离—>任务分离(分担备份、计算)返回:个数|是否修改|存在性|类型|秒数 -1(已过期) -2(不存在);空字符串|旧&#20540;|头尾元素或中间元素|返回随机&#20540;
key的设计Redis key 设计技巧1: 把表名转换为key前缀 如, tag:2: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid3: 第3段放置主键&#20540;,如2,3,4...., a , b ,c4: 第4段,写要存储的列名
用户表 user  , 转换为key-value存储useridusernamepasswordeemail9Lisi1111111lisi@163.com
set  user:userid:9:username lisiset  user:userid:9:password 111111set  user: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 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   &#43;add rem move pop sort &#43; inter/store union/store diff-前面的差集/store &#43;randMember members contains size//zset  z&#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   append  strlen//hash  h   &#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 之 间的差异.默认&#20540;为1.25. 但是,在该选项出现之前,这个因子曾经固定为2,称为”powers of 2”策略。
Memcache:set(key,val,compress,timeout) get delete flush  flush_all close  add replacenew connectincrement  decrementaddServer(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.pidgetVersion  getStats  hit/cmd..  getExtendedStats  getStatus
Memcached:append prepend &#43; getDelayed fetch fetchall &#43; setMulti getMulti  &#43;  addServers getServerByKey  setByKey &#43; cas--写锁的set  setOptionsset = 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(大公司会自己开发类&#20284;百度的小规模内部搜索引擎)
========================================================数据&#43;产品
数据:数据收集-->数据处理—>数据分析 ->数据展现-> 报告编写统计:主要包括广告统计和网站统计(停留时间 跳出率 退出率 转化率参与度),生成相应图表
产品:信息架构:组织&#43;标签&#43;导航&#43;搜索&#43;受控词表设计文件:网页&#43;组件&#43;群组&#43;链接工具:visio&#43;dreaweaver========================================================
电商:通用|电商页面呈现:首页  导航   推荐位  广告  | 商城  购物车  订单通用模块:防灌水  第三方登录和分享  上传  SEO  通知  |  权限  分类   状态   审核   |cms&#43;sns&#43;im电商核心:异步支付  订单生成 购物车添加  配送信息  退款退货流程 |  团购  促销种类  会员黏性 商品分类 商户 团购优惠券 统计转化  |  结算 预存款金额  框架:功能==>表单==>流程

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143887-1-1.html 上篇帖子: salt stack入门 下篇帖子: 用salt管理一到上万台服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表