Java Web高性能开发(三)
今日要闻:
Clarifai:可识别视频中物体
最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破。现在,一家名为Clarifai的创业公司则提供了一项新服务,利用深度学习技术来理解视频内容。
深度学习需要借助一个模拟“神经元”的网络来处理数据,并且利用实例数据对其进行训练。Clarifai的技术源自纽约大学的研究,该公司2013年在一项著名的图片内容识别软件竞赛中取得前五名。
今日英文:
SQLXML 类型(Sql:2003)
需要导入
xdb.jar
和 xmlparserv2.jar
设置
oracle.jdbc.getObjectReturnsXMLType
=false 让getObject
返回java.sql.SQLXML
类型
否则返回
oracle.xdb.XMLType 类型(10g以前)
import java.sql.*; import java.util.Properties; import oracle.jdbc.pool.OracleDataSource; public class SQLXMLTest { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; PreparedStatement ps = null; String xml = "<?xml version=\"1.0\"?>\n" + "<oldjoke>\n" + "<burns>Say <quote>goodnight</quote>, Gracie.</burns>\n" + "<allen><quote>Goodnight, Gracie.</quote></allen>\n" + "<applause/>\n" + "</oldjoke>"; try { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:@//localhost:1521/orcl"); ods.setUser("scott"); ods.setPassword("tiger"); conn = ods.getConnection(); ps = conn.prepareStatement("insert into x values (?, ?)"); ps.setString(1, "string to string"); SQLXML x = conn.createSQLXML();//初始化 x.setString(xml);//赋值 ps.setSQLXML(2, x);//绑定,不可以set空的Sqlxml ps.execute(); x.free();//释放 stmt = conn.createStatement(); rs = stmt.executeQuery("select * from x"); while (rs.next()) { System.out.println(rs.getString(1) + "\n" + rs.getSQLXML(2).getString());//取出为String } rs.close(); ps.close(); } catch (SQLException e){e.printStackTrace ();} } }
技术区:
Java Web高性能开发(三)优化实战
1.JS模块化技术提出按需加载,也就是当用户触发该功能的时候,那个功能才真正的被加载。
但模块如果是懒加载的,粒度不能太小,也就是模块不能太小。
根据网站的规模、团队的规模、自己对模块化技术的掌握程度来选择是否使用模块化技术。当你的团队预计或者已经发展到一个很大的规模,需要多人维护和开发自己的模块,那么模块化是个不错的选择。如果你的网站发展壮大到功能之间经常互相影响,大量可重用模块无组织,那么模块化就是一个最好的解决方案。当然,这一切都要取决于你是否可以 hold 住模块化技术。
2.HTML 的渲染和加载顺序是从上往下,必须等到这个 JavaScript 下载完毕才会渲染后续的部分。
主功能,需要及时反馈,如页面点击监听等 ,应放在头部
辅功能,不着急加载,如 SNS 分享按钮,流量统计,后台任务等 可以放在尾部
功能代码按类型归类到不同的 JavaScript 文件,比如应该放头部和应该放尾部的代码,最好不要合并在一起。
3.CSS Sprite:网页框架显示之后,许多背景部分迟迟没有显示出来,包括头部,模块头部背景,小图片,过一会就出现用 CSS Sprite 的背景一次性显示出来,形成所说的背景延迟现象。
如何让 CSS 的图片在网页框架显示前就被加载,就变为了一个难题。
可以在网页的顶部,添加隐藏的<img>图像标签,来加载 CSS 图片,CSS 链接在<img>图像标签后面,也就是网页会等到图片加载完后加载 CSS,CSS 再请求图片。发现如果图片已经被加载过,就不会再加载,而是直接渲染页面,这就达到了 CSS 图片优先于 CSS 文件和网页内容加载的目的。
4.传统的懒加载策略,当用户匀速一直下拉网页时,网页图片的加载时常有卡顿现象,原因是促发的多个图片批量下载导致的; 对网页上下移动的控制要求很高,在频繁的上下移动、快速移动后,图片有时无法加载;
所有的 img 标签,定义为:<img src=“wait.png” oriSrc=“真实图片地址”>,然后在网页 onload 事件后,设置 2 秒的定时器:
setTimeout(function(){var im = $(“img[src=‘wait.png’]”); im.attr(“src”, im.attr(“oriSrc”)); }, 2000);
代码和原理很简单,先让图片都显示等待,由于同一张图片被多次引用是不会被重复加载的,所以这样没问题。然后在网页加载 2 秒后显示所有的图片。
网页框架被快速的显示,由于图片来自淘宝,加载也很快。同时,提示性的等待图片加载,主动的将响应信息反馈给用户,也是一种用户体验的提升,总体来说已经达到了理想中的效果。
5.适当时候提示下,来掩盖问题
为每个非_target 的超链接或者表单的点击,添加点击事件处理,处理逻辑也很简单,就是设置 3 秒超时,显示等待对话框。如果在 3 秒内页面发生跳转,那么这个等待对话框就不会出现,否则会弹出提示用户等待,从而及时的将响应反馈给用户,减少用户空白等待时间。
优化的目的,就是不要让用户一直得不到响应,避免空白等待,让用户体验越来越好。
非技术:
黑客马拉松是程序员的“美国偶像”,非常受欢迎。参与黑客马拉松的,除了热衷钻研技术的软件工程师,还有来自风投公司的团队。黑客马拉松一般长达几十个小时,参赛者累了或坐或卧,现场休息。“黑客马拉松”逐渐成为插件开发的主要形式:一群高手云集一堂,在几十个小时内拿出作品,择优而录。
“黑客马拉松”就像程序员版的《美国偶像》,极其火爆。有了更加易用的软件编写工具,加上各公司乐于让第三方分享他们的数据
黑客马拉松不是突然冒出来的,它们源自编码潮流。电影《社交网络》有一幕很出名:马克·扎克伯格在哈佛一间宿舍里举行了10分钟的编码比赛,赢家成了他第一位实习生。
财富500强公司希望借黑客马拉松来宣传自己,AT&T、微软、诺基亚,甚至甚至是联合利华这样的巨头都主办过黑客马拉松和插件大赛。办一场 100人参加的比赛,只需投入5000美元——考虑到如果某位参赛者做出一鸣惊人的插件、被公司推到市场上带来的回报,这笔投资堪称微不足道。
风险投资者也把黑客马拉松视为寻找人才和投资目标的理想场所。投资者特别喜欢黑客马拉松,并会循例派下级员工混迹其中的原因:这里可以发现人才。“过去大家习惯于在技术大会上包下一个活动室。现在的潮流是,如果你想找工程师,就去黑客马拉松。”
风险投资人不是唯一在黑客马拉松转悠的人。独立的技术猎头尤其积极,他们的理由也很充分:一位软件工程师的起薪可以高达10万美元,而猎头可以拿到他头一年工资20%的佣金。
Keyani 说,“黑客马拉松”上有一个很关键的原则:不能做自己的日常工作,这是因为活动的主要目的是激发新点子。每次活动都会出现四五项新想法,并且使用在网站上面,有些主意甚至改变了公司的方向。比如,公司内部一直不愿意构建的聊天客户端。“编码胜过了争论”,Keyani 说,“你可以为一件事情争上两天,或者你可以在一小时内做好,然后证明你的观点”。
黑客马拉松”的核心理念是,以不同的方式思考你以前没有机会专注的主意。Kayani 说,许多公司都有”思考周“的观点,在一周内进行头脑风暴活动。那不一定是在深夜,”如果一个公司雇佣了合格的员工,相信他们能有好主意,就应该给予他们空闲时间和自由度,让他们在公司需要探索的方面,想出一些了不起的东西”。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。