Java相关
文章平均质量分 96
xyq1212
这个作者很懒,什么都没留下…
展开
-
Java基础
C++&Java Java是更纯粹的面向对象的语言,C++为了兼容C还保留了一些面向过程的东西 Java经过编译得到字节码文件,再经过JVM的解释得到机器指令文件,因此可以跨平台运行;C++编译直接得到的是机器指令文件 Java有垃圾回收机制,可以释放未存活的Java对象占用的空间;C++创建对象之后需要调用delete方法销毁 C++中有多继承;Java只支持单继承,可以通过接口实现多继承 Java运行速度比C++更慢 String、StringB原创 2020-12-09 17:58:09 · 71 阅读 · 0 评论 -
Java注解
1.定义注解是Annonation接口的一个子接口,注解的作用是为当前读取该注解的程序提供判断依据。注解的具体实现类是Java运行时生成的动态代理类,通过反射获取注解时,返回的是Java运行时生成的动态代理对象。2.常见注解及其意义注解包括自定义的注解、JDK内置注解和第三方框架提供的注解2.1 JDK内置注解元注解修饰注解的注解@Target:表明作用范围,包括类、接口、字段、方法、参数、构造函数、局部变量、注解等 @Retention:生命周期,包括SOURCE(被编译器丢原创 2020-12-08 10:52:02 · 59 阅读 · 0 评论 -
Java反射机制
1.前提手动编写的类被编译后会得到一个Class对象,该Class对象保存在同名的.class文件中,可以表示类的相关信息。每个通过关键字class标识的类,在内存中有且只有一个对应的Class对象Class对象只存在私有构造函数,对应的Class对象只能由JVM创建和加载Class对象用于在程序运行过程中提供或获取某个对象的类型信息,对反射技术很重要2.反射机制Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到Class原创 2020-12-08 10:36:56 · 65 阅读 · 0 评论 -
Spring AOP
1. 简介AOP是对面向对象编程OOP的补充和完善,用于处理系统中分布于各个模块的横切关注点,OOP适合定义纵向关系,但是不适合定义横向关系,无法解决减少出现在大多数代码中的日志管理和事务管理的代码的问题。AOP把软件系统分为了两个部分,核心关注点和横切关注点,业务处理的主要流程是核心关注点,横切关注点发生在核心关注点的各个位置处,包括权限认证、日志、事务管理等 。AOP利用“横切”技术,将影响了多个类的公共行为封装到一个可重用模块中,减少系统的重复代码,降低模块之间的耦合度,有利于未来的可维护性和原创 2020-12-08 10:23:56 · 79 阅读 · 0 评论 -
Spring IOC
1.Spring框架的优点 Spring是一个轻量级的非侵入式框架,不强制要求实现Spring框架中的接口或实现Spring框架中的类,使应用程序对框架的依赖最小化; 提供IOC容器。使用IOC容器管理对象以及对象之间的依赖关系,当对象之间的依赖关系发生变化时,只需要修改配置文件,不需要修改代码; AOP,面向切面编程,是对OOP的补充和完善,将所有的横切关注功能配置到切面中,通过配置的方式将横切关注功能动态添加到目标代码上,进一步实现业务逻辑和系统服务之间的分离; MV原创 2020-12-08 09:58:32 · 74 阅读 · 0 评论 -
线程同步之Synchronized&CAS&各种锁的介绍及对比
1.Synchronized1.1 简介Java的关键字,提供了并发场景下的数据可见性和原子性,保证线程安全1.2 应用方式修饰实例方法:对当前实例加锁,当两个不同的实例对象同时操作共享资源时,可能出现线程安全问题。public synchronized void increase()修饰静态方法:对当前类的Class对象加锁,当多个实例对象同时操作静态方法中的共享资源时,可以保证线程安全。线程A调用一个实例对象的非static synchronized方法,线程B调用类的stat原创 2020-12-06 23:22:49 · 490 阅读 · 0 评论 -
JVM优化
JVM常用参数-Xms:初始堆大小-Xmm:最大堆大小-Xmn:年轻代大小-Xss:线程栈大小,默认1M-XX:NewRatio:年轻代和年老代的比值-XX:SurvivorRatio:Eden和两个Survivor的比值-XX:UseParallel:年轻代设置并使用Parallel Scavenge-XX:UseConcMarkSweepGC:年老代设置并使用CMSJVM配置方面设置初始堆大小-Xms和最大堆大小-Xmm相同,避免了堆动态变化的过程;新生代尽量原创 2020-12-06 22:32:36 · 174 阅读 · 0 评论 -
JVM垃圾回收(GC)
1.简介垃圾回收器的主要工作区域是堆内存,JDK1.8之后JVM的堆区分为年轻代和年老代,这样做可以优化GC性能,因为大多数对象存活时间都比较短,对象新创建时将其放入年轻代,年轻代空间满了之后进行回收,称为Minor GC,回收时扫描年轻代,可以腾出来大量的空间。年老代内存占满之后执行Full GC回收年老代的内存空间。总内存=JVM内存+系统内存JVM内存=堆+元数据空间+虚拟机栈+本地方法栈+程序计数器堆=年轻代+年老代年轻代=Eden区+Survivor区,Survivor区分为大原创 2020-12-06 21:48:04 · 91 阅读 · 0 评论 -
JVM运行时数据区&Java内存管理JMM
JVM运行时数据区Java运行时数据区是指JVM运行过程中将数据分区域存储,强调对内存空间的划分。JVM运行时数据区包括线程共享区域和线程私有区域两大部分,线程共享区域主要是指堆和方法区(JDK8之后移除该区域,改为元数据空间),线程私有区域主要是指虚拟机栈、本地方法栈和程序计数器。堆:线程共享的内存区域,虚拟机启动时创建,是JVM中最大的内存区域,用于存储对象和数组,JDK8之后将字符串常量池也移动到了堆中,堆是垃圾收集器主要的工作区域; 方法区:线程共享的内存区域,存放JVM已加载的类的信原创 2020-12-06 17:38:23 · 107 阅读 · 0 评论 -
Java类加载器
Java类加载器图片来源类加载器自上至下的顺序分别为Bootstrap ClassLoader、Extension ClassLoader、APP ClassLoader和CustomClassLoader。 Bootstrap ClassLoader:引导类加载器,加载$JAVA_HOME/lib/rt.jar包中的类,C++实现 Extension ClassLoader:扩展类加载器,加载Java平台中扩展功能的一些jar包 APP ClassLoader:应原创 2020-12-05 09:57:48 · 141 阅读 · 1 评论 -
HashMap
原理存储key-value对,加快查找速度,是非线程安全的哈希散列,其底层原理是数组+链表+红黑树。红黑树是JDK1.8新加进来的,为了解决哈希冲突太严重导致查找时间复杂度变为O(n)的问题,当链表长度大于8时,链表会自动转换为红黑树,当链表长度小于8时,红黑树会自动退化为链表。注:红黑树是一棵高度平衡的二叉搜索树,时刻维持树高为logn,可以保证查找性能为O(logn),在插入或删除操作时通过“旋转”维持树高。hash冲突的解决方案开放地址法线性探测:从冲突位置依次向后寻找空闲位置,会原创 2020-12-05 09:40:41 · 87 阅读 · 1 评论 -
Java线程池
线程池作用降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程池七大参数 corePoolSize:核心线程数量 maximumPoolSize:最大线程数量 keepAliveTime:非核心空闲线程最大存活时间 unit:存活时间单位 workQueue:阻塞队列 handle:线程池饱和策略事件 threadFa..原创 2020-12-04 23:33:21 · 78 阅读 · 0 评论