代码改变世界

随笔分类 -  开源研究

说说API的防重放机制

2017-03-20 18:19 by 轩脉刃, 31258 阅读, 收藏, 编辑
摘要: 说说API的防重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击。重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果这个正常逻辑是插入数据库操作,那么一旦插入数据库的语句写的不好,就有可能出现多条重复的数据。一旦是比 阅读全文

laravel的消息队列剖析

2017-03-18 10:33 by 轩脉刃, 8531 阅读, 收藏, 编辑
摘要: laravel的消息队列剖析 这篇来自于看到朋友转的58沈剑的一篇文章: "1分钟实现“延迟消息”功能" 在实际工作中也不止遇见过一次这个问题,我在想着以前是怎么处理的呢?我记得当初在上家公司的时候直接使用的是laravel的queue来实现的。当然,这里说的laravel的queue实际上也是基于 阅读全文

说说接口封装

2017-03-09 15:36 by 轩脉刃, 11713 阅读, 收藏, 编辑
摘要: 今天给同事封装了一个接口,说起接口封装的事情,其实其实很有的聊。很多时候,说一个服务好,一个服务烂,实际上都是在吐槽服务队外暴露的接口好坏。不管什么语言,封装接口,抽象起来,就是由一个函数名,若干个参数,若干个返回值组成的。封装的好坏,就在这几个上面。 函数名 首先是函数名。函数名的好坏很明显,我的 阅读全文

shell的exec命令

2017-03-02 21:38 by 轩脉刃, 13029 阅读, 收藏, 编辑
摘要: 工作中遇到运维人员挂supervisor的时候建议启动使用命令control.sh start, 并且在control.sh 里面启动命令: 使用man看下说明,可以看到exec是一个内部命令, 如这里说的exec是将要exec的命令替换当前的这个命令。所以这个意思是 如果你使用了exec之后,你当 阅读全文

Golang汇编命令解读

2016-12-05 10:12 by 轩脉刃, 11048 阅读, 收藏, 编辑
摘要: 我们可以很容易将一个golang程序转变成汇编语言。 比如我写了一个main.go: 使用命令: 我们就获取了main.S是main.go的汇编版本。 首先这个程序根据TEXT是定义函数的,分为3个部分 这个"". 代表的是这个函数的命名空间。 g(SB) 这里就有个SB的伪寄存器。全名未Stati 阅读全文

php内核分析(五)-zval

2016-11-28 10:24 by 轩脉刃, 4577 阅读, 收藏, 编辑
摘要: 这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux 实际上,从这个函数开始,就已经进入到了zend引擎的范围了。 实际上是调用Zend/zend_execute_API.c 再进去是调用 这里的retval_ptr为NULL,string_name为"Command lin 阅读全文

php内核分析(一)-sapi_module_struct

2016-11-21 11:56 by 轩脉刃, 2290 阅读, 收藏, 编辑
摘要: 这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux 首先是寻找php的入口,php有很多种模式,apache,php fpm, cli模式,我要入手的话,只能先从最简单的cli模型开始。 那么,我需要先寻找 这个命令是如何执行的。 首先还是寻找main入口,由于我们看的是命 阅读全文

phpcurl 请求Chunked-Encoded data 遇到的一个问题

2016-10-21 16:51 by 轩脉刃, 3230 阅读, 收藏, 编辑
摘要: 最早出现的问题情况是提供es的部门在es的外部封装了一个gateway做请求中转。 当我们转换到gateway上之后,发现了问题: 有的请求可以获取到数据,有的请求获取不到数据。 仔细分析了业务代码,抽取了一个出问题的业务请求,这个业务请求里面包含了多次对es的请求,只有最后一个es请求抛出异常,其 阅读全文

漫谈TCP

2016-09-26 14:11 by 轩脉刃, 7185 阅读, 收藏, 编辑
摘要: 不得不承认,tcp是一个非常复杂的协议。它包含了RFC793及之后的一些协议。能把tcp的所有方面面面具到地说清楚,本身就是个很复杂的事情。如果再讲得枯燥,那么就会更让人昏昏欲睡了。本文希望能尽量用稍显通俗的话把tcp描述清楚。 关于分层 请忘掉大学课本上学的七层模型,我们使用四层模型更为贴合我们的 阅读全文

谈谈协程

2016-06-17 10:26 by 轩脉刃, 2454 阅读, 收藏, 编辑
摘要: 谈谈协程 关于协程,网上能看到很多资料。这里再自个梳理一下。 协程展开来说,叫做协作的程序,想表达的意思是,两段程序,能协作地,共用公共资源,来完成两段程序各自的目的,就叫做协程了。 把现在所有的容易混淆的名字罗列出来:并发,并行,进程,线程,协程。说说他们的历史。 并发 首先是并发,并发的概念是很 阅读全文

