- 博客(8)
- 收藏
- 关注
原创 Serializable序列化的简要说明
持久化对象的介绍:“持久化”意味着对象的“生存时间”并不取决于程序是否在执行,持久化对象存在于对象每一次的调用之间,通过序列化一个对象,将其写入磁盘,以后程序每一次调用的时候都重新恢复那个对象,就能圆满实现一种“持久”的状态。提供主要特征的支持:远程方法调用使本来存在于其他机器的对象可以表现出好像在本地机器上的行为。将消息发给远程对象,需要通过对象序列化来传输参数和返回值。使用一个Java...
2018-10-27 12:16:42
176
原创 EJB与JAVA BEAN的区别?
Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件...
2018-10-26 15:47:45
270
原创 Java的初始化顺序
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:InitialOrderTest.class运行以上代码,我们会得到如下的输出结果:静态变量静态初始化块变量初始化块构造器这与上文中说的完全符合。那么对于继承情况下又会怎样呢?我们仍然以一段测试...
2018-10-26 15:40:59
109
1
原创 堆和栈的区别
首先我们要了解在JVM内存是分为:寄存器、本地方法区、方法区、栈内存、堆内存。我们着重说下堆和栈的异同:栈:栈内存是一片内存区域,存储的都是局部变量,凡是定义在方法中的全是局部变量,for循环的内部定义也是局部变量,首先要加载函数才能进行局部变量的定义,而且局部变量也有作用域,只在本方法有效,一旦离开了本作用域,变量就会被释放。因为局部变量的生命周期很短,所以说栈内存的更新速度很快。堆:...
2018-10-26 14:48:52
127
原创 为什么JVM内存区域分为线程共享和非线程共享
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其中Method Area(方法区) 和 Heap (堆)是线程共享的 ,VM Stack,Na...
2018-10-11 20:35:16
3832
转载 关于线程中的锁
锁类型可重入锁:广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者class),这样的锁就叫做可重入锁。即在执行对象中所有同步方法不用再次获得锁。ReentrantLock和synchronized都是可重入锁。举个简单的例子,当一个线程执行到某个synchronized方法时,比如说method1,而在method1中会调...
2018-09-21 19:28:56
3161
转载 单例模式在多线程中的安全问题
前言:Java的单例模式是一种常见的设计模式单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。单例模式的适用场景:1.对于那种经常实例化但是过一会儿就被销毁的对象适合使用单例模式。2.对于创建对象需要消耗很多资源的对象。如:数据库连接池对象,线程池对象等3.只需要一个对象保证全局的一致性的。如...
2018-09-21 09:48:38
2027
原创 二分查找法
前言:二分查找法又被称为折半查找,是一种高效率的查找方法。在未接触二分查找法的时候,我们最常用的方法是对数组进行遍历查找。但是从时间复杂度上来讲,遍历查找的时间复杂度为O(n)而二分查找法的时间复杂度为O(lgn),所以二分查找是一种十分高效的算法(缺点:查找对象必须为数组,而且是有序的)。原理:把数组分为三部分,即取一个中间值,把需要查找的值与这个中间值进行比较,这时候会出现三种情况,中间...
2018-09-18 18:58:03
235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人