自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

相由心生-心随相改~

点滴成长印记

  • 博客(197)
  • 资源 (6)
  • 收藏
  • 关注

原创 如何实现搜索引擎中的拼写纠错功能——思路

如何实现搜索引擎中的拼写纠错功能——思路

2022-06-26 23:14:45 751 1

原创 分治思想在海量数据处理中的应用

分治算法思想的应用是非常广泛的,并不仅限于指导编程和算法设计。它还经常用在海量数据处理的场景中。

2022-06-19 22:50:33 270

原创 好友关系存储-思路

用邻接表来存储这种有向图是不够的。因为我们去查找某个用户关注了哪些用户非常容易,但是如果要想知道某个用户都被哪些用户关注了,也就是用户的粉丝列表,就非常困难了

2022-06-12 23:53:07 427

原创 通过快排O(n)内查找第K大元素思路

O(n) 时间复杂度内求无序数组中的第 K 大元素。比如,4, 2, 5, 12, 3 这样一组数据,第 3 大元素就是 4。我们选择数组区间 A[0...n-1]的最后一个元素 A[n-1]作为 pivot,对数组 A[0...n-1]原地分区,这样数组就分成了三部分,A[0...p-1]、A[p]、A[p+1...n-1]。如果 p+1=K,那 A[p]就是要求解的元素;如果 K>p+1, 说明第 K 大元素出现在 A[p+1...n-1]区间,我们再按照上面的思路递归地在 A[p+1..

2022-05-29 22:34:43 501

原创 队列在线程池中的应用

线程池没有空闲线程时,新的任务请求线程资源时,线程池该如何处理?各种处理策略又是如何实现的呢?一般有两种处理策略。第一种是非阻塞的处理方式,直接拒绝任务请求;另一种是阻塞的处理方式,将请求排队,等到有空闲线程时,取出排队的请求继续处理。那如何存储排队的请求呢?我们希望公平地处理每个排队的请求,先进者先服务,所以队列这种数据结构很适合来存储排队请求。队列有基于链表和基于数组这两种实现方式。这两种实现方式对于排队请求又有什么区别呢?...

2022-05-22 20:40:35 259

原创 基于栈实现浏览器的前进后退功能-思路

使用两个栈,X 和 Y我们把首次浏览的页面依次压入栈 X,当点击后退按钮时,再依次从栈 X 中出栈,并将出栈的数据依次放入栈 Y。当我们点击前进按钮时,我们依次从栈 Y 中取出数据,放入栈 X 中。当栈 X 中没有数据时,那就说明没有页面可以继续后退浏览了。当栈 Y 中没有数据,那就说明没有页面可以点击前进按钮浏览了。比如你顺序查看了 a,b,c 三个页面,我们就依次把 a,b,c 压入栈,这个时候,两个栈的数据就是这个样子:当你通过浏览器的后退按钮,从页面 c 后退到页面 a 之.

2022-05-15 22:43:54 258

原创 基于链表实现LRU缓存淘汰算法-思路

如何基于链表实现 LRU 缓存淘汰算法?我的思路是这样的:我们维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们从链表头开始顺序遍历链表。1. 如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部。2. 如果此数据没有在缓存链表中,又可以分为两种情况:如果此时缓存未满,则将此结点直接插入到链表的头部;如果此时缓存已满,则链表尾结点删除,将新的数据结点插入链表的头部。这样我们就用链表实现了一

2022-05-01 22:40:24 833 1

原创 数组为何从0开始编号?

为什么数组要从 0 开始编号,而不是从 1 开始呢? 从 1 开始不是更符合人类的思维习惯吗?原因:首先数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。并且计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据。当计算机需要随机访问数组中的某个元素时,它会首先通过下面的寻址公式,计算出该元素存储的内存地址:a[i]_address = base_address + i * data_typ...

2022-04-24 22:48:35 1064

原创 复杂度分析

一、什么是复杂度分析?1.数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。2.因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能。3.分别用时间复杂度和空间复杂度两个概念来描述性能问题,二者统称为复杂度。4.复杂度描述的是算法执行时间(或占用空间)与数据规模的增长关系。二、为什么要进行复杂度分析?1.和性能测试相比,复杂度分析有不依赖执行环境、成本低、效率高、易操作、指导性强的特点。2.掌握复杂度分析,将能编写出性能更优的代码,有利于降低系统开发和维护

2022-04-17 23:49:13 1073

原创 2022-计划

一、项目总结:梳理公司业务,总结架构图二、7周学完:《数据结构与算法之美》每周至少学习12章,至少总结一篇博客若能坚持做好这些内容,则继续安排下阶段任务数据结构与算法宏观内容:三、零碎时间:巩固基础:目标:12月份,拿到一个offer,用于验证学习总结效果...

2022-04-10 21:51:17 269 1

原创 hive—两例倾斜case优化

6-1:count(Distinct)所产生的倾斜优化前:588.23 seconds 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2022-03-27 23:55:08 1391

原创 hive-分析、窗口函数的使用

5-1:sum,avg,min,max窗口内聚合分析over (partition by col1 order by col2 rows between unbounded[n] preceding and current row[n following])PRECEDING:往前FOLLOWING:往后CURRENT ROW:当前行UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点,UNBOUNDED FOLLOWING:表示到后面的终点select

2022-03-20 22:03:43 2480

原创 hive-数据倾斜

关于数据倾斜在弄清什么是数据倾斜之前,我想让大家看看数据分布的概念:原理:简单的讲,数据倾斜就是我们在计算数据的时候,数据的分散度不够,导致大量的数据集中到了一台或者几台机器上计算,这些数据的计算速度远远低于平均计算速度,导致整个计算过程过慢。表现:任务进度长时间维持在 99%或者 100%的附近,查看任务监控页面,发现只有少量 reduce 子任务未完成数据倾斜的场景:4-1:大小表关联(小表为25M)解决方案:使用map join解决小表关联大表造成的数据倾斜问题。这个方

2022-03-13 23:14:13 1754

原创 hive的相关优化

1、列裁剪、分区裁剪在查询的过程中减少不必要的分区和列,例如:select * from shuidi_dwb.dwb_cf_case_info_full_d应改为:select case_id,ckr_id from shuidi_dwb.dwb_cf_case_info_full_d where dt='2019-08-28';2、尽早尽量过滤数据,减少每个阶段的数据量在多次关联的时候,尽量在每个自查询中(关联前)加上筛选(where)条件以减少下阶段job的数据量。优化前:

2022-02-27 22:40:19 1441

原创 hive-主要操作原理

运行过程(CSDN)了解后,再看一下主要操作的实现原理:join实现原理select u.name, o.orderid from order o join user u on o.uid = u.uid;在map的输出value中为不同表的数据打上tag标记,在reduce阶段根据tag判断数据来源。MapReduce的过程如下Group By的实现原理select rank, isonline, count(*) from city group by rank, isonline;将

2022-02-20 18:25:38 850

原创 hive的运行过程解析

数据的底层存储是文件hive的计算框架是mapreduce,所以我们先了解下mapreduce的原理图上是整个mapreduce的运行过程,在各自的分片中,都是把数据分割以后每个值都对应一个1得到<key,1>,再经过本地reduce(combine过程)把key一样的value=1相加,得到新的<key,values>,再经过shuffle过程,把所有分片中的<key,values>,key一致的values相加,又得到最终的...

2022-02-13 23:10:49 1677 1

原创 数据分析-最常用4种分析方法

一、漏斗分析法漏斗分析法能够科学反映用户行为状态,以及从起点到终点各阶段用户转化率情况,是一种重要的分析模型。漏斗分析模型已经广泛应用于网站和APP的用户行为分析中,例如流量监控、CRM系统、SEO优化、产品营销和销售等日常数据运营与数据分析工作中。比如,对一些电商产品来说,最终目的是让用户下单并支付,但转化率取决于整个流程。这时,我们就可以通过漏斗模型一步一步地进行监测。二、留存分析法留存率反应的实际是一种转化率,即由初期的不稳定的用户转化为活跃用户、稳定用户、忠诚用户的过程。随着统计数字的变

2022-01-30 23:50:02 1301

转载 高并发-解决方案

一、什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。吞吐量:单位时间内处理的请求数量。QPS:每

2022-01-23 23:49:59 3424

原创 数据分析流程

一、分析目的二、数据采集三、数据清洗四、了解数据五、数据分析结合业务动作六、数据可视化7、总结+TODO

2022-01-16 21:56:37 1535 1

原创 批判性思维-3

批判性思维-3

2021-12-26 23:21:39 166

原创 批判性思维-1

批判性思维-1

2021-12-19 23:06:48 63

原创 批判性思维-2

Elasticsearch 能做什么?Elasticsear...极客时间版权所有: https://time.geekbang.org/course/detail/100030501-102655

2021-12-19 23:04:59 180

转载 《序列化》

序列化是指把一个Java对象变成二进制内容,本质上就是一个byte[]数组。为什么要把Java对象序列化呢?因为序列化后可以把byte[]保存到文件中,或者把byte[]通过网络传输到远程,这样,就相当于把Java对象存储到文件或者通过网络传输出去了。有序列化,就有反序列化,即把一个二进制内容(也就是byte[]数组)变回Java对象。有了反序列化,保存到文件中的byte[]数组又可以“变回”Java对象,或者从网络上读取byte[]并把它“变回”Java对象。我们来看看如何把一个Java对象序

2021-11-21 22:23:01 268

转载 Tomcat

Tomcat就是这么简单什么是TomcatTomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。为什么我们需要用到Tomcat如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访问你写的页面,Tomcat就是提供能够让别人访问自己写的页面的一个程序配置Tomcat运行Tomcat需要JDK的支持【Tomcat会通过JAVA_HOME找到所需要的JDK】。新建JAVA_H

2021-11-14 22:47:11 109

转载 分布式本质论:高吞吐、高可用、可扩展

承载量是分布式系统存在的原因 当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙。当每天有1000万个用户访问你的网站时,无论你使用什么样的服务器硬件,都不可能只用一台机器就承载的了。因此,在互联网程序员解决服务器端问题的时候,必须要考虑如何使用多台服务器,为同一种互联网应用提供服务,这就是所谓“分布式系统”的来源。然而,大量用户访问同一个互联网业务,所造成的问题并不简单。从表面上看,要能满足很多用户来自互联网的请求,最基本的需求就是所谓性能需求:用户反应网页打开很慢,..

2021-11-07 23:33:18 1457

原创 Spring-Bean 生命周期

1.Spring对Bean进行实例化(相当于程序中的new Xx())2.Spring将值和Bean的引用注入进Bean对应的属性中3.如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法(实现BeanNameAware主要是为了通过Bean的引用来获得Bean的ID,一般业务中是很少有用到Bean的ID的)4.如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanDactory(BeanFact..

2021-10-31 21:23:51 60

原创 @Autowired和@Resouce的区别

@Autowired功能虽说非常强大,但是也有些不足之处。比如它跟spring强耦合了,如果换成了JFinal等其他框架,功能就会失效。而@Resource是JSR-250提供的,它是Java标准,绝大部分框架都支持。除此之外,有些场景使用@Autowired无法满足的要求,改成@Resource却能解决问题。重点看看@Autowired和@Resource的区别。@Autowired默认按byType自动装配,而@Resource默认byName自动装配。 @Autowired只包含一个参数:

2021-10-17 23:20:03 1836 4

原创 Spring——重新学

Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring的特点是:1、轻量 从大小与开销两方面而言Spring都是轻量的,完整的Spring框架可以在一个大小只有1M多的Jar文件里发布,并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的,如Spring应用中的对象不依赖于Spring的特定类。2、控制反转 ...

2021-10-10 22:49:09 111

原创 服务雪崩的思考

引起雪崩的原因和服务雪崩的三个阶段原因大致有四:1、硬件故障;2、程序Bug;3、缓存击穿(用户大量访问缓存中没有的键值,导致大量请求查询数据库,使数据库压力过大);4、用户大量请求;服务雪崩的第一阶段: 服务不可用;第二阶段:调用端重试增大流量(用户重试/代码逻辑重试);第三阶段:服务调用者不可用(同步等待造成的资源耗尽);3、解决方案1) 应用扩容(扩大服务器承受力) a、加机器 b、升级硬件2)流量控制(超出限定流量,返回类似重试页面让用户稍...

2021-09-26 23:56:28 96

原创 【数据结构7】数组类算法摘抄笔记

数组作为算法面试中出现的高频数据结构。有很多经典的考点知识,比如排序问题,二分搜索等等。本篇文章主要介绍 LeetCode 中典型的数组类问题,主要介绍这类问题的一些常用解法:做好初始定义、基础算法思想应用、对撞指针、滑动窗口法等。做好初始定义做数组类算法问题的时候,我们常常需要定义一个变量,明确该变量的定义,并且在书写整个逻辑的时候,要不停的维护住这个变量的意义。也特别需要注意初始值和边界的问题。283. 移动零/** * @param {number[]} nums * @retu

2021-09-12 22:53:03 86

原创 【数据结构6】队列

1、基本常识1.1 什么是队列只允许在一端进行插入操作,而在另一端进行删除操作的线性表。1.2 队列的特点队列是一种先进先出的线性表,简称FIFO。2、队列的实现——数组用数组来实现的话问题就在于一个数组新创建出来长度就已经固定,所以在增删操作时就要不断新建新的数组,把原来复制过去,再进行增删。开始先定义新建一个数组public class arrayQ { private Object[] sa=new Object[0];}...

2021-09-05 22:19:42 172 1

原创 【数据结构-5】栈

1、基本常识1.1 什么是栈比如弹夹式手枪,向弹夹装子弹,最先装入的,会压到最底端。当子弹被射出时,最后放入的子弹会最先被射出。这种先进后出,后进先出的结构称为“栈”。1.2 栈的特点“先进后出,后进先出”。1.3 栈的操作栈的操作就两种,分别为出栈和入栈。那我们上边的例子,我们弹夹装子弹的过程称为入栈;我们发射子弹的过程称为出栈。2、栈的实现栈也是线性表的特例,所以也都能由数组和链表来实现栈的实现主要有两种,一种是数组的实现,叫做顺序栈,另外...

2021-08-29 22:07:13 174

原创 【数据结构-4】线性表-2

2021-08-22 22:50:49 66

原创 【数据结构-3】线性表

2021-08-08 23:47:22 51 1

原创 【数据结构-2】数据结构与算法

学习数据结构,通常都会结合到算法,因为只有通过算法,才能更深切的理解好数据结构。数据结构和算法的关系是相互依赖不可分割的。 本篇先概述下算法基本知识:...

2021-08-01 23:29:07 85 3

原创 【数据结构-1】确定方向:数据结构&算法

之前总是今天学点这,明天看点那,自己的知识总是零零散散的,不成体系,自己也没目标,比如学习一个内容,最终要达到什么效果才算掌握?今天和唐聊了聊,其实聊了好多次了。今天终于下定决心,有了定论:先学数据结构和算法。因为这是计算机技术的底层核心。有了底层逻辑,后续都是添砖加瓦了。 经过筛选,决定以《大话数据结构》为主要资料。开启踏踏实实的学习之路。 先梳理了一下本书的内容:包含数据结构和基础算法。 结合内...

2021-07-18 22:31:29 169 1

原创 Elasticsearch——概述

Elasticsearch是一款非常强大的开源搜索及分析引擎,可以帮助你从海量数据中,快速找到相关的信息。例如,当你在GitHub上搜索时,Elasticsearch不仅可以帮你找到相关的代码仓库,还可以帮助你实现代码级的搜索与高亮显示;当你在网上购物时,ElasticSearch可以帮助你推荐相关的商品;当你下班打车回家时,Elasticsearch可以通过定位附近的乘客和司机,帮助平台优化调度。 除了搜索,结合Kibana、Logstash、Beats,Elastic ...

2021-07-11 23:26:23 170 2

原创 RocketMQ-5个常见问题

一、如何保证顺序消费 解决方案:同一语义的消息放入同一个队列。 实现方式:重写MessageQueueSelector中send方法。将消息放入同一个队列,来保证顺序消费。 如何放入同一队列:例如,同一订单的N个消息需要保证顺序,则可以根据订单号,Hash取模确定发送到同一个队列。二、如何避免重复消费 保证消费幂等,即消费多次对各方无影响三、如何实现分布式事务 方案一:两阶段提交和事务状态回查...

2021-07-04 20:46:56 526 2

原创 认识RocketMQ

一、介绍RocketMQ一个纯java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。实际应用中,解决什么问题:二、架构三、特性1、高性能2、高可靠3、高实时4、分布式...

2021-06-25 08:16:35 158

翻译 Elasticsearch6.5中文文档-引入查询语言

Elasticsearch提供了一种JSON样式的可用于执行查询的特定领域语言。被称为DSL查询。这种查询语言非常全面,乍一看可能令人生畏,但实际学习查询的最佳方法是从一些基础示例开始。回到上一个示例,我们执行了以下查询:GET /bank/_search{ "query": { "match_all": {} }}剖析以上内容,该query部分告诉我们查询定义是什么,而该match_all部分只是我们要运行的查询的类型。该match_all查询只是搜索指定索引中的..

2020-12-07 20:38:18 159

Angular路由PPT

分享PPT,内容和博客类似。包括基本概念和一些例子的图片。

2018-03-02

使用 JFreeChart来创建基于web的图表

使用 JFreeChart来创建基于web的图表

2016-11-04

JSTL-Jar包

JSTL 所需jar包 :jstl.jar、standard.jar

2016-10-31

jstl-1_1-mr2-spec PDF

《jstl-1_1-mr2-spec.pdf》是关于JSTL标签库的使用说明书,由SUN发表。希望能帮到您~~

2016-10-28

jstl-1_1-mr2-spec.pdf

《jstl-1_1-mr2-spec.pdf》是关于JSTL标签库的使用说明书,由SUN发表。希望能帮到您~~

2016-10-28

第6章对错误的处理.ppt

实际上可能出现的程序错误的数量是很大的,但是它们基本上可以分为两种类型: 编译错误, 运行期错误。 在已经编译的程序中,未经处理的错误是致命的,它会导致整个应用程序运行瘫痪。 通过创建错误处理程序,那么当出现运行期错误时,就能防止程序运行被中止。 怎么处理,看这里...

2015-06-17

空空如也

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

TA关注的人

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