自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

悠树

学习如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,年有所亏。

  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

转载 Java内存模型

原文地址  作者:Jakob Jenkov 译者:张坤Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同

2015-10-10 11:12:22 433

转载 深入理解Java内存模型(七)——总结

处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几

2015-10-10 11:08:57 449

转载 深入理解Java内存模型(六)——final

与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码

2015-10-10 11:07:35 425

转载 深入理解Java内存模型(五)——锁

锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1

2015-10-10 11:05:32 494 1

转载 深入理解Java内存模型(四)——volatile

volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L

2015-10-10 11:04:34 456

转载 深入理解Java内存模型(三)——顺序一致性

数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程

2015-10-10 11:03:18 377

转载 深入理解Java内存模型(二)——重排序

数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后

2015-10-10 11:02:15 382

转载 深入理解Java内存模型(一)——基础

并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之

2015-10-10 11:00:58 921

转载 《Effective Java》中关于异常处理的几条建议

原文:http://www.cnblogs.com/skywang12345/p/3544168.html概要本章对Java中的异常进行介绍。内容包括:Java异常简介Java异常框架转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html Java异常简介  Java异常是

2015-05-25 18:30:52 868

转载 Java NIO 入门

原文地址:http://www.ibm.com/developerworks/cn/education/java/j-nio/在开始之前关于本教程新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不

2015-05-13 21:10:36 536

转载 Jetty 的工作原理以及与 Tomcat 的比较

原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-jetty/#ibm-pconJetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添

2015-05-05 21:33:38 1032

转载 线程的同步和异步

原文地址:http://bibo531651225.iteye.com/blog/1819018多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有时为了解 决此问题,优先考虑使用局部变量,退而求其次使用同步代码块,出于这样的安全考虑就必须牺牲 系统处理性

2015-05-05 17:23:57 528

转载 通过分析 JDK 源代码研究 Hash 存储机制

原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-hash/通过 HashMap、HashSet 的源代码分析其 Hash 存储机制集合和引用就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java 对象放入数组中,只是把对象的引用放入数组中,每个数组元素都是一个引用变量。

2015-04-20 17:31:46 328

转载 Java 理论与实践: 正确使用 Volatile 变量

原帖:http://www.ibm.com/developerworks/cn/java/j-jtp06197.htmlJava 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。

2015-04-15 19:28:24 292

转载 Java中的String为什么是不可变的? -- String源码分析

原文:http://www.2cto.com/kf/201401/272974.html什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他

2015-03-20 09:58:06 424

转载 Java中关于原子操作和volatile关键字

原帖:http://rwl6813021.javaeye.com/blog/349169  研究ThreadPoolExecutor的时候,发现其中大量使用了volatile变量。不知为何,因此做了一番查找,研究: 其中借鉴了很多网上资料。 在了解volatile变量作用前,先需要明白一些概念: 什么是原子操作? 所谓原子操作,就是"不可中断的一个或一系列操作"

2015-03-20 09:36:34 391

转载 Java多线程之Lock的使用

[java] view plaincopyprint?import java.util.concurrent.ExecutorService;  import java.util.concurrent.Executors;  import java.util.concurrent.Future;  import java.util.concurrent.

2015-03-20 08:59:26 417

转载 fastjson 序列化部分源码解析②

在论述完基本概念和总体思路之后,我们来到整个程序最重要的部分-性能优化。之所以会有fastjson这个项目,主要问题是为了解决性能这一块的问题,将序列化工作提高到一个新的高度。我们提到,性能优化主要有两个方面,一个如何将处理后的数据追加到数据储存器,即outWriter中;二是如何保证处理过程中的速度。    本篇从第一个性能优化方面来进行解析,主要的工作集中在类SerializeWriter

2015-02-04 10:07:07 1258 1

转载 fastjson 序列化部分源码解析①

