Sheldon Blog

No pains, no gains || 思考,笔记,分享

Redis梳理(3)

Redis数据结构

1. String字符串 字符串是Redis最基本的数据类型,不仅所有key都是字符串类型,其它几种数据类型构成的元素也是字符串。注意字符串的长度不能超过512M. 编码类型 使用 object encoding key 命令来查看对象(键值对)存储的数据类型,当我们使用此命令来查询 String 对象时,发现 String 对象包含了三种不同的数据类型:int、embstr ...

Redis梳理(2)

Redis底层数据结构

0.总览 1. RedisObject对象 在redis的命令中,用于对键进行处理的命令占了很大一部分,而对于键所保存的值的类型(键的类型),键能执行的命令又各不相同。如: LPUSH 和 LLEN 只能用于列表键, 而 SADD 和 SRANDMEMBER 只能用于集合键;另外一些命令,比如 DEL、 TTL 和 TYPE, 可以用于任何类型的键;但是要正确实现这些命令,必须为不同...

Redis梳理(1)

Redis概念和基础

1.什么是Redis Redis是一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),使用C语言编写,Redis是一个key-value存储系统(键值存储系统),支持丰富的数据类型,如:String、list、set、zset、hash。 Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高...

Longest Substring Without Repeating Characters

每日一题03:无重复字符的最长子串

题目 Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the length is 3. Given "bbbbb", the answer is "b", w...

Add Two Numbers

每日一题02:两数相加

题目 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and re...

Two Sum

每日一题01:两数之和

题目 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the ...

Java SE学习笔记

疯狂Java讲义笔记

数据类型 基本类型:包含boolean类型和数值类型 整型 byte(1字节),short(2字节),int(4字节),long(8字节) 字符型 char(2字节) 浮点型 float(4字节),double(8字节) 布尔型 boolean,只能是true和false,其他基本类型数据也不能转换为boolean类型 基本类型自动转换 表达式类型自动提升:所有的...

《暗时间》读书笔记

如果你想钉一颗钉子,所有东西看上去都像锤子

暗时间 善于利用思维时间的人,可以无形中比别人多出很多时间 每个人的手表走得一样快,但是每个人的生命却不是 对事物的实际投入的是时间和效率的乘积 只有靠推理才能深入理解一个事物,看到别人看不到的地方,这部分推理的过程就是你的思维时间,也是人一生中占据一个显著比例的暗时间 能够迅速进入专注状态,以及能够长期保持专注状态,是高效学习的两个最重要习惯 最后一个高效的习惯:...

Promise

使用Promise对付JavaScript中的回调

一、什么是Promise 1、Promise即“承诺”的意思,它是异步编程的一种解决方案,或者说是一种规范,目的是让回调更为优雅,可以将复杂的异步处理轻松地进行模式化 2、有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数 3、此外,Promise 对象提供统一的接口,使得控制异步操作更加容易 4、当我们new一个Promise时,我们需要明确两...

ECMAScript 6

let + const,Iterator(迭代器) + for of,模板字符串,集合(set + map),symbols

let + const let 和 const与var一样都是进行变量声明,其中const用来声明常量,但是与var声明的方式又有很多的区别: 形成块级作用域 变量不会提升 暂时性死区 声明的全局变量不是全局对象的属性 不能对已定义过的变量进行重新定义 const在声明变量时就必须赋值 // eg1 function f1() { let n = 5; ...

Node.js 环境搭建

node的基础环境搭建

一、前言 近期由于工作需要,开始需求完成一些nodejs的工作,公司也慢慢转型Java + nodejs的技术工作模式,在此记录下自己node环境的搭建过程,后续会慢慢添加一些自己在nodejs上学习到的东西和问题 二、版本管理 我所使用的node版本管理是 n ,当然也有很多人使用 nvm ,网上也有很多关于 nvm 和 n 的对比。我也没有纠结太多,感觉n更加的简洁,故直接使用了 n ...

JavaScript执行顺序

先同步后异步

先上一段代码: setTimeout(function() { console.log('settimeout out') setTimeout(function() { console.log('settimeout in') }, 0); process.nextTick(function() { console.log('process.nextTi...

Ruby中的一些常用逻辑

持续更新ruby中的常用逻辑

Proc和lambda的区别 return不同:lambda中的return和普通方法的一样只返回到调用的地方,可以向下执行;而Proc中的return直接就作为调用处的返回,不能向下执行了 lambda本质上是匿名函数,调用的时候会检查参数,参数不匹配抛ArgumentError,而proc调用时候会传递并绑定参数,但是不会检查 and/or 和 &&/||...

静态博客搭建

GitHub Pages and jekyll

前言 该博客使用了jekyll 搭建的基于 Github Pages 的静态页面,页面主题和框架采用了Hux的博客具体请参见: Hux blog 模板 GitHub Pages 有以下几个优点: 轻量级的博客系统,没有麻烦的配置 免费空间,享受 Git 版本管理功能 使用标记语言,比如 Markdown 无需自己搭建服务器 可以绑定自己的域...

《Ruby元编程》 读书笔记5

元编程终章

Kernal#eval方法 Kernal#eval方法与之前的BasicObject#instance_eval和Module#class_eval一样,都属于eval家族, 都可以赋予程序在运行中进行动态变化的能力。与后两者想比Kernal#eval更加直接,不需要代码块、 直接就可以执行字符串代码(String of Code) PS:BasicObject#instance_eval...

《Ruby元编程》 读书笔记4

类定义

类的返回值 像方法一样,类定义也会返回最后一条语句的值: result = class MyClass self end result #=> MyClass 当前类 与当前对象self一样,同时还存在当前类(或模块) Ruby中并没有类似当前对象self一样的明确引用,不过在追踪当前类的时候,可以遵循下面几条: 在程序顶层,当前类是Object,这是main对象所属...

《Ruby元编程》 读书笔记3

Ruby的代码块

代码块 代码块的定义方式有{}花括号与do…end关键字定义两种,程序员们习惯单行用花括号,多行用do…end 代码块只有在方法调用的时候才可以定义,块会被直接传递给这个方法,判断某个方法调用中是否包含代码块, 可以通过Kernel#block_given? 代码块不仅可以有自己的参数,也会有返回值,像方法一样,代码块中的最后一行执行结果会被作为返回值返回 代码块之所以可以...

《Ruby元编程》 读书笔记2

Ruby的方法

动态方法 动态调用方法 在Ruby中通过Object#send方法可以代替点标识调用对象的指定实例方法 class MyClass def my_method(my_arg) my_arg * 2 end end obj = MyClass.new obj.my_method(3) #=> 6 obj.send(:my_method, 3) #=&g...

《Ruby元编程》 读书笔记1

对象,类和模块

元编程的定义 元编程是能变现代码的代码 元编程是编写能在运行时操作语言构件的代码 基本概念 类的本质也是对象 对象就是一组实例变量外加一个指向其类的引用。对象的方法并不存在于对象本身,而是存在于对象的类中,即类的实例方法 类就是一个对象(Class类的一个实例)外加一组实例方法和一个对其超类的引用。Class类是Module类的子类,因此一个类...

Rails中的Etags

Rails的客户端缓存

1.什么是ETag 简单的说,ETag就是一种客户端缓存,是 HTTP 协议的标准参数,它能通过一段字符来判断浏览器 cache 的内容是否和服务端返回的内容是否相同,从而来决定是否要重新从服务器下载东西 (HTTP 状态 200 - 重新下载 / 304 - 没有更新) 例如: 首个请求: 浏览器初始化首个请求 首个响应: ...