- 博客(194)
- 资源 (18)
- 收藏
- 关注
原创 缓存击穿和穿透以及雪崩详解
#缓存处理流程 在互联网中,鉴于详情页面是被用户高频访问的,所以性能必须进行尽可能的优化。一般一个系统最大的性能瓶颈,就是数据库的io操作。从数据库入手也是调优性价比最高的切入点。一般分为两个层面,一是提高数据库sql本身的性能,二是尽量避免直接查询数据库。提高数据库本身的性能首先是优化sql,包括:使用索引,减少不必要的大表关联次数,控制查询字段的行数和列数。另外当数据量巨大是可以考虑分库分表,以减轻单点压力。 今天重点要讲的是另外一个层面:尽量避免直接查询数据库。 解决办法
2020-12-01 16:27:17
2290
原创 hadoop之shuffle阶段相关面试题解析
--思考1:map()方法写出的数据存储到哪里? --内存中1、在内存中存有一个环形缓冲区,该缓冲区默认大小是100M,map()方法中写出的kv数据会进入到环形缓冲区内,但是map()写出的kv数据是很大的,环形缓冲区不可能存的下,考虑到这一情况,设计者设置环形缓冲区的运行机制设置为:当写入环形缓冲区的数据达到整个缓冲区的80%时,发生溢写操作(落盘),将缓冲区内80%的kv数据溢写到磁盘,保证后续的数据可以陆续写...
2020-11-20 14:53:16
849
3
原创 ES6-Generator函数
Generator函数执行Generator函数会返回一个遍历器函数。返回的遍历器函数,可以依次遍历Generator函数内部的每一个状态。形式上,Generator函数是一个普通函数,有两个特征。一:function关键字与函数名之间有一个*;二:函数体内部使用yield语句,定义不同的内部状态。 /** * 该test函数内部有三个状态,hello,world,return(结束执行) * 调用该函数后,该函数并不执行,返回的也不是函数的运行结果,而是一个指向内部状..
2020-11-10 15:31:50
461
原创 ES6-Symbol数据类型
Symbol简介Symbol表示独一无二的值,它是JavaScript语言的第七种数据类型。Symbol值通过Symbol函数生成。对象的属性名现在可以有两种类型,一种是字符串,一种就是新增的Symbol类型(类似于字符串的数据类型,符号类型值),这样可以保证不会与其他属性名产生冲突。Symbol函数可以接收一个字符串作为参数,表示对Symbol实例的描述,这样在控制台打印的时候,比较容易区分。如果Symbol的参数是一个对象,就会调用对象的toString()方法,将其转为..
2020-11-10 15:30:45
224
原创 WebSocket使用
WebSocket特点:服务器可以主动想客户端推送信息,客户端也可以主动向服务器发送消息,所有浏览器都支持建立在TCP协议上,服务端的实现比较容易 与HTTP协议有良好的兼容性 数据比较轻量级,性能开销小,通信高效 可以发送文本,可以发送二进制数据 没有同源策略,客户端可以与任意服务器通信 协议标识符为ws,如果加密是wss,服务器网址就是URL客户端APIWebSocket对象作为一个构造函数,用于创建WebSocket实例 var ws = new WebSocket(
2020-11-10 15:28:39
1341
原创 2020-11-10
Vuex从使用到原理解析一、Vuex是什么 Vuex是专门为Vuejs应用程序设计的状态管理工具。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。1、Vuex的构成由上图,我们可以看出Vuex有以下几个部分构成:1)statestate是存储的单一状态,是存储的基本数据。2)Gettersgetters是store的计算属性,对state的加工,是派生出来的数据。就像computed计算属性一样,getter返回的值会根据它的
2020-11-10 15:09:55
720
原创 2020-11-10
CSS中的BFC详解一、何为BFC BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。二、形成BFC的条件 1、浮动元素,float除none以外的值; 2、定位元素,position(absolute,fixed); 3、display为以下其中之一的值inline-block,table-cell,table-capt...
2020-11-10 15:04:15
152
原创 2020-11-10
css盒模型html文档中的每个元素都被描绘成矩形盒子,这些矩形盒子通过一个模型来描述其占用空间,这个模型称为盒模型。盒模型通过四个边界来描述:margin(外边距),border(边框),padding(内边距),content(内容区域),如图所示:CSS盒模型几点提示1.padding,border,margin都是可选的,默认值为0,但是浏览器会自行设置元素的margin和padding,通过在css样式表中设置 1 2 3 4 .
2020-11-10 14:55:14
330
原创 自定义上传图片(自定义上传input样式)
## 1.Html文件<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> img { width
2020-11-10 13:01:07
449
原创 手写基础版Vue响应式原理
1. 定义测试对象我们新建了一个obj对象,然后`new Observe`<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head&
2020-11-10 12:57:02
191
原创 dva入门
一、dva 介绍dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。dva = React-Router + Redux + Redux-saga二、dva 概念数据流向: 数据的改变发生通常是通过用户交互行为或者浏览器行为(如路由跳转等)触发的,当此类行为会改变数据的时候可以通过 dispatch 发起一个action,如果是同步行为会直接通过 Re
2020-11-10 12:56:02
985
原创 SpringBoot2.0版本与老版本区别
SpringBoot2.0版本新特性以Java 8 为基准Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持。内嵌容器包结构调整为了支持reactive使用场景,内嵌的容器包结构被重构了的幅度有点大。EmbeddedServletContainer被重命名为WebServer,并且org.springframework.boot.context.embedded 包被重定向到了org.springframework.boot.web.embe.
2020-11-09 14:47:45
2413
1
原创 SpringBoot 参数及性能优化
SpringBoot性能优化组件自动扫描带来的问题默认情况下,我们会使用 @SpringBootApplication 注解来自动获取应用的配置信息,但这样也会给应用带来一些副作用。使用这个注解后,会触发自动配置( auto-configuration )和 组件扫描 ( component scanning ),这跟使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个注解的作用是一样的。这样做给开发带来方便的同时,也会有.
2020-11-09 14:44:27
621
原创 SpringBoot整合springFox
SpringBoot整合springFox1springFox介绍springFox算是swagger优化。它可以跟据业务代码自动生成相关的api接口文档,尤其用于restful风格中的项目,开发人员几乎可以不用专门去维护rest api,这个框架可以自动为你的业务代码生成restfut风格的api,而且还提供相应的测试界面,自动显示json格式的响应。大大方便了后台开发人员与前端的沟通与联调成本。springfox本身只是利用自身的aop的特点,通过plug的方式把swagger集成了进来..
2020-11-09 14:38:09
2197
原创 jsDOM操作之获取元素
1根据id名获取document.getElementById(idName)2 根据标签名获取document.getElementsByTagName(tagName) // 返回一个集合 (类数组对象) 从整个文档获取element.getElementsByTagName(tagName) // 从element的后代元素中获取3 根据类名获取document.getElementsByClassName(className) // 返回一个集合(类.
2020-11-04 15:20:53
889
原创 js之DOM简介
1 什么是 DOM1)DOM 英文全称“Document Object Model”,译为“文档对象模型”。2)DOM 是一个与平台和编程语言无关的接口,通过这个接口程序和脚本可以动态的访问和修改文档的内容、结构和样式。2 DOM 的组成1)核心DOM- 针对任何结构化文档的标准模型。2)XML DOM- 针对 XML 文档的标准模型。3)HTML DOM- 针对 HTML 文档的标准模型。3 DOM 分级(DOM的发展版本)DOM0本没有DOM0,习惯上把未形成标...
2020-11-04 15:19:28
4999
原创 js之BOM
1 BOM 的概念1.1 什么是 BOMBOM 全称 Browser Object Model,译为浏览器对象模型。BOM 是浏览器为 JavaScript 提供的能够对浏览器进行相关操作的 API。1.2 BOM 的作用1)弹出新浏览器窗口的能力。2)移动、关闭和更改浏览器窗口大小的能力。3)可提供WEB浏览器详细信息的导航对象。4)可提供浏览器载入页面详细信息的本地对象。5)可提供用户屏幕分辨率详细信息的屏幕对象;6)支持Cookies。1.3 BOM 对象
2020-11-04 15:17:58
455
原创 hive优化
hive优化1 Fetch抓取Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROMemployees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老版本hive默认是minimal,该属性修改为more以后,在全局查找、字段查找、limit查找等都不走m.
2020-11-04 14:39:41
207
原创 hive类型转化
hive类型转化Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。1)隐式类型转换规则如下(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。(2)所有整数类型、FLOAT和STRING类型都可以隐.
2020-11-04 14:31:39
1690
原创 hive架构原理
Hive架构原理1)用户接口:ClientCLI(command-lineinterface)、JDBC/ODBC(jdbc访问hive)、WEBUI(浏览器访问hive)2)元数据:Metastore元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore3)Hadoop使用HDFS进行存储,使用MapReduce进行计算。4)驱动器:.
2020-11-04 14:05:13
246
1
原创 详解责任链模式(Chain of Responsibility)
接下来我们将要谈谈责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的对象,构成一条链。public interface Handler { publi
2020-10-30 15:34:34
343
原创 模板方法模式(Template Method)
一个抽象类中,有一个主方法,再定义1…n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和Minus分别继承AbstractCalculator类,通过对AbstractCalculator的调用实现对子类的调用public abstract class AbstractCalculator {
2020-10-30 15:31:17
95
原创 详解策略模式(strategy)
策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下:图中ICalculator提供同意的方法,AbstractCalculator是辅助类,提供辅助方法,接下来,依次实现下每个类:首先统一接口:public interface ICalculator { public int calculate(St
2020-10-30 15:29:57
437
原创 SpringCloud常用组件(一)
SpringCloudEureka我们使用微服务,微服务的本质还是各种API接口的调用,那么我们怎么产生这些接口、产生了这些接口之后如何进行调用那?如何进行管理哪?答案就是SpringCloudEureka,我们可以将自己定义的API接口注册到SpringCloudEureka上,Eureka负责服务的注册于发现,如果学习过Zookeeper的话,就可以很好的理解,Eureka的角色和Zookeeper的角色差不多,都是服务的注册和发现,构成Eureka体系的包括:服务注册中心、服务提供者、服务消费者
2020-10-30 14:52:08
195
原创 关于spring的生命周期见解
第一种理解1.Bean的建立由BeanFactory读取Bean定义文件,并生成各个实例如果是默认的单例模式,那么在加载spring的配置文件的时候,会将bean实例化,放进Spring的IOC容器中。可以利用无参构造函数追踪实例化时机。2.设置属性(属性注入)注入属性值,对应的属性需要有set方法值加载spring配置文件时,会实例化User对象,在调用无参构造方法实例化对象后,紧接着调用了setUserName方法,为userName属性注入值3.BeanNameAware接口的setB
2020-10-30 14:50:28
134
原创 java数据在内存中存储详解
有这样一种说法,如今争锋于IT战场的两大势力,MS一族偏重于底层实现,Java一族偏重于系统架构。说法根据无从考证,但从两大势力各自的社区力量和图书市场已有佳作不难看出,此说法不虚,但掌握Java的底层实现对Java程序员来说是至关重要的,本文介绍了Java中的数据在内存中的存储。 2 内存中的堆(stack)与栈(heap) Java程序运行时有6个地方可以存储数据,它们分别是寄存器、栈、堆、静态存储、常量存储和非RAM存储,主要是堆与栈的存储。 &nb
2020-10-30 14:46:57
3375
原创 Hadoop中NN的多目录设置
--NN的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性,name1和name2可以挂载到不同磁盘(linux支持),这样就可以保证元数据的可靠性,多目录挂载单个磁盘,没有意义,磁盘坏掉,目录也就坏掉了--生产环境中,要提前就考虑好每个NN目录要挂载的磁盘,保证一个磁盘坏掉,其它仍然可进行读写操作具体操作:1、配置hdfs-site.xml文件<property> <name>dfs.namenode.name.dir</name><..
2020-10-28 13:56:51
368
原创 解释Hadoop中2NN工作机制?
2NN主要操作:大致流程 a.将NN机器对应磁盘上的fsimage 和 Edits文件拉取到2NN的机器中 b.在2NN的机器中将fsimage + Edits都读取到内存中进行合并,然后生成新的fsimage 在合并时,edits会重新生成一个新的,用来记录在合并时的操作 c.再推送到NN机器中的磁盘上,NN中旧的fsimage会保留,新的fsimage对应的是正在使用checkpoint时间设置:(触发条件) a.2NN每隔1小时就发送...
2020-10-28 13:54:46
1055
原创 解释Hadoop中NN的工作机制?
引入:当我们将数据上传到HDFS分布式系统进行存储时,通过NN存储HDFS系统中数据的元数据,DN存储真实数据 那么,NN中的元数据存储在哪里?假设:a.考虑数据安全性和可靠性,NN中元数据存储在节点的磁盘中。 --问题:访问效率很低( 因为修改元数据是在磁盘进行修改的~IO操作) b.考虑数据操作速率,将NN中元数据存储在内存中。 --问题:服务器宕机,停电等故障,导致元数据丢失(元数据丢失,整个集群无法工作)...
2020-10-28 13:50:26
263
原创 前端和后端的超时问题相关解决思路
最近在写前后端项目过程中,针对容易出现的timeout问题,查阅相关资料,自己整理分享一些处理方式如下:针对前端请求,后端因为断点或者电脑反应延迟、网络延迟等现象,明明后端接口能正常返回数据还报连接超时问题,可在前端vue的utils里面的request.js里面设置如下:因为最近写的springcloud微服务项目,在fegin调用过程中,出现的超时问题,可在application.properties文件增加两行配置如下图:代码为:feign.client.config.default.
2020-10-28 10:59:11
16091
原创 JVM优化-基本垃圾回收算法
常用的垃圾回收算法有以下四种:1 标记-清除算法概念:该算法分为标记和清除两个阶段,首先标记出所有需要回收的对象,标记完成后统一回收所有被标记的对象。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。缺点:标记和清除两个过程效率都不高;标记清除之后会产生大量不连续的内存碎片。2 复制算法把内存分为大小相等的两块,每次存储只用其中一块,当这一块用完了,就把存活的对象全部复制到另一块上,同时把使用过的这块内存空间全部清
2020-10-28 10:57:02
102
原创 项目配置Swagger2生成API接口文档
一、Swagger2介绍前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)规范性 (并且保证接口的规范性,如接口的地址,请求方式,参数及响应格式和错误信息)一致性 (接口信息一致,不会出现因开发人员拿到的文档版本不一致,而出现分歧)可测性 (直接在接口文档上进行测试,以方便理解业务)二、配置Swagger21、创建common
2020-10-28 10:56:06
1229
原创 集群之间数据同步脚本
编写集群之间的同步脚本(1)需求:循环复制文件到所有节点的相同目录下:(2)期望脚本:基于rsync技术将文件从一个节点同步到其他所有节点xsync 要同步的文件名称(3)脚本实现在/home/atguigu目录下创建bin目录,并在bin目录下创建xsync文件说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行。因为/home/atguigu/bin在系统的PATH环境变量中。[atguigu@hadoop101 ~] pwd/
2020-10-27 16:28:35
430
原创 Hadoop3.1.3 完全分布式配置
(1)配置:hadoop-env.shLinux系统中获取JDK的安装路径:[atguigu@ hadoop101 ~]# echo $JAVA_HOME/opt/module/jdk1.8.0_212在hadoop-env.sh文件中修改JAVA_HOME 路径:export JAVA_HOME=/opt/module/jdk1.8.0_212(2)核心配置文件(a)配置core-site.xmlcd $HADOOP_HOME/etc/hadoopvim core-site.xml
2020-10-27 16:23:34
925
原创 hadoop3.1.3 local 模式配置
hadoop3.1.3 local 安装模式1)将hadoop安装包上传到/opt/software目录下2)解压安装文件到/opt/module下面tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/3)查看是否解压成功[atguigu@hadoop101 software]$ ls /opt/module/hadoop-3.1.34)将Hadoop添加到环境变量(1)获取Hadoop安装路径[atguigu@hadoop101 hadoop-3.
2020-10-27 16:15:06
253
原创 js
1、简介JavaScript是一门客户端脚本语言,主要运行在浏览器中,浏览器中负责运行JavaScript脚本代码的程序叫JavaScript引擎2、基本语法js需要包括在函数声明:使用function关键字,没有指定返回值一说!参数列表也没有指定参数类型一说,因为js所有类型都使用var来声明第一种: var abc=function(a,b){ return a+b;}函数在js中也是一种对象,可以将函数的引用赋值给变量第二种: function add(a,b){ return a
2020-10-25 12:45:33
329
原创 css
1、css简介CSS 指层叠样式表 (Cascading Style Sheets)。主要用来设置网页中元素的样式。如边框,颜色,位置等…CSS即可以现在HTML中,也可以写在元素的style属性里面,还可以写在.css外部文件里然后引入到页面2、基本语法语法非常简单。写在外部文件或者html头标签里的时候。选择器{样式名:样式值;样式名:样式值;…………}写在元素的style属性里面的时候。“样式名:样式值;样式名:样式值;…...
2020-10-25 12:44:32
85
原创 Html
1、概念:b/s与c/s现在的软件开发的整体架构主要分为B/S架构与C/S架构:b/s:浏览器/服务器c/s:客户端/服务器客户端:需要安装在系统里,才可使用浏览器:浏览网页,读取HTML并显示服务器:处理浏览器的请求b/s与c/s优劣 b/s只要能上网就能使用,因为基本每台电脑都会有浏览器,维护方便。 c/s必须安装在系统中,安装成功才可使用。在新的系统中没有安装不能使用,便携性差,维护成本高。网页:浏览器中显示的内容,浏览器是网页的展示器。编写好的...
2020-10-25 12:38:56
133
原创 面向对象详解之三
面向对象.1 封装面向对象三大特征:封装、继承、多态.1.1 为什么需要封装?我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要碰电动机吗?我们使用的电脑,内部有CPU、硬盘、键盘、鼠标等等,每一个部件通过某种连接方式一起工作,但是各个部件之间又是独立的现实生活中,每一个个体与个体之间是有边界的,每一个团体与团体之间是有边界的,而同一个个体、团体内部的信息是互通的,只是对外有所隐瞒。面向对象编程语言是对客观世界的模拟,客观世界里每一个事物的内部信息
2020-10-13 16:06:04
266
原创 面向对象详解之二
面向对象.1 封装面向对象三大特征:封装、继承、多态.1.1 为什么需要封装?我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要碰电动机吗?我们使用的电脑,内部有CPU、硬盘、键盘、鼠标等等,每一个部件通过某种连接方式一起工作,但是各个部件之间又是独立的现实生活中,每一个个体与个体之间是有边界的,每一个团体与团体之间是有边界的,而同一个个体、团体内部的信息是互通的,只是对外有所隐瞒。面向对象编程语言是对客观世界的模拟,客观世界里每一个事物的内部信息
2020-10-13 16:04:23
422
泛型中? super T和? extends T的区别
2015-12-17
Spring 面试题分析_尚硅谷_佟刚
2014-09-30
Hibernate面试题分析_尚硅谷_佟刚
2014-09-30
Struts2面试题分析_尚硅谷_佟刚_.pdf
2014-09-30
Java反射机制的缺点_尚硅谷_张晓飞
2014-09-15
115个Java面试题和答案——终极(下)
2014-09-12
115个Java面试题和答案——终极(上)
2014-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人