1.kong常用的三个组件

a、Kong Server :基于 nginx 的服务器,用来接收API请求。

管理API的-->服务调用API 要经过kong网关(IP黑白名单,证书管理,服务路由,认证密钥,流量控制、速率限制、超时熔断、等功能)才能够调用后端的接口

b、Apache Cassandra/PostgreSQL :用来存储操作数据。(主要是存储操作日志的)

c、Kong dashboard:官方推荐 UI 管理工具

2.将API发布kong网关的流程

8001是管理 API 侦听的默认端口

1.service

a.概念

服务对象是每个上游服务的抽象

service主要是管理我们后端的接口的服务 ,service可以是一个URL ,也可以是 protocol(协议)host(IP/域名)、port(端口)、path(路径)拼接而成

服务与路由相关联(一个服务可以有多个与其关联的路由)。路由是 Kong 中的入口点,用于定义匹配客户端请求的规则。匹配路由后,Kong 会将请求代理到其关联的服务。

b.service的属性

name 服务名称
protocol 用于与上游通信的协议(必选)http、https、tcp、tls等
host 上游服务器的主机 IP/域名(必选)
port 上游服务器端口(必选)
path 在对上游服务器的请求中使用的路径。
url 简写属性一次性设置 protocol、host、port 和 path。
retries 代理失败后重试的次数
connect_timeout 连接上游服务超时时间,默认为 60000 毫秒
write_timeout 将请求发送到上游服务的超时时间,默认为 60000 毫秒
read_timeout 从上游服务器读取超时时间,默认为 60000 毫秒
tags 与服务关联的一组可选字符串,用于分组和筛选。
client_certificate TLS 与上游服务器握手时用作客户端证书的证书
ca_certificates 用于在验证上游服务器的 TLS 证书时构建信任存储的对象 UUID 数组。
tls_verify 是否启用上游服务器TLS证书的验证。
tls_verify_depth 验证上游服务器的 TLS 证书时的最大链深度
{"id": "9748f662-7711-4a90-8186-dc02f10eb0f5","created_at": 1422386534,"updated_at": 1422386534,"name": "my-service","retries": 5,"protocol": "http","host": "example.com","port": 80,"path": "/some_api","connect_timeout": 60000,"write_timeout": 60000,"read_timeout": 60000,"tags": ["user-level", "low-priority"],"client_certificate": {"id":"4e3ad2e4-0bc4-4638-8e34-c84a417ba39b"},"tls_verify": true,"tls_verify_depth": null,"ca_certificates": ["4e3ad2e4-0bc4-4638-8e34-c84a417ba39b", "51e77dc2-8f3e-4afa-9d0e-0e3bbbcfd515"]
}

c.创建服务官网1.创建服务
POST/services
2.创建与特定证书关联的服务
POST/certificates/{certificate name or id}/services
1.第一种方式curl -i -X POST http://localhost:8001/services/ \--data 'name=myservice' \--data 'url=http://www.javahly.com'
2. 第二种方式curl -i -X POST http://localhost:8001/services/ \--data 'name=myservice' \--data 'protocol=http' \--data 'host=www.javahly.com' \ --data 'port=80'
d.查询服务官网1.列出所有服务
GET/services
2.列出与特定证书关联的服务
GET/certificates/{certificate name or id}/services
3.检索服务
GET/services/{service name or id}
4.检索与特定路由关联的服务
GET/routes/{route name or id}/service
5.检索与特定插件关联的服务
GET/plugins/{plugin id}/service
1.查询所有服务curl -i -X GET http://localhost:8001/services/
2.检索服务curl -i -X GET http://localhost:8001/services/{service name or id}
c.更新服务官网1.更新服务
PATCH/services/{name or id}
2.更新与特定路由关联的服务
PATCH/routes/{route name or id}/service
创建或更新与特定路由关联的服务
PUT/routes/{route name or id}/service
3.与特定插件关联的更新服务
PATCH/plugins/{plugin id}/service
创建或更新与特定插件关联的服务
PUT/plugins/{plugin id}/service
1.4 版本后可用PUT
1.创建或更新服务
PUT/services/{name or id}
​
1.更新服务curl -i -X PATCH http://localhost:8001/services/{service name or id} \--data 'name=myservice' \--data 'protocol=http' \--data 'host=www.javahly.com' \ --data 'port=80' \
2.1.4版本后的新增和更新服务curl -i -X PUT http://localhost:8001/services/{service name or id} \--data 'protocol=http' \--data 'host=www.javahly.com' \ --data 'port=80'
d.删除服务curl -i -X DELETE  http://localhost:8001/services/{service name or id} \

