Ramon's Blog

记录平时工作学习中的知识


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

Docker学习笔记(三)

发表于 2020-06-26 | 更新于: 2020-06-27 | 分类于 容器
字数统计: 3.3k 字 | 阅读时长 ≈ 17 分钟
Docker网络介绍Docker网络共分为四种模式,如下图,从左到右为: None(Close) container 封闭式网络模式 Bridged container 桥接式网络模式 Container(join) container 联合挂载式网络模式 Host(open) container 开放式(主机)网络模式 (图片来源于网络) 注:这个图很重要,下面具体介绍每种模式的时候可以对照学习 我们也可以通过以下命令查看: 12345[root@ramon ~]# docker network lsNETWORK ID NAME DRIVER SCOPEc8b12c57ad04 bridge bridge local57097e22d8dc host host local4b0f55f2b211 none null ...
阅读全文 »

Docker学习笔记(二)

发表于 2020-06-18 | 更新于: 2020-06-27 | 分类于 容器
字数统计: 4.7k 字 | 阅读时长 ≈ 22 分钟
Docker数据卷数据卷介绍数据卷的技术可以理解为将宿主机上的一个目录与Docker中的目录数据共享的技术。 带来的好处: 数据的持久化( 备份) 方便的文件修改(从外部直接修改Docker内的文件) 容器间数据共享(多个容器共享数据卷) 数据卷的简单使用命令直接挂载 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667docker run -v 主机目录:容器内目录# 说明:主机目录与容器内目录的文件互相同步# 示例# 1. 进入/tmp目录,查看目录下文件,没有centos[root@ramon ~]# cd /tmp/[root@ramon tmp]# lssystemd-private-19e7c3ab56d6419d82a4133b3f236d2f-ntpd.service-Ewqdpr# 2. docker运行centos容器,挂载容器中/home到本地/tmp/centos ...
阅读全文 »

Docker学习笔记(一)

发表于 2020-06-18 | 更新于: 2020-06-21 | 分类于 容器
字数统计: 2.9k 字 | 阅读时长 ≈ 13 分钟
Docker基础Docker概述Docker是一种容器技术,可以简单快速的部署环境。 容器化技术传统的虚拟化技术是对硬件进行抽象后单独提供给虚拟机一个独立的环境运行操作系统,而容器技术区别于虚拟机技术,是对操作系统资源进行抽象,提供给进程独立的运行环境。 容器就是一个个互相隔离的进程,而虚拟化技术是一个个互相隔离的系统,因此容器对于虚拟机而言具有启动快、资源少、体积小等优点。 容器技术实现的基础主要是两个技术:NameSpace、Cgroup。 NameSpace:命名空间,为容器技术提供隔离性 Cgroup:资源管理控制,进程的状态、优先级、资源的占有情况等 Docker为什么会出现开发部署中的痛点: 本地环境与线上不一致 在我本地跑的没问题啊,到线上怎么就出事了(开发) 环境配置复杂 环境版本、依赖、大量的服务需要进行配置(运维) 发布项目麻烦 运维人员进行代码发布,服务重启等操作(大量机器是件复杂的事情) Docker问题解决 镜像机制:将代码运行环境打包成镜像上传到商店,运维只需要下载部署即可 运行环境 => Docker镜像 => ...
阅读全文 »

正则表达式学习笔记

