k8s 基本使用

Kubernetes 编排系统:https://www.cnblogs.com/gaoyuechen/p/8685771.html

k8s 集群中的 yaml 文件详解:https://blog.csdn.net/qq_28361541/article/details/106089574

什么是 k8s,k8s 有什么功能 ? :https://www.jianshu.com/p/707c8ebb8616

k8s :https://www.cnblogs.com/xy51/p/12744956.html

k8s 超详细总结:https://www.cnblogs.com/cheyunhua/p/14498014.html
k8s 总结:http://yaoguais.github.io/article/golang/k8sinterview.html

K8s 初识:http://www.weixuecn.cn/article/11410.html

《Kubernetes实战》

Kubernetes 是什么?

Kubernetes,又称为 k8s(首字母为 k、首字母与尾字母之间有 8 个字符、尾字母为 s,所以简称 k8s)或者简称为 "kube" ,是一种可自动实施 Linux 容器操作的开源平台。它可以帮助用户省去应用容器化过程的许多手动部署和扩展操作。也就是说,您可以将运行 Linux 容器的多组主机聚集在一起,由 Kubernetes 帮助您轻松高效地管理这些集群。而且,这些集群可跨公共云、私有云或混合云部署主机。因此,对于要求快速扩展的云原生应用而言(例如借助 Apache Kafka 进行的实时数据流处理),Kubernetes 是理想的托管平台。

Kubernetes 最初由 Google 的工程师开发和设计。Google 是最早研发 Linux 容器技术的企业之一(组建了cgroups),曾公开分享介绍 Google 如何将一切都运行于容器之中(这是 Google 云服务背后的技术)。Google 每周会启用超过 20 亿个容器——全都由内部平台 Borg 支撑。Borg 是 Kubernetes 的前身,多年来开发 Borg 的经验教训成了影响 Kubernetes 中许多技术的主要因素。

趣事:Kubernetes 徽标的七个轮辐代表着项目最初的名称"九之七项目"(Project Seven of Nine)。

Kubernetes相关术语

点击查看 Kubernetes (k8s)术语表

和其它技术一样,Kubernetes 也会采用一些专用的词汇,这可能会对初学者理解和掌握这项技术造成一定的障碍。为了帮助您了解 Kubernetes,我们在下面来解释一些常用术语。

  • 主机(Master): 用于控制 Kubernetes 节点的计算机。所有任务分配都来自于此。
  • 节点(Node):负责执行请求和所分配任务的计算机。由 Kubernetes 主机负责对节点进行控制。
  • 容器集(Pod):被部署在单个节点上的,且包含一个或多个容器的容器组。同一容器集中的所有容器共享同一个 IP 地址、IPC、主机名称及其它资源。容器集会将网络和存储从底层容器中抽象出来。这样,您就能更加轻松地在集群中移动容器。
  • 复制控制器(Replication controller):用于控制应在集群某处运行的完全相同的容器集副本数量。
  • 服务(Service):将工作内容与容器集分离。Kubernetes 服务代理会自动将服务请求分发到正确的容器集——无论这个容器集会移到集群中的哪个位置,甚至可以被替换掉。
  • Kubelet:运行在节点上的服务,可读取容器清单(container manifest),确保指定的容器启动并运行。
  • kubectl: Kubernetes 的命令行配置工具。

k8s基本原理

https://juejin.cn/post/6844903902869995534

  • k8s demo 部署示例
  • k8s 基本架构和原理
  • k8s 资源对象
  • k8s 网络模型
  • 总结

学习 Kubernetes 基础知识

From:https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/

介绍了 Kubernetes 集群编排系统的基础知识。每个模块包含关于 Kubernetes 主要特性和概念的一些背景信息,并包括一个在线互动教程。这些互动教程让您可以自己管理一个简单的集群及其容器化应用程序。

使用互动教程,您可以学习:

  • 在集群上部署容器化应用程序
  • 弹性部署
  • 使用新的软件版本,更新容器化应用程序
  • 调试容器化应用程序

  • 1. 创建一个 Kubernetes 集群
  • 2. 部署应用程序
  • 3. 应用程序探索
  • 4. 应用外部可见
  • 5. 应用可扩展
  • 6. 应用更新

