随笔分类 - JavaSE/JavaEE
摘要:###注解@FunctionalInterface ####定义 函数式接口 所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。 这种类型的接口也称为SAM接口,即Single Abstract Method interfaces ####特点 接口有且仅有一个抽象方法
阅读全文
摘要:##1、前言 缓存的使用可以大幅度提升用户的体验度,所以缓存就是必不可少的一个神器,在多线程高并发场景中往往是离不开cache的,需要根据不同的应用场景来选择需要的cache,比如分布式缓存redis、memcached,还有本地(进程内)缓存ehcache、GuavaCache、Caffeine。
阅读全文
摘要:看到了一篇比较详细的类加载博客,原文链接:https://www.cnblogs.com/ityouknow/p/5603287.html ###什么是类的加载? 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.C
阅读全文
摘要:###说一下线程的生命周期? 新建状态 用new关键字建立一个线程后,该线程对象就处于新建状态。处于新生状态的线程有自己的内存空间,通过调用start()方法进入就绪状态。 Thread t1 = new Thread(); 就绪状态 处于就绪状态线程具备了运行条件,但还没分配到CPU,处于线程就绪
阅读全文
摘要:原文链接详见:https://blog.51cto.com/lizhenliang/2164876?wx= Java 堆内存管理是影响性能的主要因素之一。 堆内存溢出是 Java项目非常常见的故障,在解决该问题之前,必须先了解下 Java 堆内存是怎么工作的。 先看下JAVA堆内存是如何划分的,如图
阅读全文
摘要:##1. 线程池的优势 总体来说,线程池有如下优势: (1)**降低资源的消耗。**通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 (2)**提高响应速度。**当任务到达时,任务可以不需要等到线程创建就能立即执行。 (3)**提高现成的可管理性。**线程是稀缺资源,如果无限制的创建,不仅会消
阅读全文
摘要:##1. 延迟加载 什么是延迟加载?延迟加载 的反义词就是 立即加载, 立即加载 是指在取得“省”对象时(此处的数据库表:省包含市),省中所有的“市”对象都已经提取到内存中,因此其非常耗费 CPU 和内存资源。有时只需要省信息,而并不需要市信息,但立即加载还是把市信息也一同提取出来,这样的情况下就要
阅读全文
摘要:##1. 缓存的使用 用户可以将查询到的实体类放到缓存中,使后面的 select 得以复用,这会提高程序的运行效率。 MyBatis 缓存分为一级缓存和二级缓存。 (一)一级缓存由 SqlSession 对象管理,每个 SqlSession 有自己所属的一级缓存。 (二)二级缓存由 SqlSessi
阅读全文
摘要:##1. 创建 SqlSessionFactory 和 SqlSession 对象 MyBatis 框架的核心是 SqlSessionFactoryBuilder、SqlSessionFactory 和 SqlSession 对象,这三者之间的创建关系如下: SqlSessionFactoryBui
阅读全文
摘要:##1. 同步问题 ###1.1 线程间的通信 管道流可以连接两个线程间的通信。 ###1.2 线程间的资源互斥共享 通常,一些同时运行的线程需要共享数据。在这种时候,每个线程就必须考虑与它一起共享数据的其他线程的状态与行为,否则就不能保证共享数据的一致性,因而也不能保证程序的正确性。 在 Java
阅读全文
摘要:##1. 创建线程 类 Thread 的构造方法如下: public Thread(ThreadGroup group, Runnable target, String name) 其中,group 指明了线程所属的线程组;target 是线程体 run() 方法所在对象;name 是线程的名称。
阅读全文
摘要:##1. 线程和多线程 ###1.1 线程的概念 提到线程,首先要从 “进程” 开始讲起。对于一般程序而言,其结构大部分都可以划分为一个入口、一个出口和一个顺次执行的语句序列。在程序投入运行时,系统从程序入口开始按语句的顺序(其中包括顺序、分支和循环)完成相应指令直至结尾,从出口退出,同时整个程序结
阅读全文
摘要:JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问题的基础,那么下面就会详细介绍 JVM内存是如何划分的。 首先要说一下JVM内存空间分为五部分,分别是:方法区、堆、Java虚拟机栈、本地方
阅读全文
摘要:##1. 什么是框架? MyBatis 就是一个操作数据库的框架,框架就是软件功能的半成品,框架提供了一个软件项目中通用的功能,将大多数常见的功能进行封装,无需自己重复开发。 ##2. 什么是对象关系映射? MyBatis 是一个基于 “ORM” 的框架,ORM 的全称是对象关系映射(Object
阅读全文
摘要:##1. 什么是反射 (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取t对象的各种信息。 (2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当
阅读全文
摘要:##1. JSP 概述 JSP(Java Server Pages,Java 服务器页面),是在 HTML 文件中嵌入 Java 代码的一种技术,JSP 文档的扩展名为 .jsp。 知乎大佬讲的很详细:https://zhuanlan.zhihu.com/p/42343690 一个 JSP 页面中包
阅读全文
摘要:##1.1 了解 Servlet 动态网页,不仅可以动态显示数据,还可以与用户做交互,如完成登录、注册等一系列动作。不同用户访问相同网页时,经常会发现所显示的内容不同,这样的网页就是经过服务器动态生成的。 Servlet 就是一种动态网页技术。Servlet 是由 Java 语言编写的 Web 服务
阅读全文
摘要:##1. JDBC 概述 Java 数据库编程是建立在 JDBC 基础上的。JDBC(Java Database Connectivity,Java 数据库连接)是一种可用于执行 SQL 语句的 Java API,是由一些 Java 语言编写的类和接口组成的,其重要作用是建立与数据库系统的连接并发送
阅读全文
摘要:##1. 基本概念 迭代器(iterator)是一个能遍历数据集合的对象。在遍历过程中,可以查看数据项、修改数据项、添加数据项及删除数据项。 Java 类库中含有多个接口,定义了用于迭代器的方法。下面介绍其中的两个接口 Iterator 和 Iterable,它们分别来自 java.util 和 j
阅读全文
摘要:##1. 泛型定义 Java 语言允许在类或接口的定义中,用一个占位符替代实际的类类型。这个技术称为泛型(generic)。通过使用泛型,可以定义一个类,其对象的数据类型由类的使用者在以后确定。 通过使用泛型技术,定义时,不需要指明具体的数据类型,而是使用泛型数据类型替代实际的数据类型,从而定义一个
阅读全文