java
文章平均质量分 63
Jeson-Sun
学无止境
展开
-
Java-类加载过程
类的生命周期类加载过程加载通过类的全限定名获取该类的二进制字节流将二进制字节流代表的静态存储结构转化成方法区的运行时数据结构在内存中生成代表这个类的Class对象,作为方法区数据的访问入口验证准备准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中分配。对于该阶段有以下几点需要注意:这时候进行内存分配的仅包括类变量( Class Variables ,即静态变量,被 static 关键字修饰的变量,只与类相关,因此被称为类变量),而不包括实例变量。实例原创 2021-05-11 17:31:38 · 105 阅读 · 0 评论 -
JDK与JVM与JRE之间的关系
Java语言有哪些特点简单易用,十分灵活面向对象性(继承,多态,封装)可跨平台性(Java语言是编译与解释共存的语言,一次编译多处运行,运行与平台无关,仅仅和Java虚拟机有关)支持多线程(c++语言没有内置多线程的机制,想要实现多线程需要借助操作系统的多线程机制;而Java则拥有内置的多线程机制)安全性严格遵守面向对象规范,封装数据细节,只提供接口给用户,这样保证了数据级安全数据边界检查,这样就不会出现缓存溢出等安全漏洞无指针运算,Java中除了基本数据类型,其他都是引用数据类型,引用原创 2021-05-08 18:49:49 · 309 阅读 · 1 评论 -
Java--乐观锁和悲观锁
一、什么是乐观锁和悲观锁前言人活着总会经历世间百态,有的人遇到事情他总是往好的方面去想,这就是乐观,这样的人就会活得很快乐;有的人遇到事情他总是往最坏的方面去想,这就是悲观,这样的人活着就会有无尽的烦恼。1.什么是乐观锁?总是假设最好的情况,每次去获取数据都认为别人不会去修改,于是他总是不上锁,但是在更新的时候它就会去判断在此期间有没有人修改了数据,通过CAS算法和版本号机制实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量。2.什么是悲观锁?总是假设最坏的情况,每次去获取数据都认为原创 2021-03-25 18:36:20 · 182 阅读 · 0 评论 -
Java设计模式--单例模式
一、单例模式简介单例模式是Java中最简单的设计模式之一。这种设计模式属于创建型模式,它提供了一种创建对象的最佳方式。单例模式类负责创建自己的对象,同时确保只有一个对象被创建,提供了一个访问其唯一对象的方式,可以直接访问,不需要实例化这个对象。二、单例模式的要素单例模式类只能有一个实例,需要私有其构造方法,确保只有自己能创建实例。单例模式类需要给其他对象提供一个访问其实例的全局方法。三、单例模式的简单实现方式1.饿汉式饿汉式是在单例类初始化加载时就创建一个单例对象供外部使用。但这个方式会原创 2021-03-25 14:16:34 · 105 阅读 · 0 评论 -
Java-volatile关键字
1.简介volatile是Java提供的一种轻量级的同步机制,Java提供了两种内在的同步机制,分别是同步块和volatile,synchronized通常称之为重量级锁,而volatile相对比较轻量,因为它不会引起线程上下文的切换和调度,因此volatile的同步性比较差。2.并发编程的3个特性2.1 原子性定义:一个或者多个操作要么全部执行,要么全部都不执行,而且在执行的过程中不允许被其他因素打断。原子性是拒绝多线程操作的,不论是多核还是单核,具有原子性的量,同一时刻只能有一个线程来对它进原创 2021-03-24 20:40:33 · 80 阅读 · 0 评论 -
Java四大函数式接口
新时代的程序员:lambda表达式,链式编程,函数式接口,Stream流式计算1.什么是函数式接口?只有一个抽象方法的接口。2.Java四大函数式接口2.1 Function函数式接口Function函数式接口,有一个输入参数,有一个输出实例:package com.lee.Java四大函数接口;import java.util.function.Function;public class FunctionDemo { public static void main(S原创 2021-03-24 00:40:58 · 259 阅读 · 0 评论 -
JAVA线程池
线程池1.概念什么是池事先准备好一些资源,有人要用就来我这取,用来之后还回来给我,类似于共享充电宝。什么是池化技术程序的运行本质是系统资源的占用,池化就是为了优化资源的使用,提高响应速度。线程池的优点降低系统资源的消耗提高响应速度方便管理什么是线程池实质:三大方法,七大参数,四种拒绝策略2.三大方法package com.lee.线程池;import java.util.concurrent.Executor;import java.util.concurrent.Exe原创 2021-03-23 23:30:09 · 90 阅读 · 0 评论 -
JUC中常用3大辅助类
1. CountDownLatch(减数器)一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置通俗来说:一组线程相当于学生,CountDownLatch相当于门卫,他需要等所有学生都离开以后才关门.实例:pa原创 2021-03-22 20:48:47 · 149 阅读 · 0 评论 -
Java多线程的三种实现方法
1.继承Thread类继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。package com.lee.多线程三种方法;public class Thread_01{ public static void main(String[] args) { Thread thread_01 = new Demo();原创 2021-03-22 17:17:01 · 101 阅读 · 0 评论 -
JAVA集合类不安全
1.ArrayList集合不安全package com.lee.集合不安全;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;/* java.util.ConcurrentModificationException,因为并发下ArrayList不安全,ArrayList就是一个可扩容的数组*//* 解决方案: 1.使用Vector,因为它是并发安全的;为什么呢?因为Vector底层是原创 2021-03-22 15:58:43 · 103 阅读 · 0 评论 -
SpringMVC-04-控制器与RestFul
1.控制器Controller1.1 什么是控制器负责提供解析用户的请求并将其转换成一个模型。在MVC中一个控制器可以提供多种方法。1.2 Controller注解@Controller注解用来声明一个类的实例是一个控制器Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。<!-- 自动扫描指定的包,下面所有注解类交给IOC容器管理 --><context:component-sca原创 2021-03-11 11:06:08 · 78 阅读 · 0 评论 -
SpringMVC-02-HelloSpringMVC
HelloMVC1.配置版本1.1新建一个model1.2导入Spring MVC依赖 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3原创 2021-03-10 20:31:14 · 151 阅读 · 1 评论 -
SpringMVC-03-SpringMVC的执行原理
MVC的执行原理DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping根据请求的url查找Handler。HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。HandlerExecution将解析后的原创 2021-03-10 18:19:52 · 73 阅读 · 0 评论 -
SpringMVC-01什么是MVC
Spring MVC1.MVC1.1什么是MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。模型(Model):模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。视图(View):负责进行模型的展示,一般就是我们见到的用户界面控制器(Controller):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。1.2 MVC职责分析Co原创 2021-03-10 15:19:41 · 105 阅读 · 0 评论 -
JVM(详细易懂)
JVM1.JVM的位置JVM它是运行在在操作系统之上,说白了它就相当于是操作系统上的一个软件。操作系统又在硬件体系之上,它们相互之间联系。2.JVM体系结构.java文件:java源代码Class File:Java Class文件(字节码文件)类加载器:通过一个类的全限定名来获取其定义的二进制字节流(Class字节码),将这个字节流所代表的静态存储结构转化为方法去的运行时数据接口,根据字节码在java堆中生成一个代表这个类的java.lang.Class对象。方法区:属于共享内存区原创 2020-12-27 23:01:20 · 215 阅读 · 0 评论 -
Java注解和反射(详细)
1.注解—Annotation1.1什么是注解注解就是源代码的元数据,通熟的讲就是代码中的标签。1.2注解的作用不是程序本身,但可以对程序做出解释。可以被其他程序读取1.3注解的格式注解是以"@+注释名"注解在什么地方使用可以附加在packpackage,class,method,filed等上面,相当于给他们添加了额外的辅助信息。2.反射2.1动态语言和静态语言动态语言:是一类在运行的时候能改变其结构的语言,例如新的函数,对象,甚至代码可以被引进。主要的语言有Py原创 2020-12-26 15:08:39 · 583 阅读 · 0 评论 -
Java多线程(详细最全)
**一.1.程序 进程 线程**程序:程序是指令和数据的一个有序集合,其本身没有任何运行的含义,是一个静态的概念。进程:进程是程序执行的一个过程,它是一个动态的概念,是系统资源分配的单位。例如:我们的播放器,游戏等等线程:线程是CPU调度和执行的单位,例如:我们程序中的main()被称为主线程,为系统的入口,用于执行整个程序。小结:一个进程至少包括一个线程,不然就没有存在的意义。在程序运行时,即使没有创建自己的线程,后台仍然还会有很多线程,例如:main()线程,gc线程等原创 2020-12-25 14:31:12 · 348 阅读 · 0 评论 -
Java集合框架(详细)
集合什么是集合:集合可以看做一种容器,什么容器呢?用来存储数据对象信息的容器。集合与数组的区别:数组也是用来存储数据的,但它俩的区别在于数组的长度是不可以变的,数组不能用来存储带有映射关系的数据;而集合的长度可变,经常用来存储不确定数量的数据,集合也可以用来存储带有映射关系的数据。(主要是通过Map接口)数组可以用来存储基本数据类型数据,也可以存储对象信息;但集合只能用来存储对象信息。集合框架:定义:通俗一点来说,就是由各种集合类所构成的框架。集合框架图:(这里我引用了别人画的框架图原创 2020-12-10 15:54:49 · 151 阅读 · 0 评论 -
Java IO流(详细)
IO流流:可以理解为是一个数据的序列,输入流代表从一个源读取数据,输出流表示将数据写入一个目标中。什么是IO流:用来输出输入的流,也可以理解为IO流就是以流的方式来进行输出输入。水源地是产水的地方(相当于是源)自来水厂的水从哪来呢?从水源地输入。(相当于IO流中的输入流)自来水厂的水要去哪呢?他将输出到用户手中。(相当于IO流中的输出流)缓冲区:一个用于基本数据类型的容器。为什么我们想要水就会有水呢?那是因为用户和自来水厂之间有一个储水池。同样Java中也有一个储水池,叫做缓冲区。原创 2020-12-09 21:46:22 · 962 阅读 · 0 评论 -
JAVA异常
异常:Java中的异常指程序中的一些错误,但并不是所有的错误都是异常,因为有的错误是可以避免的。例:当程序当中因为少写了一个分号,这个时候就会运行结果就会出现一个错误-Java.lang.Error;而当我们输出10/0是就会出现一个异常-java.lang.ArithmeticException,因为0不能作为被除数。要理解Java中异常处理是如何工作的,我们就需要了解一下3种异常检查性异常(IOException):通俗来说,检查性异常就是在编译时能够捕捉到的异常。例如打开不存在的文件等引发的原创 2020-12-08 21:32:47 · 88 阅读 · 0 评论 -
JAVA接口
什么是接口:官方语言:接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。我的理解:它是一种特殊的类,特殊在它里面全是由全局常量和公共抽象方法组成,接口它是解决Java语言无法多继承的一种方法,但它更多的则是用来制定标准。(何为标准,标准就是类需要实现我这个接口,那就必须先实现我里面设置的某些方法)为什么要用接口:接口被用来描述一种抽象。接口可以解决Java当中的多继承。原创 2020-12-08 15:07:30 · 364 阅读 · 0 评论 -
Java多态
多态:JAVA中的多态即同种行为有多种不同表现形态。通俗一点来说就是使用同一个接口,使用不同的实例而执行不同的操纵。多态意义何在:消除类型之间的耦合关系可扩充性灵活性接口性通俗一点:既可以使用子类强大的功能,又可以抽取父类的共性。多态存在的必要条件:存在继承存在重写向上转型(父类引用指向子类对象)*重点理解,这是多态的关键上代码:package java_demo.多态;public class Duot { public static void main(St原创 2020-12-08 00:07:35 · 117 阅读 · 0 评论 -
JAVA封装
封装:什么是封装,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。通俗一点来说就是把类中的某些信息进行隐藏,从而使外部程序不能直接对这些信息进行直接的访问,只能通过类中定义的方法对这些隐藏的信息进行操作和访问。目的:使其他类只能通过操控类中的对象来直接达到目的,不能看到具体的实现和属性,从而提高了程序的安全性和便利性。隐藏信息,实现便利。封装的实现步骤:通过访问限制符修改类中属性的可见性,从而限制对类中属性的访问。 public class原创 2020-12-07 22:09:20 · 4323 阅读 · 1 评论 -
什么是Java中的递归方法
递归:递归指的是在函数的定义当中调用自身函数的方法举个例子:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’"其实递归思想就和这个故事相差不大。语法格式如下:public void digui(){ digui();}public static void main(String args[]原创 2020-12-06 23:10:46 · 576 阅读 · 2 评论