
java基础
liujn347
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
synchronized与ReentrantLock类锁区别
java.util.concurrent.locksLock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。锁是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问。一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁。不过,转载 2014-03-27 01:17:43 · 808 阅读 · 0 评论 -
des、MD5、RSA加密算法优缺点
美国数据加密标准(DES)是对称密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合。RSA是非对称算法,加密密钥和解密密钥是不一样的,或者说不能由其中一个密钥推导出另一个密钥。密钥尺寸大,加解密速度慢,一般用来加密少量数据,比如DES的密钥。SHA1 和 MD5 是散列算法,将任意大小的数据映射到一个较小的、固定长度的唯转载 2014-04-23 01:20:20 · 4828 阅读 · 0 评论 -
Java NIO和IO的主要区别
Java NIO和IO的主要区别下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流的,NI转载 2014-04-12 11:25:00 · 944 阅读 · 0 评论 -
java反射
java reflection,java 反射,动态绑定 2007-01-13 18:26:29| 分类: IT技术|举报|字号 订阅Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。Ja转载 2014-04-17 00:15:32 · 509 阅读 · 0 评论 -
java序列化与反序列化以及保证数据一致性
public class TestSeriable implements Serializable{ private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.原创 2014-04-21 23:01:58 · 1155 阅读 · 0 评论 -
GC策略的调优
摘自《构建高性能的大型分布式Java应用》第六章,感兴趣的同学们可以看看。GC策略在G1还没成熟的情况下,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种,具体这两种GC的策略在深入JVM章节中已讲解, 并行和并发GC的策略通过-XX:+UseParallelGC和-XX:+UseConcMarkSweepGC来指定,还有一些细节的配置参数转载 2014-06-26 23:51:55 · 545 阅读 · 0 评论 -
hashmap工作原理
1.使用hashmapput(key,value)方法时,调用键对象hashcode()方法计算hashcode,找到bucket位置存储值对象2.使用hashMapget(key,value)方法时,调用键对象equals()方法,获取键值对对象,返回值对象3.当两个不同对象有相同key时,第二个值对象会存储在linkedlist的下一个节点4.键值对对象是以Map.Entry方式存储转载 2013-11-29 22:12:32 · 388 阅读 · 0 评论 -
java中的HashTable,HashMap和HashSet
分类: java目录(?)[+]上篇博客中我们详细的分析了java集合《java中Map,List与Set的区别》。同时我们也对HashSet和HashMap的核心方法hashcode进行了详解,见《探索equals()和hashCode()方法》。万事俱备,那么下面我们就对基于hash算法的三个集合HashTable,HashS转载 2014-04-19 16:54:03 · 475 阅读 · 0 评论 -
java内部类
内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构/转载 2014-03-27 01:44:55 · 455 阅读 · 0 评论 -
一致性hash算法
1.假设有4个值key1,key2,key3,key4 通常hash算法是int key1=hash(key1) /N; int key2= hash(key2) /N; int key3=hash(key3) /N;int key4=hash(key4) /N;N为服务器的数量,但是当一台缓存服务器挂掉,N变为N-1,或者增加一台服务器,N变为N+1,此时意味着所有原来的缓存都生效了,因为原创 2014-03-25 00:20:35 · 523 阅读 · 0 评论 -
String、StringBuilder与StringBuf…
1.String每次都会生成一个新的对象(Stringa+="ab"),StringBuilder,StringBuffer不会2.StringBuilder只支持单线程,默认为16个字符,是个容器,支持自动增长,支持append,insert,delete等操作,相当于字符串缓冲区,效率相对StringBuffer高,支持多线程不安全3.StringBuffer支持多线程,默认为16个字原创 2013-11-29 22:11:53 · 1075 阅读 · 0 评论 -
抽象类与接口区别
1.抽象类中可以有非抽象方法,可以有实现方法,接口全为抽象方法;2.抽象类方法标识为abstract,abstract不能与private、static、final一起使用;接口方法默认全为public3.抽象类只能继承一个类,可以实现多个接口;接口可以继承多个接口4.抽象类与接口都是从下到上共同行为属性的抽取原创 2013-11-29 22:11:57 · 498 阅读 · 0 评论 -
String.valueof使用
1.String s=String.valueof(Object obj); 如果obj为null,则s="null"2.null是一个关键字,用来标记不能确定值的对象,可以赋值给引用型变量,但是不能赋值给基本数据类型,例如inta=null,是错误的原创 2013-11-29 22:12:02 · 580 阅读 · 0 评论 -
null java
1.null是一个关键字,能代表一个不确定的引用类型对象,例如Object=null,但是不能代表基本类型:byte,short,int,long,float,double2.java程序运行的时候可以自动给byte,short,int,long赋值为0,float,double赋值为0.0,boolean赋值为false,其他引用数据类型赋值为null3.如果让一个非null引用类型指向原创 2013-11-29 22:12:04 · 543 阅读 · 0 评论 -
ArrayList,Vector,LinkedList区别
1.ArrayList和Vector都是使用数组方式存储数据,ArrayList基于Object[],初始容量为10,不是线程安全的,容量自动增长是原来1.5倍加1;Vector是线程安全的,是同步的;2.ArrayList和Vector都可以通过下标索引快速查找数据;当数据长度超过其初始长度时,会开辟新的内存空间,将原有内存数据copy到新内存中,再插入新的数据,所以查找快插入慢。3.V原创 2013-11-29 22:12:06 · 466 阅读 · 0 评论 -
String类为什么是final类型的
1.jvm内存中有一个字符串常量池,String s="123";Stringb=s;如果字符串是可以改变的,那么指向字符串的所有变量都是可以变化的,这不符合Stringinterning规则(多个变量指向同一个一个字符串,jvm内存中只保持一份变量)2.数据库用户名,密码;socket通信中ip,port都是String类型的,如果String可变,那么,很危险3.一个字符串实例可以被原创 2013-11-29 22:12:39 · 1260 阅读 · 1 评论 -
内部类与匿名内部类的区别
1.内部类:A类是B类的一个成员变量,A类可以调用B类的成员变量,可以区分static,可以使用B类方法的局部变量,A类可以有多个实例2.匿名内部类:A类是B类的一个成员,但是只有唯一的实例,不区分static,如果要调用外部类的变量,必须是类变量或者final的局部变量,多用于事件监听和线程应用原创 2013-11-29 22:11:55 · 1685 阅读 · 0 评论 -
new对象与Class.forName("xxx").newInstance()的区别
1.Class.forName("xxx").newInstance();forName方法会调用类加载器,加载xxx类,newInstance方法在默认构造函数中创建了一个对象Class.forName(getClassFromXmlFile()) //消灭了XXX类,只要继承XXX的兄弟类,都可以使用,常适用于java的工厂模式2.A a = new A();只有实例化对象时才会由原创 2014-03-22 14:57:29 · 653 阅读 · 0 评论 -
socket模拟http请求
public static void main(String[] args) { try { Socket socket = new Socket("220.181.111.86",80); PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket原创 2014-03-24 23:11:52 · 551 阅读 · 0 评论 -
java类加载方式
1.隐式加载:A a=new A();jvm动态运行时,遇到new一个对象时候,会加载类A2.显示加载: Class.forName(xxxClass); 程序员自己可以决定什么时候加载这个类原创 2016-05-07 16:22:10 · 333 阅读 · 0 评论