代码改变世界

随笔分类 - 开源研究

从零开始搭建运维体系 - ansible

2018-12-17 14:27 by 轩脉刃, 995 阅读, 收藏, 编辑
摘要:从零开始搭建运维体系 ansible 基本配置好了局域网内的机器后,第一个遇到的问题就是如何批量操作这么多台机器,ansible就是这么一个自动化运维工具。 ansible是一个基于ssh的批量远程操作命令工具。它有分管理端和被管理端,管理端安装ansible,被管理端什么都不需要安装。这个是非常方 阅读全文

从零开始搭建运维体系 - 开始篇

2018-12-15 22:01 by 轩脉刃, 457 阅读, 收藏, 编辑
摘要:从零开始搭建运维体系 开始篇 如果给你一批机器,并且这一批机器在和外部不通的局域网内部,让你从零开始搭建一套运维体系,应该怎么做呢?有哪些开源工具和项目可以使用呢?这个系列的文章就想带大家一起讨论这个问题。 重现场景 首先我们需要使用vagrant搭建3台centos7的机器,这三台机器使用的配置大 阅读全文

webdav 概览

2018-08-14 21:08 by 轩脉刃, 439 阅读, 收藏, 编辑
摘要:webdav 概览 WebDav(Web Distributed Authoring and Versioning) 是一个控制远端Web资源的协议,它基于HTTP1.1。它的定义在RFC 4918(https://tools.ietf.org/html/rfc4918)。这个协议的场景可以是分布式 阅读全文

c 编译器大全

2018-06-12 15:50 by 轩脉刃, 1057 阅读, 收藏, 编辑
摘要:c 编译器大全 看了下nginx的auto/cc下的目录,nginx对多种c语言的编辑器都进行了支持。才知道c语言有那么多编辑器。 编译器原理 所谓编译器,就是执行下面的三步骤: 1 将目标语言转换为AST抽象语法树 2 优化抽象语法树 3 将抽象语法树转化为适用于各个系统架构的指令集 各种编译器 阅读全文

UUID那些事

2018-05-16 12:25 by 轩脉刃, 2543 阅读, 收藏, 编辑
摘要:UUID那些事 "UUID" 是一个全局唯一的通用识别码。它使用某种规则,而不是某种中心化的自增方式,来保证这个识别码的全局唯一性。UUID 有非常多的使用场景,比如在分布式系统中,需要生成全局唯一 ID 来进行日志记录。UUID 的生成规则由 "rfc4122" 来进行定义。 UUID 和 GUI 阅读全文

Scala中的override

2017-12-12 10:30 by 轩脉刃, 3594 阅读, 收藏, 编辑
摘要:Scala中的override override是覆盖的意思,在很多语言中都有,在scala中,override是非常常见的,在类继承方面,它和java不一样,不是可写可不写的了,而是必须写的。如果不写而覆盖了对应的属性或者方法的话,编译器就会报错了。今天把scala中的override的各种地方都 阅读全文

spark的sparkUI如何解读?

2017-11-01 07:44 by 轩脉刃, 3390 阅读, 收藏, 编辑
摘要:spark的sparkUI如何解读? 以spark2.1.4来做例子 Job schedule mode 进入之后默认是进入spark job 页面 这个说明有很详细的解释,spark有两种操作算子:转换算子(transformation)和执行算子(Action)。当执行到行为算子的时候,就出发了 阅读全文

spark在idea中本地如何运行?(处理问题NoSuchFieldException: SHUTDOWN_HOOK_PRIORITY)

2017-10-20 15:49 by 轩脉刃, 992 阅读, 收藏, 编辑
摘要:spark在idea中本地如何运行? 前几天尝试使用idea在本地运行spark+scala的程序,出现了问题,http://www.cnblogs.com/yjf512/p/7662105.html 当时还以为是本地spark安装问题,今天发现原来不是。记录如下: 现象 使用pom写了一个程序,发 阅读全文

初识hadoop

2017-05-05 18:32 by 轩脉刃, 452 阅读, 收藏, 编辑
摘要:初识hadoop 概念 hadoop首先是大数据领域。大数据领域至少是分布式的,分布式数据必然是有一定规模了。如果数据只有几个G或者更小就没有什么意义了。 hadoop最核心的概念就是HDFS和MapReduce。hadoop的源码在github上也有对应的开源:https://github.com 阅读全文

查询运营商的ip段

2017-03-30 06:39 by 轩脉刃, 2502 阅读, 收藏, 编辑
摘要:查询运营商的ip段 所有的IP地址都是通过国际组织NIC(Network Information Center)统一分配的,目前世界上有三个这样的网络信息中心: InterNic: 负责美国及其他地区 ENic: 负责欧洲地区 APNIC: 负责亚太地区 像我们中国的所有运营商,比如六大运营商(中国 阅读全文

解锁redis锁的正确姿势

2017-03-22 07:11 by 轩脉刃, 8370 阅读, 收藏, 编辑
摘要:解锁redis锁的正确姿势 redis是php的好朋友,在php写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为。这个时候我们就要用到锁。锁的方式有好几种,php不能在内存中用锁,不能使用zookeeper加锁,使用数据库做锁又消耗比较大,这个时候我们一般会选用redis做锁机 阅读全文

说说API的防重放机制

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

laravel的消息队列剖析

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

说说接口封装

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

shell的exec命令

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

Golang汇编命令解读

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

php内核分析(五)-zval

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

漫谈TCP

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

谈谈协程

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

技术晨读_20160611

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

大话keepalive

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

HTTPS协议说明

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

技术晨读_20160217

2016-02-17 10:10 by 轩脉刃, 350 阅读, 收藏, 编辑
摘要:技术导读 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 轩脉刃, 3625 阅读, 收藏, 编辑
摘要:缓存一致性协议 操作系统的CPU和内存并不是直接交互操作的。我们的CPU有一级缓存,CPU直接操作一级缓存,由一级缓存和内存进行交互。 当然,有的CPU有二级缓存,甚至三级缓存等。实际上,大概二十年前,一级缓存是直接和内存交互的,现在,一般是二级缓存和内存直接通讯。 每个CPU都有一级缓存,但是,我 阅读全文

说说分布式事务

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

solr的suggest模块

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

hadoop的概念

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

mysql的timeout

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

flexbox简介

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

内存那些事

2015-10-16 12:09 by 轩脉刃, 1539 阅读, 收藏, 编辑
摘要:内存那些事 linux中的free m可以查看当前的内存使用情况 [yejianfeng@iZ23fsd ~]$ free m total used free shared buffers cached Mem: 7869 7737 132 0 489 4419 /+ buffers/... 阅读全文

elasticsearch 文档

2015-10-12 11:54 by 轩脉刃, 8667 阅读, 收藏, 编辑
摘要:elasticsearch 文档 文档格式 索引中最基本的单元叫做文档 document. 在es中文档的示例如下: 文档中下划线开头的是es自带的字段 \_index 代表索引名 \_type 代表类型 \_id 代表文档id,如果插入文档的时候没有设置id的话,那么es会... 阅读全文

elasticsearch 集群

2015-10-10 09:56 by 轩脉刃, 26383 阅读, 收藏, 编辑
摘要:elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他们搭建成为一个集群 基本配置 每个节点都要进行这样的配置: cluster.name: baichebao cluster 这个是配置集群的名字,为了能进行自动查找 no... 阅读全文

elasticsearch中的API

2015-10-09 09:47 by 轩脉刃, 30142 阅读, 收藏, 编辑
摘要:elasticsearch中的API es中的API按照大类分为下面几种: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作 查看API: 按照更直观的形式返回数据,更适用于控制台请求展示 集群API: 对集群进行查... 阅读全文

lucene 的评分机制

2015-10-08 09:46 by 轩脉刃, 8885 阅读, 收藏, 编辑
摘要:lucene 的评分机制 elasticsearch是基于lucene的,所以他的评分机制也是基于lucene的。评分就是我们搜索的短语和索引中每篇文档的相关度打分。 如果没有干预评分算法的时候,每次查询,lucene会基于一个评分算法来计算所有文档和搜索语句的相关评分。 使用lucene的评分... 阅读全文

安装elasticsearch及中文IK和近义词配置

2015-09-07 16:34 by 轩脉刃, 11741 阅读, 收藏, 编辑
摘要:安装elasticsearch及中文IK和近义词配置 安装java环境 java环境是elasticsearch安装必须的 安装elasticsearch 其实es的安装非常简单了 安装head插件 head插件让我们能更简单管理elasticsearch 访问... 阅读全文

输入URL之后都发生了什么

2015-06-12 15:02 by 轩脉刃, 3800 阅读, 收藏, 编辑
摘要:# 输入URL之后都发生了什么这个标题印象中已经有很多讨论了。也来说说这个话题。从头开始,当你的电脑使用网线连接到网络的时候,我们都知道,这个时候你的电脑会获取一个IP,这个IP就是你的唯一标识了。好了继续,你在浏览器中敲入了http://www.sina.com,开始你的网络之旅。那么这个时候问题... 阅读全文

elk收集分析nginx access日志

2015-06-11 09:59 by 轩脉刃, 16011 阅读, 收藏, 编辑
摘要:# elk收集分析nginx access日志首先elk的搭建按照这篇文章[使用elk+redis搭建nginx日志分析平台](http://www.cnblogs.com/yjf512/p/4199105.html)说的,使用redis的push和pop做队列,然后有个logstash_index... 阅读全文

postgres配置主从流复制

2015-05-13 10:11 by 轩脉刃, 27911 阅读, 收藏, 编辑
摘要:# postgres主从流复制postgres在9.0之后引入了主从的流复制机制,所谓流复制,就是从库通过tcp流从主库中同步相应的数据。postgres的主从看过一个视频,大概效率为3w多事务qps。postgres的主从主称之为primary,从称为stand_by。主从配置需要注意的一个是主从... 阅读全文

postgres中几个复杂的sql语句

2015-04-16 10:40 by 轩脉刃, 5073 阅读, 收藏, 编辑
摘要:# postgres中几个复杂的sql语句# 需求一需要获取一个问题列表,这个问题列表的排序方式是分为两个部分,第一部分是一个已有的数组[0,579489,579482,579453,561983,561990,562083] 第二个部分是按照id进行排序,但是需要过滤掉前面已有的数组。最开始的时候... 阅读全文

postgres中的中文分词zhparser

2015-04-09 10:32 by 轩脉刃, 3426 阅读, 收藏, 编辑
摘要:# postgres中的中文分词zhparser## postgres中的中文分词方法基本查了下网络,postgres的中文分词大概有两种方法:* Bamboo* zhparser其中的Bamboo安装和使用都比较复杂,所以我选择的是zhparser## zhparse基于scws[scws](ht... 阅读全文

postgres中的视图和物化视图

2015-04-08 12:48 by 轩脉刃, 11061 阅读, 收藏, 编辑
摘要:# 视图和物化视图区别postgres中的视图和mysql中的视图是一样的,在查询的时候进行扫描子表的操作,而物化视图则是实实在在地将数据存成一张表。说说版本,物化视图是在9.3 之后才有的逻辑。# 比较下视图和物化视图的性能创建两个表 CREATE TABLE teacher ( ... 阅读全文

安装thrift

2015-03-13 11:27 by 轩脉刃, 1887 阅读, 收藏, 编辑
摘要:# 要求thrift至少需要支持三种语言:* Java* PHP* Go# 预安装```基本教程:http://thrift.apache.org/docs/install/centos```使用最新的thrift,不要使用9.2版本以下## 安装autoconf```wget http://ftp... 阅读全文

mysql的collation

2015-01-19 13:41 by 轩脉刃, 15492 阅读, 收藏, 编辑
摘要:mysql的collation大致的意思就是字符序。首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则。collation做的就是这个事情,你可以对表进行字符序的设置,也可以单独对某个字段进行字符序的设置。一个字符类型,它的字符序有多个,比如:下面是UTF8对应的字符... 阅读全文

使用elk+redis搭建nginx日志分析平台

2015-01-03 07:46 by 轩脉刃, 71542 阅读, 收藏, 编辑
摘要:elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队列,redis的list结构正好可以作为队列使用。然后分... 阅读全文

安装logstash,elasticsearch,kibana三件套

2014-12-30 16:49 by 轩脉刃, 51507 阅读, 收藏, 编辑
摘要:logstash,elasticsearch,kibana三件套 elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意: 关于安装文档,网络上有很多,可以参考,不可以全信,而且三件套各自的版本很多,差别也不一样,需要版本匹配上才... 阅读全文

技术晨读_2014_12_22

2014-12-22 13:48 by 轩脉刃, 523 阅读, 收藏, 编辑
摘要:#技术晨读#varchar和text说不清那些事mysql中大变长字段缺点就是占用了buffer pool,对内存使用造成浪费。varchar在长度超过255之后和text在存储机制上就是一样的了。所以varchar大字段一样会降低性能。http://wubx.net/varchar-vs-text... 阅读全文

每日晨读_20141127

2014-11-17 09:31 by 轩脉刃, 548 阅读, 收藏, 编辑
摘要:#技术晨读#浅谈Heatmap怎么通过js,做打点,然后渲染出热点图,就和GA一样的那个玩意...http://huoding.com/2011/01/04/39#技术晨读#Jquery插件库刚开工,水一下,感觉很酷的jquey插件库http://www.jq22.com/#技术X读#关于用 MyS... 阅读全文

每日晨读_20140924

2014-09-29 09:56 by 轩脉刃, 388 阅读, 收藏, 编辑
摘要:#技术晨读#HttpOnly隐私嗅探器cookie的HttpOnly保证了cookie不会被js泄漏,但是总有一些办法绕过httponly,如何来检测我的httponly的cookie是不是泄漏了呢?作者就做了这么个事情…http://drops.wooyun.org/tips/2834#技术晨读#... 阅读全文

技术晨读_2014_9_1

2014-09-01 12:58 by 轩脉刃, 716 阅读, 收藏, 编辑
摘要:#技术晨报#NoSQL反模式 – 文档数据库篇文章说的是关系型数据库怎么转换为文档型数据库,比如mongoDB...http://blog.nosqlfan.com/html/4156.html#技术晨读#DDOS攻防战这是系列文章,目前到第三讲,讲了下DDOS攻击方式和原理及防守方式及原理。Web... 阅读全文

大话PHP缓存头

2014-07-22 10:50 by 轩脉刃, 2078 阅读, 收藏, 编辑
摘要:304的请求机制和200有什么不一样呢?在fiddler中查看304请求的时候突然想到这个问题,就想到研究下这个304请求机制了。 我们自己在nginx上放一个文件,test.png。可以使用下面的地址进行访问: http://test.yejianfeng.com/test.png nginx配置文件如下: 这个的etag关闭是由于nginx默认是开启etag的,说明见ngx_... 阅读全文

vim黏贴自动增加tab的毛病

2014-07-09 16:39 by 轩脉刃, 830 阅读, 收藏, 编辑
摘要:vim在ctrl + p的时候有可能会自动给你增加了个tab 很是郁闷 解决方法如下: :set noautoindent :set nosmartindent 阅读全文

每日晨读_20140705

2014-07-05 02:21 by 轩脉刃, 1036 阅读, 收藏, 编辑
摘要:#技术晨读# 分布式缓存的一起问题 数据一致性一直是分布式缓存最需要考虑的问题,文章的这起问题场景就是master缓存集群出现了单点故障,有什么方案能避免切换导致的数据一致性的问题。 http://timyang.net/data/cache-failure/ #技术晨读# 一次成功的漫游京东内部网络的过程 题目很唬人,实际就是一个开发把邮箱密码放到了github上,导致了后续的... 阅读全文

记录一个mysql连接慢的问题

2014-06-23 12:05 by 轩脉刃, 1697 阅读, 收藏, 编辑
摘要:问题现象是这样的:我在一台机器上(61.183.23.23)启动了一个mysql,然后开通一个账号可以从127.0.0.1或者从61.183.23.23访问。但是遇到一个问题就是使用下面两个命令行访问的时候,速度差别非常大:mysql –h 127.0.0.1 –u usermysql –h 61.... 阅读全文

ffmpeg使用转码学习

2014-06-17 21:36 by 轩脉刃, 13185 阅读, 收藏, 编辑
摘要:ffmpeg在官网上描述自身:是一个对视频和音频进行记录,转换,流化的完整的跨平台解决方案。事实上,现在有很多工具都是基于ffmpeg来进行视频音频的处理工具的。比如鼎鼎大名的格式工厂,就是使用ffmpeg来作为内核的转码工具。理解一些音视频的编码知识。我们平时看的视频文件格式:mp4/rmvb/m... 阅读全文

技术晨读_20140421

2014-04-21 10:12 by 轩脉刃, 408 阅读, 收藏, 编辑
摘要:#技术晨读# phoneGap试用手记 phoneGap是个手机app的壳子,方便原来做web开发的同事快速切入移动端开发,可以快速生成ios和android的移动端app。 http://2014.54chen.com/blog/2014/03/19/how-to-use-phonegap/ #技术晨读# IO不再神秘 这是篇译文,关注的是IO模型,和IO的设计模式。筒子们,再... 阅读全文

rsync密码使用要注意的几个点

2014-04-18 11:17 by 轩脉刃, 323 阅读, 收藏, 编辑
摘要:1 客户端和服务端的密码文件不一样 服务端的密码文件格式是: 用户名:密码 比如: yejianfeng:123456 客户端的密码文件格式是: 密码: 比如 123456 所以如果一个机器即有可能是rsync服务端,又有可能是rsync客户端,建议密码文件使用不同名字: yejianfeng.sec.server yejianfeng.sec.client 2... 阅读全文

chrome dev debug network 的timeline说明

2014-04-16 16:13 by 轩脉刃, 8778 阅读, 收藏, 编辑
摘要:在使用chrome的时候F12的开发者工具中有个network,其中对每个请求有个timeline的说明,当鼠标放上去会有下面的显示:这里面的几个指标在说明在chrome使用文档有说明:下面我用人类的语言理解下:Proxy与代理服务器的连接时间。比如我使用了switch proxy搭建了一个gae,... 阅读全文

nginx日志分析利器GoAccess

2014-04-02 12:17 by 轩脉刃, 48159 阅读, 收藏, 编辑
摘要:面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了。对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快。满足这三点的goaccess确实是居家必备良药。话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的。你也可以用它来分析apache,IIS的日志,甚至你自己写的web服务,当然前提是你需要定义好解析的日志格式。诚如见到一个美女, 阅读全文

技术晨报_2014/3/23

2014-03-23 22:18 by 轩脉刃, 520 阅读, 收藏, 编辑
摘要:#技术晨报# OPTIMIZING NGINX FOR HIGH TRAFFIC LOADS 这篇文章说了作者在使用nginx+php的过程中的一些高并发压力下的优化经验,文章读完之后很有思考性,这个地方我的项目设置了么,按照文章的设置会不会更好之类的... http://blog.martinfjordvald.com/2011/04/optimizing-nginx-for-high-t... 阅读全文

sphinx 配置文件全解析

2014-03-13 12:56 by 轩脉刃, 34466 阅读, 收藏, 编辑
摘要:sphinx的配置文件是在配置的时候最容易出错的了:# 我们先要明白几个概念:- source:数据源,数据是从什么地方来的。- index:索引,当有数据源之后,从数据源处构建索引。索引实际上就是相当于一个字典检索。有了整本字典内容以后,才会有字典检索。- searchd:提供搜索查询服务。它一般是以deamon的形式运行在后台的。- indexer:构建索引的服务。当要重新构建索引的时候,就是调用indexer这个命令。- attr:属性,属性是存在索引中的,它不进行全文索引,但是可以用于过滤和排序。sphinx的配置文件过于冗长,我们把sphinx默认的配置文件中的注释部分去掉,重新进行 阅读全文

Coreseek + Sphinx + Mysql + PHP构建中文检索引擎

2014-03-05 10:26 by 轩脉刃, 29353 阅读, 收藏, 编辑
摘要:首先明确几个概念 Sphinx是开源的搜索引擎,它支持英文的全文检索。所以如果单独搭建Sphinx,你就已经可以使用全文索引了。但是往往我们要求的是中文索引,怎么做呢?国人提供了一个可供企业使用的,基于Sphinx的中文全文检索引擎。也就是说Coreseek实际上的内核还是Sphinx。那么他们的版本对应呢? Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本是2... 阅读全文

技术晨读(二)

2014-02-10 10:06 by 轩脉刃, 624 阅读, 收藏, 编辑
摘要:#技术晨报# Javascript之Web通信 文章题目很大,说的是Web通信的知识,但是主要想说的还是客户端和服务端的消息推送的机制,消息推送机制不外乎推和拉... http://www.cnblogs.com/hustskyking/p/web-communication.html #技术晨报# 如何正确配置Nginx+PHP 本文说了几个配置nginx+php的坏味道,比如,t... 阅读全文

生产者消费者模型

2013-12-05 20:59 by 轩脉刃, 673 阅读, 收藏, 编辑
摘要:生产者消费者问题 最基本的是生产者生产出数据,消费者来获取数据,但是生产者消费者模型必须保证的是: 1 同一时间只会有一个生产者或者一个消费者会进行生产/消费 2 生产者或者消费者会操作一个缓冲区,这个缓冲区有大小 3 如果缓冲区数据达到大小上限,生产者没办法往缓冲区生产数据 4 如果缓冲区数据达到大小下限(即缓冲区内没有数据),消费者没有办法从缓冲区中消费数据 基于上面这几个条件,一个... 阅读全文

好文收藏系列(三)

2013-10-21 20:09 by 轩脉刃, 1191 阅读, 收藏, 编辑
摘要:Linux 的启动流程 http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 8天学通MongoDB——第三天 细说高级操作 http://www.cnblogs.com/huangxincheng/archive/2012/02/21/2361205.html Javascript执行效率小结 http... 阅读全文

sublime text3 安装package

2013-10-14 09:56 by 轩脉刃, 2227 阅读, 收藏, 编辑
摘要:在sublime text2中安装package control插件的时候是执行python: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; ... 阅读全文

SystemTap知识(一)

2013-08-28 09:05 by 轩脉刃, 2277 阅读, 收藏, 编辑
摘要:SystemTap是一个系统的跟踪探测工具。它能让用户来跟踪和研究计算机系统在底层的实现。 安装SystemTap需要为你的系统内核安装-devel,-debuginfo,-debuginfo-common包 使用下面的repo可以进行debuginfo的安装 [debuggery] name=CentOS-$releasever - DebugInfo baseurl=http://d... 阅读全文

redis主从遇到的两个坑

2013-08-26 19:04 by 轩脉刃, 8949 阅读, 收藏, 编辑
摘要:最近在使用redis主从的时候做了下面两件事情: 1 希望redis主从从操作上分析,所有写操作都在master上写,所有读操作都在从上读。 2 由于redis的从是放在本地的,所以有的key的读写操作就直接放在从上操作了。 但是出现了下面的几个问题: 1 在主上setex的key即使过期后在从上也始终get的到。 重现: 主: setex abc 20 test 从: get a... 阅读全文

SystemTap了解

2013-08-20 15:07 by 轩脉刃, 459 阅读, 收藏, 编辑
摘要:SystemTrap是监控和跟踪运行中的Linux内核操作的动态方法。 http://www.ibm.com/developerworks/cn/linux/l-systemtap/ 使用SystemTrap需要使用trap来运行一个stp脚本 如何安装: Centos下直接yum install systemtrap就行了 测试是否可以运行 运行:stap -ve 'probe be... 阅读全文

HTTP缓存相关头

2013-08-08 00:21 by 轩脉刃, 9198 阅读, 收藏, 编辑
摘要:本文说的是HTTP中控制客户端缓存的头有哪些。网上这方面的文章很多了,这里就说下个人的理解。 在请求一个静态文件的时候(图片,css,js)等,这些文件的特点是文件不经常变化,将这些不经常变化的文件存储起来,对客户端来说是一个优化用户浏览体验的方法。那么这个就是客户端缓存的意义了。 windows下客户端的缓存文件存放在临时文件夹中,但是这里有个问题就是这个缓存文件存放多久呢?这个是由服... 阅读全文

Mysql的NULL的一个注意点

2013-07-31 18:48 by 轩脉刃, 302 阅读, 收藏, 编辑
摘要:今天看到一个问题: select a.* from a where (a.id not in (NULL)); 这个sql语句会返回什么? 刚开始以为是返回所有item,但是实际运行下返回是返回empty set。 看了下手册: http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html 判断一个字段是否是NULL只能使... 阅读全文

谈Mysql索引

2013-07-17 08:31 by 轩脉刃, 1209 阅读, 收藏, 编辑
摘要:myisam和innodb的索引有什么区别? 两个索引都是B+树索引,但是myisam的表存储和索引存储是分开的,索引存储中存放的是表的地址。而innodb表存储本身就是一个B+树,它是用主键来做B+树的key的。 因此innodb需要设置主键,如果没有的话,mysql会优先使用unique键做主键,如果没有unique的话,会生成一个隐含字段做主键。 innodb中的主键最好是要使用自增i... 阅读全文

Symfony学习--目录和入口

2013-05-16 10:09 by 轩脉刃, 5694 阅读, 收藏, 编辑
摘要:1 目录结构 根目录下有: app src vendor web app是存放应用的一些配置文件,如果有一些配置文件或者文档,应当存放在这里面。 src是存放你的项目的php代码,这里的php至少必须是5.3,因为symfony中使用了命名空间的概念。 vendor是存放第三方代码的目录,这个目录可能非常庞大,因为symfony大量使用了第三方bundle的概念,连自身都是作为一个... 阅读全文

好文收藏系列(二)

2013-05-08 15:14 by 轩脉刃, 1638 阅读, 收藏, 编辑
摘要:分析redis性能的项目 https://github.com/Instagram/redis-faina DB性能分析思路之全量query分析 http://txyey.org/?p=60 如何创建自适应系统来增强用户体验 http://www.alibuybuy.com/posts/81152.html#jtss-tsina PS: 自适应系统的概念 Golan... 阅读全文

Linux下安装tomcat+jdk+mysql记录

2013-04-21 16:32 by 轩脉刃, 2691 阅读, 收藏, 编辑
摘要:先安装JDK下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htmlwgethttp://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz?AuthParam=1366529379_f7fe2af81268eee41771542b3191968cmv jdk-7u21-linux-x64.tar.gz\?AuthParam\=1366529379_f7fe2af81268eee41 阅读全文

关于正则的迷思

2013-04-15 10:07 by 轩脉刃, 1970 阅读, 收藏, 编辑
摘要:正则是我们日常编程中一定会使用到的,不管是各种语言中的正则匹配,还是linux/unix系统上的grep/egrep命令,都是在使用正则来匹配字符串。随着用的深入,可能会感到越来越迷惑:为什么有的语言要提供多种正则匹配的函数集?-- 比如php的preg系列和ereg系列为什么有的正则语句在不同的语言上匹配出来的东西是不一样的?-- 比如unix的grep命令和perl语言的grep故事从头开始讲正则表达式(Regular Expression)从1956年就开始出现这个概念,后来Unix之父Ken Tompson将这个概念引入Unix,出现了grep工具。但是随着Unix的版本不断演化,Un 阅读全文

论HTTP请求大小

2013-03-29 09:55 by 轩脉刃, 38688 阅读, 收藏, 编辑
摘要:HTTP分为URI,HEADER,Body三个部分。每个部分都可以包含请求信息,那么每个部分是否都有请求大小限制呢?刚开始以为这个问题很容易找到答案,后来发现这也是个挺复杂的问题。URI首先是URI,我们知道,在GET请求中,请求参数是放在URL进行传递的,所以,HTTP GET的请求最关心的一个问题:能有多长?我能放多少参数?URI从HTTP 1.1协议中开始找:(RFC 2616)The HTTP protocol does not place any a priori limit on the length of a URI所以明确一点的是HTTP协议是没有显式限制URI的长度的。理论上 阅读全文

好文收藏系列(一)

2013-03-26 13:26 by 轩脉刃, 2059 阅读, 收藏, 编辑
摘要:好多好文章看完就直接丢了,或者放在浏览器标签内,但是标签多了也会烦,以后一段时间整理下放blog上。 用 Go 实现零停机升级 TCP 服务 http://www.mikespook.com/2012/05/%E7%BF%BB%E8%AF%91%E7%94%A8-go-%E5%AE%9E%E7%8E%B0%E9%9B%B6%E5%81%9C%E6%9C%BA%E5%8D%87%E7%BA... 阅读全文

MongoDB应用学习

2013-03-18 14:15 by 轩脉刃, 1656 阅读, 收藏, 编辑
摘要:创建数据库可以直接使用use test 但是这个时候show dbs是看不到的,只有加入了数据才算真正创建了。 collection对应mysql中表的概念 collection中每条数据在生成的时候会自行生成_id的字段 db.pet.find() 相当于select * from pet > db.pet.find() { "_id" : ObjectId("513... 阅读全文

关于websocket

2013-03-11 09:54 by 轩脉刃, 26845 阅读, 收藏, 编辑
摘要:这个是一次组内分享,关于websocket的协议和应用的。文章在分享之前就写好了,整理下放出来。对应的PPT地址是:http://websocket.funaio.com从推送技术开始说一篇文章10 Years of Push Technology, Comet, and WebSockets(http://cometdaily.com/2011/07/06/push-technology-comet-and-websockets-10-years-of-history-from-lightstreamers-perspective/)非常详细的说明清楚了从1996-2007年推送技术的更新。 阅读全文

聊天室服务分析设计

2013-03-05 09:52 by 轩脉刃, 15403 阅读, 收藏, 编辑
摘要:如果你需要写一个简单的聊天室的服务,那么我想很多网上的demo都可以直接拿来用。但是如果你要做的是给线上百万甚至千万级用户用的服务,那么,整个结构和聊天室Demo是必然不一样的。本文就从设计一个大用户量的聊天室服务的角度出发来思考。 分布式? 首先用户量大必然先考虑的问题是服务是单进程还是多进程,单机器还是多机器,单进程代表的是单机上跑一个服务,单机器代表的是单机上跑一个或者多个服务,这两种方... 阅读全文

CGI的一些知识点

2012-12-24 11:31 by 轩脉刃, 5069 阅读, 收藏, 编辑
摘要:CGI(Common Gateway Interface)是能让web服务器和CGI脚本共同处理客户的请求的协议。它的协议定义文档是http://www.ietf.org/rfc/rfc3875。 其中Web服务器负责管理连接,数据传输,网络交互等。至于CGI脚本就负责管理具体的业务逻辑。 Web服务器的功能是将客户端请求(HTTP Request)转换成CGI脚本请求,然后执行脚本,接着将CGI... 阅读全文

mysql那些招

2012-11-22 13:04 by 轩脉刃, 1943 阅读, 收藏, 编辑
摘要:show table status mysql官方文档在 http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html 这里的rows行是表的行数,但是实际上是不准的。myisam是准的,其他的存储引擎是不准的。要准确的行数就需要使用count(*) 来获取了。 mysql执行大批量删除 执行大批量删除的时候注意要使用上limit 因为如果不用limit,删除大量数据很有可能造成死锁 如果delete的where语句不在索引上,可以先找主键,然后根据主键删除数据库 ps: 平时update和delete的时候最好也加... 阅读全文

为什么使用框架

2012-09-25 18:09 by 轩脉刃, 3023 阅读, 收藏, 编辑
摘要:这是一篇翻译文章,原文说明了框架在开发过程中给使用带来的懒惰,不思维的弊病。文章来源:http://blog.8thlight.com/myles-megyesi/2012/09/12/why-frameworks.html ===========正文开始 我们是由于效率和易用性的考虑才产生框架。框架能节省开发时间。框架强制使用公共的约定,因此它能有效地解决一些共有的问题,比如页面渲染,ass... 阅读全文

Golang Http Server源码阅读

2012-08-22 15:04 by 轩脉刃, 35201 阅读, 收藏, 编辑
摘要:这篇文章出现的理由是业务上需要创建一个Web Server。创建web是所有语言出现必须实现的功能之一了。在nginx+fastcgi+php广为使用的今天,这里我们不妨使用Go来进行web服务器的搭建。 前言 使用Go搭建Web服务器的包有很多,大致有下面几种方法,直接使用net包,使用net.http包,使用第三方包(比如gorilla)。使用net包就需要从tcp层开始封装,耗费人力物力极大... 阅读全文

Linux IO模型漫谈(2)

2012-05-31 09:57 by 轩脉刃, 3013 阅读, 收藏, 编辑
摘要:不管Linux的IO模型的阻塞同步分类是如何分类,几种IO模型的具体实现是确定的。这里借用《Unix 网络编程:卷一》的图片说明。 1 阻塞式IO模型 这个模型也是最容易理解的 程序调用和我们基本的程序编写是一致的: fd = connect() write(fd) read(fd) close(fd) 程序的read必须在write之后执行,当write阻塞住了,read就不能执行下去 2 非阻塞IO模型 从图中可以看出来,这是一个轮询的过程 每次用户询问内核是否有数据报准备好(文件描述符缓冲区是否就绪),当数据报准备好的时候,就进行拷贝数据报的操作。当数据报没... 阅读全文

Unix家族编年史

2012-05-30 13:30 by 轩脉刃, 2943 阅读, 收藏, 编辑
摘要:Unix是多用户、多任务的操作系统,它的历史悠久,也有多种版本。在Unix接触过程中常使用到的词,BSD,Linux等。初学者,甚至是接触unix很久的用户也未必对其家谱了如指掌。这篇文章描述的是Unix的族谱和发展历史。 1969年,Unix的前身Unics出现 作者: 肯·汤普逊(左)和丹尼斯·里奇(右) Unix版本是由美国电话电报公司(AT&T)进行维护升级的。他们两位是AT&... 阅读全文

Linux IO模型漫谈(1)

2012-05-29 11:20 by 轩脉刃, 3372 阅读, 收藏, 编辑
摘要:基础知识 Linux将所有外部设备都看做一个文件来进行操作。因此,linux对所有外部设备的操作都可以看做是文件的操作。文件的操作当然需要有个标示描述它,这就是文件描述符(file descriptor)。 linux的IO操作如何形象理解呢? 我们说网络socket的read()是一个IO操作命令,具体流程是这样的: 应用程序调用read命令,通知内核需要做读取数据操作 内核创建一个文件描述符 内核从物理层收到读数据的命令,从网络中获取数据包 数据包传递到TCP/IP层,解析数据包的头 内核将数据包缓存在文件描述符的读缓存区(接受缓存区)中,注意这里的读缓存区是在内核中的 ... 阅读全文

Lua的协同程序

2012-05-28 15:39 by 轩脉刃, 9642 阅读, 收藏, 编辑
摘要:Lua是一种简单,可扩展,可移植及高效的脚本语言。在嵌入式系统,移动设备,web服务器,游戏等方面都能见到它的身影。lua其中最吸引人的一点事它能很方便地与C语言或者其他语言。 这里说的是lua语言中的协同程序(coroute),也有人翻译成为协作程序 基本函数和语法 coroutine就是lua的协同程序 先讲一下coroutine的语法: coroutine.create() 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用 coroutine.resume() 重启coroutine,和create配合使用... 阅读全文

nginx模块_使用gdb调试nginx源码

2012-05-10 16:45 by 轩脉刃, 15873 阅读, 收藏, 编辑
摘要:工欲善其事必先利其器,如何使用调试工具gdb一步步调试nginx是了解nginx的重要手段。 ps:本文的目标人群是像我这样初接触Unix编程的同学,如果有什么地方错误请指正。 熟悉gdb的使用 这里就不说了,谷歌一搜一堆,这里推荐一篇文章:GDB 命令详细解释 请重点看一下step,run,break,list,info,continue命令 下载nginx源码 这里使用nginx-1.0.14 src是源代码,auto文件夹是configure运行时候的各种命令集合 修改config并编译 由于gdb需要gcc的时候加上-g参数,这样生成的文件才能使用gdb调试,因此... 阅读全文