当前位置: 首页 > wzjs >正文

同一个空间供应商做很多个网站影响网站排名百度seo排名优化

同一个空间供应商做很多个网站影响网站排名,百度seo排名优化,个人做收费网站,关键词排名优化公司哪家好文章目录 1.局部变量类型推断2.引入并行 Full3.应用程序类数据共享4.线程本地握手5.在备用存储装置上进行堆内存分配6.基于Java的实验性JIT编译器7.删除javah工具8.JDK10新增API9.transferTo方法复制文件10.IO流大家族添加Charset参数的方法11.ByteArrayOutputStream新增toStri…

文章目录

      • 1.局部变量类型推断
      • 2.引入并行 Full
      • 3.应用程序类数据共享
      • 4.线程本地握手
      • 5.在备用存储装置上进行堆内存分配
      • 6.基于Java的实验性JIT编译器
      • 7.删除javah工具
      • 8.JDK10新增API
      • 9.transferTo方法复制文件
      • 10.IO流大家族添加Charset参数的方法
      • 11.ByteArrayOutputStream新增toString方法
      • 12.统一垃圾回收器接口

1.局部变量类型推断

var str = "abc"; // 推断为 字符串类型 
var l = 10L; // 推断为long 类型 
var flag = true; // 推断为 boolean 类型 
var list = new ArrayList<String>(); // 推断为 ArrayList<String> 
var stream = list.stream(); // 推断为 Stream<String> 

局部变量类型推断使用场景如下:

  1. 局部变量
  2. 循环内
public class demo01var {// var x = 10; // 成员变量不能使用varpublic static void main(String[] args) {var a = 1;var str = "abc";var flag = true;var list = new ArrayList<String>();list.add("aa");var stream = list.stream();for (var s : list) {System.out.println(s);}for (var i = 0; i < 10; i++) {var x = 5;}}
}

局部变量类型推断不能使用场景

  1. 成员变量
  2. 方法参数
  3. 方法返回类型
public class demo01var { // var x = 10; // 成员变量不能使用var // 参数不能使用var
// public static void test01(var a) {}/* 方法返回类型不能使用var 
public static var test02() { 
return true; 
}*/
}

局部变量类型推断注意事项

  1. var 并不是一个关键字,可以作为标识符,这意味着可以将一个变量、方法、包名写成 var 。不过一般情况下 不会有人这么写的,因为这本身就违反了普遍的命名规范。
// var 并不是一个关键字,而是一个保留的类型名称,这意味着可以将一个变量、方法、包名写成 `var`。 
public static void test03() {var var = 10; System.out.println("var = " + var); 
}
  1. var 声明变量的时候必须赋值、不能用于声明多个变量的情况。
// var 不能用来声明没有赋值的变量、不能用于声明多个变量的情况。 
public static void test04() { 
// var x = null; 
// 不行,推断不出到底是什么类型 
int x = 1, y = 2; // 可以 
// var m = 1, n = 2; // 不行 
}

2.引入并行 Full

G1 是设计来作为一种低延时的垃圾回收器。G1收集器还可以进行非常精确地对停顿进行控制。从JDK7开始启用G1 垃圾回收器,在JDK9中G1成为默认垃圾回收策略。截止到ava 9,G1的Full GC采用的是单线程算法。也就是说G1在 发生Full GC时会严重影响性能。

JDK10又对G1进行了提升,G1 引入并行 Full GC算法,在发生Full GC时可以使用多个线程进行并行回收。能为用户 提供更好的体验。

3.应用程序类数据共享

在这里插入图片描述

JDK 5中引入的类数据共享,将一组类预处理为共享的存档文件,然后可以在运行时对其进行内存映射以减少启动时间。当多个JVM进程共享同一个存档文件时,它还可以减少动态内存占用。

JDK 5仅允许引导类加载器加载归档的类。JDK10对应用程序类数据共享进行了扩展,允许“应用程序类加载器”,内置 平台类加载器和自定义类加载器加载已归档的类。

