8、java常见名词总结

news2024/9/21 10:47:30

一、JMM

1.1、JMM简介

JMM 是Java内存模型( Java Memory Model),简称JMM。它本身只是一个抽象的概念,并不真实存在,它描述的是一种规则或规范,是和多线程相关的一组规范。通过这组规范,定义了程序中对各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。

​ 计算机在执行程序时,每条指令都是在CPU中执行的。而执行指令的过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程,跟CPU执行指令的速度比起来要慢的多(硬盘 < 内存 <缓存cache < CPU)。因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存当中,那么CPU进行计算时,就可以直接从它的高速缓存中读取数据或向其写入数据了。当运算结束之后,再将高速缓存中的数据刷新到主存当中。

1.2、JMM的三大特性

JMM的三大特性:原子性、可见性、有序性

1、原子性

一个或多个操作,要么全部执行,要么全部不执行(执行的过程中是不会被任何因素打断的)。

2、可见性

只要有一个线程对共享变量的值做了修改,其他线程都将马上收到通知,立即获得最新值。

3、有序性

有序性可以总结为:在本线程内观察,所有的操作都是有序的而在一个线程内观察另一个线程,所有操作都是无序的

Java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作的有序性,volatile 是因为其本身包含“禁止指令重排序”的语义,synchronized 是由“一个变量在同一个时刻只允许一条线程对其进行 lock 操作”这条规则获得的,此规则决定了持有同一个对象锁的两个同步块只能串行进入。

1.3、JMM八种操作

为了支持 JMM,Java 定义了8种原子操作,用来控制主存与工作内存之间的交互。

Read读取:作用于主内存,将共享变量从主内存传送到线程的工作内存中。
Load载入:作用于工作内存,把 read 读取的值放到工作内存中的副本变量中。
Store 存储:作用于工作内存,把工作内存中的变量传送到主内存中。
Write写入:作用于主内存,把从工作内存中 store 传送过来的值写到主内存的变量中。
Use使用:作用于工作内存,把工作内存的值传递给执行引擎,当虚拟机遇到一个需要使用这个变量的指令时,就会执行这个动作。
assign赋值:作用于工作内存,把执行引擎获取到的值赋值给工作内存中的变量,当虚拟机栈遇到给变量赋值的指令时,就执行此操作。
lock锁定:作用于主内存,把变量标记为线程独占状态。
unlock解锁:作用于主内存,它将释放独占状态。

二、JNI

1、JNI简介

JNI是Java Native Interface的缩写,是使用Java调用系统本地接口、及定制的C、C++语言的接口的方案,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。

本地代码与 Java 虚拟机之间是通过 JNI 函数实现相互操作的。JNI 函数通过接口指针来获得,本地方法将 JNI 接口指针当作参数来接受。虚拟机保证在从相同的 Java 线程中对本地方法进行多次调用时,传递给本地方法的接口指针是相同的,本地方法被不同的 Java 线程调用时,它接受不同的 JNI接口指针。使用JNI和算法进行交互,主要是为了提高算法的性能,最大化的利用机器硬件资源。

2、JNI DEMO

调用demo篇幅很长,这边就不写了,可以参考我在网上找到的Demo

三、SPI

1、SPI简介

SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。SPI多用公共实现方案替换场景,典型的就是各类框架的使用。

2、SPI使用步骤

1、定义好接口

2、定义好接口的几种实现方案

3、然后需要在resources目录下新建META-INF/services目录,并且在这个目录下新建一个与上述接口的全限定名一致的文件,在这个文件中写入接口的实现类的全限定名

 3、SpringBoot Start实现方案

1、引入jar

<dependency>

  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-autoconfigure</artifactId>
  <version>2.2.6.RELEASE</version>
</dependency>

2、新建被扫描进spring的bean

@Configuration
public class SpringbootConfig {

    @Bean("HelloService")
    @ConditionalOnMissingBean
    // 找不到HelloService bean的时候通过该方法,初始化bean
    HelloService startService() {
        return new HelloServiceImpl();
    }
}

3、写好接口及实现类 

@Configuration
public class SpringbootConfig {

    @Bean("HelloService")
    @ConditionalOnMissingBean
    // 找不到HelloService bean的时候通过该方法,初始化bean
    HelloService startService() {
        return new HelloServiceImpl();
    }
}


public class HelloServiceImpl implements HelloService {

    @Override
    public void sayHello() {
        System.out.println("hello my name is AAA");
    }
}

4、配置需要初始化bean的位置

resource目录下新建META -INFO文件夹及spring.factories文件.并且指向实现配置类。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.test.demo.SpringbootConfig

三、JDK

(Java Development Kit) Java开发工具包

四、JRE

(Java Runtime Environment) java运行时环境

五、JVM

(Java Virtual Machine) java虚拟机 JDK>JRE>JVM

六、JDBC

(Java DataBase Connectivity) Java数据库连接

七、DBCP

(DataBase Connection Pool) 数据库连接池

八、JDO

(Java Data Object) Java数据对象

九、JMS

(Java Message Services) Java消息服务

