来瞅瞅Java 11都有啥新特性
第1章:引言
大家好,我是小黑!今天小黑要和咱们聊聊Java 11,这个在Java发展史上占有一席之地的版本。说起Java,咱们都知道,它是一门历史悠久又持续发展的编程语言。Java不仅因其“一次编写,到处运行”的理念赢得了广泛的喜爱,还因其强大的社区支持和丰富的库资源而在业界占有一席之地。而Java 11,作为继Java 8之后的又一个长期支持版本(LTS),无疑是近年来Java世界的一大亮点。
那为什么Java 11这么重要呢?首先,咱们得知道,Java每隔一段时间就会发布一个新的版本,每个版本都会带来一些新特性、性能改进甚至是语言层面的变化。但并不是每个版本都会被广泛采用。像Java 11这样的LTS版本,因为会得到长期的支持和更新,所以对于企业和开发者来说,都是一个稳定可靠的选择。Java 11不仅保留了Java语言一贯的稳定性和可靠性,还加入了很多让人眼前一亮的新特性,这也是为什么小黑今天要来好好聊聊它的原因。
第2章:Java 11的背景
说到Java 11,咱们不能不提一下它的前辈——Java 8。自2014年发布以来,Java 8凭借其革命性的特性,如Lambda表达式和Stream API,成为了Java历史上最成功的版本之一。然而,技术总是在不断前进的,Java 8虽好,但随着时间的推移,人们对更高效、更安全、更现代化的编程需求也在不断增长。这就是Java 11出现的背景。
Java 11不仅承载了Java 8的优秀基因,还在此基础上做了大量的增强和改进。其中最值得一提的,当属Java 11成为长期支持版本。这意味着Java 11不仅会得到长期的更新和安全修补,而且也标志着Java社区对它的长期信心和承诺。对于企业用户来说,这意味着更稳定的运行环境和更可靠的未来规划。
Java 11相比Java 8,最大的变化可能就是它的授权和许可政策了。Oracle对Java 11的发布采用了新的许可模型,这在一定程度上影响了Java社区的版权使用策略。但别担心,除了Oracle,还有像AdoptOpenJDK这样的组织提供了免费的Java 11版本,确保了Java的开放性和可获取性。
在技术层面,Java 11加入了许多令人振奋的新特性。比如,它引入了全新的HTTP Client API,这是一个支持HTTP/2协议的现代化网络编程接口,对于进行网络编程的开发者来说,这无疑是个好消息。此外,Java 11还提升了字符串处理的能力,加入了一些非常实用的新方法,比如strip()
、isBlank()
等,大大提高了字符串操作的便捷性。
第3章:Java 11 新增功能和APIs
Lambda表达式的改进
Java 8引入了Lambda表达式,极大地简化了代码,提高了开发效率。在Java 11中,Lambda表达式得到了进一步的优化。这些优化主要体现在性能提升上,使得Lambda表达式在运行时更加高效。虽然这些改进在代码层面看不太出来,但在幕后,它们确实为我们的程序加速了。
新的HTTP Client API
Java 11引入了一个全新的HTTP Client API,它支持HTTP/2和WebSocket,提供了同步和异步两种模式。这个新API比老旧的HttpURLConnection更现代化,更易用。让我们来看一个简单的例子,展示如何使用这个新API来发送一个GET请求:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;// 使用Java 11的HttpClient发送GET请求
public class HttpExample {public static void main(String[] args) throws Exception {HttpClient client = HttpClient.newHttpClient();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com")).build();HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());}
}
这段代码创建了一个HttpClient
实例,构建了一个简单的GET请求,并同步地发送这个请求,然后输出响应的内容。
新的String API
Java 11在String类中添加了一些非常方便的新方法。例如,strip()
方法可以删除字符串两端的空白字符,这与trim()
类似,但更智能,因为它能处理Unicode空格字符。还有isBlank()
方法,可以用来检查字符串是否为空或只包含空白字符。lines()
方法可以将字符串按行分割成流(Stream)。repeat()
方法可以将字符串重复指定次数。让我们看看这些方法的用法:
public class StringExample {public static void main(String[] args) {String str = " Hello, Java 11! \n\n";// 删除首尾空白字符System.out.println(str.strip());// 检查字符串是否为空或只有空白System.out.println("空字符串? " + str.isBlank());// 按行分割字符串str.lines().forEach(System.out::println);// 重复字符串System.out.println(str.repeat(3));}
}
在这段代码中,strip()
清除了字符串两端的空格,isBlank()
检查了字符串是否只包含空白字符,lines()
按行分割了字符串,而repeat(3)
将字符串重复了三次。
Files类的新增方法
Java 11还对文件处理进行了增强,比如在Files
类中加入了一些新方法,使得文件处理更加方便。例如,writeString()
和readString()
方法可以直接写入和读取字符串到文件中,无需像以前那样处理流。
import java.nio.file.Files;
import java.nio.file.Path;public class FileExample {public static void main(String[] args) throws Exception {Path path = Path.of("demo.txt");// 写入字符串到文件Files.writeString(path, "Hello, Java 11!");// 读取文件内容到字符串String content = Files.readString(path);System.out.println(content);}
}
这段代码展示了如何简洁地将字符串写入文件,并读取文件内容到字符串中。
第4章:Java 11 新特性深度解析
Var关键字在本地变量类型推断的应用
虽然var
这个关键字在Java 10中就引入了,但在Java 11中它变得更加实用。var
可以用于局部变量的类型推断,使得代码更加简洁。这在一定程度上减少了冗余的代码,尤其是在处理复杂类型时。来看看var
的使用示例:
import java.util.ArrayList;
import java.util.List;public class VarExample {public static void main(String[] args) {// 使用var进行类型推断var list = new ArrayList<String>();list.add("Hello");list.add("Java 11");// 在循环中使用varfor (var element : list) {System.out.println(element);}// 在流操作中使用varlist.stream().map((var s) -> s.toUpperCase()).forEach(System.out::println);}
}
在这个例子中,我们使用var
来声明变量list
,而不是使用传统的显式类型声明。这样的代码看起来更加简洁,读起来也更自然。
垃圾收集器的改进:ZGC和Epsilon
在Java 11中,引入了两个新的垃圾收集器:ZGC(Z Garbage Collector)和Epsilon。ZGC是一个可伸缩的低延迟垃圾收集器,旨在处理大量数据和多核处理器。而Epsilon是一种实验性的“无操作”垃圾收集器,主要用于性能测试和分析。
-
ZGC:ZGC的设计目标是支持TB级内存容量并保持低延迟。它采用了一种新的垃圾收集技术,可以在处理垃圾收集时减少停顿时间。
-
Epsilon:Epsilon是一种开发和测试工具,它基本上不进行垃圾收集。这听起来可能有些反直觉,但它对于性能测试和内存管理分析非常有用。
JVM改进:即时编译器的优化
Java 11还对即时编译器(JIT)进行了优化,提升了JVM的性能。这些改进包括对代码的更优化编译,以及提高了编译的效率。这对于运行大型应用程序,尤其是需要高吞吐量和低延迟的应用,意义重大。
JIT编译器的优化,尤其是在启动性能和优化编译策略方面的改进,使得Java应用程序在运行时能够更快地达到最佳性能。这种优化对于长时间运行的应用尤为重要,因为它们能从持续的性能改进中受益。
第5章:安全性和加密特性
TLS 1.3支持
Java 11引入了对TLS 1.3的支持。TLS(Transport Layer Security)是一种加密协议,用于在互联网上安全地传输数据。TLS 1.3是最新版本的TLS,相比于旧版本,它提供了更强的安全性和更快的连接速度。
在TLS 1.3中,部分过时且不安全的加密算法被移除,同时引入了更现代、更安全的加密技术。这些改进对于保护数据安全、防止中间人攻击等至关重要。下面是一个简单的示例,展示如何在Java 11中使用TLS 1.3:
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import java.net.Socket;public class TlsExample {public static void main(String[] args) throws Exception {// 创建支持TLS 1.3的SSLContextSSLContext context = SSLContext.getInstance("TLSv1.3");context.init(null, null, null);SSLSocketFactory ssf = context.getSocketFactory();try (Socket socket = ssf.createSocket("example.com", 443)) {// 使用TLS 1.3进行连接System.out.println("已连接到服务器,使用协议:" + socket.getProtocol());}}
}
这段代码创建了一个支持TLS 1.3的SSLContext
,然后使用这个上下文来创建一个安全的套接字连接到服务器。
新的加密算法和安全库
Java 11还增加了对新的加密算法的支持,使得Java应用程序能够使用更加先进和安全的加密技术。例如,Java 11支持ChaCha20和Poly1305加密算法,这些算法在对抗某些类型的攻击方面比传统的AES算法更有效。
这些新的加密算法对于构建安全的网络通信和数据存储尤为重要。它们提供了一种更加强大和灵活的方式来保护敏感数据。例如,如果你需要对存储的数据进行加密,可以使用Java 11中的新算法来实现更高级别的安全性。
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;public class EncryptionExample {public static void main(String[] args) throws Exception {// 生成ChaCha20密钥KeyGenerator keyGen = KeyGenerator.getInstance("ChaCha20");SecretKey key = keyGen.generateKey();// 创建ChaCha20/Poly1305参数byte[] nonce = new byte[12]; // 12字节的随机数GCMParameterSpec paramSpec = new GCMParameterSpec(128, nonce);// 初始化加密器Cipher cipher = Cipher.getInstance("ChaCha20-Poly1305");cipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);// 加密数据byte[] plaintext = "秘密信息".getBytes();byte[] ciphertext = cipher.doFinal(plaintext);System.out.println("加密后的数据:" + new String(ciphertext));}
}
在这个示例中,我们使用ChaCha20算法来加密一段文本。首先生成一个密钥,然后初始化一个Cipher
实例进行加密。
第6章:模块化和Jigsaw项目
模块化的基本概念
在Java 11的模块化体系中,一个模块是一组相互关联的代码和数据。每个模块都有一个模块描述符(通常是module-info.java
文件),在这个文件中定义了模块的名称、它所需的其他模块以及它向外部暴露的API。
模块化的主要好处包括:
- 更好的封装性:模块化使得隐藏内部实现变得更加容易,只暴露必要的API给其他模块。
- 清晰的依赖性:模块的依赖关系在模块描述符中明确声明,使得依赖管理更加直观。
- 改进的性能:模块化可以帮助JVM在启动时和运行时优化性能。
一个简单的模块化示例
让我们来看一个简单的模块化应用程序的例子。假设我们有两个模块:com.example.hello
(提供问候功能)和com.example.main
(使用问候功能)。
首先是com.example.hello
模块的module-info.java
:
module com.example.hello {exports com.example.hello;
}
这里定义了一个名为com.example.hello
的模块,并且它导出了com.example.hello
包。
然后是com.example.hello
模块中的Hello.java
:
package com.example.hello;public class Hello {public static String getGreeting() {return "Hello, Java 11!";}
}
这是一个简单的类,提供了一个返回问候语的方法。
接下来是com.example.main
模块的module-info.java
:
module com.example.main {requires com.example.hello;
}
这个模块声明了对com.example.hello
模块的依赖。
最后是com.example.main
模块中的Main.java
:
package com.example.main;import com.example.hello.Hello;public class Main {public static void main(String[] args) {System.out.println(Hello.getGreeting());}
}
这个类使用了com.example.hello
模块提供的方法。
通过这个例子,咱们可以看到,模块化提供了一种清晰、简洁的方式来组织和管理Java代码。它不仅有助于构建大型应用,还使得应用的构建、打包和部署变得更加方便。
第7章:性能优化和最佳实践
利用新的垃圾收集器优化性能
Java 11引入了新的垃圾收集器,如ZGC和Epsilon,这些垃圾收集器可以在特定场景下显著提升性能。例如,ZGC是专为低延迟设计的,非常适合需要处理大量数据的应用。
使用新的垃圾收集器可能需要调整JVM参数。例如,启用ZGC的参数是-XX:+UseZGC
。但要注意,不同的垃圾收集器适用于不同的场景,所以选择合适的垃圾收集器对于优化性能至关重要。
优化Java代码
代码级的优化也是提升性能的关键。在Java 11中,利用新的语言特性,如var
关键字和新的APIs,可以使代码更加简洁高效。例如,使用var
可以减少代码中的冗余类型声明,使代码更加清晰易读。
此外,合理使用Stream API和Lambda表达式也可以提高代码的性能和可读性。比如,使用并行流(parallel stream)可以在多核处理器上加速数据处理。
性能监控和分析
性能监控和分析是持续优化性能的关键。Java 11提供了强大的监控工具,如Java Flight Recorder和Java Mission Control,这些工具可以帮助我们深入了解程序的运行情况。
使用这些工具,我们可以收集和分析各种性能数据,如CPU使用率、内存使用情况、线程活动等。这些信息对于诊断性能瓶颈和调优非常有用。
第8章:总结
Java 11不仅是Java语言发展的一个重要里程碑,也是Java社区对未来技术趋势的一次积极回应。它引入的新特性和改进,如HTTP Client API、新的垃圾收集器、增强的String API等,都是为了让Java在现代软件开发中继续保持其领先地位。
作为Java开发者,咱们需要持续学习和适应这些变化。这不仅意味着掌握新的语言特性,更重要的是理解这些特性背后的设计理念和应用场景。通过实践和应用这些新特性,我们可以构建更高效、更安全、更可维护的Java应用。
相关文章:
来瞅瞅Java 11都有啥新特性
第1章:引言 大家好,我是小黑!今天小黑要和咱们聊聊Java 11,这个在Java发展史上占有一席之地的版本。说起Java,咱们都知道,它是一门历史悠久又持续发展的编程语言。Java不仅因其“一次编写,到处…...
Copilot在IDEA中的应用:提升编码效率的得力助手
Copilot在IDEA中的应用:提升编码效率的得力助手 前言: 欢迎来到本篇博客,今天我们将深入探讨 GitHub Copilot 在 IntelliJ IDEA 中的应用。GitHub Copilot 是一款由 GitHub 与 OpenAI 共同开发的人工智能代码生成工具,它能够根据上下文提示…...
【Python】Excel不同sheet另存为不同CSV
我有一个excel,内有不同sheet,现在批量生成不通csv文件,并以sheet名命名,或根据sheet名调整命名。 # 读取新的Excel文件 df pd.read_excel(rD:\itm\data.xlsx, sheet_nameNone)# 遍历每个sheet,将其另存为不同的CSV文…...
软件测试|深入学习 Docker Logs
简介 Docker 是一种流行的容器化技术,它能够帮助用户将应用程序及其依赖项打包成一个可移植的容器。Docker logs 是 Docker 提供的用于管理容器日志的命令,本文将深入学习 Docker logs 的使用和管理,帮助用户更好地监测和解决容器问题。 Do…...
试除法求约数算法总结
知识概览 试除法求一个数的约数的时间复杂度是。 例题展示 题目链接 活动 - AcWing 系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。https://www.acwing.com/problem/content/871/ 题解 用试除法求约数,…...
[JavaWeb玩耍日记] 数据库
mysql版本:5.7.24 使用Navicat for MySQL辅助学习(2015年版),这个在粘贴本博客的块引用内容时会有额外的不可见内容导致sql运行出问题,不过有影响的地方笔者已排除 目录 一.数据库创建 二.使用数据库与创建表 三.表内列的数据类型 四.修…...
rime中州韵小狼毫 inputShow lua Translator 输入字符透传翻译器
在 rime中州韵小狼毫 help lua Translator 中我们分享了如何使用 lua 脚本定义一个 translator,并以 五笔・拼音 为例引用了该 translator,并且达到了预期的效果。 今天,我们继续通过 lua 脚本为 rime中州韵/小狼毫 输入法打造一个 translat…...
【RockChip | RV1126】学习与开发
【RockChip | RV1126】学习与开发 文章目录 【RockChip | RV1126】学习与开发1. 资料1. 资料 您好,这是关于A191型RV1126的资料包,请您及时接收哦~链接: https://pan.baidu.com/s/1FXWVxa27Q78nI78d2QKlBQ?pwd=j7mk 提取码: j7mk 若您在开发过程中遇到技术问题,需要帮助时:…...
copilot在pycharm的应用
Copilot在PyCharm中的应用 一、引言 随着人工智能技术的飞速发展,AI在编程领域的应用也越来越广泛。Copilot,作为一款由微软开发的AI编程助手,已经引起了广大开发者的关注。它利用深度学习技术,通过分析大量开源代码,…...
HDU 2841:Visible Trees ← 容斥原理
【题目来源】http://acm.hdu.edu.cn/showproblem.php?pid2841【题目描述】 There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) point. He wonders how many trees he can see. If two trees and Sherlock are in…...
分布式数据之复制(Replication)
1.简介 1.1简介——使用复制的目的 在分布式系统中,数据通常需要被分散在多台机器上,主要为了达到以下目的: 扩展性,数据量因读写负载巨大,一台机器无法承载,数据分散在多台机器 上可以有效地进行负载均衡…...
【多线程】
文章目录 一、线程与进程的概念:二、多线程实现三、线程锁四、线程数量的设置 一、线程与进程的概念: 简单理解 假设总共有3个孩子需要喂饭,孩子每吃一口饭需要咀嚼消化一下。 多线程方案: 雇佣1个保姆,在喂A孩子吃饭…...
基于Vue开发的一个仿京东电商购物平台系统(附源码下载)
电商购物平台项目 项目完整源码下载 基于Vue开发的一个仿京东电商购物平台系统 Build Setup # csdn下载该项目源码压缩包 解压重命名为sangpinghui_project# 进入项目目录 cd sangpinghui_project# 安装依赖 npm install# 建议不要直接使用 cnpm 安装以来,会有各…...
Nginx多ip部署多站点
目录 1.修改网卡配置信息 2.修改主要配置文件nginx.conf 1.修改网卡配置信息 1)来到网卡配置文件存放目录下 cd /etc/sysconfig/network-scripts/ 2)对 ifcfg-ens33 文件进行配置修改前先进行备份 cp ifcfg-ens33 ifcfg-ens33.default 3)先修改成最小配置,使用 d…...
Unity SVN更新提交小工具
Unity SVN更新提交小工具 前言使用说明必要前提源码参数说明 感谢 前言 Unity开发时每次都要到文件夹中操作SVN,做了一个小工具能够在Editor中直接操作。 使用说明 必要前提 前提是要安装好SVN,在文件夹右键能够看到安装的SVN 源码 using System…...
听GPT 讲Rust源代码--compiler(19)
File: rust/compiler/rustc_target/src/spec/mips_unknown_linux_gnu.rs 该文件(rust/compiler/rustc_target/src/spec/mips_unknown_linux_gnu.rs)是Rust编译器针对MIPS架构上的Linux系统的目标描述文件。它的作用是定义了在这个目标上编译时的一些配置…...
redis单机部署
一、下载redis压缩包tar.gz 官网下载,现在一般用6.x以上版本 二、上传指定目录,解压缩 #假如上传到redis用户的家目录 cd /home/redis tar -zxvf redis-6.2.14.tar.gz 三、进入解压缩目录,进行编译 cd redis-6.2.14 make &&a…...
el-upload上传文件
需求:选中或拖拽文件后,使用http-request属性实现自动上传,并根据后端传回来的结果显示错误和控制fileList的显示,如果后端返回成功,则文件显示在文件列表处,如果后端返回失败,则文件列表不显示…...
算法导论复习——CHP16 贪心算法
定义 每一步都做出当前看来最优的操作。 问题引入——活动选择问题 问题描述 活动选择问题就是对给定的包含n个活动的集合S,在已知每个活动开始时间和结束时间的条件下,从中选出最多可兼容活动的子集合,称为最大兼容活动集合。 不失一般性&a…...
【霹雳吧啦】手把手带你入门语义分割の番外12:U2-Net 源码讲解(PyTorch)—— 网络的搭建
目录 前言 Preparation 一、U2-Net 网络结构图 二、U2-Net 网络源代码 1、model.py (1)ConvBNReLU 类 (2)DownConvBNReLU 类 (3)UpConvBNReLU 类 (4)RSU 类 & RSU4F 类…...
phpstudy面板Table ‘mysql.proc‘ doesn‘t exist解决办法
原因分析:误删了mysql数据库 解决办法如下: 1、停止服务 2、先把mysql文件夹下的data文件夹备份,因为data文件里存有数据库文件。然后再删除data文件。 3、cmd管理员命令进入到mysql中的bin目录下 ,执行mysqld --initialize-…...
网安入门09-Sql注入(绕过方法梳理)
ByPass SQL注入ByPass是指攻击者通过各种手段绕过应用程序中已经实施的SQL注入防御措施,例如输入恶意数据、修改请求头等方式,绕过过滤、转义、限制等操作,从而成功地执行恶意SQL语句。攻击者使用SQL注入ByPass技术可以让应用程序的防御措施…...
本地计算机 上的 My5OL808 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
客户反馈说mysql启动不了,报错信息: 本地计算机 上的 My5OL808 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。 查了不少资料,最后分析问题是这样的,手动或者重复安装mysql时,创建了多个…...
2023机器人行业总结,2024机器人崛起元年(具身智能)
2023总结: 1.Chatgpt引爆了通用人工智能,最大的受益者或是机器人,2023年最热门的创业赛道便是人形机器人,优必选更是成为人形机器人上市第一股, 可以说2023年是机器人开启智能化的元年,而2024则将成为机器…...
go 语言中的类型判断
_. ok : interface{}(a).(B)此语句用于判断对象a是否是B类型 也可以判断对象a是否实现了B接口 package mainimport "fmt"type Pet interface {SetName(name string)Name() stringCategory() string } type Dog struct {name string }func (dog *Dog) SetName(name …...
java基于ssm的房源管理系统+vue论文
目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…...
RH850P1X芯片学习笔记-A/D Converter (ADCF)
文章目录 Features of RH850/P1x-C ADCFNumber of UnitsRegister Base AddressClock SupplyInterrupts and DMAHardware ResetExternal Input/Output SignalsVirtual Channel OverviewFunctional OverviewBlock DiagramPhysical Channels, Virtual Channels and Scan Groups Re…...
38 调优kafka
操作系统调优 1.禁止atime更新,减少文件系统的写操作。 mount -o noatime 2.选择高性能的文件系统,如ext4或者XFS 3.swap空间设置,将swappniness设置成很小的一个值比如1~10,防止linux OOM Killer 开启随意杀掉进程。…...
java推荐系统:好友推荐思路
1.表的设计 表里面就两个字段,一个字段是用户id,另外一个字段是好友id,假如A跟B互为好友,那在数据库里面就会有两条数据 2.推荐好友思路 上面的图的意思是:h跟a的互为好友,a跟b,c&am…...
java: 写入数据到HBase
一、添加依赖 <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hbase</groupId><art…...
免费包装设计网/百度seo收录软件
倍增求 LCA 是在线的,而且比 ST 好写多了,理解起来比 ST 和 Tarjan 都容易,于是就自行脑补吧,代码写得容易看懂 关键理解 f[i][j] 表示 i 号节点的第 2j 个父亲,也就是往上走 2j 个节点 求 LCA 的时候先倍增让两点深度…...
济南网站营销/seo的培训网站哪里好
作者:卓庆森 http://www.cnblogs.com/zhuoqingsen/p/MQ.html我走过最长的路是你的套路女:二号男嘉宾,假如我们牵手成功后,你会买名牌包包给我吗?男:那你会听话吗?女:会 听话。男&…...
武汉网站建设 网站制作/引流推广营销
本文为美国罗切斯特理工学院(作者:Ming Li)的硕士论文,共101页。 高分辨率航空图像的日益普及,提高了城市场景的建模精度。这种高精度建模为灾难恢复和资产评估提供了强有力的参考。本文基于已有的机载斜向图像重建技…...
廊坊网站开发公司/桂林最新消息今天
[CSP2021]廊桥分配(airport) P7913 [CSP-S 2021] 廊桥分配 通过题意我们可以知道,预处理对于每个国内和国外机场来说,分配给1-m个廊桥进行停放。 设f[i]:国内有i个廊桥能承载的飞机数量设f[i]: 国内有 i 个廊桥能承载的飞机数量…...
河南网站优化/跟我学seo
来自:http://blog.csdn.net/dawanganban/article/details/17679069在前面几篇文章中介绍了HTML5的特点和需要掌握的基础知识,下面我们开始真正的体验一下HTML5的优势,我们开始制作一个漂亮的视频播放器吧先别急,在开始制作之前先了解一下视频…...
网站开发 强制兼容模式/跟我学seo从入门到精通
ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con new SqlConnection(ConnectionString)){string cmdText "select Flag from UserL…...