一.系统环境

服务器版本 docker软件版本 CPU架构
CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64

二.前言

kubectl是Kubernetes提供的命令行工具,kubectl 使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信。

针对配置信息,kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件来连接Kubernetes 集群。 你可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。

使用kubectl命令行工具的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Centos7 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/16686769.html

三.kubectl

3.1 kubectl语法

kubectl的语法为:kubectl [command] [TYPE] [NAME] [flags],其中 command、TYPE、NAME 和 flags 分别是:

  • command:指定要对一个或多个资源执行的操作,例如 create、get、describe、delete。

  • TYPE:指定资源类型。资源类型不区分大小写, 可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:

    kubectl get pod pod1
    kubectl get pods pod1
    kubectl get po pod1
  • NAME:指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息。例如:kubectl get pods。

  • flags: 指定可选的参数。例如,可以使用 -s 或 --server 参数指定 Kubernetes API 服务器的地址和端口。

要对所有类型相同的资源进行分组,请执行以下操作:TYPE1 name1 name2 name<#>。

例子:kubectl get pod example-pod1 example-pod2

分别指定多个资源类型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>。

例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1

3.2 kubectl格式化输出

kubectl格式化输出语法:kubectl [command] [TYPE] [NAME] -o <output_format>

输出格式 描述
-o custom-columns=spec 使用逗号分隔的自定义列列表打印表。
-o custom-columns-file=filename 使用 filename文件中的自定义列模板打印表。
-o json 输出 JSON 格式的 API 对象
-o jsonpath=template 打印 jsonpath 表达式定义的字段
-o jsonpath-file=filename 打印 filename>文件中 jsonpath 表达式定义的字段。
-o name 仅打印资源名称而不打印任何其他内容。
-o wide 以纯文本格式输出,包含所有附加信息。对于 Pod 包含节点名。
-o yaml 输出 YAML 格式的 API 对象。

四.kubectl常用命令

查看从什么地址能访问k8s API,会显示k8s集群的master节点的地址

[root@k8scloude1 ~]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.110.130:6443
CoreDNS is running at https://192.168.110.130:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

查看kubectl版本

[root@k8scloude1 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T16:31:21Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T16:25:06Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"linux/amd64"} [root@k8scloude1 ~]# kubectl version --short
Client Version: v1.21.0
Server Version: v1.21.0

查看k8s的pod网段,可以看到pod网段为10.244.0.0/16

#查看初始化时候的k8s集群配置:kubeadm config view
[root@k8scloude1 ~]# kubeadm config view
Command "view" is deprecated, This command is deprecated and will be removed in a future release, please use 'kubectl get cm -o yaml -n kube-system kubeadm-config' to get the kubeadm config directly.
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.21.0
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}

查看kubeconfig文件的结构

[root@k8scloude1 ~]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.110.130:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED

五.查看kubernetes集群node节点和pod负载

5.1 安装metric-server

查看node节点和pod的负载,发现看不了node和pod的负载,是因为没有安装metric-server

[root@k8scloude1 ~]# kubectl top nodes
W0109 16:45:38.197980 75467 top_node.go:119] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
error: Metrics API not available [root@k8scloude1 ~]# kubectl top pods
W0109 16:45:58.436117 75718 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
error: Metrics API not available

为了查看节点和pod的负载,下面开始安装metric-server

创建目录,用来存放metric-server

[root@k8scloude1 ~]# mkdir metric-server

[root@k8scloude1 ~]# cd metric-server/

下载metrics-server并解压

[root@k8scloude1 metric-server]# wget https://github.com/kubernetes-sigs/metrics-server/archive/v0.3.6.tar.gz

