自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

L瑜

绳锯木断,水滴石穿

原创 360搜索在微服务架构下的技术平台实践(三) -- Thor

为什么要做Thor?360搜索有多个团队,几百号人。每个团队各自有多个平台工具,但各团队各自为战,带来的问题是没有统一的开发、管理规范,不论是交接还是扩展,做的人都很痛苦。当老人离开,新人接手会掉入无尽的坑中Thor的目标重新定义工具&平台该如何优雅的开发和产生简洁、快速地将现有的平台工具...

2017-10-28 11:22:31 550 0

原创 360搜索在微服务架构下的技术平台实践(二) -- 微服务架构

什么是微服务? 其实最近两年微服务这个概念挺火的,那其实究竟什么是微服务呢? 微服务其实是一种架构风格、一种约定。就和我们开发中使用的设计模式是一个道理。 每个微服务仅关注于完成一件任务 每个微服务独立部署,互不干预 一个应用由一个或多个微服务组成 把我们上一文中的...

2017-09-25 14:39:03 875 0

原创 360搜索在微服务架构下的技术平台实践(一) -- 单体架构

单体架构单体架构是最常见的架构方式,将所有功能、业务逻辑都放在一个web容器中,成为一个应用。这就是我们常说的单体架构。例如,我们有一个小型商城系统,那么如下图所示:在这里,我们将所有的功能都放在一个web容器中,例如订单管理、商品管理、支付功能、通知功能、购物车管理、物流相关等。单体架构下,我们...

2017-09-25 11:33:40 770 0

原创 PHP foreach使用 &引用 的坑

