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

c 转网站开发网站建设感悟

c 转网站开发,网站建设感悟,手机微网站建设,wordpress 公司建站三、网络编程1#xff0e;网络编程概述Java 是 Internet 上的语言#xff0c;它从语言级上提供了对网络应用程序的支持#xff0c;程序员能够很容易开发常见的网络应用程序。2#xff0e;网络的基础#xff08;1#xff09;计算机网络把分布在不同地理区域的计算机与专门…三、网络编程1网络编程概述Java 是 Internet 上的语言它从语言级上提供了对网络应用程序的支持程序员能够很容易开发常见的网络应用程序。2网络的基础1计算机网络把分布在不同地理区域的计算机与专门的外部设备用通讯线路互联成一个规模大功能强的网络系统从而使众多的计算机可以方便地互传信息共享硬件软件数据信息等资源。2网络编程的目的直接或间接的通过网络协议与其他计算机实现数据互换进行通讯。3网络通讯的要素概述1通讯双方的地址IP 地址端口号2一定的规则即网络通讯的协议有两套参考模型① OSI 参考模型模型过于理想化未能在因特网上进行广泛推广② TCP/IP 参考模型TCP/IP协议事实上的国际标准3网络通讯要素1IP 地址和端口号1IP 地址InetAddressa. 唯一的标识 Internet 上的计算机通讯实体b. 本地环回地址127.0.0.1127.0.0.1/localhostc. IP地址的分类方式1IPV4 和 IPV6a) IPV44 个字节组成4 个 0~255大概 42 亿30 亿都在北美亚洲 4 亿2011 年初已经用完以点分十进制表示比如192.16.0.211b) IPV6: 128位16个字节写成 8 个无符号整数每个整数用四个十六进制位表示数之间用冒号分开例如3ffe:3201:1401:1280:c8ff:fe4d:db39:984d. IP 地址分类方式 2公网地址万维网使用和私有地址局域网使用。其中 192.168. 开头的就是私有地址范围是 192.168.0.0~192.168.255.255专门为组织机构内部使用。2端口号标识正在计算机上运行的进程程序a. 不同的进程有不同的端口号这样同一个操作系统中同时允许多个进程进行通讯。b. 被规定为一个 16 位的整数0~65535c. 端口的分类a) 公认端口0~1023被预先定义的服务通讯占用如HTTP 占用端口号 80FTP 占用 21 端口Telnet 占用23端口程序员不能去占用这些端口b) 注册端口1024~49151分配给用户进程或应用程序如 Tomcat 占用端口 8080MySQL 占用端口3306Oracle 占用端口 1521c) 动态/私有端口49152~65535d. 端口号和 IP 地址组合得到一个网络套接字Socket3InetAddress 类Java 中表示 IP 地址的类a. Internet 上的主机又有两种表示方式a) 域名hostNamewww.baidu.com每个域名都对应了一个或多个IP地址通过域名服务器DNS将域名解析成 IP 地址的形成来通讯域名比 IP 地址更容易记忆。b) IP 地址hostAddress39.156.66.14b. InetAddress 类主要表示 IP 地址有两个子类Inet4AddressInet6Address。c. InetAddress 类对象包含有一个 Internet 主机地址的域名或IP地址www.baidu.com或39.156.66.14d. 域名容易记忆当在连接网络时输入一个主机的域名后域名服务器DNS负责将域名转换为IP地址这样才能和主机建立连接。----域名解析e. InetAddress 类没有提供公共的构造器而是提供了如下几个静态方法来获取 InetAddresspublic static InetAddress getLocalHost(); //获取本机对应的 InetAddresspublic static InetAddress getByName(String host); //通过主机名域名或IP地址获取InetAddressf. InetAddress 常用的方法public String getHostAddress()返回 IP 地址字符串以文本表现形式public String getHostName()获取此 IP 地址的主机名public boolean isReachable(int timeout)测试是否可以达到该地址示例4网络通讯的要素2网络协议1网络通讯协议计算机网络中实现通讯必须要有一些约定即通信协议对速率传输代码代码结构传输控制步骤出错控制等指定标准。2问题网络协议太复杂计算机网络通讯涉及内部比较多比如指定源地址和目的地地址加密解密压缩解压缩差错控制路由控制如何实现如此复杂的网络协议呢3通信协议分层的思想在指定协议时把复杂成分分解成一些简单的成分再将它们复合起来最常用的复合方式就是层次方式即同层间可以通讯上一层可以调用下一层而与再一层不发生关系各层互不影响利于系统的开发和扩展。4TCP/IP 协议簇a. 传输层协议中有两个非常重要的协议传输层控制协议 TCPTransmission Control Protocol用户数据报协议 UDPUser Datagram Protocolb. TCP/IP 以其两个主要协议传输层控制协议TCP和网络互联协议IP而得名实际上是一组协议包括多个具有不同功能且互为关联的协议c. IPInternet Protocol协议是网络层的主要协议支持网间互联的数据通讯。d. TCP/IP 协议模型从更实用的角度出发形成了高效的四层体系结构即物理链路层IP层传输层应用层。5TCP 和 UDPa. TCP 协议使用 TCP 协议前需要建立 TCP 连接形成传输数据通道传输前采用“三次握手”方式点对点通信是可靠的通信TCP 协议进行通信的两个应用程序客户端和服务器在连接中可进行大数据量的传输传输完毕需要释放已建立的连接效率低。b. UDP 协议将数据源地址目的地封装成数据报不需要建立连接每个数据报的大小限制在 64K 内发送不管对方是否准备好接收方收到也不确认所以是不可靠可以广播发送发送数据结束时无需释放资源开销小速度快。5Socket 编程1利用套接字Socket开发网络应用程序已被广泛使用以至于成为了事实上的标准2网络上具有唯一标识的 IP 地址和端口号组合在一起才能构成唯一能识别的标识符套接字3通信两端都要有 Socket是两台机器通信的端点。4网络通信其实就是 Socket 通讯5Socket 允许程序把网络连接当成一个流数据在两个 Socket 间通过 IO 传输6一般主动发送通信的应用程序是客户端等待通信请求的是服务端。7Socket 分类a. 流套接字Stream Socket使用 TCP 提供的字节流服务b. 数据报套接字Datagram Socket使用 UDP 提供“尽力而为”的数据报服务8Socket 类的常用构造器public Socket(InetAddress address,int port)创建一个流套接字TCP并将其连接到指定IP地址和端口号。public Socket(String host,int port)创建一个流套接字并将其连接到指定主机上的指定端口。9Socket类的常用方法public InputStream getInputStream()返回此套接字的输入流。可以用于接收网络消息。public OutputStream getOutputStream()返回此套接字的输出流。可以用于发送网络消息public InetAddress getInetAddress()此套接字连接到的远程IP地址如果套接字是未连接的则返回null。public InetAddress getLocalAddress()获取套接字绑定的本地地址。即本地的IP地址public int getPort()此套接字连接到的远程端口号如果套接字尚未连接返回0public int getLocalPort()返回此套接字绑定到的本地端口。如果尚未绑定套接字则返回-1.public void close()关闭此套接字。套接字被关闭后便不可在以后的网络中使用即无法重新连接或重新绑定。需要创建新的套接字对象。关闭此套接字也将会关闭该套接字的 InputStream 和 OutputStreampublic void shutdownInput()如果在此套接字上调用该方法后从套接字输入流读取内容则流将返回 EOF文件结束符。即不能从此套接字的输入流中接收任何数据。public void shutdownOutput()禁用此套接字的输出流。即不能通过此套接字的输出流发送任何数据。6TCP 网络编程基于 Socket 的 TCP 编程示例实现服务器端可以同时接收多个客户端上传文件服务端package com.edu.net;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;//文件上传多线程服务端 public class TCPServer {    public static void main(String[] args) throws Exception{// TODO Auto-generated method stub//1. 创建一个带缓冲的线程池ExecutorService threadPool Executors.newCachedThreadPool();//2. 创建服务端的 Socket监听端口等待客户端连接上来ServerSocket serverSocket new ServerSocket(6666);//实现多个客户端连接服务器的操作while(true) {//3. 注意此时返回的 socket 就是指当前连接上来的客户端 SocketSocket socket serverSocket.accept();//该方法会阻塞直到有客户端连接上来为止//4. 一旦有一个客户端连接上来我们就创建一个线程来处理该客户端的请求Runnable r () - {try {// 5. 显示一下当前是哪个客户端连接上来了InetAddress ipAddr socket.getInetAddress();//得到客户端的 IP 地址String ip ipAddr.getHostAddress();//获取 IP 地址字符串System.out.println(客户端 ip 连接到服务器...);//6. 获得 socket 的输入流InputStream in socket.getInputStream();BufferedInputStream bis new BufferedInputStream(in);// 7. 创建输出流指定上传文件的目录比如我们需要在 F 盘中创建一个 upload 目录BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(f:/upload/ ip (  System.currentTimeMillis() ).jpg));byte[] buf new byte[1024];int len -1;while((len bis.read(buf)) ! -1) {//写入文件bos.write(buf, 0, len);}//8. 完成之后输出一些信息给客户端OutputStream out socket.getOutputStream();out.write(图片上传成功.getBytes());//9. 关闭资源out.close();bos.close();bis.close();socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}};//将上面的任务放到线程池中执行threadPool.execute(r);}}}客户端package com.edu.net;import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException;public class TCPClient {    public static void main(String[] args) {// TODO Auto-generated method stubtry {//1. 创建客户端 Socket指定服务器的 IP 地址和端口去连接服务器Socket socket new Socket(192.168.110.56, 6666);//2. 获取 Socket 输出流把图片文件写给服务器OutputStream out socket.getOutputStream();//3. 创建输入流读取本地图片文件BufferedInputStream bis new BufferedInputStream(new FileInputStream(d:/img.jpg));//4. 写出图片数据给服务器byte[] buf new byte[1024];int len -1;while((len bis.read(buf)) ! -1) {out.write(buf, 0, len);}//5. 写完之后关闭输出流socket.shutdownOutput();//6. 读取服务器反馈的信息InputStream in socket.getInputStream();byte[] buffer new byte[1024];int length in.read(buffer);System.out.println(new String(buffer, 0, length));//7. 关闭资源in.close();bis.close();out.close();socket.close();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}7UDP网络编程UDP网络通讯1类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议的网络程序2UDP 数据报通过数据报套接字 DatagramSocket 发送和接收系统不保证 UDP 数据报能够安全的到达目的地也不能确定什么时候能到达。3DatagramPacket 对象封装了 UDP 数据报在数据报中包含了发送端 IP 地址和端口号以及接收端的 IP 地址和端口。4UDP 协议中每个数据报都给出完整的地址信息因此无需建立发送方和接收方的连接类似与发快递包裹一样。5DatagramSocket 类的常用方法public DatagramSocket(int port)创建数据报套接字并将其绑定在本机指定端口。套接字将被绑定到通配符地址IP 地址由内核来选择。public DatagramSocket(int port, InetAddress Iaddr)创建数据报套接字将其绑定到指定本地地址本地端口必须在0到65535之间如果 IP 地址是 0.0.0.0套接字将被绑定到通配符地址IP 地址由内核选择。public void close(): 关闭此数据报套接字。public void send(DatagramPacket p) : 从此套接字发送数据报报。DatagramPacket 包含的信息指示将要发送的数据、其长度、远程主机的IP地址和远程主机的端口号。public void receive(DatagramPacket p)从此套接字接收数据报报。当此方法返回时DatagramPacket 的缓冲区填充了接收的数据。数据报报也包含发送方的IP地址和端口号。此方法在接收到数据报前一直阻塞。数据报包对象的 length 字段包含所接收信息的长度。如果信息比报的长度长该信息将被截断。public InetAddress getLocalAddress()获取套接字绑定的本地地址。public int getLocalPort()返回此套接字绑定的本地主机上的端口号。public InetAddress getInetAddress()返回此套接字连接的地址。如果套接字未连接则返回null。public int getPort()返回此套接字的端口。如果套接字未连接则返回-1.public DatagramPacket(byte[] buf,int length)构造 DatagramPacket用来接收长度为 length 的数据包。length 参数必须小于等于buf.length。public DatagramPacket(byte[] buf,int length,InetAddress address,int port)构造数据报报用来将长度为length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。public InetAddress getAddress()返回某台机器的IP地址此数据报将要发往该机器或者是从该机器接收到的。public int getPort()返回某台远程主机的端口号此数据报将要发往该主机或者是从该主机接收到的。public byte[] getData()返回数据缓冲区。接收到的或将要发送的数据从缓冲区的偏移量 offset 处开始持续length 长度。public int getLength()返回将要发送或接收到的数据的长度。6流程a. 构造 DatagramSocket 和 DatagramPacketb. 建立发送端和接收端c. 建立数据报d. 调用 Socket 发送接收e. 关闭Socket发送端和接收端是两个独立的程序示例发送端package com.edu.net;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException;public class Sender {public static void main(String[] args) {try {//构建一个用户数据报套接字DatagramSocket socket new DatagramSocket();//准备数据String str UDP 数据报测试数据;byte[] bytes str.getBytes();//这里不能用str.length()因为字符串是2个字节表示一个字符我们这里需要的是多少个byte字节int length str.getBytes().length;//构建一个数据报 DataGramPacket指定要发送的数据长度以及要去向的目的地的IP地址和端口DatagramPacket packet new DatagramPacket(bytes, length, InetAddress.getByName(192.168.110.565), 8888);//发送数据报socket.send(packet);//关闭socket.close();} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }接收端package com.edu.net;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class Receiver {    public static void main(String[] args) {// TODO Auto-generated method stubtry {//创建DataGramSocket监听 8888 端口DatagramSocket socket new DatagramSocket(8888);//创建 buf 来接收数据byte[] buf new byte[1024];int len buf.length;//构建数据报DatagramPacket packet new DatagramPacket(buf, len);//接收数据报socket.receive(packet);//该方法会阻塞直到收到发送方的数据报System.out.println(接收到的数据 new String(buf, 0, len));//关闭socket.close();} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}结果先启动接收端再启动发送端8URL 类1URLUniform Resource Locator统一资源定位符它表示 Internet 上某一个资源的地址2它是一种具体的 URI 即 URL 可以用来标识一个资源而且还指明了如何 locate 这个资源。3通过 URL 我们可以访问 Internet 上的各种网络资源比如常见的 wwwftp 站点浏览器通过解析给定的URL 可以在网络上查找相应的文件或其他资源。4URL 的基本结构由5部分组成传输协议://主机名/域名/IP地址:端口号/文件名#片段名?查询名列表例如http://192.168.1.100:8080/helloworld/index.jsp#a?usernamexiaomingpassword123#片段名即锚点例如看小说直接定位到章节查询名列表/请求参数参数名参数值参数名参数值5URL 类构造器a. 为了表示 URLjava.net 中实现了类 URL我们可以通过下面的构造器来初始化 URL 对象:public URL(String spec)通过一个表示 URL 地址的字符串来构造一个URL对象例如URL url new URL(“http://www.163.com”);public URL(URL conext,String spec)通过基URL和相对URL构造一个URL对象。例如URL url new URL(url,”download.html”); // http://www.163.com/download.htmlpublic URL(String protocol,String host,String file)例如URL url new URL(“http”,”www.163.com”,”download.html”); // http://www.163.com/download.htmlpublic URL(String protocol,String host,int port,String file)例如URL url new URL(“http”,”www.163.com”,80,”download.html”)b. URL 类的构造器都声明了抛出非运行时异常必须要对这个异常进行处理通常是加上try...catch语句进行捕获。9针对于 HTTP 协议 URLConnection 类1URL 类的方法 openConnection()能够从网络上读取数据2若希望输出数据例如向服务端Tomcat 服务器基于 HTTP 协议的服务器发送一些数据则必须先与URL建立连接然后才能对其进行读写此时需要使用 URLConnection.3URLConnection表示到 URL 所引用的远程对象的连接当与一个 URL 建立连接时首先要在一个 URL 对象上通过 openConnection() 生成对应的 URLConnection 对象如果连接失败将产生IOException例如URL url new URL(“http://localhost:8080/index.jsp”);URLConnection conn url.openConnection();4通过 URLConnection 对象获取输入和输出流就可以和 Tomcat 服务器进行交互常见的方法有public Object getContent() throws IOExceptionpublic int getConentLength()public String getContentType()public long getDate()public long getLastModified()public InputStream getInputStream() throws IOExceptionpublic OutputStream getOutputStream() throws IOException10URI是 Uniform Resource Identifier统一资源标识符用来唯一的标识一个资源而 URL 是Uniform Resource Locator统一资源定位符它是一种具体的 URI即 URL 可以用来标识一个资源而且还指明了如何 locate 这个资源而URNUniform Resource Name统一资源命名是通过名字来标识资源比如mailto:xiaoming126.com也就是说URI 是一种抽象的高层次概念定义统一资源标识而 URL 和 URN 则是具体的资源标识的方式URL 和 URN 都是一种 URI。四、JDK17 新特性1. JDK8 和 JDK17共存保持先前的 JDK8 的环境变量配置不变安装 JDK17保持默认的路径一路向前下一步。(1) 在系统环境变量中新增 JDK8 和 JDK17 两个环境变量分别引用 JDK8 和 JDK17 的安装目录(2) 然后将之前配置的系统环境变量 JAVA_HOME 改成如下比如我们改来使用 JDK17以后我们要切换回JDK8那么就将“变量值”改为“%JDK8%”然后系统环境变量Path的值保持原来的配置然后验证一下(3) Eclipse 中配置 JDK17新建一个工程从 Springboot3.0 开始已经不⽀持 JDK8 了。 从 3.0 开始转变为 JDK17。Java17 是长期支持版本LTS于 2021 年 9 月发布是继 Java 11 之后的又一个重要的稳定版本。Java17 提供了许多语言特性和 API 改进同时也移除了一些过时的功能显著提高了语言表达能力和运行时性能。2.下面我们来看一下Java17的新特性1. 密封类Sealed Classes2.1 什么是密封类密封类是一种新特性允许开发者严格控制子类的继承。通过定义一个密封类可以限制哪些类能够继承它。2.2 使用场景更精确地控制继承关系。更好的代码安全性和可读性。避免了意外的类扩展。3.3 示例2.4 关键字说明sealed定义密封类。permits指定允许继承密封类的子类。non-sealed允许子类取消密封。final子类不能再被继承。3. var关键字从 Java10 开始var 被引⼊var name zhangsan;var age 10;上述代码中编译器会⾃动推断出 name 是⼀个 String 类型age 是⼀个 int 类型。为什么使⽤ var使⽤ var 可以使代码更简洁。有时候类型名称可能会⾮常⻓例如泛型。var 就像是⼀个简化器让你不必反复写出繁琐的类型名。使⽤注意事项1. 不能使⽤ var 来声明字段类属性2. 不能使⽤ var 来声明⽅法参数3. 不能使⽤ var 来声明⽅法返回类型4. var 声明变量必须初始化但是不能初始化为 null例如4. 文本块这个更新非常实用。在没有这个特性之前编写长文本非常痛苦。虽然 IDEA 等集成开发工具可以自动处理但最终效果仍然丑陋充满拼接符号。现在通过字符串块我们可以轻松编写 JSON、HTML、SQL 等内容效果更清爽。示例5. NullPointerException 增强空指针异常NPE一直是 Java 程序员的痛点因为报错信息无法直观地指出哪个对象为空只抛出一个 NullPointerException 和一堆堆栈信息定位问题耗时且麻烦。尤其在遇到级联调用的代码时逐行排查更是令人头疼。如果在测试环境中可能还需通过远程调试查明空对象费时费力。Java17 终于在这方面取得了突破提供了更详细的空指针异常信息帮助开发者迅速定位问题源头。6. Records在 Java 中POJO普通的Java对象可以理解为就是 JavaBean对象如DO、PO、VO、DTO等通常包含成员变量及相应的 Getter 和 Setter 方法。尽管可以通过工具或 IDE 生成这些代码但修改和维护仍然麻烦。为此Java 引入了标准解决方案Records。它通过简洁的语法定义数据类大大简化了 POJO 类的编写如下所示。虽然 hashcode 和 equals 方法仍需手动编写但 IDE 能够自动生成。这一特性有效解决了模板代码问题提升了代码整洁度和可维护性。示例7. 全新的switch表达式在 Java12 的时候就引入了 switch 表达式注意这里是表达式而不是语句原来的 switch 是语句。主要的差别就是就是表达式有返回值而语句则没有。再配合模式匹配以及 yield 和 “-” 符号的加入全新的switch 用起来爽到飞起来。示例package com.edu.jdk17; public class SwitchDemo {/*** 在JDK8中获取 switch 返回值方式** param week* return*/public static int getByJDK8(Week week) {int i 0;switch (week) {case MONDAY, TUESDAY:i 1;break;case WEDNESDAY:i 3;break;case THURSDAY:i 4;break;case FRIDAY:i 5;break;case SATURDAY:i 6;break;case SUNDAY:i 7;break;default:i 0;break;}        return i;}    /*** 在JDK17中获取switch返回值** param week* return*/public static int getByJDK17(Week week) {// 1, 现在的switch变成了表达式可以返回值了而且支持yield和-符号来返回值// 2, 再也不用担心漏写了break而导致出问题了// 3, case后面支持写多个条件return switch (week) {case MONDAY - 1;case TUESDAY - 2;case WEDNESDAY - 3;case THURSDAY - 4;case FRIDAY - 5;case SATURDAY, SUNDAY - 6;default - 0;};}    private enum Week {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY}public static void main(String[] args) {System.out.println(getByJDK17(Week.SATURDAY));} }8. 私有接口方法从 Java8 开始允许在 interface 里面添加默认方法其实当时就有些小困惑如果一个 default 方法体很大怎么办拆到另外的类去写吗实在有些不太合理所以在 Java17 里面如果一个 default 方法体很大那么可以通过新增接口私有方法来进行一个合理的拆分了。9. 模式匹配在 JDK17 中模式匹配主要用于 instanceof 表达式。模式匹配增强了 instanceof 的语法和功能使类型检查和类型转换更加简洁和高效。在传统的 Java 版本中我们通常使用 instanceof 结合类型转换来判断对象类型并进行处理这往往会导致冗长的代码。10. 集合类的工厂方法在 Java8 的年代即便创建一个很小的集合或者固定元素的集合都是比较麻烦的为了简洁一些有时我甚至会引入一些依赖。11. JDK17 的其他特性1 新的String方法repeat重复生成字符串isBlank不用在引入第三方库就可以实现字符串判空了strip去除字符串两边的空格支持全角和半角之前的trim只支持半角lines能根据一段字符串中的终止符提取出行为单位的流indent给字符串做缩进接受一个int型的输入transform接受一个转换函数实现字符串的转换2 Stream API的增强增加 takeWhile, dropWhile, ofNullable, iterate 以及 toList 的API越来越像一些函数式语言了。用法举例3 Jshell在新的 JDK 版本中支持直接在命令行下执行 java 程序类似于 python 的交互式 REPL。简而言之使用 JShell你可以输入代码片段并马上看到运行结果然后就可以根据需要作出调整这样在验证一些简单的代码的时候就可以通过 Jshell 得到快速地验证非常方便。4 java 命令直接执行 java 文件在现在可以直接通过执行java xxx.java即可运行该 java 文件无须先执行 javac然后再执行 java是不是又简单了一步。5 ZGC在 ParallelOldGC、CMS 和 G1 之后JDK11 引入了全新的 ZGCZ Garbage Collector。官方宣称 ZGC 的垃圾回收停顿时间不超过10ms能支持高达 16TB 的堆空间并且停顿时间不会随着堆的增大而增加。那么ZGC 到底解决了什么问题Oracle 官方介绍它是一个可伸缩的低延迟垃圾回收器旨在降低停顿时间尽管这可能会导致吞吐量的降低。不过通过横向扩展服务器可以解决吞吐量问题。官方已建议 ZGC 可用于生产环境这无疑将成为未来的主流垃圾回收器。
http://www.zqtcl.cn/news/992339/

