Redis

最新 多点Dmalljava校招面经 (含整理过的面试题大全)

梦想与她 提交于 2020-12-19 04:23:50
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火、京东、去哪儿、多点Dmall等10家互联网公司的校招Offer,因为某些自身原因最终选择了多点Dmall。6、7月主要是做系统复习、项目复盘、LeetCode与牛客刷题等准备工作,并且投了字节跳动、拼多多、猿辅导在内的几家公司的提前批,当然还是挂在了简历,因为毕竟自己的学校、学历、项目经验肯定比不过牛客网上那些大厂实习的大佬了,有时间也给自己做个总结,也希望能帮助到大家 校招心得 注重实力,保持良好心态 :面试过程中,继续巩固好自己的技术栈,然后保持一个良好的心态,尤其是还没有Offer的时候,心态别崩,其实到最后大家都会找到工作的,唯一的区别就是公司的方向、规模、待遇方面,也别太在意别人拿到了牛X的Offer,尤其是牛客网,天天神仙打架,刚开始自己也是很纳闷,怎么就能这么牛,最后也都见怪不怪了~。好多之前一直没Offer的人,可能突然某一天就收获到了几份Offer,所以不断提升自己的综合能力才是关键,与其在这羡慕别人,不如让自己心态沉静下来,认真复习、厚积薄发。 多交流,多思考,刻意锻炼表达 :牛客网上有各种面经、面试经验,数不胜数,多去刷刷面经,和一起找工作的小伙伴们或者牛友们交流下面试经验、疑难问题什么的,收获也会很大的,也能放松自己紧张的身心。通过交流与思考要能总结出属于你自己的那一套正确的面试技巧

python爬虫之基于scrapy_redis的分布式爬虫

前提是你 提交于 2020-12-19 04:23:19
基于redis的分布式爬虫 问题: (1)为什么原生的scrapy框架不可以自己实现分布式爬虫? 原因有两个: (1)因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url(调度器不能被共享) (2)多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。(管道不能被共享) (2)scrapy-redis组件的作用是什么? 它提供了可以被共享的调度器和管道 (3)如何使用scrapy-redis组件来实现分布式爬虫? 其一:基于该组件的RedisSpider类 其二:基于该组件的RedisCrawlSpider类 但是这两种实现分布式爬虫的实现流程是一致的 分布式的实现流程: ####1 下载scrapy-redis组件: pip install scrapy_redis ####2 创建工程 ####3 创建爬虫文件:RedisSpider RedisCrawlSpider - scrapy genspider -t crawl xxx www.xxx.com ####4 对爬虫文件中的相关属性进行修改: 导入:from scrapy_redis.spiders import RedisCrawlSpider 将爬虫类的父类修改成基于RedisSpider或者RedisCrawlSpider。注意

MySQL:互联网公司常用分库分表方案汇总!

。_饼干妹妹 提交于 2020-12-19 03:05:51
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达! 一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。 2、CPU瓶颈 第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引,在业务Service层进行业务计算。 第二种:单表数据量太大,查询时扫描的行太多,SQL效率低,CPU率先出现瓶颈 -> 水平分表。 二、分库分表 1、水平分库 概念: 以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。 结果: 每个库的结构都一样; 每个库的数据都不一样,没有交集; 所有库的并集是全量数据; 场景: 系统绝对并发量上来了,分表难以根本上解决问题,并且还没有明显的业务归属来垂直分库。 分析: 库多了,io和cpu的压力自然可以成倍缓解。 2、水平分表 概念:

2020阿里,字节跳动,JAVA岗(一线企业校招、社招)面试题合集

放肆的年华 提交于 2020-12-18 21:42:42
前言 以下面试题全属于一线大厂社招以及校招的面试真题,各位在做这些题目对照自己的时候请平凡心对待,不要信心受挫。其实 做为致力于一线企业校招或者社招的你来说,能把每个知识模块的一小部分问题去深入学习和总结,已经很棒了!然后文末有我自己总结的一些答案和更多面试题的文档总结,需要可以自取! 首先展示一下以下文档包含的路线图 基础 排序实现原理和Collection实现原理 和而的区别(编译之后) 线程池的种类,区别和使用场景 分析线程池的实现原理和线程的调度过程 线程池如何调优 线程池的最大线程数目根据什么确定 动态代理的几种方式 HashMap的并发问题 了解LinkedHashMap的应用吗 反射的原理,反射创建类实例的三种方式是什么? 可克隆接口实现原理,浅拷贝或深拷贝 JavaNIO使用 哈希表和hashmap的区别及实现原理,hashmap会问到数组索引,散列碰撞怎么解决 数组列表和链接列表区别及实现原理 反射中,Class.forName和ClassLoader区别 字符串、字符串缓冲区、StringBuilder的区别? 有没有可能2个不相等的对象有相同的哈希码 简述nio的最佳实践,比如netty,Mina 树状图的实现原理 Jvm相关 类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序 Jvm内存分代 JAVA

redisson+spring aop实现限流

