5分钟了解腾讯云CIS服务和Clear Container

2019 年 10 月 29 日

5分钟了解腾讯云CIS服务和Clear Container

本文摘自云 + 社区技术沙龙–《容器服务最佳部署与应用实践》嘉宾的分享,主要介绍了腾讯云 CIS 服务和 Clear Container,希望你们有所收获。

以下内容为嘉宾分享:

今天我讲的主要是关于腾讯云最近新上的一款产品 CIS。我自加入腾讯云以来就一直在负责 CIS 的开发工作。不多说,我们直接进入主题。

讲述主要从五方面开始。

第一,为什么会有 CIS 这个产品,CIS 是 Container Instance Service 的简称,它的由来是什么?

第二,CIS 产品简介,它到底能为我们带来一些什么样的便利?

第三,CIS 的技术方案。

第四,CIS 如何和现有的 TKE 集群进行对接,让我们更方便的使用 K8s。

第五,讲讲 Clear Container。

01 为什么会有 CIS?Docker 很好用,编排很复杂

CIS 的产生要从 Docker 说起。Docker 非常好用,我们可以通过 Dockerfile 或者 Docker build 命令来打包一个镜像,同时可以通过 Docker pull、Docker push 命令把它和容器的仓库进行对接,最终 docker 可以跨平台的运行。

但是大量 Docker 镜像管理起来非常复杂。K8s 的产生可以简化 Docker 的编排。当然,Docker 公司本来出的 Swarm 也是可以进行编排的,经过近几年的角逐,K8s 成为了各大云厂商选择的主流编排软件。

K8s 比较复杂,主要有两点。第一是安装起来比较复杂,你需要有若干台机器,并在这些机器上安装满足 k8s 网络需求的组件,。第二使用起来比较复杂,K8s 有一些特别复杂的概念和一系列的资源。入门起来还需要一定的时间。这是 CIS 产生的第一个原因,Docker 很好用,但是编排很复杂。

TKE 简化编排,节点扩展不灵活
我们有个 TKE(原来的 CCS)集群,能够帮助用户一键创建 K8s 集群。只要在腾讯云控制台上点一下创建集群,满足网络需求的 K8s 集群就创建出来了,同时依托于腾讯云的 TKE 还可以和腾讯云的 cbs,cfs,监控等对接,另外我们提供了 hpa-metrics-server、cluster autoscater 能够帮助用户进行 pod 和节点的扩缩容,也提供了 log-collector 组件方便用户使用日志服务。

这些确实给我们的 K8s 使用带来了便利,但是这些远远不够。我们设想一个场景,现在的集群节点突然不够用了,机器的 cpu 和内存被容器占满了,这个时候我们需要一个紧急的计算服务,怎么办?就算是现在去购买节点,等待部署完成,至少也需要几十秒才能开启我这边紧急的计算服务。

当然,我们可以使用 hpa 资源,对 pod 资源进行横向伸缩容,也可以用 K8s 开源的 CA,我们将它和腾讯云的弹性伸缩组进行了对接,当我们觉得节点不够用的时候,可以通过 CA 来扩容节点。

hpa 和 ca 伸缩容虽然可以解决一定的灵活问题,但是这还远远不够,离我们想快速通过一个简单 API 创建一个服务,这还是有一定距离的。

我们看一下这些简单的运算场景。例如批量运算场景、快速验证镜像场景、TKE 快速对接场景。这些都是 CIS 产生的原因。CIS 实际上就是 Serverless Kubenetes 服务,它也对标了很多其他公有云厂商,比如说微软的 ACI,也和 AWS 的 Fargate 有点相似。它的主要功能是把 K8s 集群交给腾讯来管理,将集群交给云厂商管理,用户只需要关注 Docker 使用本身。这就是我们的 CIS 产品。

02 CIS 是怎样一个产品?CIS 主要特性