相关文章:

  • 北京平台网站建设价位怎样做网站卖网站
  • 网站建设与维护试题a卷建设银行官方网站买五粮液酒
  • 安装网站源码做文艺文创产品的网站
  • 软件公司网站设计与制作电子商务成功网站的案例
  • 购物车功能网站怎么做的建设众筹类网站
  • 哪些网站做的美爱站工具网
  • 对网站开发的理解源码资源网
  • 有哪些做兼职的网站网站建设的项目计划书
  • 如何做行业网站江苏城乡建设部网站首页
  • 淘客网站怎么做 知乎wordpress 删除插件
  • 深圳市住房和建设局人事调整公司网站seo怎么做
  • 小型影视网站源码好看的个人博客
  • 哈密建设厅网站西安培训机构
  • 网站建设公众号小程序开发密云网站开发
  • 南宁网站开发制作网站数据库分离怎么做
  • 不能打开建设银行网站怎么办自己做网站要会什么软件下载
  • 微软网站怎么做的diy个性定制
  • 洛阳做网站的公司宣传品牌网站建设
  • 公司网站开发招标书电子商务网站系统
  • 哪个旅游网站做的最好营销策划方案范文免费下载
  • 德州哪家网站优化公司专业单页网站seo如何优化
  • 南昌汉邦网站建设城建局
  • 网站建设:中企动力招聘网58同城招聘发布
  • 惠州住房和建设局网站物流网站建设方案范文
  • 做网站架构需要什么步骤wordpress插件连不上
  • 网上购物网站建设规划论文国家企业网官网查询
  • 响应式网站建设推荐乐云seo2022年热点新闻事件
  • 用.net做视频网站的案例做网站需要视频衔接怎么做
  • 网站搭建规划模板wordpress博客点赞
  • 怎么在wordpress免费注册博客网站百度广告代理