2.route

a.概念

route就是客户端用来请求service 客户端调用的API 每一个每个路由(Route)和一个服务(Service) 相关联,一个服务可有有多个路由,给定路由匹配的每个请求都将代理到其关联的服务

b.V0和V1的区别(path 处理算法)

service.path route.path 是否忽略 V0/V1 request(用户调用自己添加) request.path(请求路径) upstream.path(上游路径)
/s /fv0 true V0 req /fv0req /s/req
/s /fv0 false V0 req /fv0req /s/fv0req
/s /fv1 true V1 req /fv1req /sreq
/s /fv1 false V1 req /fv1req /sfv1req

规律

  1. v0 通过/加入 服务路径/s 路由路径/r 请求路径q upstream.path =/s/re

  2. v1 忽略请求和路由路径的初始/ 服务路径/s 路由路径/r 请求路径e upstream.path =/sre

  3. 该算法的两个版本在组合路径时都会检测到“双斜杠”,并用单斜杠替换它们。

c. route 的属性

name 路由的名称
protocols 此路由应允许的协议列表,默认为 [“http”, “https”]
methods 与此路由匹配的 HTTP 方法的列表,如 GET,POST,DELETE,PATCH,PUT
hosts 与此路由匹配的域名列表 hosts[]=example.com&hosts[]=foo.test
paths 与此路由匹配的路径列表 paths[]=/foo&paths[]=/bar
strip_path 当通过其中一个匹配路由时,从上游请求 URL 中去除匹配的前缀
path_handling V0 或V1
request_buffering 是否启用请求正文缓冲
service 服务
{"id": "d35165e2-d03e-461a-bdeb-dad0a112abfe","created_at": 1422386534,"updated_at": 1422386534,"name": "my-route","protocols": ["http", "https"],"methods": ["GET", "POST"],"hosts": ["example.com", "foo.test"],"paths": ["/foo", "/bar"],"headers": {"x-another-header":["bla"], "x-my-header":["foo", "bar"]},"https_redirect_status_code": 426,"regex_priority": 0,"strip_path": true,"path_handling": "v0","preserve_host": false,"request_buffering": true,"response_buffering": true,"tags": ["user-level", "low-priority"],"service": {"id":"af8330d3-dbdc-48bd-b1be-55b98608834b"}
}
d.创建路由官网1.创建路由
POST /routes
2.创建与特定服务关联的路由
POST /services/{service name or id}/routes
1.创建与特定服务关联的路由curl -i -X POST  http://localhost:8001/services/{service name or id}/routes \--data 'hosts[]=gateway.com' \--data 'name=myroute' \--data 'strip_path=false' \--data 'paths[]=/blackRoles'\--data 'methods[]=GET&methods[]=POST'
e.查询路由官网1.列出所有路由
GET /routes
2.列出与特定服务关联的路由
GET /services/{service name or id}/routes
1.查询所有路由curl -i -X GET  http://localhost:8001/routes \
2.查询某个服务的路由curl -i -X GET  http://localhost:8001/services/{service name or id}/routes \
f.搜索路由官网1.检索路由
GET /routes/{name or id}
2.检索与特定插件关联的路由
GET /plugins/{plugin id}/route
3.搜索特定服务的路由
GET /services/{service name or id}/routes/{route name or id}
1.根据路由名称或 id 搜索curl -i -X GET  http://localhost:8001/routes/{route name or id} \
2.搜索特定服务的路由curl -i -X GET http://localhost:8001/services/{service name or id}/routes/{route name or id} \
g.更新路由官网1.根据路由 ID 或名称更新路由
PATCH /routes/{route name or id}
2.更新与特定插件关联的路由
PATCH /plugins/{plugin id}/route
3.更新指定服务的路由
PATCH /services/{service name or id}/routes/{route name or id}
1.4版本后支持
PUT /routes/{route name or id}
PUT /services/{service name or id}/routes/{route name or id}
1.根据路由 ID 或名称更新路由curl -i -X PATCH http://localhost:8001/routes/{route name or id} \--data 'hosts[]=gateway.com' \--data 'name=getBlackRole' \--data 'strip_path=false' \--data 'paths[]=/blackRoles'\--data 'methods[]=GET&methods[]=POST' \
2.更新指定服务的路由curl -i -X PATCH http://localhost:8001/services/{service name or id}/routes/{route name or id} \--data 'hosts[]=gateway.com' \--data 'name=getBlackRoles' \--data 'strip_path=false' \--data 'paths[]=/blackRoles'\--data 'methods[]=GET&methods[]=POST' \
h.删除路由官网1.根据路由ID或名称删除路由
DELETE /routes/{route name or id}
2.删除指定服务的路由
DELETE /services/{service name or id}/routes/{route name or id}
1.根据路由ID或名称删除路由curl -i -X DELETE  http://localhost:8001/routes/{route name or id} \
2.删除指定服务的路由curl -i -X DELETE  http://localhost:8001/services/{service name or id}/routes/{route name or id} \