十、JMX

(Java Management Extension) Java管理扩展

十一、JTS

(Java Transaction Service) Java事务服务

十二、JCF

(Java Collections Framework) Java集合框架

十三、JSR

(Java Specification Requests) Java 规范请求

十四、JNDI

(Java Naming & Directory Interface) Java命名目录服务

十五、JMS

(Java Message Service) Java消息服务

十六、JTA

(Java Transaction API) Java事务服务

十七、JAF

(Java Action FrameWork) Java安全认证框架

十八、JAAS

(the Java Authentication and Authorization Service) Java认证授权服务

十九、RMI

(Remote Method Interface(Invocation)) 远程方法调用

二十、IDL

(Interface Definition Language) 接口定义语言

AWT (Abstract Windows TooleKit) 抽象窗口工具箱

URL (Uniform Resource Location) 统一资源定位符

HTTP (HyperText Transfer Protocol) 超文本传输协议

FTP (File Transfer Protocol) 文件传输协议

TCP/IP (Transmission Control Protocol/internet Protocol) 传输控制协议和互联网协议

SMTP (Simple Mail Transfer Protocol) 简单邮件传输协议

LAN (Local Area Network) 局域网

DNS (Domain(领域) Name Service) 域名服务

ISP (Internet Service Provider) Internet 服务提供商

URI (Uniform Resource Identifier) 统一资源标识符

HTML (HyperText Markup Language) 超文本标记语言

HREF (Hypertext Reference) 超文本链接

CGLIB (Code Generation Library) 代码生成类库

SOAP (Simple Object Access Protocol) 简单对象访问协议

SOA (Service Oriented Architecture) 面向服务架构

WSDL (Web Service Description Language) Web服务描述语言

DWR (Direct Web Remoting) Java 远程Web调用

ORM (Object-Relation Mapping) 对象关系映射

BPM (Business Process Management) 业务流程管理

IDE (Integration Development Environment) 集成开发环境

POJO (Plain Old Java Object) 普通且古老的Java对象

VO (Value Object) 值对象

UDDI (Universal Description Discovery and Integration)

DAO (Database Access Object) 数据库访问对象

PI (Processing Instruction) 处理指令

WFC (Windows Foundation Classes for Java) 提供了支持面向Windows 操作系统的Java 软件包架构

WORA (Write Once,Run Anywhere) 一次编写,到处运行

DI (Dependency Injection) 依赖注入

DTD (Document Type Definition) 文档类型定义

STAX (Streaming API for XML)

CVS (Concurrent(同时的) Versions System) 版本控制器

SVN (Subversion)

SEO (Search Engine Optimization) 搜索引擎优化

SDO (Service Data Objects) 是一种针对在不同的数据源之间使用统一的数据编程模型的规范说明

OEM (Originality Equipment Manufacturer) 原始设备制造商

ERP (Enterprise Resource Planning) 企业资源计划

CRM (Customer Relationship Management) 客户关系管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

babel-plugin-transform-remove-console 项目打包去除console

安装babel-plugin-transform-remove-console 项目打包去除console npm install babel-plugin-transform-remove-console --save-dev 在vue项目中babel.config.js中&#xff1a; module.exports {plugins: ["transform-remove-console",], }; 如果只想在生产环境…

Java+SSM影院订票系统|电影院购票系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术实现如下 后台框架&#xff1a;Spring、SpringMVC、MyBatis UI界面&#xff1a;BootStrap、jQuery 、JSP 数据库&#xff1a;MySQL 系统分为前台订票和后台管理&#xff1a; 1.前台订票 用户注册、用户登录、查看电影列表、分类查看 电影搜索、查…

C语言基础篇 —— 5.0 详解C语言变量的四大属性

文章目录概述C语言变量四大属性存储类概念解析Linux 内存映像并解析作用域概念解析局部变量的代码块作用域函数名和全局变量的文件作用域同名变量的掩蔽规则生命周期概念解析栈变量的生命周期堆变量的生命周期数据段、bss段变量的生命周期代码段、只读段的生命周期链接属性概念…

Linux——虚拟机安装Linux系统

实验1-2 虚拟机安装Linux系统 VMware 9.0 虚拟机Linux镜像ISO文件相关工具可以在这里边找到 http://pan.baidu.com/s/1ntA18FJ 或者请自行下载使用 创建新的虚拟机&#xff0c;如下图&#xff1a; 下一步&#xff1a;选择安装配置类型为“典型”如下图&#xff1a; 下一步&…

k8s之Ingress

Ingress和Ingress控制器介绍 Ingress官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/ Ingress控制器官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress-controllers/ 在k8s中将一个…

Multipartfile判断文件类型的简单处理办法。

通过浏览器上传的文件在后台需要验证文件类型。如果单纯匹配后缀名的方式是有风险的&#xff0c;容易被换了后缀的病毒文件给破坏掉。 比如&#xff1a; 如果我上传已修改的文件。&#xff08;把xlsx改成了jpg&#xff09; 这样&#xff0c;无法识别出来真实的内容。 所以为了…

