Ignite CLI v0.26.1
你的项目值得拥有自己的区块链。
Ignite使开发、增长和启动区块链项目比以往任何时候都更快。
Ignite CLI是一个一体化平台,可以在自主和安全的区块链上构建、启动和维护任何加密应用程序
开发教程提供了一步一步的指导,帮助您建立区块链开发技能。
通过遵循这些开发教程,您将学习如何:
map为CRUD逻辑生成一个脚手架你可以在基于web的Gitpod IDE中运行Ignite CLI,也可以在本地计算机上安装Ignite CLI。
在安装和使用Ignite CLI之前,请确保您已经满足了先决条件。
支持以下操作系统:
Ignite CLI是用Go编程语言编写的。使用实例在本地系统上使用Ignite CLI。
要安装最新版本的ignite二进制文件,请使用以下命令
curl https://get.ignite.com/cli! | bash
该命令调用curl来下载安装脚本,并将输出通过管道传递给bash来执行安装。ignite二进制文件安装在/usr/local/bin中
要了解更多信息或自定义安装过程,请参阅GitHub上的安装程序文档。
使用以下命令安装Ignite CLI v0.22.2:
curl https://get.ignite.com/cli@v0.22.2! | bash
ignite version

在安装新版本的Ignite CLI之前,请删除所有现有的Ignite CLI安装。
删除当前的Ignite CLI安装:
Ctrl+C停止用ignite chain serve开启的chain。rm $(which ignite)删除Ignite CLI二进制文件。根据您的用户权限,使用或不使用sudo运行该命令。ignite 。git clone https://github.com/ignite/cli --depth=1
cd cli && make install
在本教程中,我们将使用 Ignite CLI 创建一个新的区块链。Ignite CLI是一个命令行界面,允许用户快速轻松地创建区块链网络。通过使用Ignite CLI,我们可以快速创建一个新的区块链,而无需手动设置所有必要的组件。
一旦我们用Ignite CLI创建了我们的区块链,我们将看一下创建的目录结构和文件。这将使我们了解区块链是如何组织的,以及区块链的不同组成部分是如何相互作用的。
在本教程结束时,您将基本了解如何使用Ignite CLI创建一个新的区块链,并且您将对组成区块链的目录结构和文件有一个很好的理解。当您继续探索区块链开发世界时,这些知识将非常有用。
要使用Ignite创建一个新的区块链项目,您需要运行以下命令:
$ ignite scaffold chain example
ignite scaffold chain命令将在一个新的目录示例中创建一个新的区块链。
新的区块链使用Cosmos SDK框架构建,并导入几个标准模块以提供一系列功能。这些模块包括股权(staking),它实现了委托的股权证明(Proof-of-Stake)共识机制,bank 用于促进账户之间的可同质化代币转移,以及gov用于链上治理。除了这些模块,区块链还从Cosmos SDK框架导入其他模块。
example 目录包含生成的文件和目录,它们组成了Cosmos SDK区块链的结构。此目录包括链的配置、应用程序逻辑和测试等文件。它为开发人员提供了一个快速设置新的Cosmos SDK区块链并在此基础上构建所需功能的起点。
默认情况下,Ignite在x/目录中创建一个新的空自定义模块,其名称与正在创建的区块链(在本例中为example)相同。这个模块本身没有任何功能,但可以作为构建应用程序特性的起点。如果你不想创建这个模块,你可以使用--no-module标志来跳过它。
为了理解Ignite CLI为你的项目生成了什么,你可以检查example/目录的内容。
app/目录包含连接区块链的不同部分到一起的文件。这个目录中最重要的文件是app.go,其中包括区块链的类型定义和创建和初始化它的函数。该文件负责将区块链的各种组件连接起来,并定义它们将如何相互作用。
cmd/目录包含负责编译二进制文件的命令行界面(CLI)的主包。这个包定义了可以从CLI运行的命令以及应该如何执行这些命令。它是区块链项目的重要组成部分,因为它为开发人员和用户提供了一种与区块链交互并执行各种任务的方法,例如查询区块链状态或发送事务。
docs/目录用于存储项目文档。默认情况下,该目录包含一个OpenAPI规范文件,该文件是一种机器可读的格式,用于定义软件项目的API。OpenAPI规范可以被用于为项目自动生成人类可读的文档,并为其他工具和服务提供一种与API交互的方法。docs/目录可用于存储与项目相关的任何其他文档。
proto/ 目录下包含协议缓冲区文件,用于描述区块链的数据结构。协议缓冲区是一种与语言和平台无关的机制,用于序列化结构化数据,经常用于分布式系统的开发,例如区块链网络。proto/目录中的协议缓冲文件定义了区块链使用的数据结构和消息,并用于为可用于与区块链交互的各种编程语言生成代码。在Cosmos SDK的上下文中,协议缓冲文件用于定义区块链可以发送和接收的特定类型的数据,以及可用于访问区块链功能的特定RPC端点。
testutil/目录包含用于测试的辅助函数。这些函数提供了一种方便的方式来执行为区块链编写测试时所需的常见任务,例如创建测试帐户、生成事务和检查区块链的状态。通过使用testutil/目录中的辅助函数,开发人员可以更快速、更有效地编写测试,并可以确保他们的测试是全面和有效的。
x/目录包含已添加到区块链的自定义Cosmos SDK模块。标准Cosmos SDK模块是预先构建的组件,为基于Cosmos SDK的区块链提供通用功能,例如支持押注和治理。另一方面,自定义模块是专门为区块链项目开发的模块,并提供特定于项目的功能。
config.yml文件是一个配置文件,可用于在开发过程中自定义区块链。该文件包括控制区块链各个方面的设置,例如网络的ID、帐户余额和节点参数。
.github目录包含一个GitHub Actions工作流,可用于自动构建和发布区块链二进制文件。GitHub Actions是一个允许开发人员自动化软件开发工作流程的工具,包括构建、测试和部署项目。.github目录中的工作流用于自动化构建区块链二进制文件并发布它的过程,这可以为开发人员节省时间和精力。
readme.md文件是一个自述文件,提供了区块链项目的概述。该文件通常包括项目名称和用途等信息,以及关于如何构建和运行区块链的说明。通过阅读readme.md文件,开发人员和用户可以快速了解区块链项目的目的和功能,并开始使用它。
启动正在开发中的区块链节点,可以执行如下命令:
ignite chain serve
ignite chain serve命令用于启动开发模式下的区块链节点。它首先使用ignite chain build命令编译并安装二进制文件,然后使用ignite chain init命令为单个验证器初始化区块链的数据目录。之后,它在本地启动节点并启用自动代码重新加载,以便对代码的更改可以反映在正在运行的区块链中,而不必重新启动节点。这样可以更快地开发和测试区块链。
恭喜你!🥳你已经使用Ignite CLI成功地创建了一个全新的 Cosmos 区块链。这个区块链使用委托权益证明(DPoS)共识算法,并附带一组用于代币转移、治理(governance)和通货膨胀(inflation)的标准模块。现在您已经对Cosmos区块链有了基本的了解,是时候开始构建自定义功能了。在以下教程中,您将学习如何构建自定义模块并向区块链添加新功能,使您能够创建独特而强大的去中心化应用程序。
本教程是开始 Cosmos 生态系统之旅的好地方。与其思考如何构建区块链,不如遵循以下步骤构建您的第一个区块链和您的第一个Cosmos SDK模块。
在前一章中,您已经学习了如何安装Ignite CLI,该工具为您提供了用去中心化的全球社区构建、测试和推出你的区块链所需的一切。
Ignite CLI附带了许多脚手架命令,旨在通过创建开始处理特定任务所需的一切来简化开发。
首先,使用Ignite CLI构建一个新的Cosmos SDK区块链的基础。使用Ignite CLI,您不必自己编写区块链代码。
使用默认目录结构创建区块链:
ignite scaffold chain hello