CIS 是一种使用用户承载工作负载,不需要用户管理、维护服务器的全托管容器服务。用户可以通过 Cloud Dashboard、Cloud API、Kubernetes API 创建一个容器,而这个容器实际上是落地在腾讯运维的大 CIS 集群中,我们选用 k8s 对这些容器进行管理,大家只用关注自己想用的时候调用我们的 cis api 就行了,而集群的管理交给腾讯来进行。

我们的 CIS 具有便捷、安全、便宜、灵活这四个特性。

  • 便捷:主要是两个方面,第一是无须购买底层资源,直接通过简单的配置,就可以通过 Docker image 生成一个容器实例。第二是不需要手动删除一个容器实例,容器实例结束后,资源就会被释放。当然,您也可以配置这个容器实例长久存在。

  • 安全:因为这是腾讯自己维护的 CIS 的 K8s 集群,可能大家会考虑有很多用户在使用腾讯云的产品,就有多租户安全的问题。这里请大家放心,是绝对安全的,我们基于 VM 级别的虚拟化隔离。而且 CIS 实例是具有 VPC 网络属性,也就是说你可以在 VPC 网络中配置一些安全组以及 ACL 策略进行访问控制。

  • 便宜:从 Docker 来说,本来是基于 namespace 和 cgroup 进行隔离,也就是说它本来就是非常灵活的,你的 CPU 和内存限制可以以毫核和兆为单位。我们购买的 cis 实例 CPU 和内存量可以选择 0.5 核、0.5G,。第二,我们的计费是根据消耗资源进行秒级计费的。

  • 灵活:它可以支持购买超强资源,一个实例里面也可以有多个容器,就是一个 pod 里面可以跑多个容器。

CIS 产品应用场景介绍
CIS 的主要应用场景有两个,一可以用于批量计算的场景,因为它支持秒级的批量解冻,同时逻辑结束就会自动释放,如果你有一些突然来的大批量计算业务,可以使用 CIS,能够方便大家的计算作业。

二是可以有一些镜像的快速验证产品。比如说现在有一个镜像,想快速验证这个镜像是否 OK,你就直接起一个 CIS 运行,然后进行快速的验证。

03 CIS 技术方案 CIS 产品技术架构

使用 CIS,用户只需要关注容器实例本身,而腾讯工程师是运维 CIS 所属的落地 K8s 集群。也就是说,用户要启动一个 CIS 的时候,cis 后台会对应在 K8s 集群中创建一个 cvm,再在这个 cvm 上创建一区一的 pod,这个 pod 里面会有对应的容器,最终用户就可以访问这个容器了。虽然说 CIS 资源是在腾讯的 K8s 集群里面管理,但实际上它有用户的 VPC 属性,用户可以直接通过网络访问他所购买的 CIS 实例。当然,它还会和我们的 TencentHub 和 ccr 去进行对接。这是整体的技术架构。

CIS 网络方案
cis 的网络用到了 VPC 的弹性网卡的功能。弹性网卡是腾讯云 vpc 的一款产品,借助于 vpc 的路由能力,腾讯云 cvm 上的一张网卡可以属于另外一个 vpc 网络,我们将这张网卡塞到 cis 容器所属的网络 namespace,就能实现 cis 具有 vpc 属性。

CIS 日志收集
我们通常都是通过日志来判断实例的运行情况,但是 K8s pod 中的容器如果销毁,容器中的日志真实文件肯定也会消失,pod 所属的 CVM 可能会被其他人复用,因此我们需要把日志保存下来。我们这里采用的是时序型数据库储存 cis 日志。在 cis 集群中启动一个 filebeat 的 daemonset,通过 Filebeat 来收集到 CIS 日志,再吐到 es 集群中。用户查询日志的时候,就直接通过 ES 集群中的相关 API 进行查询。这是 CIS 日志收集过程中的技术实现。

CIS 与 Serverless Kubernetes 集群

Virtual Kubelet

