vaadin教程_Vaadin教程

vaadin教程

1.简介

当您是后端开发人员时,您会听到别人说您无法创建内置HTML的UI页面并且无法在CSS中设置样式而引起的痛苦。 就像成为后端开发人员一样,它具有已知的局限性,即我们可以播放和运行大型生产后端应用程序,但不能创建漂亮的页面来实际显示这些后端应用程序管理的数据。 如果相同的想法曾经困扰过您,请不用担心, Vaadin在这里。

使用Vaadin,可以完全使用Java创建应用程序的前端 。 它提供了高度成熟的服务器端UI创建支持,使我们能够用Java语言编写生产级可重用组件。 它具有所有流行的Java开发环境(Eclipse,IntelliJ,NetBeans,Maven等;本教程的示例使用IntelliJ)的支持。 我们将首先了解Vaadin的实际工作原理,并遵循Vaadin中存在的各种组件和布局。 我们将以出色的示例应用程序结束本课程,该示例应用程序在单个视图中演示事件处理和多种布局。 让我们开始吧。

目录

1.简介 2. Vaadin如何工作? 3. Vaadin插件 4.创建一个项目 5. Maven依赖 6. Vaadin Servlet 7. Vaadin主班 8. Vaadin布局管理器
8.1 VerticalLayout 8.2 Horizo​​ntalLayout 8.3网格布局 8.4 FormLayout
9. Vaadin成分
9.1标签 9.2链接 9.3文字栏位 9.4 TextArea 9.5 DateField和InlineDateField 9.6 PasswordField 9.7按钮 9.8复选框 9.9清单
10.使用Vaadin主题 11.结论 12.下载源代码

2. Vaadin如何工作?

一般来说,Vaadin与AWT,Spring和SWT十分相似。 我们有一些布局和组件,可以实例化并提供数据,最后将它们绑定到父布局中以显示容器。 这些组件和布局的实际呈现方式不同。 Vaadin组件不是使用布局取决于底层操作系统的Java来呈现的传统组件,而是通过Ajax与后端服务器通信并由框架自动管理HTML5 / CSS / JavaScript组件。 让我们可视化Vaadin如何在前端UI引擎及其自身组件之间进行排列:

Vaadin建筑

在上图中,非常清楚的是Vaadin如何防止后端开发人员编写基于HTML,CSS和JS的组件,并提供Vaadin引擎,我们可以在该引擎上为UI组件开发Java代码本身,然后可以通过框架将其翻译为HTML组件。本身。

它是客户端Vaadin引擎(以HTML5 / CSS / JavaScript编写,基于Google Web Toolkit)和服务器端框架,它们为我们管理UI。 服务器端组件还支持Vaadin中的数据绑定,这使得将数据库集成到组件中非常容易。 最后,不要认为Vaadin仅限于Java。 使用最新版本的Vaadin,还可以编写基于HTML的Vaadin布局,使用CSS设置样式,并使用Javascript本身来调整行为。 在本课程中,我们将仅限于仅使用Java语言。

3. Vaadin插件

既然我们了解了Vaadin的工作原理,就可以为我们的机器进行设置了。 为了继续学习本课程以及IDE内提供的易于使用的插件,我们可以将Eclipse插件安装为:

Vaadin Eclipse插件

Vaadin Eclipse插件

如果您像我一样使用IntelliJ,我们也可以获取IDE的插件:

Vaadin IntelliJ插件

Vaadin IntelliJ插件

该插件不是绝对需要的,但是它为使用100%基于UI的系统提供了机会,您可以在其中使用WYSIWYG系统。

4.创建一个项目

现在我们已经准备就绪,终于可以使用Maven为我们创建一个项目。 我们将使用Vaadin原型创建一个应用程序。 让我们看一下这里的命令:

创建一个项目

mvn archetype:generate -DarchetypeGroupId=com.vaadin -DarchetypeArtifactId=vaadin-archetype-application -DarchetypeVersion=LATEST -DgroupId=com.javacodegeeks.example -DartifactId=JCG-Vaadin-Example -Dversion=1.0 -Dpackaging=jar

这是创建项目时得到的结果(我们仅显示有趣的部分):

