摘要: 之前也有写过有关于爬虫的实战练习: "go语言爬取珍爱网" 当时爬取时当并发过大的时候,请求就会出现卡死的情况。其实这可能就是珍爱网对请求和连接进行了限制。 爬虫和反爬是个“一边攻,一边守”的技术,但我们亲爱的爬虫工程师们也一直遵守着“只攻不破”的原则。网站服务器对爬虫一直在做限制,避免服务器流量异 阅读全文
posted @ 2019-10-18 01:03 进击云原生 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 1、 stub_status模块: 用于展示nginx处理连接时的状态。 配置语法如下: 可以编辑default.conf,加上如下配置: 然后检查配置的正确性: 这里注意了,虽然修改的是default.conf,但是检查的时候始终还是加载nginx.conf,否则报错: 因为nginx.conf中 阅读全文
posted @ 2019-10-18 01:01 进击云原生 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多个应用上进行逻辑处理。 因为有了中间件,使得大型网站在规划有了更好的层次性,维护上更加方便。也可以实现负载均衡、安全 阅读全文
posted @ 2019-10-18 00:58 进击云原生 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 以下测试在elasticsearch5.6.10版本。 首先要说明的是ElasticSearch从2.x开始就已经不支持删除一个type了,所以使用delete命令想要尝试删除一个type的时候会出现如下错误: 测试 假如存在一个名为dating_profile的index和zhenai的type: 阅读全文
posted @ 2019-10-18 00:56 进击云原生 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 公有仓库和私有仓库: 速度: 公有仓库走的公网,速度较慢;私有仓库走的是内网,即局域网; 安全性: 公有仓库存放在公共硬盘上;私有仓库存在自己服务器硬盘上。 公有仓: 最权威的,但速度比较慢: https://hub.docker.com/ 首先登陆: 打标签,push镜像到hub仓库: 已push 阅读全文
posted @ 2019-10-18 00:51 进击云原生 阅读(1136) 评论(0) 推荐(0) 编辑
摘要: Kubernetes 审计功能提供了与安全相关的按时间顺序排列的记录集,记录单个用户、管理员或系统其他组件影响系统的活动顺序。它能帮助集群管理员处理以下问题: 发生了什么? 什么时候发生的? 谁触发的? 为什么发生? 在哪观察到的? 它从哪触发的? 它将产生什么后果? Kube apiserver  阅读全文
posted @ 2019-10-18 00:48 进击云原生 阅读(6488) 评论(0) 推荐(1) 编辑
摘要: Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源 阅读全文
posted @ 2019-10-18 00:46 进击云原生 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: 小强最近在项目中遇到了一个很奇怪的问题:在整改日志规范时,为了避免影响现有的代码结构以及改动尽可能小的前提下,在调用记日志的SDK处将某一个字段值首字母改为大写,代码示例如下: 项目中这里的a变量其实是作为参数传入,只是可能为空串。a变量不为空串时,这样写肯定没问题。但是当为空串时,即""时,就会出 阅读全文
posted @ 2019-10-18 00:43 进击云原生 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的单例模式。针对单例模式, java 中又出现了饿汉模式、懒汉模式,再配合 synchronized 同步关键字来实现。其目的无非就是将对象只初始化一次,而且最好保证在用到的时候再进行初始化,以避免初始化太早 阅读全文
posted @ 2019-10-18 00:41 进击云原生 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 在开始环境搭建之前,我们先一起来看看: Go有什么优势: 不用虚拟机,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便,就是扔一个文件就完成了。 天生支持并发,可以充分的利用多核,很容易实现并发。 25个关键字,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载 阅读全文
posted @ 2019-10-18 00:39 进击云原生 阅读(2691) 评论(0) 推荐(0) 编辑
摘要: 我们前两节课爬取珍爱网的时候,用到了很多正则表达式去匹配城市列表、城市、用户信息,其实除了正则表达式去匹配,还可以利用goquery和xpath第三方库匹配有用信息。而我利用了更优雅的正则表达式匹配。下来大概介绍下正则表达式。 比如我们匹配城市列表的时候,会取匹配所有城市的url,如下: 可以看到图 阅读全文
posted @ 2019-10-18 00:37 进击云原生 阅读(14375) 评论(0) 推荐(0) 编辑
摘要: golang爬取珍爱网,爬到了3万多用户信息,并存到了elasticsearch中,如下图,查询到了3万多用户信息。 先来看看最终效果: 利用到了go语言的html模板库: 执行模板渲染: model.SearchResult数据结构如下: html <!DOCTYPE html Love Sear 阅读全文
posted @ 2019-10-18 00:34 进击云原生 阅读(1191) 评论(0) 推荐(0) 编辑
摘要: golang爬珍爱网代码优化后,运行报了如下的错,找了半小时才找到原因,在此记录一下。 代码是这样的: 有一个interface类型的Parser: 有一个struct类型的FuncParser: FuncParser 实现了Parser 接口: 抛开爬虫代码整体的复杂度,将代码简化到如下这样: 同 阅读全文
posted @ 2019-10-18 00:31 进击云原生 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 前两天我们写了单任务版爬虫爬取了珍爱网用户信息,那么它的性能如何呢? 我们可以通过网络利用率看一下,我们用任务管理器中的性能分析窗口可以看到下载速率大概是保持在了200kbps左右,这可以说是相当慢了。 我们针对来通过分析单任务版爬虫的设计来看下: 从上图我们可以看出,engine将request从 阅读全文
posted @ 2019-10-18 00:29 进击云原生 阅读(833) 评论(0) 推荐(0) 编辑
摘要: 前两节我们获取到了城市的URL和城市名,今天我们来解析用户信息。 "用go语言爬取珍爱网 | 第一回" "用go语言爬取珍爱网 | 第二回" 爬虫的算法: 我们要提取返回体中的城市列表,需要用到城市列表解析器; 需要把每个城市里的所有用户解析出来,需要用到城市解析器; 还需要把每个用户的个人信息解析 阅读全文
posted @ 2019-10-18 00:26 进击云原生 阅读(855) 评论(1) 推荐(0) 编辑
摘要: 昨天我们一起爬取珍爱网首页,拿到了城市列表页面,接下来在返回体城市列表中提取城市和url,即下图中的a标签里的href的值和innerText值。 提取a标签,可以通过CSS选择器来选择,如下: $(' cityList dd a');就可以获取到470个a标签: 这里只提供一个思路,go语言标准库 阅读全文
posted @ 2019-10-18 00:23 进击云原生 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 我们来用go语言爬取“珍爱网”用户信息。 首先分析到请求url为: http://www.zhenai.com/zhenghun 接下来用go请求该url,代码如下: 运行后会发现返回体里有很多乱码: 在返回体里可以找到 即编码为gbk,而go默认编码为utf 8,所以就会出现乱码。接下来用第三方库 阅读全文
posted @ 2019-10-18 00:21 进击云原生 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 上一节我们在虚拟机上搭建了linux系统,并利用桥接模式访问互联网,这一节,我们来配置一下通过NAT模式访问互联网。说到这里有些小伙伴可能要问了,NAT模式和桥接模式有什么区别呢? 桥接模式: 虚拟机虚拟出来的系统和局域网内的独立主机属于同等地位,它可以访问局域网内任何一台机器,该模式下,我们得为虚 阅读全文
posted @ 2019-10-18 00:19 进击云原生 阅读(2723) 评论(0) 推荐(0) 编辑
摘要: 今天来推荐一个超级好用的命令行工具:cmder 一款Windows环境下非常简洁美观易用的cmd替代者,它支持了大部分的Linux命令。支持ssh连接linux,使用起来非常方便。比起cmd、powershell、conEmu,其界面美观简洁,功能强大。下面来看看效果: 上面演示了linux下的ls 阅读全文
posted @ 2019-10-18 00:14 进击云原生 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 前段时间有群友在群里问一个go语言的问题: 就是有一个main.go的main函数里调用了另一个demo.go里的hello()函数。其中main.go和hello.go同属于main包。但是在main.go的目录下执行go run main.go却报hello函数没有定义的错: 代码结构如下: m 阅读全文
posted @ 2019-10-18 00:12 进击云原生 阅读(614) 评论(0) 推荐(0) 编辑