讲到 CIS 技术实现的时候,大家可能也会好奇,好象没什么用吧,和我们本地搭个 Docker 没什么区别?实际上开源有一个特别好的东西叫 Virtual Kubelet ,通过 Virtual Kubelet 可以和现有的 K8s 集群进行对接。例如我们可以和原来的 CCS,现在的 TKE 搭配使用,让 CIS 能够扩展运行在一个假设有无限资源的 Virtual Kubelet 节点上。

这是怎么实现的呢?首先简介一下 Virtual Kubelet。Virtual Kubelet 是一个可以通过和现有 Kubernetes 集群节点对接,并把该集群的 pod 调度到“无限资源”的虚拟 virtual-kubelet 节点的开源项目。现在是微软 ACI 和亚马逊的 fargate 已经支持了该项目,我们将这个项目和 cis 的 api 进行对接,大家可以直接体验我们现在放在 TencentHub 上的 virtual-kubelet 镜像。

K8s 现有一些 node 节点。现在部署一个 Virtual Kubelet 节点,我们也可以部署一些 pod 或者 deployment,让它运行在 Virtual Kubelet 节点上。Virtual Kubelet 节点上 pod 的落地是通过 CIS 集群,也就是说它会有一个 CIS 的 API 过来,最终创建的一个 pod 是运行在 CIS 集群上,同时因为这个 pod 上有一个属于用户 k8s 集群的弹性网卡,用户所拥有的 k8s 集群得到了扩展。

具体是怎么做的呢?我们可以看一下步骤。首先,我们可以在 CCS 节点上部署一个 Virtual Kubelet pod,它会注册一个叫 virtual-kubelet 的 node,virtual-kubelet 和 Kubelet 的功能类似,Kubelet 最终的落地创建 pod,是通过 DockerD 把 pod 的容器创建出来,virtual-kubelet 是通过 CIS 的云 API 把 CIS 的实例创建起来。第二步和第三步,是我们新建一个 Deployment\Job 之类的东西,yaml 文件定义它管理的 pod 要运行在 virtual-kubelet 节点,资源创建后,K8s 的 Master 调度器开始工作,将 pod 调度到 virtual-kubelet 节点上。

当然,我们最终可以看到是这样的图, virtual-kubelet 可以无限放大,实际上运行个很多 CIS 资源,因为它实际上不在用 CPU 内存,真正的 CPU 在用的是 CIS 集群本身。如果 Deployment 删掉,对应的这些实例也会被删掉。也就是说,通过 virtual-kubelet 这个中间件,你就可以实现 CIS 和 TKE 的对接,这对很多用户来说还是很方便的。

这是现在 CIS 的一些基本功能。总结一下,CIS 是用户只用关注 Docker 本身的一种容器服务,它所落地的 K8s 是我们腾讯自己在维护的,这样做的好处是,用户可以不关注 K8s 的运维,同时也可以通过这些 API,能够快速的对接现有的 K8s 集群,实现快速对接的功能。

04 Clear Container 什么是 Docker?什么是 K8s?

我们先回顾一下什么是 Docker,什么是 K8s。K8s 是业界主流的 paas 平台,用户可以通过 kubectl 创建一些资源,这些资源的最主流落地是通过 DockerD 把 pod 的 runtime(容器)创建出来。Docker 是一个轻量级的虚拟化项目,同时 Docker 是 K8s 的 pod 的 runtime。当然,K8s 还支持例如 gvisor 等其他 runtime。

CIS 的整体架构

CIS 的架构是每个容器实例是运行在一个 cvm 节点上面的。这样做带来一个问题,实际上用户只需要它的容器,但是我们为了能保证多租户之间的隔离,为了保证安全,我们实际上起了一个厚重的虚拟机。尽管我们有一个强大的 buffer 池在这里,创建的请求热启动也是在 30 秒之内,性能能够保证,但是对于腾讯自己来说,这个运维成本确实是挺多的,用户只需要容器,我们却提供了一个虚拟机。