k8s 基本使用(上)

From:https://www.jianshu.com/p/8d60ce1587e1

想提前了解一下 k8s 相关的知识的话,可以通过以下链接进行学习:

  • 10分钟看懂 Docker 和 K8S:https://zhuanlan.zhihu.com/p/53260098
  • Kubernetes中文社区 --- 从零开始 k8s:https://www.kubernetes.org.cn/doc-11
  • k8s官网 - 中文:https://kubernetes.io/zh/
  • Kubernetes 中文文档:http://docs.kubernetes.org.cn/

结构模型

k8s 是经典的一对多模型,有一个主要的管理节点master和许多的工作节点slaver。当然,k8s 也可以配置多个管理节点,拥有两个以上的管理节点被称为 高可用。k8s 包括了许多的组件,每个组件都是单运行在一个docker容器中,然后通过自己规划的虚拟网络相互访问。你可以通过kubectl get pod -n kube-system查看所有节点上的组件容器。

在管理节点中会比工作节点运行更多的 k8s 组件,我们就是靠着这些多出来的组件来对工作节点发号施令。他们都叫什么这里就不详细提了。反正对于”基本使用“来说,这些名字并不重要。

理念

要想理解一个东西就要先明白它的内在理念。通俗点就是,k8s 做了什么?为了提供更加可靠的服务,就要增加服务器的数量,减少每个服务器的体量来平摊负载,而越来越多的虚拟机就会带来越来越高的运维成本。如何让少量的运维人员就可以管理数量众多的服务器及其上的服务呢?这就是 k8s 做的工作。

k8s 把数量众多的服务器重新抽象为一个统一的资源池,对于运维人员来说,他们面前没有服务器1、服务器2的概念,而是一个统一的资源池,增加新的服务器对运维人员来说,只是增加自资源池的可用量。不仅如此,k8s 把所有能用的东西都抽象成了资源的概念,从而提供了一套更统一,更简洁的管理方式。

接下来,我会把每个基本命令当做一节来进行介绍,并辅以介绍一些基本概念。本文介绍的命令涵盖了增删改查四方面,可参加下面表格,因为篇幅较长,我们将create及之后的不那么常用的命令放在下一篇文章 k8s 基本使用(下) 里讲:

命令名类型作用
get列出某个类型的下属资源
describe查看某个资源的详细信息
logs查看某个 pod 的日志
create新建资源
explain查看某个资源的配置项
delete删除某个资源
edit修改某个资源的配置项
apply应用某个资源的配置项

kubectl get 列出资源!

接下来进入正题,首先来了解一下 k8s 中最最最常用的命令kubectl get,要记住,k8s 把所有的东西都抽象成了资源,而kubectl get就是用来查看这些资源的。最常见的资源就是 pod 。

什么是 pod?

pod(豆荚)。 pod 的概念其实和docker中的容器非常相似。他是 k8s 中的最小工作单位。你可以把 pod 理解成一个一个的小机器人,而 k8s 抽象出来的大资源池就是他们的工厂。

poddocker 容器的关系?

pod 将一个或多个docker容器封装成一个统一的整体进行管理并对外提供服务。

不仅我们自己的服务是要包装成 pod 的,就连 k8s 自己也是运行在一堆 pod 上。接下来就让我们查看一下 k8s 的 pod :kubectl get pod -n kube-system

-n 参数指定了要查看哪个命名空间下的 pod 。 k8s 所有的 pod 都被放置在kube-system命名空间下。

什么是命名空间?

命名空间namespace,是 k8s 中”组“的概念,提供同一服务的 pod 就应该被放置同一命名空间下,而不是混杂在一起。k8s 可以用命名空间来做权限控制。如果不指定的话, pod 将被放置在默认的命名空间default下。

执行了kubectl get pod -n kube-system命令后,你就可以看到如下内容:

其中每一行就是一个资源,这里我们看到的资源是 pod 。你看到的 pod 数量可能和我的不一致,因为这个列表里包含了 k8s 在所有节点上运行的 pod ,你加入的节点越多,那么显示的 pod 也就越多。我们来一列一列的看:

  • NAME:第一列是 pod 的名字,k8s 可以为 pod 随机分配一个五位数的后缀。
  • READY:第二列是 pod 中已经就绪的 docker 容器的数量,上文中我们提到了,pod 封装了一个或多个 docker 容器。在这里,1/1的含义为就绪1个容器/共计1个容器
  • STATUS:第三列是 pod 的当前状态,下面是一些常见的状态:

状态名

含义
Running运行中
Error异常,无法提供服务
Pending准备中,暂时无法提供服务
Terminaling结束中,即将被移除
Unknown未知状态,多发生于节点宕机
PullImageBackOff镜像拉取失败
  • RESTART:k8s 可以自动重启 pod,这一行就是标记了 pod 一共重启了多少次。
  • AGE:pod 一共存在了多长时间。

kubectl get 可以列出 k8s 中所有资源

这里只介绍了如何用kubectl获取 pod 的列表。但是不要把getpod绑定在一起,pod 只是 k8s 中的一种服务,你不仅可以get pod,还可以get svc(查看服务)、get rs(查看副本控制器)、get deploy(查看部署)等等等等,虽然说kubectl get pod是最常用的一个,但是如果想查看某个资源而又不知道命令是什么,kbuectl get <资源名>就对了。

想看更多的信息,可以指定-o wide参数,如下:kubectl get pod -n kube-system -o wide

加上这个参数之后就可以看到资源的所在ip和所在节点node了。

记得加上 -n

-n可以说是kubectl get命令使用最频繁的参数了,在正式使用中,我们永远不会把资源发布在默认命名空间。所以,永远不要忘记在get命令后面加上-n

小结

kubectl get命令可以列出 k8s 中的资源,而kubectl get pod是非常常用的查看 pod 的命令。而-n参数则可以指定 pod 所在的命名空间。

kubectl describe 查看详情!

kubectl describe命令可以用来查看某一资源的具体信息,他同样可以查看所有资源的详情,不过最常用的还是查看 pod 的详情。他也同样可以使用-n参数指定资源所在的命名空间。

举个例子,我们可以用下面命令来查看刚才 pod 列表中的某个 pod,注意不要忘记把 pod 名称修改成自己的:kubectl describe pod kube-flannel-ds-amd64-2d6tb -n kube-system

然后你就可以看到很多的信息,咱们分开说,首先是基本属性,你可以在详细信息的开头找到它:

基本属性

# 实例名称
Name:           kube-flannel-ds-amd64-2d6tb
# 所处命名空间
Namespace:      kube-system
# 所在节点
Node:           worker2/192.168.56.22
# 启动时间
Start Time:     Wed, 03 Jul 2019 09:31:50 +0000
# 标签
Labels:         app=flannelcontroller-revision-hash=bfc6b6dd4pod-template-generation=2tier=node
# 注解
Annotations:    <none>
# 当前状态
Status:         Running
# 所在节点 IP
IP:             192.168.56.22
# 由那种资源生成 / 控制
Controlled By:  DaemonSet/kube-flannel-ds-amd64

其中几个比较常用的,例如NodelabelsControlled By。通过Node你可以快速定位到 pod 所处的机器,从而检查该机器是否出现问题或宕机等。通过labels你可以检索到该 pod 的大致用途及定位。而通过Controlled By,你可以知道该 pod 是由那种 k8s 资源创建的,然后就可以使用kubectl get <资源名>来继续查找问题。例如上文DaemonSet/kube-flannel-ds-amd64,就可以通过kubectl get DaemonSet -n kube-system来获取上一节资源的信息。

内部镜像信息

在中间部分你可以找到像下面一样的Containers段落。该段落详细的描述了 pod 中每个 docker 容器的信息,常用的比如Image字段,当 pod 出现 ImagePullBackOff错误的时候就可以查看该字段确认拉取的什么镜像。其他的字段名都很通俗,直接翻译即可。

