自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 Linux指令之利用uniq, sort,对大文件做排序去重

最近在对一些数据做筛洗,涉及到对大文件的排序和去重。 刚开始接触到这个这个任务,我也是各种, 想用redis, 想用bitmap。发现各种这些实现的方法都极其繁琐,而且可能极其吃内存,所以都不是很可行。在百抓挠腮之际,知乎上发现了回答,就是利用sort进行排序,然后利用uniq进行去重。本来刚开始看到这个回答,我是持有怀疑态度的。但是进过实践发现,利用uniq 和 sort 的指令,其中间数据不...

2019-06-30 18:01:55 4541 2

原创 gorm中的数据库完整性约束(1)

文章目录温故而知新主键约束(非空且唯一)写这篇文章的初衷是由于自己一直对数据库的一些基本知识了解得不是很透彻,加上gorm文档中对数据库完整性描述简直让人摸不着头脑。趁着这个机会,我们来整合一下这些知识,为后面更深入地使用gorm打下基础。温故而知新超键:是一个或者多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。候选键: 去掉冗余属性之后的最小超键。主键:用来标示...

2019-05-06 23:43:51 3182

原创 浅谈golang中的接口

文章目录面向对象的特征接口声明与接口继承接口实现接口使用空接口最近又在学习一门面向对象的语言:golang。这门静态语言和ruby和是完全不同风格的语言,但是其语法还算简单,加上一些简单易懂的框架,上手写一些业务的接口代码并没有什么难度。但是现在对interface的概念还是理解得不够透彻,这边博客会记录一下一些学习过程的感想。面向对象的特征class和interface在高级语言中是很重要...

2019-03-17 16:34:39 946

原创 AES加解密的ruby和golang实现

文章目录产生的疑问十六进制字符串AES是如何分组的?AES是目前最流行的分组对称加密算法,在开发的过程中,无处不在。Intel甚至在他们的芯片中定制了底层指令来让AES更快地执行,所以AES加解密过程算不算是一种系统调用?在这篇博客中,我们会先简单探究AES加解密的原理,然后对比ruby和golang的实现过程。产生的疑问在项目开发的过程中,我们时常会用户会用到AES加解密, 但也仅仅是利...

2019-02-20 00:36:56 2900

原创 Base64加密原理

文章目录Base 64 原理在base64末尾的加等号url encodeBase 64 原理Base64的加密方式是将三个八位的字节转化为四个六位的字节,不足八位的高位补0,38 = 46 ,所以经过base6加密的字符串大约比要比为加密的字符串要大三分之一。大小写的字母26*2 加上10个数字 加上两个特殊符号 + / 一共64个字符,因为Base64有效位只有六位,所以最大能表示的字符...

2018-12-16 23:54:58 1151

原创 URL和URI的区别

文章目录##初识URL与URI最初看到URL和URI, 是在学习TCP/IP协议的时候。当时的教科书上也是讲得迷迷糊糊,让人认为这是两个没有区别的概念。出来工作之后,发现这其中还是有些奥妙和区别的,但也是看得我一头雾水。包括有些文章也是,直接摘抄的概念,可能作者本身都没有弄懂这其中原理。参考了几篇好文之后,我也来写一写,希望可以加深理解。经验式理解:http://localhost:8080...

2018-11-04 20:39:18 6242 2

原创 JSON对象与JSON字符串

文章目录作为一个web开发的小白鼠,对于一些入门级的知识,还是一头雾水,比如说我们很常见JSON与JSON字符串,在开发的过程中,傻傻分不清。今天看了一篇阮师兄的博客,感觉很有收益,在这里写下一些心得。在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,...

2018-11-03 22:17:18 223

原创 ruby 中的 forwardable 模块(1)

文章目录forwardable模块def_delegator 方法def_delegators 方法delegate 方法forwardable模块最近在看rack-attack源码的过程中,看到了这个模块。ruby的语法糖实在是太丰富了,各种特性看得人一脸懵逼。幸好各位前辈留下了许多文章去给我们指点迷津,这篇文章对forwardable的描述我觉得很通俗异动,很适合我们对这个模块有一个比较浅...

2018-10-07 23:30:10 2407

原创 HTTP协议中Content-Type

关于content_typecontent_type语法GET常见数据的提交类型POST常见数据的提交类型application/x-www-form-urlencodedmultipart/form-dataapplication/jsonbinary (application/octet-stream)关于content_typeContent-T...

2018-09-16 23:13:29 7809

原创 X-Forwarded-For的一些理解(1)