建立专案

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.0.1:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.1:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.0.1:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] Archetype repository not defined. Using the one from [com.vaadin:vaadin-archetype-application:8.4.1] found in catalog remote....some non-interesting parts....[INFO] Using property: groupId = com.javacodegeeks.example
[INFO] Using property: artifactId = JCG-Vaadin-Example
[INFO] Using property: version = 1.0
[INFO] Using property: package = com.javacodegeeks.example
[INFO] Using property: themeName = mytheme
[INFO] Using property: uiName = MyUI
Confirm properties configuration:
groupId: com.javacodegeeks.example
artifactId: JCG-Vaadin-Example
version: 1.0
package: com.javacodegeeks.example
themeName: mytheme
uiName: MyUIY: :
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: vaadin-archetype-application:LATEST
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.javacodegeeks.example
[INFO] Parameter: artifactId, Value: JCG-Vaadin-Example
[INFO] Parameter: version, Value: 1.0
[INFO] Parameter: package, Value: com.javacodegeeks.example
[INFO] Parameter: packageInPathFormat, Value: com/javacodegeeks/example
[INFO] Parameter: package, Value: com.javacodegeeks.example
[INFO] Parameter: version, Value: 1.0
[INFO] Parameter: groupId, Value: com.javacodegeeks.example
[INFO] Parameter: themeName, Value: mytheme
[INFO] Parameter: uiName, Value: MyUI
[INFO] Parameter: artifactId, Value: JCG-Vaadin-Example
[INFO] Project created from Archetype in dir: /Users/shubham/JCG-Vaadin-Example
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 32.100 s
[INFO] Finished at: 2018-05-13T18:43:43+05:30
[INFO] ------------------------------------------------------------------------

Vaadin原型负责在项目中添加适当的依赖项以及构建项目所需的所有其他信息。 在下一节中,我们将了解项目的pom.xml文件中的所有部分。

5. Maven依赖

我们使用Vaadin原型创建的项目负责在项目中添加适当的依赖项。 让我们看一下项目的pom.xml文件。 让我们开始看看添加到文件中的依赖项:

pom.xml

<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>com.vaadin</groupId><artifactId>vaadin-server</artifactId></dependency><dependency><groupId>com.vaadin</groupId><artifactId>vaadin-push</artifactId></dependency><dependency><groupId>com.vaadin</groupId><artifactId>vaadin-client-compiled</artifactId></dependency><dependency><groupId>com.vaadin</groupId><artifactId>vaadin-themes</artifactId></dependency>
</dependencies>

以下依赖项已添加到项目中:

  • javax.servlet-api :此依赖关系提供了将Servlet保留在我们的项目中以进行网络调用的能力
  • vaadin-server :此依赖性包括用于管理服务器详细信息(如会话,客户端通信等)的软件包。
  • vaadin-push :这种依赖关系对于本课程不是必需的,但仍然很重要。 当我们需要基于在服务器上执行的线程来更新UI时,我们可以将请求从服务器发送到UI,这样UI可以立即更新,并且UI不必发出网络请求即可获取UI上的数据状态。服务器。 为此,使用推包。
  • vaadin-client-compiled :此依赖项基于GWT,并且包含用于编译客户端组件的软件包。
  • vaadin-themes :此依赖项包括一些内置主题和用于制作自定义主题的所有实用程序。

接下来,我们还需要添加Vaadin存储库和依赖项管理。 dependencyManagement标签有助于管理所有Vaadin依赖项的版本:

pom.xml

<repositories><repository><id>vaadin-addons</id><url>http://maven.vaadin.com/vaadin-addons</url></repository>
</repositories><dependencyManagement><dependencies><dependency><groupId>com.vaadin</groupId><artifactId>vaadin-bom</artifactId><version>${vaadin.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

最后,我们需要有Jetty插件,该插件使我们可以通过在命令行上运行jetty:run来轻松测试开发版本。

pom.xml

<plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>${jetty.plugin.version}</version><configuration><scanIntervalSeconds>2</scanIntervalSeconds></configuration>
</plugin>

这使我们可以直接从命令行运行Vaadin应用程序,并为我们提供嵌入式Jetty服务器。

6. Vaadin Servlet

在Vaadin中,我们没有web.xml文件来配置应用程序的调度程序servlet。 相反,我们有Vaadin Servlet,它通过一些注释定义了应用程序的入口点:

MyUI.java

@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet { }

在上面的servlet应用程序中, ui字段明确提到MyUI.class是指定应用程序的主要入口点。

7. Vaadin主班

当我们使用Vaadin原型定义应用程序时,该应用程序附带一个已经在应用程序主类中设置的基本UI,如上一节所示,该UI还包含Vaadin Servlet的定义。 这是我们的应用程序中预定义的主要入口点UI类:

MyUI.java

package com.javacodegeeks.example;import javax.servlet.annotation.WebServlet;import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;@Theme("mytheme")
public class MyUI extends UI {private static final long serialVersionUID = 7132834690301152714L;@Overrideprotected void init(VaadinRequest vaadinRequest) {final VerticalLayout layout = new VerticalLayout();final TextField name = new TextField();name.setCaption("Type your name here:");Button button = new Button("Click Me");button.addClickListener(e -> {layout.addComponent(new Label("Thanks " + name.getValue() + ", it works!"));});layout.addComponents(name, button);setContent(layout);}@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)public static class MyUIServlet extends VaadinServlet {}
}

