- 浏览: 555059 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
hdblocal_:
为什么messageReceived之后,再encode,有点 ...
MINA框架使用总结 -
andey007518:
MINA框架使用总结 -
ymm8505:
我自己的理解 CopyOnWriteArrayList 这个 ...
ArrayList遍历的同时删除 -
spring_springmvc:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
Eclipse快捷键-方便查找 -
netwelfare:
文章讲解的不够详细,ArrayList在遍历的同时如果去删除或 ...
ArrayList遍历的同时删除
http://wiki.caucho.com/Hessian_Java_API_Overview hession wiki
IO
InputStream,OutputStream和Read,Write区别:前者读写都是以字节为单位,后者是以Unicode为单位。
java.util.concurrent-------------begin
对象在并发情况下自加计数,可以利用java.util.concurrent.atomic 包下的内容
ReentrantLock
--lock
--tryLock()(time,timeType)
--Condition
--await()(time,timeType)
ReentrantReadWriteLock 读的时候锁是共享的(多线程同时读),写的时候锁是共享的(多线程的同时写),但写的时候不能读,读的时候不能写,适用于大量读少量写要加锁的情况,例如缓存的更新。
队列不能返回空
BlockingQueue阻塞队列concurrent包中的,用来实现 生产者-消费者 模式。
BlockingQueue的特点,如果队列为空的时候取对象会一直等待直到取到对象为止,如果队列满了,往里面放对象,会一直等到放入位置.这样才体现阻塞二字.
ArrayBlockingQueue 有界,要制定容量 最快
LinkedListBlockingQueue 无界 次快
PriorityBlockingQueue 无界 最慢 不是先进先出队列,类似于PriorityQueue
1、ArrayBlockingQueue性能优于LinkedBlockingQueue,但是LinkedBlockingQueue是无界的。
2、ArrayBlockingQueue和LinkedBlockingQueue的poll方法总是比offer方法快,并发越高,差距越大
3、ArrayBlockingQueue和LinkedBlockingQueue的性能远高于PriorityBlockingQueue,显然优先队列在比较优先级上的操作上耗费太多
4、PriorityBlockingQueue的offer方法与poll方法的性能差距很小,基本维持在近似1:1
java.util.concurrent-------------end
Iterator
调用remove前必调用next
集合
所有一下非Map结尾的类都实现了Collection接口
ArrayList
自增缩类似数组的序列,删除时效率低,因为后面的元素都要往前挪位。每次插入都是到末尾。
LinkedList
类似双链表,可以在任一位置插入,且效率高。
但是一般来说插入都是到末尾,所以用ArrayList就ok了
HashSet
没用重复的无序集合,只有不在乎元素的顺序才用它
TreeSet
内部用红黑树实现,在插入数据的时候可以自动排序,迭代遍历输出有序的序列。如果需要排序的情况用他不错,排序时利用需排序元素本身的Comparable接口实现或者传入一个实现了Comparetor接口的排序策略类。
EnumSet
枚举类型元素集合
LinkedHashSet
类似于LinkedHashSet
PriorityQueue
可以高效的移除最小元素的集合,如果迭代遍历输出是无序的,它只保证add,remove时最小元素移动到根,这样每次根元素都是最小的
Set 不包含重复元素的Collection
所有的Map类有三种遍历方法:
按键遍历 Set<K> ketSet();
按值遍历 Collection<K> values();
按键值对遍历 Set<Map.Entry<K,V>> entrySet();
HashMap
是散列映射表。基于散列(哈希)结构的键值对映射表。当键冲突过多时,会自动进行再散列,防止过多键冲突。
HashSet
是树状散列表,使用键的全局顺序进行排序。而HashMap是对键进行散列。
如果不需要按排列顺序来访问键的话,就用HashMap就OK了
EmumMap
枚举类型的Map
LinkedListMap
他是个HashMap,但里面的元素却又有类似LinkedList的内部联系,在每次调用get和put方法的时候,都会把被操作的那个元素位置一道链表的尾部。这样查找的时候他具有HashMap的效率,遍历的时候又利用了LinkedList的优势。在实现高速缓存的“最近最少使用”原则非常有用。
WeakHashMap
用弱应用存放对象,当对象没有被在其它地方被应用的时候,就会被JVM自动回收。
IdentityHashMap
这个类里的键值不是由key的hashCode()函数的来的,而是由System.identityHashCode(key对象)得来的。的。
Collections排序列表,Arrays排序数组
Collections的binarySearch()必须保证传入的集合是有序的,否则会报错。
Base64 编码作用:把字符串转换成肉眼不可见的数据。如密码字段的传输。特点:加密算法简单
Base64 也會經常用作一個簡單的「加密」來保護某些數據,而真正的加密通常都比較繁瑣。
常用的对称加密算法有RC4,TEA,IDEA,AES,DES,Blowfish,Twofish等
int存放20亿,超过20亿用long
计算高精度的数BigInteger BigDecimal
数组或者先了Iterable接口的用for each遍历,优点不考虑边界。
数组copy,system.arraycopy
数组排序Arrays.sort
当类中有至少一个非默认构造器(有参数),则调用默认构造器(没有参数)来构造对象会报错
方法参数都是值传递
super只是调用超类关键字,不是引用
hashCode返回的是对象的存储地址
枚举类型比较永远不要用equals,直接用==就好了
知道该怎么处理的异常就捕获,不知道改如何处理的异常就抛出。
持久性:磁盘上布局和内存一样.例子,一个对象的引用被多个对象共享,反序列化过程保证共享对象之被加载一次(保证持久性)
序列化:内存地址转化为序列号
log原理
StackTraceElement[] stack = (new Throwable()).getStackTrace(); for(StackTraceElement s:stack){ System.out.println(s); }
当程序挂起后,输入Ctrl+\,将会得到一个所有线程的列表。每个线程都有一个堆栈踪迹,他会告诉你当前哪里阻塞了。
Unicode:这是最统一的编码字符集,可以用来表示所有语言的字符,不兼容任何前面提到的编码字符集。Unicode 标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,所以“A”的编码书写为“U+0041”。注意:在JAVA语言中书写时应该使用转义符‘\u’表示,如 char charA = ‘\u0041’; 这种表示方法等与 char charA = ‘A’; 。
float累述之后有个一个后缀F(例如,3.14F)。没有后缀的浮点数值(如,3.14)默认为double类型。当然也可以在后面加D表示为double类型(如,3.14D)。
try-catch-finally-return关系:
执行顺序:try catch finally try中的return
注:如果finally中有return语句,则不会执行try中的return,也不会执行catch中的return语句;
>>带符号位右移(用符号位填充左侧的位),>>>不带符号位右移(用0填充左侧的位),<<左移(用0填充左边的位),没有<<<
位运算
&与 |或 ^异或 ~非
泛型静态函数写法
public static<T> T doit(T obj,ArrayList<T> list){ list.add(obj); return list.get(0); }
注意<T>的位置
StringBuffer同步性
String格式化输出
String的compareto 内部如何比较的
Scanner类
1.5后新加入的类,主要作用是用来遍历输出传入的数据,并输出。例如
Scanner s = new Scanner("1 2 3 4"); while(s.hasNext()){ Ssytem.out.println(s.next()); }
输出结果:
1 2 3 4
例如一个的路径为d:/1.txt内容为
liu 1.2 sd 12.1 asdf 123.1
File file = new File("d:/1.txt"); Scanner s = null; try { s = new Scanner(file); while (s.hasNext()) { String name = s.next(); double percent = s.nextDouble(); System.out.println("name=" + name + ";percent=" + percent); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (s != null) s.close(); }
输出结果
liu 1.2 sd 12.1 asdf 123.1
scanner的方法还有很多例如nextLine()方法。
写equal的注意事项
由于HashMap在判断某个元素是否存在是先判断他的hashCode()函数获得它的hashcode,然后再这个hashcode对应的散列项的,和散列项比较的时候是通过equals().如果equals()比较的值为true那么,你的hashCode()函数返回的值也一定要为true,如果不为true,更具刚才HashMap的判断原则就会出现两个equals()比较的值为true的元素被插入HashMap两次。
如何利用反射动态改变数组增长获得数组
见java core p192 使用反射编写通用数组代码 Array.newInstance(Class<?> componentType, int length)
代理类的使用
如果没有代理类Proxy,直接自己用反射机制实现面向AOP编程,每个类都要为他写一个代理对象。有了Proxy,我们就只需要传入三个参数,ClassLoad(类加载器,默认null就是JVM最原始的加载器),Class[] interfaces(被代理对象的所有接口),InvocationHandler(每个代理实例都具有一个关联的调用处理程序。代理类每次调用一个方法都会激活InvocationHandler的invoke方法)
invoke(Object proxy,Method method,Object[] args)throws Throwable
这个method传入的是被代理对象的方法
异常
异常的根为Throwable类,所有的异常必须为它的子类。
Throwable之下有两个分支Error和Exception,其中Error为java运行时系统内部错误和资源耗尽最经典的就是OutOfMemorryError,一般来说无需捕获;
然后就是Exception,他又分解为两个分支:
一个为RuntimeException,如果是这个异常的子类,那末一定是你代码写的有问题,常见的有NullPointerException,IndexOutOfBoundsException,错误类型转换,一般来说这些异常你必须自己有意识去捕获。
再就是能够自动运行(代码本身没问题,是用于外部环境导致有问题),由于某些情况导致异常的异常就不属于RuntimeException,例如试图在文件尾部读数据,可打开一个不存在的URL,打开一个不存在的文件,这些情况编码时,ide会自动提示你要加入try-catch模块;
算法:快速排序 红黑树
从高到低排列是public ,protected ,friendly, private
全友好 包+子类 包
发表评论
-
为何在使用CMS gc算法时会出现连续两次full gc
2011-09-01 11:04 4977现象: jstat -gcutil pid 1000观察到 ... -
配置filter拦截forward之类的内部转发
2011-02-18 17:19 6034在servlet-2.3中,Filter会过滤一切请求,包括服 ... -
request.getRequestURI 与request.getServletPath() 区别
2011-02-16 19:38 7851路径:resin/webapps/my_proj/test/r ... -
ConcurrentHashMap中的remove方法的bug
2010-04-30 11:48 5827最近研究了一下 ConcurrentHashMap中源码发现j ... -
搭建Android开发环境
2010-04-05 23:22 1554在eclipse上安装Android 1.安装eclipse ... -
IoServer源代码阅读笔记
2009-08-23 21:57 2159NIO:写事件要尽量早的被注销. 1,IOServer用一 ... -
一个webapp目录下部署多个web应用
2009-08-21 10:34 2166在同一个resin下的webapp目录部署多个web应用,发现 ... -
java 的深度克隆
2009-07-01 20:07 1813只有实现了cloneable接口才算是真正的深度克隆. 在复 ... -
try finally return
2009-03-20 19:21 1260class Entry { ... -
String和==号的问题
2009-03-09 19:45 1241String name = "you" ... -
Bit数组
2009-01-20 18:56 2906public class BitArray{//用byte数组 ... -
关于Java占用内存的研究 (转载请注明作者zms)
2009-01-20 15:28 3016版权声明:转载时请以 ... -
几种通讯协议的比较
2009-01-20 15:26 5360一、综述 本文比较了RMI ... -
Java基础-关于session的详细解释
2008-12-01 23:49 1393一、术语session 在我的经验里,session这个词 ... -
关于大量缓存对象回收的思考
2008-12-01 15:34 2676前几天面试,被问到了一个问题,如果当前有数亿条记录,但是缓存最 ... -
java 快速排序demo
2008-11-29 19:52 2070快速排序算法思想如下,先选取一个元素作为基准,然后根据这个基准 ... -
java 实现简单的文件拷贝
2008-11-26 17:36 6280昨天面试,面试官要我在黑板上写个java文件复制的代码,但是一 ... -
HashMap的遍历效率讨论
2008-11-26 11:31 3696经常遇到对HashMap中的key和value值对的遍历操作 ... -
Java ArrayList 实现
2008-11-25 23:02 3761ArrayList是List接口的一个可变长数组实现。实现了 ... -
c与java通信时数值类型存储的顺序问题
2008-08-09 15:19 3402Byte:一个字节,标记为byte 0 Word:二个字节,从 ...
相关推荐
首先,从【标题】:“java知识点汇总” 和【描述】:“内容较杂,有java初中高级知识点,也有Java web架构及原理”来看,涉及的内容包括了Java的序列化与反序列化、IO流的基础知识、多态的概念、泛型的应用、反射...
java知识点总结 一、Java 概述 Java 语言的发展始于 1991 年,由 Sun 公司的 James Gosling 等人开始开发,最初命名为 Oak,旨在用于控制嵌入在有线电视交换盒、PDA 等的微处理器。1994 年更名为 Java。Java 语言...
这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...
Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。
JAVA基础知识总结 JAVA基础知识总结 JAVA基础知识总结
Java基础知识总结 一些的基础知识 适合初学者和回顾以前的知识
自己在网上找的相对好一点的java复习资料,留个纪念 。详细讲述了Java课程的知识点
Java基础知识总结涵盖了Java程序设计语言的核心概念和常用知识点。在详细学习和总结这些知识点之前,首先需要对Java有一个整体的认识。Java是一种面向对象的编程语言,它具有跨平台的特性,即“一次编写,到处运行”...
Java 基础知识总结是 Java 程序员不可或缺的一部分,本总结将涵盖 Java 的基础知识,包括 Java 概述、Java 语法基础、变量、数据类型、运算符、控制语句、方法、数组、继承、多态、接口、异常、IO 流等。 一、Java ...
2024版Java基础知识总结(超详细整理)2024版Java基础知识总结(超详细整理)2024版Java基础知识总结(超详细整理)2024版Java基础知识总结(超详细整理)2024版Java基础知识总结(超详细整理)2024版Java基础知识...
以上知识点在"JAVA知识点总结思维导图(xmind)"中可能以思维导图的形式详细展开,包括每个主题的子话题和相关实例,帮助学习者系统地理解和掌握Java编程。通过深入学习和实践这些知识点,可以成为一名熟练的Java...
### Java基础知识总结(绝对经典) #### 一、Java概述 - **起源与发展**:Java语言始于1991年Sun公司的James Gosling等人所开发的Oak语言,原计划用于控制嵌入式设备如有线电视交换盒和个人数字助理(PDA)。1994年...
jdk,eclipse使用,循环,数组,基础API,面向对象,循环,运算符,关键字,String详解,IO流
Java知识点总结2019,其中包括了基础、面向对象、api部分、集合类、多线程、GUI、Jdbc、网络编程、io流。
### Java基础知识总结 #### 一、Java概述 Java是由Sun Microsystems公司(现已被Oracle收购)在1991年由James Gosling领导的团队所开发的一种面向对象的编程语言。最初被命名为Oak,目的是为了控制嵌入式设备和...
Java知识点总结文档全面涵盖了多个Java相关的技术领域,包括JVM、Java集合框架、多线程并发、基础语法、Spring框架的原理、微服务、Netty与RPC通信、网络编程、日志管理、分布式协调工具Zookeeper、大数据存储系统如...
这份"java知识点总结思维导图(xmind)"是为帮助学习者系统性地理解和掌握Java核心技术而精心整理的资料。思维导图作为一种有效的学习工具,能够帮助我们更好地组织和记忆信息,提高学习效率。 首先,让我们从基础...
本资源摘要信息是关于Java基础知识的总结,涵盖了Java语言的基本概念、语法、数据类型、操作符、控制流程、关键字等方面的知识点。 概念和提纲 Java技术是一种高级的面向对象的编程语言,也是一个平台,Java技术是...