- 博客(68)
- 资源 (1)
- 收藏
- 关注
原创 Java引用详解
一、对象可达性Java虚拟机有5个不同级别的对象的可达性。●强可达(Strongly reachable)如果一个对象可以被一些线程直接使用而不用通过其他引用对象(reference objects),那么它就是强可达。一个新创建的对象对创建它的线程来讲就是强可达的。这是我们知道并且一直在使用的引用类型(译注:通常被new出来的对象都是强可达的,他们的引用就是强引用)。任何通过强引
2014-09-08 12:28:14
4115
原创 Java线程池的使用
线程池的使用1.创建线程池Java线程池的实现是java.util.concurrentThreadPoolExecutor类。先看该类的构造函数,该类提供了4个构造函数,但最终都调用了参数最多的一个,也就是说如果你选择其他的构造函数,某些值会使用默认值。我们看最负责的一个构造函数:public ThreadPoolExecutor(intcorePoolSize,
2014-09-08 12:18:51
1460
翻译 Setting the classpath
1、类路径(Classpath)是java运行环境搜索类和其他资源文件的路径。调用JDK工具时,类搜索路径(class path)可以通过使用-classpath选项设置,或者通过设置CLASSPATH环境变量。应优先使用-classpath选项,因为这种设置方法是应用隔离的,不会影响其他应用。
2014-03-17 21:19:38
770
原创 《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
4352
原创 《Java并发》:第四节 线程池
1、Java中的线程池java API提供了三种线程池Executors.newCachedThreadPool(),Executors.newFixedThreadPool(.),Executors.newSingleThreadExecutor(),一般情况下我们都可以使用这里定义的线程池来完成我们的任务。2、定制线程池查看Executors.newCachedThreadPool
2013-12-29 17:20:27
699
原创 《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
782
原创 《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
1971
原创 《Java并发》:第一节 并发的意义
1、更快的执行多处理器机器:将程序划分为多个片段,在单独的处理器上运行每个片段,从而可以极大的提高吞吐量。学会如何利用这些额外的处理器,正式并发赋予你的能力。单处理器机器:a.在多处理器机器上将程序划分为多个片段可以更快的执行,是很好理解。但是在单处理器机器上,就让人很迷惑了。程序A拆分成两个并发的子程序B和子程序C,你想的可能是让B和C能够同时运行,能够提高运行速度。但是在单处理器机
2013-12-29 12:02:54
881
原创 代码整洁之道
程序写出来是给人看的,附带能在机器上运行。1、Java是一种强制类型定义的语言,因此不建议使用匈牙利命名法(变量最后表示标识变量类型),在eclipse中,你只需要把鼠标在变量上悬停就可以看到变量的类型。2、只写有用的注释,尽量用代码来解释自己。3、计算函数的圈复杂度从1开始,一直往下通过程序。一旦遇到以下关键字,或其他同类词,加1(if / while / for / a
2013-12-26 19:59:45
694
原创 Java多线程编程
1、Object notify唤醒在此对象监视器上等待的单个线程。如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。选择是任意性的,并在对实现做出决定时发生。线程通过调用其中一个wait 方法,在对象的监视器上等待。直到当前线程放弃此对象上的锁定,才能继续执行被唤醒的线程。被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争;例如,唤醒的线程在作为锁定此对象的下
2013-12-14 14:30:36
574
原创 《从零搭建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
1712
原创 Axis2(一):配置指导
Axis2中有三种配置文件来配置系统。第一个是配置全局系统(全局配置),第二个是配置一个服务(服务配置),第三个是配置一个模块(模块配置)。1、全局配置(axis2.xml)axis2.xml位于AXIS2_HOME/conf目录下面,在此文件中可以看到位于根元素下面有六个顶层元素:ParameterTransport ReceiverTransport SenderPhase
2013-11-01 00:59:17
9890
原创 webService(一):WSDL
1、准备知识XML命名空间XML命名空间为防止xml元素命名冲突提供了解决方案。命名冲突对于一个XML文件,它的元素名称是由开发者定义的。当合并不同应用的XML文档时经常会导致命名冲突。下面的XML代码一段HTML表格信息: Apples Bananas 下面的XML表示一张桌子的信息
2013-10-23 21:04:00
1798
原创 dojo(五):Dijit-基本组件
简介Dijit是Dojo的UI框架,包含一系列丰富的组件以帮助你快速开发Web程序。考虑到大部分Web页面都是表单元素(指允许用户输入的组件,通常会被传送到服务器进行处理)。Dijit有很多基于表单的组件,包括按钮、文本框、可校验文本框、进度条等等。另外,Dijit包含了一个可用的主体框架来定义Dijit的视觉效果。Dijit有四个主题:Claro,Tundra,Soria和Nihilo.
2013-10-13 15:53:48
5583
1
原创 dojo(四):ajax请求
储备知识1、在介绍新版本的ajax请求之前,需要先了解一些dojo/Deferreds。 初次听到“Deferred”这个概念,可能会觉得这是一个神秘的东西。实际上它在执行异步操作的时候非常强大,例如执行Ajax请求。简单来说,Deferred会延迟一段时间再执行某些操作;最重要的,它可以实现等待一个前置动作完成之后才执行你指定的动作。Ajax就是这样一个例子。我们希望在服务器
2013-10-12 22:20:27
7548
原创 dojo(二):事件处理
1、在正式进入dojo事件之前,先看一下如何使用dojoConfig配置dojo的行为。 有两种方式配置,第一种方式使用dojoConfig: dojoConfig= { has: { "dojo-firebug": true }, parseOnLoad: false,
2013-10-10 22:39:56
5322
原创 dojo(一):创建模块
使用AMD(异步模块定义),通过向加载器注册来定义一个模块。旁白:什么是加载器?加载器实际上就是一些js代码,他们处理定义和加载模块的后台逻辑。当你加载了dojo.js或者require.js,你就获得了一个AMD加载器。加载器定义了一些和require、define全局函数合作的函数。 全局函数define允许你向加载器注册一个模块。下面我们看一些例子:
2013-10-09 21:04:43
4268
原创 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
8215
原创 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
616
原创 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
3190
翻译 证书链以及自签名证书
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
4931
转载 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
4262
转载 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
988
原创 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
4893
1
原创 CGI
一、工作原理1.浏览器通过HTML表单或超链接请求指上一个CGI应用程序的URL。 2.服务器收发到请求。 3.服务器执行指定所CGI应用程序。 4.CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。 5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。 6.网络服务器把结果返回到浏览器中。 二、编程语言CGI可以
2013-01-25 14:06:22
496
原创 Socket
1、 概述 应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。 生成套接字,主要有3
2013-01-24 15:18:03
449
原创 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
167
原创 Ubuntu安装
安装LINUX时,可能会出现内核错误,导致无法安装,这个时候可以在grub里面加上acpi=off noapic.一安装问题 在安装系统的时候,硬盘安装、U盘安装各种不行,后来终于好了(下面说解决方法);再后来进入系统的时候,又卡住不动了,只留一个纯色的界面让老夫如何是好,后来解决办法同安装时候的解决办法:在grub里面加上了acpi=off。并且在成功进入系统后,修改/bo
2012-12-15 15:46:27
2345
转载 Linux启动管理器
一、hd0表示什么答:一块硬盘最多只能有四个主分区。其中一个可以为扩展分区(主分区的特殊形式),扩展分区中可以有60个逻辑分区。linux表示分区,与顺序和类型有关。/dev/sda1为第一主分区/dev/sda2为第二主分区/dev/sda3为第三主分区/dev/sda4为第四主分区/dev/sda5为第一逻辑分区/dev/sda6为第二逻辑分区…
2012-12-15 13:02:48
864
转载 Win7安装Ubuntu双系统
本教程讲的是Win7下硬盘安装Ubuntu12.04双系统的方法。大家都知道,安装了双系统就有多种选择,这样不会疲劳,自己也可以随心所欲的看想要用哪个系统~。好处肯定是有的,那么下面绿茶小编带大家去看看要怎么安装。 第一步、准备工作(在win7下操作完成) 1.下载镜像文件 Ubuntu 64位(乌班图系统) v12.04.1 官方原版iso镜像
2012-12-14 23:08:36
185
原创 Memento(备忘录)模式
一、备忘录模式简介(Brief Introduction) 备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以就该对象恢复到原先保存的状态。二、解决的问题(What To Solve) 当系统功能比较复杂,而且需要记录历史属性以便当需要时做恢复动作。Originator可以根据保
2012-12-12 20:42:28
122
原创 Mediator(中介者)模式
一、中介者模式简介(Brief Introduction)中介者模式(Mediator Pattern),定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互中介者减少了各个同事对象的耦合,使得可以独立地改变和复用各个同事对象和中介者类;由于把对想如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象
2012-12-12 20:39:42
477
原创 Iterator(迭代器)模式
一、迭代器模式简介(Brief Introduction)迭代器模式(Iterator Pattern),提供一种方法顺序访问一个聚合对象中元素,而不暴露改集合对象的内部表示二、解决的问题(What To Solve)当需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,应该考虑用迭代器模式;当需要对聚集有多种方式遍历时,可以考虑使用迭代器模式三、迭代器模式分析(Anal
2012-12-10 17:02:31
446
原创 Interpreter(解释器)模式
一、解释器模式简介(Brief Introduction)解释器模式(Interpreter Pattern),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。使用了解释器模式,可以很容易地改变和扩展文法,因为该模式使用类来表示文法规则,可以使用继承来改变或扩展该文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类容易
2012-12-10 16:36:12
479
深入理解Java虚拟机--JVM高级特性与最佳实践.pdf(高清)
2014-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人