垃圾收集器与内存分配策略 垃圾收集器与内存分配策略1、那些内存需要回收2、对象已死吗?1、引用计数法2、可达性分析法3、再谈引用3、垃圾收集算法1、标记-清除算法2、复制算法3、标记-整理算法4、分代收集算法5、堆内存分区详解6、垃圾收集器1、新生代收集器:1、Serial收集器2、ParNew 收集器3、Parallel Scavenge收集器2、老年代收集器1、Seria...
JVM入门-自动内存管理机制 1、了解历史1、JDK、JRE、JVM 之间的关系2、Java 的发展史以后补充3、Jvm发展史以后补充2、自动内存管理机制1、Java内存区域与内存溢出异常1、运行时数据区域(5)Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟...
JUC_并发容器 并发容器1、概述JUC提供了用于多线程上下文中的Collection实现与高效的、可伸缩的、线程安全的非阻塞FIFO队列。1、List CopyOnWriteArrayList CopyOnWriteArrayList相当于线程安全的ArrayList。 2、Set CopyOnWriteArraySet 相当于线程安全的 Hash...
JUC-Lock Lock (JUC锁)1、概述2、Lock与ReentrantLock1、概述2、API3、代码3、AQS1、概述2、总结4、Condition5、ReentrantReadWriteLock1、概述2、使用场景3、特性6、StampedLock1、概述2、代码3、StampedLock 原理7、CountDownLatch、Semaphor...
JUC-Atomic(原子类) Atomic(原子类)1、概述2、详情3、常见问题1、原子类可以替换锁么2、原子类和java.lang.Integer等类的区别4、原子方式更新单个变量1、API2、变量的原子访问和更新3、实现原理5、原子方法更新数组1、API2、数组的原子访问和更新3、实现原理6、原子方式更新引用1、API2、引用的原子访问和更新7、原子方式更新类的指定vo...
JUC-概述 参考链接1、概述JUC是java.util.concurrent包的简称1、JUC的整体结构2、atomicjuc包下的原子类3、locks以下是 juc 中的锁,也称显示锁4、collectionsJUC 下面的并发容器5、ThreadPool以下是JUC中与线程池有关的类6、tools以下是JU...
CAS算法原理 CAS算法原理1、什么是CAS?2、CAS算法理解CAS算法原理1、什么是CAS?CAS:Compare and Swap,即比较再交换。jdk5增加了并发包java.util.concurrent.*,其下面的类使用 CAS 算法实现了区别于 synchronouse(同步锁)的一种乐观锁。JDK 5之前 Java 语言是靠 synchronized 关键字...
多线程情况下建议使用while而不是if 在多线程的编程实践中,wait()的使用方法如下:synchronized (monitor) { //判断条件是否得到满足 while(!locked) { //等待唤醒 monitor.wait(); } //业务逻辑 .......}那为什么非要while判断,而不采用if判断呢?synchronize...
volatile 代码解析 volatile 代码解析1、volatile 关键字,使一个变量在多个线程间可见2、volatile不能替代synchronizedvolatile 代码解析1、volatile 关键字,使一个变量在多个线程间可见A B线程都用到一个变量,java默认是A线程中保留一份copy,这样如果B线程修改了该变量,则A线程未必知道 使用volatile关键字,会让...
volatile解析 Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有...
BIO、NIO、AIO通信机制理解 BIO、NIO、AIO通信机制理解1、BIO的理解2、 伪异步 I/O 编程3、NIO (非阻塞 IO)4、AIO(异步非阻塞IO)5、总结BIO、NIO、AIO通信机制理解1、BIO的理解首先我们通过通信模型图来熟悉下BIO的服务端通信模型:采用BIO通信模型的服务端,通常由一个独立的Acceptor 线程负责监听客户端的连接(TCP),它接收到客...
多线程基础 一、多线程基础1、多线程引入学习多线程之前我们首先来看一下,下图程序代码的执行顺序==单线程:如果程序只有一条执行路径,那么该程序就是单线程程序====多线程:如果程序有多条执行路径,那么该程序就是多线程程序==2、什么是多线程要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在。1、什么是进程?进程就是正在运行的程...
NIO入门 1、Java NIO 简介深入部分请移步Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的 IO 有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。 传统IO NIO 面向流(Stre...
java中并发常用工具类 前言:在你无聊的时候,想想比你优秀还努力的人,也许就不觉的无聊了今天下午没事干把买的java并发编程艺术这本书拿出来看了看,看了下也记不住,还是好记性不如烂笔头,今天讲四个并发中可能会用到的工具类,分别是:CountDownLatchCyclicBarrierSemaphoreExchange...
对TimeUnit的理解 对TimeUnit的理解1、什么是TimeUnitTimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过...
Spring注解驱动开发 概述组件注册注册Bean@Bean@ComponentScan设置Bean属性和动态注册Bean@Scope@Lazy@Conditional@ImportFactoryBean接口Bean的声明周期bean的后置处理器属性赋值@Value@Autowire.@Qualifier@Primary@Resource , @Inject@Auto...
Struts2入门-04 struts2拦截器拦截器的概述拦截器的实现原理拦截器和过滤器的区别自定义拦截器跟配置创建三种方式拦截器的配置(2种方式)struts2(标签)标签体系struts2的标签结构控制标签数据标签表单标签(略)非表单标签struts2拦截器拦截器的概述拦截器就是AOP(Aspect-Oriented Programming...
Struts2入门-03 OGNL表达式概述OGNL的作用OGNL的三要素使用OGNL准备工作语法OGNL与Struts2的结合结合原理Struts2与ognl结合的体现参数接收配置文件struts标签(明天讲)值栈详解什么是值栈值栈的内部结构值栈的创建和ActionContext对象的关系获取到值栈的对象向值栈中保存数据从值栈中获取值EL表达式也会获取到值栈中的数据...
Struts2入门-02 结果页面跳转结果页面的两种方式结果页面类型访问ServletAPI方式原理通过ActionContext(常用)通过ServletActionContext通过实现接口的方式总结如何获取参数拓展MVCAction的声明周期属性驱动获得参数模型驱动获得参数 ModelDriven封装集合类型的数据封装到List,map集合中...
Spring整合JPA 导入jar包配置配置文件db.propertiesapplicationContext.xmlDao层需要注意的地方测试代码导入jar包配置配置文件db.propertiesjdbc.user=rootjdbc.password=rootjdbc.driverClass=com.mysql.jdbc.Driverjdbc.jdbcU...