此UI是应用程序的入口点。 UI可以代表浏览器窗口(或选项卡)或嵌入Vaadin应用程序HTML页面的某些部分。 UI使用VaadinRequest初始化。 旨在重写此方法以将组件添加到用户界面并初始化非组件功能。

实际上,我们现在就可以运行该项目,以显示Vaadin原型本身所做的默认应用程序布局。 运行以下命令以运行项目:

运行项目

mvn jetty:run

访问以下网址以查看该应用程序的运行情况:

打开网址

http://localhost:8080/

我们现在可以尝试该应用程序:

运行示例应用程序

运行示例应用程序

8. Vaadin布局管理器

我们上面运行的示例应用程序使用VerticalLayout来以垂直方式排列UI元素。 与VerticalLayout相似,Vaadin为我们提供了各种布局管理器,以将UI组件布置在不同的方向。 让我们探讨一下经理是什么

8.1 VerticalLayout

当我们需要将组件堆叠在单个列中,其中第一个元素保留在底部,其余元素显示在上述组件下方时,我们可以使用VerticalLayout布置:

垂直布局

VerticalLayout vertical = new VerticalLayout();
vertical.setSpacing(true);
vertical.setMargin(true);
setContent(vertical);

添加到此布局的所有组件都将堆叠在一起。 请注意,与每个组件( 布局也是一个组件 )相关的方法的样式都很好,其名称基于它们设置CSS属性。 这使得方法名称易于猜测并且更具可读性。

8.2 Horizo​​ntalLayout

与将组件以垂直方式排列的VerticalLayoutHorizontalLayout将组件水平排列。 让我们看一下如何实例化此布局的示例:

水平布局

final HorizontalLayout layout = new HorizontalLayout();

在示例应用程序,只需更换VerticalLayoutVerticalLayout和看到的布局现在怎么会出现:

Vaadin水平布局

Vaadin水平布局

8.3网格布局

另一个布局GridLayout允许我们制作一个组件网格,该网格为我们渲染的页面提供了非常光滑一致的外观。

网格布局

GridLayout gridLayout = new GridLayout(3, 2);

继续尝试现有布局中的GridLayout ,以与UI组件的布局配合使用。

8.4 FormLayout

最后,我们可以使用FormLayout将组件的标签和组件本身放在两个单独的列中,并且还可以为必填字段提供可选的指示器。 可以实例化为:

表格布局

FormLayout formLayout = new FormLayout();

9. Vaadin成分

在本节中,我们将介绍一些基本但最有用的Vaadin UI元素,这些元素几乎在所有用于Web的UI中使用。

9.1标签

Label是用于显示静态文本的组件,该文本不会随应用程序状态而改变。 让我们定义一个提供Label实例并将其设置在VerticalLayout的函数:

标签

private Layout showLabels() {final VerticalLayout layout = new VerticalLayout();Label label = new Label();label.setId("LabelID");label.setValue("JavaCodeGeeks");label.setCaption("Label");layout.addComponent(label);return layout;
}

Label外观如下:

Vaadin中的标签

Vaadin中的标签

在提供外部网页地址时,Vaadin提供了具有相同目的的链接组件:

链接

private Layout showLink() {final VerticalLayout layout = new VerticalLayout();Link jcgLink = new Link("JavaCodeGeeks",new ExternalResource("https://www.javacodegeeks.com/"));jcgLink.setTargetName("_blank");layout.addComponent(jcgLink);return layout;
}

这是Link外观:

Vaadin Link组件

Vaadin Link组件

9.3文字栏位

TextFields是由Label组件和允许用户提供输入的一行TextArea组合而成的组件。 这是一个示例程序,用于显示带有图标的TextField以及内置于Vaadin库中的图标:

文本域

private Layout showTextField() {final VerticalLayout layout = new VerticalLayout();TextField textField = new TextField();textField.setIcon(FontAwesome.USER);layout.addComponent(textField);return layout;
}

