随笔分类 - JAVA高级特性
摘要:1、Collections.synchronizedMap() 实现上在调用map所有方法时,都对整个map进行同步,而ConcurrentHashMap的实现却更加精细,它对map中的所有桶加了锁。所以,只要要有一个线程访问map,其他线程就无法进入map,而如果一个线程在访问Concurrent
阅读全文
摘要:HashMap提供了三个构造函数: HashMap():构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。 HashMap(int initialCapacity):构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap。 HashMap(int initialCapacity, float l...
阅读全文
摘要:list集合的排序:(int , String) Collections.sort(list, new Comparator(){ public int compare(Student s1,Student s2){ //按String字母升序 int i=s1.getName().compareTo(s2.getName()); if(i==0){ //按照数字升序 return s2.ge...
阅读全文
摘要:Comparable 是排序接口。 若一个类实现了Comparable接口,就意味着"该类支持排序"。 即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(或数组)",则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。此外,"实现Comparable接口的类的对象"可以用作"...
阅读全文
摘要:list ArrayList 动态数组结构存储,遍历速度快,索引随机访问快,允许多空值 LinkedList 底层数据结构是链表,插入和删除速度快。 Vector 数组结构存储,线程安全的,查找速度快,但增删效率低; list ArrayList 动态数组结构存储,遍历速度快,索引随机访问快,允许多
阅读全文
摘要:迭代器fail-fast 机制是java集合(Collection)中的一种错误机制。 在我们详细讨论这两种机制的区别之前,首先得先了解并发修改。 2.什么是 fail-fast 机制? 迭代器在遍历过程中是直接访问内部数据的,因此内部的数据在遍历的过程中无法被修改。为了保证不被修改,迭代器内部维护了一个标记 "mode" ,当集合结构改变(添加删除或者修改),标记"mode"会被修改...
阅读全文
摘要:map HashMap 哈希表结构存储,键值对唯一,键值都可为null,存放顺序不固定, Hashtable 哈希表结构存储,线程安全的,不允许null(jdk是这么设计的) TreeMap 是有序的,二叉树结构存储,不允许重复,键值对唯一,不允许null list ArrayList 动态数组结构
阅读全文
摘要:UDP:数据报传输 1、接收端 2、发送端
阅读全文
摘要:一、TCP:用字符流传输信息 ------------------------------------------------------------------------------ [用字符流的要点提示] 1: 将套接字关闭之后,字符流自然也就关闭了,所以只需要socket.shutdownOutput();/socket.shutdownInput(); 应为套接字开启的字节流封装在...
阅读全文
摘要:网络基础知识 1、OSI分层模型和TCP/IP分层模型的对应关系 ========================================================================== 一:TCP/IP TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。它能够提供两台计算机之间的可靠的数据流,HT...
阅读全文
摘要:线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。 1.新建状态 当用new操作符创建一个线程时。此时程序还没有开始运行线程中的代码。 2.就绪状态 一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运...
阅读全文
摘要:一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。 [java]view plaincopy 1. packagecom.thread; ...
阅读全文
摘要:关于线程同步(7种方式) 同步方法 同步代码块 使用重入锁实现线程同步(ReentrantLock) 使用特殊域变量(volatile)实现同步(每次重新计算,安全但并非一致) 使用局部变量实现线程同步(ThreadLocal)以空间换时间 使用原子变量实现线程同步(AtomicInteger(乐观锁)) 使用阻塞队列实现线程同步(BlockingQueue(常用)add(),o...
阅读全文
摘要:线程常用方法[run()方法必需是public访问权限,返回值类型为void ] Start()方法 start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。Start()方法返回了,线程就就绪了。 Run(
阅读全文
摘要:线程池中的接口和类: 《一》ThreadPoolExecutor 线程池中最核心的一个类,java.util.concurent.包下 1:ThreadPoolExecutor类中几个重要的属性: volatile int runState; static final int RUNNING = 0
阅读全文
摘要:什么是xml: 众所周知,xml常用语数据存储和传输,文件后缀为 .xml; 它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。 如何定义这些标记,既可以选择国际通用的标记语言如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML设计用来传送及携带数据信息,不用来表现或展示数据,所以XML用途的焦点是它说...
阅读全文
摘要:字节流:文件、图片、歌曲 使用字节流的应用场景:如果是读写的数据都不需要转换成字符的时候,则使用字节流。 字节流处理单元为1个字节, 操作字节和字节数组。不能直接处理Unicode字符 字节流可用于任何类型的对象,包括二进制对象,字符流只能处理字符或者字符串. 如果是 音频文件、图片、歌曲,就用字节
阅读全文

浙公网安备 33010602011771号