JavaWeb高性能开发(一)

今日要闻:

淘宝删差评产业链

在你给出“差评”“中评”后不久,有人会偷偷登录你的淘宝账户,把你之前给过的评价删除或改成“好评”。而这种人就是“职业修改差评师”

 案发前,李骏杰在杭州市滨江区一家科技公司上班。5 人当中,他主要负责通过 QQ 在网上联系需要修改“中评”和“差评”的淘宝卖家,改一个评价收费 260 元。

  李骏杰把这些信息传给他的下线,即在广东打工的黄福权、王凤昭,黄、王二人再把信息反馈给在江西某市公安系统工作的胡榕,由他利用自己的职务便利查明买家的身份证信息,之后把信息以每条 15 元至 25 元不等的价格卖给黄、王二人。

  收到胡榕给的买家身份证信息后,黄、王二人以每条 15 元的价格让河北石家庄人董伟“PS”出身份证复印件,再把复印件以每件 45 元的价格转卖给李骏杰。有了买家的身份证复印件,李骏杰就可以利用技术手段,冒充淘宝买家身份骗取该买家的淘宝账号并重置密码,最后非法登录淘宝评价系统删除或修改“中评”“差评”。

“追求‘好评’固然好,但 100% 的‘好评’大多是不符合事实的。”一位“资深”淘宝用户对记者说,“即便是买家出于个人意愿给出‘差评’,卖家也会要求对方改成‘好评’,或以返利来诱惑,或用谩骂、威胁等卑劣手段。说到底,是淘宝卖家对买家‘差评’的过度在意催生了‘职业修改差评师’和‘恶意差评师’的存在。”这位淘宝用户总结分析说。

今日英文:

http://docs.oracle.com/cd/E11882_01/java.112/e16548/apxref.htm#JJDBC28913

Oracle jdbc 转义语法(SQL92):

关闭转义可以提高性能  stmt.setEscapeProcessing(false);

日期字面量  {d ‘1995-10-22‘} 会自动转为数据库类型

时间字面量  {t ‘05:10:45‘} 或 {t ‘14:20:50‘} 自动转24小时制

或  {ts ‘1982-01-23 12:00:00‘}

一般来说 Oracle类型oracle.sql.DATE会自动映射为java.sql.Timestamp 这是正确的,不要修改

设置mapDateToTimestamp=true 可以映射为java.sql.Date 但会有精度下降

特殊的,如果这个Date列恰好有个索引,要用特殊的setObject,无论setDate还是setTimestamp结果都不正确(略)

对’_’和’%’转义:

  WHERE ename LIKE ‘&_%‘ {ESCAPE ‘&‘}  表示以下划线开头的任意字串
  WHERE ename LIKE ‘\\_%‘ {escape ‘\\‘} 同上