柔情痞子 提交于 2020-12-18 18:41:15
redisson的限流原理 RRateLimiter limiter = redisson.getRateLimiter("myLimiter"); // one permit per 2 seconds limiter.trySetRate(RateType.OVERALL, 1, 2, RateIntervalUnit.SECONDS); limiter.acquire(1); 下面是 RedissonRateLimiter.java#RFuture<T> tryAcquireAsync(RedisCommand<T> command, Long value) return commandExecutor.evalWriteAsync(getName(), LongCodec.INSTANCE, command, "local rate = redis.call('hget', KEYS[1], 'rate');" + "local interval = redis.call('hget', KEYS[1], 'interval');" + "local type = redis.call('hget', KEYS[1], 'type');" + "assert(rate ~= false and interval ~= false and type ~= false,

从零入门 Serverless | 架构的演进

北慕城南 提交于 2020-12-18 17:33:49
作者 | 许晓斌 阿里云高级技术专家 传统单体应用架构 十多年前主流的应用架构都是单体应用,部署形式就是一台服务器加一个数据库,在这种架构下,运维人员会小心翼翼地维护这台服务器,以保证服务的可用性。 ▲ 单体架构 单体应用架构面临的问题 随着业务的增长,这种最简单的单体应用架构很快就面临两个问题。首先,这里只有一台服务器,如果这台服务器出现故障,例如硬件损坏,那么整个服务就会不可用;其次,业务量变大之后,一台服务器的资源很快会无法承载所有流量。 解决这两个问题最直接的方法就是在流量入口加一个负载均衡器,使单体应用同时部署到多台服务器上,这样服务器的单点问题就解决了,与此同时,这个单体应用也具备了水平伸缩的能力。 ▲ 单体架构(水平伸缩) 微服务架构 1. 微服务架构演进出通用服务 随着业务的进一步增长,更多的研发人员加入到团队中,共同在单体应用上开发特性。由于单体应用内的代码没有明确的物理边界,大家很快就会遇到各种冲突,需要人工协调,以及大量的 conflict merge 操作,研发效率直线下降。 因此大家开始把单体应用拆分成一个个可以独立开发、独立测试、独立部署的微服务应用,服务和服务之间通过 API 通讯,如 HTTP、GRPC 或者 DUBBO。基于领域驱动设计中 Bounded Context 拆分的微服务架构能够大幅提升中大型团队的研发效率。 2.

scrapy-redis分布式爬虫实战

跟風遠走 提交于 2020-12-18 09:32:53
Scrapy-Redis代码实战 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。 scrapy-redis在scrapy的架构上增加了redis,基于redis的特性拓展了如下四种组件: Scheduler Duplication Filter Item Pipeline Base Spider scrapy-redis架构 Scheduler Scrapy原本的queue是不支持多个spider共享一个队列的,scrapy-redis通过将queue改为redis实现队列共享。 Duplication Filter Scrapy中通过Python中的集合实现request指纹去重,在scrapy-redis中去重是由Duplication Filter组件来实现的,它通过redis的set不重复的特性,巧妙的实现了DuplicationFilter去重。 Item Pipeline 引擎将(Spider返回的)爬取到的Item给Item Pipeline,scrapy-redis 的Item Pipeline将爬取到的 Item 存入redis的 items queue。修改过Item Pipeline可以很方便的根据 key 从 items

springboot整合redis

感情迁移 提交于 2020-12-18 06:33:21
XML方式(推荐) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="lettuceConnectionFactory" class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory" p:host-name="@redis.ip@" p:port="@redis.port@"/> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p

Flask之SQLAlchemy,flask_session以及蓝图

為{幸葍}努か 提交于 2020-12-18 05:08:27
数据库操作 ORM ORM 全拼 Object-Relation Mapping ,中文意为 对象-关系映射 。主要实现模型对象到关系数据库数据的映射 优点 : 只需要面向对象编程, 不需要面向数据库编写代码. 对数据库的操作都转化成对类属性和方法的操作. 不用编写各种数据库的 sql语句 . 实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异. 不再需要关注当前项目使用的是哪种数据库。 通过简单的配置就可以轻松更换数据库, 而不需要修改代码. 缺点 : 相比较直接使用SQL语句操作数据库,有性能损失. 根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失. Flask-SQLAlchemy flask默认提供模型操作,但是并没有提供ORM,所以一般开发的时候我们会采用flask-SQLAlchemy模块来实现ORM操作。 SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的flask扩展。 SQLAlchemy: https://www.sqlalchemy.org/ 安装 flask-sqlalchemy pip install flask-sqlalchemy 如果连接的是 mysql 数据库,需要安装 mysqldb

SpringBoot 整合Redis

ぐ巨炮叔叔 提交于 2020-12-18 03:24:07
1. 官方介绍 官方地址 集群文档 2. 整合过程 1. 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2. 配置相关配置文件 # ========== redis基础配置 ============ spring.redis.database=0 spring.redis.host=127.0.0.1 spring.redis.password=password spring.redis.port=6379 ## 连接超时时间 丹喂 ms(毫秒) spring.redis.timeout=3000 # ========== redis线程池设置 ============ # 连接池中的最大空闲连接,默认值是8 spring.redis.pool.max-idle=200 # 连接池中最小的空闲连接,默认值是0 spring.redis.pool.min-idle=200 # 如果赋值为-1,则表示不限制;pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽) spring.redis.pool.max-active