Java-1129

news2024/11/30 6:49:39

Java8

  1. 新特性

    1. 速度更快
    2. 代码更少(lambda、stream)
    3. 强大的Stream API
    4. 便于并行
    5. 最大化减少空指针异常Optional
  2. 速度更快:对底层数据结构哈希map的优化

    在这里插入图片描述

    1. 解释说明hashmap基本原理
      1. hashmap本质是一个长度16的数组
      2. 元素的键值对以key:value的形式存储,当key相同时如果value不同则放入同一个key下的链表中,遵循先来的往后放的原则。在jdk1.8则是直接加在链表末尾
      3. hashcode方法:调用之后产生一个长串的哈希码值,码值再经过运算变成hashmap数组的索引值。
    2. hashMap在jdk8中底层实现原理与jdk7不同的说明:
      1. new HashMap(); 底层没有创建一个长度为16的数组。首次调用put()方法时才创建了长度为16的数组
      2. jdk8底层数组为: Node[] ,而非Entry[]
      3. jdk7的底层为: 数组+链表 而 jdk8的底层为: 数组+链表+红黑树
        1. 数组: 用来定位元素的位置
        2. 链表: 用来存储位置相同的元素
        3. 红黑树: 可以实现自平衡(旋转)
      4. 当数组的某一个索引位置上的元素以链表形式存储的数据个数>8,且当前数组元素总数的长度>64时,此时此索引位置上的所有数据改为使用红黑树存储;当在树上进行删除操作,使结点数等于6时,又自动转为链表存储
      5. 加载因子 :也叫扩容因子,就是当hashmap的实际包含元素达到初始化容量*加载因子时,hashmap会进行扩容,
      6. 加载因子0.75: 容量与性能的平衡结果,过大会引起更多冲突,过小会浪费太多空间。
    3. hashset的实现方式也相应改变了。
    4. ConcurrentHashMap也进行了升级,原本并发级别concurrentLevel = 16,改进后基本不用,使用CAS算法
    5. CAS无锁算法:一种乐观锁算法,销量更高,底层操作系统支持的算法。
  3. 速度更快2:底层内存结构也不一样

    1. 原本:栈、堆、方法区(堆中永久区的一部分,堆永久区主要加载类信息,几乎不会被垃圾回收区回收,只不过回收条件比较苛刻;)
      1. 堆的永久区:早在1.8之前,除sun版本的jvm其余JVM早已没有永久区,已经将方法区单独剥离出来永久区。
      2. 堆的永久区:1.8之后,彻底被干掉了,取而代之的是metaSpace元空间,它使用的是物理内存,而不是分配的内存,物理内存有多大,我就可以用多大,而不受限于分配空间。垃圾的清理取决于metaSpaceSize和MaxMetaSpaceSize
  4. 代码更少:Lambda表达式和Stream API

  5. 便于并行:对于pop、join进行了提升,从串行切换到并行

  6. 最大化减少空指针异常

    1. 提供了一个容器类Option,用于封装有可能为空的对象封装到容器类中提供解决方法
  7. 总之:最大的两个改动:lambda表达式和stream API

Lambda表达式

  1. 为什么使用lambda

    1. lambda是一个匿名函数,是一段可以传递的代码,也可以理解为函数参数。基本形式() -> {}

    2. 简化了很多无用的代码,例如:相比匿名内部类定义比较器

      		/**
           * 匿名内部类
           */
          @Test
          public void test1(){
      
              //  匿名内部类实现接口,匿名内部类的实例作为参数
              Comparator<Integer> com =  new Comparator<Integer>() {
                  @Override
                  public int compare(Integer o1, Integer o2) {
                      return Integer.compare(o1,o2);
                  }
              };
              TreeSet<Integer> ts = new TreeSet<>(com);
          }
      
          /**
           * lambda表达式
           */
          @Test
          public void test2(){
              Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
            	//	更简洁可以这样写
              TreeSet<Integer> ts = new TreeSet<>(Integer::compare);
          }
      
    3. 对于一些重复代码可以使用相应的设计模式进行优化,例如定义比较器接口然后进行分别实现,不过代码量也不小。

    4. 总之就是一个词,简洁。

  2. Lambda基本语法

    1. lambda操作符:"->"也叫箭头操作符。左右侧分别为不同内容:
      1. 左侧:参数列表
      2. 右侧:所需执行功能,lambda体

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

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

