随笔分类 - JAVA技术
摘要:目录:(1)HttpClient简介(2)HttpClient功能介绍(3)HttpClient基本功能的使用(4)HttpClient使用过程中常见问题(5)HttpClient日志配置(6)HttpClient处理关闭问题(7)处理代理服务器1.HttpClient简介HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。本文首先介绍HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP协议可能是现在Internet上使用得最多、
阅读全文
摘要:ConcurrentHashMap的简要总结:1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁;2、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自的锁,ConcurrentHashMap缺省情况下生成16个Segment,也就是允许16个线程并发的更新而尽量没有锁争用;3、Iterator对象的使用,不一定是和其它更新线程同步,获得的对象可能是更新前的对象,C
阅读全文
摘要:参考文章:http://wenku.baidu.com/view/af298cea102de2bd96058826.htmlClassLoader提供了两个方法用于从装载的类路径中取得资源: public URL getResource(String name); public InputStream getResourceAsStream(String name);这两种方法在路径定义都是一样,只是获取的结果不同,下面就拿getResource来做例子:比如我们有以下目录|--project |--src |--javaapplication |--Test.java ...
阅读全文
摘要:转载至:http://www.iteye.com/topic/103804首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的对象,每个线程创建一个,不是什么对象的拷贝或副本。通过ThreadLocal.set()将这个新创建的对象的引用保存到各线程的自
阅读全文
摘要:故事是这样的,那天和同事讨论上传txt文件,如何能防止文件乱码,其间引出了如下问题:1.如何防止上传文件乱码(无论任何语言).2.用byte array&utf-8构造string,java如何判断几个byte一个中文字符.3.utf-8和unicode的区别.4.一个utf-8 string有几个char,几个byte? 随着这些问题的解决,对java和unicode,utf-8之间的关系有了更深层的认识.如何防止上传文件乱码(无论任何语言). 为了支持i18n,我们必须要求上传文件的编码是utf-8或unicode,否则无法实现全语言的支持.utf-8的文件开头会有EF BB BF
阅读全文
摘要:package com.sw.documentary.common.utils;public class GB2Alpha { //字母Z使用了两个标签,这里有27个值 //i, u, v都不做声母, 跟随前面的字母 private char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈', '击', '喀', '垃', '妈
阅读全文
摘要:public class BreakPointDownLoad { private int bufferSize = 32; public void URLLoad(String sourceUrl, String fileName) { InputStream input = null; RandomAccessFile access = null; try { // 获取资源 URL url = new URL(sourceUrl); input = url.openStream(); // 初始化存储文件 File file = new File(fileNam...
阅读全文
摘要:public class DownLoad { private int threadSize = 3; public void URLLoad(String source, String fileName) { RandomAccessFile access = null; try { // 打开连接,获取内容长度,计算每个线程下载长度 URL url = new URL(source); int sourceSize = url.openConnection().getContentLength(); int threadLoadSize = sourceSize / t...
阅读全文
摘要:java与C,c++有很大的不同就是java语言开发者不需要关注内存信息,不会显式的直接操作内存,而是通过jvm虚拟机来实现。java虚拟机运行的时候内存分配图如下图:jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。本地方法栈: 调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。pc寄存器 : 这个保存线程当前执行的字节码指令堆:主要保存创建的对象。方法区:保存class相关的信息。主要是class的一个内存结构信息常量池:方法区的一部分,主要保存class内存结
阅读全文
摘要:在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized 修饰的方法 或者 代码块。volatile用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。vola
阅读全文
摘要:public class CiferUtil { private static final char[] HEX_0X = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static String cifer
阅读全文
摘要:一、避免在循环条件中使用复杂表达式(转载来自chinaifne的java程序性能优化)在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。例子:import java.util.vector;class cel { void method (vector vector) { for (int i = 0; i 10, vector needs to expand for (int i = 0; i> 2". int div2 = a / 8; // shoul...
阅读全文
摘要:package com.text;import java.text.ParseException;import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class Text { private Timer timer = new Timer(); private int index = 0; private TimerTask timerTask = new TimerTask() { @Override public void run..
阅读全文
摘要:第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); } 效率高,以后一定要使用此种方式!第二种: Map map = new HashMap(); Iterator iter = map.keySet().iterator(); ...
阅读全文
浙公网安备 33010602011771号