[root@k8scloude1 metric-server]# ls
v0.3.6.tar.gz [root@k8scloude1 metric-server]# tar xf v0.3.6.tar.gz [root@k8scloude1 metric-server]# ls
metrics-server-0.3.6 v0.3.6.tar.gz [root@k8scloude1 metric-server]# cd metrics-server-0.3.6/ [root@k8scloude1 metrics-server-0.3.6]# ls
cmd code-of-conduct.md CONTRIBUTING.md deploy Gopkg.lock Gopkg.toml hack LICENSE Makefile OWNERS OWNERS_ALIASES pkg README.md SECURITY_CONTACTS vendor version [root@k8scloude1 metrics-server-0.3.6]# cd deploy/ [root@k8scloude1 deploy]# ls
1.7 1.8+ docker minikube [root@k8scloude1 deploy]# cd 1.8+ [root@k8scloude1 1.8+]# ls
aggregated-metrics-reader.yaml auth-delegator.yaml auth-reader.yaml metrics-apiservice.yaml metrics-server-deployment.yaml metrics-server-service.yaml resource-reader.yaml

查看需要下载的镜像,image: k8s.gcr.io/metrics-server-amd64:v0.3.6这个镜像国内访问不了,我们手动下载一个国内镜像

[root@k8scloude1 1.8+]# grep image metrics-server-deployment.yaml
# mount in tmp so we can safely use from-scratch images and/or read-only containers
image: k8s.gcr.io/metrics-server-amd64:v0.3.6
imagePullPolicy: Always

在k8s集群master节点和worker节点都需要下载metrics-server-amd64:v0.3.6镜像

[root@k8scloude1 1.8+]# docker pull mirrorgooglecontainers/metrics-server-amd64:v0.3.6

[root@k8scloude1 1.8+]# docker images | grep mirrorgooglecontainers
REPOSITORY TAG IMAGE ID CREATED SIZE
mirrorgooglecontainers/metrics-server-amd64 v0.3.6 9dd718864ce6 2 years ago 39.9MB

镜像已经下好了,现在进行docker tag重命名,并删除原镜像mirrorgooglecontainers/metrics-server-amd64:v0.3.6

[root@k8scloude1 1.8+]# docker tag mirrorgooglecontainers/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

[root@k8scloude1 1.8+]# docker rmi mirrorgooglecontainers/metrics-server-amd64:v0.3.6

worker节点也进行相同操作

[root@k8scloude2 ~]# docker pull mirrorgooglecontainers/metrics-server-amd64:v0.3.6

[root@k8scloude2 ~]# docker tag mirrorgooglecontainers/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

[root@k8scloude2 ~]# docker rmi mirrorgooglecontainers/metrics-server-amd64:v0.3.6

[root@k8scloude3 ~]# docker pull mirrorgooglecontainers/metrics-server-amd64:v0.3.6

[root@k8scloude3 ~]# docker tag mirrorgooglecontainers/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

[root@k8scloude3 ~]# docker rmi mirrorgooglecontainers/metrics-server-amd64:v0.3.6

修改配置文件,镜像下载策略imagePullPolicy改为IfNotPresent,IfNotPresent表示只有当镜像在本地不存在时才会拉取

[root@k8scloude1 1.8+]# pwd
/root/metric-server/metrics-server-0.3.6/deploy/1.8+ #修改内容如下: imagePullPolicy: IfNotPresent
# command:
# - /metrics-server
# - --metric-resolution=30s
# - --kubelet-insecure-tls
# - --kubelet-preferred-address-types=InternalIP
[root@k8scloude1 1.8+]# tail -20 metrics-server-deployment.yaml
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
image: k8s.gcr.io/metrics-server-amd64:v0.3.6
imagePullPolicy: IfNotPresent
command:
- /metrics-server
- --metric-resolution=30s
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
volumeMounts:
- name: tmp-dir
mountPath: /tmp

安装metrics-server

#kubectl apply -f .    .表示安装当前目录下的所有文件
[root@k8scloude1 1.8+]# kubectl apply -f .
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
Warning: rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
Warning: rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
Warning: apiregistration.k8s.io/v1beta1 APIService is deprecated in v1.19+, unavailable in v1.22+; use apiregistration.k8s.io/v1 APIService
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created

