自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

山不转的博客

山不转水转,水不转我转

  • 博客(141)
  • 收藏
  • 关注

原创 Scrapy学习过程之八:SPIDERS

参考:https://docs.scrapy.org/en/latest/topics/spiders.html构架图:就上上图中最上边那个SPIDERS,用来生成起始的REQUEST,解析返回的RESPONSE,从中提取数据并发阖家出去,另外从RESPONSE中解析出新的URL,然后生成request供中间的ENGINE调用。scrapy.Spider这个类是最...

2019-07-26 14:51:44 391

原创 Scrapy学习过程之七:命令行工具

参考:https://docs.scrapy.org/en/latest/topics/commands.htmlConfiguration settings关于scrapy命令行工具的配置文件,其格式为ini。配置文件存在于以下几个地方:/etc/scrapy.cfg or c:\scrapy\scrapy.cfg 这个是系统级配置文件 ~/.config/scrapy.cfg(...

2019-07-25 17:43:05 462

原创 Scrapy学习过程之六:pipeline

参考:https://docs.scrapy.org/en/latest/topics/item-pipeline.html#topics-item-pipeline架构图:Item Pipeline就是一些简单的处理Item的类,输入是Item输出也是Item,多个类就组成一个管道。典型用法:清洗数据 验证数据的有效性 去重 排序Writing your own...

2019-07-25 16:59:17 635

原创 Scrapy学习过程之五:item

参考:https://docs.scrapy.org/en/latest/topics/items.html#scrapy.item.ItemSPIDER将从网页中提取出来的数据以dict的形式发射出去,这个dict直接写在代码中,很容易写错,也不能复用。因此Scrapy专门提供了一个类item class,用来专门定义dict的结构,比如包含那些字段名等。这样集中管理不容易出错,出错...

2019-07-25 16:06:14 262

原创 Scrapy学习过程之四:Feed Export

参考:https://docs.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-exports整体架构图:SPIDER提取出的数据是dict,从上图可以看出,会将这些数据发送给ENGINE,然后ENGINE再将数据交给ITEM PIPELINES。Serialization formatsScrapy提供了几种...

2019-07-25 15:46:11 998

原创 Scrapy学习过程之三:tutorial

参考:tutorial贴出架构架构图以便参考:本tutorial涉及到的内容:创建一个scrapy工程 写一个spider爬网页并提取数据 使用命令行导出scrapy数据 将spider改成递归跟踪链接 给spider传递参数Creating a project自己先创建一个目录,然后运行如下命令:scrapy startproject tutorial此命...

2019-07-25 11:51:08 300

原创 Scrapy学习过程之二:架构及简单示例

1、Scrapy架构参考:https://docs.scrapy.org/en/latest/topics/architecture.html#data-flow以下是架构图:从上图可以看出,Scrapy是组件化的,每个组件实现特定的功能,组件之间是独立的,松耦合的,在大规模应用中应该可以分布式部署。红色箭头表示数据流,其它表示组件,首先对Scrapy包含那些组件,以及...

2019-07-24 15:55:07 880

转载 Scrapy学习过程之一:安装

原文作者:朱敬志原文链接:https://www.cnblogs.com/zhujingzhi/p/9766965.html感谢原文作者朱敬志,非常好的一个构建过程,很快,构建出来的镜像很小,亲测有效。一、下载alpine镜像[root@DockerBrian ~]# docker pull alpineUsing default tag: latestTrying to p...

2019-07-22 18:34:48 212

原创 Ubuntu 14.04安装Scrapy

参考:https://docs.scrapy.org/en/latest/intro/install.html以下命令都在root用户下执行1、更新apt-get软件源仓库:echo -e "deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse\n"\"deb http://...

2019-07-22 13:34:03 143

原创 Dubbo延迟暴露、并发控制、连接控制、延迟连接、粘滞连接(十)

1、参考延迟暴露:http://dubbo.apache.org/zh-cn/docs/user/demos/delay-publish.html并发控制:http://dubbo.apache.org/en-us/docs/user/demos/concurrency-control.html连接控制:http://dubbo.apache.org/en-us/docs/user/d...

2019-06-04 19:03:44 1658

原创 Dubbo本地存根、本地伪装(九)

1、参考本地存根:http://dubbo.apache.org/en-us/docs/user/demos/events-notify.html本地伪装:http://dubbo.apache.org/en-us/docs/user/demos/local-mock.html2、本地存根一般情况下,Consumer端只有接口,实现全部在Provider端。但有时候,Provide...