发表于 2020-06-12 | 更新于: 2020-06-12 | 分类于 other
字数统计: 717 字 | 阅读时长 ≈ 2 分钟
正则表达式学习笔记概念正则表达式是一种从左到右匹配字符串的一种模式。 元字符特殊含义的字符。 元字符 描述 . 匹配任意单个字符(除了换行符) [] 匹配方括号内任意字符 [^] 上面的否定,匹配除了里面内的任意字符 * 匹配任意个(可以是0)*号前面的字符 + 匹配>=1个符号前面的字符 ? 符号前面的字符可选 {n,m} 匹配num个前面的字符或者字符集(n<=m<=m) (xyz) 可以理解为数学公式中的括号,括号内的为一体,比如(abc)* <=> abc/abcabc/… | 或运算符 \ 转义字符,匹配保留字符使用,比如\[ 就代表[ ^ 行首,表示从开始行开始匹配 $ 行尾,从行尾开始匹配 简写字符集正则表达式提供一些常用的字符集简写。 简写 描述 \w 匹配所有字母数组,等同于[a-zA-Z0-9] \W 匹配所有非字母数组(符号),等同于[^\w] \d 匹配数字,等同于[0-9] \D 匹配非数字,等同于[^\d] \s 匹配所有空格字符,等同于[\ ...
阅读全文 »

Node学习笔记-异步IO详解

发表于 2020-04-14 | 更新于: 2020-04-20 | 分类于 Node.js
字数统计: 956 字 | 阅读时长 ≈ 3 分钟
[toc] 介绍学Node都会被告诉,异步是Node的主旋律,大部分Node提供的API都是异步实现的,本章就来一步步介绍异步IO以及它在Node中的实现。 注:本文是学习《深入浅出Node.js》一书的学习笔记,所以参考源码与书上版本一致。(版本:v0.10.13-release) 什么是异步IO首先了解什么是异步IO,维基百科的解释如下: 异步I/O是计算机操作系统对输入输出的一种处理方式:发起I/O请求的线程不等I/O操作完成,就继续执行随后的代码,I/O结果用其他方式通知发起I/O请求的程序。 按我的理解就是: 你点了个外卖,然后继续忙其他事,等外卖到了给你打个电话,你去取外卖。 异步I/O示意图如下(图片来自《深入浅出Node.js》): 这个图更加直观的介绍了异步IO。 当然,这个是我们最理想的异步IO情况,这里的异步IO肯定是有背后的操作去完成调用的IO操作的,我们点个外卖也需要平台管理下商家做和外卖小哥送这一套流程,艺术来源于生活,一般来说异步IO也是这么操作的: 将单线程的场景转变成多线程,主线程通知IO线程进行IO操作后继续向下执行,IO线程通过阻塞 ...
阅读全文 »

IO多路复用整理

发表于 2020-03-22 | 更新于: 2020-05-07 | 分类于 linux
字数统计: 2.4k 字 | 阅读时长 ≈ 8 分钟
介绍大学时候写在csdn上的一篇博客,最近在看异步IO,就准备先介绍下IO方面内容,给后续的Node异步IO介绍奠定一个基础,同时也把当时的文章改进下搬过来。 基础介绍首先最基础的,我们先来理解什么是IO。 什么是IO?我们都知道unix世界里,一切皆文件(不知道的现在也知道了),而文件是什么呢?文件就是一串二进制流,不管socket,还是FIFO、管道、终端,对我们来说,一切都是文件,一切都是流。 在信息交换的过程中,我们都是对这些流进行数据的收发操作,简称为I/O操作(input and output),例如读出数据使用系统调用read,写入数据使用系统调用write。 文件描述符计算机中这么多流,我们是如何知道要操作哪个流呢?这时候我们需要有一个能够对文件进行定位的标识符,文件描述符应运而生。 概念文件描述符是内核为了高效管理已经被打开的文件所创建的索引,它是一个从0开始的整数(对每个进程而言),程序所有执行的I/O操作都是通过文件描述符进行的。 分配规则在程序刚刚启动时,0,1,2三个文件描述符已经被占用了: 0代表标准输入设备stdin 1代表标准输出设备stdout 2代 ...
阅读全文 »

Node模块详解(二)

发表于 2020-03-07 | 更新于: 2020-03-17 | 分类于 Node.js
字数统计: 2.1k 字 | 阅读时长 ≈ 8 分钟
介绍上篇文章介绍了模块机制中的文件模块(直通链接),本篇文章继续接着介绍node模块机制中剩余的模块类型: 核心模块 扩展模块 注:本文是学习《深入浅出Node.js》一书的学习笔记,所以参考源码与书上版本一致。(版本:v0.10.13-release) 核心模块什么是核心模块区别于文件模块等第三方导入模块,核心模块就是直接包含在node源码中,为用户提供服务的模块。 当然这些模块也需要导入的,想了解都有哪些模块,直接进入官网,找到Docs文档,里面介绍的模块都是核心模块(链接:核心模块介绍)。 简单列举几个比较常用的核心模块: fs:提供对文件的读写等操作 http:提供了搭建本地服务器的API path:提供文件路径操作的API os:操作系统相关信息的API url:提供了操作URL信息的API 核心模块导入流程核心模块的使用官网已经非常详细了,我也没什么好介绍的,今天的重点是核心模块在Node源码中是以什么形式存在的,以及核心模块的导入流程。 Node源码中的核心模块核心模块一般分为两部分: C++编写的内建模块(核心实现) JavaScript编写的封装模块 其中 ...
阅读全文 »

Node模块详解(一)

发表于 2020-03-01 | 更新于: 2020-03-04 | 分类于 Node.js
字数统计: 2.5k 字 | 阅读时长 ≈ 9 分钟
介绍本文是阅读《深入浅出Node.js》后对自己所学和理解的内容进行整理后完成的,结合Node源码为读者解读模块这一基础而又非常重要的一个机制是怎么实现和运转的。 此文为Node模块详解系列第一篇,主要介绍模块以及实现。 CommonJS规范说到模块就先介绍下CommonJS规范,因为模块是它提出的,而Node也对规范有了很好的实现(尽管Node的npm管理器作者在13年宣称废弃它)。 引用维基百科的介绍: CommonJS是一个项目,其目标是为JavaScript在网页浏览器之外创建模块约定。 说白话,就是希望JS摆脱前端束缚,能够在任何地方使用,比如: 服务端 命令行工具 桌面应用程序 混合应用(Titanium和Adobe AIR等形式的应用(我也没懂zzz~)) 详细了解去看CommonJS官网,这里不做详细介绍,我们重点关注模块。 CommonJS的模块规范CommonJS对模块的定义为模块引用、模块定义和模块标识3个部分。 模块引用 通过require()方法导入一个模块的API到当前上下文中。 示例代码: 1var http = require("http"); ...
阅读全文 »

七天学会nodejs整理

发表于 2020-02-23 | 更新于: 2020-02-24 | 分类于 Node.js
字数统计: 5.4k 字 | 阅读时长 ≈ 20 分钟
介绍工作原因接触了NodeJS,开始学习它,不过以前对这门语言不了解,学习了基本语法可以工作后就没有加深学习了。时间长了后发现这门语言比我想象中强大了很多,于是开始准备全面了解,深入学习,本文是学习了七天学会NodeJS之后的一个整理总结,入门向的一篇文章,旨在让我们可以全面了解这门语言,有兴趣的可以参考。 NodeJS基础学习NodeJS,首先了解它是什么。 JS我们都知道–JavaScript,一门前端都在使用的脚本语言,而NodeJS就是运行在后端的js语言。换句话说,前端使用的JS是由浏览器进行解析运行的,而NodeJS就是一个独立的js解析器,随时随地,有node环境就可以解析运行。 NodeJS诞生的目的就是为了实现高性能的Web服务器(作者自己说的),至于为什么使用JS这门语言,主要有如下几点: JS这门语言自带的事件机制和异步IO模型(契合作者的需求) 同时JS没有自带的IO功能,不会有历史包袱(我理解是作者可以随意发挥) 有一大批前端程序员的拥护(用户众多) chrome浏览器的v8高性能JS引擎的出现(可移植,有大哥维护) 在这么多的优势的加护下,NodeJS也 ...
阅读全文 »

缓存相关问题

发表于 2019-12-26 | 更新于: 2019-12-26 | 分类于 other
字数统计: 294 字 | 阅读时长 ≈ 1 分钟
缓存穿透原因查到DB和缓存都没有的数据 带来的问题大量DB和缓存都不存在的数据请求打到数据库,会加大数据库压力,严重发生宕机。 解决缓存空值如果数据库不存在则在缓存中加入key与null的关系,后续由缓存将null返回给用户 BloomFilterBloom Filter是一个很长的二进制向量和一系列随机映射函数,它可以判断数据是否存在。当前场景我们可以用它来判断查询的数据是否在集合中。 如上图,在缓存上增加一层BloomFilter,进行筛选,不存在直接返回null 缓存击穿原因大量的请求到缓存没有的数据(DB有) 带来的问题加大数据库压力,严重发生宕机 解决加上锁,第一个取完后放入缓存,后面的去缓存取数据 缓存雪崩原因缓存服务崩溃 带来的问题加大数据库压力,严重发生宕机 解决 增加高可用(事后) 本地缓存 限流 服务降级(返回默认值)
阅读全文 »
123

Ramon

当你觉得晚的时候,恰恰是最早的时候

24 日志
8 分类
8 标签
© 2020 Ramon
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
访问人数 总访问量 次