Web优化

####html
压缩 gzip

####js
压缩 gzip
精简 JSmin
外部文件

####css
压缩
先加载
外部文件
避免表达式

###图片
png 精简 pngOptimizer

####缓存+CDN
减少传输内容
gzip html css js
js JSmin
png pngOptimizer

####减少传输资源
1.缓存
2.设置过期时间

####优化
CDN
加载顺序
外部加载

总结 http://stevesouders.com/hpws
YSlow

分析为什么程序员的工作效率跟工资不成比例

[转] 分析:为什么程序员的工作效率跟工资不成比例
感谢思朴互联的投递
新闻来源:开源中国
最有效率的程序员会比一般的程序员的编程效率高上几个数量级。但在任何公司里,他们的工资水平却只会出现很小的浮动差距。
甚至在整个行业内,这种差距也不是很大。如果一个程序员的效率能达到其他人的10倍,为什么他不能得到10倍高的报酬呢?

Joel Spolsky在最近的他的一个演讲里 就这个问题给出了一系列的答案。首先,程序员的工作效率在整个行业内千差万别,但在一个公司里却不会有太大的差距。
如果一个人比他的同事的效率高10倍, 那他基本上会离开,要么去找更有天赋的人一起工作,要么去创业开公司。第二,极高的工作效率并没有被察觉。这篇文章我们主要讨论这第二种情况。

一个人的工作效率比同伴高10倍怎么可能不被察觉呢?在某些行业里,这种差别是显而易见的。
一个销售人员的效率是他的同伴的10倍,这很容易看出来,而且他也能得到相应的报酬。销售成绩容易测量,就比如有些销售人员销售额会是其他人的数十倍。
一个泥瓦匠的工作效率是其同伴的10倍,这也很容易看 出,但这种事情不会发生:最好的泥瓦匠也不可能比一个一般的泥瓦匠快10倍。
软件的产出不可能像销售或砌砖那样容易的测量。最好的程序员并不是能写10倍 多的代码,他们也不是能多干10倍多小时的工作。

程序员在避免写代码时才体现出最高的效率。他们能认识到人们要求他们解决的问题并不需要解决,他们能知道客户并不清楚自己想要的东西是什么。
他们知道什么地方可以重复利用或可修改来解决问题。他们会欺骗客户。 但是,当他们做到了最高的效率时,没有人会说“哇塞!这比用那笨办法做会省事100倍。
你应该涨工资。”顶多人们会说“这个主意不错!”然后继续干活。你需要很长的时间才能发现有些人经常性的显现出省时省力的睿智。或者反过来说,你需要很长的时间才能认识到有些人虽然经常加班加点的编程却没有什么产出。

对超级程序员形象的一种具有浪漫主义色彩的描绘是:他开启Emacs编辑器,敲起代码来就像打机枪,把一个软件从无到有开发成没有任何缺陷的最终产品
。而一个更精确的描绘是:他静静的望着太空几分钟,然后说“咦,这好像以前在什么地方见过呀。”

单机虚拟多机环境

  1. 双网卡,绑定一个IP
  2. 虚拟主机
  3. 多进程,不同的端口 拷贝同样的tomcat
  4. tomcat一个进程支持 多个server
  5. 拷贝应用程序2,建立虚拟主机监听不同端口,负载均衡

Session问题
双机环境,Session不断的变化。
(每次产生的sessionid不同,保存到yxz的cookies中的sessionid变化。在访问同一个服务器,也出错。)
但是使用ip_hash定位到一个服务器是可以
nginx后,同一个主机Session也是不断的变化

  1. 不要使用session,使用cookie
  2. 通过缓存服务器,保持session,集中共享
  3. web服务器,拷贝session
  4. 使用策略,只固定到一台服务器

可扩展、高性能一般思路

####硬件
更快的CPU
更大的RAM
高速的网络
高吞吐量的I/O

####负载均衡器

  1. 基于DNS的 集群
    优点:防止单一的中央节点
    需要域名服务器的支持

    镜像服务器技术 CDN
    基于特定服务器软件的负载均衡
    基于DNS的负载均衡`
    基于四层交换技术的负载均衡
    基于七层交换技术的负载均衡
    站点镜像技术
    站点镜像技术实际上利用了DNS负载均衡技术。

  2. 基于Nginx
    优点:配置灵活
    缺点需要中央节点

  3. 二级 Nginx
    优点:可扩展行强
    缺点:转发延时大

####应用服务器功能

  1. 集群Session拷贝
    优点:只是提供功能可用

  2. 根据地域或者IP划分服务器
    优点:减少Session拷贝
    缺点: 需要很多服务器

  3. Session集中管理
    优点:避免Session复制的开销(CPU和内存)

  4. 使用Cookie代替Session
    多个应用使用单点登录
    Cookie数据需要加密,QQ密码在本地就加密了

####数据库

  1. 数据库 分表、分库、读写分离
    可扩展系行差,系统变化比较大。系统变化频繁。
    数据库水平、垂直分隔
    2.缓存MemCache
    考虑mediawiki, 10亿条数据。1000万个用户。每秒并发10W