JDK

JDK、JRE、JVM之间的关系----->(浅谈)

旧街凉风 提交于 2020-10-05 11:38:35
什么是JVM?它存在什么地方? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 对于我们Java程序员,说白了就是: JVM本质上是一个 程序 , 它能识别 . class 字节码文件(里面存放的是我们对 .java 编译后产生的二进制代码),并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作! 关于Java语言的 跨平台性 ,就是因为JVM,我们可以将其想象为一个抽象层,只要这个抽象层JVM正确执行了 .class 文件,就能运行在各种操作系统之上了!这就是 一次编译,多次运行 对于JVM的位置: JVM是运行在操作系统之上的,它与硬件没有直接的交互 JDK、JRE、JVM的关系 JDK(Java Development Kit):Java开发工具包(Java开发环境) JRE(Java Runtime Environment):Java运行环境 JDK = JRE + javac/java/jar 等指令工具 JRE = JVM + Java基本类库 3、JVM体系结构 Java虚拟机主要分为五大模块: 类装载器子系统 运行时数据区 执行引擎 本地方法接口 垃圾收集模块 方法区是一种特殊的堆 栈里面不会有垃圾,用完就弹出了(

解决:Error:java: 无效的源发行版: 12

白昼怎懂夜的黑 提交于 2020-10-05 09:12:11
一、 spring cloud项目启动。遇到问题: 二、 解决,共两个地方。 第一个位置: Shift/Ctrl/Alt/S 快捷键一起按 Modules选择你的项目(以及父级项目,如果有的话)->选择8(你的jdk版本) 如图: 第二个位置 1.Setting: 2.查找java compiler->Target bytecode version 修改为8(你的jdk版本,同样注意父级项目): 三、重新启动 来源: oschina 链接: https://my.oschina.net/u/4349518/blog/4422508

ConcurrentHashMap 怎么聊出花来?

…衆ロ難τιáo~ 提交于 2020-10-05 09:06:54
前言 之前,我们已经在HashMap上面暴打了面试官,没看过的读者可以看看哦 HashMap 怎么聊出花来? 。今天!,辉先森带读者一起解读ConcurrentHashMap! 一、为什么有CurrentHashMap? 通过前章的学习哦,我们有了解到,HashMap做的优化以及其遗留的线程安全的问题。 那为什么要多线程呢? 1. 更好的利用处理器 在 多核 场景下,使用多线程技术,将计算逻辑分配搭配多个处理器核心,就会显著减少程序的处理时间,并且随核数的加入而变得更加的有效率。 2. 更快的相应时间 在多线程下,可将数据一致性不强的操作派给其他线程处理。 好处:相应用户请求线程能更快的处理完成,缩短响应时间,提高用户体验。 二、解决HashMap线程不安全 1.HashTable hashtable对 get/put所有相关的操作都加上 synchronized 标志。虽然实现了线程安全,但是 代价太大 了。相当于对整个哈希表加了一把大锁,这样在竞争激烈的并发场景 性能太差 了。(不推荐考虑) 2.ConcurrentHashMap 使用 Segment分段锁 技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一段数据时,不阻塞访问其他段的数据,可以看成是有多个hashtable。 好处:使用Segment分段锁技术减少了锁的粒度提高了并发的能力。

彻底解决 openSUSE 下的 java 开发环境

喜夏-厌秋 提交于 2020-10-05 06:19:26
背景 使用了 openSUSE 13.1, 13.2, 42.1 三个版本,每次都要折腾一遍 JAVA 环境。 这次把过程记录下来,以免下次再耗费时间。 发行版信息: 1 2 3 4 5 6 > lsb_release -a LSB Version: n/a Distributor ID: SUSE LINUX Description: openSUSE Leap 42.1 (x86_64) Release: 42.1 Codename: n/a OpenJDK 由于 Oracle 的授权许可,openSUSE 官方软件源不再提供 Oracle Java. 所以自从 openSUSE 12.1 开始,系统预装的是 OpenJDK. 而 openSUSE 42.1 中 openJDK 1.7 和 1.8 都有,其中 1.8 为默认版本。 1 2 3 4 5 6 7 > java - version openjdk version "1.8.0_72" OpenJDK Runtime Environment (build 1.8 .0 _72-b15) OpenJDK 64 -Bit Server VM (build 25.72 -b15, mixed mode) > javac If 'javac' is not a typo you can use command- not

Linux下的JDK安装与配置

北城以北 提交于 2020-10-05 01:57:28
小白的进阶之路总是充满着荆棘 解压tar包:在路径/usr/local下 tar -zxvf jdk1.8.0_181-linux-x64.tar.gz 修改配置变量 vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_181 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin 重启环境配置文件 source /etc/profile 检查是否安装成功 java -version 来源: oschina 链接: https://my.oschina.net/u/4515679/blog/4333440

这一次搞懂Spring代理创建及AOP链式调用过程

痴心易碎 提交于 2020-10-05 00:38:52
@ 目录 前言 正文 基本概念 代理对象的创建 小结 AOP链式调用 AOP扩展知识 一、自定义全局拦截器Interceptor 二、循环依赖三级缓存存在的必要性 三、如何在Bean创建之前提前创建代理对象 总结 前言 AOP,也就是面向切面编程,它可以将公共的代码抽离出来,动态的织入到目标类、目标方法中,大大提高我们编程的效率,也使程序变得更加优雅。如事务、操作日志等都可以使用AOP实现。这种织入可以是 在运行期动态生成代理对象 实现,也可以在 编译期 、 类加载时期 静态织入到代码中。而Spring正是通过第一种方法实现,且在代理类的生成上也有两种方式:JDK Proxy和CGLIB,默认当类实现了接口时使用前者,否则使用后者;另外Spring AOP只能实现对方法的增强。 正文 基本概念 AOP的术语很多,虽然不清楚术语我们也能很熟练地使用AOP,但是要理解分析源码,术语就需要深刻体会其含义。 增强(Advice):就是我们想要额外增加的功能 目标对象(Target):就是我们想要增强的目标类,如果没有AOP,我们需要在每个目标对象中实现日志、事务管理等非业务逻辑 连接点(JoinPoint):程序执行时的特定时机,如方法执行前、后以及抛出异常后等等。 切点(Pointcut):连接点的导航,我们如何找到目标对象呢?切点的作用就在于此,在Spring中就是匹配表达式。 引介

在IntelliJ IDEA中创建和运行java/scala/spark程序

大兔子大兔子 提交于 2020-10-04 22:51:10
本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介绍 IntelliJ IDEA 本文使用版本为: ideaIC-2020.1 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等,免费版只支持Java,Scala等少数语言。如果只开发Java和Scala,去官网下载社区版即可: https://www.jetbrains.com/idea/ . Java 本文使用版本为:java 8 编程语言,不解释。在IDE之外运行Java程序的方式如下: javac HelloWord.java // 先编译源码 ---->java HelloWord.class java.exe HelloWord // 直接运行 实际开发中每个java程序都会依赖其他的包,也就是jar,这种情况你必须告诉java.exe 你的jar包都在哪里,告诉java的方式就是通过classpath指定,通常我们都会在系统环境变量中建立一个CLASSPATH的环境变量,这样java会在这里寻找你程序依赖的包

Jmeter+Ant+Jenkins --接口自动化实现

不羁的心 提交于 2020-10-04 15:47:44
1.安装Jmeter 1.1 JDK 安装 笔者提供 : https://pan.baidu.com/s/1GJO_9OJN6FRoFqqOrbLvjA 提取码:8dkK 官方下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 相关环境设置,在这里不做赘述 1.2 Jmeter 安装 下载地址: http://jmeter.apache.org/download_jmeter.cgi 下载后解压即可使用,详细环境设置在这里不做赘述,可百度Jmerter安装查看相关说明 安装ANT 下载地址: http://ant.apache.org/bindownload.cgi 下载后解压到指定位置即可,如: 环境变量配置(window) 新增 ANT_HOME 变量添加:D:\apache-ant-1.10.3 Path 变量中添加:%ANT_HOME%\bin classpath 变量中添加: %ANT_HOME%\bin 注意:变量之间用;分割 安装验证 在命令行输入 ant -v 出现对应版本信息则已安装成功 注意:环境配置中如果设置成:path:%ANT_HOME%\bin (为了方便在dos环境下操作),如果环境配置不成功,需要把地址换成为 D:\apache-ant-1

SpringBoot2.x入门:使用MyBatis

两盒软妹~` 提交于 2020-10-04 10:18:07
这是公众号《Throwable文摘》发布的第 25 篇原创文章,收录于专辑《SpringBoot2.x入门》。 前提 这篇文章是《SpringBoot2.x入门》专辑的 第8篇 文章,使用的 SpringBoot 版本为 2.3.1.RELEASE , JDK 版本为 1.8 。 SpringBoot 项目引入 MyBatis 一般的套路是直接引入 mybatis-spring-boot-starter 或者使用基于 MyBatis 进行二次封装的框架例如 MyBatis-Plus 或者 tk.mapper 等,但是本文会使用一种更加原始的方式,单纯依赖 org.mybatis:mybatis 和 org.mybatis:mybatis-spring 把 MyBatis 的功能整合到 SpringBoot 中, Spring(Boot) 使用的是 微内核架构 ,任何第三方框架或者插件都可以按照本文的思路融合到该微内核中。 引入MyBatis依赖 编写本文的时候( 2020-07-18 ) org.mybatis:mybatis 的最新版本是 3.5.5 ,而 org.mybatis:mybatis-spring 的最新版本是 2.0.5 ,在使用 BOM 管理 SpringBoot 版本的前提下,引入下面的依赖: <dependency> <groupId>org