SASS学习记录

前言 很久没有用文章记录自己的学习历程了,主要是因为实在写的不行,相比大牛写的博客,我这只能算是东拼西凑或者说是读书笔记。但是今天还是拾起笔来了,虽然没什么干货,但是对自己而言,总结的过程可以加深对零碎知识的了解,将来自己如果忘记某些知识,可以迅速查找并捡起来;如果以后忘了自己的当初的目标,也能回头看看自己曾经做过的努力。 想起总结的另一个原因,就是自己在最近的实习中学到了很多东西,终于把自己看过

ruby   sass   css   javascript  

动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二步验证机制,那么,技术运用,既要知其然,更要知其所以然,动态密码算法是怎样的? 读前指引 通过这篇文章,你可以了解以下知识: 动态密码的背景知识 动态密码的分类 不同动态密码的生成算法,HOTP 以及

算法   ruby  

前言 回顾一下 Ruby 解释器处理流程 词法分析 语法分析 AST 生成 虚拟机指令生成 虚拟机指令有两种存储结构: 链式结构,通过 LINK_ELEMENT 链表节点 数组(线性)结构 解释器会先遍历 AST 生成链式结构存储的指令列表,但是虚拟机并不会直接解释执行该列表,而是进一步将指令列表“序列化”成字节数组,PC(指令指针)寄存器可以索引指令数组(取指,分支跳转) 本文简要介绍 Ruby

编译原理   ruby  

Dijkstra大学的时候就学过,但最近在《Algorithms》这本书里,看到了个很有趣的讲解,对这个算法有了新的理解,以下便是对这个算法的整理和实现。 广度搜索与最短距离 我们知道,如果把所有的边的距离当做1,广度遍历得到的就是最短路径。 更直观的,我们可以这样想,把节点都想成有质量的小球,节点间边想成细线。我们把S球拎起来,让所有的球都自然下垂,这样小球所在的层数,就是S球到其他小球的最短距

广度优先搜索   最短路径   ruby   实现细节   算法  

算法有趣的地方在于,可以用不同的方式处理同一个问题,并且总有更好的方法。比如拼写检查。 拼写检查大体是这样的,给出一个字典文件,给出一个比对文件。比对文件里的单词,如果某个单词不在字典文件里的话,就认为拼写错误。要做的就是找出比对文件里所有拼写错误的单词。 暴力破解(brute force) 最直观的方法,就讲文件里的单词一一同字典里的单词做比较,如果不在字典里,就输出。最简单,也最费时。 假设字

ruby   算法   trie  

前言 数据结构 object space rb_objspace_t RVALUE heap rb_heap_t heap page heap_page_body heap_page_header heap_page_body heap_page 内存管理 堆初始化(Init_heap) 参考 Ruby 2.x 源代码学习 bootstrap,Ruby 解释器在启动的时候会调用 Init_heap

ruby   内存管理   垃圾回收机制   内存分配  

前言 本文从 require 语句入手为大家揭开 Ruby 扩展(ext)的面纱 require 我们知道 require 语句可以引入模块,就像 java 里面的 import 语句可以引入类,c/c++ 里面的 include 语句可以引入头文件甚至源文件。但是 Ruby 中的 require 与二者有着本质的不同,它实际上是一个方法(函数)调用,是运行期而非编译期的行为 方法定义 在 Ini

ruby   虚拟机  

前言 引用 RubyVM::InstructionSequence 文档: RubyVM::InstructionSequence 类是对运行在 Ruby 虚拟机上的指令序列的抽象,使用该类,我们可以将 Ruby 源代码字符串编译成虚拟机内部的指令序列,以此来探究虚拟机内部的工作原理,同时通过灵活的编译参数,我们可以控制 Ruby 指令生成过程 所以通过挖掘 RubyVM & Instructio

虚拟机   ruby  

前言 入口 rb_iseq_compile_with_option 函数是语法分析与中间代码生成的入口,这里仅列出和语法分析 & 中间代码生成相关的代码块 // iseq.c rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE absolute_path, VALUE line, const struct rb_block *

ruby   虚拟机   编译原理  

LINK_ELEMENT LINK_ELEMENT 是一个双向链表的"头"节点,包含指向前一个节点和后一个节点的指针,其它结构体通过将 LINK_ELEMENT 放在结构体的头部来将结构体组织成双向链表 // compile.c typedef struct iseq_link_element { enum { ISEQ_ELEMENT_NONE, ISEQ_ELEMEN

ruby   虚拟机  
1 2 3 4 5 6 7 8 9