Oracle不支持转义Outer Join写法,
  如 FROM {OJ dept LEFT OUTER JOIN emp ON dept.deptno = emp.deptno
  应写为 FROM emp b, dept a WHERE a.deptno = b.deptno(+)

调用存储过程  { call procedure_name (argument1, argument2,...) }

调用函数  { ? = call procedure_name (argument1, argument2,...) }

driver.processSqlEscapes("{ts ‘1998-10-22 16:22:34‘}")
  将输出 TO_TIMESTAMP (‘1998-10-22 16:22:34‘, ‘YYYY-MM-DD HH24:MI:SS.FF‘)

Oracle存储过程不支持Boolean类型的参数和返回值,通常要自己转为int或其他来判断

Oracle不支持java.sql.SQLWarning,应该用java.sql.SQLException

DDL语句应该用Statement执行,如果用preSta或callSta则只会在首次执行

SELECT name FROM emp WHERE id = :EmpId  命名参数可以用setXXXAtName
 

技术区:

事实证明,与其消耗大量时间在服务器端,在前端进行的优化更易获得用户的肯定。

前端的高性能部分,主要是指减少请求数、减少传输的数据以及提高用户体验,在这个部分,图片的优化显得至关重要。

1.减少图片的大小,可以明显的提高性能,而对于已有图片,要想减少图片的大小,只能改变图片的格式,这里推荐的是 PNG8 的格式

2.CSS Sprites 是一个吸引人的技术,它其实就是把网页中一些背景图片整合到一张图片文件中,再利用 CSS 的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position 可以用数字能精确的定位出背景图片的位置。

很好地减少网页的 HTTP 请求,从而大大的提高了页面的性能

由于图像合并后基本信息不用重复,那么多张图片合并成 1 张图片的字节往往总是小于这些图片的字节总和。

只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名,从而提高了网页的制作效率

只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变

图片的请求数就被缩减到 1 个。其他的请求都可以用到本地缓存

3.有时候,图片数据太多,一些公司的解决方法是将图片数据分到多个域名的服务器上

一方面是将服务器的请求压力分到多个硬件服务器上

另一方面,是利用了浏览器的特性。一般来说,浏览器对于相同域名的图片,最多用 2-4 个线程并行下载。不同浏览器的并发下载数,都是不同的

多域名的下载固然很好,但是太多域名并不太好,一般在 2-3 个域名下载就差不多

4.要是图片的下载不用向服务器发出请求,而可以随着 HTML 的下载同时下载到本地那就太好了

而目前,浏览器已经支持了该特性,我们可以将图片数据编码成 BASE64 的字符串,使用该字符串代替图像地址

从现实我们接触的角度看,如一些在线 HTML 编辑器,里面的小图标,如笑脸等,都使用到了 BASE64 编码,因为它们非常小,数量多,BASE64 可以帮助网页减少图标的请求数,提高效率

5.压缩是一个不错的选择,而 HTTP 协议支持 GZIP 的压缩格式,服务器响应的报头包含 Content-Encoding: gzip

<Connector  port ="80"  maxHttpHeaderSize ="8192"
 maxThreads ="150"  minSpareThreads ="25"  maxSpareThreads ="75"
 enableLookups ="false"  redirectPort ="8443"  acceptCount ="100"
 connectionTimeout ="20000"  disableUploadTimeout ="true"  URIEncoding ="utf-8"
 compression="on"
 compressionMinSize="2048"
 noCompressionUserAgents="gozilla, traviata"
 compressableMimeType="text/html,text/xml" />

在高并发的情况,多个 Tomcat 服务器之前,需要采用反向代理的技术,提高并发度,而目前比较火的反向代理是 Nginx

gzip  on;
 gzip_min_length  1000;
 gzip_buffers     4 8k;
 gzip_types       text/plain application/x-javascript text/css text/html application/xml;

6.预加载原理是在用户查看一张图片时,就将下一张图片先下载到本地

而懒加载则是在用户需要的时候再加载。当一个网页中可能同时有上百张图片,而大部分情况下,用户只看其中的一部分

Lazy Load Plugin for jQuery 是基于 JQuery 的懒加载组件

非技术:

如何把技术讲得通俗易懂:

1.先做市场分析。想明白以下问题:

  • 你的受众是谁?

  • 他们具备怎样的知识储备?
  • 你要兜售的技术解决了他们的什么问题?(向老板解释技术问题也算一种兜售)
  • 有没有现成的技术方案解决类似的问题?
  • 如果没有现成的同类方案,为什么没有?是因为你对问题定义不清晰,还是不存在这种需求?
  • 如果有现成的同类方案,那你兜售的技术和已有解决方案相比较,优缺点如何?

2.包装你的「产品」。可选的方法有很多,

比如假设你文学造诣不错,且你对受众的心理有相对精准的把握,大可以讲个漂亮的故事

文字功底一般,其实也不要紧,那咱就不讲故事,讲道理。把核心的概念按照合适的方式组织起来,用通俗易懂的语言去描述

3.分清主次。判断哪些部分是重要的,应当着重讲;哪些部分是次要的,时间有限或者为了减少复杂度可以忽略不讲

4.条理清晰、层次分明。能否从错综复杂的关系和概念网络中划清边界取决于你自己的抽象能力

就好像写程序一样,有的人写一个方法/函数四五屏都不够用,而大牛的写法常常是分解为若干不相关的子方法/函数。

5.还得根据实际情况时不时抖个机灵、讲个笑话,把出窍的灵魂给捉回来

6.多用简单短句,少用复杂长句

7.多用比喻。我觉得,无论是否技术,这都能得到不错的效果。

时间: 2024-08-03 02:49:47

JavaWeb高性能开发(一)的相关文章

Java Web高性能开发(三)

今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提供了一项新服务,利用深度学习技术来理解视频内容. 深度学习需要借助一个模拟"神经元"的网络来处理数据,并且利用实例数据对其进行训练.Clarifai的技术源自纽约大学的研究,该公司2013年在一项著名的图片内容识别软件竞赛中取得前五名. 今日英文: http://docs.oracle.c

学习JavaWeb项目开发需要掌握的技术

武汉java培训学习JavaWeb项目开发需要掌握的技术,国内外信息化建设已经进入基于Web应用为核心的阶段, java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.概括一下,实施Java的WEB项目需要掌握的技术如下:Java语言面向对象分析设计思想设计模式和框架结构XML语言网页脚本语言数据库应用服务器集成开发环境下面我们具体地看每个技术.1.Java语言Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP.

PHP高性能开发-多进程开发

硬件多核时代的软件业以前计算能力的提升一直在摩尔定律的指引下,沿着提升CPU时钟频率这条道路前进,从初期的几十MHz到如今的几GHz.但是,进入2002年以 来,CPU提升主频的困难越来越大,因为主频的提升带来了散热和功耗的大幅增加等问题.几年前,英特尔和AMD都调整了研究方向,开始研究在同一CPU中 放置多个执行内核. 尽管多核是一种硬件技术,但硬件和软件是相互依存的,硬件只是一种物质基础,只有有了软件的支持,才能使硬件拥有用武之地.如今,多核的优势已成共识:一在于“降低功耗”,解决了以往靠主

JavaScript高性能开发的十条建议

JavaScript高性能开发的十条建议 文/开发部 Dimmacro 编者按:javascript开发大部分程序员都做过,写出来的代码质量也千差万别,现在浏览器内嵌的解释器虽然效率已经很高了,但在客户完美体验的趋势下还是捉襟见肘,编写高性能javascript代码,无疑能带来更好的客户体验.本文的这些建议能给开发者带来一定的方向指导,值得一读. 1.使用延迟脚本,动态加载脚本,XHR脚本注入等方式加载js脚本,避免多脚本加载出现的页面长时间等待. 编辑解读:每读取一个页面,页面内容从上到下顺序

当用Myeclipse8.6集成开发环境,进行JavaWeb项目开发的时候,用集成开发环境中的run Server进行程序调试时,出现如下错误解决方案

当用Myeclipse8.6集成开发环境,进行JavaWeb项目开发的时候,用集成开发环境中的run Server进行程序调试时,出现如下错误解决方案: 'Starting Tomcat v6.0 Server at localhost'has encountered a problem 错误提示: Several ports(8080,8009)required by Tomcatv6.0 Server at localhost are already in use.The server ma

原 .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)