4.线程本地握手

Safepoint是Hotspot JVM中一种让应用程序所有线程停止的机制。为了要做一些非常之安全的事情,需要让所有线程都停下来它才好做。比如菜市场,人来人往,有人忽然要清点人数,这时候,最好就是大家都原地不动,这样也好统计。Safepoint起到的就是这样一个作用。

JVM会设置一个全局的状态值。应用线程去观察这个值,一旦发现JVM把此值设置为了“大家都停下来”。此时每个应用线程就会得到这个通知,然后各自选择一个point(点)停了下来。这个点就叫Safepoint。待所有的应用线程都停 下来了。JVM就开始做一些安全级别非常高的事情了。

比如下面这些事情:

垃圾清理暂停。类的热更新。偏向锁的取消。各种debug操作。

然而,让所有线程都到就近的safepoint停下来本是需要较长的时间。而且让所有线程都停下来显得有些粗暴。 为此Java10就引入了一种可以不用stop all threads的方式,就是Thread Local Handshake(线程本地握手)。

该新特性的效果

线程本地握手是在 JVM 内部相当低级别的更改,修改安全点机制,允许在不运行全局虚拟机安全点的情况下实现线程回调,使得部分回调操作只需要停掉单个线程,而不是停止所有线程。

简单说,在某些特定情况下,可以只暂停指定的线程,而不是全部线程,比如偏向锁撤销时,不需要暂停所有线程,并遍历找到持有偏向锁的线程,判断线程是否进行撤销,在线程本地握手的方式中,可以只暂停持有偏向锁的线程,并执行回调,检查线程是否撤销偏向锁。

5.在备用存储装置上进行堆内存分配

允许用户将 Java 对象堆分配到备用存储设备上,例如非易失性双列直插式存储模块(NV-DIMM)。

NVDIMM-非易失性双列直插式内存模块,特 点:价格便宜,速度比DRAM慢,断电能保留数据。

随着廉价的NV-DIMM内存的可用性,未来的系统可能会配备异构内存架构。除了DRAM之外,这种架构还将具有一 种或多种具有不同特性的非DRAM存储器。

该特性的目标是无需更改现有的应用程序代码可以代替DRAM用于对象堆。所有其他内存结构(例如代码堆,元空 间,线程堆栈等)将继续驻留在DRAM中。

在这里插入图片描述

在这里插入图片描述

应用场景

  1. 在多JVM部署中,某些JVM(例如守护程序,服务等)的优先级低于其他JVM。与DRAM相比,NV-DIMM具有更高的访问延迟。低优先级进程可以将NV-DIMM内存用于堆,从而允许高优先级进程使用更多的DRAM。
  2. 大数据和内存数据库等应用程序对内存的需求不断增长。这样的应用程序可以将NV-DIMM用于堆,因为与 DRAM相比,NV-DIMM可能具有更大的容量,且成本更低。

6.基于Java的实验性JIT编译器

Java编译器指的是JDK自带的javac指令。这一指令可将Java源程序编译成.class字节码文件(bytecode)。字节码无法直 接运行,但可以被不同平台JVM中的 interpreter(解释器) 解释执行。由于一个Java指令可能被转译成十几或几十个对 等的微处理器指令,这种模式执行的速度相当缓慢。

由于interpreter效率低下,JVM中又增加JIT compiler(即时编译器,just in time)会在运行时有选择性地将运行次 数较多的方法编译成二进制代码,直接运行在底层硬件上。

花费少许的编译时间来节省稍后相当长的执行时间,JIT这种设计的确增加不少效率,但是它并未达到最顶尖的效能,因为某些极少执行到的Java指令在JIT编译时所额外花费的时间可能比interpreter解释器执行时的时间还长,针对这些指令而言,整体花费的时间并没有减少。

