J2SE
文章平均质量分 76
RayChase
博客搬家了: https://www.raychase.net/
展开
-
上传文件存入数据库或文件夹路径两种方案的实现
好了,废话少说。先把Apache Commons FileUpload下载下来。这是一个很简易的文件上传开源包。我们只看关键步骤:文件上传到服务器文件夹:package com.XXXXXX.file;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import ja原创 2008-03-27 15:01:00 · 10355 阅读 · 0 评论 -
自己尝试实现的文件上传功能,未用其他组件
今天偶然想自己实现一下文件上传功能,但又不知从何入手,于是打算走一步算一步。获得request的输入流,将其完全输出,发现里面的内容格式是类似于这样的:-----------------------------7d81853a1055aContent-Disposition: form-data; name="first"FirstPara-----------------------原创 2008-03-29 23:13:00 · 1536 阅读 · 2 评论 -
简易socket客户端和多线程服务器实现
简易socket客户端和多线程服务器实现下午时间匆忙写的,尽量简化实现。客户端:package com.XiongYi.client;import java.io.*;import java.net.*;public class Client ...{ public static void main(String[] args)throws IOException ...{原创 2008-04-02 22:37:00 · 2014 阅读 · 0 评论 -
动手实现随机验证码
动手实现随机验证码 首先,来写一个画验证码图片的Java类:package com.XiongYi.validationCode;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOExceptio原创 2008-04-11 15:40:00 · 1167 阅读 · 0 评论 -
看源码,解疑惑
看JDK源码,解疑惑 从SUN公司主页上搞下来JDK5.0的源码,可以好好研究了。开始吧。 1、Java定时器原理是怎么样的? 解包jdk_sec-1_5_0-src-jrl,在/j2se/src/share/classes/java/util中找到Timer类。private TaskQueue queue = new TaskQueue(原创 2008-09-03 21:48:00 · 1049 阅读 · 0 评论 -
HashMap还是ArrayList?
HashMap还是ArrayList,哪个速度快? ArrayList的contains方法,只会依次遍历元素,和目标元素调用equals比较; HashMap(HashSet也是通过HashMap实现的)的containsKey方法,首先算目标元素的hash值,然后算桶,再到桶里面去依次比较hash值,每个桶都是一个LinkedList; 大数据量一定是HashMap快O(1),而ArrayList是O(N)。 不过小数据量的时候,比如元素个数只有一个桶或者一个多桶的时候(默认每个桶8个元素),A原创 2011-01-10 23:08:00 · 1576 阅读 · 0 评论 -
转:强引用、软引用、弱引用和虚引用
⑴强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ⑵软引用(SoftReference) 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现原创 2011-05-29 18:30:00 · 1176 阅读 · 0 评论 -
随手记:巧妙设计,并发场景下突破常规synchronize,提高读写效率
1、Peterson 算法(Dekker算法的演化),这个算法设计得很巧妙,理解的核心就是搞清楚三个标志位是怎样控制两个方法对临界区的访问的: volatile int flag1 = 0; //主观因素:flag1表示方法1自身是否要求进入临界区 volatile int flag2 = 0; //主观因素:flag2表示方法2自身是否要求进入临界区 volatile int原创 2011-06-26 01:10:00 · 2162 阅读 · 1 评论