随笔分类 - Java
摘要:前言 往往被问到Java与C/C++有什么区别的时候,最先想到的答案就是Java可与自动回收内存垃圾。 在JVM学习中,垃圾回收几乎是最重要的知识点。 那么,自动垃圾回收机制到底是如何实现的呢,下面我们来梳理一遍。 什么是垃圾回收 垃圾回收(Garbage Collection)诞生于1960年 M
阅读全文
摘要:前言 类装载器子系统是JVM中非常重要的部分,是学习JVM绕不开的一关。 一般来说,Java 类的虚拟机使用 Java 方式如下: Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。 类加载器负责读取 Java 字节代码,并转换
阅读全文
摘要:前言 对象是Java中最常被提到的概念,也是Java的灵魂,Java中一切皆是对象。 JVM是Java的根基,理解灵魂与根基是如何融合的,对于理解Java本身至关重要。 对象的创建 对象的创建从Java语言层面上,往往就是一个简单的new即可搞定,而深入JVM的底层,可就复杂的多了。 JVM中对象的
阅读全文
摘要:运行时数据区域 总览 JDK. 1.7 之后版本略有不同 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。 有必要深入了解这块的内容,因为它将决定服务器性能,除此之外还有助于快速定位虚拟机的相关Error。 首先来对整个运行时区域有一个整体的认识。 如下图
阅读全文
摘要:前言 本文代码中有用到一些注解,主要是Lombok与junit用于简化代码。 主要是看到一堆代码会很乱,这样理解更清晰。如果没用过不用太过纠结。 对象的拷贝(克隆)是一个非常高频的操作,主要有以下三种方式: 直接赋值 拷贝: 浅拷贝 深拷贝 因为Java没有指针的概念,或者说是不需要我们去操心,这让
阅读全文
摘要:阅读本文之前建议先了解动态代理,可以参看我的另一篇博客 轻松理解 Java 静态代理/动态代理 Spring AOP 简介 Spring AOP 的基本概念 AOP (Aspect-Oriented Programming),即 面向切面编程, 它与 OOP (Object-Oriented Pro
阅读全文
摘要:理解Java动态代理需要对Java的反射机制有一定了解 什么是代理模式 在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。 例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等
阅读全文
摘要:Spring IoC 概述 IoC:Inverse of Control(控制反转) 控制反转不是一种技术,而是一种思想。 既然说是反转就说先明白什么是正,什么是反 正控:就是我们平时最常见的那种使用形式,要使用某个对象,需要自己去负责对象的创建,属于自力更生。 反控:若要使用某个对象,无需自己创建
阅读全文
摘要:Maven由于它的约定大于配置,可能在开发过程中遇到我们写的配置文件,无法被导出或者生效的问题,尝试在Maven中加上如下配置。 <!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> <directory>sr
阅读全文
摘要:一、Socket基本案例 Server端 package demo1; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; publ
阅读全文
摘要:Servlet概述 为什么要学习Servlet Java Web的演变过程大概可以分为4个阶段: Servlet + jdbc + jsp Spring + Struts2+ Hibernate(SSH) Spring + SpringMVC + Mybatis(SSM) 微服务阶段 前两个阶段基本
阅读全文
摘要:什么是CAS CAS 即 compare and swap,比较并交换。 CAS是一种原子操作,同时 CAS 使用乐观锁机制。 J.U.C中的很多功能都是建立在 CAS 之上,各种原子类,其底层都用 CAS来实现原子操作。用来解决并发时的安全问题。 并发安全问题 举一个典型的例子i++ public
阅读全文
摘要:什么是 Stream流式计算 在 Java8 之前,如果我们想重新排序合并数据,一般是通过 for 循环或者 Iterator 迭代等方式进行操作。 但是这两种方式通常在数据量比较大的情况下,效率比较低。 在Java8中,添加了一个新的接口Stream,可以通过 Lambda 表达式对集合进行各种非
阅读全文
摘要:Java四大函数式接口 函数式接口: 只有一个方法的接口 Consumer<T>消费型 给定一个参数,没有返回值 void accept(T t); Consumer<String> c = (x) -> System.out.println("Hello World"); Supplier<T>提
阅读全文
摘要:线程池的优点 线程频繁的创建=>销毁=>创建对系统对开销很大,使用线程池可以避免重复的开销 方便复用,提高相应速度 线程的创建于执行完全分开,方便维护,降低耦合 线程池的实现原理 池化技术 一说到线程池自然就会想到池化技术。 其实所谓池化技术,就是把一些能够复用的东西放到池中,避免重复创建、销毁的开
阅读全文
摘要:锁类型 可中断锁 在等待获取锁过程中可中断 Lock就是可中断锁 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于ReentrantLock
阅读全文
摘要:Java反射的理解 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。 Apple apple = new Apple(); //直接初始化,「正射」 a
阅读全文

浙公网安备 33010602011771号