- 博客(61)
- 资源 (2)
- 收藏
- 关注
转载 移动H5前端性能优化指南
移动H5前端性能优化指南概述1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首屏加载3秒完成或使用Loading4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB5. Mobile侧因手机配置原因,除加载外渲染速度也是优化重点6. 基于第五点,要合理处理代
2015-07-29 13:46:48 602
转载 Spring MVC 中的基于注解的 Controller
Spring MVC 中的基于注解的 Controller@Controller 基于注解的 Controller 终于来到了基于注解的 Spring MVC 了。之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求。实际上,ControllerClassNam
2015-03-26 11:06:39 468
转载 Java:对象的强、软、弱和虚引用
本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用
2015-03-26 10:59:18 446
转载 maven常用命令
maven常用命令 mvn compile 编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会比较费时间。 mvn test-compile 编译测试代码,compile之会后生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下。 mvn test 运行应用程序中的单
2015-03-16 13:55:45 416
转载 maven核心,pom.xml详解
什么是pom? pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。 快速察看: 4.0.0 ... ... ... ... ...
2015-03-16 13:52:27 342
转载 maven的依赖范围
compile(编译范围)compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。 provided(已提供范围)provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。例如,如果你开发了一个web应用,你可能在编译classpath中需要可用的Se
2015-03-16 13:52:01 449
转载 一个重大轮子: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析
2015-03-13 16:21:15 484
转载 Transfer-Encoding: chunked 的含义
在用firebug查看服务器的请求时,返回的header都有Transfer-Encoding: chunked,在做实际应用时,好像也 没有多大关系。 试试用socket连接http服务器,看看数据是如何传输的。Java代码 Socket s = new Socket( "172.16.1.123" , 80 ); InputStream
2015-03-11 15:04:12 708
转载 HTTP协议之multipart/form-data请求分析
首先来了解什么是multipart/form-data请求:根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢?这就要从头来说了。http协议大家都知道是规定了以ASCII码传输,建立在tcp、ip协议之
2015-03-06 11:36:21 431
转载 Mysql锁机制的理解
介绍下对于Mysql锁机制的理解从基本概念开始:共享锁共享锁的代号是S,是Share的缩写,共享锁的锁粒度是行或者元组(多个行)。一个事务获取了共享锁之后,可以对锁定范围内的数据执行读操作。 排它锁排它锁的代号是X,是eXclusive的缩写,排它锁的粒度与共享锁相同,也是行或者元组。一个事务获取了排它锁之后,可以对锁定范围内的数据执行写操作。假设有两个事务t1和t
2015-02-28 17:24:09 411
转载 Apache+Tomcat https应用原理与实践
一、总结前一天的学习在前一天的学习中我们知道、了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验。这样的架构的好处在于:ü 减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负
2014-12-24 16:19:50 716
转载 一个牛人给java初学者的建议
给初学者之一:浅谈java及应用学java不知不觉也已经三年了从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版面总体感觉初学者多,高手少,精通的更少 由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间还有一个很重要的原因就是ja
2014-12-24 14:08:15 919
转载 Web系统大规模并发——电商秒杀与抢购
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,
2014-12-23 15:46:05 800
转载 Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
JDK内置工具使用一、javah命令(C Header and Stub File Generator)二、jps命令(Java Virtual Machine Process Status Tool)三、jstack命令(Java Stack Trace)四、jstat命令(Java Virtual Machine Statistics Monitoring To
2014-12-23 14:55:13 551
转载 JVM最大线程数
工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。 一、认识问题:首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码
2014-12-23 14:53:09 771
转载 Apache反向代理到Jetty
apache和jetty组合使用有三种方式Html代码 There are three main ways to connect Apache to Jetty: 1. Using Apache mod_proxy and a normal Jetty HTTP connector. 2. Using Apache mod_proxy_aj
2014-12-16 18:24:06 726
转载 Java 理论与实践: 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种
2014-11-24 17:01:12 492
转载 深入java并发--Lock与synchronized
java有像syncronized这样的内置锁,但为什么还需要lock这样的外置锁?性能并不是选择syncronized或者lock的原因,jdk6中syncronized的性能已经与lock相差不大。如果要选择lock的话,会基于lock拥有的几个优点(内置锁所不具备): 1.如果希望当获取锁时,有一个等待时间,不会无限期等待下去。 2.希望当获取不到锁时,能够响应中断
2014-11-24 16:40:48 588
转载 Tomcat--单向https与双向https的配置
tomcat6配置: 1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 如果只是加密,我感觉单向就行了。 如果想要用系统的人没有证书就访问不了系统的话,就采用双向 单向配置: 第一步:为服务器生成证书 使用keytool 为 Tomcat 生成证书,假定目标机器的域名
2014-11-24 12:34:47 874
转载 SpringMVC中的文件上传
这是用的是SpringMVC-3.1.1、commons-fileupload-1.2.2和io-2.0.1首先是web.xml[html] view plaincopyprint?xml version="1.0" encoding="UTF-8"?> web-app version="2.5" xml
2014-11-20 16:16:13 623
转载 Tomcat的classloader
1 - Tomcat的类载入器的结构Tomcat Server在启动的时候将构造一个ClassLoader树,以保证模块的类库是私有的Tomcat Server的ClassLoader结构如下:其中:- Bootstrap - 载入JVM自带的类和$JAVA_HOME/jre/lib/ext/*.jar- System - 载入$CLASSPATH/*.class- C
2014-11-14 15:21:44 570
转载 Tomcat 7最大并发连接数的正确修改方法
这是个很简单的问题,但是搜了一圈,发现大家都写错了。所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中,和连接数相关的参数有: minProcess
2014-11-06 22:00:26 474
原创 分布式系统开发里必须要解决的3个技术问题
这3个问题经常出现,不解决的话,一定会造成经济损失的1、同一个请求被发送了多次可能出现的地方:(1)和别人接口对接,别人同一份数据发送了多次 (2)用户在“提交”按钮里点击了多次 (3) 其他可能的一些恶意调用,尤其是涉及支付环节的,危险性非常
2014-11-06 16:26:45 631
转载 HTTP响应头之ETag
在HTTP1.1规范中,新增了一个HTTP头信息:ETag。对Web开发者来说,它是一个非常重要的信息。它是用作缓存使用的两个主要的头信息之一 (另一个是Expires)。除此之外,在REST架构中,它还可以用于控制并发操作(上节中已经大致介绍AtomPub中控制并发的流程)。那么ETag是什么?它又几种类型?强ETag与弱ETag之间有什么区别。?如何计算ETag值?
2014-11-06 15:19:20 3184
转载 浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
最近在对CDN进行优化,对浏览器缓存深入研究了一下,记录一下,方便后来者画了一个草图:每个状态的详细说明如下:1、Last-Modified在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse Header)此文件在服务期端最后被
2014-11-06 11:47:03 531
转载 羽毛球正确的握拍方法(图文)
了解羽毛球拍的手柄球拍手柄的基本外形:注意图中标出的A点那条棱为握拍时虎口要对准位置。 有人曾作过这样的比喻:“羽毛球的球拍是选手手臂的延伸。”正确的握拍可使其与人的手有机地融为一体,选手可用这只“延长的手”随心所欲地迎击不同方向、不同速度的来球达到手与球拍之间完美的结合。 羽毛球的握拍分为正手握拍和反手。但对于一名高水平的选手来说,握拍又
2014-11-06 10:46:02 3758
转载 Effective Java Item7:Avoid Finalizers,解释为什么finalize是不安全的,不建议使用
memory的释放并不是通过finalize(),因为finalize不安全而且影响能”。Effective Java一书中也提到:Avoid Finalizers。人都有潜在的叛逆意识,别人给的结论或者制定的规范,除非有足够的理由说服你,除非懂得这么做背后的原因,否则只能是死记硬背,没有形象深入的理解,不能学到真正的东西。本文通过自己的理解和一些实际的例子,和大家一起更形象的理解finalize
2014-11-06 10:40:18 811 1
转载 Google Java编程风格指南
January 20, 2014作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。目录前言源文件基础源文件结构格式命名约定编
2014-11-06 10:39:34 519
转载 Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
门面设计模式门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。门面设计模式的原理这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思
2014-10-17 17:49:28 487
转载 Jetty 的工作原理以及与 Tomcat 的比较
Jetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。Jetty 的基本架构下图是 Jetty 的基本架构图,
2014-10-16 23:01:15 515
转载 用java的nio技术实现的异步连接池
http://wenku.baidu.com/link?url=2vWQpeSyUQJQtclbYIwULoPe9Rf-UGdeUD0dNY7DhwIMgkVl1PARqmli-tmQckDB7C05asloIJOCN5JbI1BSLUQyQFuK1qO9U7duAYLkz_7
2014-10-16 21:44:31 899
转载 Java的NIO以及线程并发
一、NIO的出现 NIO是JDK1.4里面才出现的东东,他给大家带来的最大好处是异步socket。其它file,pipe暂时就不多谈了。 在JDK1.4出现之前,如果你需要编写一个Java服务器,为了实现异步操作,你必须为每个连接请求生成一个Java线程,当连接请求很多时,线程的调度,上下文切换,所付出的代价是非常昂贵,而且由于Java是跨平台的,各个平台对线程
2014-10-16 21:25:21 520
转载 class卸载、热替换和Tomcat的热部署的分析
这篇文章主要是分析Tomcat中关于热部署和JSP更新替换的原理,在此之前先介绍class的热替换和class的卸载的原理。一 class的热替换ClassLoader中重要的方法loadClass ClassLoader.loadClass(...) 是ClassLoader的入口点。当一个类没有指明用什么加载器加载的时候,JVM默认采用AppClassLoader
2014-10-15 16:28:48 608
转载 非常详细GC学习笔记
这是我公司同事的GC学习笔记,写得蛮详细的,由浅入深,循序渐进,让人一看就懂,特转到这里。一、GC特性以及各种GC的选择1、垃圾回收器的特性2、对垃圾回收器的选择2.1 连续 VS. 并行2.2 并发 VS. stop-the-world2.3 压缩 VS. 不压缩 VS. 复制二、GC性能指标三、分代回收四、J2SE 5.0
2014-10-15 08:30:06 469
转载 (翻译)什么是Java的永久代(PermGen)内存泄漏
本文是我对这篇文章的翻译:What is a PermGen leak? 为了便于阅读,我将原文附于此处,翻译穿插在其中。此外,为了防止原链接在未来某一天失效后,文中的图片再也看不到的问题,我将原文中的图片也保存到了本站的服务器上,我不知道原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者表示深深的感谢:感谢你们的分享。WHAT IS A PERMGEN LEAK?
2014-10-14 23:15:44 666
转载 svn设置忽视某个文件夹不提交 Eclipse
在多数项目中你总会有文件和目录不需要进行版本控制。这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹。只要你提交修改,TortoiseSVN 就会在提交对话框的文件列表中显示出未版本控制文件。当然你可以关闭这个显示,不过你可能会忘记添加新的源文件。最好的避免类似问题的方法是添加参考文件到该项目的忽略列表。这样他们就永远不会出现在提交对话框中,
2014-10-14 20:07:41 1578
转载 Java中的ReentrantLock和synchronized两种锁定机制的对比
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它
2014-10-12 23:35:19 578
转载 ReentrantLock和Synchronized的区别
ReentrantLock可以成为公平锁。所谓公平锁就是让等待最长的线程最早获得该锁(获得锁的顺序和申请锁的顺序是一致的);与之对应的synchronized是非公平的、当然ReentrantLock也可以成为非公平锁;只是公平锁的性能相对差一些。synchronized锁是基于对象的,一个线程占有了锁,其他线程不能再进入这个对象的任何synchronized方法。而ReentrantLock
2014-10-12 23:18:51 602
转载 JAVA线程池的分析和使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。
2014-10-12 23:09:01 431
转载 线程池的研究
什么是线程池?诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对
2014-10-12 22:31:21 537
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人