查看所有的命名空间

[root@k8scloude1 1.8+]# kubectl get ns
NAME STATUS AGE
default Active 18h
kube-node-lease Active 18h
kube-public Active 18h
kube-system Active 18h

当观察到metrics-server-bcfb98c76-k5dmj状态为Running,metrics-server服务就正常启动了

[root@k8scloude1 1.8+]# kubectl get pod -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
calico-kube-controllers-6b9fbfff44-4jzkj 1/1 Running 2 19h 10.244.251.194 k8scloude3 <none> <none>
calico-node-bdlgm 1/1 Running 1 19h 192.168.110.130 k8scloude1 <none> <none>
calico-node-hx8bk 1/1 Running 1 19h 192.168.110.128 k8scloude3 <none> <none>
calico-node-nsbfs 1/1 Running 1 19h 192.168.110.129 k8scloude2 <none> <none>
coredns-545d6fc579-7wm95 1/1 Running 1 19h 10.244.158.68 k8scloude1 <none> <none>
coredns-545d6fc579-87q8j 1/1 Running 1 19h 10.244.158.67 k8scloude1 <none> <none>
etcd-k8scloude1 1/1 Running 1 19h 192.168.110.130 k8scloude1 <none> <none>
kube-apiserver-k8scloude1 1/1 Running 1 19h 192.168.110.130 k8scloude1 <none> <none>
kube-controller-manager-k8scloude1 1/1 Running 1 19h 192.168.110.130 k8scloude1 <none> <none>
kube-proxy-599xh 1/1 Running 1 19h 192.168.110.128 k8scloude3 <none> <none>
kube-proxy-lpj8z 1/1 Running 1 19h 192.168.110.129 k8scloude2 <none> <none>
kube-proxy-zxlk9 1/1 Running 1 19h 192.168.110.130 k8scloude1 <none> <none>
kube-scheduler-k8scloude1 1/1 Running 1 19h 192.168.110.130 k8scloude1 <none> <none>
metrics-server-bcfb98c76-k5dmj 1/1 Running 0 70s 10.244.112.131 k8scloude2 <none> <none>

5.2 查看node负载

查看node的负载

[root@k8scloude1 1.8+]# kubectl top node
W0110 11:37:47.025099 75026 top_node.go:119] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8scloude1 257m 12% 1487Mi 45%
k8scloude2 104m 5% 698Mi 36%
k8scloude3 102m 5% 701Mi 36%

5.3 查看pod负载

查看pod的负载

注释:一核心分成1000个微核心m 1核=1000m

[root@k8scloude1 1.8+]# kubectl top pods
W0110 11:38:40.576780 75696 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
No resources found in default namespace. #-A表示所有命名空间
[root@k8scloude1 1.8+]# kubectl top pods -A
W0110 11:38:47.276962 75784 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAMESPACE NAME CPU(cores) MEMORY(bytes)
kube-system calico-kube-controllers-6b9fbfff44-4jzkj 2m 25Mi
kube-system calico-node-bdlgm 37m 170Mi
kube-system calico-node-hx8bk 43m 157Mi
kube-system calico-node-nsbfs 56m 164Mi
kube-system coredns-545d6fc579-7wm95 3m 18Mi
kube-system coredns-545d6fc579-87q8j 3m 18Mi
kube-system etcd-k8scloude1 14m 91Mi
kube-system kube-apiserver-k8scloude1 60m 351Mi
kube-system kube-controller-manager-k8scloude1 21m 56Mi
kube-system kube-proxy-599xh 1m 24Mi
kube-system kube-proxy-lpj8z 1m 24Mi
kube-system kube-proxy-zxlk9 1m 24Mi
kube-system kube-scheduler-k8scloude1 3m 23Mi
kube-system metrics-server-bcfb98c76-k5dmj 1m 13Mi

六.命名空间namespace的管理

6.1 何为命名空间namespace