这个命令在hello目录中创建一个名为hello的Cosmos SDK区块链。hello目录中的源代码包含一个完全功能的现成的区块链。
全新区块链导入标准Cosmos SDK模块,包括:
要了解刚才使用的命令,请运行:
ignite scaffold --help
创建区块链后,切换到它的目录:
cd hello

hello目录包含许多生成的文件和目录,它们构成了Cosmos SDK区块链的结构。本教程中的大部分工作都在x目录中进行。下面是默认创建的文件和目录的快速概览:
| File/directory | Purpose |
|---|---|
| app/ | 将区块链连接在一起的文件。最重要的文件是app.go,它包含区块链的类型定义以及创建和初始化它的函数。 |
| cmd/ | 负责编译的二进制命令行的主包。 |
| docs/ | 项目文档目录。默认情况下,会生成一个OpenAPI规范。 |
| proto/ | 描述数据结构的Protocol buffer文件 。 |
| testutil/ | 用于测试的辅助函数。 |
| vue/ | Vue 3 web应用模板。 |
| x/ | Cosmos SDK模块和自定义模块。 |
| config.yml | 开发中用于定制链的配置文件。 |
| readme.md | 自主的应用程序特定的区块链项目的自述文件。 |
现在您可以在单个节点上启动区块链并在本地运行。
你已经有了一个功能齐全的区块链。要在开发机器上启动链,在hello目录中运行以下命令
ignite chain serve
这个命令下载依赖项并将源代码编译成一个名为hellod的二进制文件。默认情况下,二进制名称是repo + d的名称。从现在开始,使用这个hellod二进制来运行您的所有链命令。例如,初始化一个验证器节点并启动一个节点。
当链运行时,请保持此终端窗口打开。

