DDIA
数据系统基础 可靠、可扩展与可维护的应用系统 对于数据密集型应用,CPU的处理能力往往不是第一限制性因素,在于数据量、数据的复杂度及数据的快速多变性。数据密集型应用通常也是基于标准模块构建而成,每个模块负责单一的常用功能。例如,许多应用系统都包含以下模块:
数据库: 用以存储数据,这样之后应用可以再次访问 调整缓存:缓存那些复杂或操作代价昂贵的结果,以加快下一次访问。 索引:用户可以按安搜索数据并支持各种过滤。 流式处理:持续发送消息臻另一个进程,处理采用异步方式 批处理:定期处理大量的累积数据。 可靠性 当出现意外情况,如硬件、软件故障、人为失误等,系统应可以继续正常运转:虽然性能可能有所降低,但确保功能正确。对于软件,典型的可靠性期望包括:
csapp
计算机系统漫游 信息就是位+上下文 程序被其他程序翻译成不同的格式 hello程序的生命周期是从一个高级C语言开始的,因为这种形式能够被人读懂。然而,为了在系统上运行hello.c程序,每条C诗句都必须被其他程序转化为一系列的低级机器语言指令。然后这些指令按照一种称为可执行目标程序的格式打好包,并以二进制磁盘文件的形式存放起来。目标程序也称为可执行目标文件。
如何设计程序
如何设计程序 Base 基本程序设计步骤 六个基本的程序设计步骤
Awk入门
AWK语言 变量 NF: awk计算当前行的字段数量
NR: awk计算到目前为止,读取到的行的数量
$0: 整行内容
$1: 第一个字段
Docker笔记
入门 什么是Docker docker是一个容器技术。
Docker的优势 一致的运行环境, 更轻松的迁移。 对进程进行封装隔离,容器与容器之间互不影响,更高效的利用系统资源。 通过镜像复制多个环境一致的容器。 Docker与虚拟机的对比 Docker占用磁盘少 Docker的引擎比虚拟机系统占用CPU资源低 Docker启动速度快 Docker安装管理方便 Docker从第二次部署开始轻松简捷 Docker可以每个应用使用一个服务,服务隔离 Docker推荐使用Linux,不推荐使用Windows 安装及配置 下载安装 配置 启动Docker sudo systemctl enable docker sudo systemctl start docker 创建Docker用户组 sudo groupadd docker 将当前用户添加到docker组 sudo usermod -aG docker $USER 测试Docker是否安装正确 重启Docker sudo systemctl restart docker Docker核心概念 整体架构图 仓库 Repository 定义: 用来存储Docker中的镜像。 分类: 远程仓库 本地仓库: 当前自己机器中下载镜像存储位置。 镜像 Image 定义: 一个镜像代表一个软件安装包。 特点: 只读 容器 Container 定义: 基于某个镜像启动的实例,称之为一个服务。 特定: 可读可写 常用命令 引擎, 以及镜像相关的操作 docker info docker –help || docker 查看docker所有帮助命令 docker version docker 执行命令格式: docker [options] command 操作镜像images的相关命令 查看本地的镜像 docker images 下载新的镜像 docker pull dockerImageName:dockerVersion docker pull dockerImageName:@digest(摘要) 搜索镜像 docker search dockerImageName 删除镜像 docker image rm dockerImageName:dockerVersion docker image rm dockerImageId docker rmi … 容器相关 Container 运行容器 docker run dockerImageName:tag | 镜像ID 映射端口 docker run -p 宿主机端口:容器内服务端口 dockerImageName 后台运行 -d 给容器命名,唯一 –name containerName -it 导入容器 docker load -i dockerTag.tar 查看当前运行的容器 docker ps 查看所有的容器,包括已停止的 docker ps -a 返回正在运行的容器ID docker ps -q 重启,停止容器 docker start dockerContainerId | dockerName docker restart dockerContainerid | dockerName docker stop dockerCOntainerid | dockerName 删除容器 docker rm dockerContainerId | dockerName 强制删除, 包括正在运行的容器 docker rm -f dockerContainerid | dockerName 查看容器内运行日志 docker log dockerContainerid | dockerName 实时查看日志 -f 加入时间戳实时展示日志 -t 显示指定行数的日志 –tail Number 查看容器内的进程 docker top dockerContainerid | dockerName 与容器内部进行交互 docker exec -it dockerCOntainerid | dockerName Command [args] 宿主与容器的传输文件 从容器到操作系统 docker cp dockerContainerid | dockerName :/path/file ./file 从宿主到容器 docker cp 文件 | 目录 dockerContainerid | dockerName: 容器内目录 查看容器内部细节 docker inspect dockerContainerid | dockerName 数据卷 Volume 使用: 实现襥机系统与容器之间的文件共享 特点: 数据卷可以在容器之间共享和重用。 对数据卷的修改会立即影响到对应容器。 对数据卷的更新修改,不会影响镜像。 数据卷默认会一直存在, 即使容器被删除。 使用 自定义数据卷 docker run -v 宿主机目录:容器目录:ro dockerImageId 自动创建数据卷 docker run -v 卷名:容器内路径 dockerImageId 查看卷 docker volume inspect volumeName docker volume ls 将正在运行的容器打包成镜像 docker commit -m ’’ -a ’’ dockerContainerid dockerImageName:dockerTag 将镜像备份 docker save 镜像名称:tag -o dockerBak-tag.tar 网络配置 docker容器与操作系统通信机制默认使用网桥
Flask Web开发实战
Flask Web开发实战 基础 初识 开发环境
Java8函数式编程
函数式编程 函数式编程中没有赋值语句,因此变量一旦有了值,就不会再改变了.更通俗地说,函数式编程完全没有副作用.
Lambda表达式 格式 () -> {} 参数: (): 表式没有参数 单个参数可不加括号 参数可以不加类型,由编译器去推断类型,也可以加上类型。加类型的话需要使用小括号包起来。 参数引用的值而不是变量。但不必须写final变量。 主体: 可以是一个表达式,也可以是一段代码块,如果是一段代码块需要使用大括号包起来。 函数式接口 Java里函数式接口的主要类型 接口 参数 返回类型 示例 —————– —- ——– —- Predicate<T> T boolean Consumer<T> T void Function<T, R> T R Supplier<T> None T UnaryOperator<T> T T BinaryOperator<T> T, T T 流(Stream) Stream是用函数式编程方式 在集合类上进行复杂操作的工具。
Linux命令行与Shell脚本大全
Linux命令行 初识Linux Shell 什么是Linux Linux可划分为以下四部分:
maven基础
Maven库: http://repo2.maven.org/maven2/
Maven依赖查询: http://mvnrepository.com/
Maven常用命令: 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName -DartifactId=projectName 创建Maven的Web项目: mvn archetype:create -DgroupId=packageName -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp
Nginx-note
Nginx基础1 Nginx架构 nginx事件模型 nginx是采用的异步非阻塞。