
JAVA
531396533
这个作者很懒,什么都没留下…
展开
-
Maven3构建
一 : pom文件 由下面四个部分组成1 项目基本信息:这个配置会指导maven构建出相应的组件,并把他存在maven资源库中 2 构建配置:<build>中包含执行maven构建周期目标所需要的插件及相应配置,要配置构建插件,需要把它放在pom.xml文件的<build><plugins>中。 3 依赖管理:<dependenci...原创 2015-10-07 12:55:20 · 109 阅读 · 0 评论 -
class 加载
一: 类加载的时机 1: 加载 java虚拟机中并没有进行强制约束2:初始化时机,只有下面5种情况,new关键字,反射调用,继承,虚拟机主类的main,动态语言句柄(groovy) 二: 过程 1: 加载 : 将类全限定名生成class,将class文件存储内容加载内存中,方法区中生成Class对象2: 验证 : 看看虚拟机版本是否满足 3: 准备 : 初...原创 2016-03-29 23:59:06 · 85 阅读 · 0 评论 -
java并发容器
一: 同步容器都是线程安全的如vector 和 hashtable ,collections.synchronized 实现线程安全的是通过,将它们的状态封装起来,并对每个公有方法都进行同步。但在一些复合操作时,还是要加锁来保护复合操作。在容器在迭代过程中被修改时,会抛异常 二: 并发容器可以改进一下同步容器的性能: 因为并发容器增加了对一些常见复合操作的支持,迭代器都没有加锁。...原创 2016-03-30 13:11:43 · 78 阅读 · 0 评论 -
结构化并发
1: Executor 框架 任务是一组工作单元,而线程是使任务异步执行的机制。 2:任务调度: ScheduledThreadPoolExcutor 类提供了任务调度。 3:Callable和future 是可以带返回值 ...原创 2016-03-30 17:46:26 · 381 阅读 · 0 评论 -
显示锁
1 : jdk1.5 增加了一种新的机制,ReentrantLock 2 : Lock 与 ReetrantLock : 提供了一种无条件,可轮询,定时的以及可中断的锁获取操作,所有加锁和解锁的方式都是显示的。3: 内置锁无法实现非阻塞结构的加锁规则4: 显示锁可以有效的避免死锁情况。5: ReentrantLock的构造函数中提供了两种公平性选择。非公平的...原创 2016-03-30 20:21:12 · 98 阅读 · 0 评论 -
排序算法时间度
排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳定O(log2n)~O(n)选择排序O(n2)O(n2)稳定O(1)二叉树排序O(n2)O(n*log2n)不稳定O(n)插入排序...原创 2016-03-30 21:41:57 · 128 阅读 · 0 评论 -
java 虚拟机垃圾回收和内存分配
一、对象是否存活的判断1: 引用计数器 (缺点 循环引用)2: 可达性分析 二、垃圾收集算法1、标记清除 ,会产生碎片2、复制算法 ,划分为大小相等的两块,只能使用一半的内存空间3、标记整理,通过将存活对象都向一段移动,然后将边界的内存清理4、分代算法: 新生代使用使用复制算法,老年代使用标记清除和标记整理hotspot实现算法: 枚举根节点、安全点、安全区...原创 2016-04-04 10:58:53 · 106 阅读 · 0 评论 -
java 虚拟机监控
一、jdk 命令行工具1: jps 查看虚拟机进程2: jstat 监控虚拟机各种运行状态3: jinfo 查看和调整虚拟机各项参数4: jmap 用于生成堆存储快照 dump5: jhat 将jmap 生成的dump 展现出来6: jstack 堆栈跟踪工具 二、可视化工具1: JConsole 和 Visual VM ...原创 2016-04-04 11:12:17 · 143 阅读 · 0 评论 -
java 虚拟机字节码执行引擎
一 运行时栈帧结构 : 栈帧分配多少内存,与运行时无关1: 局部变量表 : 容量以slot 槽为单位一个slot 占用32位长度的内存空间,可以存的类型有boolean、byte、char、short、int、float、reference、retuanaddress .reference 类型 : 表示对象引用、returnaddress 类型 指向一条字节码指令的地址二个s...原创 2016-04-04 12:20:42 · 123 阅读 · 0 评论 -
定义线程池 和 死锁产生及避免
ThreadPoolExecutor 可以定义更灵活的线程池。1 : 线程池死锁如果任务依赖于其他任务,可能产生死锁。 可以通过调整线程池的大小 2: 运行时间较长的任务可以限定任务等待资源的时间,不要无限制的等待 3: 锁顺序死锁当一个程序每次获得两次以上的锁时候,就可能产出死锁。解决死锁的方式: 可以使用显示锁 ,手动释放锁 ...原创 2016-04-04 16:56:24 · 401 阅读 · 0 评论 -
class 文件格式
一: class 文件是一组以8位字节为基础的二进制流。 二: class 文件格式包含两种数据类型:无符号数 : u1 ,u2,u4,u8 代表1个字节、2个字节、4个字节、8个字节的无符号数表: _info 结尾来表示 包含以下数据项1: 魔数 (判断是否可以被虚拟机支持)和 版本 2: 常量池 (最大的数据项,也是第一使用表类型数据项) 常量池...原创 2016-03-29 23:33:15 · 127 阅读 · 0 评论 -
调优分析
1、高性能硬件上的程序部署策略 :问题: 在部署上,使用过大的堆内存进行回收时带来的长时间的停顿。 原因:对像的生存周期都应该是请求级或者页面级。能实现在超大堆中正常使用而没有full gc,使用超大堆内存时,网站响应速度才会比较有保证。在使用超大堆的前提是有把握把应用程序的full gc控制足够低。 方法:通过32位jdk集群,每个进程2GB。 通过apache 服务作为...原创 2016-03-29 21:30:49 · 121 阅读 · 0 评论 -
JAVA并行程序开发及优化一 (多线程设计模式)
一 多线程设计模式 1、Future模式 先返回一个虚拟的数据,可以利用这部分时间做一些其他业务处理,然后再得到真实的数据。 jdk 内置实现了这种模式 : 使用的是FutureTask类 和 Callable接口 2、Master-Worker模式 核心思想 : 系统由两类进程协作工作Master进程和worker进程。Master进程负责接收和...原创 2016-01-13 17:38:03 · 210 阅读 · 0 评论 -
JAVA核心一(初始化和清理)
1:默认构造器没有创建构造器时,编译器会帮你创建一个默认无参构造器。如果定义一个构造器,编译器就不会再帮你创建。2:this关键字this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。只有当需要明确指出对当前对象引用时,才需要使用this关键字。当需要返回对当前对象的引用时就常常 return this;this还可以将当前对象传递给其他方法;在构造器中调用构造器可...原创 2015-10-08 11:09:58 · 103 阅读 · 0 评论 -
JAVA核心二(复用类)
1:组合,只需要在新的类中产生现有类的对象初始化引用:在定义对象的地方,能够在构造器被调用前初始化,在构造器中,就在正要使用这些对象前(惰性初始化),使用实例初始化 2:继承,按照现有类的类型来创建新类如果没有默认的基类构造器,或者想调用一个带参的基类构造器,就需要使用super显示地编写调用protected关键字:当允许子类访问时,并且非子类不可以访问时final关...原创 2015-10-08 19:23:42 · 108 阅读 · 0 评论 -
JAVA并发
一:块结构并发同步与锁synchronized既可以用在代码上也可以用在方法上,它表明在执行整个代码块或方法之前线程必须取得合适的锁。对于方法,取得对象实例锁(静态方法是类锁),对于代码块,指明要取得那个对象的锁 熟悉同步的知识1:只能锁定对象,不能锁定原始类型2:被锁定的对象数组中的单个对象不会被锁定3:同步方法可以视同为包含整个方法的同步(this){}代码块 ...原创 2015-11-03 18:17:33 · 80 阅读 · 0 评论 -
JAVA并发应用程序的构件(一)
JAVA并发应用程序的构件一、原子类:java.util.concurrent.atomtic中有几个名字以Atomic打头的类。它们的语义基本上和volatile一样。可以避免在共享数据上出现竞争危害的办法如:AtomicLong和AtomicInteger 二、线程锁:java.util.concurrent.locks块结构同步方式的几个缺点锁只有一种类型...原创 2015-11-13 16:38:11 · 186 阅读 · 0 评论 -
JAVA并发应用程序的构件(二)
三、锁存器(闭锁)CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 构造方法参数指...原创 2015-11-13 17:00:01 · 129 阅读 · 0 评论 -
JAVA内存
一:Java虚拟机和Java内存区域概念java虚拟机运行时数据区:有一些区域时全局共享的,随着虚拟机启动而创建,随着虚拟机退出而销毁,一些区域时线程私有的,随着线程开始和结束而创建和销毁。 HotSpot 是主流虚拟机 运行时数据区的划分1、程序计数器2、java堆:线程共享3、java栈4、本地方法栈5、方法区:线程共享 四、内存泄露和...原创 2015-11-17 16:28:06 · 93 阅读 · 0 评论 -
Spring容器
一 、通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作原创 2015-12-02 19:16:53 · 84 阅读 · 0 评论 -
JAVA核心三(泛型)
泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且有编译器来保证类型的正确性(不在运行时才检查出来) 可以暂时不指定类型,而是稍后再决定具体使用什么类型,可以使用类型参数,用尖括号括住,放在类名后面。然后在使用这个类的时候,再用实际的类型替代此类型参数。T就是类型参数。 一、泛型类<T>在定义一个类时,后面使用<T> 在构造方法中,...原创 2016-01-07 13:03:03 · 112 阅读 · 0 评论 -
JAVA并发基础知识
对象的状态 : 指存储在状态变量中的数据 同步机制:synchronized,它提供了一种独占锁,但同步这个术语还包括volatile类型的变量,显式锁以及原子变量。注意 : 如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出错,可以通过下面的三种方法来解决。不在线程之间共享该状态变量、将状态变量修改为不可变的变量、在访问状态变量时使用同步。 ...原创 2016-01-11 09:07:42 · 101 阅读 · 0 评论 -
pom文件(本地邮箱服务器配置)
本地邮箱服务器配置<_mail_host>smtp.jd.com</_mail_host><_mail_port>25</_mail_port><_mail_username>wangle1</_mail_username><_mail_password>lwyx@#djO0<原创 2016-04-07 10:46:51 · 2033 阅读 · 0 评论