关于X-Forwarded-For的一些简要概述一个关于X-Forward-For的一个思考欢迎使用Markdown编辑器写博客快捷键Markdown及扩展表格定义列表代码块脚注目录数学公式UML 图:离线写博客浏览器兼容关于X-Forwarded-For的一些简要概述X-Forwarded-For 是一个 HTTP 扩展头部,主要是为...

2018-09-08 12:48:50 19475 2

原创 Linux中的curl,telnet,ping,nslookup 指令

curl指令 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。这个工具可以帮助我们在服务器上很好的模拟http的行为。curl url 返回整个网页的内容curl -I url 返回这个网页的headercurl -i url 返回网页header +...

2018-08-11 18:20:43 3820

原创 编译系统概要

我们首先看一看一个最简单的helloworl程序:#include<stdio.h>int main(){ printf("hello.world\n");}hello程序的生命周期是从一个高级c语言程序开始的,是一种高级语言程序,这种形式可以比较容易被人读懂。然而,为了在系统上运行hello.c程序,每条c语言必须可以被其他程序转化为一系列的低级机器语言指令,然...

2018-07-23 10:05:00 176

原创 关系型数据库之索引

索引,在我们的mysql中的也叫key,是存储引擎中用于快速找到记录的一种数据结构。这是索引的基本功能,当然,索引还有一些别的属性。但是《高性能mysql》这本书上并没有讲清楚一个事情,那就是索引和主键的区别。主键一定是唯一性索引,唯一性索引并不一定就是主键。我来来具体的东西说吧,书大家都看过吧,看下它每页是不是有个页码,我们的数据表主键就相当于是这个页码。索引相当于书的目录,有了目录我们可以很快...

2018-07-07 15:54:32 3635

原创 关系型数据库之SQL

