技术文章

上亿数据怎么玩深度分页?兼容MySQL + ES + MongoDB

别来无恙 提交于 2021-02-18 07:36:41
面试题 & 真实经历 面试题 :在数据量很大的情况下,怎么实现深度分页? 大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是 分库分表建索引 ,这是一种很 标准的正确回答 ,但现实总是很骨感,所以面试官一般会追问你一句, 现在工期不足,人员不足,该怎么实现深度分页? 这个时候没有实际经验的同学基本麻爪,So,请听我娓娓道来。 惨痛的教训 首先必须明确一点 :深度分页可以做,但是 深度随机跳页绝对需要禁止。 上一张图: 你们猜,我点一下第 142360 页,服务会不会爆炸? 像 MySQL , MongoDB 数据库还好,本身就是专业的数据库,处理的不好,最多就是慢,但如果涉及到 ES ,性质就不一样了,我们不得不利用 SearchAfter Api,去循环获取数据,这就牵扯到内存占用的问题,如果当时代码写的不优雅,直接就可能导致内存溢出。 为什么不能允许随机深度跳页 从技术的角度浅显的聊一聊为什么不能允许随机深度跳页,或者说为什么不建议深度分页 MySQL 分页的基本原理: SELECT * FROM test ORDER BY id DESC LIMIT 10000, 20; LIMIT 10000 , 20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行。如果是LIMIT 1000000 , 100,需要扫描1000100 行

【python实现卷积神经网络】卷积层Conv2D反向传播过程

孤人 提交于 2021-02-18 07:36:29
代码来源: https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride、padding)的具体实现: https://www.cnblogs.com/xiximayou/p/12706576.html 激活函数的实现(sigmoid、softmax、tanh、relu、leakyrelu、elu、selu、softplus): https://www.cnblogs.com/xiximayou/p/12713081.html 损失函数定义(均方误差、交叉熵损失): https://www.cnblogs.com/xiximayou/p/12713198.html 优化器的实现(SGD、Nesterov、Adagrad、Adadelta、RMSprop、Adam): https://www.cnblogs.com/xiximayou/p/12713594.html 本节将根据代码继续学习卷积层的反向传播过程。 这里就只贴出Conv2D前向传播和反向传播的代码了: def forward_pass(self, X, training= True): batch_size, channels, height, width = X.shape self.layer_input = X # Turn

LeetCode正则表达式匹配

瘦欲@ 提交于 2021-02-18 07:36:07
题目描述   给你一个字符串 s 和一个字符规律 p ,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。   ' . ' 匹配任意单个字符 ' * ' 匹配零个或多个前面的那一个元素   所谓匹配,是要涵盖 整个字符串 s的,而不是部分字符串。 说明:   s 可能为空,且只包含从 a-z 的小写字母。   p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 示例 1:    输入:     s = "aa"     p = "a"   输出: false   解释: "a" 无法匹配 "aa" 整个字符串。 示例 2:    输入:     s = "aa"     p = "a*"   输出: true   解释: 因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。 示例 3:    输入:     s = "ab"     p = ".*"   输出: true   解释: ".*" 表示可匹配零个或多个('*')任意字符('.')。 示例 4:    输入:     s = "aab"     p = "c*a*b"   输出: true   解释: 因为 '*' 表示零个或多个,这里 'c' 为 0 个, 'a' 被重复一次。因此可以匹配字符串 "aab"

Apache HTTPD 正向(forward)和反向(reverse)代理

