
java
文章平均质量分 74
Snoopy7713
这个作者很懒,什么都没留下…
展开
-
Java多线程发展简史
转自:http://www.raychase.net/?p=698 这篇文章,大部分内容,是周五我做的一个关于如何进行Java多线程编程的Knowledge Sharing的一个整理,我希望能对Java从第一个版本开始,在多线程编程方面的大事件和发展脉络有一个描述,并且提及一些在多线程编程方面常见的问题。对于Java程序员来说,如果从历史的角度去了解一门语言一个特性的演进,或许能有...原创 2012-09-16 14:25:35 · 180 阅读 · 0 评论 -
java使用代理访问网络的几种方法
方法一使用系统属性来完成代理设置, 这种方法比较简单, 但是不能对单独的连接来设置代理: public static void main(String[] args) { Properties prop = System.getProperties(); // 设置http访问要使用的代理服务器的地址 prop...原创 2011-11-24 16:42:49 · 123 阅读 · 0 评论 -
获取格林尼治时间
获取格林尼治时间 // JAVA获取世界标准时间:格林尼治时间SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");sdf.setTimeZone(TimeZone.getTimeZone("Etc/Greenwich"));String greenwichTimeStr = sdf.for...原创 2011-11-18 08:27:27 · 331 阅读 · 0 评论 -
JAVA各种时间类型的取得
package com.hello.test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.ut...原创 2011-11-16 09:17:08 · 111 阅读 · 0 评论 -
byte[]转化成其他数据类型
Java与其他语言数据类型之间的转换方法实例程序/*** * 通信格式转换** Java和一些windows编程语言如c、c++、Delphi所写的网络程序进行通讯时,需要进行相应的转换* 高、低字 * * 节之间的转换* windows的字节序为低字节开头温馨提示:您正在浏览的是 Java与其他语言数据类型之间的转换方法 的内容,您可 * * 以在下面的搜索框中搜索到...原创 2012-05-14 16:41:50 · 289 阅读 · 0 评论 -
java中byte转换int时为何与0xff进行与运算
java中byte转换int时为何与0xff进行与运算 在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[ i ]...原创 2012-05-14 16:39:29 · 112 阅读 · 0 评论 -
java整型数与网络字节序的 byte[] 数组转换关系
工作项目需要在java和c/c++之间进行socket通信,socket通信是以字节流或者字节包进行的,socket发送方须将数据转换为字节流或者字节包,而接收方则将字节流和字节包再转换回相应的数据类型。如果发送方和接收方都是同种语言,则一般只涉及到字节序的调整。而对于java和c/c++的通信,则情况就要复杂一些,主要是因为java...原创 2012-05-14 16:31:07 · 231 阅读 · 0 评论 -
java多线程总结六:经典生产者消费者问题实现
这是个线程同步的经典例子,源代码如下:package demo.thread;/** *经典生产者与消费者问题:生产者不断的往仓库中存放产品,消费者从仓库中消费产品。 *其中生产者和消费者都可以有若干个。仓库容量有限,库满时不能存放,库空时不能取产品 */public class ProducersAndConsumers { public static ...原创 2011-11-07 11:33:04 · 115 阅读 · 0 评论 -
JAVA NIO
jdk1.4 开始引入了新IO类,NIO包的目的是为了提高IO的效率。缓冲区Buffer:缓冲区的优点我就不多介绍了。拥有3个属性:(1)容量:一个缓冲区最多容量。(2)界限:一个缓冲区可读写的范围。(3)位置:接下来要读写的位置。界限是用来控制当前读写的范围,如果容量为100,界限为10,则位置只能在0-10之间,即只能读写0-10之间的数据提供了三个方法改变属性...原创 2012-01-21 15:15:00 · 88 阅读 · 0 评论 -
package、jar和访问控制
包在java中没有不属于包的类,因此在真正的开发中必须要让每个类文件存放在包中。javac -d . PackageDemo01.java 自动打包,并生成包层次java org.xiazdong.PackageDemo01 执行,加上包名称。import 包名称.子包名称.类名称;import 包名称.子包名称.*;import static 包.类.*;...原创 2012-01-21 15:14:50 · 86 阅读 · 0 评论 -
Timer和TimerTask详解
以下内容根据 The JavaTM Tutorial 和相关API doc翻译整理,以供日后参考:1.概览Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。简单的一个例程: import java.util.Timer;import j...原创 2012-01-20 08:41:52 · 135 阅读 · 0 评论 -
PrintWriter、PrintStream的苦头 ------ 缓冲区问题
由于PrintWriter的简便性,即只需要print()语句即可输出任何内容,因此用到这个类的次数非常多,但是我经常会忽视在构造方法中:new PrintWriter(new FileOutputStream(),true);如果没有加这个true,后果非常匪夷所思。。。不仅在文件流的操作,而且在网络编程Socket时,也会通过PrintWrite...原创 2012-01-20 08:37:25 · 111 阅读 · 0 评论 -
Servlet 3.0 新特性详解
Servlet 3.0 新特性概览 1.Servlet、Filter、Listener无需在web.xml中进行配置,可以通过Annotation进行配置;2.模块化编程,即将各个Servlet模块化,将配置文件也分开配置。3.Servlet异步处理,应对复杂业务处理;4.异步Listener,对于异步处理的创建、完成等进行监听;5. 文件上传API简化; to...原创 2012-01-20 08:30:00 · 85 阅读 · 0 评论 -
跨平台获取java进程id(Process ID in Java)
对于不同平台,获取java进程id有不同的方法,这个做一个总结,写一个工具类。这个工具主要进行两种尝试来获得pid:从 java.lang.management.RuntimeMXBean获得从操作系统获得windows系统非windows系统工具代码:Java代码 /** * Process ID in Jav...原创 2012-01-19 10:58:50 · 140 阅读 · 0 评论 -
正则表达式的元字符匹配
正则表达式-元字符. 匹配任意单个字符* 出现0或多次+ 出现一或多次? 出现0或一次[] 匹配[]中的字符出现一次[0-9] [a-zA-Z]() 改变正则优先级 (zo)+ zo出现1或多次| 表示'或' z|food 匹配z或food (z|f)ood 匹配 zood或food{n} 出现n次{n,} 至少出现n次,最多不限{n,m...原创 2012-01-13 08:05:56 · 138 阅读 · 0 评论 -
Java进行HTML数据采集:浅谈强大的group正则
简 介作为全球运用最广泛的语言,Java 凭借它的高效性,可移植性(跨平台),代码的健壮性以及可强大的可扩展性,深受广大应用程序开发者的喜爱. 作为一门强大的开发语言,正则表达式在其中的应用当然是必不可少的,而且正则表达式的掌握能力也是那些高级程序员的开发功底之体现,做一名合格的网站开发的程序员(尤其是做前端开发),正则表达式是必备的。最近,由于一些需要,用到了java...原创 2012-01-09 08:26:05 · 144 阅读 · 0 评论 -
java 利用label标记退出多重循环
学过C语言的都知道,有个goto关键字,利用goto关键字可以跳出多重循环或跳到某个运行点。 java中保留了goto关键字,但是没有goto的功能,主要是考虑到安全性吧。不过java跳出多重循环我们可以使用label标记,在多重循环的最外面一个循环前加上label: ,在需要的跳出的地方写break label就OK了,需要说明这里的label也可以换成其他的单词,只要符合java的标示符就OK...原创 2012-01-01 19:24:14 · 162 阅读 · 0 评论 -
Java并发编程:守护线程
所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。下面,让我们来继续深入了解守护线程。 在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemon Thread)。所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职...原创 2012-01-01 19:23:40 · 119 阅读 · 0 评论 -
java内存分配机制
通过这几天对一个内存溢出程序的监控,学习了程序运行时对内存的使用机制,在这里和大家分享下。 Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM...原创 2012-06-13 12:52:04 · 232 阅读 · 0 评论 -
java 处理文件路径中的空格
问题背景:windows下有个目录名称Program Files中间有空格。java读取的时候变成%20.代码却没有处理---------------------------------------------------------------String path=Parameter.class.getResource("").getPath();//得到路径...原创 2012-06-13 12:57:00 · 121 阅读 · 0 评论 -
【解惑】深入jar包:从jar包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码:Java代码 //源代码1: package edu.hxraid; import java.io.*; ...原创 2012-06-13 13:02:30 · 102 阅读 · 0 评论 -
Java编码易疏忽的十个问题
在Java编码中,我们容易犯一些错误,也容易疏忽一些问题,因此笔者对日常编码中曾遇到的一些经典情形归纳整理成文,以共同探讨。1. 纠结的同名现象很多类的命名相同(例如:常见于异常、常量、日志等类),导致在import时,有时候张冠李戴,这种错误有时候很隐蔽。因为往往同名的类功能也类似,所以IDE不会提示warn。解决写完代码时,扫视下import部分,看看有没有不熟悉的...原创 2012-09-06 08:52:54 · 140 阅读 · 0 评论 -
网络编程
计算机网络基础什么是计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大,功能强的网络系统,从而使众多的计算机可以方便的相互传递信息,共享硬件,软件,数据信息等资源.计算机网络的主要功能资源共享信息传输与集中处理均衡负荷与分布处理综合信息服务计算机网络分类按规模大...原创 2012-09-04 13:30:23 · 116 阅读 · 0 评论 -
获取Java程序运行的路径 | 获取当前jar包的路径
经过试验,不管是否是Jar包,不管是否是Tomcat部署,以下三个方法均可实现。 package test; public class MyPath { public static String getProjectPath() { java.net.URL url = MyPath.class.g...原创 2012-09-04 11:55:37 · 131 阅读 · 0 评论 -
Log4j 把不同包的日志打印到不同位置
需要的包和测试的代码下载附件! 如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个 Appender的日志级别、打印形式、输出位置! 配置log4j.properties文件如下:Java代码 ############################################################...原创 2012-11-29 08:23:09 · 324 阅读 · 0 评论 -
利用 Base64 缩短 UUID 至22位
UUID还是比较常用的,尤其在web应用里。有时在URL中传播,感觉比较长,于是想对其进行缩短,查询了一些资料,发现目前最短是到 22 位(使用URL传播非转义字符,结合Base64) 废话少说,代码奉上:Java代码 public class UuidBase64ShortMap implements StringSh...原创 2012-04-15 18:57:33 · 1340 阅读 · 0 评论 -
java的concurrent用法详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全...原创 2012-08-03 11:28:38 · 111 阅读 · 0 评论 -
图解Java中的值传递与引用传递(更新版)
编程的人,都会遇到值传递与引用传递的困惑,不过很快都会迎刃而解。本文通过图文并茂的形式,解释Java的值传递与引用传递。并且会通过String这个特殊的类,进一步加深您的对值传递与引用传递的印象。 声明:为了图解方便,图中的术语不精确、甚至是“自创的”,请不要把图中的概念与JVM或者真正的内存相结合,只是为了说明方便!! 防止误解。 说明: 图的标号在图的下方;...原创 2012-04-09 12:49:23 · 133 阅读 · 0 评论 -
AWT Swing SWT JFace GWT 简介与比较
AWT Abstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包。在任何一个 Java 运行环境中都可以使用它。AWT 是一个非常简单的具有有限 GUI 组件、布局管理器和事件的工具包.有些经常使用的组件,例如表、树、进度条等,都不支持。 ...原创 2012-03-15 13:49:38 · 610 阅读 · 0 评论 -
Java Double-Checked Locking 已死,C++ 呢?
已经有众多文章讨论 double-checked locking 模式在 Java 下面无法正常工作,这里先简要的总结一下。根本原因在于 Java 的 memory model 允许所谓的 out-of-order write ,对于下面的 Java 代码,out-of-order write 可能导致灾难性的结果public static Singleton getInstance()...原创 2012-03-10 17:11:08 · 125 阅读 · 0 评论 -
JDK内置工具使用
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 Tool)五、j...原创 2012-03-07 08:24:48 · 111 阅读 · 0 评论 -
一个例子全部说明java泛型中的K,V,T,E,?,object的意思及其用法
1.意思 jdk中的K,V,T,E等泛型名称很多人以为是固定写法,其实这些名称是可以改的,比如改成zhangsan,lisi都可以,jdk为了容易看懂,所以用K表示键,V表示值,T表示type类型,E表示enum枚举,其实这四个都只是符号,都是表示泛型名称,下面的例子的T全部可以换成E,也可以换成K,V,zhangsan,都没关系。 ? 表示不确定的类型 Object java...原创 2013-03-07 11:09:16 · 1148 阅读 · 0 评论 -
Java程序员必知的8大排序
8种排序之间的关系: 1, 直接插入排序(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例(3)用java实现...原创 2012-07-05 09:56:04 · 126 阅读 · 0 评论 -
Comparator与Comparable的区别
当需要排序的集合或数组不是单纯的数字类型的时候,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。Comparator和Comparable的区别如下:Comparable用在对象本身,说明这个对象是可以被比较的,也就是说可以被排序的。(String和Integer之所以可以比较大小,是因为它们都实现了Comparable接口,并实现了com...原创 2012-07-05 08:38:50 · 91 阅读 · 0 评论 -
RSA算法Java实现
Java代码 package com.hexun.blog.dongliwei.utils; import javax.crypto.Cipher; import java.security.*; import java.security.spec.RSAPublicKeySpec; impo...原创 2012-06-27 08:22:51 · 135 阅读 · 0 评论 -
队列阻塞浅析
这几天所做的项目中涉及到了队列阻塞机制,通过研究整理如下。在这里和大家分享。 队列以一种先进先出的方式。如果你向一个已经满了的阻塞队列中添加一个元素,或是从一个空的阻塞队列中移除一个元素,将导致线程阻塞。在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可以定期的把中间结果存到阻塞队列中。而其他工作者线程把中间结果取出并在将来修改它们。队列会自动平衡负载。...原创 2012-06-17 18:10:05 · 112 阅读 · 0 评论 -
JAVA进阶:VO(DTO)与PO(DAO)之间的转换
PO即 Persistence Object VO即 Value Object VO和PO的主要区别在于: VO是独立的Java Object。 PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。 实际上,这个VO被用作Data Transfer Objec...原创 2011-12-06 16:39:57 · 1245 阅读 · 0 评论 -
Java面试过程中会遇到的问题
1、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!abstract的method 不可以是native的,native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子...原创 2012-06-13 13:04:06 · 200 阅读 · 0 评论 -
解决Hibernate +jxl将大批量excel导入数据库,内存溢出
在将excel中的10w行数据导入数据库中时,总发生内存溢出,一开始使用的Spring+Hibernate;不知如何使用批处理,后来只是用Hibernate,10W行数据几分钟完成,代码如下: public static void main(String[] args) { // TODO Auto-generated method stub String filePa...原创 2012-01-01 19:23:15 · 229 阅读 · 0 评论 -
file的getPath getAbsolutePath和getCanonicalPath的不同
file的getPath getAbsolutePath和getCanonicalPath的不同 file的这几个取得path的方法各有不同,下边说说详细的区别概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别试中文版,英文版稍好些)所以在概念之后我会举例说明。如果感觉看概念很累就跳过直接看例子吧。看完例子回...原创 2011-12-28 08:16:59 · 83 阅读 · 0 评论