Containers:kube-flannel:Container ID:  docker://25d2c4896847bbf53735c57a60c5b3146e2b3a0f86811074bcd28a8291213c18Image:         quay.io/coreos/flannel:v0.11.0-amd64Image ID:      docker://sha256:ff281650a721f46bbe2169292c91031c66411554739c88c861ba78475c1df894Port:          <none>Host Port:     <none>Command:/opt/bin/flanneldArgs:--ip-masq--kube-subnet-mgr--iface=enp0s8State:          RunningStarted:      Wed, 03 Jul 2019 09:31:53 +0000Ready:          TrueRestart Count:  0Limits:cpu:     100mmemory:  50MiRequests:cpu:     100mmemory:  50MiEnvironment:POD_NAME:       kube-flannel-ds-amd64-2d6tb (v1:metadata.name)POD_NAMESPACE:  kube-system (v1:metadata.namespace)Mounts:/etc/kube-flannel/ from flannel-cfg (rw)/run from run (rw)/var/run/secrets/kubernetes.io/serviceaccount from flannel-token-fsqdv (ro)

事件

describe查看详情的时候,最常用的信息获取处就是这个Event段落了,你可以在介绍内容的末尾找到它,如下:

Events:          <none>

是的,如果你看到上面这样,没有任何Events的话,就说明该 pod 一切正常。当 pod 的状态不是Running时,这里一定会有或多或少的问题,长得像下面一样,然后你就可以通过其中的信息分析 pod 出现问题的详细原因了:

Events:Type     Reason                  Age                 From              Message----     ------                  ----                ----              -------Normal   Killing                 29m                 kubelet, worker1  Stopping container kube-flannelWarning  FailedCreatePodSandBox  27m (x12 over 29m)  kubelet, worker1  Failed create pod sandbox: rpc error: code = Unknown desc = failed to create a sandbox for pod "kube-flannel-ds-amd64-9trbq": Error response from daemon: cgroup-parent for systemd cgroup should be a valid slice named as "xxx.slice"Normal   SandboxChanged          19m (x48 over 29m)  kubelet, worker1  Pod sandbox changed, it will be killed and re-created.Normal   Pulling                 42s                 kubelet, worker1  Pulling image "quay.io/coreos/flannel:v0.11.0-amd64"

小结

kubectl describe <资源名> <实例名>可以查看一个资源的详细信息,最常用的还是比如kubectl describe pod <pod名> -n <命名空间>来获取一个 pod 的基本信息。如果出现问题的话,可以在获取到的信息的末尾看到Event段落,其中记录着导致 pod 故障的原因。

kubectl logs 查看日志!

如果你想查看一个 pod 的具体日志,就可以通过kubectl logs <pod名>来查看。注意,这个只能查看 pod 的日志。通过添加-f参数可以持续查看日志。例如,查看kube-system命名空间中某个flannel pod 的日志,注意修改 pod 名称:

kubectl logs -f -n kube-system kube-flannel-ds-amd64-2d6tb

然后就可以看到如下输出:

E0706 06:55:15.848891       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:16.948058       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:17.949165       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:18.954108       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:19.955267       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:21.046592       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:22.048285       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:23.147040       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:24.148350       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:25.247352       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:26.248831       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:27.347224       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:28.348182       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
E0706 06:55:29.350578       1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:310: Failed to list *v1.Node: Get https://10.96.0.1:443/api/v1/nodes?resourceVersion=0: dial tcp 10.96.0.1:443: connect: connection refused
...

如果你发现某个 pod 的服务有问题,但是状态还是显示Running,就可以使用kubectl logs来查看其详细日志。

总结

在本篇文章里,我们了解了 k8s 的宗旨和一些基本概念,并知道了最为常用的getdescibelogs命令,知道了这三条命令之后就几乎可以从 k8s 中获取所有常用信息了。接下来的 k8s 基本使用(下)里,我们会更深一步,来了解 k8s 中如何创建、修改及删除资源。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全球芯片行业现状分析:大家都在依赖美国 未来如何破局?