3.consumer(使用者)

a.consumer介绍

Consumer 对象表示服务的使用者或用户

b.consumer的属性

username 使用者的唯一用户名
custom_id 使用者的唯一ID
tags 标签
{"id": "ec1a1f6f-2aa4-4e58-93ff-b56368f19b27","created_at": 1422386534,"username": "my-username","custom_id": "my-custom-id","tags": ["user-level", "low-priority"]
}
c.添加consumer官网POST/consumers
d.查询consumer官网1.查询所有的consumer
GET/consumers
2.检索使用者
GET/consumers/{consumer id or name}
3.检索使用者
/plugins/{plugin id}/consumer
c.更新consumer官网1.更新使用者
PATCH/consumers/{username or id}
2.更新与特定插件关联的使用者
PATCH/plugins/{plugin id}/consumer
1.4版本后可用PUT
d.删除consumer官网1.删除使用者
DELETE/consumer/{username or id}

4.Plugin (插件)

a.plugin介绍

插件对象表示将在 HTTP 请求/响应生命周期中执行的插件配置。例如身份验证或速率限制。

将插件配置添加到服务时,客户端向该服务发出的每个请求都将运行所述插件。如果需要为某些特定使用者调整插件的不同值,则可以通过创建一个单独的插件实例来执行此操作,该实例通过 和 字段指定服务和使用者。

插件可以按标签进行标记和过滤。

{"id": "ce44eef5-41ed-47f6-baab-f725cecf98c7","name": "rate-limiting","created_at": 1422386534,"route": null,"service": null,"consumer": null,"config": {"hour":500, "minute":20},"protocols": ["http", "https"],"enabled": true,"tags": ["user-level", "low-priority"]
}

b.优先级

1.插件将始终运行一次,并且每个请求仅运行一次。但是,它将用于运行的配置取决于为其配置的实体。

2.插件在多少个实体上配置得越具体,其优先级就越高

3.完整优先级顺序如下

plugin主要在service consumer route上配置(表示使用者必须对请求进行身份验证)

a. consumer 与route配置插件 (表示使用者必须对请求进行身份验证)

b.consumer 与service配置插件 (表示使用者必须对请求进行身份验证)

c.service 与route配置插件

d.consumer配置插件(表示使用者必须对请求进行身份验证)

e.service配置插件

f.route 配置插件

g.配置为全局运行的插件

c.plugin的属性