有了这个问题,我们应该该怎么改进呢?如果把 Docker 替换成 Clear Containers 会怎样?

先介绍一下 Clear Containers,或者说现在的 kata Containers。左边图是 Docker 架构,Docker 是基于 linux namespace 和 cgroup 技术的 runtime,namespace 保障隔离,cgroup 控制 CPU 和内存资源。docker 在业界最大的安全诟病是共内核。相反,虚拟机的主流技术,KVM 结合硬件辅助虚拟化技术,将 x86 虚拟机 kernel 运行于 non-root ring 0 态,和 host 有一个很好的隔离。实际上这里的虚拟机,我们可以直接把它当作 kata 或者 clear Containers。不同的是 clear container 有一个很小的内核,基于中间件,再构造虚拟化后的 APP。

总结一下 Clear Containers 和 Docker 的区别,Clear Containers 不共内核,更安全。

用 Clear Containers 替换 Docker?

如果我们用 Clear Containers 替换 Docker,这时候会怎样呢?这时还是有一个 K8s 的集群,但是现在不是虚拟机,而是真实的物理机,实际上我们也有这一款黑石产品,真正的 Node 节点落地是在物理机上面。这是一个物理机的 Node 节点,Clear Containers 作为 Kubelet runtime,也就是说,这个 Clear Containers 代替了原来的 Docker 在给用户提供服务。这样做的好处有两点。

第一,相比于原来的虚拟机起动厚重的虚拟机,虚拟机上再起动 Docker 提供服务,现在直接在物理机上起动轻量的 Clear Containers 直接给用户提供服务,虚拟机层级变小,这样就比较节约资源。

第二,因为层级变小,也会提高性能。这么做当然是有很大好处的。但是有一个问题,Clear Containers 或者 kata Container 能够和现在原生的 Docker 进行对接的吗?答案是可以的。也就是说,你可以使用 Clear Container 这个底层基于 KVM 的虚拟化技术,也可以复用原来的 docker image。具体是怎么实现的,这是 Clear Containers 的细节。左边是原来的 Docker 细节,Docker 的分层有一个 Containerd,接下来是各个 shim,最后的实际落地是 runshim,它结合 namespace 隔离调用了 linux 的 clone 系统调用。现在相当于 runshim 变成了 cc-runtime,前面部分的 Docker 镜像都是相同的,但是最终的落地,cc-runtime 原来是基于 clone 系统调用去创一个 Docker 容器,现在我们用 cc-runtime 结合 qemu 去创一个虚拟机。这样做到底有什么好处呢?就是虚拟化更安全了。

它为什么可以复用 Docker 的生态,这一部分都不变呢?这就是得益于 Clear Containers 或者 kata Containers 组件的拆解。原来 Clear Containers 包含 cc-runtime、cc-shim、cc-proxy、cc-agent、miniOS。所谓 miniOS,虚拟机起来的时候需要一个最小内核和 rootfs。相比hyper.sh ,它是runV,但是它不能够兼容Docker 生态,Clear Container 只实现runtime,把原来的runshim 分成cc-runtime 和cc-agent,这样还会有vm 带来的额外通信机制。原来Docker 文件系统是通过virtio-blk/9pfs 机制挂在虚拟机里面,这样就可以实现复用Docker 生态,同时也能带来基于KVM 隔离虚拟化的安全。

第二个问题,大家比较关心的是kata Containers 或者Clear Container 的网络到底是怎么进行的。我们知道,Docker 的网络有一个VETH 设备,通过veth 设备联通docker0 网桥进入host 协议栈。但是虚拟机就不一样了,基于KVM 的虚拟机不支持veth 设备,往往是虚拟机里面有一个虚拟网络设备,host 上更多是一个tap 设备。如果我们要复用Docker 的网络生态,需要创建一个VETH 设备链接cc-bridge 网桥,再和host 上的tap 设备,网络流量就通过到host 的tap0—cc-bridge—eth0—veth0—Docker0,再进host 协议栈出去。

