今日要闻:

性价比是个骗局:

对某个产品学上三五天个把月,然后就要花最少的钱买最多最好的东西占最大的便宜。

感谢万能的互联网,他顺利得手,顺便享受了智商上的无上满足以及居高临下的优越感——你们一千块买来的东西,我半价就入手了。

他忘了自己花了多少时间多少精力找到这个淘宝店,也忘了自己花了多少时间多少精力把这个淘宝店的评价看了个遍分析了个遍,更忘了自己花了多少时间多少精力学习分辨港版、美版、A货、B货。这些都是成本。当然,这不是问题,这么多时间和精力用在赚钱上也许赚不到五百块,两相比较,还是赚了。只可惜,他还忘了一个中心点,卖家也是中国人,也聪明:一,卖家不是活雷锋,也不是感动中国的候选人,要赚钱;二,卖家的聪明不是三五天个把月烧脑的结果,是诸多时间以及众多同行实践出来的智慧萃取出来的结晶,换言之,作为买家的他是在跟一大波成功经验的去伪存菁的总结拼杀。

 这个时候,性价比闪亮登场了

但性能能保证你看得了流畅的高清,玩得了最新的游戏,却保证不了不烫手,保证不了手机出现意外之后售后和服务热线不踢皮球,保证不了阳光下的显示效果,保证不了拍照效果,更保证不了你用了七天之后不出毛病。

再看性价比,也没有那么高大上了,其实就是把消费者最容易感受到的部分融为一炉,最明了的传递给用户,让用户可知可感,让用户觉得划算。它其实就是前文讲到的“便宜”,不过是换了一套行头,更隐蔽罢了。换言之,它接了“便宜”的班,“便宜”薪尽火传。仍旧是在那些你看不到的部分,不明白、不了解的部分,做手脚。

今日英文:

http://docs.oracle.com/cd/E11882_01/java.112/e16548/oraperf.htm#JJDBC28752

Oracle11g jdbc 性能方面的扩展:

1.批量更新:也就是预编译语句

Statement stmt = conn.createStatement();//普通语句甚至存储过程语句都可以批量,但没有性能提升

stmt.addBatch("INSERT INTO emp VALUES(1000, 'Joe Jones')");
stmt.addBatch("INSERT INTO dept VALUES(260, 'Sales')");
stmt.addBatch("INSERT INTO emp_dept VALUES(1000, 260)");
PreparedStatement pstmt =
conn.prepareStatement("INSERT INTO employees VALUES(?, ?)");//正规情形,但限定于一个固定格式的语句 pstmt.setInt(1, 2000);
pstmt.setString(2, "Milo Mumford");
pstmt.addBatch(); pstmt.setInt(1, 3000);
pstmt.setString(2, "Sulu Simpson");
pstmt.addBatch();

11g以前,在ROLLBACK时,需要显式调用clearBatch来清空批语句,11g后不再需要

if (...condition...)
{
int[] updateCounts = pstmt.executeBatch();
...
}
else
{
pstmt.clearBatch();
...
}

预编译语句正常会返回-2

一般语句会返回正整数,表示影响的行数

存储过程语句会返回1

BatchUpdateException.getUpdateCounts 在出错时能得到已更新的计数

但 预编译语句总是为-3

正常语句则为已经执行的语句数

2.数据集预抓取,fetch size

useFetchSizeWithLongColumn 可以让PARSE, EXECUTE, FETCH 在一次连接中完成

降低fetch size 通常是为了腾出内存而利用网络

3.对于Type4来说,可以设置 disableDefineColumnType=true 来禁用defineColumnType

技术区:

Java Web高性能开发(二)

1.Flush 机制:无需等到网页内容全部加载完毕,一次性写回客户端,而是可以部分逐次的返回。

允许开发人员将网页的内容按文档流顺序逐步返回给客户端,这样可以使得用户知道我们的系统正在工作,

只要调用 HttpServletResponse.getWriter 输出流的 flush 方法,就可以将已经完成加载的内容写回给客户端。

实际上 Flush 机制会增加用户等待时间、增加浏览器渲染时间,但是对于大网页来说,降低这点效率来增强用户体验,是值得的。

2.动静分离,就是将 静态和动态的内容分别放在不同的服务器上,有针对性的处理动态和静态内容,从而达到性能的提升。

对于静态资源处理的服务器软件,我们可以选择 Nginx,支持高并发