Graal是基于Java的JIT编译器,这项 JEP 将 Graal 编译器研究项目引入到 JDK 中。为了让 JVM 性能与当前 C++ 所写版 本匹敌(或有幸超越)提供基础。

7.删除javah工具

javah 用于生成C语言的头文件。

从JDK8开始,javah的功能已经集成到了javac中。去掉javah工具。

javac -h . 文件名.java

8.JDK10新增API

JDK10 给 java.util 包下的List、Set、Map新增加了一个静态方法 copyOf 。copyof方法将元素放到一个不可修改的集 合并返回。

class Main {public static void main(String[] args) {List<Integer> list=new ArrayList<Integer>(3);list.add(1);list.add(2);list.add(3);List<Integer> temp = List.copyOf(list);temp.add(4);}
}

9.transferTo方法复制文件

JDK10 给 InputStream 和 Reader 类中新增了 transferTo 方法, transferTo 方法的作用是将输入流读取的数据 使用字符输出流写出。可用于复制文件等操作。

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));
long nums = reader.transferTo(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt"))));
System.out.println("一共复制的字节数量: "+nums);

10.IO流大家族添加Charset参数的方法

在JDK10中给IO流中的很多类都添加了带Charset参数的方法,比如PrintStream,PrintWriter,Scanner。通过Charset可以指定编码来操作文本。Charset是一个抽象类,我们不能直接创建对象,需要使用Charset的静态方法forName(“编码”),返回Charset的子类实例。

在这里插入图片描述

11.ByteArrayOutputStream新增toString方法

JDK10给 ByteArrayOutputStream 新增重载 toString(Charset charset) 方法,通过指定的字符集编码字节,将缓冲区的内容转换为字符串。通过ByteArrayOutputStream新增的toString(Charset), 可以将字节数组输出流中的数据按照指定的编码转成字符串。

String str = "你好中国";
ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes("GBK"));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int b;
while ((b = bis.read()) != -1) {bos.write(b);
}
//默认utf-8
System.out.println(bos.toString());
System.out.println(bos.toString("GBK"));

12.统一垃圾回收器接口

通过定义一个清晰的垃圾回收器(GC)接口,改善了不同垃圾回收器的源代码隔离,新的 GC 接口使得开发新的垃圾收集器变得更加容易,开发者只需实现一组清晰定义的接口。

http://www.dtcms.com/wzjs/275118.html

相关文章:

  • 超级工程网站建设上海中心大厦长沙百度提升排名
  • 做公司网站好处百度学术搜索入口
  • mip网站app推广接单平台
  • 内蒙古有做购物网站的吗如何网络媒体推广
  • 微信平台与微网站开发互联网营销工具
  • 西安公司企业网站建设seo关键字优化教程
  • 魏县做网站网站发布与推广
  • dw旅游网站怎么做互联网广告推广是做什么的
  • 深圳建设局官网站首页慧聪网
  • 哪里可以学习做网站关键词调词平台费用
  • 北京网络电视台成都seo
  • 排名好的网站开发搜索风云榜入口
  • 网站建设安全与威胁网络营销文案策划都有哪些
  • 免费建网站软件下载手机网络营销的方法包括哪些
  • 保定高端网站建设网站整合营销推广
  • 网站建设自建的优点百度问答平台入口
  • 以公司做网站成都新一轮疫情
  • 网站功能建设特点珠海seo排名收费
  • 服装定制公司网站怎么优化推荐
  • 深圳网站设计收费标准下载安装百度
  • 麻涌镇网站建设广东东莞疫情最新消息
  • 瑞安做网站多少钱现在推广什么app最挣钱
  • vue做电商网站怎么做seo关键词优化
  • 衡水做网站的公司全球疫情最新数据
  • seo做的最好的网站百度云搜索引擎
  • 动力做网站推荐友情链接
  • 网店网站建设规划方案推广普通话的意义论文
  • 模板型网站新浪舆情通
  • 做网站系统学校链接提取视频的网站
  • 可以自己做网站的软件下载学校网站模板