tonglin0325的个人主页

K8S学习笔记——容器类型

目前在Kubernetes 1.18 version中,已经支持4种不同类型的容器,分别为:标准容器(主容器)、Sidecar容器、Init 容器以及Ephemeral 容器

1、标准容器
标准容器是Kubernetes中最常见的容器类型,它们是Pod中的核心组件,用于运行应用程序或服务。标准容器使用Docker或containerd等容器运行时创建,并具有完整的操作系统隔离环境。这些容器包含了应用程序的运行时和代码,并且可以与宿主机的网络和存储系统进行交互。标准容器提供了运行应用程序所需的所有环境,并允许通过资源限制和策略来控制容器的行为。
2、Sidecar容器
Sidecar容器是一种特殊的容器,通常与主应用程序容器一起部署在同一Pod中。Sidecar容器用于提供额外的功能或扩展主应用程序容器的功能。例如,Sidecar容器可以用于提供日志收集、监控、网络代理或与外部服务的通信等功能。通过将Sidecar容器与主应用程序容器部署在同一Pod中,可以实现应用程序的可观察性、可扩展性和可靠性。
3、Init容器
Init容器是用于执行一次性任务的特殊容器,通常在Pod中的其他容器启动之前运行。这些任务可能包括设置环境变量、预加载数据或执行一次性的系统任务等。Init容器的运行顺序是在同一Pod中的所有其他容器之前,并且一旦完成它们的任务,它们就会退出。通过使用Init容器,可以在Pod初始化时执行必要的设置和配置任务。
4、Ephemeral容器
Ephemeral容器是一种临时性的容器,与标准容器的永久性相反。Ephemeral容器的生命周期非常短,通常只运行一次任务然后就退出。这种类型的容器非常适合执行一次性任务,如数据迁移、批处理作业或清理任务等。由于Ephemeral容器没有持久化的状态,因此它们不会对宿主机造成持久性的负担。但是,由于它们的短暂生命周期,它们不适合用于需要持续运行的应用程序或服务。

JavaScript学习笔记——HTTP请求

前端发起请求可以使用Ajax(使用XMLHttpRequest),fetch(基于Promise),Axios(基于Promise,内部使用 XMLHttpRequest 对象来实现发起和处理网络请求)等工具

可以使用浏览器的开发者工具来查看前端的请求是xhr还是fetch,比如访问google网站,我们可以在发起者这一栏查看是xhr还是fetch

还可以使用 -cause:fetch 对请求进行过滤

参考:前端开发常用的几种请求方式

1.Ajax

AJAX(Asynchronous JavaScript and XML) 是一种使用 XMLHttpRequest 对象进行异步通信的技术,可以在不刷新整个页面的情况下更新部分网页内容。

2.fetch

Fetch 是用于发起网络请求的现代 API,它提供了一种更简洁和强大的方式来处理网络请求。

Fetch API 基于 Promise,使用起来更加简洁和直观,支持链式调用和流式处理响应数据。

Fetch API 更加灵活,同时支持请求和响应对象的处理,但在某些方面仍有一些不足之处,比如不能原生支持请求的取消。

参考:jq/fetch/axios/vue-resource/fly 对比一下主流的http库

3.Axios

Axios 是一个流行的基于 Promise 的 HTTP 客户端,可以用于浏览器和 Node.js 环境。它使得在前端和后端与服务器进行 HTTP 数据交互变得更加简单和方便。

以下是 Axios 的一些主要特点和优点:

  • **Promise 支持**:Axios 是基于 Promise 的,允许你以一种更优雅和便捷的方式处理异步请求和响应。
  • **浏览器和 Node.js 兼容**:Axios 可以在浏览器和 Node.js 环境中运行,这使得它成为一个通用的 HTTP 客户端解决方案。
  • **易用性**:Axios 提供了简洁一致的API,使用起来相对容易理解和学习。
  • **拦截器支持**:可以通过拦截器在请求或响应被处理前对它们进行拦截、转换或进行其他操作。
  • **取消请求**:Axios 提供了取消请求的功能,可以中断正在进行的请求。
  • **客户端端与服务器端的转换**:Axios 自动将 JSON 数据进行转换,简化了数据交互的过程。
  • **错误处理**:Axios提供了灵活的错误处理机制,可以很容易地捕获和处理请求或响应中的错误。
  • 使用 Axios,可以发送各种类型的 HTTP 请求,如 GET、POST、PUT、DELETE 等,并且可以很容易地设置请求头、请求参数、认证信息等。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // 导入 Axios
    const axios = require('axios');

    // 发送 GET 请求
    axios.get('https://api.example.com/data')
    .then(response => {
    console.log(response.data);
    })
    .catch(error => {
    console.error(error);
    });

    // 发送 POST 请求
    axios.post('https://api.example.com/data', { name: 'John Doe' })
    .then(response => {
    console.log(response.data);
    })
    .catch(error => {
    console.error(error);
    });

    参考:硬核知识点——浏览器中的三类五种请求

    3.使用油猴脚本拦截前端请求

    以访问google.com网站为例,编写如下油猴脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    // ==UserScript==
    // @name New Userscript
    // @namespace http://tampermonkey.net/
    // @version 2024-03-28
    // @description try to take over the world!
    // @author You
    // @match https://*.google.com/*
    // @grant none
    // ==/UserScript==

    (function() {
    'use strict';

    // xhr
    const originOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) {

    originOpen.apply(this, arguments); // 调用原始的 open 方法
    console.log("xhr => " + method + " " + url);
    };

    // fetch
    const originalFetch = window.fetch;
    window.fetch = function(url, options) {

    console.log("fetch => " + url);
    return originalFetch.apply(this, arguments);
    };

    })();

    成功在控制台打印出了使用xhr和fetch API请求的url地址

    全文 >>

    广告系统——广告形式分类

    广告按形式进行分类,可以分成:

    1.激励广告(rewarded ad)

    主要使用场景是小游戏,工具类的应用,比如观看激励视频广告后获得复活机会,工具免费使用的次数等

    2.插屏广告(Interstitial ad)

    主要使用场景是在页面切换的时候,比如应用开屏广告,界面切换广告

    3.原生广告(native ad)

    主要使用场景是信息流。这种广告与周围的内容完全融合,使其看起来像是发布内容的一部分,提供更好的用户体验。原生广告可以出现在文章、新闻、应用程序或社交媒体中。

    4.横幅广告(banner ad)

    主要使用场景通常是应用顶部、底部、栏目或频道间隔,表现形式多为纯图片、纯文字或者图片+文字

    参考:常见广告形式与场景入门

    全文 >>

    CDH5.16 Cloudera Manager启用TLS

    在集群中启用了认证和鉴权之后,Cloudera Manager Server 将会在网络中和集群的节点传输敏感信息,比如keytab和密码。为了加密这些数据,所以必须在Cloudera Manager Server和所有集群节点之间配置使用TLS加密。

    TLS 加密还用于使用 HTTPS 保护与 Cloudera Manager 管理界面的客户端连接。

    在CDH启用了kerberos之后,在Cloudera Manager界面中会有安全警告要求至少添加一级TLS加密

    全文 >>