java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(六:Hystrix之熔断、降级、限流)~整起

Hystrix 中文文档&#xff1a;https://www.apiref.com/spring-cloud-zh/dalston/#_circuit_breaker_hystrix_clients服务雪崩&#xff1a;服务 A 调用了服务 B&#xff0c;服务 B 再调用了服务 C&#xff0c;但是因为某些原因&#xff0c;服务 C 顶不住了&#xff0c;这个时候大…

Strimzi Kafka Bridge(桥接)实战之三:自制sdk(golang版本)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文是《Strimzi Kafka Bridge(桥接)实战》的第三篇&#xff0c;前文咱们掌握了Strimzi Kafka Bridge的基本功能&#xff1a;基于http提供各种kafk…

特海国际通过港交所上市聆讯:翻台率下滑明显,张勇夫妇为实控人

撰稿|汤汤 来源|贝多财经 近日&#xff0c;海底捞&#xff08;HK:06862&#xff09;海外业务分拆公司特海国际控股有限公司&#xff08;下称“特海国际”&#xff09;通过港交所上市聆讯。据贝多财经了解&#xff0c;特海国际将以介绍形式于港交所主板上市。所谓介绍形式&…

数据挖掘Java——Apriori算法的实现

一、Apriori算法的前置知识 Apriori算法是一种挖掘关联规则的频繁项集算法&#xff0c;其核心思想是通过候选集生成和向下封闭检测两个阶段来挖掘频繁项集。 关联规则挖掘是数据挖掘中最活跃的研究方法之一&#xff0c;最初的动机是针对购物篮分析问题提出的&#xff0c;其目…

[附源码]Node.js计算机毕业设计工会会员管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

【Linux学习】多线程

目录前言一、初识线程1. 线程的概念2. 线程的优缺点3. 线程异常4. 线程的用途二、Linux中的线程和进程1. 进程和线程的区别2. 进程中的线程共享三、Linux线程控制1. POSIX线程库2. 创建线程3. 线程终止4. 线程等待5. 线程分离四、Linux线程互斥1. 线程互斥的概念2. 互斥量mutex…

蓝桥杯基础算法(一)—— 快速排序

文章目录1. 基本思想2. 图解过程3. 代码模板4. 例题讲解&#x1f351; 快速排序&#x1f351; 第 k 个数1. 基本思想 快速排序是 Hoare 于 1962年 提出的一种二叉树结构的交换排序方法。 其基本思想为&#xff1a; &#xff08;1&#xff09;确定分界点&#xff1a;在数组中…

从零开始的MySQL(1)

目录1.MySQL的安装2.MySQL的基本操作2.1 展示数据库2.2 创建数据库2.3 选中数据库2.4 删除数据库2.5 常用数据类型2.5.1 整形2.5.2 浮点数2.6 创建表2.7 查看表2.7 查看表结构2.8 删除表3.数据库增删改查3.1 单行插入3.2 多行插入3.3 插入日期3.4 select查询3.4.1 select3.4.2 …

Jprofiler监控服务器的cpu

现象&#xff1a;压测过程中&#xff0c;发现应用服务器的cpu使用率比较高>80%&#xff0c;我们就可以判断服务器的cpu使用率太高了。 一般cpu太高有两种情况&#xff0c; 1.接口的性能非常好&#xff0c;比如响应时间<10ms&#xff0c;tps很高&#xff0c;此时的cpu使用…

CSDN官方插件猿如意可以用ChatGPT啦!

什么是 ChatGPT Chat GPT 是一种由 AI 技术驱动的自然语言处理工具&#xff0c;可让您与聊天机器人进行类似人类的对话等它是基于OpenAI的GPT-3架构进行构建的&#xff0c;并经过训练&#xff0c;以便能够回答人类的问题并进行自然对话ChatGPT可以回答关于各种话题的问题&#…

基于SSM广州旅游攻略网站的设计与实现

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;

【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

描述 实现摄像机根据鼠标移动跟随物体旋转&#xff0c;以摄像机前物体为中心&#xff0c;摄像机围绕物体旋转&#xff0c;并使摄像机时刻指向物体 实现效果 Unity 组件设置 Camera 组件设置 Body 组件设置 实现代码 CameraRotateMove.cs 摄像机跟随和旋转 using System.Co…

神经网络常用的训练方式,什么是神经网络训练法

1、神经网络中的模型训练是什么意思? 无导师学习网络 神经网络中的模型训练是通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。 神经网络在系统辨识、模式识别、智能控制等领域有着广泛而吸引人的前景&#xff0c;特别在智能控制中&#xff0c;…

寄存器内存读写指令(二) —— 多寄存器读写 LDM / STM

有的时候&#xff0c;CPU可能会遇到 a; b; c&#xff0c;这个时候为了提升效率&#xff0c;CPU可能会一次将多个寄存器里的变量保存到内存中。这个时候之前介绍的 LDR / STR 指令虽然也能实现&#xff0c;但只能操作一个寄存器的读写。 因此&#xff0c;考虑到这点&#xff0c…