02 2020 档案
摘要:https://www.cnblogs.com/shuaiqi-XCJ/p/11254611.html
阅读全文
摘要:1、rowKey设计原则: (1)rowkey 长度原则: rowkey是一个二进制码流,可以为任意字符串,最大长度为64kb,实际应用中一般为10-100bytes,它以byte[]形式保存,一般设定成定长。一般越短越好,不要超过16个字节,注意原因如下: 1、目前操作系统都是64位系统,内存8字
阅读全文
摘要:一、Spark中的基本概念 1、spark中的概念: (1)Application:指的是用户编写的Spark应用程序,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。Spark应用程序,由一个或多个作业JOB组成 https://blog.csdn.net/liuxi
阅读全文
摘要:什么是ThreadLocal变量 ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意: 因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal
阅读全文
摘要:1、悲观锁: 执行操作前假设当前的操作肯定(或有很大几率)会被打断(悲观)。基于这个假设,我们在做操作前就会把相关资源锁定,不允许自己执行期间有其他操作干扰。Redis不支持悲观锁。Redis 作为缓存服务器使用时,以读操作为主,很少写操作,相应的操作被打断的几率较少。不采用悲观锁是为了防止降低性能
阅读全文
摘要:1、redis 是单线程的为什么还这么快 1)完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。 2)数据结构简单,对数据操作也简单,Redis 中的数据结构是专门进行设计的。 3)采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁
阅读全文
摘要:1、平衡二叉树:若一个二叉树,任意节点的深度差不超过1,这个二叉树就是平衡二叉树。 2、如何判断一个树是平衡二叉树:求每个节点的左子树和右子树的深度,做差。 参看剑指offer:https://www.cnblogs.com/guoyu1/p/12190567.html
阅读全文
摘要:1. join时将大表放后,小表放在前 正确的说法:把重复关联键少的表放在join前面做关联可以提高join的效率,实际操作中也没法看什么重复连接键多少,因此一般都是小表在前了,表越少,重复的连接键总量就越少。 因此通常需要将小表放前面,或者标记哪张表是大表:/*streamtable(table_
阅读全文
摘要:正向代理:a通过b向c借钱,a知道c的存在。 反向代理:a 通过b借钱,b找c借钱,a不知道c的存在。 https://www.cnblogs.com/puls/p/8634505.html
阅读全文
摘要:Scala提供的隐式转换的特性的作用,简单说就是:当Scala编译器进行类型匹配时,如果找不到合适的类型,那么隐式转换会让编译器在作用范围内自动推导出合适的类型,在代码重构设计上,可以避免冗余的代码,使得代码非常优雅。 使用场景一:隐式参数 scala> def sayHello(age: Int)
阅读全文
摘要:1、spark中默认的分区器: Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数。 只有Key-Value类型的RDD才有分区器的
阅读全文
摘要:主要从系统配置、前端、中间件、后端、数据库、监控 来说明。 https://juejin.cn/post/7044032901662375949
阅读全文
摘要:1、双重key聚合解决数据倾斜:个别key数据量过大,导致数据倾斜。在key前加随机前缀,先进行一次预聚合,然后再将随机前缀去掉,再进行一次聚合。 // 注册自定义函数 spark.udf().register("concat_String_string", new ConcatStringStri
阅读全文
摘要:1、join SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON pv.userid = u.userid; 实现过程: Map: 1、以 JOIN ON 条件中的列作为 Key,如果有多个列,则 Key 是这些列的组合。(key=on条
阅读全文
摘要:1、row_number: 分组排序+序号标记 假如我们有这样一组数据,我们需要求出不同性别的年龄top2的人的信息。这个时候怎么做?可能我们会首先想到分组,但是分组只能值top1,怎么样能求出top2,top3呢?这时候我们想如果分组后能够按照年龄排序然后标出来序号就好了! id age name
阅读全文
摘要:1、前置知识: (1)sc.defaultMinPartitions sc.defaultMinPartitions=min(sc.defaultParallelism,2) 也就是sc.defaultMinPartitions只有两个值1和2,当sc.defaultParallelism>1时值为
阅读全文
摘要:1、任务中如何确定spark RDD分区数、task数目、core个数、worker节点个数、excutor数量 (1)hdfs 上的文件的存储形式是以 Block 的形式存储的,每个 File 文件都包含了很多块,一个Block默认是128M大小。当 spark 从 hdfs 上读取数据的时候,会
阅读全文
摘要:1、java反射机制:Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语
阅读全文
摘要:1、为什么要做消息幂等:消息会有重复 今天正式服务器上2台服务器收到同一个消息,因为是集群模式不可能两台服务器都收到同一个消息,后来排查发现是由于网络各种原因确认消息没及时到达到rocketmq,所以会重发。 当系统的调用链路比较长的时候,比如系统A调用系统B,系统B再把消息发送到RocketMQ中
阅读全文
摘要:1、题目描述 对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) N
阅读全文
摘要:1、Watcher 机制: Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据 Watcher 通知状态和事件类型做出业务上的改变。 工
阅读全文
摘要:相同点: (1)两者都存在一个类似于 Leader 进程的角色,由其负责协调多个 Follower 进程的运行 (2)Leader 进程都会等待超过半数的 Follower 做出正确的反馈后,才会将一个提案进行提交 (3)ZAB 协议中,每个 Proposal 中都包含一个 epoch 值来代表当前
阅读全文
摘要:缓存与数据库双写时的数据一致性问题:只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案,读请求和写请求串
阅读全文
摘要:1、Redis 的并发竞争 Key :多个系统同时对一个 key 进行操作,但是最后执行的顺序和我们期望的顺序不同,这样也就导致了结果的不同! 2、解决方式: 分布式锁(zookeeper 和 redis 都可以实现分布式锁)。(如果不存在 Redis 的并发竞争 Key 问题,不要使用分布式锁,这
阅读全文
摘要:1、缓存雪崩:缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。 解决办法: 事前:尽量保证整个 redis 集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL崩掉。
阅读全文
摘要:Redis 通过 MULTI、EXEC、WATCH 等命令来实现事务(transaction)功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端
阅读全文
摘要:1、redis 持久化机制:为了之后重用数据(比如重启机器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置,将内存中的数据写入到硬盘里面。 Redis的两种种持久化方式:快照(snapshotting,RDB)、只追加文件(append-only file,AOF)。 (1
阅读全文
摘要:1、redis 内存淘汰机制:MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据? http://download.redis.io/redis-stable/redis.conf redis 提供 6种数据淘汰策略: 1. volatile-lru:
阅读全文
摘要:1、设置过期时间功能:即对存储在 redis 数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的 token 或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。我们 set key 的
阅读全文
摘要:一、redis概述 1、redis:简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,re
阅读全文
摘要:1、Scala方法: def functionName ([参数列表]) : [return type] = { function body return [expr] } 例如: object add{ def addInt( a:Int, b:Int ) : Int = { var sum:In
阅读全文
摘要:一、Scala集合主要包括: 1、List 列表:List的特征是其元素以线性方式存储,集合中可以存放重复对象。 2、Set 集合:Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 3、Map 映射:Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象
阅读全文