Kafka

PHP实现对短信验证码发送次数的限制(防机刷验证码)

本秂侑毒 提交于 2020-10-27 16:54:36
场景 在注册,修改密码,找回密码等场景里,我们都会遇到发送手机短信进行验证码验证,我们都知道,手机的这个短信接口是需要购买了,为了防刷,我们就会对短信验证码发送次数的限制,我们应该如何防止呢? 很多人都会这样做:对用户获取短信验证码的手机号、ip、和浏览器(使用唯一标识)进行限制。 本文介绍的方法是对用户每天只能通过同一浏览器或同一ip地址获取验证码10次或者同一手机号只能获取3次短信验证码,三种限制为“或”关系,一条超限就不发验证码。方法是通过在服务器端将用户的手机号、ip、ur_r标识记录并写入文件,再通过读取文件记录判断用户请求发送验证码的次数来做限制。 方法如下: 这里是获取短信验证码页面: <!DOCTYPE html> < html > < head ></ head > < body > <!-- 隐藏表单uv_r标识,用于对获取验证码的浏览器进行限制,唯一标识存储于浏览器cookie中。在用户进行获取短信验证码操作时将标识传入后台代码(可以通过js传入后台,此处未提供js代码) --> < input type = "hidden" name = "uv_r" value = "" id = "uv_r" > </ body > < script type = ”text/javascript” > /* 使用js获取cookie中ur_r唯一标识,如果不存在

数据源管理 | 搜索引擎框架,ElasticSearch集群模式

ぐ巨炮叔叔 提交于 2020-10-26 23:37:15
本文源码: GitHub·点这里 || GitEE·点这里 一、集群环境搭建 1、环境概览 ES版本6.3.2,集群名称esmaster,虚拟机centos7。 服务群 角色划分 说明 en-master master 主节点:esnode1 en-node01 slave 从节点:esnode2 en-node02 slave 从节点:esnode3 ElasticSearch基础功能和用法: MySQL数据全量和增量方式向ES搜索引擎同步 Linux系统Centos7环境搭建ElasticSearch中间件 SpringBoot2整合ElasticSearch搜索引擎框架 在真正海量数据的业务场景中,ElasticSearch搜索引擎都是需要集群化管理的,实时搜素几十亿的数据十分常见。 2、集群配置 配置文件 vim /opt/elasticsearch-6.3.2/config/elasticsearch.yml 主节点配置 # 集群主节点配置 cluster.name: esmaster node.master: true # 节点名称 node.name: esnode1 # 开发访问 network.host: 0.0.0.0 从节点配置 注意这里两个从节点配置,node.name分别配置为esnode2和esnode3即可。 # 集群名称 cluster.name:

Nice!有了这份Alibaba内部 “Java面试宝典”,跳槽面试稳了

你说的曾经没有我的故事 提交于 2020-10-26 23:20:11
怎样才能拿到大厂的offer,没有掌握绝对的技术,那么就要不断的学习 从疫情破局而出,又在毕业季一路过关斩将,我是如何笑面试官,拿到阿里,腾讯等多家大厂的offer的呢,在这里分享我的秘密武器, 大神整理的Java核心知识点,面试时面试官必问的知识点。 有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。 由于面试题比较全面,内容比较多,所以我分享的知识里面可能会有一些疏漏与杂乱,核心知识点都整理好了 下面会介绍这份Java面试宝典的主要内容涵盖的知识点,由于文章篇幅,所以只展示了截图内容,若需要完整pdf版, 帮忙点赞后,私信【性能调优】即可(一定要记得关注我,不然没办法回复陌生人私信) Java基础+集合+多线程+JVM Java基础 Java 基本功 Java 语法 数据类型 方法(函数) Java 面向对象 集合 多线程 文件与I/O流 Java集合 多线程 JVM 计算机基础 计算机网络 数据结构 算法 操作系统 数据库面试题总结 MySQL Redis 常用框架面试题总结 Spring面试题总结 MyBatis面试题总结 Kafka面试题总结 Netty 面试题总结 优质面经 五面阿里,终获offer 蚂蚁金服实习生面经总结

logstash解析嵌套json格式数据

孤街醉人 提交于 2020-10-26 12:39:24
logstash解析嵌套json格式数据 1、源文件   1.原日志文件为 2019-10-28 09:49:44:947 [http-nio-8080-exec-23] INFO [siftLog][qewrw123ffwer2323fdsafd] - logTime:2019-10-28 09:49:25.833-receiveTime:2019-10-28 09:49:44.044-{"area":"","frontInitTime":0,"initiatePaymentMode":"plugin_manual","network":"电信","os":"Microsoft Windows 7","payStatus":"1","reqs":[{"curlCode":"0","end":"2019-10-28 09:49:25.233","errorCode":"","errorDesc":"","totalTime":2153}],"settleAccountsTime":0}   在这里我们需要先把json前面一段的正则写出来,由于这些数据在实际生产没什么实际意义,所以没重点分字段   DATETIME %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})? ACCESSLOG %

快手Java后台三面,意向已拿,复盘面试官都问了些啥?

非 Y 不嫁゛ 提交于 2020-10-26 10:51:26
快手的面试挺有挑战性的感觉哈哈哈哈,不过我觉得挺有意思的,感觉啥都能问到。(二面是10天前约的面试,差点要忘了)然后是HR面,昨天就收到offer 一面二面啥的我都忘记具体的了,就简单的总结一下 基础 int float short double long char 占字节数? int 范围?float 范围? hashcode 和 equals 的关系 深拷贝、浅拷贝区别 java 异常体系?RuntimeException Exception Error 的区别,举常见的例子 lambda 表达式中使用外部变量,为什么要 final? 集合 集合这块关注一下 1.8 的实现吧,和 1.7 相比变化了很多 Collection 有什么子接口、有哪些具体的实现 简单介绍下 ArrayList 怎么实现,加操作、取值操作,什么时候扩容? 讲一下 hashMap 原理。hashMap 可以并发读么?并发写会有什么问题? 讲一下 concurrentHashMap 原理。头插法还是尾插法?扩容怎么做? 堆是怎么存储的,插入是在哪里? 集合在迭代的过程中,插入或删除数据会怎样? 并发 线程进程和线程的区别?并行和并发的区别?了解协程么?进程间如何通信:进程 A 想读取进程 B 的主存怎么办?线程间通信?线程的生命周期有哪些状态?怎么转换?wait 和 sleep 有什么区别

CDH常用端口汇总

走远了吗. 提交于 2020-10-26 05:06:34
参考文章: CDH常用端口汇总 Hadoop: 50070:HDFS WEB UI端口 8020 : 高可用的HDFS RPC端口 9000 : 非高可用的HDFS RPC端口 8088 : Yarn 的WEB UI 接口 8485 : JournalNode 的RPC端口 8019 : ZKFC端口 10020:historyserver端口 Zookeeper: 2181 : 客户端连接zookeeper的端口 2888 : zookeeper集群内通讯使用,Leader监听此端口 3888 : zookeeper端口 用于选举leader Hbase: 60010:Hbase的master的WEB UI端口 60030:Hbase的regionServer的WEB UI 管理端口 Hive: 9083 : metastore服务默认监听端口 10000:Hive 的JDBC端口 Spark: 7077 : spark 的master与worker进行通讯的端口 standalone集群提交Application的端口 8080 : master的WEB UI端口 资源调度 8081 : worker的WEB UI 端口 资源调度 4040 : Driver的WEB UI 端口 任务调度 18080:Spark History Server的WEB UI 端口 Kafka:

几种常见的数据分区方法

。_饼干妹妹 提交于 2020-10-25 06:42:43
参考文章: 几种常见的数据分区方法 数据分区方法 数据的分区方法(Partitioning methods)大概有以下几种: 垂直分区(Vertical partitioning) 水平分区(Horizontal partitioning) 混合分区(Hybrid partitioning) 垂直分区(Vertical partitioning) 垂直分区需要创建一些较少列的表,每张表存储源表的部分列,以此达到数据的分区。比如我们有一张名为 iteblog 表,如下: CREATE TABLE iteblog ( attr1 INT, attr2 INT, attr3 INT, attr4 TEXT ); 使用垂直分区,可以将这张表拆分成以下形式: 这个在 大数据 数据仓库 很常见,比如我们将一些数据量小,但是经常查询的数据放到 ES 中,数据量比较大的部分,但是不经常被查到放到 HBase 中。这种方法还可以根据说的访问频率,把不同的列数据存放到不同的存储介质中,以此节省存储成本。 水平分区(Horizontal partitioning) 水平分区分区也称为分片(sharding),其根据不同的分区算法将不同行的数据存储到不同的表中(比如关系型数据库中的分库分表)。例如,邮政编码小于50000 的客户存储在 CustomersEast 表中,而邮政编码大于或等于 50000

Apache Kafka 不需要管理员:删除 Apache ZooKeeper 的依赖

℡╲_俬逩灬. 提交于 2020-10-24 20:46:46
目前,Apache Kafka 使用 Apache ZooKeeper 来存储它的元数据,比如分区的位置和主题的配置等数据就是存储在 ZooKeeper 集群中。在 2019 年社区提出了一个 计划 ,以打破这种依赖关系,并将元数据管理引入 Kafka 本身。 所以 Apache Kafka 为什么要移除 Zookeeper 的依赖?Zookeeper 有什么问题?实际上,问题不在于 ZooKeeper 本身,而在于外部元数据管理的概念。 拥有两个系统会导致大量的重复。毕竟,Kafka 是一个分布式的发布-订阅消息系统,而 ZooKeeper 其实也是一个分布式日志系统,其上有一个文件系统 API。每种方法都有自己的网络通信、安全、监视和配置方法。如果同时使用这两个系统,则系统的总体复杂性大约会增加一倍,这导致了不必要的学习曲线,并增加了错误配置导致安全漏洞的风险。 同时,在外部存储元数据并不是很好的。我们至少需要运行三个额外的 Java 进程,有时甚至更多。事实上,我们经常看到具有与 Kafka 节点一样多的 ZooKeeper 节点的 Kafka 集群!此外,ZooKeeper 中的数据还需要缓存在 Kafka 控制器上,这导致了双重缓存。 更糟糕的是,在外部存储元数据限制了 Kafka 的可伸缩性。当 Kafka 集群启动时,或者一个新的控制器被选中时,控制器必须从

一篇小文带你走进RabbitMQ的世界

二次信任 提交于 2020-10-24 13:37:00
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 说到消息中间件,大部分人的第一印象可能是Kafka。毕竟Kafka自问世以来,就顶着高并发,大流量的光环。当然了Kafka也不负众望,在大数据处理方面一直独领风骚。 这里想说说另一款同样优秀的消息中间件RabbitMQ。 选RabbitMQ还是Kafka 如果单机数据量没有到十万级以上,我觉得选哪个都OK,如果超过百万甚至到了千万级那么建议选择Kafka。 对了还有重要的一点,RabbitMQ支持事务,而Kafka不支持。所以如果你的业务系统要求支持事务,那么只能选RabbitMQ。这也是很多金融系统选择RabbitMQ作为消息中间件的原因。 RabbitMQ基本概念 先来说一下消息中间件的通用模型,所有的消息中间件的模型基本都是这样。 而RabbitMQ是基于AMQP协议实现的。模型大概是这个样子,如下图所示 重点关注中间两个框框,下面依次解读一下。 信道 建立TCP链接是一件很费时的事情,所以很多提供高并发服务的软件都支持TCP链接复用,比如HTTP协议的KeepAlive就是为了复用TCP链接准备的。所以RabbitMQ提出了信道的概念,一个TCP链接里面可以支持多个信道同时通信,以提高通信效率。如下图所示。 broker 一个启动的RabbitMQ实例

PHP解耦的三重境界(浅谈服务容器)

混江龙づ霸主 提交于 2020-10-24 11:05:17
在完成整个软件项目开发的过程中,有时需要多人合作,有时也可以自己独立完成,不管是哪一种,随着代码量上升,写着写着就“失控”了,渐渐“丑陋接口,肮脏实现”,项目维护成本和难度上升,到了难以维持的程度,只有重构或者重新开发。 第一重境界 假设场景:我们需要写一个处理类,能够同时操作会话,数据库和文件系统。我们或许会这么写。 境界特征:可以运行,但是严重耦合 class DB{ public function DB($arg1,$arg2){ echo 'constructed!'.PHP_EOL; } } class FileSystem{ public function FileSystem($arg1,$arg2){ echo 'constructed!'.PHP_EOL; } } class Session{ public function Session($arg1,$arg2){ echo 'constructed!'.PHP_EOL; } } class Writer{ public function Write(){ $db=new DB(1,2); $filesystem=new FileSystem(3,4); $session=new Session(5,6); } } $writer=new Writer(); $writer->write(); 写法缺点: 1