还有一个问题,Clear Containers 原来是每个容器都会起一个虚拟机,这样就会带来一个问题,pod 有多个容器的概念,也就是说一个pod 里面会有多个中期,如果每个pod 都要起一个虚拟机,一个pod 多容器,就有若干个虚拟机吗?答案是不一定的,因为Clear Containers 可以借助CRI-O 和K8s 进行对接。

原来Kubelet 是这样的,如果我们要创建pod,直接是Kubelet 和Docker 进行访问,然后把这个容器创出来。加了CRI-O 这个组件之后,Kubelet 作为client,有个CRI-O Server 在这里,CRI-O 会控制起一个runc,基于Docker 的pod 就起来了。当然,如果是Clound Containers 或者kata Containers,就要调用cc-runtime 创建clear container。同时你也可以根据自己的应用编排安全需要,控制pod 的容器是共虚拟机还是多个虚拟机。

本文转载自公众号云加社区(ID:QcloudCommunity)。

原文链接:

https://mp.weixin.qq.com/s/a18DDdV6Q2JozZKtwRHswQ

2019 年 10 月 29 日 18:12 167

评论

发布
暂无评论
  • 为什么我们需要 Pod?

    Pod,实际上是在扮演传统基础设施里“虚拟机”的角色;而容器,则是这个虚拟机里运行的用户程序。

    2018 年 9 月 21 日

  • Docker Swarm 与 Apache Mesos 的区别

    Docker Swarm 是目前 Docker 社区原生支持的集群工具,它通过扩展 Docker API 力图让用户像使用单机 Docker API 一样来驱动整个集群;而 Mesos 是 Apache 基金会下的集群资源管理工具,它通过抽象主机的 CPU、内存、存储等计算资源来搭建一套高效、容错、弹性的分布式系统。

  • 小白也能玩转 Kubernetes 你与大神只差这几步(二)

    因文章过长,故分为三篇展开呈现,本篇为第二篇。Service,CIS)是一种使用容器为用户承载工作负载,不需要用户管理、维护服务器的全托管容器服务。

  • 能把微信、QQ 数十亿用户成功迁移到云原生平台,我们得找腾讯的专家好好聊一聊

    K8s 在快速发展的过程中,其与 AI 技术的结合也成为热点。这两大技术不仅有着广阔的应用前景,而且已经有大批的企业开始加入到这两大技术的应用队伍之中。

  • 小白也能玩转 Kubernetes 你与大神只差这几步

    6月30日,腾讯云联合InfoQ举办的云+社区技术沙龙,以Kubernetes 上云一键部署、云上大规模计算平台构建、CIS底层技术实现、Tencent Hub技术架构与DevOps落地实践等五大主题内容,分享容器与k8s技术的部署优化与应用实践。本文整理了讲师演讲精彩内容。

  • KubeSphere:CNCF 容器新贵能否解决 K8s 的诸多问题?

    近日,KubeSphere容器平台高级版2.0正式发布并加入开源组织CNCF,这是否足以解决Kubernetes存在的诸多问题?

  • 微服务容器化运维:容器调度和服务编排

    今天我们要考虑的是,如何在集群中创建容器,也就是容器如何调度的问题;以及容器创建后如何运作才能对外提供服务,也就是服务如何编排的问题。

    2018 年 10 月 23 日

  • 数据中心的 Yarn on Docker 集群方案

    数据中心中的应用一般独立部署,为了保证环境隔离与方便管理,保证应用最大资源 数据中心中普遍存在如下问题: 1.主机资源利用率低 2.部署和扩展复杂 3.资源隔离无法动态调整 4.无法快速响应业务。

  • 腾讯万台规模的 Docker 应用实践

    Docker提供了一种在安全、可重复的环境中自动部署软件的方式,拉开了基于云计算平台发布产品方式的变革序幕。腾讯内部对Docker有着广泛的使用,其基于Yarn的代号为Gaia的调度平台可以同时兼容Docker和非Docker类型的应用,并提供高并发任务调度和资源管理,它具有高度可伸缩性和可靠性,能够支持MR等离线业务。为了剖析Docker on Gaia背后的实现细节,InfoQ专访了腾讯数据平台部高级工程师罗韩梅。

  • Kubernetes 一键部署利器:kubeadm

    在今天的这次分享中,我重点介绍了kubeadm这个部署工具的工作原理和使用方法。

    2018 年 9 月 14 日

  • 干货 | 腾讯游戏是如何使用 Docker 的?

    腾讯第一季度的财报显示,腾讯游戏的收入占腾讯总营收的59.4%,很显然,腾讯游戏已经是腾讯最赚钱的部门,当然,腾讯也是国内最大的游戏发行商。游戏行业相对于其他行业来说特点非常明显,一是需要同时运营多款游戏,二是很多游戏的生命周期都很短。不管是从数量还是周期来看,游戏行业特殊的业务都为技术团队提出了更高的要求。腾讯游戏从2014年下半年开始就在生产环境中使用Docker,并取得了不错的成果。目前《我叫MT2》等多款重量级游戏都跑在容器中,且整体运行良好。在8月28日的CNUTCon全球容器技术大会上,腾讯游戏的高级工程师尹烨将会介绍腾讯游戏业务使用Docker的进展及收益,并从内核、网络、存储、运营等方面深入探讨腾讯游戏在实践过程中遇到的问题及解决方案,最后还会复盘反思Docker对于游戏业务的价值。本文是会前InfoQ记者对尹烨的采访。

  • 小白也能玩转 Kubernetes 你与大神只差这几步(一)

    随着Kubernetes技术热度的不断提升,大容器时代的序幕已经开启。容器技术日新月异,在企业应用实践中得到了不断的发展,高效的运维、管理和部署都成为云服务的重头戏。

  • Docker 周报:Docker 收购 CI 服务商 Koality

    Docker收购持续集成服务商Koality、Deis v0.13发布,携手Ceph以提高可用性、Docker Client创建与命令执行、在Docker容器里面运行图形界面应用、Docker容器自动发现,更多Docker资讯与教程,请看本期Docker周报。

  • 云上容器服务:从 Docker 到 Kubernetes,迎接云原生浪潮

    从Docker到Kubernetes,容器生态不断地发展,云原生的技术浪潮已经袭来。

    2020 年 4 月 3 日

  • CNUTCon 全球容器技术大会精彩回顾

    8月29日,首届CNUTCon全球容器技术大会在北京新云南皇冠假日酒店落下帷幕,大会吸引了近千名对容器感兴趣的资深开发者、运维工程师和技术经理参加。本次大会共邀请了国内外20余位技术专家,设计了5个主题,19场演讲,3个workshop。本次大会以『剖析容器企业实践,关注容器生态圈开源项目』为主题,围绕容器应用和开源项目展开了深入探讨,其中来自华为、腾讯游戏、大众点评、阿里巴巴、京东、百度、VMware、谷歌、CoreOS、360、红帽等知名公司的技术专家从容器的应用场景、架构、生态、挑战等方面进行了分享。

  • Docker 周报:Google Cloud 推出 Container Engine

    DockerCon 2015将于6月22日在旧金山举行、容器化持续集成服务初创企业Shippable获800万美元融资、Pertino公司借力SDN专攻Docker网络问题、3亿Docker容器部署的挑战及应对方案、如何在Windows上使用Docker,更多Docker新闻以及教程,请阅读本期Docker周报。

  • 弯道超车:容器技术究竟为云计算带来了什么?

    这两年容器技术及其相关工具,平台异常火爆。在各大技术论坛或云计算峰会议题中,都会占很大比重,各主流云计算平台也无一例外地迅速提供了容器服务。从2014年或更早,就有专家预见到Docker/容器技术会是云计算的颠覆力量(disruptive force)。坦率地讲,云计算作为一种服务和应用的业务模式,很难讲会被颠覆,但容器技术的确是云计算的game changer,它改变了我们思考云计算的视角,是云计算的reinventor。

  • 答疑:在问题中解决问题,在思考中产生思考

    今天,我会对本专栏部分文章的思考题,进行一次集中地汇总和答疑,希望帮你更好地理解和掌握 Kubernetes 项目。

    2018 年 12 月 21 日

  • 华为云的 Kubernetes 实践之路

    华为与Kubernetes的渊源颇深,早在Kubernetes刚开源的时候就以社区创始成员及白金会员的身份加入其中。目前拥有1个Steering Committee席位和5个Maintainer席位。本文分享了华为云的Kubernetes实践之路。

  • 程序员练级攻略:容器化和自动化运维

    Docker和Kubernetes已经是分布式架构和自动化运维的必需品了,虽然玩法和传统运维不一样,但技术上并不复杂。

    2018 年 7 月 24 日

