body builder中文版,什么叫FBB?
意思是由粉转黑。指以前是某人的粉丝,后来不再喜欢了之后,到处黑TA,说TA坏话的行为。英语缩略词“FBB”经常作为“Female Body Builder”的缩写来使用,中文表示:“女性健美运动员”。本文将详细介绍英语缩写词FBB所代表英文单词,其对应的中文拼音、详细解释以及在英语中的流行度。此外,还有关于缩略词FBB的分类、应用领域及相关应用示例等。
java9的新特性大家了解多少?
在Java 9中列出的新功能 -
1. Java平台模块系统
Java 9的定义功能是全新的模块系统。当代码库越来越大时,创建复杂的“意大利面代码”的可能性呈指数级增长。有两个基本问题:真正封装代码是困难的,系统的不同部分(JAR文件)之间不存在显式依赖的概念。每个公共类都可以被类路径上的任何其他公共类访问,导致无意使用不是公共API的类。此外,类路径本身是有问题的:您如何知道所有必需的JAR是否存在,或者是否存在重复的条目?模块系统解决了这两个问题。
模块化JAR文件包含一个额外的模块描述符。在这个模块描述符中,通过`require`语句表示对其他模块的依赖关系。另外,`exports`语句控制哪些包可以被其他模块访问。所有未导出的软件包默认封装在模块中。下面是一个模块描述符的例子,它位于`module-info.java`中:
module blog { exports com.pluralsight.blog; requires cms;}我们可以将这些模块可视化如下:
请注意,这两个模块都包含封装的封装,因为它们没有导出(使用橙色屏蔽进行可视化)。没有人可以意外地使用这些软件包中的类。Java平台本身也使用自己的模块系统进行模块化。通过封装JDK内部类,该平台更加安全,并且变得更加容易。
当启动模块化应用程序时,JVM将验证是否所有模块都可以根据require语句来解析,这是脆弱类路径的一大步。模块允许您通过强大的封装和显式依赖性来更好地构建应用程序。您可以通过本课程了解更多关于使用Java 9中的模块的信息。
2.链接
当你拥有显式依赖的模块和模块化的JDK时,会出现新的可能性。您的应用程序模块现在声明其依赖于其他应用程序模块以及从JDK使用的模块。为什么不使用这些信息创建最小的运行时环境,只包含运行应用程序所需的那些模块?这是通过Java 9中的新jlink工具实现的。您可以创建一个针对您的应用程序进行优化的最小运行时映像,而不是使用完全加载的JDK安装来运行您的应用程序。
3. JShell:交互式Java REPL
许多语言已经具有交互式的Read-Eval-Print-Loop,Java现在加入了这个俱乐部。您可以从控制台启动jshell,并直接开始键入并执行Java代码。jshell的即时反馈使其成为探索API和尝试语言功能的绝佳工具。
测试Java正则表达式是jshell如何使您的生活更轻松的一个很好的例子。交互式外壳也使得教学环境和生产力提高,您可以在此网络研讨会中了解更多信息。在教人们如何编写Java代码的时候,不再需要解释这个`public static void main(String [] args)`是什么意思。
4.改进了Javadoc
有时候,这些小事可能会造成很大的变化。你是否一直在用Google来找到正确的Javadoc页面,就像我一样?这不再是必要的。Javadoc现在在API文档中包含了搜索权限。作为额外的好处,Javadoc输出现在是HTML5兼容的。另外,您会注意到每个Javadoc页面都包含有关类或接口来自哪个JDK模块的信息。
5.收集工厂方法
通常你想在你的代码中创建一个集合(例如一个List或者Set),并直接用一些元素来填充它。这导致重复性的代码在你实例化集合,接着几个`add`调用。在Java 9中,添加了几个所谓的收集工厂方法:
Set<Integer> ints = Set.of(1, 2, 3);List<String> strings = List.of("first", "second");除了更短,更好阅读,这些方法也使您不必选择具体的收集实施。实际上,从工厂方法返回的集合实现针对您放入的元素数量进行了高度优化。这是可能的,因为它们是不可变的:在创建后向这些集合中添加项目会导致“UnsupportedOperationException”。
6.流API改进
Streams API可以说是对Java标准库长期以来最好的改进之一。它允许您创建集合的转换的声明式管道。使用Java 9,这只会变得更好。有四种新的方法添加到Stream接口:dropWhile,takeWhile,ofNullable。迭代方法得到一个新的重载,允许你提供一个关于什么时候停止迭代的谓词:
1.IntStream.iterate(1, i -> i < 100, i -> i + 1).forEach(System.out::println);第二个参数是一个lambda,它返回true,直到IntStream中的当前元素变为100.这个简单的例子因此在控制台上打印整数1直到99。
除了Stream本身的这些增加之外,Optional和Stream之间的集成也得到了改进。现在可以使用新的`stream`方法将Optional对象转换为(可能为空)Stream :
1.Stream<Integer> s = Optional.of(1).stream();在构建复杂的Stream流水线时将可选内容转换为Stream特别有用。
7.私人界面方法
Java 8为我们带来了接口上的默认方法。一个接口现在可以包含行为而不是只有方法签名。但是如果你在一个接口上有几个默认的方法,那么会发生什么呢?通常情况下,您会重构这些方法来调用包含共享功能的私有方法。但是默认方法不能是私有的。使用共享代码创建另一个默认方法不是解决方案,因为此辅助方法成为公共API的一部分。使用Java 9,您可以将私有帮助器方法添加到接口来解决此问题:
public interface MyInterface { void normalInterfaceMethod(); default void interfaceMethodWithDefault() { init(); } default void anotherDefaultMethod() { init(); } // This method is not part of the public API exposed by MyInterface private void init() { System.out.println("Initializing"); }}如果您正在使用默认方法发展API,那么私有接口方法可以帮助您构建其实现。
8. HTTP / 2
执行HTTP调用的一种新方法是用Java 9来实现的。这个旧的`HttpURLConnection` API的替代品也支持WebSockets和HTTP / 2。一个警告:新的HttpClient API在Java 9中作为所谓的_incubator module_提供。这意味着API不能保证是100%最终的。不过,随着Java 9的到来,您可以开始使用此API:
HttpClient client = HttpClient.newHttpClient(); HttpRequest req = HttpRequest.newBuilder(URI.create("http://www.google.com")) .header("User-Agent","Java") .GET() .build(); HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandler.asString());除了这个简单的请求/响应模型外,HttpClient还提供了新的API来处理HTTP / 2特性,例如流和服务器推送。
9.多版本JAR
我们强调的最后一个特性对于图书馆维护者来说尤其是个好消息。当新版本的Java出现时,库的所有用户需要花费数年才能切换到这个新版本。这意味着库必须与您想要支持的最旧版本的Java(例如,在许多情况下,Java 6或7)向后兼容。这实际上意味着你将无法长久地在库中使用Java 9的新特性。幸运的是,多版本JAR特性允许您创建仅在特定Java版本上运行库时使用的备用版本类别:
multirelease.jar├── META-INF│ └── versions│ └── 9│ └── multirelease│ └── Helper.class├── multirelease ├── Helper.class └── Main.class在这种情况下,可以在Java 9 上使用multirelease.jar ,而不是使用顶层multirelease.Helper类,使用`META-INF / versions / 9`下的那个。该Java 9特定版本的类可以使用Java 9功能和库。同时,在较早的Java版本上使用这个JAR仍然有效,因为较早的Java版本只能看到顶层的Helper类。
FBB是什么意思?
意思是由粉转黑。指以前是某人的粉丝,后来不再喜欢了之后,到处黑TA,说TA坏话的行为。英语缩略词“FBB”经常作为“Female Body Builder”的缩写来使用,中文表示:“女性健美运动员”。本文将详细介绍英语缩写词FBB所代表英文单词,其对应的中文拼音、详细解释以及在英语中的流行度。此外,还有关于缩略词FBB的分类、应用领域及相关应用示例等。
DW和DWB区别?
1. DW和DWB有区别。2. DW(Data Warehouse)是指数据仓库,是一个用于集成、管理和分析大量结构化和非结构化数据的系统。它主要用于支持决策和业务分析,提供了数据的一致性、可靠性和高效性。 DWB(Data Warehouse Builder)是指数据仓库构建工具,是用于构建和管理数据仓库的软件工具。它提供了一系列的功能和工具,帮助用户进行数据抽取、转换和加载(ETL)等操作,以构建和维护数据仓库。3. DW和DWB的区别在于功能和角色。DW是一个系统或概念,用于存储和分析数据,而DWB是一个工具,用于构建和管理数据仓库。DWB提供了一系列的功能和工具,帮助用户进行数据抽取、转换和加载等操作,以便构建和维护数据仓库。因此,DW和DWB在功能和使用上有所不同,但它们都是数据仓库领域中重要的概念和工具。
如何在Java中创建PDF?
创建PDFDocument类的对象,添加页面,创建字体、画刷、字符串样式等步骤后,运行程序,就可以创建PDF文档,具体可以参考下面的方法:
import java.awt.*;
import Java.awt.geom.Point2D;
import java.awt.geom.rectangle2D;
import java.io.*;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
public class CreatePdfDocumentInJava {
public static void main(String[] args) throws FileNotFoundException, IOException {
//创建PdfDocument对象
PdfDocument doc = new PdfDocument();
//添加一页
PdfPageBase page = doc.getPages().add();
//标题文字
String title = "Java基础语法";
//创建单色画刷对象
PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
//创建TrueType字体对象
PdfTrueTypeFont font1= new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,14),true);
PdfTrueTypeFont font2= new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,10),true);
//创建PdfStringFormat对象
PdfStringFormat format1 = new PdfStringFormat();
format1.setAlignment(PdfTextAlignment.Center);//设置文字居中
//使用drawString方法绘制标题文字
page.getCanvas().drawString(title, font1, brush1, new Point2D.Float(page.getActualBounds(true).width / 2, 0),format1);
//从txt文件读取内容到字符串
String body = readFiletoString("C:\\Users\\Administrator\\Desktop\\bodyText.txt");
//创建PdfStringFormat对象
PdfStringFormat format2 = new PdfStringFormat();
format2.setParagraphIndent(20);//设置段首缩进
//创建Rectangle2D对象
Rectangle2D.Float rect = new Rectangle2D.Float(0, 30, page.getActualBounds(true).width,page.getActualBounds(true).height);
//使用drawString方法在矩形区域绘制主体文字
page.getCanvas().drawString(body, font2, brush2, rect,format2);
//保存到PDF文档
doc.saveToFile("ouput.pdf");
}
//自定义方法读取txt文件内容到字符串
private static String readFileToString(String filepath) throws FileNotFoundException, IOException {
StringBuilder sb = new StringBuilder();
String s ="";
BufferedReader br = new BufferedReader(new FileReader(filepath));
while( (s = br.readLine()) != null) {
sb.append(s + "\n");
}
br.close();
String str = sb.toString();
return str;
}
}