2019-06-04 17:56:56 497

原创 Dubbo本地调用、参数回调、事件通知(八)

1、参考本地调用:http://dubbo.apache.org/en-us/docs/user/demos/local-call.html参数回调:http://dubbo.apache.org/en-us/docs/user/demos/callback-parameter.html事件通知:http://dubbo.apache.org/zh-cn/docs/user/demos...

2019-06-04 15:16:16 2503

原创 Dubbo异步调用(七)

1、参考异步调用:http://dubbo.apache.org/en-us/docs/user/demos/async-call.html2、异步调用2.1、Dubbo2.0.6+的异步调用这里说的异步调用应该是非阻塞的NIO调用,一个线程可同时并发调用多个远程服务,每个服务的调用都是非阻塞的,线程立即返回。上图中主要关注一下userThread的行为,用户发出调用后,I...

2019-06-04 11:31:50 4977

原创 Dubbo上下文信息、隐匿参数附件(六)

1、参考上下文信息:http://dubbo.apache.org/en-us/docs/user/demos/context.html隐匿参数:http://dubbo.apache.org/en-us/docs/user/demos/attachment.html我觉得这两个功能与监控、跟踪、路径分析有关。2、上下文信息Dubbo里边的上下文为RpcContext。首先...

2019-06-03 19:53:52 3029 1

原创 Dubbo参数验证(五)

1、参考参数验证:http://dubbo.apache.org/en-us/docs/user/demos/parameter-validation.html2、参数验证Dubbo中的参数验证基于JSR-303,它是JAVA EE 6中的一项子规范,通过注解的方式用来对 Java Bean中字段的值进行简单验证。Consumer端要调用Provider端的接口,调用接口的话就会有参数...

2019-06-03 18:38:07 2983 3

原创 Dubbo的多协议、多Registry、服务分组、多版本、分组聚合(四)

1、参考多协议:http://dubbo.apache.org/en-us/docs/user/demos/multi-protocols.html多Registry:http://dubbo.apache.org/en-us/docs/user/demos/multi-registry.html服务分组:http://dubbo.apache.org/en-us/docs/user/...

2019-05-31 19:38:47 2930

原创 Dubbo的Provider直连、只定阅、静态服务(三)

1、参考Provider直连:http://dubbo.apache.org/en-us/docs/user/demos/explicit-target.html只定阅:http://dubbo.apache.org/zh-cn/docs/user/demos/subscribe-only.html静态服务:http://dubbo.apache.org/zh-cn/docs/user...

2019-05-31 16:33:23 629

原创 Dubbo的线程模型(三)

1、参考线程模型:http://dubbo.apache.org/en-us/docs/user/demos/thread-model.html2.1、线程模型官网示意图:我个人觉得这个图可能画错了,左边的Proxy与Client是不是应该倒换一下。关于线程模型的几个点:如果任务不包括耗时操作如各种I/O或者是大量的计算,只在内存中就可很快完成,则任务应该由I/O线程直...

2019-05-30 20:13:40 311

原创 Dubbo的启动检查、容错与负载均衡(二)

1、参考启动检查:http://dubbo.apache.org/en-us/docs/user/demos/preflight-check.html容错:http://dubbo.apache.org/en-us/docs/user/demos/fault-tolerent-strategy.html负载均衡:http://dubbo.apache.org/en-us/docs/us...

2019-05-29 10:21:49 1029 2

原创 Dubbo快速开始与依赖(一)

1、参考快速开始:http://dubbo.apache.org/en-us/docs/user/quick-start.html依赖:http://dubbo.apache.org/en-us/docs/user/dependencies.htmlDubbo官方文档提供了一个最简单的快速入门示例,但它存在一点问题。本文从无到有,演示如何把这个最简单的示例运行起来。2、创建演示项目...

2019-05-23 20:00:43 7355

原创 Java NIO AIO介绍、示例及性能分析

参考:http://tutorials.jenkov.com/java-nio/index.html1、Java NIO TutorialNIO最早出现在Java 1.4版本中,从那个时候开始,Java至少有两套可用的IO方面的API集,一套是标准的,另一套就是NIO,两者的工作原理不同。Java NIO: Channels and Buffers在标准IO系统中,用户直接与字节流...

