Kubernetes3-kubectl管理Kubernetes容器平台-1
一、简介
1、什么是kubectl
kubectl前面其实已经用到了一些,它其实就是用于操作kubernetes集群的命令行接口,通过kubectl的各种命令实现各种功能
2、环境还是用上一偏文章
3、架构图
二、kubectl-创建/删除一个pod得相关操作
run 运行-在集群上运行一个pod
create 创建-使用文件或标准输入的方式创建一个pod
delete 删除 -使用文件或者标准输入以及资源名称或者标签选择器来删除某个pod
1、先导入镜像
可以提前下载好镜像解决时间
1)、上传到node1/node2
docker.io-nginx.tar
pod-ingrastucture.tar
2)、导入
[root@node1 ~]# docker load -i docker.io-nginx.tar
cec7521cdf36: Loading layer [==================================================>] 58.44 MB/58.44 MB
350d50e58b6c: Loading layer [==================================================>] 53.76 MB/53.76 MB
63c39cd4a775: Loading layer [==================================================>] 3.584 kB/3.584 kB
Loaded image: docker.io/nginx:latest
[root@node1 ~]#
2、run命令
1)语法:
kubectl run NAME --image=[--env="key=value"][--port=port][--replicas=replicas]
如果使用自己的私库使用--image=192.168.216.52:5000/nginx:1.12
2)开始启动
kubectl run nginx --image=docker.io/nginx --replicas=1 --port=9000
[root@master ~]# kubectl run nginx --image=docker.io/nginx --replicas= --port=
deployment "nginx" created
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx--gmktb / ContainerCreating 6s
3)问题1、pod状态一直处于ContainerCreating
状态一直是containercreating,可能镜像有问题
[root@node4 ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure
Using default tag: latest
Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ...
open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory
#---找不到这个文件
[root@node4 ~]# ll /etc/docker/certs.d/
total
drwxr-xr-x root root Oct : redhat.com
drwxr-xr-x root root Oct : redhat.io
drwxr-xr-x root root Oct : registry.access.redhat.com
[root@node4 ~]# ll /etc/docker/certs.d/re
redhat.com/ redhat.io/ registry.access.redhat.com/
[root@node4 ~]# ll /etc/docker/certs.d/re
redhat.com/ redhat.io/ registry.access.redhat.com/
[root@node4 ~]# ll /etc/docker/certs.d/registry.access.redhat.com/
total
lrwxrwxrwx root root Oct : redhat-ca.crt -> /etc/rhsm/ca/redhat-uep.pem
#---软链接的是/etc/rhsm/ca/redhat-uep.pem,但实际没有这个文件
4)解决办法1
[root@node1 ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
---- ::-- http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
Resolving mirror.centos.org (mirror.centos.org)... 160.116.15.22, 103.232.121.196, :78c0::e00e
Connecting to mirror.centos.org (mirror.centos.org)|160.116.15.22|:... connected.
HTTP request sent, awaiting response... OK
Length: (41K) [application/x-rpm]
Saving to: ‘python-rhsm-certificates-1.19.-.el7_4.x86_64.rpm’ %[==========================================================================>] , .7KB/s in .6s -- :: (70.7 KB/s) - ‘python-rhsm-certificates-1.19.-.el7_4.x86_64.rpm’ saved [/] [root@node1 ~]# rpm2cpio python-rhsm-certificates-1.19.-.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
./etc/rhsm/ca/redhat-uep.pem
blocks
[root@node1 ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ...
latest: Pulling from registry.access.redhat.com/rhel7/pod-infrastructure
26e5ed6899db: Pull complete
66dbe984a319: Pull complete
9138e7863e08: Pull complete
Digest: sha256:92d43c37297da3ab187fc2b9e9ebfb243c1110d446c783ae1b989088495db931
Status: Downloaded newer image for registry.access.redhat.com/rhel7/pod-infrastructure:late
5)解决办法2
运行 yum update ,这里测试上面一个方法不行,运行update恢复正常
6)在查询pod状态
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx--f9rs1 / Running 1m
[root@master ~]#
3、删除操作
kubectl delete pod 名称
kubectl delete deployment 运行指定的镜像名称
1)删除pod并不能切底删除,因为运行run命令使用了--replicas=1
[root@master ~]# kubectl delete pod nginx-2187705812-t7q3t
#只是删除了这个镜像,但是触发了replicas的保护机制,所以需要删除deployment
pod "nginx-2187705812-t7q3t" deleted
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx--0vkvm / ContainerCreating 8s
2)删除deployment
[root@master ~]# kubectl delete deployment nginx
deployment "nginx" deleted
[root@master ~]# kubectl get pod
No resources found.
三、了解yaml语法
1、YAML的设计目标就是方便人类读写,它其实是一种通用的数据串行化格式
2、yaml配置文件常见单词:
3、基本语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用tab键,只允许使用空格
- 缩进的空格数目不重要,只要相同级的元素左侧对齐即可
- #表示注释,从这个字符一直到行尾,都会被解析器忽略
- 在yaml里面,连续的项目(如:数组元素、集合元素)通过减号“-”来表示,map结构里面的键值对(key/value)用冒号“:”来分割。
4、YAML支持三种数据结构
对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)
数组:一组按次序排列的值,又称序列(sequence)/列表(list)
纯量(scalars):单个的、不可再分的值
5、数据结构--对象
对象的一组键值对,使用冒号结构表示
1:a
yaml也允许另一种写法,将所有键值对写成一个行内对象
hash:
name:1
foo:bar
或hash:{name:1,foo:bar}
6、数组
一组连词线开头的行,构成一个数组
-Cat
-Dog
-Goldfish
转为JavaScript如下
[['Cat','Dog','Goldfish']]
数组也可以采用行内表示法
animal:[Cat,Dog]
转为javaScript如下
{animal:['Cat','Dog']}
7、复合结构
对象和数组可以结合使用,形成复合结构
格式如下:
对象 :
对象:
对象:键值
对象:
- 数组
- 数组
例:BAT
vim bat.yaml
bat:
website:
baidu: http://www.baidu.com
qq: http://www.qq.com
ali:
- http://www.taobao.com
- http://www.tmall.com
ceo:
yanhongli: 李彦宏
huatengma: 马化腾
yunma: 马云
8、纯量
纯量是最基本的、不可拆分的值。如:字符串、布尔值、整数、浮点数、Null、时间、日期等
例子
number:12.30
四、kuberctl create 加载yaml文件生产deployment
使用kubectl run在设定复杂需求时,需要非常长的一条语句,比较容易出错,无法保存等缺点,所以在更多场景下都会使用yaml或者json文件
1、生成mysql-deployment.yaml文件:
这里已经自行下载mysql镜像,没有镜像的小伙伴可以自行下载
docker导入镜像
[root@node1 ~]# docker load -i docker.io-mysql-mysql-server.tar [root@node2 ~]# docker load -i docker.io-mysql-mysql-server.tar
vim mysql-deployment.yaml
这个文件可以自行创建
[root@master ~]# vim mysql-deployment.yaml kind: Deployment
#---使用Deploment创建一个pod,旧版本k8s可使用kind:ReplicationController
apiVersion: extensions/v1beta1
#---api版本
metadata:
name: mysql
#---deployment名称,全局唯一
spec:
replicas: 1
#---pod副本数量为1
template:
metadata:
labels:
#---符合目标的pod拥有此标签,默认和name值一样
name: mysql
#定义pod的名称时mysql
spec:
containers:
#pod中容器的定义部分
- name: mysql
#容器的名称时mysql
image: docker.io/mysql/mysql-server
#容器对应的docker image镜像
imagePullPolicy: IfNotPresent
#默认值为:imagePullPolicy:Always一直从外网,IfNotPresent如果本地又镜像优先本地镜像,加快启动速度
ports:
- containerPort:
protocol: TCP
#---暴露的端口和协议
env:
#---注入到容器的环境变量,这里设置root密码
- name: MYSQL_ROOT_PASSWORD
value: ""
2、xxx-deployment.yaml的文件结构
通过上面配置文件可知:
Deployment 的定义
pod的定义
容器的定义
3、创建mysql资源
kubectl create -f mysql-deployment.yaml
[root@master ~]# kubectl create -f mysql-deployment.yaml
deployment "mysql" created
[root@master ~]#
[root@master ~]#
[root@master ~]#
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-1971774246-2f905 1/1 Running 0 14s
nginx--f9rs1 / Running 1d
[root@master ~]#
另外可以多个yaml文件同时创建,只需要放在同一目录创建的时候使用目录即可
kubectl create -f yamls/
五、使用get参数查看pod/deployment详情
1、kubectl get pod #---查看pod状态等信息
2、kubectl get deployment #---查看deployment状态
3、kubectl get pod -o wide #--查看在哪台节点及此pod集群ip是多少
4、例子
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql--2f905 / Running 14s
nginx--f9rs1 / Running 1d
[root@master ~]# kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql 3m
nginx 1d
[root@master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
mysql--2f905 / Running 3m 10.255.36.2 node2
nginx--f9rs1 / Running 1d 10.255.41.2 node1 [root@master ~]# ping 10.255.36.2
PING 10.255.36.2 (10.255.36.2) () bytes of data.
bytes from 10.255.36.2: icmp_seq= ttl= time=1.81 ms
bytes from 10.255.36.2: icmp_seq= ttl= time=1.88 ms
^C
--- 10.255.36.2 ping statistics ---
packets transmitted, received, % packet loss, time 1001ms
rtt min/avg/max/mdev = 1.812/1.848/1.884/0.036 ms
[root@master ~]# ping 10.255.41.2
PING 10.255.41.2 (10.255.41.2) () bytes of data.
bytes from 10.255.41.2: icmp_seq= ttl= time=2.76 ms
bytes from 10.255.41.2: icmp_seq= ttl= time=0.899 ms
^C
--- 10.255.41.2 ping statistics ---
packets transmitted, received, % packet loss, time 1001ms
rtt min/avg/max/mdev = 0.899/1.832/2.765/0.933 ms
[root@master ~]#
注意:master可以ping通pod的ip地址,因为此地址是flannel定义的网段,master、node、pod、docker、container它们之间都是使用flannel分配的地址,flannel隧道把物理上分开的主机和容器,链接在一个局域网中
5、get命令能够确认的信息类别:
deployments(缩写deploy)
events(缩写 ev)
namespaces(缩写 ns)
nodes(缩写 no)
pods(缩写 po)
replicasets(缩写 rs)
replicationcontrollers(缩写 rc)
services(缩写 svc)
详细可以查看:Find more information at ⟨https://github.com/kubernetes/kubernetes⟩.
六、describe查看k8s中详细信息
这个命令上一章节也使用过,主要是排错的时候
1、kubectl describe pod pod 名字
pod详情
2、kubectl describe node node 名字
node详情
3、kubectl describe deployment deployment 名字
deployment详情
4、例子
[root@master ~]# kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql 16m
nginx 1d
[root@master ~]# kubectl describe deployment mysql
Name: mysql
Namespace: default
CreationTimestamp: Mon, Nov :: +
Labels: name=mysql
Selector: name=mysql
Replicas: updated | total | available | unavailable
StrategyType: RollingUpdate
MinReadySeconds:
RollingUpdateStrategy: max unavailable, max surge
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: mysql- (/ replicas created)
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
17m 17m {deployment-controller } Normal ScalingReplicaSet Scaled up replica set mysql- to
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql--2f905 / Running 17m
nginx--f9rs1 / Running 1d
[root@master ~]# kubectl describe pod mysql--2f905
Name: mysql--2f905
Namespace: default
Node: node2/192.168.216.54
Start Time: Wed, Nov :: +
Labels: name=mysql
pod-template-hash=
Status: Running
IP: 10.255.36.2
Controllers: ReplicaSet/mysql-
Containers:
mysql:
Container ID: docker://3f8834c600388a131ac91d54171e124454eace58f1d30a999c30ac42b1726767
Image: docker.io/mysql/mysql-server
Image ID: docker://sha256:a3ee341faefb76c6c4c6f2a4c37c513466f5aae891ca2f3cb70fd305b822f8de
Port: /TCP
State: Running
Started: Wed, Nov :: +
Ready: True
Restart Count:
Volume Mounts: <none>
Environment Variables:
MYSQL_ROOT_PASSWORD:
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
No volumes.
QoS Class: BestEffort
Tolerations: <none>
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
17m 17m {default-scheduler } Normal Scheduled Successfully assigned mysql--2f905 to node2
<invalid> <invalid> {kubelet node2} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
<invalid> <invalid> {kubelet node2} spec.containers{mysql} Normal Pulled Container image "docker.io/mysql/mysql-server" already present on machine
<invalid> <invalid> {kubelet node2} spec.containers{mysql} Normal Created Created container with docker id 3f8834c60038; Security:[seccomp=unconfined]
<invalid> <invalid> {kubelet node2} spec.containers{mysql} Normal Started Started container with docker id 3f8834c60038
[root@master ~]#
七、其他常用命令及参数
1、命令说明
logs:取得pod中容器的log信息
exec:在pod中执行一条命令
cp:从容器考出或向容器考入文件
attach:到一个运行中的容器上,实时查看容器消息
2、kubectl logs
使用此条命令取出pod中镜像的log,也可以用于故障排错的重要信息
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql--2f905 / Running 35m
nginx--f9rs1 / Running 1d
[root@master ~]# kubectl logs mysql--2f905
[Entrypoint] MySQL Docker Image 5.7.-1.1.
[Entrypoint] Initializing database
[Entrypoint] Database initialized
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
[Entrypoint] ignoring /docker-entrypoint-initdb.d/*
[Entrypoint] Server shut down
[Entrypoint] MySQL init process done. Ready for start up.
[Entrypoint] Starting MySQL 5.7.20-1.1.2
[root@master ~]#
3、kubectl exec
exec主要用于pod中执行命令,比如到mysql的镜像中执行 ls
kubectl exec mysql-1971774246-2f905 ls
[root@master ~]# kubectl exec mysql--2f905 ls
bin
boot
dev
docker-entrypoint-initdb.d
entrypoint.sh
etc
healthcheck.cnf
healthcheck.sh
home
lib
lib64
media
mnt
mysql-init-complete
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
直接登陆到pod里面的镜像
kubectl exec -it mysql-1971774246-2f905 bash
[root@master ~]# kubectl exec -it mysql--2f905 bash
bash-4.2# ls
bin docker-entrypoint-initdb.d healthcheck.cnf lib mnt proc sbin tmp
boot entrypoint.sh healthcheck.sh lib64 mysql-init-complete root srv usr
dev etc home media opt run sys var
bash-4.2#
4、kubectl cp
比如从容器中考出hosts文件到物理机/tmp下
kubectl cp mysql-1971774246-2f905:/etc/hosts /tmp/hosts
error: unexpected EOF
报错通过帮助命令查看,原来需要在pod中先安装tar库如下:
kubectl cp --help
[root@master tmp]# kubectl cp --help
Copy files and directories to and from containers. Examples:
# !!!Important Note!!!
# Requires that the 'tar' binary is present in your container
# image. If 'tar' is not present, 'kubectl cp' will fail. # Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod in the default namespace
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir # Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container> # Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace <some-namespace>
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar # Copy /tmp/foo from a remote pod to /tmp/bar locally
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar Options:
-c, --container='': Container name. If omitted, the first container in the pod will be chosen Usage:
kubectl cp <file-spec-src> <file-spec-dest> [options] Use "kubectl options" for a list of global command-line options (applies to all commands).
[root@master tmp]#
看到# Requires that the 'tar' binary is present in your container
进入pod安装tar
kubectl exec -it mysql-1971774246-2f905 bash
yum install tar -y
exit
执行cp命令
kubectl cp mysql-1971774246-2f905:/etc/hosts /tmp/hosts
[root@master ~]# kubectl cp mysql--2f905:/etc/hosts /tmp/hosts
error: unexpected EOF
[root@master ~]# kubectl exec -it mysql--2f905 bash
bash-4.2# yum install tar -y
Loaded plugins: ovl
ol7_UEKR4 | 2.5 kB :
ol7_latest | 2.7 kB :
(/): ol7_UEKR4/x86_64/updateinfo | kB :
(/): ol7_latest/x86_64/group | kB :
(/): ol7_UEKR4/x86_64/primary_db | 4.0 MB :
(/): ol7_latest/x86_64/updateinfo | 2.6 MB :
(/): ol7_latest/x86_64/primary_db | MB :
Resolving Dependencies
--> Running transaction check
---> Package tar.x86_64 :1.26-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
tar x86_64 :1.26-.el7 ol7_latest k Transaction Summary
================================================================================
Install Package Total download size: k
Installed size: 2.7 M
Downloading packages:
tar-1.26-.el7.x86_64.rpm | kB :
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : :tar-1.26-.el7.x86_64 /
Verifying : :tar-1.26-.el7.x86_64 / Installed:
tar.x86_64 :1.26-.el7 Complete!
bash-4.2# exit
exit
[root@master ~]# kubectl cp mysql--2f905:/etc/hosts /tmp/hosts
tar: Removing leading `/' from member names
[root@master ~]# kubectl cp mysql--2f905:/etc/hosts /tmp/hosts
tar: Removing leading `/' from member names
[root@master ~]# cd /tmp
[root@master tmp]# ll
total
-rw-r--r-- root root Nov : hosts
srwx------ mongod mongod Oct : mongodb-.sock
5、kubectl attach
主要用于取得pod中容器的实时信息,可以持续不断实时取出消息,类似tail -f /var/log/messages动态查看日志的作用
kubectl attach mysql-1971774246-2f905
[root@master tmp]# kubectl attach mysql--2f905
If you don't see a command prompt, try pressing enter.
[Entrypoint] MySQL Docker Image 5.7.-1.1.
[Entrypoint] Initializing database
[Entrypoint] Database initialized
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
[Entrypoint] ignoring /docker-entrypoint-initdb.d/*
[Entrypoint] Server shut down
[Entrypoint] MySQL init process done. Ready for start up.
[Entrypoint] Starting MySQL 5.7.20-1.1.2
参考:mk老师讲的kubernetes内容
转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/11764655.html
kuberneste系列文章:
Kubernetes3-kubectl管理Kubernetes容器平台-1的更多相关文章
- Kubernetes3-kubectl管理Kubernetes容器平台-2
一.kubectl管理集群中deployment资源与service服务 1.相关参数 kubectl edit 编辑服务器侧资源 kubectl replace 替换,使用 yaml 配置文件来替换 ...
- Kubernetes 容器平台实战
一.什么是Kubernetes? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署,自动扩缩容,维护等功能. 通过Kubernetes可以做到: 快速部署应用 快 ...
- 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理
目录 一.系统环境 二.前言 三.kubectl 3.1 kubectl语法 3.2 kubectl格式化输出 四.kubectl常用命令 五.查看kubernetes集群node节点和pod负载 5 ...
- kubectl管理kubernetes集群
[root@master ~]# kubectl get nodes 查看集群节点NAME STATUS AGEnode1 Ready 25mnode2 Re ...
- Kubernetes容器集群管理环境 - 完整部署(上篇)
Kubernetes(通常称为"K8S")是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可运营的平台.Kubernetes ...
- VMware Tanzu Kubernetes Grid 1.3 发布 - VMware 构建、签名和支持的开源 Kubernetes 容器编排平台的完整分发版
Tanzu Kubernetes 集群是由 VMware 构建.签名和支持的开源 Kubernetes 容器编排平台的完整分发版.可以通过使用 Tanzu Kubernetes Grid 服务在主管集 ...
- kubernetes云平台管理实战: 集群部署(一)
一.环境规划 1.架构拓扑图 2.主机规划 3.软件版本 [root@k8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.4.1 ...
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- Kubernetes容器集群管理环境 - 完整部署(中篇)
接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...
随机推荐
- 2019.10.15 CSP初赛知识点整理
初赛需要的知识点整理如下: (1)计算机的硬件组成与基本常识 (2)单位/进制的转换 (3)进制/逻辑运算相关 (4)概率与期望 (5)排序的各种性质 (6)简单数据结构的使用(栈.队列.链表等) ( ...
- 我的Java秋招面经大合集
阿里面经 阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推. 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer. 然后我也参加了 ...
- Redis之数据类型及命令
Redis(REmote DIctionary Server) 是一个遵守BSD协议.支持网络.可基于内存亦可持久化的日志型key-value存储系统. KEY 常用指令: 指令 注释 备注 exit ...
- Android仿美团地址选择
最近做了这个功能,分享一下,用的是百度地图api,和美团外卖的地址选择界面差不多,也就是可以搜索或者滑动地图展示地址列表给用户选择,看下效果图先. 文章重点 1.展示地图并定位到“我”的位置2.滑动地 ...
- 如何使用Externalizable接口自定义Java中的序列化
Java序列化过程的缺点 我们都知道如何使用Serializable接口序列化/反序列化一个对象,并且如何使用writeObject 和readObject方法自定义序列化过程. 但是这些自定义还不够 ...
- WPF编程,C#中对话框自动关闭的一种方法(转载)
本文原文链接:https://blog.csdn.net/qq_43307934/article/details/84933196———————————————— MessageBoxTimeout是 ...
- java架构之路-(Redis专题)Redis的主从、哨兵和集群
我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...
- scipy.misc.toimage()出现toimage报错
scipy.misc.toimage()出现toimage报错 自己被这个问题困扰了许久,其实最后发现其实toimage这个函数已经被取消了,或者说是没有这个函数了.有了新得函数与之代替,那就是Ima ...
- [Luogu2824] [HEOI2016/TJOI2016]排序
题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行 ...
- [BZOJ3813] 奇数国 - 线段树
3813: 奇数国 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 912 Solved: 508[Submit][Status][Discuss] ...