来源&#xff1a;网易智能翻译&#xff1a;乐邦香港媒体《南华早报》近日发文称&#xff0c;中国依赖于美国的核心技术已有一定的时日&#xff0c;但全世界都是如此&#xff0c;美国在半导体制造领域无可撼动的领先优势&#xff0c;是50多年的研发成果。随着中兴事件进入下一个…

AI企业下一个使命:让生物特征数据使用走向阳光透明

来源&#xff1a;亿欧网摘要&#xff1a;时隔一年&#xff0c;生物特征识别技术不断被完善&#xff0c;公众的生物特征数据仍然每天被传感器收集汇总&#xff0c;但是对于生物特征数据的收集、储存、使用和流通仍然是半遮半掩的灰色区域&#xff0c;各方好像都等着导火索的出现…

命令行 浏览器

使用命令行浏览器在 Linux 终端上网浏览 我猜你阅读这篇文章可能是用 Firefox 或基于 Chrome 的浏览器&#xff08;如 Brave&#xff09;&#xff0c;或者&#xff0c;也可能是 Chrome 浏览器或 Chromium。 换句话说&#xff0c;你正在利用基于 GUI 的方式浏览网页。然而&…

重磅来袭,机器人四大家族财务报表大揭秘

来源&#xff1a;华尔街见闻摘要&#xff1a;四大家族实力强劲&#xff0c;在机器人技术与市场占有率上遥遥领先。在2015年之前&#xff0c;四大家族在全球的市占率在50%以上&#xff0c;而随着全球许多细分领域机器人厂商的崛起以及《中国制造2025》推动下国内厂商的发展&…

Python 定时任务框架 apscheduler

github 地址&#xff1a;https://github.com/agronholm/apscheduler apscheduler 基本概念介绍 说到定时任务&#xff0c;会想起 linux 自带的 crontab &#xff0c;windows 自带的任务计划&#xff0c;都可以实现守时任务。操作系统基本都会提供定时任务的实现&#xff0c;但是…

一文看懂人工智能产业链,未来10年2000亿美元市场

来源&#xff1a;传感器技术摘要&#xff1a;据腾讯研究院统计&#xff0c;截至2017年6月&#xff0c;全球人工智能初创企业共计2617家。美国占据1078家居首&#xff0c;中国以592家企业排名第二&#xff0c;其后分别是英国&#xff0c;以色列&#xff0c;加拿大等国家。根据艾…

如何跟机器人“抢”工作?专家:新的分工将形成

来源&#xff1a;经济日报摘要&#xff1a;随着人工智能技术的深度发展和机器人的广泛应用&#xff0c;人们会从许多传统生产活动中解放出来&#xff0c;有了更多闲暇时间&#xff0c;更强大的支持手段&#xff0c;让生活更有趣和丰富多彩。创新、创意会成为生活和工作中的必需…

互联网让我们变笨了吗:过去10年关于大脑的11个有趣发现

来源&#xff1a;资本实验室摘要&#xff1a;人类大脑&#xff0c;长期以来被认为科学和宇宙中最复杂的事物之一。鉴于其复杂性&#xff0c;受制于技术限制&#xff0c;过去科学家很难解开其内部运作的秘密&#xff0c;但目前的研究成果表明我们离秘密又近了一些。聚焦前沿科技…

美研究人员公布“盲动”机器人技术细节

来源&#xff1a;新华网摘要&#xff1a;&#xff17;月&#xff17;日美国麻省理工学院近日发布公报称&#xff0c;该校研究人员最新公布了一种“盲动”机器人的技术细节。这种机器人不需要借助视觉系统&#xff0c;可在崎岖地形中穿行跳跃&#xff0c;有望在危险工作环境中得…

AutoJs 4.1.1 实战教程

Auto.js 中文文档&#xff1a;https://hyb1996.github.io/AutoJs-Docs/#/?id综述 pro 版本支持 Node.js AutoJs Pro 7.0.4-1 实战教程---史上最全快手、抖音极速版 &#xff1a;https://blog.csdn.net/zy0412326/article/details/107180887/&#xff1a;https://blog.csdn.n…

人工智能军备竞赛:一文尽览全球主要国家AI战略