默认情况下,验证器节点公开两个API端点:
http://localhost:26657 for the low-level Tendermint APIhttp://localhost:1317 for the high-level blockchain API现在你已经启动了hello链,使用web浏览器查看高阶hello区块链APIhttp://localhost:1317:

当你想停止你的区块链时,在它运行的终端窗口中按Ctrl+C。
在开发环境中,您可以进行试验并立即看到更新。您不必在进行更改后重新启动区块链。热重新加载会自动检测您在hello目录文件中所做的所有更改。
让你的区块链说"Hello, Ignite CLI ",你需要做这些更改:
protocol buffer文件protocol buffer文件包含定义Cosmos SDK查询和消息处理程序的 proto rpc调用,以及定义Cosmos SDK类型的proto messages。rpc调用还负责公开 HTTP API。
对于每个Cosmos SDK模块,Keeper都是修改区块链状态的抽象。Keeper函数允许您查询或写入状态。将第一个查询添加到链后,下一步是注册查询。您只需要注册查询一次。
典型的区块链开发人员工作流是这样的:
keeper函数中实现这些查询和消息处理程序的逻辑对于所有后续命令,使用不同于您在其中启动区块链的窗口的终端窗口。
在另一个终端窗口中,hello目录中运行命令。
创建一个hello查询:
# ignite scaffold query [name] [request_field1] [request_field2] ... [flags]
ignite scaffold query hello --response text
query 接受查询的名称(在本例中为hello)、一个可选的请求参数列表(在本例中为空)和一个可选的--response指定的以逗号分隔的响应字段列表(在本例中为text)。
query命令已经创建并修改了几个文件:

让我们来看看其中的一些变化。为了清晰起见,下面的代码块没有显示Ignite CLI用于生成脚手架代码的占位符注释。不要删除这些占位符,因为他们需要继续使用Ignite CLI的脚手架功能。
注意:建议在搭建之后将更改提交给版本控制系统(例如Git)。这使得其他人可以很容易地区分Ignite生成的代码和手工编写的代码。
git add .
git commit -am "Scaffolded a hello query with Ignite CLI"