大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能:这些问题却没有统一的描述. 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议.为了解决反射的性能问题,你可以遵循本文采用的各种方案. 本文内容 反射各方法的性能数据 反射的高性能开发建议 创建类型的实例 反射获取 Attribute 反射调用公共 / 私有方法 使用预编译框架 附本文性能测试所用的代码 所有反射相关方法 IsDefined 和 GetCustomAttribute 的专项比较 参考资料 反

搭建JavaWeb应用开发环境

下载和安装Tomcat服务器 下载Tomcat安装程序包:http://tomcat.apache.org/,下载一个zip版本,解压到本地即完成了Tomcat的安装. 测试是否安装成功:进入Tomcat目录,双击 bin 目录下的 startup.bat 文件启动Tomcat服务器,在浏览器中输入http://localhost:8080/,有内容出来就表示成功了. Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件.

(转)一个JavaWeb项目开发总结

原文地址:http://www.cnblogs.com/lzb1096101803/p/4907775.html 一.学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring ioc->log->代码 先了解项目数据库的表结构,这个方面是最容易忘记的,有时候我们只顾着看每一个方法是怎么进行的,却没有去了解数据库之间的主外键关联.其实如果先了解数据库表结构,再去看一个方法的实现会更加容易. 然后需要过一遍web.xml,知道

JavaWeb应用开发使用jetty札记

应该做点变化了,决定使用Maven来管理工程,并且在Java Web开发中使用Jetty来作为测试容器. 1.JavaWeb工程配置jetty-maven-plugin插件 <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.6.v20141205</version> &