05 2022 档案
摘要:我们在平时开发中经常会涉及调用某个REST接口从而获取对应数据的情况,在这个过程中,返回的数据往往都是JSON数据,一般情况下,我们都会针对这些JSON数据定义对应实体类,从而获取我们需要的数据。这种方式对于结构简单的JSON数据是OK的,但是如果遇到下面这种多级嵌套的数据就比较蛋疼了: { "a1
阅读全文
摘要:小伙伴们,好久不见,这几个月实在太忙,所以一直没有更新,今天刚好有空,咱们继续k8s的学习,由于我们后面需要深入学习Pod的调度,所以我们原先使用MiniKube搭建的实验环境就不能满足我们的需求了,我们这一节将使用kubeadm搭建Kubernets集群。 一、虚拟机创建 我们的集群包含三个节点k
阅读全文
摘要:一、什么是GIL GIL即全局解释锁(global interpreter lock),这个锁环绕着Ruby代码的执行,在一个多线程上下文中,任何时候只有一个线程可以执行Ruby代码。因此即使在多核的机器上运行多线程应用,在特定时间点上也只有一个线程和一个核心在忙碌,GIL一直保护着Ruby内核,以
阅读全文
摘要:今天在ubuntu上搭建了rails环境,为方便后续查阅,特此记录 1、更新软件包,安装必要的软件 sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential bison openssl libreadl
阅读全文
摘要:Rack为编写Web应用以及Web框架提供了很多便利的工具,那么这一节,我们实现一个最简单的Web框架。 一、Web框架应该具备什么功能 对request和response的存取 路由:根据不同URL执行不同程序 能够处理cookies 能够存取session 能够生成日志 ...... 看上去挺麻
阅读全文
摘要:一、Rack中间件 1、什么是中间件 中间件其实就是Ruby应用服务器和Rack应用程序之间执行的代码 2、一个简单的例子 $LOAD_PATH.unshift(File.dirname(__FILE__)) require 'rack' require 'decorator' my_app = l
阅读全文
摘要:一、什么是Rack Rack是ruby应用服务器和Rack应用程序之间的接口, 这里面Ruby应用服务器可以是Webrick、thin等,Rack应用程序可以是rails、Sinatra等(其实 现在主流的ruby的Web框架都是基于Rack的)。在上图中,当用户的请求到达应用服务器时,应用服务器会
阅读全文
摘要:我们在部署rails应用时,大多时候都使用Nginx+Passenger的方式部署,本文主要对此架构下 Passenger的作用及其工作原理进行梳理。 一、什么是Passenger? Phusion Passenger是一个开源的Web应用服务器,它能够处理HTTP请求,管理进程和资源、 系统监控以
阅读全文
摘要:用过ruby人对method_missing肯定不陌生,通常我们利用这一神技来实现调用不存在的方法,以便进行回调,利用它可以很方便的实现我们自己的DSL。 在学习method_missing之前,先理解下ruby方法调用过程 当ruby对象执行某一方法时,他需要找到这个方法,其查找流程如下: 1、查
阅读全文
摘要:Ruby提供了ripper这个工具,我们可利用此工具分析ruby代码,方便定位性能问题。 以下内容都是以如下代码为例: x > 100 ? 'foo' : 'bar' Ruby在执行程序前会将代码转化为更加结构化的语句 第一步:将代码切分为一个一个的词条 ripper的tokenize的方法可以将代
阅读全文
摘要:一、介绍 iostat用于监视系统IO以及CPU使用情况。 二、安装 sudo apt-get install sysstat 三、语法和选项、参数 语法:iostat [选项] [参数] 选项: -c:仅显示CPU使用情况 -d:仅显示设备IO情况 -k:显示状态以kb/s为单位 -m:显示状态以
阅读全文
摘要:Sinatra是一个ruby的轻量级Web框架,这这个框架总共就1000多行代码,非常简洁,值得一读。 一、Sinatra组成 Sinatra的主要实现的代码在base.rb中,主要有以下几个部分: Request:继承于Rack::Request,用于描述一个请求,通过这个类可以很方便获取到请求
阅读全文