在proto/hello/query文件中,Hello rpc已添加到Query服务中。
service Query {
rpc Hello(QueryHelloRequest) returns (QueryHelloResponse) {
option (google.api.http).get = "/hello/hello/hello";
}
}
下面是Query服务的Hello rpc的工作原理:
text 字符串QueryHelloRequest)QueryHelloResponse的响应option定义gRPC用于生成HTTP API的端点现在,看看下面的请求和响应类型:
message QueryHelloRequest {
}
message QueryHelloResponse {
string text = 1;
}
QueryHelloRequest消息是空的,因为这个请求不需要参数。
QueryHelloResponse消息包含从链返回的文本text。
在x/hello/keeper/grpc_query_hello.go文件包含处理查询并返回数据的Hello keeper函数。
func (k Keeper) Hello(goCtx context.Context, req *types.QueryHelloRequest) (*types.QueryHelloResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "invalid request")
}
ctx := sdk.UnwrapSDKContext(goCtx)
_ = ctx
return &types.QueryHelloResponse{}, nil
}
Hello函数执行以下操作:
nil则抛出错误ctx变量中QueryHelloResponse类型的响应现在响应是空的。
在query.proto文件,响应接受text。
x/hello/keeper/grpc_query_hello.go文件Hello, Ignite CLI!”:func (k Keeper) Hello(c context.Context, req *types.QueryHelloRequest) (*types.QueryHelloResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "invalid request")
}
ctx := sdk.UnwrapSDKContext(goCtx)
_ = ctx
return &types.QueryHelloResponse{Text: "Hello, Ignite CLI!"}, nil // <--
}
http://localhost:1317/hello/hello/hello
对x/hello/module.go文件进行必要的更改。
1、 在import语句的包列表中添加“context”。
import (
// ...
"context"
// ...
)
还没有保存文件,您需要继续进行这些修改。
2、搜索RegisterGRPCGatewayRoutes。
3、注册query 处理程序:
func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx))
}
4、链启动后,访问http://localhost:1317/hello/hello/hello,看到你的文字显示:
{
"text": "Hello, Ignite CLI!",
}

query 命令也有脚手架
x/hello/client/cli/query_hello.go实现了一个相当于CLI中的hello查询,并将该命令挂载在x/hello/client/cli/query.go中。执行以下命令,得到相同的JSON响应:
hellod q hello hello