这是TextField外观:

Vaadin TextField组件

Vaadin TextField组件

9.4 TextArea

TextArea组件就像TextField组件一样,唯一的区别是TextArea组件中允许多行输入。 让我们看一个示范:

文字区域

private Layout showTextArea() {final VerticalLayout layout = new VerticalLayout();TextArea textArea = new TextArea();layout.addComponent(textArea);return layout;
}

这是TextArea外观:

Vaadin TextArea组件

Vaadin TextArea组件

TextArea组件使我们能够在组件中输入大文本并反映应输入的文本限制。

9.5 DateField和InlineDateField

在Web UI中,选择日期是非常常见的任务。 Vaadin提供了两个相同的元素DateFieldInlineDateFieldDateField组件显示一个下拉日历,我们可以在其中选择一个日期。 在其中选择日期后, InLineDateField不会消失。 让我们看一个示例程序:

DateField和InlineDateField

private Layout showDateField() {final VerticalLayout layout = new VerticalLayout();DateField dateField = new DateField("DateField", LocalDate.now());InlineDateField inlineDateField = new InlineDateField();layout.addComponent(dateField);layout.addComponent(inlineDateField);return layout;
}

这是DateField外观:

Vaadin DateField组件

Vaadin DateField组件

这是InLineDateField外观:

Vaadin内联DateField组件

Vaadin内联DateField组件

用户从中选择日期后, InlineDateField不会消失。

9.6 PasswordField

要在UI中接受秘密密钥和密码,我们可以使用PasswordField 。 让我们看一个示范:

密码栏位

private Layout showPasswordField() {final VerticalLayout layout = new VerticalLayout();PasswordField passwordField = new PasswordField();layout.addComponent(passwordField);return layout;
}

这是PasswordField外观:

Vaadin PasswordField组件

Vaadin PasswordField组件

PasswordField是一个TextField ,它只是掩盖我们在其中输入的文本。

9.7按钮

为了使用户能够在某些情况下(例如提交表单或类似内容)执行操作,Button是最好的使用组件。 让我们看一个示例程序:

纽扣

private Layout showButton() {final VerticalLayout layout = new VerticalLayout();Button normalButton = new Button("Normal Button");layout.addComponent(normalButton);return layout;
}

这是Button组件的外观:

Vaadin按钮组件

Vaadin按钮组件

Vaadin允许我们制作多种类型的按钮,例如“危险”按钮(默认为红色),相当多的按钮等等。

9.8复选框

为了接受多个值到某个值,我们可以使用CheckBoxes ,它允许用户设置或取消设置它们,而不必依赖UI中是否设置了其他CheckBoxes 。 让我们看一个示例程序:

复选框

private Layout showCheckBox() {final VerticalLayout layout = new VerticalLayout();CheckBox checkbox = new CheckBox("CheckBox");checkbox.setValue(true);layout.addComponent(checkbox);return layout;
}

这是CheckBox组件的外观:

Vaadin复选框组件

Vaadin复选框组件

9.9清单

作为最终组件,显示包含固定元素的项目列表是非常常见的任务。 让我们看一下如何做到这一点的演示:

清单

private Layout showLists() {final VerticalLayout layout = new VerticalLayout();List<String> numbers = new ArrayList<>();numbers.add("One");numbers.add("Ten");numbers.add("Eleven");ComboBox comboBox = new ComboBox("ComboBox");comboBox.setItems(numbers);layout.addComponent(comboBox);return layout;
}

这是Lists组件的外观:

Vaadin列表组件

Vaadin列表组件

因此,我们只创建了一个List来收集项目并将其显示在ComboBox元素中,该元素显示了一个包含List项目的下拉菜单。

10.使用Vaadin主题

Vaadin主题是将应用外观完全指向Vaadin项目使用的样式表中的新主题的最佳方式。 默认情况下,Vaadin提供了四个内置主题,我们可以随时更改它们。 内置主题是valo驯鹿变色龙runo 。 要查找样式表,请访问WebContent/themes/declarativeui/declarativeui.scss 。 我们可以在指定文件的末尾更改指定的主题值,这将更改应用程序选择的主题。

请查看Vaadin目录 ,查找几乎无限数量的可以在您的项目中使用的即用型Vaadin主题。

11.结论

