自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 资源 (4)
  • 收藏
  • 关注

原创 计算机网络

计算机网络分层七层:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层应用层 传输层 网际层TCP与UDP的区别UDP是无连接的 尽最大可能进行交付,没有拥塞控制,面向报文。TCP是面向连接的 提供可靠传输,由流量控制,拥塞控制,面向字节流的;TCP的字节格式(源和目标端口号,序号,确认号,头部长度,窗口大小,校验和等)IP协议版本号,首部长度,总长度,校验和,源ip,目标ip,生存时间,为什么要三次握手主要为了防止已经失效的连接请求报文段突然又传送到B,因而产生错误;如A发

2021-03-13 20:28:00 138

原创 操作系统的基本知识

进程与线程进程是系统进行资源分配和调度的基本单位;线程是进行运行调度的最小单位;区别与联系:一个进程可以有一个或多个线程;线程包含在进程之中,是进程中实际运行工作的单位;线程共享进程资源;一个进程可以并发多个线程,每个线程执行不同的任务。进程的五状态创建状态:进程拥有PCB,其他资源尚未就绪就绪状态:其他资源都准备好了,就差cpu资源执行状态:进程获得cpu,进行执行阻塞状态:进程因为某种原因放弃CPU执行终止状态:进程运行完成,由系统清理和归还PCB进程的PCB进程控制块(PCB)

2021-03-13 19:45:51 167

原创 总结

一、项目介绍:(1) 项目名称:互联网广告精准投放DSP项目(2) 项目目的:通过分析处理用户使用APP或者点击网页等产生的日志数据来得到一些有价值的信息,以此来帮助广告主 进行精准广告投放。我们利用大数据技术对海量人群的上网行为进行细分,根据不同人群的上网习惯构建海量用户的画像系 统,给不同的人群打上相应的标签,基于用户的标签进行精准的广告推送。(3) 集群规模:服务器硬盘raid0之后为10T。项目生产环境规划: 服务器安装Esxi6.0系统,虚拟出8台centos6.5服务器,一共 8 台,

2021-03-02 16:00:53 200

原创 2021-02-26