3.持久连接(Keep-Alive)也叫做长连接,它是一种 TCP 的连接方式,连接会被浏览器和服务器所缓存,在下次连接同一服务器时,缓存的连接被重新使用。

由于 HTTP 的无状态性,人们也一直很清楚“一次性”的 HTTP 通信。持久连接则减少了创建连接的开销,提高了性能。

HTTP/1.1 已经支持长连接,大部分浏览器和服务器也提供了长连接的支持。

浏览器在请求的头部添加 Connection:Keep-Alive,以此告诉服务器“我支持长连接,你支持的话就和我建立长连接吧”,而倘若服务器的确支持长连接,那么就在响应头部添加“Connection:Keep-Alive”,从而告诉浏览器“我的确也支持,那我们建立长连接吧”。服务器还可以通过 Keep-Alive:timeout=10, max=100 的头部告诉浏览器“我希望 10 秒算超时时间,最长不能超过 100 秒”。

Tomcat 里,默认长连接是打开的,当我们想关闭长连接时,只要将 maxKeepAliveRequests 设置为 1 就可以。

4.简单的在 JSP 的 request 对象中添加响应头部,往往可以迅速提升程序性能,一切实现代码仿佛都成浮云。

<%
SimpleDateFormat f2=new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
String ims = request.getHeader("If-Modified-Since");
if (ims != null)
{
try
{
Date dt = f2.parse(ims.substring(0, ims.length()-4));
if (dt.after(new Date(2009, 1, 1)))
{
response.setStatus(304);
return;
}
} catch(Exception e)
{ }
}
response.setHeader("Last-Modified", f2.format(new Date(2010, 5, 5)) + " GMT");
%>

上述代码的意图是:服务器获得浏览器请求头部中的 If-Modified-Since 时间,这个时间是浏览器询问服务器,它所请求的资源是否过期,如果没过期就返回 304 状态码,告诉浏览器直接使用本地的缓存就可以,

5.CDN,就是一种内容分发网络,它采用智能路由和流量管理技术,及时发现能够给访问者提供最快响应的加速节点,并将访问者的请求导向到该加速节点,由该加速节点提供内容服务。

CDN 客户不需要改动原来的网站结构,只需修改少量的 DNS 配置,就可以加速网络的响应速度。

DNS 域名服务器通过 CNAME 方式将最终域名请求重定向到 CDN 系统中的智能 DNS 负载均衡系统。

智能 DNS 负载均衡系统通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的节点地址提供给用户,使用户可以得到快速的服务。

同时,它还与分布在不同地点的所有 CDN 节点保持通信,搜集各节点的健康状态,确保不将用户的请求分配到任何一个已经不可用的节点上。

而我们的 CDN 还具有在网络拥塞和失效情况下,能拥有自适应调整路由的能力。

非技术:

每天能写文章(博客、微信公号)的人是怎么安排时间的?

1.其实做你喜欢做的事,时间就总会有的;写你想表达的内容,就不会花费太多的时间

2.你发现了,灵感这玩意,总是转瞬即逝的。所以,秘诀一,就是要学会收集灵感。

3.请尽力把写作这件事培养成为一个自己稳定的习惯就好。
一个习惯要被培养起来的必要条件,是稳定的时间段和环境。所以,你可以试着连续一阵在相同的时间、相同的地点、相同的氛围和环境之下去写东西,有过一段时间的体验之后,它会成为你生命中的一部分。

4.看书并记住书中的东西只是记忆,并没有涉及推理,只有靠推理才能深入理解一个事物,看到别人看不到的地方,这部分推理的过程就是你的思维时间,也是人一生中占据一个显著比例的“暗时间”,你走路、买菜、洗脸洗手、坐公车、逛街、出游、吃饭、睡觉,所有这些时间都可以成为“暗时间”,你可以充分利用这些时间进行思考,反刍和消化平时看和读的东西,让你的认识能够脱离照本宣科的层面。这段时间看起来微不足道,但日积月累将会产生庞大的效应。

5.做一个有心人,一张画,一个人,一件事都可以写出一千字;

6.将自己的想法迅速形成文字的能力,将写一千字的时间控制在一个小时内;

7.每周给自己定几个课题,这些课题不光能让你有心情也得预见读者们会喜欢