发现更多内容

永续合约系统开发app源码,合约交易所平台搭建

WX13823153201

永续合约系统开发

H5选图预览到上传最佳实践

阿里云金融线TAM SRE专家服务团队

android H5

第 0 次面试

escray

面经 大龄程序员 面试经验

Spring 5 中文解析数据存储篇-JDBC数据存储(下)

青年IT男

Spring5

融云技术分享:基于WebRTC的实时音视频首帧显示时间优化实践

JackJiang

即时通讯 实时音视频 实时通信

比曲婉婷云尽孝更可怕的是:2020年,低收入家庭仍然在被收割

成周

心理学 教育 培训 维权 曲婉婷

大学四年我是怎么写操作系统和计算机网络的?掏心掏肺的分享!

小林coding

程序员 计算机网络 操作系统 计算机基础 学习总结

一个草根的日常杂碎(9月27日)

刘新吾

随笔杂谈 生活记录 社会百态

Go编程(一) 怎么写Go代码

测试老树

go 编程 开发

Java源码系列1——ArrayList

超超不会飞

Java

图解 K8S 源码 - Deployment Controller 篇

郭旭东

Kubernetes Kubernetes源码

初学源码之——银行案例手写IOC和AOP

Java架构师迁哥

第二周-作业

咖啡

