80-31 IO 模型-多路复用 select select 函数该函数准许进程指示内核等待多个事件中的任何一个发送,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒。函数原型如下: 123456789101112131415161718192021222324252627282930313233343536#include <sys/select.h>#include <sys/time.h>int select 2021-03-08 network #network
80-32 IO 模型-多路复用 poll 简介poll 的机制与 select 类似,与 select 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是 poll 没有最大文件描述符数量的限制。poll 和 select 同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。 poll 函数函数格式如下 2021-03-08 network #network
80-33 IO 模型-多路复用 epoll 背景epoll 是在 2.6 内核中提出的,是之前的 select 和 poll 的增强版本。相对于 select 和 poll 来说,epoll 更加灵活,没有描述符限制。epoll 使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的 copy 只需一次。 epoll 接口epoll 操作过程需要三个接口,分别如下: 1234567 2021-03-08 network #network
80-33 IO 模型-多路复用 epoll 2 原文链接:https://zhuanlan.zhihu.com/p/63179839 一、从网卡接收数据说起下图是一个典型的计算机结构图,计算机由CPU、存储器(内存)、网络接口等部件组成。了解epoll本质的第一步,要从硬件的角度看计算机怎样接收网络数据。 下图展示了网卡接收数据的过程。在①阶段,网卡收到网线传来的数据;经过②阶段的硬件电路的传输;最终将数据写入到内存中的某个地址上(③ 2021-03-08 network #network
A 记录与 CNAME 记录 解析域名分为两种: 将一个域名解析为一个IP地址,这个就是 A 记录 将一个域名解析为另外一个域名,这个就是 CNAME 记录 A 记录与 CNAME 记录A 记录和 CNAME 记录是 DNS 中两种常见的资源记录类型,它们在域名解析过程中具有不同的作用。 A 记录 (Address Record)。A 记录用于将域名解析为IPv4地址。例如,将域名 www.example.com 解析为 2021-03-08 network #network
CDN CDN(Content Delivery Network,内容分发网络)CDN 是一种网络架构,旨在提高用户对互联网上内容的访问速度和性能。CDN 通过在全球各地部署大量的服务器节点,将内容缓存到离用户更近的服务器上,从而减少内容传输的距离,提高访问速度和响应时间。 CDN的工作原理是:将内容(如网页、图片、视频等)缓存到离用户最近的服务器节点上,当用户请求访问这些内容时,CDN 会根据用户的地理 2021-03-08 network #network
Flask SQLAlchemy 使用 session.commit() 处理异常回滚 最为原始的try/except办法,多次插入数据就要写多次,很麻烦,使用python原生的contextlib.contextmanager简化代码! 123456789 try: user_db = User(email=self.email, nickname=self.nickname, password=self.password) db.session.add(us 2021-03-08 Python > Flask #Python #Flask
Flink 上传的包 先看一张图片 上传 jar 包两个重要的配置 web.tmpdir:上传 jar 包临时目录,重启后上传包就会被删除。。格式:java.io.tmpdir + “flink-web-” + UUID web.upload.dir: jar 包上传目录。flink 上传 jar 包逻辑:从配置文件中找 UPLOAD_DIR,若是为 null 就找 TMP_DIR 目录来看成 jar 上传的路径 2021-03-08 Flink #Flink
Flink 历史服务器 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 历史服务器运行 Flink job 的集群一旦停止,只能去 yarn 或本地磁盘上查看日志,不再可以查看作业挂掉之前的运行的 Web UI,很难清楚知道作业在挂的那一刻到底发 2021-03-08 Flink #Flink
Flink 快速上手 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 1、创建项目在准备好所有的开发环境之后,我们就可以开始开发自己的第一个 Flink 程序了。首先我们要做的,就是在 IDEA 中搭建一个 Flink 项目的骨架。我们使用 J 2021-03-08 Flink #Flink
Flink 报错之 Upload 一直停留在 saving 报错: flink new Job 时 一直在saving 如下图所示: 通常是由于 nginx 服务器造成的,查看 nginx 报错,我碰到过两种情况 报错 500:上传文件目录没有权限 解决方案:修改上传目录权限 报错 413(Request Entity Too Large):上传文件太大,超出了 Nginx 的默认值 解决方案:修改 Nginx 设置 client_ma 2021-03-08 Flink #Flink
Flink 程序开发步骤(Java语言) 开发流程Flink 的流处理 API(DataStream API)位于 org.apache.flink.streaming.api.scala 包(Scala语言)或 org.apache.flink.streaming.api 包(Java语言)中。本文以 java 为例。 我们如果要使用Flink进行计算开发,一个完整的开发步骤是怎样的呢? 什么叫有界数据流,什么叫无界数据流(何为流处理, 2021-03-08 Flink #Flink
Flink 简介 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 1、Flink是什么Flink 核心目标,是 “数据流上的有状态计算” (Stateful Computations over Data Streams)。 具体说明:Apa 2021-03-08 Flink #Flink
Flink 配置之日志配置 前言本文介绍的内存配置方法基于 Flink 1.10 Flink 应用程序容器创建并写入三种类型的日志文件:.out 文件、.log 文件和 .err 文件。仅限将 .err 文件压缩并从文件系统中删除,而将 .log 和 .out 日志文件保留在文件系统中。 每个独立的JobManager,TaskManager,HistoryServer和zookeeper守护重定向stdout和stderr 2021-03-08 Flink #Flink
Flink 集群搭建及作业提交初体验 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 1、集群角色 Flink 提供作业和执行任务,需要几个关键组件: Client(客户端):代码由客户端获取并做转换,之后提交给JobManager JobManager:就 2021-03-08 Flink #Flink
Flink 集群部署案例 1、下载 Flink 压缩包下载地址:http://flink.apache.org/downloads.html。 CDH 集群环境 hadoop2.6,Scala2.11,所以下载:flink-1.5.0-bin-hadoop26-scala_2.11.tgz 2、解压12[root@hadoop2 opt]# tar -zxf flink-1.5.0-bin-hadoop26-scala 2021-03-08 Flink #Flink
Flink 集群部署模式 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 1、部署模式在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。Flink 为各种场景提供了不同的部署模式,主要有以下三种:会话模式(Session Mode 2021-03-08 Flink #Flink
Git HEAD 虽然使用Git很多年,但是仍然对head没有清晰的认识。head属于隐藏于Git内部的东西,网上很多介绍head的文章也总是说不清道不明,所以记录一下。 1、Git HEAD 存放位置HEAD 其实是一个指针,内容是 .git/HEAD 文件里面的内容,它存储着当前分支的名字,我们可以打这个文件看一看: 1ref: refs/heads/master 由此,我们可以得知当前所处于 master 2021-03-08 Git #Git
Git 安装 Git 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具。 Git 官方文档:Git-Book Git 工作流:深入理解学习Git工作流 yum 安装1、执行安装 1yum install git -y 2、验证安装结果,查看安装的Git版本,验证是否安装成功; 1git --version 3、存在的问题 使用yum安装确 2021-03-08 Git #Git
Kafka 命令行命令大全 kafka 脚本123456789101112131415161718192021222324252627282930313233connect-distributed.shconnect-mirror-maker.shconnect-standalone.shkafka-acls.shkafka-broker-api-versions.shkafka-configs.shkafka-consol 2021-03-08 Kafka #Kafka