技术晨读_20160611

2016-06-11 23:03 by 轩脉刃, 542 阅读, 收藏, 编辑
摘要: 技术晨读 CPU核数和线程 (池)数量的关系(概念理解) 这篇文章是概念上解释了下是不是CPU核数越高,性能越好,当然理论上并不是的... http://mp.weixin.qq.com/s?__biz=MzA3OTY3OTE1MQ==&mid=403642855&idx=1&sn=d83d2584 阅读全文

大话keepalive

2016-04-05 10:23 by 轩脉刃, 11464 阅读, 收藏, 编辑
摘要: 大话keepalive 我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的。 tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当一方端掉的时候,没有断掉的定时发送几次心跳包,如果间隔发送几次,对方都返回的是 阅读全文

HTTPS协议说明

2016-02-25 10:25 by 轩脉刃, 2676 阅读, 收藏, 编辑
摘要: HTTPS协议说明 基本现在最安全的网络连接就是使用https了,http协议有几个不安全的地方: 传输信息是明文的。 http的传输信息是明文的,基本网络劫持下就束手就擒了。 不能防止篡改。 在网络传输层面是无法防止第三方截取请求,篡改请求,再发送给服务器的。 其实从互联网已开始,网络传输的加密协 阅读全文

技术晨读_20160217

2016-02-17 10:10 by 轩脉刃, 522 阅读, 收藏, 编辑
摘要: 技术导读 Build a RESTful API with Martini 使用martini搭建一个Restful API,使用的是简易的内存database,搭建了一套支持json和xml的RESTFUL的API http://0value.com/build a restful API wit 阅读全文

缓存一致性协议

2016-01-28 15:21 by 轩脉刃, 4288 阅读, 收藏, 编辑
摘要: 缓存一致性协议 操作系统的CPU和内存并不是直接交互操作的。我们的CPU有一级缓存,CPU直接操作一级缓存,由一级缓存和内存进行交互。 当然,有的CPU有二级缓存,甚至三级缓存等。实际上,大概二十年前,一级缓存是直接和内存交互的,现在,一般是二级缓存和内存直接通讯。 每个CPU都有一级缓存,但是,我 阅读全文

说说分布式事务

2016-01-28 15:18 by 轩脉刃, 1021 阅读, 收藏, 编辑
摘要: 分布式事务 分布式事务说的就是一个事务的两个或者多个操作不是在一个数据库中进行的,而是在多个数据库中执行。 这个时候,如何保证事务操作的原子性和一致性? 举个支付的例子,支付进行买东西。事务由两个行为组成,我的购买商品数据表数据+1,支付金额表数据-1。 如果这两个都是在同一库中,没啥问题。 但是这 阅读全文

solr的suggest模块

2016-01-28 15:16 by 轩脉刃, 4296 阅读, 收藏, 编辑
摘要: solr的suggest模块 solr有个suggest模块,用来实现下拉提醒功能,就是输入了一个文本之后,进行文本建议查找的功能。 suggest请求的url 这里可以看到有几个参数: suggest=true 这个参数必须为true,表示我这次请求是suggest请求。 suggest.q 进行 阅读全文

hadoop的概念

2016-01-28 15:03 by 轩脉刃, 708 阅读, 收藏, 编辑
摘要: hadoop的概念 网上会经常遇到各种hadoop的概念,Hive,HBase,Hdfs都各是什么呢? 首先从hdfs说起,hdfs是分布式文件系统,它把集群当作单机一样做文件操作,文件可能存在于多个机器上,具体的存储细节会对使用者隐藏。 "map_reduce" 是一个计算框架,google提出的 阅读全文

mysql的timeout

2015-10-29 10:01 by 轩脉刃, 11651 阅读, 收藏, 编辑
摘要: mysql的timeout 很多时候我们连接mysql会在timeout这里跌倒,这里明确下mysql的timeout: 下面是获取timeout的变量: mysql show global variables like "%timeout%"; + + + | Variable_na... 阅读全文

flexbox简介

2015-10-22 10:29 by 轩脉刃, 3743 阅读, 收藏, 编辑
摘要: flexbox简介 什么是flexboxflexbox是一种新的布局方式,这种布局方式是2009年W3C提出的方案。它可以简便,完整,完成页面的布局。目前,它已经得到所有浏览器的支持。但是flexbox从2009年以来,有各种版本的变化,比如2009年版本和2011年版本差别比较大。 为什么要有f... 阅读全文