name 要添加的插件的名称。插件必须单独安装在每个 Kong 实例中。
route 插件将仅在通过指定路由接收请求时激活
service 插件将仅在通过指定路由接收请求时激活
consumer 插件将仅对指定已通过身份验证的请求激活
config 插件的配置属性
protocols 将触发此插件的请求协议列表。http、https、tcp、tls
enabled 是否使用插件 默认是true
tags 标签
{"id": "ce44eef5-41ed-47f6-baab-f725cecf98c7","name": "rate-limiting","created_at": 1422386534,"route": null,"service": null,"consumer": null,"config": {"hour":500, "minute":20},"protocols": ["http", "https"],"enabled": true,"tags": ["user-level", "low-priority"]
}
d.创建plugin官网1.创建插件
POST/plugins
2.创建与特定路由关联的插件
POST/routes/{route id}/plugins
3.创建与特定服务关联的插件
POST/services/{service id}/plugins
4.创建与特定使用者关联的插件
POST/consumer/{consumer name or id}/plugins
e.查询插件1.列出所有插件
GET/plugins
2.检索插件
GET/plugins/{plugin id}
2.列出(检索)与特定路由关联的插件
GET/routes/{route name or id}/plugins
GET/routes/{route name or id}/plugins/{plugin id}
3.列出(检索)与特定路由关联的插件
GET/services/{route name or id}/plugins
GET/services/{service name or id}/plugins/{plugin id}
4.列出(检索)与特定路由关联的插件
GET/consumers/{route name or id}/plugins
GET/consumers/{route name or id}/plugins/{plugin id}
f.更新插件声明:可以用PUT 表示更新和创建
1.更新插件
PATCH/plugins/{plugin id}
2.更新与特定路由关联的插件
PATCH/routes/{route name or id}/plugins/{plugin id}
3.更新与特定路由关联的插件
PATCH/services/{service name or id}/plugins/{plugin id}
4.更新与特定使用者关联的插件
PATCH/consumer/{consumer username or id}/plugins/{plugin id}
g.删除插件1.删除插件
DELETE/plugins/{plugin id}
2.删除与特定路由关联的插件
DELETE/routes/{route name or id}/plugins/{plugin id}
3.删除与特定路由关联的插件
DELETE/services/{service name or id}/plugins/{plugin id}
4.删除与特定路由关联的插件
DELETE/consumer/{consumer username or id}/plugins/{plugin id}
h.检索已启用的插件GET/plugins/enabled
J.例子(设置IP黑白名单)1.查看 consumers 、routes、 services 是否添加黑白名单插件curl -i -X GET localhost:8001/consumers/{consumer name or id}/plugins
2.添加黑白名单插件name: ip-restriction 插件名字
service.name : 服务的名字或ID
config.allow : 允许的IP
config.deny : 不被允许的IPcurl -i -X POST localhost:8001/consumers/{consumer name or id}/plugins \--data "name=ip-restriction"  \--data "config.allow=54.13.21.1" \--data "config.allow=143.1.0.0/24"

5.upstream(上游对象)

a.概念

The upstream object represents a virtual hostname and can be used to loadbalance incoming requests over multiple services (targets).

upstream表示虚拟主机名(host),可用于在多个service(target)上负载传入请求

So for example an upstream named service.v1.xyz for a Service object whose host is service.v1.xyz. Requests for this Service would be proxied to the targets defined within the upstream.

An upstream also includes a health checker, which is able to enable and disable targets based on their ability or inability to serve requests. The configuration for the health checker is stored in the upstream object, and applies to all of its targets.

upstream还包括一个运行状况检查器,该检查器能够根据target处理请求的能力或能力来启用和禁用target。运行状况检查器的配置存储在upstream中,并应用于其所有target

b.属性

{"id": "58c8ccbb-eafb-4566-991f-2ed4f678fa70","created_at": 1422386534,//这是一个主机名,它必须等于服务的 主机名(service中的host)"name": "my-upstream",//使用的负载平衡算法(round-robin、consistent-hashing、least-connections)"algorithm": "round-robin",//用作哈希输入的内容(none、consumer...)"hash_on": "none",//主节点不返回哈希值用作哈希输入的内容(none、consumer...)"hash_fallback": "none",要在响应标头中设置的 Cookie 路径"hash_on_cookie_path": "/",//要在响应标头中设置的 Cookie 路径"slots": 10000,"healthchecks": {"active": {"timeout": 1,"unhealthy": {//不正常目标的活动运行状况检查之间的时间间隔"interval": 0,"tcp_failures": 0,"timeouts": 0,"http_failures": 0,"http_statuses": [429, 404, 500, 501, 502, 503, 504, 505]},"type": "http","concurrency": 10,"headers": [{"x-another-header":["bla"], "x-my-header":["foo", "bar"]}],"healthy": {"interval": 0,"successes": 0,"http_statuses": [200, 302]},"http_path": "/","https_sni": "example.com","https_verify_certificate": true},"passive": {"type": "http","unhealthy": {"http_statuses": [429, 500, 503],"http_failures": 0,"timeouts": 0,"tcp_failures": 0},"healthy": {"http_statuses": [200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, 306, 307, 308],"successes": 0}},"threshold": 0},"tags": ["user-level", "low-priority"],"host_header": "example.com","client_certificate": {"id":"ea29aaa3-3b2d-488c-b90c-56df8e0dd8c6"}
}
c.添加upstream1.创建上游
POST/upstreams
2.创建与特定证书关联的上游
POST/certificates/{certificate name or id}/upstreams
d.检索upstream1.列出所有上游
GET/upstreams
2.检索特点给的上游
GET/upstreams/{upstream name or id}
3.列出与特定证书关联的上游
GET/certificates/{certificate id}/upstreams
4.检索与特定证书关联的上游
GET/certificates/{certificate id}/upstreams/{upstream name or id}
e.修改upstream声明:1.4之后可以使用PUT
1.更新上游
PUT/upstreams/{upstream name or id}
2.更新与特定证书关联的上游
PUT/certificates/{certificate id}/upstreams/{upstream name or id}
f.删除upstream1.删除上游
DELETE/upstreams/{upstream name or id}
2.删除与特定证书关联的上游
DELETE/certificates/{certificate id}/upstreams/{upstream name or id}