可紊 提交于 2021-02-18 07:35:40
Apache可以被配置为正向(forward)和反向(reverse)代理,下面分别从这两方面重点介绍: 提供CHM版参考手册下载:Apache 2.2 简体中文参考手册.chm(金步国翻译) 示例环境为:windows vista+apache2.2.19,以下配置亲测均通过 一、正向代理forward proxy [1]、概念及用途 正向代理是一个位于客户端和目标原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标原始服务器,然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理,比如我们经常需要在浏览器中设置代理来访问一些网站。 正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。 [2]、配置及演示 打开文件conf/httpd.conf,搜索到以下内容,去掉注释加载相应模块(去掉前面的“#”即可) 引用 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so 在文件httpd.conf的末尾加上如下内容: 引用 # module proxy config

Reverse Proxy Vs Forward Proxy

醉酒当歌 提交于 2021-02-18 07:35:26
Reverse Proxy What is Reverse Proxy Server A reverse proxy server is an intermediate connection point positioned at a network’s edge. It receives initial HTTP connection requests, acting like the actual endpoint. Essentially your network’s traffic cop, the reverse proxy serves as a gateway between users and your application origin server . In so doing it handles all policy management and traffic routing. A reverse proxy operates by: Receiving a user connection request Completing a TCP three-way handshake, terminating the initial connection Connecting with the origin server and forwarding the

IntelliJ IDEA导入JDK出现The selected directory is not a valid home for JDK问题的解决方法

岁酱吖の 提交于 2021-02-18 07:35:05
IntelliJ IDEA导入JDK出现The selected directory is not a valid home for JDK问题的解决方法 参考文章: (1)IntelliJ IDEA导入JDK出现The selected directory is not a valid home for JDK问题的解决方法 (2)https://www.cnblogs.com/wanghaokun/p/9109983.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4437884/blog/4953506

数据仓库之数据分析

余生颓废 提交于 2021-02-18 07:19:12
1. 数据仓库基本介绍   英文名称为 Data Warehouse ,可简写为DW或DWH。数据仓库的目的是 构建面向分析的集成化数据环境 ,为企业提供 决策支持 (Decision Support)。它出于分析性报告和决策支持目的而创建。   数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。 2. 数据仓库的定义   数据仓库是 面向主题的 (Subject-Oriented )、 集成的 (Integrated)、 稳定性的 (Non-Volatile)和 时变的 (Time-Variant )数据集合,用以支持管理决策。 2.1、面向主题   数据仓库中的数据是按照一定的主题域进行组织。   主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。 2.2、集成性   根据决策分析的要求,将分散于各处的源数据进行抽取、筛选、清理、综合等工作,最终集成到数据仓库中。 2.3、稳定性   数据的相对稳定性,数据仓库中的数据只进行新增,没有更新操作、删除操作处理。   反映历史变化,以查询分析为主。 2.4、时变性   数据仓库的数据一般都带有时间属性,随着时间的推移而发生变化,不断地生成主题的新快照 4.

tomcat多实例配置

爷,独闯天下 提交于 2021-02-18 07:16:23
单机多实例部署tomcat 1: /usr/local/tomcat 2: /usr/local/tomcat2 step1:/etc/profile ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ JAVA_HOME=/usr/java/jdk1.7.0_67 JAVA_BIN=/usr/java/jdk1.7.0_67/bin PATH=$PATH:$JAVA_BIN CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH CATALINA_BASE=/usr/local/tomcat CATALINA_HOME=/usr/local/tomcat TOMCAT_HOME=/usr/local/tomcat export CATALINA_BASE CATALINA_HOME TOMCAT_HOME CATALINA_BASE2=/usr/local/tomcat2 CATALINA_HOME2=/usr/local/tomcat2 TOMCAT_HOME2=/usr/local/tomcat2 export CATALINA_BASE2 CATALINA_HOME2 TOMCAT_HOME2 step2

MVC模式和Spring MVC初识

萝らか妹 提交于 2021-02-18 06:52:14
概述 传统的Model1和Model2 在Model1的模式下,整个Web应用几乎全部是由JSP页面组成,接受和处理用户请求,并对请求处理后直接做出响应;JSP身兼View和Controller两个角色,将控制逻辑和表现逻辑糅合在一起。 缺点: 1.代码的复用性低。 2.增加了应用扩展和维护的难度。 Model2是基于MVC架构的设计模式,具体实现如下如: MVC的思想是将一个应用分成三个基本部分,模型(Model)、视图(View)、控制器(Controller),这三个部分以最少的耦合协同工作,从而提高应用程序的可扩展性和可维护性。 1.模型(Model):JavaBean 2.视图(View):JSP页面 3.控制器(Controller):Servlet MVC模式使得Model2具有组件化特点,更能适用于大规模应用的开发(但增加了开发的复杂度)。 MVC优势 MVC并不是Java语言和Web应用特有的设计思想,它是所有面向对象程序设计语言都应该遵守的规范。 在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。 MVC的特点: 1.多个视图可以对应一个模型。按MVC的设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量。一旦模型发生改变,也易于维护。 2.模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术。 3