![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
她说巷尾的樱花开了
这个作者很懒,什么都没留下…
展开
-
举例说明函数重载和重写
在java中多态分为两种编译时多态(重载)和运行时多态(重写),编译时多态又叫前绑定,运行时多态又叫后绑定;下面用一个例子说明:public class OverloadAndOverwrite { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); B b = new B();原创 2016-04-03 21:39:11 · 2614 阅读 · 0 评论 -
java-----NIO总结(三)
前两篇博客我们通过将accept和read设置成非阻塞式的方式实现了同步非阻塞模式,但是缺点在于在服务端需要为每个客户端都要创建一个线程来处理每个客户端的请求,这点相对来说比较耗费服务端资源,比如我们通常用到的Socket长连接用于心跳检测,其实客户端根本就没有数据要发送,只是想要告诉服务端我还活着而已,这时候为客户端单独创建一个线程的话,未免就有点小题大做了,因此迫切的需要出现一种可以减少在服务原创 2016-08-11 20:02:47 · 2058 阅读 · 0 评论 -
java-----NIO总结(四)
我们知道java中的IO经历了BIO到NIO再到AIO的发展,具体来讲的话BIO是同步阻塞式IO,NIO是同步非阻塞式IO,而AIO是异步非阻塞式IO,前面我们分析了BIO和NIO的用法,至于AIO目前我还没有研究的想法,先把BIO和NIO研究清楚了再说吧,这篇博客我对前面的内容进行总结,如果你没有看过前面的博客,强烈推荐你看下,下面是索引链接: java-----NIO总结(一原创 2016-08-11 21:13:24 · 1691 阅读 · 2 评论 -
java-----NIO总结(一)
最近项目中用到了AndroidPN框架来实现一个推送平台,在看AndroidPN源码的过程中,着实有些费力,因为他内部是用MINA框架实现的,想想还是先把MINA搞清楚了再来看AndroidPN框架了,于是有了今天这个MINA框架源码分析系列,又因为MINA本身是对我们java NIO的二次封装,所以在正式讲解MINA源码之前,我们还需要先搞清楚java NIO的知识,这篇博客博客主要讲的就是ja原创 2016-08-11 10:12:34 · 1913 阅读 · 3 评论 -
java-----NIO总结(二)
上一篇文章中,我们分析了通常我们使用的面向字节流的BIO所存在的阻塞问题,那么这篇博客我们来看看java为我们提供的解决BIO的方案,就是NIO了; 在上篇文章的最后,我们提到了,使用了多线程只是能够实现对"业务逻辑处理"的多线程,但是对于数据报文的接收还是需要一个一个来的,也就是我们上面见到的accept以及read方法阻塞问题,多线程是根本解决不了的,那么首先我们来看看acc原创 2016-08-11 15:32:55 · 2550 阅读 · 2 评论 -
Callable与Runnable的区别及其在JDK源码中的应用
最近在学习java多线程方面的东西,在此希望把自己学到的东西做做总结,要想搞清楚实现原理,源码是最好的老师,因此这篇我打算从实践+源码角度来进行分析以下几个问题: (1):Callable与Runnable的区别; (2):Callable与Runnable的使用,并且通过Future对象获取Callable的返回值; (3)原创 2016-08-31 11:30:45 · 5643 阅读 · 7 评论 -
java-----hashCode和equals的区别
首先来说说两者的区别,接着给出得出这些区别的原因,最后从HashMap和HashSet实现的角度谈谈这两个集合类对hashCode和equals的使用,其实说白了,个人认为这两个区别也只是在HashMap和HashSet中体现的比较明显点; 两者的关系: (1):两个对象如果equals,那么他们的hashCode也相等 (2):两个对象如果h原创 2016-07-18 21:54:12 · 2182 阅读 · 0 评论 -
java-----面试问题总结
从今天起计划每天把学到的java方面的面试问题和答案用适合和面试官谈论的方式写一遍,以记录找工作历程 持续更新中~~~~~勿喷(1)java垃圾回收机制答:要想说清楚垃圾回收机制,首先应该明白的是垃圾回收机制中主要的两个问题:一个是什么样的对象是垃圾回收对象;一个是对这些垃圾回收对象该怎样进行回收;JVM将内存划分为5个区,分别是虚拟机栈、本地方法栈、堆、程序计数器、方法区,原创 2016-05-12 21:46:43 · 1700 阅读 · 0 评论 -
java-----容器类总结之ArrayList与LinkedList的区别
我们都知道java中关于List的实现有两种方式:ArrayList与LinkedList,那么今天我们来看看两者在使用过程中的一些注意事项; 首先来看看两者的类结构图:原创 2016-07-11 11:27:04 · 6646 阅读 · 0 评论 -
java-----ArrayList的fail-fast机制学习
java中经常会用到容器类,他们为我们实际的开发提供了很大的便捷,但是在使用的过程中经常会出现一些奇奇怪怪的异常,今天演示的就是使用ArrayList过程中出现的一个异常,就是我们经常会遇到的ConcurrentModificationException异常了,这个异常会在我们多线程并发修改ArrayList,并且至少有一个线程在迭代输出ArrayList里面的值的时候出现,下面我们再现一下出错场原创 2016-07-10 23:15:37 · 2091 阅读 · 0 评论 -
java-----ThreadLocal源码分析
前面Handler消息处理机制中提到了线程会将自己的Looper对象放到ThreadLocal中,因而我们有必要看看ThreadLocal是什么? ThreadLocal是什么? ThreadLocal也是用来进行多线程并发的,可以理解为是线程的局部变量,作用就是为每个线程提供一个变量值的副本,每个线程可以独立的改变自己的副本而不影响其他线程。 T原创 2016-04-17 14:39:31 · 1611 阅读 · 0 评论 -
java-----String的intern关键字
首先我们应该清楚的是JDK1.6和JDK1.7中String类的intern方法还是有差别的: JDK1.6中的intern: 调用intern方法的时候首先会去常量池中查看是否存在与当前String值相同的值,如果存在的话,则直接返回这个String值的引用;如果不存在的话,则会将原先堆中的该字符串拷贝一份到常量池中; JDK1.7中的intern原创 2016-04-30 10:11:43 · 2035 阅读 · 0 评论 -
java-----instanceof与getClass的区别
在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:public class Test{ public static void testInstanceof(Object x) { System.out.println("x instanceof P原创 2016-04-08 12:11:41 · 33528 阅读 · 7 评论 -
java-----RTTI与反射
java在运行时动态识别对象和类信息的方式有两种:(1)传统的RTTI(Run-Time Type Identification),他假定我们编译时已经知道了所有类型;(2)反射机制,允许我们在运行时发现和使用类的信息;RTTI运行时类型标识主要表现在三个方面:(1)Class对象: 每个类都有一个Class对象,便以一个新类都会产生Class对象;(2)强制类型转换:原创 2016-04-08 09:20:29 · 1368 阅读 · 0 评论 -
java深拷贝与浅拷贝
撒原创 2016-04-07 13:44:04 · 1808 阅读 · 0 评论 -
设计模式--单例模式
说到单例模式,可能是所有23种设计模式中用的最多并且相对来说最简单的一种了,今天我们分析一下实现单例模式的不同方式,以及我们设计的单例模式有什么缺点,有什么方面需要改进等等问题,好了下面进入正题:这个模式主要用于整个系统中只能出现一次类的实例的情况下,比如全局配置信息,在介绍单例模式之前有必要介绍单例模式和该类静态变量的区别: 单例模式:(1)保证某类的实例是全局唯一原创 2016-04-05 20:59:16 · 1526 阅读 · 0 评论 -
java动态代理
代理模式是常见的设计模式之一为什么要使用代理模式?(1)授权机制: 不同级别的用户对同一对象具有不同的访问权限,可以通过代理模式来控制用户的访问权限;(2)某个客户端不能直接操作某个对象,但是又必须操作这个对象,这时候需要代理来完成这个工作,因为备操作对象可以将权利授予代理,代理可以和客户端进行交互,起到中间桥梁的作用;代理模式分为静态代理和动态代理代理模式中的角色划分:(原创 2016-04-05 10:42:25 · 1960 阅读 · 0 评论 -
获得Class对象的两种方式比较
java提供了两种方式来生成对Class对象的引用:方式1:Class clazz = Class.forName("类的全限定名");方式2:Class clazz = 类名.class;两者最大的区别:(1):方式1是饿汉式加载,而方式2是懒汉式加载的,也就是说在调用方式1这句代码时,该类中的所有static类型变量或者static块都将会加载;但是调用方式2这句代码并不会默认原创 2016-04-04 11:20:00 · 2473 阅读 · 0 评论 -
RabbitMQ系列(一):Windows下RabbitMQ安装及入门
1.Windows下安装RabbitMQ需要以下几个步骤 (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,同时将%ERLANG_HOME%\bin加入原创 2016-11-14 11:12:55 · 107139 阅读 · 37 评论