转自:http://www.iteye.com/topic/1098058fastjson官方地址: http://code.alibabatech.com/wiki/display/FastJSON/Home    从javaeye上看到了阿里一位人士写的fastjson,特别是其中如何将java对象序列化成json字符串这段。笔者比较关注,因为在笔者的项目中就用了一个json序

2015-02-04 10:04:49 500

转载 趣说Visitor模式

假设有男人和女人两种元素,要分别打印出他们在不同状态时的不同表现。 用OO的思想把表现(行为)提取出来作为一个抽象方法,代码如下: 用if-else对状态进行判断 Person接口Java代码  public interface Person {         public void action(String state);

2015-02-04 10:01:38 417

转载 Fastjson技术内幕

原文地址:http://code.alibabatech.com/blog/dev_related_1358/fastjson-inside.htmlJSON协议使用方便,越来越流行。JSON的处理器有很多,为什么需要再写一个呢?因为我们需要一个性能很好的JSON Parser,希望JSON Parser的性能有二进制协议一样好,比如和protobuf一样,这可不容易,但确实做

2015-01-31 21:30:53 409

原创 【CSDN编程挑战】完全平方数的个数

挑战地址:http://hero.csdn.net/Question/Details?ID=608&&ExamID=603

2014-08-04 11:50:53 1259

转载 Java Map遍历方式的选择

1. 阐述  对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多。理由是:entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率。那么实际情况如何呢?  为了解遍历性能的真实差距,包括在遍历key+value、遍历key、遍历v

2013-04-10 17:14:37 846

转载 使用 Eclipse 调试 Java 程序的 10 个技巧

你应该看过一些如《关于调试的N件事》这类很流行的帖子 。假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间。由于这个原因,用这些时间来重视并了解所有使我们调试更方便的功能。那能为你省下一些时间,也将会使你的生活更安逸、轻松。同时也表明其它关于此主题的帖子也是很有价值的。第1条:不要调试太多 一个关于调试的疯狂声明作为开头。但它必须是要说的!尝试切分一下你那复杂

2013-04-10 17:06:55 495

转载 同时启动多个Tomcat服务器

(1) 修改http访问端口(默认为8080端口)         Connector   className="org.apache.coyote.tomcat4.CoyoteConnector"   port="8080"                                 minProcessors="5"   maxProcessors="75"

2012-05-17 15:09:22 396

转载 Java编程中“为了性能”尽量要做到的一些地方

1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。2. 尽量避免随意使用静

2012-04-22 20:41:37 389

转载 Hibernate Reverse Engineering 向导

Hibernate Reverse Engineering 向导Java src folder 选中映射文件, POJO 和 DAO 生成后所在的项目和源码文件夹.Java package 映射文件, POJO 和 DAO 生成后所在的包.Hibernate mapping file 从选中的表格生成映射文件.Update hibernate configuration 将生成

2012-03-03 16:44:52 4894

转载 5个在线的网站测试和验证工具

网站上线前的测试和验证是非常重要的一个环节,验证的意思是检查网站的页面和其他数据是否符合标准规范,设计规范的网站在各种浏览器上表现会一致而且良好。为了帮助你执行这些测试和验证,今天我们列表了5个在线的工具。 Pingdom ToolsPingdom Tools可以帮你分析网站的速度以及一些无法访问的元素Feed Validation Service

2012-02-21 09:41:48 2255

转载 Java堆内存的10个要点

导读:对于程序员来说,知道堆空间,设置堆空间,处理堆空间的outOfMemoryError错误,分析heap dump是非常重要的。文中介绍了Java堆的学习教程以及Java堆内存(heap memory)的十个要点。文章内容如下:我刚开始学习Java编程时,可不知道什么是堆内存或堆空间(heap space),甚至根本不管对象创建时都放在哪里去了。正式了写一些程序后,经常会遇到j

2012-02-20 17:13:11 256

转载 如何优化Java程序设计和编码提高性能

通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。AD:通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码

2012-02-14 11:12:02 394

转载 java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)

