java
IT界的吉祥物
前同程,现薄荷
展开
-
Android之了解ThreadLocal
转载请标明出处:【顾林海的博客】前言很长时间没写博客,不是自己懒,而是在这段时间在思考要写什么,以及自己的发展方向,之前的自己很浮躁,总想表现什么,这其实对技术人来说是不好的,把心沉淀下来,找准方向,再一步步去实现,幸运的是自己又找到自我,这篇文章就讲讲一个小知识点ThreadLocal。强调ThreadLocal与多线程并发没有任何关系,ThreadLocal解决...原创 2018-02-25 09:36:09 · 25746 阅读 · 0 评论 -
Java网络编程笔记1
网络编程的基础知识什么叫计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备通信线路互连成一个规模大、功能强的网络系统。计算机网络主要能做些以下功能:1)资源共享2)信息传输与集中处理3)均衡负荷与分布处理4)综合信息服务计算机网络按照规模大小和延伸范围来分:1)局域网(LAN)2)城域网(MAN)3)广域网(WAN)计算机网络按原创 2014-11-04 11:14:55 · 1575 阅读 · 0 评论 -
Java网络编程笔记2
如果要实现多线程下载,可以定义以下原创 2014-11-04 13:52:25 · 1485 阅读 · 1 评论 -
Java网络编程笔记3
如何使用POST请求和GET请求向Web站点发送请求原创 2014-11-04 14:37:00 · 1305 阅读 · 0 评论 -
Java网络编程笔记4
Socket和ServerSocket,网络编程可以分为创建Socket、打开连接Socket的输入流和输出流,对Socket进行编程,关闭Socket。创建Socket一个功能齐全的Socket的工作过程包含以下四个步骤:1、创建Socket。2、打开连接到Socket的输入/输出流。3、按照一定的协议对Socket进行读/写操作。4、关闭Socket原创 2015-01-12 23:14:37 · 1582 阅读 · 0 评论 -
Java网络编程笔记5
在Java网络编程笔记4中我们看到了客户端与服务器通信的过程,只是在前面的程序只是单个客户端与服务器通信 的例子。接下来我们看如何实现多个客户端与服务器通信,对于服务器来说,它要为每个客户端请求的Socket建立一个线程,并通过它进行通信。在这里创建一个线程类用来管理Socket:public class ServerThread extends Thread { private原创 2015-01-17 11:08:11 · 1208 阅读 · 0 评论 -
Java网络编程笔记6
在前几遍文章中,我们已经知道了客户端与服务器通信,包括多个客户端与服务器的通信,接下来我们演示下客户端与服务器的完整通信过程。先看效果图 客户端1 客户端2原创 2015-01-17 12:02:21 · 1249 阅读 · 0 评论 -
Java学习笔记33
关于Set这个接口,我们在前面的笔记中提到过,Set是代表无序、不可重复的集合,其实Set就是一个不包含重复元素的collection。关于Set不包含重复元素的标准是:不包含满足e1.equals(e2)的元素对,元素e1和e2。并且最多包含一个null元素。接下来我们来看看这个接口给出的方法说明:1、int size();如果 set 中尚未原创 2015-03-11 21:41:25 · 1535 阅读 · 0 评论 -
Java学习笔记32
Stack继承了Vector类,Stack类似于“栈”,它是一种后进先出(LIFO)的对象堆栈,通过五个操作对类Vector进行扩展,允许将向量视为堆栈。它提供了通常的push和pop操作,以及取堆栈顶点的peek方法,测试堆栈是否为空的empty方法、在堆栈中查找并确定到堆栈顶距离的search方法。我们来看下图,加深对栈的理解:原创 2015-03-09 21:06:01 · 1339 阅读 · 0 评论 -
Java学习笔记31
我们知道数组是以一块连续内存区来保存所有的数组元素,所以数组在随机访问时性能最好。所有的内部以数组作为底层实现的集合在随机访问时性能较好;而内部以链表作为底层实现的集合在执行插入、删除操作时性能较好;进行迭代操作时,以链表作为底层实现的集合比以数组作为底层实现的集合性能好。我们来看以下程序:public class Main { public static原创 2015-03-08 20:33:53 · 1372 阅读 · 0 评论 -
Java学习笔记29
ArrayList是List接口的实现类,支持List接口的全部功能,ArrayList类是基于数组实现的List类,在内部封装了一个动态的、允许再分配的Object[]数组。ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,如果有超过一个线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。以原创 2015-03-07 20:42:26 · 1611 阅读 · 0 评论 -
Java学习笔记28
Vector是List接口的实现类,支持List接口的全部功能,Vector类是基于数组实现的List类,在内部封装了一个动态的、允许再分配的Object[]数组,Vector是线程安全的,无须程序保证该集合的同步性。以下是Vector类的一部分方法使用说明:public class Main { public static void原创 2015-03-07 20:04:07 · 1365 阅读 · 0 评论 -
ScheduledThreadPoolExecutor的相关知识
转载请标明出处:【顾林海的博客】前言ScheduledThreadPoolExecutor继承自ThreadPoolExecutor,而ThreadPoolExecutor是线程池的核心实现类,用来执行被提交的任务,ScheduledThreadPoolExecutor是一个实现类,可以在给定的延迟后运行命令,或者定期执行命令。ScheduledThreadPoolExecutorSchedule原创 2017-10-19 16:36:05 · 27395 阅读 · 0 评论 -
线程同步辅助类
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/72354208 本文出自:【顾林海的博客】前言关于线程的基础知识可以查看《有关线程的相关知识(上)》和《有关线程的相关知识(下)》,线程同步synchronized和Lock可以查看《线程同步synchronized》和《线程同步Lock》,在并发工具类中提供原创 2017-05-17 00:04:55 · 25420 阅读 · 0 评论 -
有关线程的相关知识(下)
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/70215452 本文出自:【顾林海的博客】前言在上一篇文章《有关线程的相关知识(1)》 一文中已经讲了线程的两种创建方式以及6个状态,这篇文章就把接下来的东西加上,各位看官,提好裤子,上车咯。 线程的中断在java中,当所有非守护进程运行结束或是其中一个原创 2017-04-21 21:25:04 · 25709 阅读 · 0 评论 -
有关线程的相关知识(上)
前言一系列任务的同时运行称之为并发,可以认为是多个任务交替执行,并且多个任务之间有可能还是串行的,与并发相关的另一个概念是并行,并行是真正意义上的“同时执行”。线程的两种创建方式我们在Java中创建线程可以通过以下两种方式来创建:继承Thread类,并且覆盖run()方法。创建一个实现Runnable接口的类,使用带参数的Thread构造器来创建Thread对象。接下来看看以下程序:publi原创 2017-04-17 20:03:36 · 25437 阅读 · 0 评论 -
线程同步Lock
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/70670024 本文出自:【顾林海的博客】前言除了上一篇文章的synchronized,Java还提供了同步代码块的另一种机制,这种机制基于Lock接口及其实现类。相比与synchronized来说更强大也更灵活。关于线程相关知识可以查看:《有关线程的相关知识原创 2017-04-25 23:41:19 · 25586 阅读 · 0 评论 -
线程同步synchronized
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/70339618 本文出自:【顾林海的博客】前言在编写多线程应用时,读写相同的数据,最有可能发生数据的错误或不一致,为了防止这些错误的发生,我们引入了临界区概念,临界区是一个用以访问共享资源的代码块,这个代码块在用一时间内只允许一个线程运行。为了更好的实现临界区原创 2017-04-25 08:40:42 · 25486 阅读 · 0 评论 -
Java之HashMap源码解析1
讲解HashMap时,我们先看看在API文档中是怎么介绍的:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提原创 2014-12-26 20:13:37 · 1175 阅读 · 0 评论 -
Java的反射机制
前言反射提供了一种动态的功能,这种动态功能非常强大。它只要体现在通过反射相关的API,就可以知道一个陌生的Java类的所有信息,包括属性、方法、构造器等。而且元素完全可以在运行时动态的进行创建或调用,而不必在JVM运行时就进行确定。通过查阅相关资料,进行了整理,本篇也是基于下面文章进行扩充。 《http://blog.csdn.net/m原创 2015-08-13 18:53:53 · 1210 阅读 · 0 评论 -
Java类加载笔记(1)
当一个程序调用某个类,这个类还没有被加载到内存中时,我们的系统会通过以下三个步骤来对该类进行初始化: 1、类的加载类加载指的是将类的class文件读入内存中,并给它创建一个jav原创 2015-01-11 11:55:13 · 1253 阅读 · 0 评论 -
Java学习笔记30
LinkedList类是List接口的实现类,它是一个List集合,可以根据索引来随机访问集合元素。除此之外,LinkedList还实现了Deque接口,因此它可以被当成双端队列来使用,也可以被当成“栈”来使用。LinkedList是基于链的线性表。以下是官方对LinkedList类的说明:List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括原创 2015-03-08 18:57:49 · 1807 阅读 · 2 评论 -
Java学习笔记27
Vector是List接口的实现类,支持List接口的全部功能,Vector类是基于数组实现的List类,在内部封装了一个动态的、允许再分配的Object[]数组,Vector是线程安全的,无须程序保证该集合的同步性。以下是Vector类的一部分方法使用说明:public class Main { public static void原创 2015-03-06 23:02:23 · 1582 阅读 · 0 评论 -
Java学习笔记26
Vector是List接口的实现类,支持List接口的全部功能,Vector类是基于数组实现的List类,在内部封装了一个动态的、允许再分配的Object[]数组,Vector是线程安全的,无须程序保证该集合的同步性。以下是Vector类的一部分方法使用说明:public class Main { public static void main(String[] ar原创 2015-03-05 23:19:27 · 1375 阅读 · 0 评论 -
Java学习笔记11
Object类是所有类、数组、枚举类的父类,是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。 Object类实现了以下方法:我们来看看在源码中registerNatives()方法: private static native void registerNatives(); static {原创 2015-02-21 19:01:32 · 1866 阅读 · 0 评论 -
Java学习笔记9
如果一个类的对象是有限而且固定的,比如季节类,它只有4个对象,像这种实例有限而且固定的类,我们在Java中被称为枚举类。枚举类是Java 5 新增的,使用enum关键字来定义枚举类,枚举类是一个钟特殊的类,它一样可以有自己的Field、方法,可以实现一个或者多个接口,也可以定义自己的构造器。在一个Java源文件中最多只能定义一个public访问权限的原创 2015-02-20 20:40:02 · 1361 阅读 · 0 评论 -
Java学习笔记2
接下来我们来看看面向对象语言中的方法,在定义方法时,发现它与结构化程序设计语言中函数尤为相似,值得注意的是,Java里的方法是不能独立存在的,所有的方法都定义在类里。那我们口中所讲的方法与函数到底有什么区别呢?在结构化编程语言中,整个软件是由一个个的函数组成;而在面向对象编程语言里,整个软件是由一个个的类来组成。因此定义方法时,只能定义在类中,如果使原创 2015-02-16 18:16:18 · 1107 阅读 · 0 评论 -
Java学习笔记7
抽象类是从多个类中抽象出来的模板,在此基础上如果将这种抽象进行的更彻底,那么就可以提炼出一种更特殊的“抽象类”------接口,接口里不能包含普通方法,接口里的所有方法都是抽象方法。我们知道类是一种具体实现体,而接口定义了一种规范,接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法原创 2015-02-19 16:09:03 · 1526 阅读 · 0 评论 -
Java学习笔记4
封装、继承、多态是面向对象的三大特征,在Java中什么是多态?Java引用变量有两种类型,分别是编译时类型和运行时类型。何为编译时类型,编译时类型就是由声明该变量时使用的类型决定,而运行时类型是由实际赋给该变量的对象决定的,也就是说如果编译时类型和运行时类型不一致时,就可能出现上面提到的多态。我们看下下面的程序:class BaseClass { publ原创 2015-02-17 22:46:05 · 1449 阅读 · 0 评论 -
Java学习笔记15
Object类是所有类、数组、枚举类的父类,是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。 Object类实现了以下方法:我们来看看源码中toString()方法是如何定义的: public String toString() { return getCl原创 2015-02-22 21:56:07 · 1263 阅读 · 0 评论 -
Java学习笔记8
如果将一个类放在另一个类内部,那这个类就被称为内部类,内部类的主要作用如下:1、内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。2、内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问。但外部类不能访问内部类的实现细节,例如内部类的成员变量。3、匿名内部类适合用于原创 2015-02-19 19:41:40 · 1426 阅读 · 0 评论 -
Java学习笔记6
我们在编写类时,常常需要为它定义一些方法,这些方法主要用来描述该类的行为方式,因此,这些方法都有具体的方法体。但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确的知道这些子类如何实现这些方法。对于以上的问题有何解法呢?使用抽象方法就可以满足这些要求:抽象方法是只有方法签名,没有方法实现的方法。抽象方法和抽象类必须使用abstract原创 2015-02-18 19:11:26 · 1237 阅读 · 0 评论 -
Java学习笔记5
封装、继承、多态是面向对象的三大特征,继承是实现类重用的重要手段,但是继承会带来一个最大的坏处,那就是破坏封装。因此接下来介绍组合,组合是实现类重用的重要方式,能提供更好的封装性。子类扩展父类的时候,可以从父类那里继承得到Field和方法,假设现在我们有足够的权限,那么子类就可以直接复用父类的Field和方法,但继承在带来高度复用的同时,也带来了一个严重的问题,继承严重的破坏了父类的封装性。在原创 2015-02-18 14:42:52 · 1318 阅读 · 0 评论 -
Java学习笔记3
Java类必须包含一个或一个以上的构造器,使用构造器最大的好处就是在创建对象时,对类的Field进行初始化(当创建一个对象的时候,系统为这个对象的Field进行默认初始化,如果是基本类型如数值型赋值为0,如果是引用类型的Field赋值为null),如以下代码:public class Teacher { private String name; private in原创 2015-02-17 14:51:10 · 1173 阅读 · 0 评论 -
Java学习笔记1
我们知道在面向对象的程序设计语音中有两个很重要的概念,就是类和对象,其中类是某一批对象的抽象,我们可以把类理解成某种概念,那对象就是一个具体存在的实体。在接下来讲解的Java语言就是一门面向对象的程序设计语言,其中类和对象是核心。在Java中创建类主要如下格式:public class Teacher {}其中修饰符除了public之外,还可以使用其它修饰符,如:final原创 2015-02-16 16:50:41 · 1366 阅读 · 0 评论 -
Java学习笔记12
Object类是所有类、数组、枚举类的父类,是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。 Object类实现了以下方法:我们来看看源码中getClass()方法:public final native Class getClass();以上的Class原创 2015-02-21 19:21:39 · 1297 阅读 · 0 评论 -
Java学习笔记13
Object类是所有类、数组、枚举类的父类,是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。 Object类实现了以下方法:我们来看看源码中hashCode()方法:public native int hashCode();Object.hashCode() 就是一个哈希函数,原创 2015-02-21 20:02:45 · 1267 阅读 · 0 评论 -
Java学习笔记25
Collection和Map接口是集合框架的根接口,List为Collection接口的子接口,List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List作为 Collection接口的子接口,可以使用 Collection接口里的全部方法。List是有序结合,因此List集合里增加了一个根据索引原创 2015-03-02 23:17:59 · 1628 阅读 · 0 评论 -
Java学习笔记24
在前面大致讲解了Collection这个根接口的知识,让我们知道Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。关于Collection下的子接口和实现类在后面会讲解到,今天我们来看下Iterator接口,如下程序:public interface Collection原创 2015-03-01 12:18:43 · 2013 阅读 · 0 评论 -
Java学习笔记22
Java集合类是一种特别有用的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如:栈、队列等。除此之外,Java集合类还可用于保存具有映射关系的关联数组。Java集合大致可分为Set、List和Map三种状态,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map代表具有映射关系的集合。Java的集合类主要由两个接口派生而出原创 2015-02-26 21:36:02 · 1610 阅读 · 0 评论