在PHP中,array是最常用的结构了,可以当做队列、堆栈、hash等结构使用,所以遍历array最常用的foreach循环,我们用得很多,但其实foreach循环中有一个隐藏的坑,如下代码: <?php$arr = [1,2,4];foreach($arr as &$a){ ...

2017-09-11 21:24:54 4423 2

原创 Linux下快速收起vim 并暂存修改

有时我们在linux下使用vim进行开发的时候,需要暂时切换到另一个事件,此时有可能是ps 命令看一下当前进程存活情况,有时候是需要top 命令 看一下当前资源消耗情况,或许是想看一下另一个文件里某行配置是什么内容这种情况往往是需要短暂的切换,但又不想完全的退出。如果直接:wq 退出当前vim。等...

2017-08-29 00:10:38 798 0

原创 PHP 实现后缀表达式(接受四则运算字符串,输出计算结果,附代码)

最近接触了一个有趣的需求:给定变量a、b、c、d等若干,要求由用户输入的普通四则运算字符串(包含加减乘除括号),算出具体的值。 例如,a=1,b=2,c=3,d=4,给出 a+b/(d-c),应计算出结果为3,若为 a*b/(c-1) 则应计算出结果为1 这种情况下,第一反应可能是用数字值将字...

2017-08-21 21:59:16 2471 0

原创 Linux sort命令使用示例

我们在开发、维护的过程中,有时会需要将log、数据等做过滤和筛选例如,我们有这样一个文件 daily_pv.txt ,它可能有10W行,其部分内容如下:20170702 a 52331 20170703 a 63210 20170701 b 234213 201707...

2017-08-20 17:06:18 484 0

原创 python通过thrift连接hive,异步执行查询

在开始之前,我们需要具备一些基础知识:什么是hive? hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 hive对外暴露出来的用法,基本上和Mysql相同,但是它能做到M...

2017-08-20 17:04:56 3542 0

原创 HTTP 连接建立方式

当我们在浏览一个web页面时,页面里的元素可能是来自于多个源的,例如每张图片有各自的来源。我们在浏览一个拥有2张图片的web页面时,浏览器需要发起3个HTTP事务,一个用于获取顶层HTML页面元素,另两个获取相对应的图片。串行连接如果只是简单的对连接进行管理,使用串行化的方式去请求资源。每个请求都...

2017-08-20 17:03:33 981 0

原创 HTTP 延时

HTTP性能优化一直是个十分重要的话题,但要进行优化,首先得找出有哪些地方会导致HTTP延时。HTTP 请求过程在HTTP请求传输的过程中,会经历这样的场景和可能遇见如下的问题:1 . 用户输入或打开一个地址,client查找本地http缓存,如果有未过期的本地缓存,则直接200(from cac...

2017-08-15 20:54:11 2492 0

原创 HTTP 报文头 初解

在 HTTP报文 一章中,我们介绍了HTTP协议由 行、头、体组成。而本章,介绍 “头” 如果你写了一个小爬虫,但抓出来的结果和想象的不同(例如界面样式,返回内容和人工看有差异,或者是需要登录),你可以更改你发送的HTTP请求的header部分,将合法的User-Agent、Cookie等添上...

2017-08-15 20:53:47 425 0

原创 Mysql 事务隔离级别、InnoDB实现隔离机制

当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性。隔离级别在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,在事务内和事务间的可见性。较低级别的隔离通常可以执行更高的并发,系统的开销也更低。READ UNCOMMITTED...

2017-08-15 20:53:13 937 0

原创 HTTP 状态码

HTTP的状态码被分为了5大类,分别是:1xx : Hold on (等着) 2xx : Here you go (执行完了,没毛病,拿着结果回去吧) 3xx : Go away (你要的不在我这儿,去别处找) 4xx : You fucked up (你丫出问题了) 5xx : I fucked...

2017-08-15 20:52:52 345 0

原创 redis 事务 理解和使用

redis的事务和传统的关系型数据库不同,在关系型数据库中,用户首先向数据库发送一个BEGIN信号,然后执行各个相互一致的读写操作,最后,用户发送COMMIT来确认之前的操作,或者发送ROLLBACK来放弃之前的操作。在redis中也有简单的方法可以处理一连串的读写操作,使用特殊命令MULTI为开...

2017-08-15 20:51:55 1023 0

原创 Mysql分区表 介绍和使用

试想这样一个场景: 你有一张表,存储引擎为InnoDB,里面存储的数据量达到了上亿级别。 此时,因为数据量巨大,肯定不能在每次查询的时候都扫描全表。 就算是使用索引(B-Tree),除非使用索引覆盖查询,否则数据库服务器需要根据查询的结果回表,查询所有符合条件的数据, 如果...

2017-08-15 20:51:01 1107 0

原创 Url 初步介绍

基础背景:URI: uri(Uniform Resource Identifier) 是统一资源标识符,就像互联网上的地址一样,在世界范围内唯一标识并定位资源 URL: url是uri最常见的形式,URL描述了一台特定服务器上某资源的特定位置。 大部分url都遵循一种标准格式: 1、第...

2017-08-15 20:49:43 267 0

原创 HTTPS 初步介绍

背景:非对称加密: 基于数学方法,生成一个公钥-密钥对,来对数据做加密-解密,被公钥加密的数据只能被私钥解密, 同样,被私钥加密的数据也只能被公钥解密。所以可以用别人公开的公钥加密一段信息然后发送出去, 只有拥有对应密钥的那个人才能解密。但是缺点是加密-解密的计算成本高,比...

2017-08-15 20:48:43 393 0

原创 HTTP 报文详解

报文的组成部分HTTP报文 由起始行、首部、主体组成。1、 起始行: 起始行是一个由行分隔的ASCII文本,每行都以一个由两个字符组成的行终止符作为结束,行终止符为 一个回车符 + 一个换行符,可以写作CRLF 2、 首部: 首部的格式与起始行相同 3、主体: 主体是一个可选的数据块,...

2017-08-15 20:47:37 411 0

原创 Nginx - Location 匹配规则

语法规则location = /uri = 表示精确匹配某个uri location ^~ /uri ^~ 表示精确的前缀匹配以uri开头的请求,优先级在正则之前 location ~ uri ~ 表示区分大小写的正则匹配,这里的uri就是一个正则表达式 locatio...

2017-08-15 20:46:18 962 0

原创 Yii2框架源码追踪阅读(一)--从入口脚本index.php到类加载器的初始化

首先我们以yii2-basic为源码阅读剖析目标,首先,请到http://www.yiichina.com/download 下载框架源码。 接下来就开始我们的yii2源码阅读之旅吧。

2017-01-19 17:51:08 1016 0

原创 Mysql创建用户后,执行grant授权命令,提示can't find any matching row in the user table

在给新项目做数据库配置的时候,发现一个奇怪的问题: 使用命令: mysql> insert into mysql.user(Host,User,Password) values("1.1.1.1","test",password("pswd&...

2016-11-28 14:46:39 38773 1

转载 redis中zipmap源码剖析

最近看了一篇剖析redis中zipmap源码的好文,特意转载保留供将来长期回顾 转载自:http://blog.csdn.net/Xiejingfa/article/details/51111230 今天为大家带来Redis中zipmap数据结构的分析,该结构定义在zipmap.h和z...

2016-11-15 14:26:18 757 0

原创 服务端数据推送方式-SSE(server-sent event)简介及上手小demo

老的http协议是请求-响应式的,对于某些实时性要求比较高的需求(例如微博消息推送),实现起来是比较麻烦的, 而html5标准中,新增了一个SSE(server-sent event,服务端推送事件),可以方便地做到消息实时推送,并且由于是官方特性,主流浏览器对其支持是较好的。和websocket...

2016-10-24 15:22:40 6241 0

原创 更改pip源至国内镜像,显著提升下载速度

经常在使用python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的烦恼。 网上有很多可用的源,例如豆瓣:http://pypi.douban.com/simp...

2016-09-02 11:00:15 285778 27

原创 yii框架中配置redis并启用安全验证

1、安装php-redis扩展 2、安装yii2-redis扩展 3、在yii中使用redis 4、添加redis安全验证

2016-08-26 14:31:52 2524 0

原创 redis各类型实现&命令 笔记

1、string类型: mset命令:一次set多个key的值,但若失败一个,则整个命令失效(类似于事务机制,要么都成功,要么都不成功),不会出现部分成功部分失败的情况。 msetnx 命令:参考mset,但比mset多一个限制条件:若其中一个key已存在,则也视为事务失败 2、list列表:...

2016-08-19 14:35:35 551 0

转载 redis可用性提升(哨兵sentinel)配置示例

redis提供了sentinel(哨兵)机制,通过sentinel模式启动redis后,自动监控master/slave的运行状态,基本原理是:心跳机制+投票裁决 每个sentinel会向其它sentinal、master、slave定时发送消息,以确认对方是否“活”着,如果发现对方在指定时间(...

2016-07-05 15:22:53 9701 0

原创 什么是跨域?怎么解决跨域问题?

什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。 所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子: http://www.123.com/index.html 调用 http://www.12...

2016-06-15 17:32:16 212417 35

原创 php的json和数组转换

1、将数组变为json字符串:json_encode($arr [,$options=0]);//$options为可选参数,默认为0 一般来说使用json_encode($arr)即可。但是当有特殊需求时,例如数据中包含文件绝对路径,像“/da1/test/123.php”,直接json_enc...

2016-06-14 15:42:00 1123 0

原创 Redis的高级特性

基础的使用方式随便在网上都能搜到,所以就不谈论这一块了。 主要想分享一下高级特性,如果不对请指正。 一、数据失效方式:因为redis是基于内存的,而由于内存的昂贵,注定它的大小是有限的,所以当数据量较大、内存被占满的时候,再插入新数据,就要涉及到如何进行调度了。 调度方式主要分为四类:不删除...

2016-05-27 11:13:25 723 0

转载 Redis Cluster 实现细节

Redis Cluster 实现 本文将从设计思路,功能实现,源码几个方面介绍Redis Cluster。假设读者已经了解Redis Cluster的使用方式。 简介 Redis Cluster作为Redis的分布式实现,主要做了两个方面的事情: 1,数据分片 Red...

2016-05-13 18:06:40 5525 0

原创 python中多进程+协程的使用以及为什么要用它

前面讲了为什么python里推荐用多进程而不是多线程,但是多进程也有其自己的限制:相比线程更加笨重、切换耗时更长,并且在python的多进程下,进程数量不推荐超过CPU核心数(一个进程只有一个GIL,所以一个进程只能跑满一个CPU),因为一个进程占用一个CPU时能充分利用机器的性能,但是进程多了就...

2016-04-15 16:25:03 23517 11

转载 Hudson中部署slave结点的方法

Hudson中分布式部署,node节点设置,假如有2台windwos机器(192.168.200.132、192.168.200.133)作为SLAVE机器。其实Master/Slave相当于Server和agent的概念。 http://www.cnblogs.com/itech/arch...

2016-03-29 17:58:24 1149 0

原创 谈谈python的GIL、多线程、多进程

最近在看Python的多线程,然而不仅要知其然,更要知其所以然。所以有了下面的深入研究: 首先强调背景: 1、GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定。 2、每个CPU在同一时间只能执行一个...

2016-01-29 11:10:37 2860 0

原创 正则表达式速查手册

正则表达式十分强大,作用非常多。所以特地记下以下内容以备不时之需。 \w是数字+大小写字母+下划线 \d是数字 \s是空白符(\n、\t等) ↑↑↑它们的大写意思是对它们取反 . 可以匹配任意字符(除了换行符\n) +是至少一次 *是随便多少次 ?是0次或者1次 | 是或者的意思(例如:a...

2015-11-26 21:26:38 614 0

原创 如何通过Fiddler对安卓应用进行抓包

有的时候我们需要对安卓应用进行抓包,获取它访问的接口或者其他的信息。 我们有一个比较方便的工具--Fiddler 如何使用呢? 1.从网上下载Fiddler安装包进行安装。 2.Fiddler安装完毕之后,使用360免费wifi分享出wifi,连接时,勾选--显示高级选项。 设置代理服务器为手...

2015-11-16 20:49:14 1132 0

原创 使用python抓取js动态加载的网页

我们在做网页抓取的时候,一般来说使用urllib和urllib2就能满足大部分需求。 但是有时候我们遇见那种使用js动态加载的网页。就会发现urllib只能抓出一个部分内容空白的网页。 解决办法是使用selenium+phantomjs进行抓取。。。 审查元素之后,。发现百度图片中...

2015-10-19 11:49:11 18236 0

转载 linux下操作zip文件命令大全

linux下经常需要对压缩文件进行操作,以下是操作zip文件解压的命令: 命令名 : unzip 语 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P ][.zip文 件][文件][-d ][-x ] 或 unzip [-Z] 补充说明:unzip为.zi...

2015-10-09 11:21:25 792 0

原创 selenium使用send_keys()方法写中文报错的解决方法

在使用selenium时候,难免会遇到需要处理中文的情况。毕竟咱们是在中国,做的产品大都也是和中文有强烈联系的。 举例:打开好搜。搜索“灵魂摆渡”,找到类名为:‘g-mohe ’的类。然后退出。 代码如下: driver = webdriver.Chrome() driver.ma...

2015-10-08 15:02:32 18945 0

原创 如何在linux命令行无界面下,使用selenium进行自动化测试

selenium相信做自动化测试的童鞋并不陌生,但如何在linux下用它做自动化测试呢?

2015-09-25 16:07:40 18816 0

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