java
文章平均质量分 83
Only鱼籽酱
独立开发者,全栈工程师,写作爱好者,产品设计师。技术研究领域包括Android、iOS、React、NodeJs、Flutter。期望生活、娱乐、产品、技术完美结合。
展开
-
FileUtils
Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了。如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归。 下面是的一个解决方案,借助Apache Commons IO工具包(commons-io-1.1.jar)来简单实现文件(夹)的复制、移动、删除、获取大小等操作。 import org.apac转载 2012-08-27 18:20:10 · 1085 阅读 · 0 评论 -
Java正则表达式的解释说明
正则表达式30分钟入门教程 http://manual.phpv.net/regular_expression.html 表达式意义:1.字符x 字符 x。例如a表示字符a\\ 反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又转载 2012-08-27 19:58:23 · 1063 阅读 · 0 评论 -
Drawable 基本用法
1.相关对象a.Rect类:主要用于储存长方形四条边的长度Rect rect = new Rect();Rect rect1 = new Rect(0, 0, 50, 50);//相对于绘制点,指定左上右下四个方向的长度坐标Rect rect2 = new Rect(rect); rect.centerX();rect.centerY();//返回X和Y的中原创 2012-09-02 17:24:02 · 2734 阅读 · 0 评论 -
ArrayList基本用法
Java中ArrayList类的用法1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小2、如何使用ArrayList 最简单的例子: ArrayList List = new Arr转载 2012-10-06 11:12:55 · 1173 阅读 · 0 评论 -
ArrayList和LinkedList区别
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因转载 2012-10-06 11:57:27 · 2614 阅读 · 1 评论 -
JAVA集合类框架
为什么要使用集合类当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。理解集合类集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(转载 2012-10-06 12:10:22 · 1301 阅读 · 0 评论 -
ThreadGroup基本用法
①定义线程组 ThreadGroup类中有 2个构造方法,它们用来定义线程组。这 2个构造方法的使用格 式如下: public ThreadGroup(String name); public ThreadGroup(ThreadGroup parent,String name); 比如,创建一个名为fruit的线程组k,可用如下语句:转载 2012-10-06 10:27:52 · 10855 阅读 · 0 评论 -
Java 线程池
Reference: 《创建Java线程池》[1],《Java线程:新特征-线程池》[2], 《Java线程池学习》[3],《线程池ThreadPoolExecutor使用简介》[4],《Java5中的线程池实例讲解》[5],《ThreadPoolExecutor使用和思考》[6][1]中博主自己通过ThreadGroup实现一个线程池(挺方便理解的),使用的是jdk1.4版本,Jdk转载 2012-10-04 11:53:33 · 577 阅读 · 0 评论 -
ThreadGroup和ExecutorService
用java做抓取的时候免不了要用到多线程的了,因为要同时抓取多个网站或一条线程抓取一个网站的话实在太慢,而且有时一条线程抓取同一个网站的话也比较浪费CPU资源。要用到多线程的等方面,也就免不了对线程的控制或用到线程池。 我在做我们现在的那一个抓取框架的时候,就曾经用过java.util.concurrent.ExecutorService作为线程池,关于ExecutorService的使用代码转载 2012-10-06 10:23:53 · 1430 阅读 · 0 评论 -
ArrayList排序
以下前三个代码都是通过实现Comparable接口,或是实例化一个比较器,虽然重点部分重复了,也各有不同,还是都贴上吧。 http://zhidao.baidu.com/question/97784478java如何对ArrayList中对象按照该对象某属性排序 增加排序功能,打印时:输出学生对象的时候,需要先按照年龄排序,如果年龄相同,则按照姓名排序,如果姓名也转载 2012-10-06 11:15:57 · 1905 阅读 · 0 评论 -
Array基本用法
js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^var arr = new Array();arr[0] = "aaa";arr[1] = "bbb";arr[2] = "ccc";//alert(arr.length);//3arr.pop();//alert(arr.length);//2//alert(arr[arr转载 2012-10-06 11:42:26 · 855 阅读 · 0 评论 -
Java中Array与ArrayList的主要区别
1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”。2)Array([]):最高效;但是其容量固定且无法动态改变; ArrayList: 容量可动态增长;但牺牲效率;3)建议:基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList!不过当你试着解决更一般化的问题时,Array的功能就可能过于受限转载 2012-10-06 11:43:36 · 1755 阅读 · 0 评论 -
LinkedList基本用法
LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.LinkedList的构造函数如下1. public LinkedList(): ——生成空的链表2. public LinkedList(Collection col): 复制构造函数1、获取链表的第一个和最后一个元素[java] view plaincopy转载 2012-10-06 11:50:02 · 216948 阅读 · 22 评论 -
ServerSocket 与 Socket的区别
1.1 ServerSocket类 创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如: ServerSocket MyListener=new ServerSocket(600); 这里指定提供监听服务的端口是600,一台计算机可以同时提供多个服务,这些不同的服务之间通过端口号来区别,不同的端口号上提供不同的服务。为了随时监转载 2012-10-06 18:26:17 · 992 阅读 · 0 评论 -
ConcurrentHashMap基本用法
ConcurrentHashMapConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。ConcurrentHas转载 2012-10-07 11:49:53 · 13078 阅读 · 3 评论 -
Java观察者模式 java.util.Observable 与 java.util.Observer 的理解
在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。例如在文档/视图结构中,文档被修改了,视图就会得到通知。 java.util.Observable中有两个方法对Observer特别重要,一个是setCha转载 2012-08-26 11:08:06 · 780 阅读 · 0 评论 -
Thread,Looper,Handler,Message,MessageQueue之间的关系
多线程与异步Main Thread & UI Thread当程序启动的时候Android会自动创建一个进程和一个线程,这个线程负责界面更新,收集系统事件和用户的操作事件等并分配给对应的组件,所以这个线程非常重要 被称为主线程,因为所的和UI有关的操作都是在这个线程当中进行的所以也被称作UI线程。所以说默认情况下主线程和UI线程指的是同一个线程。For instance, when th转载 2012-10-08 21:06:43 · 773 阅读 · 0 评论 -
Thread.interrupt()方法很详细的介绍
在JDK1.0中,可以用stop方法来终止,但是现在这种方法已经被禁用了,改用interrupt方法。Thread.interrupt()方法不会中断一个正在运行的线程。它的作用是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(I转载 2012-10-08 21:12:44 · 803 阅读 · 0 评论 -
HttpParams 的层级结构作用
HttpClient 是基于java的Http Client端实现,其支持HTTP 1.0和HTTP 1.1, HttpClient自身对Http协议做了很多兼容,以便能和一些常用的Http 代理和Http server通信(这些代理和server没有严格按照协议标准来实现)。HttpClient在本质上,是使用java的socket来和服务器通信,只不过通信的协议是采用HTTP协议而已。转载 2012-10-08 21:17:59 · 12341 阅读 · 0 评论 -
java.util.Formatter类基本使用
Q. 为什么要用到此类:A:此类提供了对布局对齐和排列的支持,以及对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持。通俗一点说就是 控制 输出文本的 格式。1、产生格式化输出的每个方法都需要“格式字符串”和 “参数列表” 格式字符串是一个 String ,它可以包含固定文本以及一个或多个嵌入的 “格式说明符。”格式说转载 2012-10-08 21:20:55 · 941 阅读 · 0 评论 -
AtomicInteger
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。来看AtomicInteger提供的接口。//获取当前的值public final int get()//取当前的值,并设置新的转载 2012-10-11 16:23:49 · 385 阅读 · 0 评论 -
二进制补码
计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结果.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚."(摘自>有空大家可以看看哦~,很有意思的).为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制1.数值有正负之分,计算机就用一转载 2012-10-11 16:40:45 · 721 阅读 · 0 评论 -
Timer和TimerTask的基本使用
这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子:im转载 2012-10-11 16:46:41 · 371 阅读 · 0 评论 -
Java双缓冲技术基本使用
1屏幕产生闪烁的原因 正是这种先用背景色覆盖组件再重绘图像的方式导致了闪烁。即使时间很短,如果重绘的面积较大的话花去的时间也是比较可观的,这个时间甚至可以大到足以让闪烁严重到让人无法忍受的地步。 另外,用paint(Graphics g)函数在屏幕上直接绘图的时候,由于执行的语句比较多,程序不断地改变窗体中正在被绘制的图象,会造成绘制的缓慢,这也从一定程度上加剧了闪烁。转载 2012-10-10 21:58:09 · 1115 阅读 · 0 评论 -
Date and Calendar基本使用
Java 语言的Calendar,GregorianCalendar (日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象。学习日期, 日期格式, 日期的解析和日期的计算。我们将讨论下面的类: 1、转载 2012-10-10 22:13:23 · 928 阅读 · 0 评论 -
应用HttpClient来对付各种顽固的WEB服务器
一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要认证以及是一些通过加密方式传输,例如HTTPS。目前我们使用的浏览器处理这些情况都不会构成问题。不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中“偷”一些数据;利用某些站点提供转载 2012-10-10 22:15:43 · 674 阅读 · 0 评论 -
当你输入一个网址的时候,实际会发生什么?
作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。转载 2012-10-10 22:18:25 · 1447 阅读 · 0 评论 -
桥梁模式
1. 桥梁模式简介 桥梁模式(Bridge)是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。 注:《Java与模式》一书认为Bridge模式不是一个使用频率很高的模式,我不太赞同,我认为Bri转载 2012-10-11 16:44:11 · 764 阅读 · 0 评论 -
PrintWriter类
java.io包1)首先先知道它的八种构造方法,但怎么记住这八种呢?我们都知道PrintWriter是一种过滤流,也叫处理流。也就是能对字节流和字符流进行处理,所以它会有:PrintWriter(OutputStream out) 根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。PrintWriter(Writer out) 创建不转载 2012-10-11 16:45:17 · 481 阅读 · 0 评论 -
String类
1、String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语言”; 其实按照面向对象的转载 2012-10-11 16:42:47 · 554 阅读 · 0 评论 -
Pattern和Matcher 的用法
Pattern类: Pattern的方法如下:static Pattern compile(String regex) 将给定的正则表达式编译并赋予给Pattern类 static Pattern compile(String regex, int flags) 同上,但增加flag参数的指定,可选的flag参数包括:CASE INSENSITIVE,MULTILINE转载 2012-11-05 14:48:03 · 798 阅读 · 0 评论 -
synchronized基本用法
概述 synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法,有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,直接运行。它包括两种用法:synchronized 方法和 synchronized 块。1. sy原创 2012-10-07 12:13:41 · 1256 阅读 · 0 评论 -
JDK5.0中注释(Annotation)的用法
很多api都需要相当数量的样板代码,比如,为了编写一个jax-rpc的web服务,你需要提供一个接口和一个实现类。如果这个程序已经被加了注释annotations以说明那个方法需要被远程调用,那么我们可以一个工具去自动生成这些样板代码。 还有一些api需要在程序代码另外维护一些文件,比如javabean需要一个beaninfo类,ejb需要一个部署描述文件。如果我们能够把这些需要另外维护的转载 2012-11-28 20:04:41 · 1048 阅读 · 0 评论 -
JDK 5.0 注释 示例
1. 利用注释和反射 实现程序的方法按顺序执行 Java代码 Order.java ---- import java.lang.annotation.*; @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface Order转载 2012-11-28 20:16:00 · 545 阅读 · 0 评论 -
Annotation 中的一些属性意义
定义表名注解 Java代码 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;转载 2012-11-28 20:29:43 · 1184 阅读 · 0 评论 -
Java中的Enum的使用与分析
示例:public enum EnumTest { FRANK("The given name of me"), LIU("The family name of me"); private String context; private String getContext(){ return this.context;转载 2012-11-29 00:22:22 · 453 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMapConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。ConcurrentHas转载 2012-11-24 14:49:15 · 508 阅读 · 0 评论 -
LRUCache和FastLRUCache实现分析
1、LRUCache的实现分析在分析LRUCache前先对LinkedHashMap做些介绍。LinkedHashMap继承于HashMap,它使用了一个双向链表来存储Map中的Entry顺序关系,这种顺序有两种,一种是LRU顺序,一种是插入顺序,这可以由其构造函数public LinkedHashMap(int initialCapacity,float loadFactor, bool转载 2012-11-24 16:31:05 · 1750 阅读 · 0 评论 -
Android4.0中DiskLruCache和LruCache
Android应用开发之(利用好图片缓存)Android Developer: 在用户界面(UI)加载一张图片时很简单,然而,如果你需要加载多张较大的图像,事情就会变得更加复杂,。在许多情况下(如与像的ListView GridView或ViewPager的组件),屏幕上的图片的总数伴随屏幕上滚动的骤然增加,且基本上是无限的。为使内存使用保持在稳定范围内,这些组件转载 2012-11-24 16:32:44 · 12669 阅读 · 1 评论 -
MappedByteBuffer的使用
其实掌握MappedByteBuffer并不难,只要记住“三方三法三特性”(我自己总结的,呵呵~~不要扔鸡蛋哦。。。)这句话就可以轻松搞定!MappedByteBuffer 只是一种特殊的 ByteBuffer ,即是ByteBuffer的子类。 MappedByteBuffer 将文件直接映射到内存(这里的内存指的是虚拟内存,并不是物理内存,后面说证明这一点)。通常,可以映射整个文件,如果文件比转载 2012-12-23 14:01:49 · 1446 阅读 · 1 评论