来源&#xff1a;网络大数据摘要&#xff1a;人工智能的迅速发展将深刻改变人类社会和世界的面貌&#xff0c;为了抓住 AI 发展的战略机遇&#xff0c;越来越多的国家和组织已争相开始制定国家层面的发展规划。人工智能的迅速发展将深刻改变人类社会和世界的面貌&#xff0c;为…

flex和js进行参数传递

来着&#xff1a;http://www.cnblogs.com/Cnol/archive/2009/09/20/1570365.html 方法一&#xff1a;flex接收网页传值&#xff01;~ 1<?xml version"1.0" encoding"utf-8"?> 2<mx:Application xmlns:mx"http://www.adobe.com/2006/mxml&q…

师法自然,仿生技术是如何改变世界的?

来源&#xff1a;36Kr摘要&#xff1a;“向自然学习”&#xff0c;这并非是句空话。本文介绍了科学家如何借鉴大自然&#xff0c;在材料科学&#xff0c;信息技术等领域实现创新。希望能为您带来启发。当今世界最伟大的创新者&#xff0c;非大自然莫属。大自然经过45亿年的演变…

Auto.JS 开发

From&#xff1a;https://blog.csdn.net/a6892255/article/details/107302369 autojs 代码大全(实战演练)&#xff1a;https://blog.csdn.net/qq_30931547/article/details/106459765 &#xff1a;https://github.com/snailuncle/autojsCommonFunctions/blob/master/autojsCo…

【研究】大脑如何在“知道”与“无知”之间做出决定

来源&#xff1a;中国生物技术网摘要&#xff1a;我们时而会对“求知欲”如饥似渴&#xff0c;时而又会觉得“无知是福”而享受放空&#xff0c;那么问题来了&#xff0c;在特定的时间里&#xff0c;我们是如何在这两种心态之间进行选择的呢&#xff1f;英国伦敦大学学院(UCL)的…

js 逆向分析的神器 --- v_jstools

From&#xff1a;https://mp.weixin.qq.com/s/LisYhDKK_6ddF-19m1gvzg 1、下载和安装插件 这是一款浏览器插件&#xff0c;功能非常的nice 工具地址&#xff1a;https://github.com/cilame/v_jstools 浏览器打开上面的网站后&#xff0c;点击 code 按钮&#xff0c;选择 Down…

《中国人工智能开源软件发展白皮书(2018)》(附下载及解读PPT)

来源&#xff1a;走向智能论坛摘要&#xff1a;近日&#xff0c;中国人工智能开源软件发展联盟召集中国电子技术标准化研究院等企事业单位&#xff0c;编撰并正式发布《中国人工智能开源软件发展白皮书&#xff08;2018&#xff09;》&#xff0c;白皮书研究梳理人工智能开源软…

把 charles,Fiddler 证书安装到安卓根目录,解决安卓微信 7.0 版本以后安装证书也无法抓包问题,需要 root

From&#xff1a;https://testerhome.com/topics/21956 OpenSSL &#xff1a;https://slproweb.com/products/Win32OpenSSL.html 谷歌在安卓7.0修改了安全策略&#xff0c;安卓系统 大于 7.0 时&#xff0c; 应用不在信任用户安装的证书文件。用户添加的 CA 证书不能再用于安全…

科学家发现跨越生命的重要门槛或许没那么难

来源&#xff1a;中国科学报将团藻&#xff08;拥有数百个细胞的藻类&#xff09;与其相对简单的亲缘物种——单细胞衣藻&#xff08;左上&#xff09;和拥有4~16个细胞的盘藻&#xff08;右上&#xff09;作对比&#xff0c;揭示了向多细胞生命发展的步骤。数十亿年前&#xf…

windows 的 wsl 命令

​wsl 文档&#xff1a;https://docs.microsoft.com/zh-cn/windows/wsl/ From &#xff1a;https://blog.csdn.net/weixin_34101784/article/details/88729575 From &#xff1a;https://www.cnblogs.com/Flat-White/p/13501639.html 玩转 WLS&#xff1a;Windows 10 Ubuntu子系…