【Kubernetes】k8s集群中kubectl的陈述式资源管理
目录
一.k8s集群资源管理方式分类
1.陈述式资源管理方式
2.声明式资源管理方式
二.陈述式资源管理方法
三.kubectl命令
四.项目生命周期
1.创建 kubectl create命令
2.发布 kubectl expose命令
3.更新 kubectl set
4.回滚 kubectl rollout
5.删除 kubectl delete
一.k8s集群资源管理方式分类
1.陈述式资源管理方式
- 增删查比较方便,但是改非常不方便
- 使用一条kubectl命令和参数选项来实现资源对象管理操作
2.声明式资源管理方式
- yaml文件管理
- 使用yaml配置文件里定义的配置,实现资源对象的管理操作
二.陈述式资源管理方法
- kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
- kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
- kubectl 的命令大全:kubectl --help
- k8s中文文档:http://docs.kubernetes.org.cn/683.html
- 对资源的增、删、查操作比较方便,但对改的操作就不容易了
三.kubectl命令
查看版本信息
kubectl version
查看资源对象简写
kubectl api-resources
查看集群信息
kubectl cluster-info
kubectl get cs
kubectl get nodes
配置kubectl自动补全
source <(kubectl completion bash)vim /etc/bashrc #可添加到该文件的末尾
bash切换环境即可
node节点查看日志
journalctl -u kubelet -f
kubectl get <resource> [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n 指定命令空间,-o 指定输出格式
resource可以是具体资源名称,如pod nginx-xxx;也可以是资源类型,如pod;或者all(仅展示几种核心资源,并不完整)
--all-namespaces 或 -A :表示显示所有命名空间,
--show-labels :显示所有标签
-l app :仅显示标签为app的资源
-l app=nginx :仅显示包含app标签,且值为nginx的资源wide:显示详细信息
kubectl get -n kube-flannel pods #查看命名空间kube-flannel下的所有pod资源
kubectl get -n kube-flannel pods kube-flannel-ds-c5zqz #-n指定具体命名空间查看指定的kube-flannel-ds-c5zqz资源kubectl get -n kube-flannel pods kube-flannel-ds-c5zqz -o wide #显示kube-flannel-ds-c5zqz资源的详细信息
kubectl get -n kube-system pods --show-labels # --show-labels 查看指定命名空间下资源的标签
kubectl get -n kube-system pods --show-labels -l k8s-app #通过-l筛选k8s-app 标签的资源
kubectl get -n kube-system pods --show-labels -l k8s-app=kube-dns #进一步筛选k8s-app标签值等于kube-dns的资源
kubectl get -n kubernetes-dashboard all #all选项会列出指定命名空间下pod、service、控制器资源
kubectl get -n kubernetes-dashboard pods
kubectl get -n kubernetes-dashboard pods,service
kubectl get -n kubernetes-dashboard pods,service,deploy
#想提示查看多个资源,可在资源中间以,分隔
kubectl get -n kubernetes-dashboard all #查看所有资源
查看 master 节点状态
kubectl get componentstatuses
kubectl get cs
查看命名空间
kubectl get namespace
kubectl get ns
命令空间的作用:用于允许不同 命名空间 的 相同类型 的资源 重名的
查看default命名空间的所有资源
kubectl get all [-n default]
创建命名空间
kubectl get nskubectl create namespace xy101
kubectl create deployment nginx1 --image=nginx -r 3 --port=80 -n xy101 #即可指定命名空间创建资源,不可在同一个命名空间中创建相同名称的同种资源
kubectl get -n xy101 all
查看某个资源的详细信息
kubectl describe -n xy101 deployments.apps nginx1 #deployments.apps资源的名称
查看命名空间xy101 中的pod 信息kubectl describe -n <命名空间> <资源类型> <资源名称> kubectl describe -n xy101 pod nginx1-794dd8cb7b-fcxnx
删除pod
kubectl delete -n <命名空间> <资源类型> <资源名称> kubectl delete -n xy101 pod nginx1-794dd8cb7b-bc6cv #此种方法创建的pod资源若直接删除pod,无法删除由于设置了副本数,删除一个会自动再创建一个
创建pod资源方法2(此种方法创建的pod是独立存在的,没有控制器管理)
kubectl run -n xy101 nginx2 --image=nginx --port=80 #此种方法创建的pod无控制器进行管理,可直接删除kubectl delete -n xy101 pod nginx2 #此种方法创建的pod可直接删除
kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录kubectl exec -n <命名空间> -it <Pod资源名称> [-c 容器名称] -- sh|bash|命令kubectl exec -it -n xy101 pod/nginx1-794dd8cb7b-cbdjd -- sh
exec -it -n xy101 pod/nginx1-794dd8cb7b-cbdjd -- ls -l #在不进入容器的前提下查看其中内容
当一个pod中存在多个容器,可使用-c指定登录的容器kubectl describe -n xy101 pod/nginx1-794dd8cb7b-cbdjd #查看资源下的容器
kubectl exec -it -n xy101 -c nginx pod/nginx1-794dd8cb7b-cbdjd -- sh #使用-c指定登录的容器
查看Pod中容器日志
kubectl logs -n <命名空间> <Pod资源名称> [-c 容器名称] [-f] [-p] #-p表示查看Pod容器重启前的日志kubectl logs -n xy101 nginx1-794dd8cb7b-cbdjd -c nginx
扩缩容
kubectl scale -n <命名空间> <Pod控制器资源类型> <资源名称> --replicas=副本数deployment|statefulsetkubectl scale -n xy101 deployment nginx1 --replicas=3
删除副本控制器
kubectl get -n xy101 all
kubectl delete -n xy101 deployments.apps nginx2
删除(重启)pod资源,由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起,若pod无法删除,总是处于terminate状态,则要强行删除pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅退出,0表示立即终止podkubectl delete -n xy101 pod nginx1-794dd8cb7b-lmjls --force --grace-period=0
kubectl get -n xy101 all
删除全部pod资源进行重建
kubectl delete -n xy101 pods --all
kubectl get -n xy101 all
删除命名空间
kubectl delete ns 网络空间
kubectl delete ns xy101
查看service关联的Pod端点
kubectl describe -n <命名空间> <资源类型> <资源名称>
kubectl describe -n xy101 svc svc-nginx1kubectl get -n xy101 endpoints <资源名称> #直接查看关联端点
#以上两种方法可以查看端点不多的情况,若端点比较多就无法详细查看到kubectl describe -n <命名空间> endpoints <资源名称>
kubectl describe -n xy101 endpoints svc-nginx1
如何修改标签选择器的值
#创建service
kubectl create -n <命名空间> service <svc资源类型> <资源名称> --tcp=<clusterIP的端口>:<容器端口>
kubectl create -n xy101 service nodeport svc-1 --tcp=8080:80
修改service标签选择器
kubectl set -n <命名空间> selector <资源类型> <资源名称> '标签key=value'kubectl set -n xy101 selector svc svc-1 'app=nginx1'
四.项目生命周期
项目的生命周期:创建-->发布-->更新-->回滚-->删除
1.创建 kubectl create命令
- 创建并运行一个或多个容器镜像
- 创建一个deployment 或job 来管理容器
kubectl create ns xy101 #创建命名空间
kubectl create -n xy101 deployment nginx1 --image=nginx --port=80 --replicas=3 #创建资源
2.发布 kubectl expose命令
- 将资源暴露为新的 Service
为deployment的nginx创建service,并通过Service的8080端口转发至容器的80端口上,Service的名称为
nginx-service,类型为NodePortkubectl expose deployment nginx --port=8080 --target-port=80 --name=nginx-service --type=NodePortkubectl create service nodeport nginx-service --tcp=8080:80
service 的 type 类型
- ClusterIP(默认类型):分配一个集群内部的虚拟 IP 地址,仅在集群内部可访问。例如Pod和Pod之间的通信,如果是Kubernetes集群外的请求访问是不行的。
- NodePort:宿主机上开启一个特定端口(默认范围 30000-32767),直接与Pod的端口相连,实现访问宿主机IP:端口能够直接访问到Pod。用途:允许外部访问,但通常用于开发或测试。
- LoadBalancer:使用外接负载均衡器完成到服务的负载分发,此模式需要使用云提供商的负载均衡器,将请求分发到所有的Node上,再结合kube-proxy实现流量接入:外部客户端 -> 云负载均衡器 -> Kubernetes 节点 -> kube-proxy -> Pod
- LoadBalancer和NodePort很相似,目的都是向外部暴露一个端口,区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部云环境支持的,外部服务发送到这个设备上的请求,会被设备负载均衡转发到K8S集群中
- externalName:将外部服务映射到集群内部,并以DNS的形式用于Pod中服务对外部服务访问
创建service方法1kubectl expose -n <命名空间> <Pod控制器资源类型> <资源名称> --name=<svc资源名称> --tpye=<svc类型> --port=<clusterIP的端口> --targetPort=<容器端口>kubectl expose -n xy101 deployment nginx1 --name=svc-nginx1 --port=8080 --target-port=80 --type=ClusterIP #创建类型为ClusterIP的service所有节点服务器即可通过访问http://clusterIP:port访问service
curl http://10.96.194.137:8080
kubectl expose -n xy101 deployment nginx1 --name=svc-nginx2 --port=8080 --target-port=80 --type=NodePort #创建service类型为NodePortkubectl get -n xy101 svcnetstat -lntp | grep :31373 #在每个节点都可监听到这个端口, K8S集群外部/内部用户都可以通过nodeIP:nodePort来访问service
3.更新 kubectl set
重新创建一个service做测试
kubectl create -n xy101 deployment myapp-test01 --image=soscscs/myapp:v1 --port=80 --replicas=2 #创建pod资源
kubectl expose -n xy101 deployment myapp-test01 --name=test02 --port=8080 --target-port=80 --type=NodePort #创建service,类型选择NodePort
外部服务器即可通过nodeip:nodeport访问关联的pod
kubectl set image -n <命名空间> <Pod控制器资源类型> <资源名称> <容器名=镜像名:标签>
kubectl set image -n xy101 deployment myapp-test01 myapp=soscscs/myapp:v2kubectl describe -n xy101 deployments.apps myapp-test01
4.回滚 kubectl rollout
kubectl rollout history -n <命名空间> <Pod控制器资源类型> <资源名称> kubectl rollout undo -n <命名空间> <Pod控制器资源类型> <资源名称> [--to-revision=N]kubectl rollout status -n <命名空间> <Pod控制器资源类型> <资源名称>kubectl rollout history -n xy101 deployment myapp-test01 #查看历史回滚记录
kubectl rollout undo -n xy101 deployment myapp-test01 #撤销上一次的 rollout
kubectl rollout undo -n xy101 deployment myapp-test01 --to-revision=5 #指定回滚版本
kubectl rollout status -n xy101 deployment myapp-test01 #查看回滚状态
5.删除 kubectl delete
kubectl delete -n xy101 deployments.apps myapp-test01 #删除控制器
kubectl delete -n xy101 service test02 #删除service
相关文章:
![](https://i-blog.csdnimg.cn/direct/4c5c4513a3ef41a98e1934c5a45f4f79.png)
【Kubernetes】k8s集群中kubectl的陈述式资源管理
目录 一.k8s集群资源管理方式分类 1.陈述式资源管理方式 2.声明式资源管理方式 二.陈述式资源管理方法 三.kubectl命令 四.项目生命周期 1.创建 kubectl create命令 2.发布 kubectl expose命令 3.更新 kubectl set 4.回滚 kubectl rollout 5.删除 k…...
![](https://www.ngui.cc/images/no-images.jpg)
串---顺序串实现
顺序串详解 本文档将详细介绍顺序串的基本概念、实现原理及其在 C 语言中的具体应用。通过本指南,读者将了解如何使用顺序串进行各种字符串操作。 1. 什么是顺序串? 顺序串是一种用于存储字符串的数据结构,它使用一组连续的内存空间来保存…...
![](https://i-blog.csdnimg.cn/direct/f4c07354a94548fd8bc8b8c2d3441b45.png)
吴恩达机器学习WEEK2
COURSE1 WEEK2 多维特征 在线性回归中,往往特征不止一个,而是具有多维特征 例如,在预测房价的例子中,我们知道更多的信息: x 1 x_1 x1:房屋的面积 x 2 x_2 x2:卧室的数目 x 3 x_3 x3&a…...
![](https://www.ngui.cc/images/no-images.jpg)
yield and generator in python
首先,假设大家都对于pytyhon的List comprehension的使用有了一定经验(它可以用于list,set,和dict哦) 不熟悉的参考介绍: Comprehending Python’s Comprehensions – dbader.org generator generator是哦…...
![](https://i-blog.csdnimg.cn/direct/fcb4fc72b71340cf901655ff247b2044.png)
spring原理(自学第六天)
Aware 接口及 InitializingBean 接口 今天将会学到Aware 接口及 InitializingBean 接口 我们可以先了解他们的作用: 1. Aware 接口用于注入一些与容器相关信息, 例如 a. BeanNameAware 注入 bean 的名字 b. BeanFactoryAware 注入…...
![](https://img-blog.csdnimg.cn/img_convert/505f9d2ec41a89837c6407c86d9d3703.jpeg)
案例分享—国外优秀ui设计作品赏析
国外UI设计创意迭出,融合多元文化元素,以极简风搭配动态交互,打造沉浸式体验,色彩运用大胆前卫,引领界面设计新风尚 同时注重用户体验的深度挖掘,通过个性化定制与智能算法结合,让界面不仅美观且…...
![](https://img-blog.csdnimg.cn/c2738cd555604571bfd75b435e83482e.png)
【C++】简约与清晰的编程艺术
C编程的艺术:简约与清晰的实践之道 一、基础之美:基本类型与数据结构的力量二、函数与库类的艺术三、简约与清晰的实践之道 在C这一既古老又充满活力的编程语言世界里,程序员们常常面临着一个重要的选择:是追求代码的极致抽象与封…...
![](https://i-blog.csdnimg.cn/direct/a409565373f6407aba0c38d45f5a1230.png)
java之WIFI信号模块
开发步骤分为以下几点: 1.在 AndroidManifest 中声明相关权限(网络和文件读写权限) 声明权限: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name"android.…...
![](https://www.ngui.cc/images/no-images.jpg)
Mybatis面试
Mybatis 面试 1、Mybatis 的执行流程是什么? 1、读取MyBatis配置文件:mybatis-config.xml 加载运行环境 和 映射文件 2、构造会话工厂 SqlSessionFactory (全局只有一个) 3、会话工厂创建SqlSession对象(项目与数据…...
![](https://www.ngui.cc/images/no-images.jpg)
Centos 8系统xfs文件系统类型进行扩容缩容 (LVM)
Centos 8系统xfs文件系统类型进行扩容缩容 (LVM),xfs分区类型是不支持正常缩容,只能强制缩容 1.磁盘情况:2.缩容home分区1.备份home数据:2.查找使用 /home 的进程:3.终止这些进程:4.卸载 /home …...
![](https://i-blog.csdnimg.cn/direct/70687b484309495bbade0ebce377d467.png#pic_center)
C语言基础知识之函数指针和指针函数
函数指针和指针函数 函数指针和指针函数指向函数的指针返回指针值的函数指针函数和函数指针的区别 问题1_1代码1_1结果1_1 函数指针和指针函数 指向函数的指针 用函数指针变量调用函数 可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个…...
![](https://i-blog.csdnimg.cn/direct/ee05febc7990477fb81f2236d6ac7ae7.png)
【Unity】web gl inputFied 中文输入,同时支持TextMeshInputFied,支持全屏
同时支持TextMeshInputFied,支持全屏。 使用github包【WebGLInput】:https://github.com/kou-yeung/WebGLInput 需要资源的在这里也可以下载 https://download.csdn.net/download/weixin_46472622/89600795 用于unity web gl 中文输入,只需…...
![](https://www.ngui.cc/images/no-images.jpg)
vue3+vite全局引入less变量和函数
需要在vite配置 plugins: [css: {preprocessorOptions: {less: {additionalData: import "./src/styles/variables.module.less"; import "./src/views/Visualization/component/ViewportCom/px2viewport.less";,javascriptEnabled: true}}}, ]多个文件按…...
![](https://i-blog.csdnimg.cn/direct/517b0ce0568849979be87c00a0286c3c.jpeg)
H81002S 1.7mm网络变压器:BMS汽车蓝牙接收器中的超薄共模电感科技
华强盛导读:在当今这个日新月异的汽车科技领域,每一处细节都蕴含着创新与突破。作为电动汽车心脏的电池管理系统(BMS),其高效稳定的运行不仅关乎续航与安全,更是智能化驾驶体验的基石。而在这背后ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
C语言.回调函数
回调函数 回调函数也是一个函数。与一般函数直接调用区别在于,使用回调函数的过程,是一个函数将另一个函数作为参数调用。而被用来调用的那个函数,就是回调函数。 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地…...
![](https://i-blog.csdnimg.cn/direct/3d0e93c022f643d3b2dd1b99d07c9749.gif#pic_center)
《从零开始:使用Python构建简单Web爬虫》
前言 随着互联网信息的爆炸性增长,如何高效地获取和处理这些数据变得越来越重要。Web爬虫作为一种自动化工具,可以帮助我们快速抓取所需的网页内容。本文将介绍如何使用Python编写一个简单的Web爬虫,并通过实例演示其基本用法。 准备工作 …...
![](https://i-blog.csdnimg.cn/direct/a792226f7ac0479ab50f5c49823fe316.png)
最新个人免签约支付系统源码|PHP源码 | 码支付系统 | ThinkPHP6框架 | 开源
源码介绍: 这个最新的个人专用免签约支付系统源码!是PHP源码写的哦,而且是用ThinkPHP6框架开发的,完全开源的码支付系统。 这个系统适合个人用户使用,作为收款的免签约解决方案。它还加入了监控端,可以拒…...
![](https://i-blog.csdnimg.cn/direct/160a864ab73e48499d4db80cd42ddc80.png)
The Llama 3 Herd of Models 第4部分后训练的全文
Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…...
![](https://i-blog.csdnimg.cn/direct/332e48a2107640af9280a990ae48b516.png)
MongoDB性能调优
文章目录 MongoDB性能调优MongoDB性能不佳原因影响MongoDB性能的因素MongoDB性能监控工具mongostatmongotopProfiler模块db.currentOp() MongoDB性能调优 MongoDB性能不佳原因 慢查询阻塞等待硬件资源不足 1,2通常是因为模型/索引设计不佳导致的 排查思路:按1-2…...
![](https://i-blog.csdnimg.cn/direct/68262f1d91a24e8680db0920d957d142.png)
【Qt开发】调试log日志QDebug重定向输出到textEdit等控件(qInstallMessageHandler回调函数)
【Qt开发】调试log日志QDebug重定向输出到textEdit等控件(qInstallMessageHandler回调函数) 文章目录 Log输出方式qInstallMessageHandler回调函数线程安全textEdit控件附录:C语言到C的入门知识点(主要适用于C语言精通到Qt的C开发…...
![](https://i-blog.csdnimg.cn/direct/420136a0b0604f239e1507957de5131a.png)
【JavaEE精炼宝库】 网络编程套接字——UDP业务逻辑 | TCP流套接字编程及业务逻辑实现
文章目录 一、UDP业务逻辑实现二、TCP流套接字编程2.1 API 介绍:2.1.1 ServerSocket:2.1.2 Socket: 2.2 Java流套接字通信模型:2.3 代码示例:2.3.1 TCP Echo Server:2.3.2 TCP Echo Client:2.3.…...
![](https://www.ngui.cc/images/no-images.jpg)
前端过渡动画
前端过渡动画 vue3 1、组件进入视口时向上移动且渐显 1、创建js文件addViewportEffect.js function slideDownEffect(element) {console.log("执行");element.style.transform translateY(0);element.style.opacity 1; }/*** 添加视口效果到指定的类名元素上。…...
![](https://www.ngui.cc/images/no-images.jpg)
actual combat 38 ——vue
vue-cli脚手架 创建命令:vue create 项目名称 eslint 如何关闭? vue.config.js文件中加 module.exports {lintOnSave: false }文件全代码: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpile…...
![](https://www.ngui.cc/images/no-images.jpg)
测试面试宝典(四十七)— 功能测试用例一般包含哪些内容
首先,明确测试用例的编号和名称,以便于识别和管理。 其次,详细描述测试的目标和背景,让其他人能够清楚了解该测试用例的目的和适用场景。 接着是测试的步骤,需要清晰、准确地列出每一个操作步骤,包括输入…...
![](https://www.ngui.cc/images/no-images.jpg)
rust_mac环境安装
在 macOS 上安装 Rust 很简单。你可以使用 Rust 提供的安装工具 rustup。下面是安装步骤: 打开终端。 运行以下命令以安装 rustup 和 Rust: curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh按照提示进行操作: 这个命令将下载并…...
![](https://i-blog.csdnimg.cn/direct/a37c10d695274ffeb4e88b1660a5197a.png)
【前端面试】七、算法-递归
常考算法 排序算法:快速排序、归并排序、堆排序等。 查找算法:二分查找、哈希表查找等。 动态规划:解决最优化问题,如斐波那契数列、最长公共子序列等。 图论算法:最短路径(Dijkstra、Floyd-Warshall&am…...
![](https://i-blog.csdnimg.cn/direct/bc35cfc83d334437bf76c6d35f6f4dd1.png)
CmsEasy逻辑漏洞--零元购
CmsEasy逻辑漏洞--零元购 选择购买MackBook 购买成功后会员中心发现多出8100快钱 然后就可以正常购买了...
![](https://i-blog.csdnimg.cn/direct/c7d941f5c85247dfac8ab38b13076514.png)
Linux 内核源码分析---I/O 体系结构与访问设备
I/O 体系结构 与外设的通信通常称之为输入输出,一般都缩写为I/O。 在实现外设的I/O时,内核必须处理3个可能出现的问题: (1)必须根据具体的设备类型和模型,使用各种方法对硬件寻址; (…...
![](https://img-blog.csdnimg.cn/img_convert/1158f126bef4cc6e09760476b11c8fcf.png)
在cPanelWHM中如何重置 MySQL 用户帐户密码
更改MySQL用户账户密码非常简单。服务器管理员可以在WHM中编辑任何MySQL用户的帐户。cPanel用户可以编辑其帐户管理的数据库的密码。 在WHM中更改MySQL用户帐户密码 打开WHM,在侧边菜单中的SQL服务下选择“Change MySQLUser Password”。Hostease的服务器产品提供稳…...
![](https://i-blog.csdnimg.cn/direct/0b379bbd79834ff39b3625d617844f8b.png)
软件测试基础1--功能测试
1、什么是软件测试? 软件是控制计算机硬件运行的工具。 软件测试:使用技术手段验证软件是否满足使用需求,为了发现软件功能和需求不相符合的地方,或者寻找实际输出和预期输出之间的差异。 软件测试的目的:减少软件缺陷…...
![](/images/no-images.jpg)
做后台网站/杭州seo教程
观察我们的项目,实体类有UserInfo和MessageInfo两个类。 在UserInfo类中有两个属性:Username和Password,显然,这两个属性都不应为空。在MessageInfo类中有Contents,PostTime和PostUsername三个属性。其中Contents不能…...
![](/images/no-images.jpg)
wordpress做ftp/百度一下 官方网
文章目录 概论对比HashMap 的初始容量默认11 的初始容量任意指定非负的容量对比HashMap 的 对null 值的支持HashTable key value 都不支持null升级HashTable 使其支持null 做value对比 HashTable 的继承关系DictionaryHashtable线程安全contains方法debug 源码 put 方法总结你觉…...
![](/images/no-images.jpg)
门户网站建设工作总结/seo需求
本文转载:https://www.linuxidc.com/Linux/2016-12/138302.htmXPath简介 XPath是W3C的一个标准。它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计。目前有XPath1.0和XPath2.0两个版本。其中Xpath1.0是1999年成为W3C标准,而XPath2.0标准…...
![](https://img2018.cnblogs.com/blog/1498309/201903/1498309-20190310101856446-2062960875.png)
搭建电商网站/网店网络营销与推广策划书
转载于:https://www.cnblogs.com/zq-dmhy/p/10504488.html...
![](https://images2017.cnblogs.com/blog/234895/201710/234895-20171014205232652-1470098463.png)
静态网页设计公司报价/保定百度首页优化
前言 开篇名义,这篇博客介绍一下Android下使用绑定服务进行时数据交互的几种方法。关于Android下Service的内容,前面两篇博客已经介绍了,不清楚的可以移步过去先看看:Android--Service之基础、Android--Service之提高。 在前面的博…...
![](/images/no-images.jpg)
wordpress页面都在右边/网络营销有哪些功能
Unity 基础 之 目录结构解析一,Unity的资源数据加载Resources的序列化Resource、StreamingAsset文件夹安装后的路径(Android,iOS)二,Unity的Android和IOS上相关的目录结构三,常用目录对应的Android…...