- 博客(36)
- 资源 (4)
- 收藏
- 关注
原创 boost集成模型
boost集成模型简述:常用集成树模型有随机森林、gbdt、xgb、lgb;bagging随机森林很简单,随机取特征和样本,不容易过拟合,不做介绍。主要介绍一下gbdt和xgb.cart决策树:分类树使用基尼系数增益,原理上和id3差不多,本质上还是将概率分布进行了一种转换。分类二叉树的特性让cart相较于id3而言,不会选择离散值多的特征,但是另外一方面也加大了计算量,id3相当于...
2020-01-15 15:34:55
1339
原创 xpath入门教程
大部分程序开发者应该都有过爬取网页的经历,每个人爬取的方法也不太相同,有的用强大的正则表达式,有的用selector,有的也会用第三方提供的插件等等。每种方法都有各自的优缺点,比如正则的抓取效率问题但是通用性强,selector上手难度,插件类比如simple_dom_php抓取不到直接error退出进程问题等等。这里不做过多评价,只介绍一个好用的、强大的、易上手的抓取工具xpath。
2017-11-15 14:29:21
2106
原创 https实践之 抓包分析流程
概述: 本文主要研究HTTPS协议的流程,通过抓包分析握手过程,主要将围绕HTTPS优化进行展开。探究:1、WHAT 什么是HTTPS,这个百度应该就有一大堆了,不做详细描述,它是互联网安全的基础之一,工作在传输层之上,使用的加密协议为TLS/SSL,具体分为以下几个版本, 截止目前 SSL/TLS 协议族中有7种协议(网上有):
2017-08-04 18:23:24
9490
1
原创 nginx网络IO模型
nginx支持很多的网络IO模型,不同的平台支持的IO模型也有一定的区别,nginx正常情况下会根据平台自动选择有效的模型,也可以使用use命令指定需要使用的IO模型。 支持模型列表:1、select 多路复用,在支持select的平台中会自动编译, --with-select_module和 --without-select_module可以手动的启用改IO
2017-08-01 10:36:19
1784
原创 nginx信号量控制命令
概述:使用信号量控制nginx,主进程的ID默认在 /usr/local/nginx/logs/nginx.pid,这个可以在配置文件中进行修改。一、主进程支持以下信号量的控制:TERM, INT快速强制关闭worker进程主进程退出QUIT优美的关闭worker进程后主进程退出HUP修改配置信息,平滑关闭worker进程,启
2017-08-01 10:18:36
533
原创 PHP SAPI CLI启动流程结合mysql扩展源码学习
在之前的学习中,大概抽象的了解了一个CLI进程的生命周期 接下来结合这张图, 我们再结合mysql扩展来看看扩展是如何实现回调的。1、call each extension MINIT函数,(https://github.com/php/php-src/blob/PHP-5.4.41/ext/mysql/php_mysql.c#L11
2017-07-07 12:33:30
456
原创 iptables 命令字典
iptables的核心是netfilter, 工作再linux内核的网络层,netfilter的实现核心是常说的四表五链,这个网上搜索一大堆的。基础和原理就不讲了。下面是一张命令的字典图,需要用到的时候可以直接查看(有些版本有一些扩展匹配命令不能用)
2017-06-23 20:03:07
266
原创 nginx源码学习(五)进程间的通信
nginx启动worker进程的函数主体还是比较简单的static voidngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n, ngx_int_t type){ ngx_int_t i; ngx_channel_t ch; ngx_log_error(NGX_LOG_NOTICE, cycle
2017-06-23 12:02:57
419
原创 nginx源码学习(三)配置解析
1、以下是我阅读nginx(1.13.2版本)源码的一些心得,个人觉得学一个东西最好学它的思想,学会举一反三。因为互联网的东西实在太多 了。上一章我对nginx ngx_init_cycle做了一个大概的描述,这一张我对配置文件解析的函数做一下研究。以下是摘自http://tengine.taobao.org/book/chapter_11.html的概念ngx
2017-06-23 10:33:07
502
原创 nginx源码学习(二)ngx_init_cycle(&init_cycle)函数解析
1、以下是我阅读nginx(1.13.2版本)源码的一些心得,个人觉得学一个东西最好学它的思想,学会举一反三。因为互联网的东西实在太多 了。上一章我对nginx启动流程做了一个大概的描述,这一张我详细进入初始化的核心方法进行探索。文章尾部会附上一张nginx中核心结构体nginx_cycle_s的图,方便在阅读源代码的时候进行对比和理解。函数名称:ngx_cycle_t
2017-06-15 20:57:58
939
原创 nginx源码学习(一)程序启动
1、以下是我阅读nginx(1.13.2版本)源码的一些心得,个人觉得学一个东西最好学它的思想,学会举一反三。因为互联网的东西实在太多 了。先来看看nginx的整体启动流程,因为是从整体上去了解原理,细节的东西省去,比如ssl初始化等操作。(nginx.c)。main(int argc, char *const *argv){ //定义一些变量
2017-06-15 11:59:38
2436
原创 docker(二)docker容器使用
Docker 客户端docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。runoob@runoob:~# docker可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。例如我们要查看 docker stats 指令的具体使用方法:runoob@runoo
2017-06-12 18:20:58
286
原创 PHP SAPI(FCGI)个人整理
PHP的CGI实现从cgi_main.c文件的main函数开始,在main函数中调用了定义在fastcgi.c文件中的初始化,监听等函数。对比TCP的流程,我们查看PHP对TCP协议的实现,虽然PHP本身也实现了这些流程,但是在main函数中一些过程被封装成一个函数实现。对应TCP的操作流程,PHP首先会执行创建socket,绑定套接字,创建监听:if (bindpath) { fcg
2017-05-26 11:07:34
505
原创 PHP SAPI(CGI)个人整理
cgi程序的入口函数在/sapi/cgi/cgi_main.c中,同样透过源码来看看CGI程序是如何启动的.首先CGI跟CLI程序的运行做一个大概的对比一下,个人总结,有错误请指正:1、CLI启动是在终端执行,其参数通过终端指定2、CGI启动是通过web服务器执行,当WEB服务器接受到HTTP请求以后,调用(应该类似exec)入口方法,参数的传递通过环境变量指定,具体哪些参数可
2017-05-26 11:06:16
854
原创 PHP SAPI(CLI)个人整理
通常,我们使用Apache或者Nginx这类Web服务器来测试PHP脚本,或者在命令行下通过PHP解释器程序来执行。脚本执行完后,Web服务器应答,浏览器显示应答信息,或者在命令行标准输出上显示内容。我们很少关心PHP解释器在哪里。虽然通过Web服务器和命令行程序执行脚本看起来很不一样,实际上它们的工作流程是一样的。命令行参数传递给PHP解释器要执行的脚本,相当于通过url
2017-05-26 11:05:22
2194
原创 docker(一) 基础知识和命令
镜像:1、获取镜像 、docker pull2、列出镜像 docker images3、创建镜像(没用过)docker commit4、导出和导入镜像docker load docker save 5、移除镜像docker rmi [这个i指的是image, rmi移除镜像, rm 移除容
2017-05-26 10:23:41
329
原创 radix tree 整理
1、(HOW)这是个什么玩意,可以用来干嘛?Linux radix树最广泛的用途是用于内存管理,结构address_space通过radix树跟踪绑定到地址映射上的核心页,该radix树允许内存管理代码快速查找标识为dirty或writeback的页。Linux radix树的API函数在lib/radix-tree.c中实现。Linux基数树(radix tree)是将指针与
2017-03-24 11:52:06
7052
原创 redis高可用sentinel原理
在我的电脑下面执行下面的操作构建一个高可用的redis主从集群.启动两个实例:1、nohup /usr/local/webserver/redis/src/redis-server /usr/local/webserver/redis/conf/redis_6380.conf &2、nohup /usr/local/webserver/redis/src/redis-server /u
2017-01-04 20:43:13
2064
1
原创 redis分布式锁的实现及问题分析
Implementing a distributed lock manager with Redis.使用redis实现一个分布式锁的管理当我们需要用不同的进程或者线程处理同一个资源的时候,锁就显得比较重要了。redis的分布式锁叫做redlock接下来我们看一下如何用redis实现一个分布式的锁管理。在 github上有一些使用redis分布式锁的官方的例子。
2016-12-19 20:10:08
1729
1
原创 redis快速的插入大量的数据
如何在服务启动的时候快速插入大量的 过亿的key value数据呢?使用新的方式 : LUKE以下为几种可能的方式: 1、逐条命令发送,命令的传输时间RTT很长,速度会比较慢 2、使用pipelining,这种方式在实现了异步IO的客户端程序中是可行,但是只有很少很少的客户端代码支持,比如php-redis的扩展就不支持异步,你必须等待处理的返
2016-12-18 21:44:23
7494
原创 redis内存参数
下面这些redis内存方面的问题是在工作中发现的。可以作为一个工作中的参考一、redis数据类型的特殊编码形式 在redis2.2以后许多数据类型为了节约内存使用大小,都开启了一个压缩的算法,当数据库中的元素个数少于配置文件中设置的文件个数时,这些元素最理想的情况下会被压缩到10分之一的大小进行存储,(一般情况下可以压缩到5分之一),从而节约内存占用。
2016-12-18 21:43:43
633
原创 redis的多命令执行方法之一-pipeling
管道传输(pipelining):用于一次性处理多条redis命令 redis的执行流程为客户端发送命令到服务端,客服端阻塞等待服务端程序返回,如果中间由于网络通信问题导致速度比较慢,另外由于客户端和服务端的数据传输需要一定的时间。这个 时间叫做RTT,Round Trip Time 。如果有很多条命令要一次性传输,相对来说就会比较慢,redis提供了pipelining命
2016-12-18 21:42:23
5842
转载 关于web服务的接口幂等性
原创链接: http://www.smithfox.com/?e=16 转载请保留此声明, 谢谢]绝大部分网络上对幂等性的解释类似于:"幂等性是指重复使用同样的参数调用同一方法时总能获得同样的结果。比如对同一资源的GET请求访问结果都是一样的。"我认为这种解释是非常错误的, 幂等性强调的是外界通过接口对系统内部的影响, 外界怎么看系统和幂等性没有关系. 就上面这种解释, S
2016-07-29 12:00:07
609
转载 redis和memcache的区别
哥只想说,这是一个精彩被问到的问题,但是应该很多人都答不全,总结记录一波说到redis就会联想到memcached,反之亦然,可参考《Redis和Memcached的区别》。了解过两者的同学有那么个大致的印象:redis与memcached相比,比仅支持简单的key-value数据类型,同时还提供list,set,zset,hash等数据结构的存储;
2016-07-21 11:42:35
444
转载 PHP 异步的curl
PHP是不支持线程的,但是我们有总想并行地干一些事情,比如,同时执行多个http的请求,如果使用多进程的话,有两个问题:1. 不能跨平台2. 创建进程的开销似乎大了些于是,我们就想到了使用异步来达到类似并行的效果,曾经早就写程序实现过,不过是很初级的,现在curl帮我们实现了,只是目前网上的文档还少一些,这个贡献一些。<?php$nodes = array('http://w
2016-07-19 15:02:38
787
原创 tomcat源码编写计划连载(2)
上一次讲了一下server的基础实现,但是实现的只是简单的静态资源的请求,用过tomcat的童鞋肯定说要调用servlet啦,OK, 在上次的基础上我增加了一个请求servlet的功能。servlet的生命周期不做多的介绍了,我主要实现两个方法init和 service ,结构目录如下:服务器端:HttpServer1 接收HTTP请求Rquest 解析请求,给serv
2016-07-04 14:22:16
210
原创 PHP的订单生成算法
PHP的订单号生成算法算是语言本身的硬伤吧,相信很少的大型互联网公司会用PHP去生成订单号了,但是如果你身处一个没有各方资源的情况下还是仔细想想怎么做吧,PHP相比JAVA而言是以进程的方式运行的,进程结束资源回收,所有不会跟java一样会保存static等全局的东西(不考虑分布式),所以如果要实现一个递增的订单号必须要依赖第三方的东西比如memcache,redis,mysql等然后每次生成...
2016-07-04 10:33:30
4554
原创 tomcat源码编写计划连载(1)
以前没实在的接触过tomcat这个东西,对于应用服务器和服务器的概念也一直都很模糊,于是我决定抽时间出来去实现以下tomcat源码.tomcat的流程网上一堆,大家自己去熟悉一下就行了,我直接先实现一个简单的java http服务器。这样大家可以熟悉一下服务器的最基本的工作原理,当然也是tomcat的最基本的工作原理,tomcat原比这个复杂多了,后期会进行更新代码一共包含四个类,Cl
2016-07-04 10:21:50
247
原创 maven项目构建spring项目
毕业以后抛弃java已经一年了,php搞了一年,简单易上手。每种语言都有各自的好处吧。php是有cgi或者fast-cgi来fork进程跑的脚本语言,进程占用的系统资源会多一些,并且每次请求都要把所有php的配置信息以及include的文件载入内存,这也是为什么php分层比较少的原因,现在想从新转回java开发了。先从maven开始练手,构建一个spring的项目。很多高手不乐意写这些吧应该,
2016-06-28 10:50:49
364
原创 PHP遍历memcache
Memcache的客户端操作一般都只提供了get,set,stats等简单的操作,但是在某些特殊时候,我们可能需要遍历Memcache的数据,Memcache自带的命令是不能实
2016-06-27 15:43:16
347
转载 lease 脑裂
Lease 中文叫租约,是一种广泛应用于分布式系统领域的协议,它是一种维护分布式系统一致性的有效工具。Lease 通常定义为:颁发者在一定期限内給予持有者一定权利的协议。Lease 表达了颁发者在一定期限内的承诺,只要未过期颁发者必须严格遵守 lease 约定的承诺。Lease 的持有者在期限内使用颁发者的承诺,但 lease 一旦过期必须放弃使用或者重新和颁发者续约。
2016-06-27 15:36:39
412
原创 lampp下配置https,并设置cookie跨域
最近公司的项目登录要转成https的,但是根据同源协议,https登录后的cookie与http的网页不能共享。两个问题,一个是centos下https的配置,另外一个是登录后cookie的跨域问题问题- apache配置https:第一次配置apache,之前一直都是配的nginx,不到之处请谅解,但是https原理总归是一样的。先生成证书,证书生成的办法网上一堆,不做介绍,
2016-06-24 14:20:46
665
全文索引的简单实现PHP版本
2016-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人