调整数组顺序使奇数位于偶数前面class Solution { public int[] exchange(int[] nums) { int i = 0, j = nums.length - 1, tmp; while(i < j) { while(i < j && (nums[i] & 1) == 1) i++; while(i < j && (nums[j

2021-02-26 19:12:58 68

原创 2.23

40. 最小的k个数class Solution{ public int[] getLeastNumber(int[] arr,int k){ int []vec=new int[k]; if(k==0){ return vec; } PriorityQueue<Integer> queue = new PriorityQueue<Integer>(new Comparator<Integer>() { public i

2021-02-23 23:07:45 59

原创 2.21

24 反转链表class Solution{ public ListNode reverseList(ListNode head){ if(head==null || head.next==null){ return head; } ListNode node=reverseList(head.next); head.next.next=head; head.next=null; return node; }}3 数组中重复的数字查找任意一个出现超过一次的

2021-02-21 21:12:33 55

原创 (二)真实项目-总体架构

整体架构项目展示用户数据:订单监控:1、项目架构及解决方案论述1.1 通过binlog方式实时梳理业务库高QPS压力QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。官网binlog介绍MySQL中通常有以下几种类型的文件:日志类型写入日志的信息错误日志记录在启动,运行或停止mysqld时遇到的问题通用查询日志记录建立的客户端连接和执行的语

2021-01-22 23:17:29 1552 1

原创 (一)从MySQL到HBase:数据存储方案转型演进

MySQL与HBase说到最核心的点,是一种数据存储方案。方案本身没有对错、没有好坏,只有合适与否。相信多数公司都与MySQL有着不解之缘,部分学校的课程甚至直接以SQL语言作为数据库讲解。我想借自身经历,先来谈谈MySQL应用的演化。本文大致会从以下几个方面入手,谈谈笔者对数据存储方案选型的看法:• 从MySQL到HBase集群化方案的演化• MySQL与HBase的性能取舍• 不同方案的优化思路• 总结一、集群化方案1、MySQL应用的演化MySQL与HBase说到最核心的点,是一种数据

2021-01-22 23:17:09 164

原创 Kafka简介

1. kafka基本介绍1 简介​ 课程开始之前,我先提出一个问题,也是一个常见的面试题,kafka是不是可靠的。2 kafka的初步认识kafka是什么​ Kafka是一个分布式、高吞吐,可分区的,可复制(多副本,冗余存储)的基于日志提交的发布-订阅消息系统.由于支持高 吞吐量,可扩展而被广泛使用。kafka的定位工作中Kafka使用方式消息队列有哪些好处在这里插入图片描述为什么选择kafka数据量巨大(PB级别)如何存储?机器不够,集群如何扩展?消息的重复

2021-01-22 23:15:55 1250 1

原创 (一)算法的框架思想

⼀、 数据结构的存储⽅式数据结构的存储⽅式只有两种: 数组(顺序存储) 和链表(链式存储)有很多人会有疑问,不是还有散列表,栈,队列,堆,树,图等等各种的数据结构,不过上述的这些都是属于上层建筑,而数组和链表才是结构基础。比如:⽐如说「队列」 、 「栈」 这两种数据结构既可以使⽤链表也可以使⽤数组实现。 ⽤数组实现, 就要处理扩容缩容的问题; ⽤链表实现, 没有这个问题,但需要更多的内存空间存储节点指针。「图」 的两种表⽰⽅法, 邻接表就是链表, 邻接矩阵就是⼆维数组。 邻接矩阵判断连通性迅速,

2021-01-22 09:28:27 370

原创 ElasticSearch

题记:Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识、原理从初学者认知、学习的角度,从以下9个方面进行详细梳理。欢迎讨论……0. 带着问题上路——ES是如何产生的?(1)思考:大规模数据如何检索?如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题:1)用什么数据库好?(mysql、sybase、oracle、达梦、神通、mongodb、hbase…)2)如何解决单点故障;(lvs、F5、A10、Zookeep、

2021-01-21 09:16:29 62 1

原创 Flink VS Sparkstreaming

FlinkApache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。Flink项目的理念是:“Apache Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架”。目标:低延迟,高吞吐,准确性传统数据处理架构事务处理分析处理sparkstreaming也需要时间攒齐有状态的流式处理来一条处理一条如何保证乱序情况下 结果的正确性第一代流式

2021-01-21 09:15:55 106

原创 (五)sparkstreaming的架构分析

源码分析streamingContext:jobscheduler总的来说例如socketDstream触发执行的关键ReciverTracker是数据接收相关的,JobGenertator是数据处理相关的入口函数调用jobscheduler的start方法reciverTracker进入jobGeneratro的方法...

2021-01-21 09:15:29 49

原创 分布式缓存Redis

1 缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都去查询数据库了,而对数据库 CPU 和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。 一般有三种处理办法:一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。为 key 设置不同的缓存失效时间。缓存雪崩:(1)碰到这种情况,一般并发量不是特别多的时候,使用

2021-01-21 09:14:51 210

原创 Redis的基本数据结构

Redis中的字符串简单的操作Redis中的列表一个列表可以有序地存储多个字符串,并且列表里的元素是可以重复的命令与行为LPUSH将元素推入列表的左端RPUSH将元素推入列表的右端LPOP从列表左端弹出元素RPOP从列表右端弹出元素LINDEX获取列表在给定位置上的一个元素LRANGE获取列表在给定范围上的所有元素具体实例如下图:Redis中的集合SADD将元素添加到集合 成功添加返回1,如果返回0则表示集合中已经有这个元素了SREM从集合里面移除元素 存..

2021-01-21 09:14:38 86

原创 (五)LinkedhashMap剖析

一、前言前面我们已经分析了HashMap的源码,已经知道了HashMap可以用在哪种场合,如果这样一种情形,我们需要按照元素插入的顺序来访问元素,此时,LinkedHashMap就派上用场了,它保存着元素插入的顺序,并且可以按照我们插入的顺序进行访问。二、LinkedHashMap用法import java.util.Map;import java.util.LinkedHashMap;public class Test { public static void main(String[

2021-01-21 09:14:16 359

原创 (四)HashMap剖析

一、前言在分析jdk1.8后的HashMap源码时,发现网上好多分析都是基于之前的jdk,而Java8的HashMap对之前做了较大的优化,其中最重要的一个优化就是桶中的元素不再唯一按照链表组合,也可以使用红黑树进行存储,总之,目标只有一个,那就是在安全和功能性完备的情况下让其速度更快,提升性能。好~下面就开始分析源码。二、HashMap数据结构  说明:上图很形象的展示了HashMap的数据结构(数组+链表+红黑树),桶中的结构可能是链表,也可能是红黑树,红黑树的引入是为了提高效率。所以可见,在分

2021-01-21 09:14:06 68 1

原创 (三)HashSet && LinkedHashSet

HashSet数据结构老规矩,先上数据结构,因为HashSet底层是基于HashMap 或者 LinkedHashMap实现的,所以HashSet数据结构就是HashMap或者LinkedHashMap的数据结构,因为前面已经分析过了,所以不再累赘。直接看这里,源码分析HashSet1. 类的继承关系public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneabl

2021-01-21 09:13:57 103

原创 (二)LinkedList实现原理要点概括

LinkedList数据结构还是老规矩,先抓住LinkedList的核心部分:数据结构,其数据结构如下说明:如上图所示,LinkedList底层使用的双向链表结构,有一个头结点和一个尾结点,双向链表意味着我们可以从头开始正向遍历,或者是从尾开始逆向遍历,并且可以针对头部和尾部进行相应的操作。LinkedList源码分析类的继承关系public class LinkedList<E> extends AbstractSequentialList<E> imp

2021-01-21 09:13:48 111

原创 (一)ArrayList实现原理要点概括

一、ArrayList数据结构分析一个类的时候,数据结构往往是它的灵魂所在,理解底层的数据结构其实就理解了该类的实现思路,具体的实现细节再具体分析。ArrayList的数据结构如下: 说明:底层的数据结构就是数组,数组元素类型为Object类型,即可以存放所有类型数据。我们对ArrayList类的实例的所有的操作底层都是基于数组的。下面我们来分析通过数组是如何保证库函数的正确实现的。二 源码分析类的继承关系public class ArrayList<E> extends Abst

2021-01-21 09:13:36 96

原创 (三)数仓之线上教育平台

用户做题模块需求1. QzWebsite.log 做题网站日志数据{ "createtime": "2019-07-22 11:47:18", //创建时间 "creator": "admin", //创建者 "dn": "webA", //网站分区 "domain": "-", "dt": "20190722", //日期分区 "multicastgateway": "-", "multicastport": "-", "multicastserver": "-", "s

2021-01-20 08:59:13 284

原创 (二)数仓之线上教育平台

模拟数据采集上传数据进行ETL数据的清洗需求1:必须使用Spark进行数据清洗,对用户名、手机号、密码进行脱敏处理,并使用Spark将数据导入到dwd层hive表中清洗规则: 用户名:王XX 手机号:137*****789 密码直接替换成******基于dwd层表合成dws层的宽表需求2:对dwd层的6张表进行合并,生成一张宽表,先使用Spark Sql实现。需要使用spark core实现功能,并对join进行优化。拉链表需求3:针对dws层宽表的支付金额(paymoney)和

2021-01-20 08:59:01 182

原创 (一)数仓之线上教育平台

数据仓库概念数据仓库是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。数据仓库是出于分析报告和决策支持目的而创建的,为需要业务智能的企业,提供指导业务流程改进、监控时间、成本、质量以及控制。项目需求及架构设计项目需求分析一、数据采集平台搭建二、实现数据仓库分层的搭建三、实现数据清洗、聚合、计算等操作四、统计各指标,如统计通过各地址跳转注册的用户人数、统计各平台的用户人数、统计支付金额topN的用户项目框架1. 技术选型一、数据存储:Hdfs二、数据处理:Hive、Spa

2021-01-20 08:58:52 475

原创 (一)数仓建模

数据仓库分层架构​一.分层实现数据仓库一般分为三层,自上而下分别为数据引入层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。1.ODS层 存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区2.CDM层 数据公共层CDM(Common Data Model,又称通用数据模型层),包括DIM维度表、DWD和DWS,由ODS

2021-01-20 08:58:36 959

原创 HBase之LSM理解

讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来:哈希存储引擎 是哈希表的持久化实现,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就是your Mr.RightB树存储引擎是B树(关于B树的由来,数据结构以及应用场景可以看之前一篇博文)的持久化实现,不仅支持单条记录的增、删、读、改操作,还支持顺序扫描(B+

2021-01-20 08:57:52 717

原创 java基础-集合底层原理——总体架构

java集合框架主要包括两种类型的集合:一 Collection每个位置只能存储一个元素的,它又包括三个子类型:List,Set,QueueList:可以存储重复的数据、有序的,常用的类包括ArrayList和LinkedListArrayList是基于数组存储数据,其原理是当调用一个add方法,先计算容器的大小 重新new一个新的数组大小 并将当前的数组所有元素复制到这个新的数组中 然后将最新的值放入数组的最后一个LinkedList是基于双向链表结构存储数据 其原理是链表又一个节点node构成

2021-01-20 08:57:34 203

原创 JAVA同步、异步、阻塞和非阻塞之间的区别

同步和异步,阻塞和非阻塞是大家经常会听到的概念,但是它们是从不同维度来描述一件事情,常常很容易混为一谈。前言线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线

2021-01-20 08:57:07 1202 1

原创 BIO到NIO

同步阻塞IO单线程BIO最原始的网络编程思路就是服务器用一个while循环,不断监听端口是否有新的套接字连接,如果有,那么就调用一个处理函数处理。while(true){ socket = accept(); handle(socket) } 这种方法的最大问题是无法并发,效率太低。如果当前的请求没有处理完,那么后面的请求只能被阻塞,服务器的吞吐量太低。多线程BIO针对上面的问题,很自然想到了使用多线程处理IO,也就是很经典的connection per thread,每一个连接

2021-01-20 08:56:55 61

原创 数据结构——跳表

什么是跳表跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见右边的示意图)。一开始时,算法在最稀疏的层次进行搜索,直至需要查找的元素在该层两个相邻的元素中间。这时,算法将跳转到下一个层次,重复刚才的搜索,直到找到需要查找的元素为止。一张跳跃列表的示意图。每个带有箭头的框表示一个指针, 而每行是一个稀疏子序列的链表;底部的编号框(黄色)表示有序的

2021-01-20 08:55:59 271

原创 数据结构-红黑树

红黑树红黑树也是二叉查找树,我们知道,二叉查找树这一数据结构并不难,而红黑树之所以难是难在它是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自处理达到平衡状态。现在在脑海想下怎么实现?是不是太多情景需要考虑了?啧啧,先别急,通过本文的学习后,你会觉得,其实也不过如此而已。好吧,我们先来看下红黑树的定义和一些基本性质。红黑树定义和性质红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:性质1:每个节点要么是黑色,要么是红色。性质2:根节点是黑色。性质3

2021-01-20 08:55:50 243

原创 (四)sparkstreaming调优

一 数据接收并行度调优通过网络接收数据时(比如Kafka、Flume),会将数据反序列化,并存储在Spark的内存中。如果数据接收称为系统的瓶颈,那么可以考虑并行化数据接收。每一个输入DStream都会在某个Worker的Executor上启动一个Receiver,该Receiver接收一个数据流。因此可以通过创建多个输入DStream,并且配置它们接收数据源不同的分区数据,达到接收多个数据流的效果。比如说,一个接收两个Kafka Topic的输入DStream,可以被拆分为两个输入DStream,每个分

2021-01-19 14:19:19 302 1

原创 (三)checkpoint机制

每一个Spark Streaming应用,正常来说,都是要7 * 24小时运转的,这就是实时计算程序的特点。因为要持续不断的对数据进行计算。因此,对实时计算应用的要求,应该是必须要能够对与应用程序逻辑无关的失败,进行容错。如果要实现这个目标,Spark Streaming程序就必须将足够的信息checkpoint到容错的存储系统上,从而让它能够从失败中进行恢复。有两种数据需要被进行checkpoint:1、元数据checkpoint——将定义了流式计算逻辑的信息,保存到容错的存储系统上,比如HDFS。当

2021-01-19 14:19:08 829

原创 (二)重要的算子

updateStateByKey可以让我们为每个key维护一份state,并持续不断的更新该state。首先,要定义一个state,可以是任意的数据类型;其次,要定义state更新函数——指定一个函数如何使用之前的state和新值来更新state。对于每个batch,Spark都会为每个之前已经存在的key去应用一次state更新函数,无论这个key在batch中是否有新的数据。如果state更新函数返回none,那么key对应的state就会被删除。当然,对于每个新出现的key,也会执行st

2021-01-19 14:18:58 78

原创 (五十五)项目总结

1、大数据集群环境的搭建CentOS 6.4、hadoop-2.5.0-cdh5.3.6、hive-0.13.1-cdh5.3.6、zookeeper-3.4.5-cdh5.3.6、kafka_2.9.2-0.8.1、flume-ng-1.5.0-cdh5.3.6以及日志采集流程、Spark 1.5.12、企业级大数据项目的架构搭建Java、配置管理组件、JDBC辅助组件(内置数据库连接池)、Domain与DAO模型scala:只适合用于编写一些比较纯粹的一些数据处理程序(比如说一些复杂的数据etl

2021-01-19 14:18:21 77

原创 (五十四)sparkstreaming的调优

1、并行化数据接收:处理多个topic的数据时比较有效int numStreams = 5;List<JavaPairDStream<String, String>> kafkaStreams = new ArrayList<JavaPairDStream<String, String>>(numStreams);for (int i = 0; i < numStreams; i++) {kafkaStreams.add(KafkaUtils.c

2021-01-19 14:18:12 208

原创 (五十三)sparkstreaming的高可用性

HA高可用性:High Availability,如果有些数据丢失,或者节点挂掉;那么不能让你的实时计算程序挂了;必须做一些数据上的冗余副本,保证你的实时计算程序可以7 * 24小时的运转。通过一整套方案(3个步骤),开启和实现实时计算程序的HA高可用性,保证一些关键数据都有其冗余副本,不至于因为节点挂掉或者其他原因导致数据丢失。1、updateStateByKey、window等有状态的操作,自动进行checkpoint,必须设置checkpoint目录checkpoint目录:容错的文件系统的目

2021-01-19 14:18:04 109

原创 (五十二)广告点击流量实时统计:需求分析、技术方案设计以及数据设计

广告点击流量实时统计模块电商用户行为分析大数据平台里面来:1、用户访问session分析模块:会话(session),用户的基础访问行为2、页面单跳转化率模块:页面(page),用户的页面访问和页面跳转行为3、各区域热门商品统计模块:商品(product),用户的商品点击行为4、广告点击流量实时统计模块:广告(ad,advertisement),用户的广告点击行为电商网站 / app(移动互联网),用户行为的方方面面这个项目基本上,内容还是非常丰富的;无论是技术含量,还是业务含量;技术上来说,

2021-01-19 14:17:50 923

原创 (五十一)各区域热门商品统计:Spark SQL数据倾斜解决方案

1、聚合源数据2、过滤导致倾斜的key3、提高shuffle并行度:spark.sql.shuffle.partitions4、groupby变为双重group by5、reduce join转换为map join:spark.sql.autoBroadcastJoinThreshold6、采样倾斜key并单独进行join7、随机key与扩容表由于Spark的这种都是基于RDD的特性;哪怕是Spark SQL,原本你是用纯的SQL来实现的;各位想一想,其实你用纯RDD,也能够实现一模一样的功能

2021-01-19 14:17:39 85

原创 (五十)统计各个区域下的最热门的商品

需求:根据用户指定的日期范围,统计各个区域下的最热门的top3商品1、区域信息在哪里,各个城市的信息,城市是不怎么变化的,没有必要存储在hive里?MySQL,Hive和MySQL异构数据源使用,技术点2、hive用户行为数据,和mysql城市信息,join,关联之后是RDD?RDD转换DataFrame,注册临时表,技术点3、各个区域下各个商品的点击量,保留每个区域的城市列表数据?自定义UDAF函数,group_concat_distinct()4、product_id,join hive表中的.

2021-01-19 14:17:25 255

原创 (三)Medium

1 Active Businesses.sql-- Table: Events-- +---------------+---------+-- | Column Name | Type |-- +---------------+---------+-- | business_id | int |-- | event_type | varchar |-- | occurences | int | -- +---------------+-------

2021-01-19 14:16:51 2102

大数据技术之高频面试题8.0.2

大数据技术之高频面试题8.0.2

2020-12-26

单元测试之道(C#版中文版)

适合单元测试的人员阅读,中文版的阅读起来没有障碍。

2018-01-11

JS和JQ的单元测试例子、工具

测试人员可以进行单元测试的工具——Qunit,里面附带例子

2018-01-11

图片轮播 广告轮播 海报轮播(JS实现)

原生态图片轮播,能更好理解JQ的轮播函数是怎么实现的,如果要应用直接修改参数和图片路径就能用

2018-01-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除