g.显示节点的上游运行状况

根据特定 Kong 节点的视角,显示给定上游的所有目标或整个上游的运行状况。请注意,作为特定于节点的信息,向 Kong 集群的不同节点发出相同的请求可能会产生不同的结果。例如,Kong 群集的一个特定节点可能遇到网络问题,导致它无法连接到某些目标:这些目标将被该节点标记为不正常(将流量从此节点定向到它可以成功到达的其他目标),但对所有其他 Kong 节点(使用该目标没有问题)正常。

响应的字段包含一个 Target 对象数组。每个目标的运行状况将在其字段中返回:data``health

GET/upstreams/{name or id}/health/

6.Target(目标对象)

a.概念

A target is an ip address/hostname with a port that identifies an instance of a backend service. Every upstream can have many targets, and the targets can be dynamically added, modified, or deleted. Changes take effect on the fly.

目标是一个 IP 地址/主机名,其端口用于标识后端服务的实例。每个上游都可以有许多目标,并且可以动态添加、修改或删除这些目标。更改会即时生效

To disable a target, post a new one with weight=0; alternatively, use the DELETE convenience method to accomplish the same.

b.属性

target IP/域名:端口
weight 负载均衡的权重
tags 用于分组和筛选
{"id": "173a6cee-90d1-40a7-89cf-0329eca780a6","created_at": 1422386534,"upstream": {"id":"bdab0e47-4e37-4f0b-8fd0-87d95cc4addc"},"target": "example.com:8000","weight": 100,"tags": ["user-level", "low-priority"]
}
c.添加target1.创建与特定上游关联的目标
POST/upstreams/{upstream_id}/targets
d.检索target1.列出与特定上游关联的目标
GET/upstreams/{upstream_id}/targets
e.修改target1.更新目标
PATCH/upstreams/{upstream_id}/targets//{host:port or id}
f.删除target1.从负载均衡器中删除目标
DELETE/upstreams/{upstream_id}/targets//{host:port or id}
g.将目标地址设置为正常POST/upstreams/{upstream name or id}/targets/{target or id}/{address}/healthy
h.将目标地址设置为不正常POST/upstreams/{upstream name or id}/targets/{target or id}/{address}/unhealthy
j.将目标设置为正常POST/upstreams/{upstream name or id}/targets/{target or id}/healthy
k.将目标设置为不正常POST/upstreams/{upstream name or id}/targets/{target or id}/unhealthy

7.Certificate(证书)

a.概念

证书对象表示公共证书,可以选择与相应的私钥配对。Kong 使用这些对象来处理加密请求的 SSL/TLS 终止,或者在验证客户端/服务的对等证书时用作受信任的 CA 存储。可以选择将证书与 SNI 对象关联,以将证书/密钥对绑定到一个或多个主机名。

b.属性

