自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TrendGrucee的专栏

和梦想比起来,其他的都不靠谱

  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java引用详解

一、对象可达性Java虚拟机有5个不同级别的对象的可达性。●强可达(Strongly reachable)如果一个对象可以被一些线程直接使用而不用通过其他引用对象(reference objects),那么它就是强可达。一个新创建的对象对创建它的线程来讲就是强可达的。这是我们知道并且一直在使用的引用类型(译注:通常被new出来的对象都是强可达的,他们的引用就是强引用)。任何通过强引

2014-09-08 12:28:14 4073 1

原创 Java线程池的使用

线程池的使用1.创建线程池Java线程池的实现是java.util.concurrentThreadPoolExecutor类。先看该类的构造函数,该类提供了4个构造函数,但最终都调用了参数最多的一个,也就是说如果你选择其他的构造函数,某些值会使用默认值。我们看最负责的一个构造函数:public ThreadPoolExecutor(intcorePoolSize,

2014-09-08 12:18:51 1423

翻译 Setting the classpath

1、类路径(Classpath)是java运行环境搜索类和其他资源文件的路径。调用JDK工具时,类搜索路径(class path)可以通过使用-classpath选项设置,或者通过设置CLASSPATH环境变量。应优先使用-classpath选项,因为这种设置方法是应用隔离的,不会影响其他应用。

2014-03-17 21:19:38 739

原创 《Java并发》:第五节 线程异常处理

1、异常不能跨线程传播class ExceptionThread implements Runnable { @Override public void run() { //这里只能抛运行时异常,Runnable.run不允许抛出未处理的非运行时异常 throw new RuntimeException("exception in new thread"); }}pub

2013-12-29 18:19:01 4259 1

原创 《Java并发》:第四节 线程池

1、Java中的线程池java API提供了三种线程池Executors.newCachedThreadPool(),Executors.newFixedThreadPool(.),Executors.newSingleThreadExecutor(),一般情况下我们都可以使用这里定义的线程池来完成我们的任务。2、定制线程池查看Executors.newCachedThreadPool

2013-12-29 17:20:27 676

原创 《Java并发》:第三节 创建有返回值的线程

1、使用ExecutorJava SE5的java.util.concurrent保重的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor允许你管理异步任务的执行,而无需显示管理线程的生命周期。Executor在Java SE5/6/7中是启动任务的优选方法。class LifeTest implements Runnable { @Overri

2013-12-29 16:36:30 755

原创 《Java并发》:第二节 线程的生命周期

1、先来看一个例子class LifeTest implements Runnable { @Override public void run() { while(true) { System.out.println("running..."); try { TimeUnit.SECONDS.sleep(1); } catch (Interrupte

2013-12-29 15:01:37 1946

原创 《Java并发》:第一节 并发的意义

1、更快的执行多处理器机器:将程序划分为多个片段,在单独的处理器上运行每个片段,从而可以极大的提高吞吐量。学会如何利用这些额外的处理器,正式并发赋予你的能力。单处理器机器:a.在多处理器机器上将程序划分为多个片段可以更快的执行,是很好理解。但是在单处理器机器上,就让人很迷惑了。程序A拆分成两个并发的子程序B和子程序C,你想的可能是让B和C能够同时运行,能够提高运行速度。但是在单处理器机

2013-12-29 12:02:54 850

原创 代码整洁之道

程序写出来是给人看的,附带能在机器上运行。1、Java是一种强制类型定义的语言,因此不建议使用匈牙利命名法(变量最后表示标识变量类型),在eclipse中,你只需要把鼠标在变量上悬停就可以看到变量的类型。2、只写有用的注释,尽量用代码来解释自己。3、计算函数的圈复杂度从1开始,一直往下通过程序。一旦遇到以下关键字,或其他同类词,加1(if / while / for / a

2013-12-26 19:59:45 666

原创 Java多线程编程

1、Object notify唤醒在此对象监视器上等待的单个线程。如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。选择是任意性的,并在对实现做出决定时发生。线程通过调用其中一个wait 方法,在对象的监视器上等待。直到当前线程放弃此对象上的锁定,才能继续执行被唤醒的线程。被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争;例如,唤醒的线程在作为锁定此对象的下

2013-12-14 14:30:36 556

原创 《从零搭建SSH》:第三节 集成Struts2

test

2013-11-21 21:27:27 1056

原创 《从零搭建SSH》:第二节 集成FreeMarker

1、FreeMarker简介

2013-11-16 20:51:48 3470 1

原创 《从零搭建SSH》:第一节 Web.xml

1、在自己动手写web.xml的时候,忽然不知道怎么写了,之前做开发的时候都是手动拷贝过来拷贝过去的,真自己写的时候,真不知道怎么下手了web.xml是什么?A deployment descriptor (DD) refers to a configuration file for an artifact that is deployed to some contai

2013-11-16 11:03:55 1677

原创 从零搭建SSH(一):web.xml

Struts,hibernate用习惯了,忽然要用最原始的Servlet写一个程序突然不会了。1、

2013-11-16 10:41:28 123

原创 UML

http://www.uml.org.cn/index.asp

2013-11-08 09:06:30 126

原创 Axis2(一):配置指导

Axis2中有三种配置文件来配置系统。第一个是配置全局系统(全局配置),第二个是配置一个服务(服务配置),第三个是配置一个模块(模块配置)。1、全局配置(axis2.xml)axis2.xml位于AXIS2_HOME/conf目录下面,在此文件中可以看到位于根元素下面有六个顶层元素:ParameterTransport ReceiverTransport SenderPhase

2013-11-01 00:59:17 9807

原创 webService(一):WSDL

1、准备知识XML命名空间XML命名空间为防止xml元素命名冲突提供了解决方案。命名冲突对于一个XML文件,它的元素名称是由开发者定义的。当合并不同应用的XML文档时经常会导致命名冲突。下面的XML代码一段HTML表格信息:      Apples    Bananas  下面的XML表示一张桌子的信息

2013-10-23 21:04:00 1763

原创 dojo(六):声明式语法和dojo/parser

test

2013-10-13 19:00:17 8998 1

原创 dojo(五):Dijit-基本组件

简介Dijit是Dojo的UI框架,包含一系列丰富的组件以帮助你快速开发Web程序。考虑到大部分Web页面都是表单元素(指允许用户输入的组件,通常会被传送到服务器进行处理)。Dijit有很多基于表单的组件,包括按钮、文本框、可校验文本框、进度条等等。另外,Dijit包含了一个可用的主体框架来定义Dijit的视觉效果。Dijit有四个主题:Claro,Tundra,Soria和Nihilo.

2013-10-13 15:53:48 5523 1

原创 dojo(四):ajax请求

储备知识1、在介绍新版本的ajax请求之前,需要先了解一些dojo/Deferreds。       初次听到“Deferred”这个概念,可能会觉得这是一个神秘的东西。实际上它在执行异步操作的时候非常强大,例如执行Ajax请求。简单来说,Deferred会延迟一段时间再执行某些操作;最重要的,它可以实现等待一个前置动作完成之后才执行你指定的动作。Ajax就是这样一个例子。我们希望在服务器

2013-10-12 22:20:27 7488

转载 dojo(三):样式处理

test

2013-10-12 13:01:16 8754

原创 dojo(二):事件处理

1、在正式进入dojo事件之前,先看一下如何使用dojoConfig配置dojo的行为。       有两种方式配置,第一种方式使用dojoConfig:     dojoConfig= { has: { "dojo-firebug": true }, parseOnLoad: false,

2013-10-10 22:39:56 5289 1

原创 dojo(一):创建模块

使用AMD(异步模块定义),通过向加载器注册来定义一个模块。旁白:什么是加载器?加载器实际上就是一些js代码,他们处理定义和加载模块的后台逻辑。当你加载了dojo.js或者require.js,你就获得了一个AMD加载器。加载器定义了一些和require、define全局函数合作的函数。       全局函数define允许你向加载器注册一个模块。下面我们看一些例子:

2013-10-09 21:04:43 4231

原创 Chrome调试

https://developers.google.com/chrome-developer-tools/?hl=zh-CN&csw=1怎样打开Chrome的开发者工具?你可以直接在页面上点击右键,然后选择审查元素:或者在Chrome的工具中找到:或者,你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shift+J直接打开控制台),或

2013-09-26 23:16:24 7958

原创 CSS记录

1、relative相对定位h2.pos_left{position:relative;left:-20px}h2.pos_right{position:relative;left:20px}上例中的position设置为相对定位,left则定义了定位元素左外边距边界与其包含块左边界之间的偏移2、absolute绝对定位h2.po

2013-09-24 23:44:02 579

原创 JNDI获取数据源

使用tomcat开发1、将数据源信息配置在META-INF/context.xml下面 <Resource name="grucee/datasource" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thi

2013-05-23 10:25:52 3159

翻译 证书链以及自签名证书

The digital server certificate is issued by one of a small handful of companies worldwide(each company is a known certification authority, abbreviatedCA).服务器数字证书由世界范围的少数几个公司发布(每个公司都是一个认证机构,简称CA)。

2013-04-08 14:36:22 4879

转载 Ubuntu 12.04无法正常关机

Shutdown computer using terminal in Ubuntuf you want to shutdown your computer what do you do ? Simply go to shutdown button and click shutdown isn’t? Have you ever wondered how would you shutdo

2013-02-01 12:59:26 4163 1

转载 RFC文档

RFC1 主机软件 RFC2 主机软件 RFC3 文档规范 RFC4 网络时间表 RFC6 与 Bob Kahn 会话RFC10 文档规范 RFC13 零文本长度的EOF信息 RFC16 M.I.TRFC18 IMP-IMP和主机-主机控制联接RFC19_可用来降低有限交换节点阻塞的两条协议性的建议RFC20_用于网络交换的 AS

2013-01-30 15:59:37 949

原创 JBoss事务控制

一、基础知识1、JTA,即Java Transaction API,译为Java事务API。           JTA事务比JDBC事务更强大。一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接。下列任一个Java平台的组件都可以参与到一个JTA事务中:JDBC连接、JDO PersistenceManager 对象、JMS 队列、JMS 主题、

2013-01-27 01:34:11 4832 2

原创 CGI

一、工作原理1.浏览器通过HTML表单或超链接请求指上一个CGI应用程序的URL。 2.服务器收发到请求。 3.服务器执行指定所CGI应用程序。 4.CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。 5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。 6.网络服务器把结果返回到浏览器中。  二、编程语言CGI可以

2013-01-25 14:06:22 474

原创 Socket

1、 概述        应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。       生成套接字,主要有3

2013-01-24 15:18:03 429

原创 getOutputStream() has already been called for this response

getOutputStream() has already been called for this response一、异常原因1.是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突.即Servlet规范说明,不能既调用response.getOutputStream(),又调用respon

2012-12-27 23:31:46 150

原创 Ubuntu安装

安装LINUX时,可能会出现内核错误,导致无法安装,这个时候可以在grub里面加上acpi=off noapic.一安装问题        在安装系统的时候,硬盘安装、U盘安装各种不行,后来终于好了(下面说解决方法);再后来进入系统的时候,又卡住不动了,只留一个纯色的界面让老夫如何是好,后来解决办法同安装时候的解决办法:在grub里面加上了acpi=off。并且在成功进入系统后,修改/bo

2012-12-15 15:46:27 2229

转载 Linux启动管理器

一、hd0表示什么答:一块硬盘最多只能有四个主分区。其中一个可以为扩展分区(主分区的特殊形式),扩展分区中可以有60个逻辑分区。linux表示分区,与顺序和类型有关。/dev/sda1为第一主分区/dev/sda2为第二主分区/dev/sda3为第三主分区/dev/sda4为第四主分区/dev/sda5为第一逻辑分区/dev/sda6为第二逻辑分区…

2012-12-15 13:02:48 819

转载 Win7安装Ubuntu双系统

本教程讲的是Win7下硬盘安装Ubuntu12.04双系统的方法。大家都知道,安装了双系统就有多种选择,这样不会疲劳,自己也可以随心所欲的看想要用哪个系统~。好处肯定是有的,那么下面绿茶小编带大家去看看要怎么安装。  第一步、准备工作(在win7下操作完成)  1.下载镜像文件 Ubuntu 64位(乌班图系统) v12.04.1 官方原版iso镜像

2012-12-14 23:08:36 154

原创 Memento(备忘录)模式

一、备忘录模式简介(Brief Introduction)       备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以就该对象恢复到原先保存的状态。二、解决的问题(What To Solve)       当系统功能比较复杂,而且需要记录历史属性以便当需要时做恢复动作。Originator可以根据保

2012-12-12 20:42:28 109

原创 Mediator(中介者)模式

一、中介者模式简介(Brief Introduction)中介者模式(Mediator Pattern),定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互中介者减少了各个同事对象的耦合,使得可以独立地改变和复用各个同事对象和中介者类;由于把对想如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象

2012-12-12 20:39:42 448

原创 Iterator(迭代器)模式

一、迭代器模式简介(Brief Introduction)迭代器模式(Iterator Pattern),提供一种方法顺序访问一个聚合对象中元素,而不暴露改集合对象的内部表示二、解决的问题(What To Solve)当需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,应该考虑用迭代器模式;当需要对聚集有多种方式遍历时,可以考虑使用迭代器模式三、迭代器模式分析(Anal

2012-12-10 17:02:31 420

原创 Interpreter(解释器)模式

一、解释器模式简介(Brief Introduction)解释器模式(Interpreter Pattern),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。使用了解释器模式,可以很容易地改变和扩展文法,因为该模式使用类来表示文法规则,可以使用继承来改变或扩展该文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类容易

2012-12-10 16:36:12 438

深入理解Java虚拟机--JVM高级特性与最佳实践.pdf(高清)

作为一位java程序员,你是否也曾经想深入理解java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,《深入理解java虚拟机:jvm高级特性与最佳实践》极尽化繁为简之妙,能带领你在轻松中领略java虚拟机的奥秘。《深入理解java虚拟机:jvm高级特性与最佳实践》是近年来国内出版的唯一一本与java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。 全书共分为五大部分。第一部分从宏观的角度介绍了整个java技术体系的过去、现在和未来,以及如何独立地编译一个openjdk7,这对理解后面的内容很有帮助。第二部分讲解了jvm的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见的虚拟机的监控与调试工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括class的文件结构以及如何存储和访问class中的数据;虚拟机的类创建机制以及类加载器的工作原理和它对虚拟机的意义;虚拟机字节码的执行引擎以及它在实行代码时涉及的内存结构。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、hotspot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析jit编译的数据和结果。第五部分探讨了java实现高效并发的原理,包括jvm内存模型的结构和操作;原子性、可见性和有序性在java内存模型中的体现;先行发生原则的规则和使用;线程在java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。 《深入理解java虚拟机:jvm高级特性与最佳实践》适合所有java程序员、系统调优师和系统架构师阅读。

2014-05-03

空空如也

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

TA关注的人

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