首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏SpringBoot教程

    JDK8JDK17安装切换,IDEA配置多个版本JDK

    JAVA8不香了? JAVA之父高斯林推荐我们用JDK17,请尽快离开JDK8。 目录对应JDK的安装目录: 选择 Path变量,点击 编辑,添加 %JAVA8_HOME%\bin,JAVA8_HOME代表变量 指向JAVA8_HOME这个变量的路径 打开 DOS 命令,输入:java -version,还是会显示 JDK17,虽然配置了JDK8,但是JDK17安装的时候会默认添加一个环境变量,而且在path中优先级比我们配置的%JAVA8_HOME%\bin高,所以命令先被JDK17 识别了,此时把Path中配置的环境变量上移到最顶部 优先级最高, 也可以把默认的环境变量删除 此时再查看JDK版本: 切回JDK17,只需修改Path环境变量即可: 打开DOS窗口,输入:java -version IDEA中配置多个JDK版本 因目前还是以JDK8为主要开发,所以难免会切换JDK版本: 在IDEA中可以指定每个项目模块使用的JDK版本

    7.6K50编辑于 2023-04-06
  • 来自专栏全栈程序员必看

    ConcurrentHashMap源码分析(JDK8版本

    注:本文源码是JDK8版本,与之前的版本有较大差异 ConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架Spring的底层数据结构就是使用 本文的分析的源码是JDK8版本,与JDK6的版本有很大的差异。实现线程安全的思想也已经完全变了,它摒弃了Segment(锁段)的概念,而是启用了一种全新的方式实现,利用CAS算法。 它沿用了与它同时期的HashMap版本的思想,底层依然由“数组”+链表+红黑树的方式思想,但是为了做到并发,又增加了很多辅助的类,例如TreeBin,Traverser等对象内部类。 在这一版本的concurrentHashMap中,大量应用来的CAS方法进行变量、属性的修改工作。 利用CAS进行无锁操作,可以大大提高性能。 如果加入这个节点以后链表长度大于8,就把这个链表转换成红黑树。如果这个节点的类型已经是树节点的话,直接调用树节点的插入方法进行插入新的值。

    68120编辑于 2022-09-12
  • 来自专栏lgp20151222

    …… are only available on JDK 1.5 and higher 错误(spring 的jdk版本检测在jdk 8下的修订)

    正常方法 用更高的版本,因为spring向下兼容。

    1.5K10发布于 2018-09-10
  • 来自专栏灵墨AI探索室

    还在用JDK8? 来看看新版本

    就在前几日oracle发布了JDK21,这个原本计划在今年年初就发行的版本终于和我们见面了,JDK21都发布了,不会有人还在用JDK8吧,话又说回来,JDK21的确不是一个LTS(Long Term Support ,长期支持版) 的版本,随着新版JDK的发布,各位是不是该把JDK的升级提上日程了,下面为大家主要介绍一下JDK8后直到17,也就是最新的LTS版本有哪些新特性。 接口中定义私有方法:JDK9支持用户在接口中定义私有方法JDK 10:局部变量类型推断:JDK 10引入了var关键字,允许在局部变量声明时进行类型推断。 JDK 11:JDK11是继JDK8后的第二个LTS版本HTTP客户端标准化:JDK 11引入了一个标准化的HTTP客户端API,使得进行HTTP请求和处理响应更加方便。 JDK 16:本地模式匹配(Pattern Matching for Switch):JDK 16扩展了switch表达式的模式匹配功能,使得处理复杂的条件逻辑更加方便。

    85510编辑于 2023-11-27
  • 来自专栏全栈程序员必看

    如何查看jdk版本号_jdk与tomcat版本

    背景:最近有一个spring boot项目要发布到很老的一台服务器上,该台服务器是XP2002 32位系统,并且spring boot微服务需要连接服务器上的access db,因此需要有对应的jdk, 看了看网上的查看JDK版本很多都不靠谱(中文技术网站都是相互抄袭),特地总结了一下: 方法1:最基本的,下载jdk的时候应该知道自己下的什么版本,在安装jdk的时候就在安装目录里写清楚版本号以便将来jdk 多了进行区分,例如 方法2:配置系统环境变量,然后在cmd打开的dos窗口使用java -version命令查看,32位jdk如图 64位jdk如图 基本上64位会明确指出,32位不会指出。

    3.8K10编辑于 2022-11-09
  • 来自专栏大数据入坑指南

    环境变量配置为jdk8,却显示java版本jdk7

    环境变量配置为jdk8,却显示java版本jdk7 执行war包时出现以下问题: Exception in thread "main" java.lang.UnsupportedClassVersionError 经查找发现是jdk版本的问题,我系统环境变量配置的是jdk7,可是这个war包需要在jdk8的环境下运行。于是我就手动将环境变量的jdk7换成jdk8,结果发现依然还是会出现以上问题。 于是我打开cmd用java -version指令查看发现,我目前配置的环境变量还是jdk7,这我就纳闷儿了,明明配置的是jdk8为何还是显示jdk7。 后来经过一阵上网苦搜,发现原来oracle也自带一个jdk,如果你在配置环境变量时,将jdk配在oracle后面,系统则会默认查找oracle的jdk,导致你的配置根本没起到作用。 这种情况只需要把jdk的配置挪到oracle前面即可,这样也不会影响到oracle的运行。 ?

    1.2K30发布于 2020-08-20
  • 来自专栏关忆北.

    Spring版本JDK版本演变

    Java各版本变更核心API Java8 lambada表达式 函数式接口 方法引用 默认方法 Stream API 对元素流进行函数式操作 Optional 解决NullPointerException Spring Framework 1.0+版本JDK要求是1.3以上,因此,Spring 1.0中肯定可以使用到JDK 1.1的反射特性,代表实现是MethodMatcher。 JDK 5 XML JDK 5版本引入XML处理(DOM、SAX),在Spring中的代表实现是XmlBeanDefinitionReader,其作用是:读取xml配置文件中的信息读取为BeanDefinition JDK 8 Date And Time API Date And Time API,是JDK 8引入新的日期和时间API,也称为JDK 8引入了新的日期和时间API,也称为Java 8 Date and 8版本新特性中,Stream流和函数式接口可能是最大的变更特征。

    1.1K50编辑于 2023-10-11
  • 来自专栏java学习java

    JDK 8 ConcurrentHashMap

    基本 ConcurrentHashMap是Java中的一个线程安全的哈希表实现,它是HashMap的一个并发版本。它提供了一种高效的方式来在多线程环境下进行并发访问和更新。 table),链表简称(bin) 初始化,使用 cas 来保证并发安全,懒惰初始化 table 树化,当 table.length < 64 时,先尝试扩容,超过 64 时,并且 bin.length > 8 { if (binCount >= TREEIFY_THRESHOLD) // 如果链表长度 >= 树化阈值(8)

    39610编辑于 2023-10-15
  • 来自专栏Java架构师历程

    Maven 指定JDK版本

    </description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding > <encoding>UTF-8</encoding> <java.version>1.8</java.version> <maven.compiler.source <source>1.8</source> <target>1.8</target> <encoding>UTF-8< </plugin> </plugins> </build> </project> 使用 IntelliJ 时,一运行 maven build,项目的编译 jdk 总是会变成 1.5 版本,一开始通过maven-compiler-plugin配置指定都不生效,后来在 <properties> 中指定了<maven.compiler.source>1.8</maven.compiler.source

    5.2K20发布于 2018-09-26
  • 来自专栏快乐阿超

    gradle修改jdk版本

    Possible solution: - Upgrade Gradle wrapper to 7.2 version and re-import the project 找了半天没找到修改jdk的入口 最后还是双击shift,搜Change Gradle JDK Location 这才找到:

    55810编辑于 2024-08-23
  • 来自专栏johnhuster

    下载jdk历史版本

    进入oracle jdk下载页面,展示的是官网推荐版本下载路径: 下载历史版本在该页下面一个不起眼的地方:

    3.8K10编辑于 2022-03-28
  • 来自专栏SpringBoot教程

    JDK版本迭代(JDK9 - JDK20)

    Oracle 的官方观点认为:与 Java 7->8->9 相比,Java 9->10->11的升级和 8->8u20->8u40 更相似。 Oracle官网提供了对Oracle JDK个别版本的长期支持,即使发发行了新版本,比如目前最新的JDK19,在结束日期前,LTS版本都会被长期支持。 版本8、11、17三个。 18 https://openjdk.org/projects/jdk/18/ 400: UTF-8 by Default 默认为UTF-8 408: Simple Web Server 简单的Web 比如JDK8中永久代被元空间替代、新的JS执行引擎 比如新的垃圾回收器、GC参数、JVM的优化

    2.8K40编辑于 2023-05-11
  • 来自专栏全栈程序员必看

    eclipse更换jdk版本

    Window—Preferences—Java—Compiler—右侧面板设置为1.6 2.Window—Preferences—Java—Installed JREs—右侧面板“Add”本地的1.6版本 jdk路径,并勾上 以上已经完成eclipse的jdk的变更 3.在你需要变更jdk版本的项目右键选择 可以编辑你的jdk和添加jdk 4.与Java Build Path同级目录下的 Java Compiler中的右侧面板设置为你需要的jdk版本 5.与Java Build Path同级目录下的Project Facets中的右侧面板设置为你需要的jdk版本 以上项目中的 jdk版本设置完毕 注意事项:所有的设置必须要Applly才能生效 如果你导入了别人的新项目,新项目导入进来项目报错,很可能是因为对方的Jdk版本和你不一致,所以可以尝试修改项目的Jdk,前提是你导入的项目在对方的电脑上能运行 博主遇到过一个问题:jdk1.6的版本必须使用tomcat7.0的服务器,不然很可能运行出错。

    4.2K30编辑于 2022-07-31
  • 来自专栏大数据-Hadoop、Spark

    Linux更换jdk版本,java -version还是原来的版本JDK还是之前的版本

    版本JDK还是之前的版本 6.查看系统安装了哪些JAVA,rpm -qa | grep java tzdata-java-2015e-1.el6.noarch java-1.7.0-openjdk-1.7.0.79 -2.5.5.4.el6.x86_64 java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64 上面的三个JDK是安装的Linux版本(Cnetos6.7 Desktop 7.执行which java和which javac查询java的执行路径,分别显示: /usr/bin/java /usr/local/jdk1.7.0_80/bin/javac 8.把步骤7里面的 /bin/java ln -s $JAVA_HOME/bin/javac /usr/bin/javac(可选) 9.再次java -version,可以看到最新的JDK版本

    4.8K70发布于 2018-04-26
  • 来自专栏网络安全攻防

    JAVA安全之JDK8u141版本绕过研究

    基本介绍 从JDK8u141开始JEP290中针对RegistryImpl_Skel#dispatch中bind、unbind、rebind操作增加了checkAccess检查,此项检查只允许来源为本地 8u141之后,而且在JDK 8u121之后加入了JEP290机制,所以在JDK8u121~141之间可以直接利用UnicastRef链路进行绕过,而在JDK 8u141~231则需要结合CheckAccess 的绕过与JRMP反序列化机制来绕过,下面展示JDK8u141之后的真实环境下的利用流程: Step 1:首先使用ysoserial在攻击端启动一个恶意的JRMPListener(CommonCollections1 Status.REJECTED : Status.ALLOWED; } } } 文末小结 本篇文章主要介绍了针对JDK 8u141 ~JDK8u231之间的CheckAccess的绕过+JEP290的绕过实现~ 推 荐 阅 读 横向移动之RDP&Desktop Session Hija

    81700编辑于 2024-12-20
  • 来自专栏蜗牛互联网

    JDK 8 下载、安装和环境配置(macOS 和 Windows 版本

    上一篇文章,学习 Java,使用哪个版本最好,我们选择了 JDK 8,因此本文就以 JDK 8 为例,介绍它的下载、安装和环境配置全过程。 JDK 8 下载 JDK 8 虽然是 Oracle 基于 Java SE 8 的标准发布的开发工具包,但 Oracle 毕竟是个商业公司,在 2019 年 1 月就针对 8 这个版本停止了免费更新,也就是说这个版本往后的更新都需要付费 java/technologies/javase/javase-jdk8-downloads.html。 JDK 8 安装与配置 接下来介绍下 macOS 和 Windows 平台下 JDK 8 的安装与配置。 macOS 下 JDK 安装与配置 下载后得到的 dmg 安装包。 ? source ~/.bash_profile 四、验证 JDK 是否可用。 java -version ? 输入版本指令后,看到以上信息就说明 JDK 可用了。

    34.2K30发布于 2021-03-18
  • 来自专栏全栈程序员必看

    JDK8新特性_JDK8面试题

    JDK8新特性 lambda表达式 要求:接口必须是函数式接口,一个接口如果只有一个抽象方法,那他就是函数式接口,我们可以在一个接口上使用__Functionallnterface__注解 package 可以将流中的元素反复结合起来,得到一个值,返回一个T // 练习:计算1-10自然数的和 List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10

    1.3K40编辑于 2022-09-21
  • 来自专栏用户6590312的专栏

    Linux JDK8

    1、先下载相关的文件,我下载的是jdk8.rpm文件【即下文的文件名】 2、终端中运行sudo rpm jdk8.rpm安装 如果出现 rpm should not be used directly install rpm packages use alien instead, 那么先在终端中运行sudo apt-get install alien【已安装则跳过】sudo alien -i jdk8 .rpm 即可 3、设置环境变量 vi /etc/profile,出现类似下图,插入 JAVA_HOME=/usr/local/java/jdk8【此处是你的路径】 PATH=JAVA_HOME Object 若出现这样的错误: 首先要确认的是环境变量的设置是否正确【可以 echo 查看相关环境变量 或 env 查看所用环境变量】 确定环境变量无错,则进入JDK

    2.9K30发布于 2021-01-13
  • 来自专栏chenchenchen

    ConcurrentHashMap(JDK8

    JDK8的ConcurrentHashMap和JDK7的ConcurrentHashMap有什么区别? JDK8中新增了红黑树 JDK7中使用的是头插法,JDK8中使用的是尾插法 JDK7中使用了分段锁,而JDK8中没有使用分段锁了 JDK7中使用了ReentrantLock,JDK8中没有使用 在JDK8中只有一个数组,就是Node数组,Node就是key,value,hashcode封装出来的对象,和HashMap中的Entry一样,在JDK8中通过对Node数组的某个index位置的元素进行同步 JDK8中的ConcurrentHashMap是如何扩容的? 首先,JDK8中是支持多线程扩容的,JDK8中的ConcurrentHashMap不再是分段,或者可以理解为每个桶为一段,在需要扩容时,首先会生成一个双倍大小的数组,生成完数组后,线程就会开始转移元素,

    14.3K76发布于 2021-09-06
  • 来自专栏关忆北.

    图解JDK 8 HashMap

    HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于等于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树 红黑树 由于在链表中获取对应Value值的过程是通过for循环实现的,其时间复杂度为O(n),当链表过长时,查询时间变长,JDK使用红黑树解决了该问题,当链表长度大于8时,链表进行树化。

    40510编辑于 2024-04-20
领券