cert SSL 密钥对的 PEM 编码的公有证书链(公钥)。
key SSL 密钥对的 PEM 编码的私钥(私钥)
cert_alt 备用 SSL 密钥对的 PEM 编码的公有证书链
key_alt 备用 SSL 密钥对的 PEM 编码私钥
tags 与证书关联的一组可选字符串,用于分组和筛选。
snis 包含零个或多个主机名的数组,要作为 SNI 与此证书关联
{"id": "7fca84d6-7d37-4a74-a7b0-93e576089a41","created_at": 1422386534,"cert": "-----BEGIN CERTIFICATE-----...","key": "-----BEGIN RSA PRIVATE KEY-----...","tags": ["user-level", "low-priority"]
}
c.添加证书1.添加证书
POST/certificates
d.检索证书1.列出所有证书
GET/certificates
2.检索证书
GET/certificates/{certificate id}
3.检索与特定上游关联的证书(客户端证书)
GET/upstreams/{upstream name or id}/client_certificate
e.更新证书1.4 版本后PUT创建和更新证书
1.更新证书
PATCH/certificates/{certificate id}
2.更新与特定上游关联的证书
PATCH/upstreams/{upstream name or id}/client_certificate
f.删除证书1.删除证书
DELETE/certificates/{certificate id}
2.删除与特定上游关联的证书
DELETE/upstreams/{upstream name or id}/client_certificate

8.CA Certificate

a.概念

CA 证书对象表示受信任的 CA。Kong 使用这些对象来验证客户端或服务器证书的有效性。

b.属性

cert CA 的 PEM 编码公共证书
cert_digest CA 的 PEM 编码公共证书
tags 用于分组和筛选
{"id": "04fbeacf-a9f1-4a5d-ae4a-b0407445db3f","created_at": 1422386534,"cert": "-----BEGIN CERTIFICATE-----...","cert_digest": "c641e28d77e93544f2fa87b2cf3f3d51...","tags": ["user-level", "low-priority"]
}
c.添加CA证书POST/ca_certificates
d.检索CA证书1.列出所有的CA证书
GET/ca_certificates
2.查询CA证书
GET/ca_certificates/{ca_certificates id}
e.修改CA证书1.4之后使用PUT可以修改也可以添加
PATCH/ca_certificates/{ca_certificates id}
f.删除CA证书DELETE/ca_certificates/{ca_certificates id}

9.SIN(对象)

a.概念

SNI 对象表示主机名到证书的多对一映射 一个证书可以有多个与之相关的额主机名,Kong收到SSL请求,客户端中的SNI更具与证书关联的SNI来找证书

b.属性

name 要与给定证书关联的 SNI 名称。
certificate 要与 SNI 主机名关联的证书的 ID,证书必须具有与其关联的有效私钥,以供 SNI 对象使用
tags 用于分组和筛选
{"id": "91020192-062d-416f-a275-9addeeaffaf2","name": "my-sni","created_at": 1422386534,"tags": ["user-level", "low-priority"],"certificate": {"id":"a2e013e8-7623-4494-a347-6d29108ff68b"}
}
c.添加SNI1.创建 SNI
POST/snis
2.创建与特定证书关联的 SNI
POST/certificates/{certificate name or id}/sins
d.检索SNI1.列出所有 SNI
GET/snis
2.检索 SNI
GET/snis/{sni name or id}
3.列出与特定证书关联的 SNI
GET/certificates/{certificate name or id}/snis
4.检索与特定证书关联的 SNI
GET/certificates/{certificate id}/snis/{sni name or id}
e.修改SNI声明:可以用PUT来更新和添加SNI
1.更新 SNI
PATCH/snis/{sni name or id}
2.更新与特定证书关联的 SNI
PATCH/certificates/{certificate id}/snis/{sni name or id}
f.删除SNI1.删除 SNI
DELETE/snis/{sni name or id}
2.除与特定证书关联的 SNI
DELETE/certificates/{certificate id}/snis/{sni name or id}