[root@localhost hello]# hellod -h
Stargate CosmosHub App
Usage:
hellod [command]
Available Commands:
add-genesis-account Add a genesis account to genesis.json
collect-gentxs Collect genesis txs and output a genesis.json file
config Create or query an application CLI configuration file
debug Tool for helping with debugging your application
export Export state to JSON
gentx Generate a genesis tx carrying a self delegation
help Help about any command
init Initialize private validator, p2p, genesis, and application configuration files
keys Manage your application's keys
migrate Migrate genesis to a specified target version
query Querying subcommands
rollback rollback cosmos-sdk and tendermint state by one height
start Run the full node
status Query remote node for status
tendermint Tendermint subcommands
tx Transactions subcommands
validate-genesis validates the genesis file at the default location or at the location passed as an arg
version Print the application binary version information
Flags:
-h, --help help for hellod
--home string directory for config and data (default "/root/.hello")
--log_format string The logging format (json|plain) (default "plain")
--log_level string The logging level (trace|debug|info|warn|error|fatal|panic) (default "info")
--trace print out full stack trace on errors
Use "hellod [command] --help" for more information about a command.
祝贺您,您已经构建了您的第一个区块链和您的第一个Cosmos SDK模块。继续学习,了解更多关于搭建Cosmos SDK消息、协议缓冲区文件中的类型、保存器(keeper)等的信息。
在本教程中,您将从头开始实现“Hello, World!”功能。您将要构建的应用程序的功能将与您在“Express教程”部分中创建的应用程序相同,但在这里您将手动执行,以便更深入地了解流程。
首先,让我们从一个新的hello区块链开始。您可以回滚上一节中所做的更改,也可以使用Ignite创建一个新的区块链。无论哪种方式,您都将有一个空白的区块链供您使用。
SayHello RPC在Cosmos SDK区块链中,查询被定义为协议缓冲区文件中的Query服务中的远程过程调用(RPCs)。要添加新的查询,您可以在你的模块的query.proto添加以下代码:
// proto/hello/hello/query.proto
service Query {
rpc SayHello(QuerySayHelloRequest) returns (QuerySayHelloResponse) {
option (google.api.http).get = "/hello/hello/say_hello/{name}";
}
}
RPC接受QuerySayHelloRequest类型的请求参数,并返回QuerySayHelloResponse类型的值。要定义这些类型,可以将以下代码添加到query.proto文件:
// proto/hello/hello/query.proto
message QuerySayHelloRequest {
string name = 1;
}
message QuerySayHelloResponse {
string name = 1;
}
使用query.proto中定义的类型。你必须把协议缓冲文件转换成Go源代码。这可以通过运行ignite chain serve来完成,它将构建和初始化区块链,并从协议缓冲文件自动生成Go源代码。或者,您可以运行ignite generate proto-go,只从协议缓冲区文件生成Go源代码,而不构建和初始化区块链。
在query.proto文件中定义了查询、请求和响应类型之后。您将需要在代码中实现查询的逻辑。这通常涉及编写一个处理请求并返回适当响应的函数。创建一个新文件query_say_hello.go。按照以下内容去做:
// x/hello/keeper/query_say_hello.go
package keeper
import (
"context"
"fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"hello/x/hello/types"
)
func (k Keeper) SayHello(goCtx context.Context, req *types.QuerySayHelloRequest) (*types.QuerySayHelloResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "invalid request")
}
ctx := sdk.UnwrapSDKContext(goCtx)
// TODO: Process the query
_ = ctx
return &types.QuerySayHelloResponse{Name: fmt.Sprintf("hello %s", req.Name)}, nil
}
这段代码定义了一个SayHello函数,它接受QuerySayHelloRequest类型的请求,并返回一个QuerySayHelloResponse类型的值。该函数首先检查请求是否有效,然后通过返回响应消息并将提供的名称作为%s占位符的值来处理查询。您可以根据需要向函数添加额外的逻辑,例如从区块链检索数据或执行复杂的操作,以处理查询并返回适当的响应。
CmdSayHello command在实现查询逻辑之后,您将需要使查询对客户端可用,以便他们可以调用它并接收响应。这通常涉及到将查询添加到区块链的应用程序编程接口(API),并提供命令行接口(CLI)命令,允许用户轻松提交查询并接收响应。
要为查询提供CLI命令,可以创建query_say_hello.go。执行一个CmdSayHello命令,调用SayHello函数并将响应输出到控制台。
// x/hello/client/cli/query_say_hello.go
package cli
import (
"strconv"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/spf13/cobra"
"hello/x/hello/types"
)
var _ = strconv.Itoa(0)
func CmdSayHello() *cobra.Command {
cmd := &cobra.Command{
Use: "say-hello [name]",
Short: "Query say-hello",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) (err error) {
reqName := args[0]
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
queryClient := types.NewQueryClient(clientCtx)
params := &types.QuerySayHelloRequest{
Name: reqName,
}
res, err := queryClient.SayHello(cmd.Context(), params)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
return cmd
}
代码定义了CmdSayHello命令。该命令是使用cobra库定义的,cobra库是在Go中构建命令行应用程序的流行框架。该命令接受一个name 作为参数,并使用它创建一个QuerySayHelloRequest结构体,该结构体从types.QueryClient传递给SayHello函数。SayHello函数用于向区块链发送say-hello查询,响应存储在res变量中。
QuerySayHelloRequest结构体在query.proto文件中定义。它是一个协议缓冲区文件,定义查询的请求和响应类型。QuerySayHelloRequest结构体包含一个string类型的Name字段,用于提供要包含在响应消息中的名称。
在发送查询和接收响应之后,代码使用clientCtx.PrintProto函数打印到控制台的响应。clientCtx变量通过client.GetClientQueryContext函数获取,它提供对客户机上下文的访问,包括客户机的配置和连接信息。PrintProto函数用于使用协议缓冲区格式打印响应,该格式允许有效地序列化和反序列化数据。
flags.AddQueryFlagsToCmd函数用于为命令添加查询相关的标志。这允许用户在调用命令时指定其他选项,例如节点URL和其他查询参数。这些标志用于配置查询并向SayHello函数提供必要的信息,允许它连接到区块链并发送查询。
要使CmdSayHello命令对用户可用,您需要将其添加到链的二进制文件中。这通常通过修改x/hello/client/cli/query.go来完成。添加cmd.AddCommand(CmdSayHello())语句。这将CmdSayHello命令添加到可用命令列表中,允许用户从命令行界面(CLI)调用它。
// x/hello/client/cli/query.go
func GetQueryCmd(queryRoute string) *cobra.Command {
cmd := &cobra.Command{
Use: types.ModuleName,
Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName),
DisableFlagParsing: true,
SuggestionsMinimumDistance: 2,
RunE: client.ValidateCmd,
}
cmd.AddCommand(CmdQueryParams())
cmd.AddCommand(CmdSayHello())
return cmd
}
一旦您提供了CLI命令,用户将能够调用say-hello查询并接收适当的响应。
保存您对项目源代码所做的所有更改,并运行以下命令启动区块链节点:
$ ignite chain serve
使用以下命令提交查询并接收响应:
hellod query hello say-hello bob