2019-04-12 17:52:10 3679

原创 LinkedBlockingDeque应用场景

BlockingDeque是多线程双头队列接口,LinkedBlockingDeque是其一种实现。Deque的特点是可以同时在队列的两头put、take元素。在TCP协议中,数据报有一个URG指针。正常情况下,接收者按数据包到达本机的顺序处理,而对于设置URG标志的数据报则会优先处理。本文用BlockingDeque模拟TCP的单工通道。正确情况下发送者按顺序将数据追加到Deque的...

2019-04-02 23:51:26 3292 1

原创 DelayQueue实现原理及应用场景分析

DelayQueue基本原理DelayQueue是一个没有边界BlockingQueue实现,加入其中的元素必需实现Delayed接口。当生产者线程调用put之类的方法加入元素时,会触发Delayed接口中的compareTo方法进行排序,也就是说队列中元素的顺序是按到期时间排序的,而非它们进入队列的顺序。排在队列头部的元素是最早到期的,越往后到期时间赿晚。消费者线程查看队列头部的元素,注...

2019-04-02 19:49:24 22572 5

原创 Docker容器数据持久化

参考:https://docs.docker.com/storage/默认情况下,container内部新创建文件或者修改文件,结果会保存在container的可读写层中,这意味着:当container消失时,与container一体的可读写层也一并消失,数据并没有持久化。并且,当一个container需要其它container中可读写层的数据时,取出操作非常困难。 container的...

2019-03-25 13:24:20 12234

原创 Docker image 多阶构建(multstage build)

参考:https://docs.docker.com/develop/develop-images/multistage-build/背景过大的image占用更多的磁盘空间,push或者pull操作时占用更多的网络带宽,花费更长的时间。大规模的部署过程可能需要数个小时,大部分时间浪费在image的push与pull操作中,甚至因为短时间内流量的爆发而引起网络问题,最终导致部署失败。因此,我...

2019-03-24 22:52:33 3392

原创 iptables命令学习笔记

NAMEiptables - IPV4数据包过滤与NAT管理工具SYNOPSISiptables [-t table] -[AD]chain rule-specificat[options]iptables [-t table] -Ichain [rulenum] rule-specification [options]iptables [-t table] -Rchain...

2019-03-23 14:54:31 598

原创 基于GFS的Hadoop实现原理分析

1、摘要一个面向数据密集型应用的可伸宿、分布式文件系统。使用廉价服务器实现高容错特性,注意是廉价服务器,不是昂贵的普通人一辈子工资买不起、没见过的特制服务器。同时请注意是容错,不是避免错误的发生。实现大量客户端并发访问的高性能。2、介绍与一般的分布式文件系统在概念上的区别:集群由成百上千的廉价服务器组成,有成百上千的客户端访问系统,因此,组件失效被认为是常态。持续的监测、...

2019-03-19 21:16:09 2724

原创 Ubuntu 16.04安装Zimbra邮件服务器

1、环境用VirtualBox创建虚拟机。操作系统:Ubuntu 16.04,最小化安装操作系统,不要安装DNS服务器、邮件服务器等组件,否则在安装Zimbra之前需要手动关闭掉相关服务。内存:1G。Zimbra要求单机安装内存不少于8G,没那么多内存,只安装必需组件,也够用磁盘:两块,每块10G,分别专门安装操作系统与Zimbra,也可以只一块磁盘。无论如何,在安装时要有不少于5...

2019-03-16 21:50:01 7200 3

原创 Hibernate 连接池配置配置

1、Hibernate内置连接池hibernate.cfg.xml文件内容:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "...

2019-02-28 11:52:04 3387

原创 Hibernate开发环境搭建与测试

1、环境开发环境:Eclipse Java EE IDE for Web Developers.Version: 2018-09 (4.9.0)Build id: 20180917-1800Java运行时环境:Java SE 18.3,构建号10.0.2mysql server版本号:8.0.15本例不使用Eclipse的Hibernate插件(不好用)。参考:htt...

2019-02-26 19:53:11 329

原创 Servlet Session属性监听器深入探索

Servlet关于对象属性监听器,接口有三类:HttpSessionAttributeListener、ServletContextAttributeListener、ServletRequestAttributeListener。每种接口有三个方法attributeAdded、attributeReplace、attributeRemove,分别对应监控属性的添加、替换、移除。如果仔细考究的话,...