在 Kubernetes 中,命名空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一命名空间内的资源名称要唯一,但跨命名空间时没有这个要求。 命名空间作用域仅针对带有命名空间的对象,例如 Deployment、Service 等, 这种作用域对集群访问的对象不适用,例如 StorageClass、Node、PersistentVolume 等。

6.2 管理命名空间namespace

查看所有的命名空间

[root@k8scloude1 1.8+]# kubectl get namespaces
NAME STATUS AGE
default Active 19h
kube-node-lease Active 19h
kube-public Active 19h
kube-system Active 19h [root@k8scloude1 1.8+]# kubectl get ns
NAME STATUS AGE
default Active 19h
kube-node-lease Active 19h
kube-public Active 19h
kube-system Active 19h

创建命名空间,注意:不同的namespace之间相互隔离

[root@k8scloude1 1.8+]# kubectl create ns ns1
namespace/ns1 created [root@k8scloude1 1.8+]# kubectl create ns ns2
namespace/ns2 created [root@k8scloude1 1.8+]# kubectl get ns
NAME STATUS AGE
default Active 19h
kube-node-lease Active 19h
kube-public Active 19h
kube-system Active 19h
ns1 Active 6s
ns2 Active 4s

获取全局上下文,可以看到当前命名空间为default

[root@k8scloude1 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin default

切换命名空间

#切换命名空间
[root@k8scloude1 ~]# kubectl config set-context --current --namespace=kube-system
Context "kubernetes-admin@kubernetes" modified. [root@k8scloude1 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin kube-system #获取当前K8S上下文
[root@k8scloude1 ~]# kubectl config current-context
kubernetes-admin@kubernetes

6.2 使用kubens管理命名空间namespace

默认的切换命名空间的命令不好用,可以使用第三方的命名空间切换工具:kubens,kubens命令所在的网站为:https://github.com/ahmetb/kubectx/releases/

下载kubens,并授予可执行权限

[root@k8scloude1 ~]# wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubens

[root@k8scloude1 ~]# ll -h kubens
-rw-r--r-- 1 root root 5.5K 12月 8 15:46 kubens [root@k8scloude1 ~]# chmod +x kubens [root@k8scloude1 ~]# mv kubens /bin/ [root@k8scloude1 ~]# ls /bin/kubens
/bin/kubens

查看所有的命名空间

[root@k8scloude1 ~]# kubens
default
kube-node-lease
kube-public
kube-system
ns1
ns2

切换namespace

#切换namespace到kube-system
[root@k8scloude1 ~]# kubens kube-system
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "kube-system". #此时,默认查询的就是kube-system命名空间下的pod
[root@k8scloude1 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
calico-kube-controllers-6b9fbfff44-4jzkj 1/1 Running 2 20h 10.244.251.194 k8scloude3 <none> <none>
calico-node-bdlgm 1/1 Running 1 20h 192.168.110.130 k8scloude1 <none> <none>
calico-node-hx8bk 1/1 Running 1 20h 192.168.110.128 k8scloude3 <none> <none>
calico-node-nsbfs 1/1 Running 1 20h 192.168.110.129 k8scloude2 <none> <none>
coredns-545d6fc579-7wm95 1/1 Running 1 20h 10.244.158.68 k8scloude1 <none> <none>
coredns-545d6fc579-87q8j 1/1 Running 1 20h 10.244.158.67 k8scloude1 <none> <none>
etcd-k8scloude1 1/1 Running 1 20h 192.168.110.130 k8scloude1 <none> <none>
kube-apiserver-k8scloude1 1/1 Running 1 20h 192.168.110.130 k8scloude1 <none> <none>
kube-controller-manager-k8scloude1 1/1 Running 1 20h 192.168.110.130 k8scloude1 <none> <none>
kube-proxy-599xh 1/1 Running 1 20h 192.168.110.128 k8scloude3 <none> <none>
kube-proxy-lpj8z 1/1 Running 1 20h 192.168.110.129 k8scloude2 <none> <none>
kube-proxy-zxlk9 1/1 Running 1 20h 192.168.110.130 k8scloude1 <none> <none>
kube-scheduler-k8scloude1 1/1 Running 1 20h 192.168.110.130 k8scloude1 <none> <none>
metrics-server-bcfb98c76-k5dmj 1/1 Running 0 56m 10.244.112.131 k8scloude2 <none> <none>

切换namespace到default

#切换namespace到default
[root@k8scloude1 ~]# kubens default
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "default". #此时,默认查询的就是default命名空间下的pod
[root@k8scloude1 ~]# kubectl get pods -o wide
No resources found in default namespace. #要查询kube-public命名空间下的pod,使用-n kube-public指定
[root@k8scloude1 ~]# kubectl get pods -n kube-public
No resources found in kube-public namespace.

使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理的更多相关文章

  1. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...

  2. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  3. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  4. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  5. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  6. Kubernetes(k8s)集群安装

    一:简介 二:基础环境安装 1.系统环境 os Role ip Memory Centos 7 master01 192.168.25.30 4G Centos 7 node01 192.168.25 ...

  7. Centos7 安装部署Kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...

  8. 5.基于二进制部署kubernetes(k8s)集群

    1 kubernetes组件 1.1 Kubernetes 集群图 官网集群架构图 1.2 组件及功能 1.2.1 控制组件(Control Plane Components) 控制组件对集群做出全局 ...

  9. Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14

    目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...

随机推荐

  1. Android Studio 的初次使用

    记录我第一次使用Android Studio时遇到的问题以及一些简单的笔记. 我所使用的是Android Studio 2.2版本 遇到的问题 创建一个Hello World!项目无疑是相当简单的,我 ...

  2. go-zero微服务实战系列(十、分布式事务如何实现)

    在分布式应用场景中,分布式事务问题是不可回避的,在目前流行的微服务场景下更是如此.比如在我们的商城系统中,下单操作涉及创建订单和库存扣减操作两个操作,而订单服务和商品服务是两个独立的微服务,因为每个微 ...

  3. 2019 CSP-S 初赛解析

    因为我不会设置用博客园显示Markdown语法,所以在洛谷也写了一份:传送门 一起讨论的这套卷.题干 然后还有一些可以借鉴一下的解析 选择: T1. 注意运算顺序: a%3=1 --> (int ...

  4. 零基础学Java(12)静态字段与静态方法

    静态字段与静态方法   之前我们都定义的main方法都被标记了static修饰符,那到底是什么意思?下面我们来看看 静态字段   如果将一个字段定义为static,每个类只有一个这样的字段.而对于非静 ...

  5. 20220722-Java中this关键字

    this关键字知识总结 学习资源:B站韩顺平老师Java入门教学 代码示例1 public class This01 { public static void main(String[] args) ...

  6. 丽泽普及2022交流赛day18 社论

    A 暴力扫一遍 B 算法 0 似乎是二分 算法 1 随便贪心 C 算法 1 枚举一个点作为最大值 / 最小值,用单调栈维护其作为答案的左右端点即可轻易计算 . 时间复杂度 \(O(n)\) . 算法 ...

  7. Odoo env.ref()函数

    python env.ref()函数作用是获取xml id记录. 1 action = self.env.ref('base.res_company_action').read()[0] 2 acti ...

  8. 原生js也可以自定义组件

    Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的功能封装在您的代码之外)并且在您的web应用中使用它们. 它由三项主要技术组成,它们可以一起使用来创建封装功能的定制元 ...

  9. Java学习第七周

    这周学习了集合,stream流等知识 List集合 – List系列集合:添加的元素是有序,可重复,有索引 1.ArrayList: 添加的元素是有序,可重复,有索引 2.LinkedList: 添加 ...

  10. mongo数据库-mongo角色权限

    Built-In Roles(内置角色): 1. 数据库用户角色:read.readWrite; 2. 数据库管理角色:dbAdmin.dbOwner.userAdmin: 3. 集群管理角色:clu ...