Java Web高性能开发(二)的更多相关文章

  1. Java Web高性能开发(三)

    今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提 ...

  2. Java Web 高性能开发,第 3 部分: 网站优化实战

    这个系列的前两篇,介绍了前端的优化技术,这些技术秉承了前人至高无上的智慧,我只是负责吸收和传播.然而,这些技术一般也都是某某大型网站的技术经验,我们大部分人或许只能接触到相对小规模的网站,小规模的网站 ...

  3. Java Web 高性能开发,前端的高性能

    Java Web 高性能开发,第 2 部分: 前端的高性能 Web 发展的速度让许多人叹为观止,层出不穷的组件.技术,只需要合理的组合.恰当的设置,就可以让 Web 程序性能不断飞跃.Web 的思想是 ...

  4. Java Web 高性能开发,第 2 部分: 前端的高性能

    Web 发展的速度让许多人叹为观止,层出不穷的组件.技术,只需要合理的组合.恰当的设置,就可以让 Web 程序性能不断飞跃.Web 的思想是通用的,它们也可以运用到 Java Web.这一系列的文章, ...

  5. Java Web 高性能开发,第 1 部分: 前端的高性能

    Web 发展的速度让许多人叹为观止,层出不穷的组件.技术,只需要合理的组合.恰当的设置,就可以让 Web 程序性能不断飞跃.所有 Web 的思想都是通用的,它们也可以运用到 Java Web.这一系列 ...

  6. Java Web高性能开发 - 前端高性能

    作者:IBM developerWorks链接:https://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf1/著作权归作者所有.商业转载 ...

  7. java web Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  8. java web轻量级开发面试教程读书笔记:建索引时我们需要权衡的因素

    场景一,数据表规模不大,就几千行,即使不建索引,查询语句的返回时间也不长,这时建索引的意义就不大.当然,若就几千行,索引所占的空间也不多,所以这种情况下,顶多属于"性价比"不高. ...

  9. 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程

    上星期写了一个篇文章,数据库方面的面试技巧,如何从建表方面展示自己能力,承蒙管理员抬举,放入首页,也承蒙各位厚爱,两天内收获了将近770个点击,也一度进入48小时热榜. 为了感谢管理员和大家的支持,再 ...

随机推荐

  1. Android应用开发学习笔记之菜单

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android中的菜单分为选项菜单(OptionMenu)和上下文菜单(Context Menu).通常使用菜单资源 ...

  2. 总结Selenium自动化测试方法(六)常见的异常错误处理

    六.常见的异常错误处理 NoSuchElementException: Message: Unable to locate element: {"method":"xpa ...

  3. java生成带html样式的word文件

    参考:http://blog.csdn.net/xiexl/article/details/6652230 最近在项目中需要将通过富文本编辑器处理过的文字转换为Word,查了很久,大家通常的解决办法是 ...

  4. Redis的过滤器(SCAN)功能

    在写另一篇文章( link )的时候,涉及到过滤器(filter)功能.以前没有接触过,整理如下. 主要参考这两篇: http://blog.csdn.net/u011510825/article/d ...

  5. zoj 3329 One Person Game (有环 的 概率dp)

    题目链接 这个题看的别人的思路,自己根本想不出来这种设方程的思路. 题意: 有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当 ...

  6. website project team member 角色及开发过程概念图

    一个web项目的团队往往具有以下角色的人员组成: project stakeholder(client or business owner)产品经理 Project manager 项目经理 prod ...

  7. bzoj4627: [BeiJing2016]回转寿司

    权值线段树. 要求 L<=(s[i]-s[j])<=R  (i<j). 的i和j的数量. 所以把前缀和s加入一棵权值线段树,每次询问满足条件的范围中的权值的个数. 权值线段树不能像普 ...

  8. linux嵌入式系统驱动程序的阻塞与异步

    对于那些需要进程独占的设备,需要使用linux提供的阻塞编程.步骤如下: 1.在设备驱动程序中定义该设备的进程等待列多,并将其初始化 static wait_queue_head_t wait_que ...

  9. Spring3.1新特性介绍

    Spring3.1新特性 一.Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类.   二.Spring2.5引入注解式处理器支持,通过@Controller ...

  10. poj 3353 Road Construction tarjan 边双联通分支 缩点+结论

    题意:一个连通的无向图,求至少需要添加几条边,救能保证删除任意一条边,图仍然是连通的. 链接:http://poj.org/problem?id=3352 思路:边的双连通图.其实就是要求至少添加几条 ...