Redis

scrapy爬虫-scrapy-redis分布式

风格不统一 提交于 2020-12-23 03:55:43
1、如何将一个scrapy爬虫项目修改成为一个简单的分布式爬虫项目 官方文档: https://scrapy-redis.readthedocs.io/en/stable/ 只用修改scrapy项目的两个文件就可以了 一个是爬虫组件文件: # -*- coding: utf-8 -*- import scrapy from scrapy_redis.spiders import RedisSpider # 自定义爬虫类的继承类不再是scrapy.spiders下面的爬虫类, # 而是scrapy-redis.spiders下面的爬虫类 class DistributedSpiderSpider(RedisSpider): name = ' distributed_spider ' allowed_domains = [ ' wh.lianjia.com ' ] # 将start_urls替换为redis_key # start_urls = ['https://wh.lianjia.com/ershoufang/'] redis_key = " myspider:start_urls " def parse(self, response): print (response.meta) item = dict() item[ " province " ] = " 湖北 " item[

这个 bug 让我更加理解 Spring 单例了

烂漫一生 提交于 2020-12-22 19:52:17
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。 谁还没在 Spring 里栽过跟头呢,从哪儿跌倒,就从哪儿睡一会儿,然后再爬起来。 讲点儿武德 这是由一个真实的 bug 引起的,bug 产生的原因就是忽略了 Spring Bean 的单例模式。来,先看一段简单的代码。 public class TestService { private String callback = "https://ip.com/token={token}"; public String getCallback() { Random random = new Random(); int number = random.nextInt(100); System.out.println("本次随机数为:" + number); callback = callback.replace("{token}", String.valueOf(number)); return callback; } public static void main(String[] args) { TestService testService = new TestService(

ASP.NET Core中使用EasyCaching作为缓存抽象层

痞子三分冷 提交于 2020-12-22 07:46:46
⒈是什么? 和 CacheManager 差不多,两者的定位和功能都差不多。 EasyCaching主要提供了下面的几个功能 统一的抽象缓存接口 多种常用的缓存Provider(InMemory,Redis,Memcached,SQLite) 为分布式缓存的数据序列化提供了多种选择 二级缓存 缓存的AOP操作(able, put,evict) 多实例支持 支持Diagnostics Redis的特殊Provider ⒉示例(以InMemory为例)   1.安装Nuget包     EasyCaching.InMemory   2.在Startup中配置服务及请求管道 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 using EasyCaching.Core; 6 using EasyCaching.InMemory; 7 using Microsoft.AspNetCore.Builder; 8 using Microsoft.AspNetCore.Hosting; 9 using Microsoft.AspNetCore.Http; 10 using Microsoft.AspNetCore.Mvc; 11

NoSQL 简介

时光怂恿深爱的人放手 提交于 2020-12-22 05:11:58
基本含义 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。 在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDMBS)来处理。 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。 通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。 NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。 RDBMS vs NoSQL RDBMS - 高度组织化结构化数据 - 结构化查询语言(SQL) - 数据和关系都存储在单独的表中。 - 数据操纵语言,数据定义语言 - 严格的一致性 - 基础事务 NoSQL - 代表着不仅仅是SQL - 没有声明性查询语言 - 没有预定义的模式 - 键 - 值对存储,列存储,文档存储,图形数据库 - 最终一致性,而非ACID属性 - 非结构化和不可预知的数据 - CAP定理 - 高性能,高可用性和可伸缩性

数据结构与算法笔记-数据结构-跳表

≯℡__Kan透↙ 提交于 2020-12-22 05:09:44
[TOC] 数据结构与算法笔记-数据结构-跳表 跳表(skip list) 关键词 跳表是基于链表的一种动态数据结构,可以简单认为就是对链表的节点添加了多级索引. 跳表支持快速地插入,删除,查找操作,时间复杂度都是O(logn),空间复杂度为O(n) 跳表是通过添加索引使用空间换时间的设计思路,构建多级索引来提升查询效率 跳表的时间复杂度为O(logn) 跳表数通过随机函数来维护平衡 跳表插入数据时要维护索引和节点的平衡,否则极端情况下可能会导致跳表退化成为链表 跳表更加灵活,可以通过改变索引构建策略,有效平衡执行效率和内存消耗. 跳表有可与红黑树匹敌的性能,跳表写起来却好写很多.很多时候可以直接替代红黑树 按照区间来查找数据这个操作,红黑树的效率没有跳表高.对于按照区间查找数据这个操作,跳表可以做到,O(logn) 的时间复杂度定位区间的起点,而后在原始链表中顺序往后遍历即可 理解跳表 二分查找法底层依赖的时数组随机访问的特性,所以只能用数组来实现. 链表也有类似二分的查找操作, 叫做 跳表 (skip list) 链表 是一种各方面性能都很优秀的 动态数据结构 ,支持: 快速插入,删除,查找.写起来也简单, 甚至可以代替红黑树. 其中Redis的有序列表(sorted set)就是利用跳表来实现的,因为: 严格来说Redis还用到了Hash table 主要Redis手册

谈谈 Spring 中的 AutowireCandidateResolver

生来就可爱ヽ(ⅴ<●) 提交于 2020-12-22 04:31:42
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达! 接口定义  用于推断一个特定的beanDefinition是否能作为指定依赖的候选者的策略接口 ” public interface AutowireCandidateResolver { // 默认情况下直接根据bd中的定义返回,如果没有进行特殊配置的话为true default boolean isAutowireCandidate (BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor) { return bdHolder.getBeanDefinition().isAutowireCandidate(); } // 指定的依赖是否是必要的 default boolean isRequired (DependencyDescriptor descriptor) { return descriptor.isRequired(); } // QualifierAnnotationAutowireCandidateResolver做了实现,判断是否有@Qualifier注解 // 一共有两种注解: // 1.Spring内置的@Qualifier注解,org.springframework.beans.factory.annotation

由Spring应用的瑕疵谈谈DDD的概念与应用(二)

。_饼干妹妹 提交于 2020-12-21 22:16:57
在 上一篇 文章中,通过Spring Web应用的瑕疵引出改善的措施,我们讲解了领域驱动开发的相关概念和设计策略。本文主要讲解领域模型的几种类型和DDD的简单实践案例。 架构风格 在《实现领域驱动设计》一书中提到了几种架构风格:六边形架构、REST架构、CQRS 和事件驱动等。在实际使用中,落地的架构并非是纯粹其中的一种,而很有可能户将上述几种架构风格结合起来实现。 分层架构 分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种,即严格分层架构和松散分层架构。在严格分层架构中,某层只能与位于其直接下方的层发生耦合,而在松散分层架构中,则允许某层与它的任意下方层发生耦合。DDD分层架构中比较经典的三种模式:四层架构、五层架构和六边形架构。 四层架构 Eric Evans在《领域驱动设计-软件核心复杂性应对之道》这本书中提出了传统的四层架构模式: User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令。这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人。 Application为应用层,定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负责的工作对业务来说意义重大,也是与其它系统的应用层进行交互的必要渠道。应用层要尽量简单,不包含业务规则或者知识,而只为下一层中的领域对象协调任务,分配工作

CentOS7 Linux yml安装 Redis

…衆ロ難τιáo~ 提交于 2020-12-21 14:52:12
CentOS7 Linux yml安装 Redis 1. 安装redis 检查是否有redis yum 源 ​yum install redis 下载fedora的epel仓库 yum install epel-release 安装redis数据库 yum install redis 安装完毕后,使用下面的命令启动redis服务 # 启动redis service redis start # 停止redis service redis stop # 查看redis运行状态 service redis status # 查看redis进程 ps -ef | grep redis 设置redis为开机自动启动 chkconfig redis on 进入redis服务 # 进入本机redis redis-cli # 列出所有key keys * 防火墙开放相应端口 # 开启6379 /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT # 保存 /etc/rc.d/init.d/iptables save # centos 7下执行 service iptables save 2.修改redis默认端口和密码 打开配置文件 vi /etc/redis.conf 修改默认端口,查找 port 6379 修改为相应端口即可 修改默认密码

总结一下2020年读了几本书

跟風遠走 提交于 2020-12-21 11:39:30
一、专业类书籍(10本) 纸质版 1、高可用可伸缩微服务架构 2、云原生Java 3、SpringCloud微服务架构实战 4、代码整洁之道(未完成) 5、深入理解java虚拟机 电子版 1、kafka技术内幕 2、dubbo手册 3、高性能MySQL 4、redis原理 5、深入理解SpringCloud与微服务构建 二、非专业类书籍(30) 金融理财 1、富爸爸穷爸爸 2、小狗钱钱 3、财富自由之路 4、不可撼动的财务自由 5、理财就是里生活 6、一本书读懂财务报表 心理学 1、人际交往心理学 2、当你的才华还撑不起你的梦想时 3、你的努力,要配得上你的野心 4、超越原生家庭 5、会说话就是情商高 6、亲密关系 7、非暴力沟通 8、控制愤怒 职场励志 1、金字塔原理 2、活法 3、成法 4、定位 5、格局 6、断舍离 7、你要么出众,要么出局 8、哈佛效率课:高效能人士的8个习惯 9、结构思考力 10、像TED一样演讲2:沟通升级 其他 1、三十岁,一切刚刚开始 2、你没有退路,才有出路 3、刻意练习 4、胡雪岩谋略大全 5、曾国藩谋略大全 6、墨菲定律 三、总结 2020年保守估计,总计40本。因为还有一些在书店或图书馆看完后记不起名的其他书籍,从大类来看: 计算机专业类、金融理财类、心理学、人物传记励志类 。2021年计划增加: 商业类、互联网类、销售类、法律类等 。 四

【原创】kubernetes部署高可用Harbor

江枫思渺然 提交于 2020-12-21 07:52:20
##前言 本文Harbor高可用依照 Harbor官网 部署,主要思路如下,大家可以根据具体情况选择搭建。 部署Postgresql高可用集群。(本文选用Stolon进行管理,请查看文章《 kubernetes下Stolon部署高可用Postgresql 》) 部署redis高可用集群。(本文选用Helm对redis进行高可用部署,请查看文章《 kubernetes部署高可用redis 》,该文以整理好redis编排文件可直接使用) 部署Harbor高可用集群。(本文主要阐述Harbor的高可用部署,为《 kubernetes搭建Harbor无坑及Harbor仓库同步 》补充部分,请先行阅读) ##一、Harbor部署前准备 本文仅说明高可用配置,其余部署请查看《 kubernetes搭建Harbor无坑及Harbor仓库同步 》 ###.安装方式 helm安装 直接使用博主整理好的编排文件安装(通过Helm生成) ####1.helm安装 安装Helm请查看《 kubernetes搭建Harbor无坑及Harbor仓库同步 》,其中包含Helm安装。 #####1.1.下载 harbor-helm git clone https://github.com/goharbor/harbor-helm.git cd XXX/harbor-helm #####1.2.修改value