在本课程中,我们研究了如何使用单个Maven命令创建非常简单但有效的Vaadin应用程序。 我们看到了生产级Vaadin应用程序需要哪些Maven依赖项和插件。 我们研究了Vaadin UI应用程序中常用的许多Vaadin组件。 对于Java后端工程师而言,Vaadin是一个出色的框架。 它提供了Java开发人员可以想到的所有优势,因为它允许基于Maven的构建系统进行依赖关系管理,这是一种非常简单的方法,可以直接在同一项目本身中直接使用Spring服务,或者仅遵循设计模式来保持UI和网络层在项目中完全分开。

在未来的Vaadin课程中,我们将看到如何通过在应用程序中添加一个工作后端来使Vaadin应用程序动态化,例如使用Spring Boot应用程序从数据库向应用程序提供动态内容。

12.下载源代码

这是Vaadin框架的一个示例。

下载
您可以在此处下载此示例的完整源代码: Vaadin示例

翻译自: https://www.javacodegeeks.com/2018/05/vaadin-tutorial.html

vaadin教程

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

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

相关文章

c 和java互相验签_C椭圆曲线签名 用java验签

C椭圆曲线签名 用java验签&#xff0c;java应该用什么类&#xff0c;new X509EncodedKeySpec( hex2Bytes(publicKey) ) 一直报错签名&#xff1a;294236F3FEA929A45A3544A40BE7546CCE71DD52B5B488C12C05A440440B21120C3F127FE4B53326DCE1AAE393B36EB1B57C09EF7B3230760F5C493F6…

混合多云架构_使用混合多云每个人都应避免的3个陷阱(第3部分)

混合多云架构每天都在肆意宣传云&#xff0c;但每个人都应避免三个陷阱。 从云&#xff0c;混合云到混合多云&#xff0c;您都被告知这是确保业务数字化未来的一种方式。 您必须做出的这些选择不会排除提高客户体验和敏捷交付这些应用程序的日常工作。 让我们开始一段旅程&am…

MacOS的Automator(自动操作)实用案例详解/自定义程序/自定义服务

文章目录创建新建文本文件的服务创建批量开启多个应用程序的服务创建批量开启多个应用程序的程序创建退出所有程序的服务如何删除/隐藏创建的服务删除服务隐藏服务创建新建文本文件的服务 打开 Automator 后&#xff0c;选择「快速操作」后&#xff0c;点击下方按钮「选取」&a…

用来编译java源文件的工具_基于阿里开源yugong工具类,动态编译Java源文件

适用场景&#xff1a;Java应用满足用户自定义需求场景实例代码&#xff1a;测试用例(DynamicCompileTest)package com.taobao.yugong.common;import java.io.IOException;import java.util.List;import junit.framework.Assert;import org.apache.commons.io.IOUtils;import or…

MacOS 下如何创建文本文件

文章目录通过 MacOS 自带的 Automator 创建自动化服务程序实用 Finder 扩展工具 - New File Menu通过 MacOS 自带的文本编辑程序创建通过 MacOS 自带的 Automator 创建自动化服务程序 欲知此方法请猛戳《MacOS 的 Automator 实用案例详解》 实用 Finder 扩展工具 - New File …

jdk12源代码文件_在JDK 11中启动单文件源代码程序

jdk12源代码文件JEP 330 –启动单文件源代码程序是即将发布的JDK 11&#xff08;18.9&#xff09;发行版中令人兴奋的功能之一。 此功能允许直接使用java解释器执行Java源代码。 源代码在内存中编译&#xff0c;然后由解释器执行。 限制是必须在同一文件中定义所有类。 对于刚…

java控制图片移动_多线程控制图片移动