甲方日常 24

大橘子

工作 随笔杂谈 日常

不一样的面向对象(三)

书旅

php 面向对象 面向对象编程

2020行摄回忆录

穿过生命散发芬芳

摄影

java安全编码指南之:异常处理

程序那些事

java安全编码 java安全 java安全编码指南

架构1期第三周作业一

道长

架构师训练营第 1 期

架构1期第三周作业二

道长

架构师训练营第 1 期

国庆假期快来了,打开8天长假的正确方式是...

老胡爱分享

读书 书籍推荐 随笔杂谈

三年筑一“用”:长跑中的智能IP网络

脑极体

一个草根的日常杂碎(9月28日)

刘新吾

随笔杂谈 生活记录 社会百态

linux 文件权限控制

kcnf

linux 文件权限控制 acl

Go编程(二) 多线程简单斗地主

测试老树

go 编程 开发

中国Prime会员独享巅峰64小时超长跨境网购时间

爱极客侠

查看mac电脑的温度信息, 并且给mac电脑降温

lmymirror

macos Mac terminal

bug 回忆录(一)

志学Python

牛皮!应届生面试阿里Java岗,七轮过后定级P6,薪资44.8W

云流

计算机基础 Java 面试 编程开发 架构师技能

奈学:Java 和 JavaScript 是什么关系?

古月木易

Java JavaScript

区块链会替代大数据吗?

CECBC区块链专委会

区块链 大数据

PPT画成这样,述职答辩还能过吗?

小傅哥

Java 小傅哥 流程图 架构师 PPT

5分钟了解腾讯云CIS服务和Clear Container-InfoQ