2019-02-02 18:22:18 823

原创 Session的线程安全问题及有效性问题

1、线程安全问题Session接口的相关实现由Tomcat容器提供,本身保证线程安全。但Session中保存的对象,其线程安全当然要由开发者保证。线程安全问题隐蔽、偶发,出了问题不好定位修正,一定要注意线程安全问题。通常,通过如下代码创建或者取得Session引用:HttpSession session = request.getSession(true);                ...

2019-02-01 16:19:47 2600

原创 Java设计模式之访问者模式

1、概念访问者模式涉及两个角色,一个是访问者,另一个是被访问的资源。访问者有多个具体的实现,资源也有多个具体的实现。访问者与资源可以有多种组合,假如有三种类型的访问者与三种类型的资源,则它们的组合方式就有3 * 3 =  9种。访问者解决的问题就是每种组合都能产生不同的行为。2、示例访问者模式解决的问题在日常工作中很常见,比如基于角色的访问权限控制。假如有三种类型的文档:普...

2019-01-22 16:57:31 1379

原创 Java设计模式之模板模式

从名字上看模板模式与元型模式有点像,但实际上它们有很大的不同。元型模式是创建系列中的模式,它的实现是先为类创建一个实例,然后对这个实例进行初化,并当成是元型。以后再需要这个类的实例时,不再是从头开始new,而是从已有的元型clone。当然,元型可能不只一个,这个时候就要用集合类进行管理了,在clone之前先去集合里查找匹配的元型。模板模式是行为系列中的模式。它的实现方式是在抽象类中定义一个...

2019-01-21 19:16:32 133

原创 Java设计模式之空对象模式

空对象模式很简单,不怎么重要。一般与工厂模式结合使用。工厂根据用户提供的条件创建具体的类,如果用户提供的条件工厂都不满足,那么就创建一个默认实现而不是返回null,这样的话程序还是可以继续运行下去。示例代码:package com.zhangxf.nullobject;// 电脑接口interface Computer { public void show(); publi...

2019-01-21 18:43:36 271

原创 Java设计模式之状态模式与策略模式

1、概念应用场景:一个对像处于不同的状态,调用相同的方法时产生不同的行为。目的:将对象本身的表示与对象状态的变迁逻辑解耦。角色:状态角色、上下文角色。状态代表上下文所处的状态,上下文为状态中方法的实现提供支持。实现方法:为状态定义抽象类,其中包含对上下文对象的引用,以便调用上下文的方法。包含负责改变、迁移状态的方法。                  上下文类的实现包含一个状态实...

2019-01-21 18:15:20 1650

原创 Java设计模式之观察者模式

观察者模式原理很简单,当被观察者发生某个消息时,由观察者调用注册过的观察者的某个方法,将消息通知给观察者。这也可以说是一种发布定阅模式。Java JDK为实现观察者模式提供了相关的接口、抽象类有如下场景,发布者可以讲笑话、唱歌、讲故事,定阅者接收以上信息。可以有多个发布者、多个定阅者,并且是多对多的关系。1、Observable抽象类、Observer接口实现方式基本的实现过程是被...

2019-01-21 14:58:58 158

原创 Java设计模式这备忘录模式

备忘录模式是一种行为模式,用来记录的中间状态,在需要时使对象恢复到某个中间状态。我们在写代码时,发现代码结构不理想或者出错,恢复到过去的某种状态就是这种情况,代码如下:package com.zhang.memento;import java.util.ArrayList;import java.util.List;// 备忘录类class Memento { privat...

2019-01-18 16:56:12 133

原创 Java设计模式之中介者模式

比如下五子棋,选手与选手之间通过“棋盘”交互的,而不是彼此之间直接交互。两个选手就是参与通信的角色,而棋盘就是中介者,它要记录选手共用的棋盘。代码如下:package com.zhangxf.mediator;import java.util.Scanner;// 选手类class Player { private String name; // 选手名字 private ch...

2019-01-17 21:39:20 1667

原创 Java设计模式之迭代器模式

迭代器用来按某种顺序取出集合中的元素。代码:package com.zhangxf.iterator;// 迭代器接口interface MyIteratorInf<T> { public boolean hasNext(); public T next();}// 支持正向迭代器的类要实现这个接口interface ForwardIteratorAble&l...

2019-01-17 15:32:26 197

空空如也

空空如也

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

TA关注的人

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