SQL最早的版本是由IBM开发的,它最初被称为Sequel。Sequel发展至今,其名称已经变为SQL(结构化查询语句)。现在的关系型数据库产品基本支持SQL语言,SQL已经明显地确立了自己在作为标准的关系型数据库语言的地位。create table department { dept_name varchar(20), building varchar(20),...

2018-07-07 14:27:00 741

原创 关系型数据库概要

rails的ORM用得有点多了,对于其底层封装的关系型数据库的记忆反而不是很清晰了。让我们来重新回顾一下吧。有很多初学的同学可能对关系型数据库有一些误解,以为关系型数据库就是mysql,其实不然,关系型数据库是指一种关系模型,mysql只是一种实现,还有pg等一大票数据库。在关系模型的术语中,关系(*relation)代表用来指代表,而元组(trule)用来指代行。类似地,属性用来指代表中的列...

2018-07-03 00:18:43 274

原创 从底层去认识 ruby 的load,require,gems,bundler,以及rails中的autoloading

在rails中,我一直对require和autoloading感到很疑惑,严重阻塞了我学习的进度,所以我觉得搞清楚这些概念是很有必要的, 在这里翻译一篇国外的博文,并写下自己的一些理解。load 首先来看看rubu中load的用法:puts("foo.rb loaded!")$FOO = 2我们打开irb:> load('/Users/zhang/fo

2018-06-24 12:32:49 2839

原创 iTerm2 & Oh My Zsh

分屏快捷键: 垂直分屏:command + d 水平分屏:command + shift + d 关闭某一屏幕: command + w 切换屏幕:command + 方向键 切换标签: command + shift + 方向键清屏快捷键: command + r...

2018-06-23 22:00:25 219

原创 Dockerfile定制镜像

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像。Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。 在一个空白目录中,建立一个文本文件,并命名为 Dockerfile:$ mkdir m...

2018-06-15 21:16:37 442

原创 Docker容器

这一part主要来记录一下我们对docker容器的操作。容器是 Docker 又一核心概念。 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。新建并启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。我们的命令主要为 docker run。例如,下面的命令输出一个 “Hello World”,之后终止容...

2018-06-15 19:50:27 164

原创 Docker的基本概念

Docker和传统虚拟化的区别 我们首先来比较一下 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。使用docker的理由更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整...

2018-06-15 16:54:26 213

原创 rails on ruby,ruby on rails 之代码块(二)

可调用对象 从底层看,使用代码块分为两步。第一步,将代码打包备用;第二步,调用代码块(比如通过yield语句)执行代码。这种“打包代码,以后调用“的机制并不是代码块的专利。在Ruby中,至少还有其他三种方法可以用来打包代码:使用proc,proc是由块转换来的对象使用lambda,它是proc的变种Proc对象 尽管Ruby中绝大多数的东西都是对象,但是代码块却不是。为什么要重点...

2018-06-11 00:29:28 214

原创 使用Google Protocol Bufffers进行通信(Ruby & C)

最近项目中需要用到Google 的 proto buffer作为一种跨平台通信的协议。首先感谢枫 和 未 的博客,让我对这个协议有了一些初步的理解。协议的由来 在后台需要与多种终端如iPhone,Android,Web或者WinPhone之类的不同平台作通信的时候,常常需要使用一种中间的通信协议,并且使用通用数据类型如XML。现在项目中的设备底层是用c语言完成的,我们服务端的语言是ruby,...

2018-06-09 16:46:56 464

原创 HTTP协议详解

当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, Rails, AJAX 等等。无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作。协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的...

2018-06-03 19:31:11 247

原创 应用层协议:DNS域名系统

域名系统概述 域名系统(DNS)是一种用于TCP/IP应用程序中的分布式系统,它提供主机名字和IP地址之间的转换以及有关电子邮件的选路信息。这里提到的分布式是指在Internet上的单个站点不能拥有所有的信息。每个站点(如大学中的系,校园,公司,或者公司中的部门)保留它自己的信息数据库,并运行一个服务器程序供Internet上的其他系统(客户程序)查询。从应用的角度来说,对DNS的访问是通过...

2018-05-31 15:54:32 1247

原创 OAuth 2.0 认证流程

首先,感谢阮一峰学长的 OAuth 2.0 耗子吴大哥的 OAuth 认证流程详解,看完之后都感觉受益匪浅。但是,项目中军哥对OAuth授权协议的使用,还是有些不一样的地方。写下这篇博文,希望做一些对比,可以加深对加深对ominiauth的理解。使用场景 很多网站、APP 弱化甚至没有搭建自己的账号体系,而是直接使用社会化登录的方式,这样不仅免去了用户注册账号的麻烦、还可以获取用户的好友关...

2018-05-22 00:17:57 3804

原创 数字证书

看多很多次数字证书的知识,总是看了忘,忘了再看,看了又忘,是时候好好总结一下了。 感谢敏捷的水大哥,讲得很生动很透彻。中间人攻击 先来看看中间人攻击的概念。假如刘冬和黄丽之间要互换小情书,总要有一个信使,那就是张叔叔。这个人可能就是中间人,对所加密对内容进行攻击。下面来看看步骤:张叔叔自己生成一个公私钥,和冬冬以及丽丽交换张叔叔冒充丽丽把自己的公钥发给冬冬冬冬用张叔叔的公钥对信件...

2018-05-15 10:06:30 2373 1

原创 Git版本控制(5) —— 分支管理策略

这一节来介绍两个骚操作:有时候当我们要切换分支,但是两个分支之间有冲突,这在feature分支版本控制的时候,是经常发生的。比如说,当我从一个分支切回master分支时,如果你的修改还保留在工作区和暂存区(只add,但是没有commit),冲突时常会发生。以前我经常就是直接放弃某个分支的修改(commit + git reset -hard commit-id), 这是十分愚蠢的做法。git ...

2018-05-13 16:29:07 1404

原创 Git版本控制(4) ——远程操作详解

上一节介绍了如果创建远程仓库,这一节我们再来学习一些远程操作详解详解。

2018-05-13 13:43:46 177

原创 Ruby中的self剖析

这部分其实也是基础知识的一部分,但是这是元编程很重要的一环,所以单独拿出来写一下,希望可以帮助自己的更好理解它的思想和用法。self上下文 Ruby的self有和Java的this已经C++的this指针都有相似之处,但又大不相同。Java的方法都是在实例方法中引用,所以this一般都是指向当前对象的。而 Ruby的代码逐行执行,所以在不同的上下文(context)self就有了不同的含义...

2018-05-10 01:16:29 4659

原创 rails on ruby,ruby on rails 之对象模型与方法(二)

类宏 先让我们来看看下面的例子,它来自ruby内核,关于attr_accessor的使用。在Ruby对象中没有属性,如果你你希望有一些像属性的东西,就得定义两个拟态的方法,一个读方法和一个写方法:class_definition/attr.rb:class Myclass def my_attribute=(value) @my_attribute = value en...

2018-05-01 13:08:22 247

原创 rails on ruby,ruby on rails 之 Active Record

Active Record是Rails提供的对象关系映射(Object-Relational Mapping,ORM)层,是 Rails 中负责实现应用模型的部分。 一个 ApplicationRecord 子类(例如我们定义的 Order 类)对应一个数据库表。默认情况下,Rails假定模型类对应的表名使用类名的复数形式。如果类名包含多个首字母大写的单词,则表名使用下划线分隔单词。下面提供几个...

2018-05-01 12:21:57 313

原创 rails on ruby,ruby on rails 之代码块(一)

代码块 终于来到代码块的知识,其实这个函数式编程语言中比较晦涩难懂的一部分。其实,我们在举method_missing方法例子的时候已经用过一次块。这里再举一个更直观的例子:blocks/basics_failure.rbdef a_method(a,b) a + yeild(a, b)end a_method(1,2) { |x, y| (x+y)*3 } #=>1...

2018-04-30 16:18:05 317

原创 rails on ruby,ruby on rails 之nginx + puma + mina 部署

这篇博文是部署相关的内容,首先我们先来记录一些比较常识性的知识。 写这篇博文的原因呢,是因为我在查找资料的时候在知乎看到一个帖子:Rails、Nginx、Passenger、bundle,这几者是怎么协作的?我在公司的月报总结里面写到,自己对整个框架的理解还不是很清晰,需要整理成一些可具化的东西,所以开始写这篇博文。先来明确bundle的问题:Bundle是Gem包的依赖管理工具,RubyGe...

2018-04-29 17:58:16 545

原创 rails on ruby,ruby on rails 之Action Dispatch

Action Pack 是 Rails 应用的核心,包含三个 Ruby 模块:ActionDispatch、ActionController 和 ActionView。 Action Dispatch 负责把请求分派给控制器,就是我我们平时所说的路由; Action Controller 处理请求,得到响应; Action View 供 Action Controller 使用,用于格式化响应。以...

2018-04-28 09:08:43 335

原创 rails on ruby,ruby on rails 之对象模型与方法(一)

include的使用: 在类定义中,引入模块,使模块中的方法成为类的实例方法extend的使用: 也是在类定义中引入模块,使模块中的方法成为类的类方法命名空间使用小结: 一般来说,在模块定一种定义一个类使得这个类能在自己独立的namespace里。这样你的类就不会因为和其它模块中的类重名而出问题。module Foo class Joy def initia...

2018-04-24 00:55:25 627

原创 Linux 和 vim 常用指令

Linux和Windows之间的文件夹共享sudo apt-get install open-vm-dkmssudo vmhgfs-fuse .host:/linux-share /mnt/hgfs

2017-08-21 14:16:49 294

原创 启明星辰面试总结

本来我以为启明星辰里面的办公环境会有多么高大上,但结果进去一看,和爱立信相比,也还是不行。 到那里先做了一份笔试题,题目一会upload上来。我突然发现linux c的线下笔试题套路都差不多,但是我对于c位运算都不是太熟悉,还有结构体,得赶紧补补。 面试官一上来还是先问FTP的协议实现,然后问了socket怎么设置超时参数,比如你socket服务器一直socket不上(我也不知道表述的是否正确)

2017-08-11 07:26:06 11453 4

原创 中国信息安全测评中心面试总结

首先,我发现不太熟悉通信领域的面试官,一上来总会先问你熟悉什么通信协议,惭愧啊,我居然没有概念…… 然后,他问了关于ICMP的知识,我回到主要是差错报文,其实还是端口不可答报文和超时报文,和重定向报文。ping是ICMP回显请求报文和ICMP回显应答报文,traceroute是ICMP超时报文和端口不可达报文 之后面试官问了socket在哪一层,我回答的是socket是在应用层和网络层之间的接口

2017-08-11 07:12:11 7508 2

原创 Terark面试总结

首先手写是两道算法题: 1. 给一个有序数组,和一个target number, 返回这个数组中一共有多少个target number。 我使用了二分法,但是貌似没有充分理解return low的含义 2. double x 的 int x 次方,leetcode 上的原题,review。两道算法倒是不难,但是面试官问了我有一般的容器有什么,我对这方面的认识及其混乱,靠《STL源码分析》补习之。

2017-08-05 10:13:35 1561

原创 操作系统之汇编语言(2)

现在,让我们看看程序调用过程中汇编操作,一个过程调用包括将数据(以过程参数和返回值的形式), 和控制从代码的一部分传递到令一部分。另外,它还必须在进入是为过程的局部变量分配空间,并在退出时释放这些空间。

2017-04-07 16:08:29 721

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除