相关文章

强化学习实战——Motion Imitation环境配置+所遇问题(win10)

GitHub代码 注意&#xff1a;本篇环境配置是基于上一篇强化学习实战——OpenAI Gym环境配置实战演示&#xff08;win10&#xff09;环境的延续&#xff01;&#xff01;&#xff01; 一、环境配置 1&#xff09;下载requirements.txt内安装包 问题1&#xff1a;pybullet不能…

天图资本通过香港上市聆讯:上半年利润下滑24%,王永华为董事长

11月29日&#xff0c;深圳市天图投资管理股份有限公司&#xff08;下称“天图投资”&#xff09;通过港交所聆讯并在港交所递交了聆讯后资料集&#xff08;即招股书&#xff09;。相较于此前招股书&#xff0c;天图资本补充了截至2022年6月30日的财务数据等信息。 招股书显示&a…

哪个牌子蓝牙耳机打电话清晰?通话最清晰的蓝牙耳机推荐

随着蓝牙耳机的普及&#xff0c;越来越多的数码产品如笔记本、平板等都要配有蓝牙耳机&#xff0c;因此&#xff0c;市场对于大电视、多用途、高性能的无线蓝牙耳机的需求不断扩张。蓝牙耳机再这几年不但才音质上采用了最新的技术&#xff0c;通话方面也有改进&#xff0c;下面…

测试开发之路,我在大厂做测试这四年的感悟

开篇 当开始写这篇文章时候&#xff0c;才感受到人生如白驹过隙&#xff0c;4 年时间飞逝&#xff0c;自己也从一个初入职场小白到能肩负项目核心事务的测试开发。在这里&#xff0c;总结 4 年来的心智成长之路&#xff0c;也是借机互相交流&#xff0c;并无对错之争&#xff…

Java web 项目Tamcat在IDEA控制台输出乱码

遇到乱码问题怎么解决呢&#xff1f; 出现乱码其实就是编码格式有问题&#xff0c;设置一下呗&#xff0c;我们先查看一下编码格式&#xff0c;在改一下 1.查看编码格式 首选进入Tamcat安装的根目录 进入conf目录 找到logging.prooperties文件并打开 查看编码格式 编码格式为…

单机服务器docker搭建mysql5.7主从同步

1.首先使用docker安装mysql5.7 docker pull mysql:5.7 2.创建主库&#xff08;从3306映射一个3308端口&#xff09; docker run -d -p 3308:3306 -v /home/mysql-master/conf:/etc/mysql/conf.d -v /home/mysql-master/data:/var/lib/mysql -v /home/mysql-master/log:/var/lo…

启程,2022亚马逊云科技re:Invent Peter带来主题演讲

北京时间11月29日&#xff0c;2022亚马逊云科技re:Invent全球大会开幕首日&#xff0c;亚马逊云科技高级副总裁Peter DeSantis带来最新创新产品隆重登场&#xff0c;其间不乏计算、网络、算法及Serverless等最新功能特性。 网络协议创新&#xff1a;新产品 新理念 基于亚马逊…

MCUXpresso IDE下高度灵活的FreeMarker链接文件模板机制

一、准备工作 首先需要准备好环境&#xff0c;包含必要的软件&#xff0c;痞子衡的环境如下&#xff1a; 集成开发环境&#xff1a; MCUXpresso IDE_11.6.0_8187&#xff0c;点此下载软件开发包&#xff1a; SDK_2.12.1_EVK-MIMXRT1170&#xff08;Toolchain需包含MCUXpresso I…

这么卷,现在测试工程师要求会写工具了?

Fintech概念正受到不少互联网金融公司的热捧&#xff0c;主要是指代那些可用于撕裂传统金融服务方式的高新技术。越来越多的企业开辟了新的部门去研究各种各样能让自己产品增值的科技类产品。 尤其是在很多互联网金融公司&#xff0c;业务分析师BA(Business Analyst)&#xff…

【Linux】-- 初识操作系统