kong的学习与总结常用命令的使用相关推荐

  1. Kafka学习之四 Kafka常用命令

    2019独角兽企业重金招聘Python工程师标准>>> Kafka学习之四 Kafka常用命令 Kafka常用命令 以下是kafka常用命令行总结: 1.查看topic的详细信息 . ...

  2. 嵌入式Linux系统编程学习之二常用命令

    嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...

  3. Linux 学习笔记2 常用命令

    Linux 学习笔记1 安装linux详细教程_O丶ne丨柒夜的博客-CSDN博客 Linux_目录结构 基本介绍 1.liux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录&quo ...

  4. Maven学习文档常用命令继承聚合

    学习视频 www.atguigu.com 目前的技术在开发中存在的问题 一个项目就是一个工程 如果项目非常庞大,就不适合继续使用package来划分模块.最好是每一个模块对应一 个工程,利于分工协作. ...

  5. NodeJs学习笔记002--npm常用命令详解

    npm 常用命令详解 npm是什么 npm install 安装模块 npm uninstall 卸载模块 npm update 更新模块 npm outdated 检查模块是否已经过时 npm ls ...

  6. Docker学习笔记之常用命令

    背景 整理一下常用的Docker命令 常用命令 帮助命令 1.查看版本 $ docker versionClient: Version: 18.03.0-ce API version: 1.37 Go ...

  7. Git学习笔记:常用命令总结

    本文根据廖雪峰的博客,记录下自己的学习笔记.主要记录常用的命令,包括仓库初始化.添加文件.提交修改.新建分支.内容暂存.分支管理.标签管理等内容. git是分布式版本控制系统. 首先是安装,从官网下载 ...

  8. python学习之pip常用命令

    windows下常用pip命令 1.查看安装的所有库 2.查看pip的路径 3.pip更换镜像源 3.1临时使用 3.2永久修改 4. pip查看本地使用镜像 5.查看安装包的所有版本 6.安装指定版 ...

  9. matlab学习笔记之常用命令(一)

    一.清除命令. 1.clear all:%清除所有变量,通常在matlab的工作区:另外断点也会被清除掉 2.close all:%关闭所有窗口(除了编辑器窗口.命令窗口.帮助窗口) 3.clc;%清 ...

最新文章

  1. 【linux】查看Linux操作系统版本、内核、CPU和内存信息
  2. 训练深度学习网络时候,出现Nan是什么原因,怎么才能避免?——我自己是因为data有nan的坏数据,clear下解决...
  3. Python之多进程
  4. This EntitySet of type xxx does not support the 'Edit' operation
  5. AutoLayout--masonry使用
  6. python finally语句里面出现异常_Python异常处理中的else和finally
  7. IntelliJ Idea学习笔记003---【Intellij IDEA】eclipse项目导入
  8. 10元一瓶的普通白酒和2000元一瓶的茅台酒有什么区别?
  9. 单反相机的常用的几个参数之间的关系
  10. web目录字典_Dirmap:一款高级Web目录文件扫描工具
  11. Docker之使用Dockerfile创建定制化镜像(四)--技术流ken
  12. DispatcherServlet和Spring应用上下文初始化详解
  13. WiFi路由的PIN码与常见问题处理破解教程
  14. 手披云雾开鸿蒙,有关泰山的古诗比叫熟悉的古诗来回吧~
  15. Java JNI调用kaldi动态链接库(Linux版本)
  16. 树莓派无法获取ipv6公网地址和dns解析失败的问题
  17. 马尾神经损伤在中医上叫什么?
  18. 有一个一维数组,内放10个学生成绩,写一个函数当主函数调用此函数后嫩求出平均分、最高分和最低分
  19. dat文件用什么软件打开?
  20. 【游戏开发实战】使用Unity制作水果消消乐游戏教程(二):随机生成水果

热门文章

  1. ARM SMMU学习笔记
  2. python批量生成文件夹
  3. 小米note2开启位置服务器,小米note2如何解锁system系统分区教程_小米note2解系统分区...
  4. Android学习记录045_PorterDuff
  5. python爬取大众点评数据_Python 爬取大众点评 50 页数据,最好吃的成都火锅竟是它!...
  6. 温州富商透露发财22条秘诀:坚持看新闻联播
  7. 安徽大学计算机科学毕业设计,安徽大学计算机学院本科毕业论文(设计)案例.pdf...
  8. 章鱼搜索网启用域名32.com上线 价格百万美元?
  9. 信贷风控模型开发----模型简介
  10. 分布式医疗云平台(项目功能简介截图)【药品进销存管理 (生产厂家维护、药品信息维护、供应商维护 、采购入库 、入库审核 、库存查询 )】(五)-全面详解(学习总结---从入门到深化)