随笔分类 - Java
摘要:创造型模式(关注于对象的创建,同时隐藏创建逻辑):工厂模式,抽象工厂模式,单例模式,建造者模式,原型模式 结构型模式(关注类和对象之间的组合):适配器模式,过滤器模式,装饰模式,享元模式,代理模式,外观模式,组合模式,桥接模式 行为型模式(关注对象之间的通信):责任链模式,命令模式,中介者模式,观察
阅读全文
摘要:介绍 SpringMVC是一个实现了MVC设计模式的轻量级web层框架,使用起来简单方便 与structs2的对比 共同点:都是基于MVC设计模式的表现层框架,底层实现都离不开原始的Servlet,处理请求的机制都是一个核心控制器 区别:SpringMVC的入口是servlet,而Structs2是
阅读全文
摘要:异常类型: 检查性异常:比如用户错误或问题引起的异常,这是程序员无法预见的。 运行时异常:是可能被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时被忽略 错误:不是异常,而是脱离程序员控制的问题,在代码中通常被忽略,或是程序无法处理的错误
阅读全文
摘要:定义 序列化:指把Java对象转换为字节序列的过程 反序列化:把字节序列恢复为Java对象的过程 序列化最重要的作用:在传递和保存对象时,保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中 反序列化最重要的作用:根据字节流中保存的对象状态及描述消息,通过反序列化重
阅读全文
摘要:脏读(强调同一事务,两次,未提交) 脏读是指当一个事务正在访问数据,并且对数据进行了修改。而这种修改还没有提交到数据库中,这时,另一个事务也访问这个数据,然后使用了这个数据 例子: 1.财务将张三的工资从1000修改成了8000(但未提交事务) 2.此时张三读取了自己的工资,发现变成了8000 3.
阅读全文
摘要:1、使用this引用成员变量 在一个类的方法或构造方法内部,可以使用this.成员变量名来引用成员变量 注意:函数参数和成员变量同名进行区分 2、使用this关键字引用构造方法 注意:只能引用一个构造方法,且在第一行 3、使用this代表自身对象(默认) 4、引用成员方法 注意:this不能用在st
阅读全文
摘要:定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 使用场景: a.要求产生唯一序列号 b.web中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来 c.创建的一个对象需要消耗的资源过多,比如I/O与数据库的连接等 单例模式的几种实现方式 1、懒汉式(多线程不安全) public
阅读全文
摘要:a.set是collection接口的一个子接口,是无序的,不包含重复元素;list接口继承了collection接口一定义一个允许重复项的有序集合,最大的特点是保证了元素特定的顺序 b.set查询元素效率低,删除和插入效率高,插入和删除不会引起元素位置的变化;List和数组类似,可以动态增长,查找
阅读全文
摘要:a.Lock是一个接口,而synchronized是Java关键字,synchronized是内置的语言实现 b.synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则可能造成死锁现象,因此使用Lo
阅读全文
摘要:定义 进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位 线程:是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位。 区别: a.进程是资源分配最小单位,线程是程序执行的最小单位 b.CPU切换一个线程比切换进程
阅读全文
摘要:volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住. volatile仅能使用在变量级别,synchronized则可以使用在变量,方法. volatile仅能实现变量的修改可见
阅读全文
摘要:synchronized:修饰方法,代码块。 互斥锁(对象锁),同步锁定,即保证了可见性又保证了原子性 Volatile:修饰变量,保证了可见性,但是不保证原子性,同时禁止指令重排序 可见性:是因为JMM将工作内存置为无效,每次线程读取和写入数据都是直接操作了主内存(lock指令的作用) 禁止指令重
阅读全文
摘要:Spring 一个轻量级Java开发框架,目的是解决企业级应用开发的复杂性,核心特征是依赖注入和面向切面编程。 Spring中用到的设计模式 工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例 单例模式:Bean默认为单例模式 代理模式:Spring的AOP功能用到了JDK的
阅读全文
摘要:JMM主要是为了规定线程和内存之间的关系,根据JMM的设计,系统存在一个主内存,Java中所有变量都存储在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存,工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中执行的,线程之间无法相互直接访问,变量传递均需要通过主存完
阅读全文
摘要:1、Serial(串行)收集器:简单高效,单线程收集器,单线程的意义不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在进行垃圾回收时,必须暂停其他所有线程,直到它收集完成 2、ParNew收集器 Serial收集器的多线程版本,除了使用多线程进行垃圾收集外,其余行为(控制参
阅读全文
摘要:标记清除算法 标记和清除两个阶段,首先标记出所有要回收的对象,在标记完后同一回收所有被标记的对象 缺点: 1)效率问题:低 2)空间问题:标记清除后会产生大量不连续的问题。空间碎片太多会导致以后再程序运行过程中需要分配大对象时,无法找到足够的连续内存而不得不发出另一次垃圾收集动作 复制算法 将可用内
阅读全文
摘要:强引用 在程序代码中普遍存在,类似”Object obj=new Object()",只要强引用还在,垃圾收集器就永远不会回收掉被引用的对象,即使内存不足,抛出OutOfMemorryError错误 软引用 当一个对象具有软引用,类似于一个可有可无的生活用品。如果内存空间充足,垃圾回收器就不会回收它
阅读全文
摘要:1、如何在Java中判断对象已经死亡? 引用计数法 给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1;任何时刻计数器值为0的对象就是不可能被使用的 反例:对象之间相互循环使用 指两个对象相互引用着对方之外,无任何其他引用。因为它们互相引用对方,导致计数器
阅读全文
摘要:1、Lock是一个接口,而synchronized是一个Java关键字,synchronized是内置的语言实现,Lock是代码层面的实现 2、Lock可以选择性的获取锁,如果一段时间获取不到,咋可以不要了。synchronized不行,不达目的不罢休。借助这个特性,Lock可以避免死锁,而sync
阅读全文
摘要:1、抽象类和接口有什么异同 抽象类和接口都不能被实例化,但可以定义抽象类和接口的引用 一个类如果继承了某个抽象类或者实现了某个接口,则都需要对其中的抽象方法全部进行实现,否则该类任然需要被声明为抽象类 接口比抽象类更加抽象,抽象类中可以定义构造器,可以有很多抽象方法和具体方法,但是接口不能定义构造器
阅读全文

浙公网安备 33010602011771号