帮忙看下为什么图片没有显示 图片目录在src 下的image 文件夹中package com.thread;import java.awt.EventQueue;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;public class SleepDemo extends JFrame implements Runnable {private JLa…

Linux 命令之 cut -- 分割字符串,显示或删除指定字段的内容,合并文件内容

文章目录一、命令介绍二、常用选项三、命令示例根据指定的字节范围显示指定文件中的内容指定字段分隔符&#xff0c;显示指定字段的内容显示指定字段的内容根据指定的字符范围显示指定文件中的内容显示指定字段以外的字段的内容以指定的输出分隔符来分割输出内容中的字段合并多…

java 抛异常 jvm_邪恶的Java技巧使JVM忘记检查异常

java 抛异常 jvm我长期以来一直在批评Java中编译器检查异常的机制。 无论您是爱还是恨&#xff0c;都可以肯定一件事&#xff1a;在某些情况下&#xff0c;您不想与他们打交道。 Java中的解决方案是将一个检查后的异常包装在new RuntimeException(e)但这可以提供较长的堆栈跟踪…

java空文本_输出到文本文件,控制台为空-Java

首先,您必须创建一个从OutputStream接口继承的类以实现适配器模式(我不确定是否是adapter)那么您可以使用该类作为波纹管主要PrintStream finalStream;TreeOutputStream tos;PrintStream out;out new PrintStream("logs.txt");tos new TreeOutputStream();tos.add(…

Linux 组合命令/命令组合的符号

在 EX 命令中&#xff0c;竖直线 | 是命令的分割符&#xff0c;它允许用户把多个命令组合在一起执行Shell 命令使用分号 ; 组合命令

混合多云架构_使用混合多云每个人都应避免的3个陷阱(第4部分)

混合多云架构每天都在肆意宣传云&#xff0c;但每个人都应避免三个陷阱。 从云&#xff0c;混合云到混合多云&#xff0c;您都被告知这是确保业务数字化未来的一种方式。 您必须做出的这些选择不会排除提高客户体验和敏捷交付这些应用程序的日常工作。 让我们开始一段旅程&…

Linux 中常见的较为复杂的命令实例

文章目录 命令 find 和命令 grep 联合使用命令 find 和 命令 convert 联合使用命令 find 和命令 rm 联合使用命令 find 和命令 xargs 联合使用命令 sed 和目录 grep 联合使用命令 find 和命令 grep 联合使用 [root@htlwk0001host test]# find . -name "*.txt" -exec…

mysql 触发器 注意事项_MySQL触发器的利弊-使用MySQL触发器时应该注意的事项

在&#xff2d;ySQL中&#xff0c;触发器可以在你执行INSERT、UPDATE或DELETE的时候&#xff0c;执行一些特定的操作。在创建触发器时&#xff0c;可以指定是在执行SQL语句之前或是之后执行这些操作。通过触发器&#xff0c;你可以实现一些业务逻辑或一些数据限制&#xff0c;在…

混合多云架构_使用混合多云每个人都应避免的3个陷阱(第2部分)

混合多云架构如果您已经完全控制了本地数据中心&#xff0c;但又不能停止利用和支付过多的资源&#xff0c;那么如何期望防止这些成本转嫁到您的云策略中呢&#xff1f; 每天都在肆意宣传云&#xff0c;但每个人都应避免三个陷阱。 从云&#xff0c;混合云到混合多云&#xff0…

Linux 系统中用于在文件内查找指定的字符串的命令 -- grep/egrep/fgrep 的区别详解

文章目录一、命令介绍grepegrepfgrep二、正则表达式元字符扩展集三、POSIX 字符集一、命令介绍 grep 一种强大的文本搜索工具&#xff0c;用于在文件内查找指定的字符串&#xff0c;在不使用转义符的前提下支持基本的正则表达式来搜索文本&#xff0c;并把匹配的行打印出来。…

rest api封装调用_如何从云功能调用外部REST API

rest api封装调用在之前的博客文章中&#xff0c;我展示了如何创建您的第一个云功能 &#xff08;以及一个视频 &#xff09;。 您的云函数很可能需要调用外部REST API。 以下教程将向您展示如何创建此类功能&#xff08;非常简单&#xff09;。 登录到IBM Cloud帐户 点击目录…

SVN 版本控制的数据合并规则

文章目录自己的猜想文件名比对文本行比对事实是什么提交计划提交数据更新客户端版本库数据时&#xff0c;同名文件中文本行的数据比对规则自己的猜想 假设SVN服务端就存在一份最新版的文件 HF&#xff0c;客户端检出这份文件后再提交&#xff0c;当前用户提交的文件称为 NF。 …

java算术运算符的分类_6.Java算术运算符

1.算术运算符的分类:算术运算符:* :( 正数&#xff0c;加法 ,连接符)* 连接符: 如果数据和字符串连接一起就是用了"",那么""就成了连接符,拼接字符串* 任何数据与字符串使用连接符那么结果的数据类型都是字符串类型* 任何数据和数据相加就是做加法…

java项目教训_[免费电子书]分析超过600,000个Java项目的经验教训

java项目教训建立明智的错误处理工作流程需要什么&#xff1f; 调查和解决生产中的应用程序错误对于维持性能和可靠性至关重要。 但是&#xff0c;这并不意味着要花很多时间。 要理解为什么在生产中的故障排除&#xff0c;可这样的头痛&#xff0c;我们开始发现“真理”我们经…