转:用HttpClient来模拟浏览器GET POST - jaddy0302
一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交 一些数据等等。所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要认证以及是一些通过加密方式传输,例如HTTPS。目前 我们使用的浏览器处理这些情况都不会构成问题。不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中“偷”一些数据;利用某些站点 提供的页面来完成某种功能,例如说我们想知道某个手机号码的归属地而我们自己又没有这样的数据,因此只好借助其他公司已有的网
转:Java添加水印(图片水印,文字水印)
JAVA/JSP在图片中添加文字或在图片中添加图片.[@more@] import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder; public final class ImageUtils { public ImageUtils() { } /**//* * public final static String getPressImgPath() { return Application
synchronized关键字 - [JAVA心得]
Java对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized关键字就可以轻松地解决多线程共享数据同步问题。到底如何?――还得对synchronized关键字的作用进行深入了解才可定论。 总的说来,synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。 在进一步阐述之前,我们需要明确几点: A.无论synchronized关键字加在
Starvation in java
Continued the article of Livelock in java, now I will demonstrate a example of starvation in java.Starvation and livelock are much less common a problem than deadlock, but are still problems that every designer of concurrent software is likely to encounter. StarvationStarvation describes a situation where a thread is unable to gain regular access to shared resources and is unable to make progress. This happens when shared resources are made unavailable for long periods by "greedy" thre
转:JDK1.5新语法
1 - 泛性编程ArrayList<String> list = new ArrayList<String>();list.add(new String("Hello!"));System.out.println(list.get(0));2 - 自动装箱/拆箱ArrayList list = new ArrayList();Integer number = new Integer(10); //先要把数字弄进包装类list.add(number);[@more@]//然后想要取出这个数字也极其麻烦,看看这个式子,晕啊!int i = ((Integer)list.get(0)).intValue();ArrayList<Integer> list = new ArrayList<Integer>();list.add(10);int i = list.get(0);3 - 增强的循环结构呵呵,这可是
JPA是什么?
Java Persistence API JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;其二,Sun希望整合对ORM技术,实现天下归一。 JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它不囿于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。目前
Livelock in java
Recently I read the chapter of concurrency in the book of <<The Java Tutorial>>. It mentions the concurency problems of starvation and livelock, which are much less common a problem than deadlock, but problems that every designer of concurrent software is likely to encounter.Then I tried to find out some code snippet example of starvaton and livelock, but unexpectedly, there is not any code snippet at all from the top2 result pages returned by goggle and baidu search engine. Therefor
转:Java中使用Runtime和Process类运行外部程序
Java中使用Runtime和Process类运行外部程序使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序。1. exec(String command)2. exec(String command, String envp[], File dir)3. exec(String cmd, String envp[])4. exec(String cmdarray[])5. exec(String cmdarray[], String envp[])6. exec(String cmdarray[], String envp[], File dir)一般的应用程序可以直接使用第一版本,当有环境变量传递的时候使用后面的版本。其中2和6版本可以传递一个目录,标识当前目录,因为有些程序是使用相对目录的,所以就要使用这个版本。cm
转:java Too many open files打开的文件过多
问题描述以下两个堆栈跟踪指示同一个问题并报告相同的消息:打开的文件过多丅异常 1 java.net.SocketException: Too many open filesat java.net.PlainSocketImpl.accept(Compiled Code) at java.net.ServerSocket.implAccept(Compiled Code) at java.net.ServerSocket.accept(Compiled Code) at weblogic.t3.srvr.ListenThread.run(Compiled Code) 异常 2java.io.IOException:打开的文件过多at java.lang.UNIXProcess.forkAndExec(Native Method)at java.lang.UNIXProcess.(UNIXProcess.java:54)at java.lang.UNIXProcess.forkAndExec(N
转:ArrayList:用Set代替contains
在前面的一篇讨论中已经指出了ArrayList的contains方法也是效率比较低的,应该尽量避免使用它!这里有一个很实际的问题,就是已经有一个ArrayList,我要除去其中相同的元素,也就是希望得到一个不存在重复元素的List!这里同样使用两种方法:1.生成一个新的ArrayList,添加之前看是否包含。2.直接利用HashSet(HashMap的一个视图),然后返回一个ArrayList。[@more@]public class Test { private static List testContains(List l) { List list = new ArrayList(100); for (int i = 0; i < l.size(); i++) { Object o = l
转:经典String str = new String("abc")内存分配问题
简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个
转:Java同步技术 (一)
本文版权归作者Ian Gao所有,如有转载请与作者联系并注明出处http://blog.csdn.net/Iangao/archive/2008/10/09/3041265.aspx。 一、基本同步原理 1.1 同步机制(synchronize mechanism)1.1.1 同步 多线程开发过程中,我们经常会提到同步这个词,那么什么是同步呢?为什么会存在同步问题呢?我们知道一个多线程应用系统在操作系统的进程(线程)机制下可以同时有多个进程(线程)并发运行,这此进程(线程)要完成的任务可能是互不相关的,但也可能是有联系的。那么当一个进程(线程)要和另一个进程(线程)交流信息时同步就有可能发生了
转:Java同步技术
Java同步技术文/ Iangao 2008.10.9一基本同步原理1. .基本同步原理2. 信号量(Semphore)二. 高级同步技术1. 事件(Event)2. 管程(Monitor)与条件变量(Condition)3. 信号量、事件以及条件变量之间异同三. 经典同步问题1. 有限缓冲区(生产者-消费者)问题2. 经典同步问题 - 读写问题(Reader-Writer)四. 常用线程解决方案1.定时器2 对已有方法的同步或异步调用 - BlockingCall 附录:1.一个简单的多线程测试类[@more@]参考资料:《操作系统(第3版)》, (美)Gary Nutt, 译: 罗宇、吕顾等. 机械工业出版社 《Java编程思想(第3版)》,(美)Brucel Eckel
转:Java String中的HashCode和Equal
Java String中的HashCode和Equal 文/Iangao 2008.11.21 16:53 1. hashSet中比较是否重复的依据是a.hasCode()=b.hasCode() && a.equals(b)2. String的hashCode依据: 以依赖于char[i]的int值以和char[i]的排列序的算法计算出的.不依赖String的ref.3. String的equals依据: a==b || ( a.length=b.length && { a[i]=b[i] } )4. 只有用a==b时比校的才是比校的ref,也就是说这时才是比校是a与b是不是同一个对象[@more@]5. 结论: 两个不同ref(引用)的String可能会被认为是集合中的同一个元素.本文来自CSDN博客,转载请标明出处:
转:Java中的HashSet, TreeSet, HashMap, TreeMap
Java中的HashSet和TreeSet 文/ Iangao 一. 问题 1. HashSet,TreeSet是如何使用hashCode()和equal()方法的 2. TreeMap,TreeSet中的对象何时以及为何要实现Comparable接口? 二. 回答:1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个有序性.3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可. a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的. b. hash表中的一个索引处存放
转:JDK1.4非阻塞套接字API概述
J2SE 1.4版引入了非阻隔套接字(Nonblocking sockets),它允许在网络通信应用程序和没有阻隔的进程中使用套接字。本文将详细介绍什么是非阻隔套接字(Nonblocking sockets)及其工作原理和用途。 从Java 1.4起,程序员便能用一组新的API来进行I/O操作。这是JSR 51项目的结果,自2000年1月的Java 1.4 beta版,程序员便可以使用JSR 51了。在Java 1.4中增加了一些非常重要的新技术来处理诸如在文件和套接字上进行高性能的读/写操作,正规表达式,译码/编码字符集,内存映射和文件锁定。在这篇文章中,我们将讨论一个特殊的新API――New I/
转:java应用 tomcat中实现https安全连接的方法
SSL, 或者Secure Socket Layer,是一种允许web浏览器和web服务器通过一个安全的连接进行交流的技术。这意味着将被发送的数据在一端被翻译成密码,传送出去,然后在另一端解开密码,再进行处理。这是一个双向的过程,也就是浏览器和服务器都需要在发送数据之前对它们进行加密。 [@more@]SSL协定的另一个重要方面是认证(Authentication)。这就是说,在你开始试图通过一个安全连接与一个web服务器交流的时候,这个服务器会要求你的浏览器出示一组证件,通过“鉴定”的方式来证明这就是你所声明的网站。 在某些情况下,服务器还会要求你的web浏
Java 同步机制浅谈
Java对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized关键字就可以轻松地解决多线程共享数据同步问题。到底如何?――还得对synchronized关键字的作用进行深入了解才可定论。总的说来,synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。A.无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把 一段代
转:使用基本认证从WebServer获取数据
转:使用基本认证从WebServer获取数据 [@more@]/** * This class sends request to the specified URL and reads the response. * * Uses basic authentication to authenticate with the Server and writes the * request to the specified URL. Response can be either be read as an Object or * as BinaryStream or as AsciiStream. * */ public class ServletUtils { private static final int BUFFSIZE = 4 * 1024; // buffer size - 4K /** * Default Constructor. */ public ServletUtil
转:基础知识:检测线程是否结束的方法收藏
检测线程是否结束的方法收藏 [@more@]Package net.java2000.lang; /** * 检测线程是否结束的方法。 * * @author 赵学庆,Java世纪网(java2000.net) * */ public class ThreadDetermingFinish { public static void main(String[] args) { // 创建并启动线程 MyThreadToDeterming thread = new MyThreadToDeterming(); thread.start(); // 非阻塞的方式检测线程是否完成 if (thread.isAlive()) { System.out.println("线程在运行中"); } else { System.out.println("线程已经结束")