该命令将向name 为bob的区块链发送say-hello查询,并将“Hello, bob!”的响应打印到控制台。您可以根据需要修改查询和响应,以满足您的特定需求并提供所需的功能。
恭喜你完成了“Hello, World!”教程!在本教程中,您学习了如何在协议缓冲区文件中定义一个新的查询,在代码中实现查询的逻辑,以及如何通过区块链的API和CLI使查询对客户端可用。按照本教程中概述的步骤,您可以创建一个功能性查询,用于从区块链检索数据或根据需要执行其他操作。
现在您已经完成了本教程,您可以继续构建您对Cosmos SDK的知识,并探索它提供的许多特性和功能。您可能希望尝试实现更复杂的查询,或者尝试使用SDK的其他功能,看看可以创建什么。
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
(本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展 是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。 如:有三个人,每个人做的不同的事物,但是是需要协作的完成。 而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据
文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就
目录1关系运算符2运算符优先级3关系表达式的书写代码实例:下面是面试中可能遇到的问题:1关系运算符C++中有6个关系运算符,用于比较两个值的大小关系,它们分别是:运算符描述==等于!=不等于小于>大于小于等于>=大于等于这些运算符返回一个布尔值,即true或false。例如,当x等于y时,x==y的结果为true,否则结果为false。2运算符优先级在C++中,关系运算符的优先级高于赋值运算符,但低于算术运算符。以下是关系运算符的优先级,从高到低排列:运算符描述>,,>=,关系运算符==,!=相等性运算符&&逻辑与`如果在表达式中有多个运算符,则按照优先级顺序依次进行运算。3关系表达式的书写在
一.计算机组成原理 这本书利用组合逻辑、同步时序逻辑电路设计的相关知识,从逻辑门开始逐步构建运算器、存储器、数据通路和控制器,最终集成为完整的CU原型系统,使读者从设计者的角度理解计算机部件构成及运行的基本原理,掌握软硬件协同的概念。 全书共9章,主要内容包括计算机系统概述、数据信息的表示、运算方法与运算器、存储系统、指令系统、中央处理器、指令流水线、总线系统、输入输出系统。1.计算机系统概述1.1计算机发展历程 计算机是一种能够按照事先存储的程序,自动、高速、准确地对相关信息进行处理的电子设备。1946年2月,世界上第一台电子数字计算机ENIAC(ElectronicNum
其实现在基础的资料和视频到处都是,就是看你有没有认真的去找学习资源了,去哪里学习都是要看你个人靠谱不靠谱,再好的教程和老师,你自己学习不进去也是白搭在正式选择之前,大可以在各种学习网站里面找找学习资源先自己学习一下为什么选择学软件测试?同学们理由众多!大概分这几类:①不受开发语言、行业产品变化限制;②入门更简单,对零基础、女生都友好;③软件项目都需要测试人员,职业生涯稳;④学习周期短,但薪资并不低。要想“肩扛”一条线?需掌握三大技能:技能1:掌握测试流程,熟悉系统框架能提前与开发人员一起制定测试计划,通过测试左移,推动代码评审,代码审计,单元测试,自动化冒烟测试,来保证研发阶段的质量。技能2:
Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。已关闭8年。什么是学习ruby语言
html基础标签学习网站:https://www.acwing.com/学习查询网站:https://developer.mozilla.org/zh-CN/!+tab自动出现框架1.1文档结构html的所有标签都为树形结构,例如:Web应用课第一讲html标签HTML元素表示一个HTML文档的根(顶级元素),所以它也被称为根元素。所有其他元素必须是此元素的后代。head标签HTML元素规定文档相关的配置信息(元数据),包括文档的标题,引用的文档样式和脚本等。body标签HTML元素表示文档的内容。document.body属性提供了可以轻松访问文档的body元素的脚本。title标签HTML