目录 一、冯诺依曼体系结构 二、操作系统 1.概念 2.为什么要有操作系统 三.操作系统 1.硬件层 2.驱动层 3.操作系统层 4.用户层 &#xff08;1&#xff09;用户层 &#xff08;2&#xff09;系统调用接口 &#xff08;3&#xff09;用户操作接口 四、如何管理 1…

C. Zero-Sum Prefixes Codeforces Round #833 (Div. 2)(前缀和+贪心)

传送门 题意&#xff1a; 给你一个长度为n的数组&#xff0c;里面包含a1,a2,a3...an n个元素&#xff0c; 当的时候&#xff0c;你可以将变成任意数字&#xff0c; 问你经过任意次操作后对于&#xff0c;它的前i项和为0的个数是最大是多少&#xff1f; 思路&#xff1a; …

27岁自学Python转行靠谱吗?入行晚吗?

前言 今年已经奔三的小编来给大家说说&#xff0c;之前自己也是在一个普通的二本院校上学&#xff0c;学的还是工商管理&#xff0c;毕竟读书的时候电视剧里面的主角都是工商管理的大佬。 不过在毕业之后就经历了社会的毒打&#xff0c;后面小编就想去换一个工作&#xff0c;…

[附源码]计算机毕业设计springboot交通事故档案管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

jsp192ssm驾校报名预约管理系统

目 录 汽车驾校管理系统设计与实现 I 摘 要 I ABSTRACT I 目 录 III 第1章 绪论 3 1.1开发背景 3 1.2开发意义 3 1.3研究内容 3 第2章 主要技术和工具介绍 3 2.1SSM 框架 错误&#xff01;未定义书签。 2.1.1. Spring 框架 3 2.1.2 SpringS…

clickhouse远程访问Oracle 11g数据库(clickhouse-jdbc-bridge)

1、简介 clickhouse-jdbc-bridge&#xff1a;是clickhouse提供的一个jdbc组件&#xff0c;用于通过JDBC的方式远程访问其他数据库表。 2、安装 &#xff08;1&#xff09;下载源文件并打包获取clickhouse-jdbc-bridge-2.0.7-shaded.jar 在官网&#xff1a;https://github.c…

stc15 - ST7920-12864并口通讯和串口通讯的整理(在一个实现中)

文章目录stc15 - ST7920-12864并口通讯和串口通讯的整理(在一个实现中)概述笔记原理图ENDstc15 - ST7920-12864并口通讯和串口通讯的整理(在一个实现中) 概述 为板子写测试程序, 整到12864 LCD这里. STC原厂工程只提供并口通讯. 找了网上同学的串口通讯实现, 整理了一下, 将串…

当成为全球第二大汽车出口国后,中国车企的下一步是什么?

新一轮汽车出口浪潮在疫情期间悄然启动&#xff0c;中国汽车工业协会发布数据显示&#xff0c;自2021年起&#xff0c;汽车出口销量呈现高速增长的势头&#xff0c;2022年前三季度汽车出口量超过2021年全年出口量&#xff0c;并超越德国&#xff0c;成为仅次于日本的全球第二大…

熊市链游模型如何设计开发?

GameFi的全局趋势 自第一款视频游戏诞生以来&#xff0c;游戏世界已经发生了翻天覆地的变化。技术和玩游戏的目的是不断围绕游戏本身发展着的两件主要事情。曾经的街机游戏、主机游戏、电脑游戏&#xff0c;再到如今智能手机时代&#xff0c;手机游戏已经无处不在。随着时间的…

Navicat 被广泛的应用于各行各业的原因

近期&#xff0c;Navicat 发起了一场用户线上投票活动&#xff0c;受到了众多用户的关注和热情响应&#xff01;今天&#xff0c;我们就带大家了解此次投票数据通过用户的职业、使用频率、连接的数据库种类以及最常用的功能&#xff0c;通过用户视角了解 Navicat 产品的适用范畴…

Https加密超文本传输协议的运用

内容预知 1.https的相关知识 1.1 https的简介 1.2 HTTP 与 HTTPS 的区别 1 .3 SSL的相关了解 1.3 SSL/TLS协议和证书的关系 1.4 https的工作流程 1.5 客户端是如何验证证书是否有效 1.6 web网站并未全部采用https的原因 2. SSL证书获取的方法 2.1 阿里云证书的获取 2…