以下是从网上找到的关于堆空间溢出的错误解决办法:java.lang.OutOfMemoryError: Java heap space ===================================================使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space

2011-12-28 11:18:28 418

转载 mysql 数据类型 JAVA 类型 对照

类型名称显示长度数据库类型JAVA类型JDBC类型索引(int)描述      VARCHARL+NVARCHARjava.lang.String12 CHARNCHARjava.lang.String

2011-12-27 12:14:17 341

转载 ibatis 缓存实例

缓存,顾名思义,就是将从数据库中查询出来的数据在某个缓冲区域暂时保存起来,在需要数据的时候从该缓冲区中读取,而不是从数据库中读取,从而减少对数据库访问次数,达到减少系统开销,提高性能的目的。在本文中,我将结合实例讲述ibatis的缓存使用及相关原理。首先我们来看一个ibatis应用所需要的配置文件:(注:由于我们只关注ibatis的缓存,所以在ibatis的配置文件中我们只讨论

2011-12-26 20:20:34 497

转载 hibernate 数据库方言列表

RDBMS DialectDB2                                        org.hibernate.dialect.DB2DialectDB2 AS/400                           org.hibernate.dialect.DB2400DialectDB2 OS390

2011-12-12 16:41:37 427

转载 webwork中的action如何取HttpServletRequest和HttpServletResponse对象

方法一:  ActionContext ctx=ActionContext.getContext();  HttpServletRequest request=(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);  HttpServletResponse response=(HttpServletResponse

2011-12-07 18:04:03 936

转载 eclipse简单配置使开发更快更流畅

设置工作空间的项目编码, 防止出现乱码     Window - Preferences - General - Workspace     将"Text file encoding"选为"Other" - "UTF-8"     改变现有项目的编码的步骤: 右击项目属性, 选择"Text file encoding"的编码 设置其它文件的编码     Window ->

2011-12-07 18:03:29 464

转载 MyEclipse8.5安装SVN插件subclipse

1、从官网下载site-1.6.9.zip文件,网址是:subclipse.tigris.org, 2、从中解压出features与plugins文件夹,复制到E:\MyEclipse\myPlugin\svn里面(没有请新建此文件夹),其它的*.xml文件不要。 3、在E:\MyEclipse\MyEclipse8.5\dropins下新建文件svn.link,内容是:path=E:\\

2011-12-03 16:04:50 355

转载 如何配置compass的索引位置为相对路径

Compass是对lucene进行封装的java项目,使得在spring,hibernate这种环境下非常容易的实现全文检索,也极大的提高了效率。所以在myblog里面我也使用了compass作为全文索引。 从Compass的samples里面的petclinic里面可以找到Compass的配置。

2011-11-09 16:57:49 404

转载 好程序需要至少写两遍

导读:本文是从《Great code is written twice (or more)》这篇文章翻译而来。文章内容如下:最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在80和90年代发展形成。但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开始变得喜欢和拥抱敏捷开发。进化中的需求现在的一种普遍的认识是,在开始编码前,你不可能把所有

2011-11-01 14:16:20 251

转载 Java容器学习笔记(二) Set接口及其实现类的相关知识总结

在Java容器学习笔记(一)中概述了Collection的基本概念及接口实现,并且总结了它的一个重要子接口List及其子类的实现和用法。本篇主要总结Set接口及其实现类的用法,包括HashSet(无序不重复),LinkedHashSet(按放入顺序有序不重复),TreeSet(按红黑树方式有序不重复),EnumSet,ConcurrentSkipListSet(来自于java.util.c

2011-10-27 09:30:35 681

全国学校数据(大学,高中,技校,初中)

全国各地大学高中、技校、初中学校数据。 sql表

2012-05-07

Quartz中文教程(chm)

Quartz中文教程(chm)Quartz中文教程(chm)Quartz中文教程(chm)Quartz中文教程(chm)

2011-10-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除