26
2020
08

R mean() 函数 - 计算平均值

R mean() 函数用来计算样本的平均值,该函数的第二个参数可以设置去掉部分异常分数据。mean() 函数语法格式如下:mean(x, trim = 0, na.rm = FALSE, ...)参数说明:x 输入向量trim 在首尾分别去除异常值,取值范围为 0 到 0.5 之间,表示在计算均值前需要去掉的异常值的比例。na.rm 布尔值,默认为 FALSE,设置是否删除输入的向量中的缺失值 NA,设置 TRUE 删除 NA。实例# 创建向量x <- c(12,27,3,4.2,2,2,
25
2020
08

TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是
25
2020
08

TCP和UDP的区别

(TCP)传输控制协议,是一种提供可靠数据传输的通用协议。 (UDP)用户数据报协议,是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差。
25
2020
08

OSI与TCP/IP各层的结构与功能,都有哪些协议

OSI开放式系统互联 TCP/IP传输控制协议 OSI模型有7层 TCP/IP模型有5层OSI模型物理层:规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。数据链路层:传输有MAC地址的帧以及错误检测功能网络层:(两个主机之间)为数据包(packets)选择路由传输层:(两个主机的应用进程之间)提供端对端的接口会话层:访问验证和会话管理等(如服务器验证用户登录)表示层:数据格式化,代码转换,数据加密等应用层:为操作系统或网络应用程序提供访问网络服务的接口:文件传
25
2020
08

TCP原理

可靠连接,三次握手,四次挥手1.三次握手:防止了服务器端的一直等待而浪费资源,例如只是两次握手,如果s确认之后c就掉线了,那么s就会浪费资源1.syn-c = x,表示这消息是x序号2.ack-s = x + 1,表示syn-c这个消息接收成功。syn-s = y,表示这消息是y序号。3.ack-c = y + 1,表示syn-s这条消息接收成功2.四次挥手:TCP是全双工模式1.fin-c = x , 表示现在需要关闭c到s了。ack-c = y,表示上一条s的消息已经接收完毕2.ack-s
25
2020
08

mvvm框架是什么?

mvvm即Model-View-ViewModel,mvvm的设计原理是基于mvc的MVVM是Model-View-ViewModel的缩写,Model代表数据模型负责业务逻辑和数据封装,View代表UI组件负责界面和显示,ViewModel监听模型数据的改变和控制视图行为,处理用户交互,简单来说就是通过双向数据绑定把View层和Model层连接起来。在MVVM架构下,View和Model没有直接联系,而是通过ViewModel进行交互,我们只关注业务逻辑,不需要手动操作DOM,不需要关注Vie
25
2020
08

vue-router是什么?有哪些组件?

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。<router-link>和<router-view>和<keep-alive>
25
2020
08

怎么定义vue-router的动态路由?怎么获取传过来的值?

动态路由的创建,主要是使用path属性过程中,使用动态路径参数,以冒号开头,如下:{  path: '/details/:id'  name: 'Details'  components: Details}访问details目录下的所有文件,如果details/a,details/b等,都会映射到Details组件上。当匹配到/details下的路由时,参数值会被设置到this.$route.params下,所以通过这个属性可以获取动
25
2020
08

$route和 $router的区别是什么?

router为VueRouter的实例,是一个全局路由对象,包含了路由跳转的方法、钩子函数等。route 是路由信息对象||跳转的路由对象,每一个路由都会有一个route对象,是一个局部对象,包含path,params,hash,query,fullPath,matched,name等路由信息参数。
25
2020
08

vue-router响应路由参数的变化

用watch 检测// 监听当前路由发生变化的时候执行watch: {  $route(to, from){    console.log(to.path)    // 对路由变化做出响应  }}组件内导航钩子函数beforeRouteUpdate(to, from, next){  // to do somethings}
25
2020
08

vue-router 传参

Params只能使用name,不能使用path参数不会显示在路径上浏览器强制刷新参数会被清空,  // 传递参数  this.$router.push({    name: Home,    params: {        number: 1 ,        code: '999'    }  }) 
25
2020
08

vue-router实现路由懒加载(动态加载路由)

把不同路由对应的组件分割成不同的代码块,然后当路由被访问时才加载对应的组件即为路由的懒加载,可以加快项目的加载速度,提高效率const router = new VueRouter({  routes: [    {      path: '/home',      name: 'Home',      component:() = import
25
2020
08

vue-router有几种钩子函数?具体是什么及其参数

  1、全局路由。(全局导航钩子主要有两种钩子:前置守卫、后置钩子。)        注册一个全局前置守卫:beforeEach;const router = new VueRouter({ ... });router.beforeEach((to, from, next) => {     // do someting});这三个参数 to 、from 、next 分别的作用:    1、
25
2020
08

vue-router有哪几种导航钩子( 导航守卫 )?

1、全局守卫: router.beforeEach2、全局解析守卫: router.beforeResolve3、全局后置钩子: router.afterEach4、路由独享的守卫: beforeEnter5、组件内的守卫: beforeRouteEnter、beforeRouteUpdate (2.2 新增)、beforeRouteLeave导航表示路由正在发生改变,vue-router 提供的导航守卫主要用来:通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享
25
2020
08

vue-router如何响应 路由参数 的变化?

问题:当使用路由参数时,例如从 /content?id=1 到 content?id=2,此时原来的组件实例会被复用。这也意味着组件的生命周期钩子不会再被调用,此时vue应该如何响应路由参数 的变化?复用组件时,想对路由参数的变化作出响应的话, 可以watch (监测变化) $route 对象const User = {  template: '...',  watch: {    '$route' (to, from) {
25
2020
08

vue 组件的生命周期?

beforeCreate() { // 这是我们遇到的第一个生命周期函数,表示实例完全被创建出来之前,会执行它        // console.log(this.msg)        // this.show()        // 注意: 在 beforeCreate 生命周期函数执行的时候,data 和 methods 中的 数据都还没有没初始化  &nbs
25
2020
08

created 和 mounted 有什么区别?(挂载完成之后 this.$el 获取当前组件的 dom 元素)

mounted一般是在html渲染完成后的操作,此时el,data都已经加载完成,一般对dom的操作都写在mounted中,例如获取innerHTML,初始化echarts的时候。created一般是在html渲染前的操作,此时el还是undefined,data已经存在。这里不能对dom进行操作
25
2020
08

slot 插槽(就是组件的占位符):slot(匿名插槽,具名插槽)与slot-scope(作用域插槽)

.单个插槽 -> 匿名插槽具名插槽:需要多个插槽时,可以利用<slot> 元素的一个特殊的特性:name来定义具名插槽作用域插槽——带数据的插槽单个插槽和具名插槽中插槽上不绑定数据,所以父组件提供的模板既要包括样式又要包括数据,而作用域插槽是子组件提供数据,父组件只需要提供一套样式
25
2020
08

组件之间传值

父传子:通过属性进行传递(在父组件标签上绑定自定义属性名,值是父组件要传递的数据,在子组件内部通过props属性接收属性名)子传父:通过事件派发(在子组件标签上绑定自定义事件,子组件内部通过$emit给该事件推送数据,父组件内部通过函数接收)平行组件(事件总线):使用eventbus事件总线,在代码中创建一个空白的vue实例,所有事件派发和监听都在此实例上进行。
25
2020
08

计算属性和 methods 有什么区别?

computed计算属性的缓存原理在我们处理大量数据的时候使用可以大大提高效率,不必在数据没有发生改变的时候重新获取数据的值,可直接获取到结果,并且只执行绑定依赖的方法。methods里方法在依赖的值改变后,只有设置触发才会重新执行methods里相关的方法。计算属性方法调用不用加();methods需要;执行机制computed里的方法在初始化执行过后,只要任何值有更新,那么所有在computed计算属性里和其相关的值都会更新。methods只有在调用的时候才会执行对应的方法,不会自动同步数据
25
2020
08

计算属性?

主要用一些简单的计算。--计算属性只有在它的相关依赖发生改变时才会重新求值。
25
2020
08

过滤器?

过滤就是一个数据经过了这个过滤之后出来另一样东西,可以是从中取得你想要的,或者给那个数据添加点什么装饰,那么过滤器则是过滤的工具过滤器怎么串联使用//在双花括号中 {{ message | capitalize }}//在 `v-bind` 中 <p v-bind:id="rawId | formatId"></p>//也可以串联多个过滤器 {{ message | filterA | filterB }}
25
2020
08

vue-router

路由的两种模式:history,hash路由传参:params,queryparams传参的时候可以在路由配置的时候设置占位符query传参就是标准的url传参形式如果我们想刷新页面之后路由传递的参数还存在就必须使用query传参或者params传参的时候设置路由占位符路由守卫beforeEachafterEach 在路由守卫里可以做登录判断?元属性(meta)
25
2020
08

vuex

*****单项数据流vuex中的数据流向(参照官网给的图能说明)vuex中主要的五大模块(state,getters,actions,mutations,modules)mapStatemapActionsmapMutations
25
2020
08

vue 中的 mvvm 是怎么实现的:

MVVM拆开来即为Model-View-ViewModel,有View,ViewModel,Model三部分组成。View层代表的是视图、模版,负责将数据模型转化为UI展现出来。Model层代表的是模型、数据,可以在Model层中定义数据修改和操作的业务逻辑。ViewModel层连接Model和View。对数据(Model)进行劫持,当数据变动时,数据会出发劫持时绑定的方法,对视图进行更新。
25
2020
08

SPA单页面,有什么优缺点?

SPA( single-page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI 与用户的交互,避免页面的重新加载。优点:1.良好的交互体验2.良好的前后端工作分离模式3.减轻服务器压力缺点:1.首屏加载慢 解决方案:Vue-router懒加载、使用CDN加速、异步加载组件、服务端渲染2.不利于SEO  解决
25
2020
08

vue传参

1、直接调用$router.push()进行传参  直接调用$router.push 实现携带参数的跳转        this.$router.push({          path: `/describe/${id}`,        })在子组件中可以使用来获取传递的参数值this.$route.params.id2、router-link进行传参父
25
2020
08

怎么定义vuve-router的动态路由?怎么获取传过来的动态参数?

在router目录下的index.js文件下,对path属性加上/:id。使用router对象的params.id
25
2020
08

详细说一下你对vue生命周期的理解

vue生命周期指的是vue实例从创建到销毁的过程。包括8个阶段,创建前/后、渲染前/后、更新前/后、销毁前/后。beforeCreate(创建前):vue实例的挂载元素$el和数据对象data都为undefined,还未初始化。created(创建后):vue实例的数据对象data有了,但是$el还没有。beforeMounte(渲染前):vue实例的$el和data都初始化了,但是挂载之前还是虚拟的dom,data.message还未替换mounted(渲染后):vue实例挂载完成,data.
25
2020
08

MVVM的理解

MVVM 由 Model、View、ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变
25
2020
08

vue的双向绑定原理(vue的原理、简单说一下双向数据绑定)

vue是采用数据劫持结合发布者-订阅者模式的方式,通过object.defineProperty()来劫持各个属性的setter和getter,在数据变动时发布消息给订阅者,触发响应的监听回调具体步骤:第一步:需要observe的数据对象进行递归遍历,给各个属性加上setter和getter,从而监听数据的变化第二步:compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,一旦数据变动,就更新视图第三步:watcher订阅者是observe和complie之间通信的桥梁第四
25
2020
08

computed 和 watched 的区别:

computed 是计算属性,依赖其他属性计算值,并且 computed 的值有缓存,只有当计算值变化才会返回内容。watch 监听到值的变化就会执行回调,在回调中可以进行一些逻辑操作。所以一般来说需要依赖别的属性来动态获得值的时候可以使用 computed,对于监听到值的变化需要做一些复杂业务逻辑的情况可以使用 watch。
25
2020
08

写 React / Vue 项目时为什么要在组件中写 key,其作用是什么?

在开发过程中,我们需要保证某个元素的 key 在其同级元素中具有唯一性。在 Diff 算法中 会借助元素的 Key 值来判断该元素是新近创建的还是被移动而来的元素,从而减少不必要的元素重渲染。
25
2020
08

vuex 的mutation和action的特性是什么?有什么区别?

mutation用于修改state的数据,是同步的。action 类似于 muation, 不同在于:action 提交的是 mutation,而不是直接变更状态action 可以包含任意异步操作
25
2020
08

vue 的双向绑定的原理是什么

vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
25
2020
08

组件之间如何传值?

父组件与子组件传值:Props子组件向父组件传递数据: 子组件通过$emit方法传递参数,触发父组件event
25
2020
08

请详细说下你对 Vue 生命周期的理解?

总共分为 8 个阶段创建前/后,载入前/后,更新前/后,销毁前/后。创建前/后: 在 beforeCreate 阶段,vue 实例的挂载元素 el 还没有。载入前/后:在 beforeMount 阶段,vue 实例的$el 和 data 都初始化了,但还是挂载之前为虚拟的 dom 节点,data.message 还未替换。在 mounted 阶段,vue 实例挂载完成,data.message 成功渲染。更新前/后:当 data 变化时,会触发 beforeUpdate 和 updated 方法
25
2020
08

Vue.js 和 React.js 有什么区别?

React.js 和 Vue.js 确实有一些相似——它们都提供数据驱动、可组合搭建的视图组件。然而,它们的内部实现是完全不同的。React 是基于 Virtual DOM——一种在内存中描述 DOM 树状态的数据结构。React 中的数据通常被看作是不可变的,而 DOM 操作则是通过 Virtual DOM 的 diff 来计算的。与之相比,Vue.js 中的数据默认是可变的,而数据的变更会直接出发对应的 DOM 更新。相比于 Virtual DOM,Vue.js 使用实际的 DOM 作为模板
25
2020
08

Vue.js 和 AngularJS 之间的区别是什么?

下面是一些选择 Vue 而不是 Angular 的可能原因;Vue.js 是一个更加灵活开放的解决方案。它允许你以希望的方式组织你的应用程序,而不是任何时候都必须遵循 Angular 制定的规则。它仅仅是一个视图层,所以你可以将它嵌入一个现有页面而不一定要做成一个庞大的单页应用。在结合其他库方面它给了你更大的的空间,但相应,你也需要做更多的架构决策。例如,Vue.js 核心默认不包含路由和 ajax 功能,并且通常假定你在用应用中使用了一个外部的模块构建系统。这可能是最重要的区别在 API 和内
25
2020
08

Vue.js特点

简洁:页面由HTML模板+Json数据+Vue实例组成数据驱动:自动计算属性和追踪依赖的模板表达式组件化:用可复用、解耦的组件来构造页面轻量:代码量小,不依赖其他库快速:精确有效批量DOM更新模板友好:可通过npm,bower等多种方式安装,很容易融入
25
2020
08

VueJS 特性:

I: MVVM模式(数据变量(model)发生改变 视图(view)也改变, 视图(view)改变,数据变量(model)也发生改变)使用MVVM模式有几大好处:  1. 低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。  2. 可重用性。可以把一些视图的逻辑放在ViewModel里面,让很多View重用这段视图逻辑。  3. 独立开发。开发人员可以专注与业务逻辑和
25
2020
08

Vue.js是什么

Vue.js(是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件
25
2020
08

vue.js中使用事件名

在vuejs中,我们经常要绑定一些事件,有时候给DOM元素绑定,有时候给组件绑定。绑定事件在HTML中用v-on:click-"event",这时evet的名字不要出现大写,因为在1.x中不区分大小写,所以如果我们在HTML写v-on:click="myEvent"而在js中写myEvent就出错误,所以在vuejs的1.x绑定事件时候,要尽量避免使用大写字母。在2.0中没有该限制!
25
2020
08

指令v-el的使用

有时候我们想就像使用jquery那样去访问一个元素,此时就可以使用v-el指令,去给这个元素注册一个索引,方便通过所属实例的$el访问这个元素。注意HTML不区分大小写,所以v-el:someEl将转换为全小写。可以用v-el:some-el然后设置this.$el.someEl。示例<span v-el:msg>hello</span><span v-el:other-msg>world</span>this.$els.msg.textConte
25
2020
08

路由嵌套

路由嵌套会将其他组件渲染到该组件内,而不是进行整个页面跳转router-view本身就是将组件渲染到该位置,想要进行页面跳转,就要将页面渲染到根组件,在起始配置路由时候写到:var App = Vue.extend({ root });router.start(App,'#app');复制代码这里首先将根组件注册进来,用于将路由中配置好的各个页面渲染出来,然后将根组件挂载到与#app匹配的元素上。
24
2020
08

Vuejs组件

vuejs构建组件使用Vue.component('componentName',{    /*component*/ });   // 这里注意一点,组件要先注册再使用Vue.component('mine',{               template:'#mineTpl',     &nbs
24
2020
08

指令keep-alive

在vue-router写着keep-alive,keep-alive的含义:如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染。为此可以添加一个keep-alive指令<component :is='curremtView' keep-alive></component>
24
2020
08

如何让css只在当前组件中起作用

在每一个vue组件中都可以定义各自的css,js,如果希望组件内写的css只对当前组件起作用,只需要在style中写入scoped,即:<style scoped></style>复制代码
24
2020
08

v-show指令,v-if的区别

条件渲染指令,与v-if不同的是,无论v-show的值为true或false,元素都会存在于HTML代码中;而只有当v-if的值为true,元素才会存在于HTML代码中。v-show指令只是设置了元素CSS的style值
24
2020
08

vue中的MVVM模式

即Model-View-ViewModel。Vue是以数据为驱动的,Vue自身将DOM和数据进行绑定,一旦创建绑定,DOM和数据将保持同步,每当数据发生变化,DOM会跟着变化。ViewModel是Vue的核心,它是Vue的一个实例。Vue实例时作用域某个HTML元素上的,这个HTML元素可以是body,也可以是某个id所指代的元素。DOM Listeners和Data Bindings是实现双向绑定的关键。DOM Listeners监听页面所有View层DOM元素的变化,当发生变化,Model层
24
2020
08

vue路由的钩子函数 

  首页可以控制导航跳转,beforeEach,afterEach等,一般用于页面title的修改。一些需要登录才能调整页面的重定向功能。  beforeEach主要有3个参数to,from,next:  to:route即将进入的目标路由对象,  from:route当前导航正要离开的路由  next:function一定要调用该方法resolve这个钩子。执行效果依赖next方法的调用参数。可以控制网页的跳转。
24
2020
08

对于MVVM的理解

MVVM 是 Model-View-ViewModel 的缩写。  Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。  View 代表UI 组件,它负责将数据模型转化成UI 展现出来。  ViewModel 监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View。  viewmodel和model实现双向数据绑定
24
2020
08

列举Http请求中常见的请求方式?

    get        向特定的路径资源发出请求,数据暴露在url中    post        向指定路径资源提交数据进行处理请求,数据包含在请求体中    options        返回服务器针对特定资源所支持的http请求方法,允许客户端查看,测试服务器性能    head&nbs
24
2020
08

列举vue的常见指令。

    1.文本插值:{{}} Mustache        <div id='app'>            {{message}}        </div>    2.DOM属性绑定:v-bind        <div i
24
2020
08

vue中的路由拦截器的作用?

    路由拦截,权限设置    例如:当用户没有登录权限的时候就会跳转到登录页面,用到的字段requireAuth:true
24
2020
08

axios的作用?

 vue中的ajax,用于向后台发起请求    特点:        从浏览器中创建XMLHttpRequests        从node.js创建http请求        支持Promise API        拦截请求和响应        转换请求数据和响应数
24
2020
08

vuex的作用?

   vuex是一个专门为vue.js应用程序开发的状态管理模式    vuex可以帮助我们管理共享状态,也就是管理全局变量    vuex的几个核心概念:        vuex使用一个store对象管理应用的状态,一个store包括:state,getter,mutation,action四个属性        state:state意为'状态&
24
2020
08

关于 Vue.use() 的理解

Vue.use() 是Vue的一个全局注册方法,主要用来注册插件,默认第一个参数是它接受的参数类型必须是Function或者是Object,如果是个对象,必须提供install方法,install方法默认第一个参数为 Vue,其后的参数为注册时传入的arguments。如果是 Function 那么这个函数就被当做 install 方法。同一个插件 Vue.use 会自动阻止多次注册。除了在注册插件中使用 Vue.use 外,我们还可以在 directive注册、filters注册、compon
24
2020
08

Vue minix(混入)的用法

minix(混入) 是 Vue 中的高级用法,混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。比如我们做一个下拉加载,很多组件都需要用到下拉加载,我们就可以把下拉加载封装成一个minix,然后需要下拉加载功能的页面都去导入这个minix,minix里面的属性或者方法就会被混合到当前组件本身的属性上。简单的说,minix B 有个 C方法(下拉加载),页面 A 需要下拉加载于是就导入了 minix B,这时候页面 A 也就拥有了 C 方法。如果页面 A 本身有个
24
2020
08

Vue 父子组件通信

父组件向子组件传值通过props子组件向父组件传递,子组件使用$emit传递,父组件使用on监听。
24
2020
08

Vue路由的实现

hash模式通过用window.location.hash监听页面的hash值变化,切换对于的内容,hash变化不会重载页面。history模式history采用HTML5的新特性;且提供了两个新方法:pushState(),replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更。
24
2020
08

vue项目优化解决方案

使用mini-css-extract-plugin插件抽离css配置 optimization 把公共的js代码抽离出来通过 Webpack 处理文件压缩不打包框架、库文件,通过cdn的方式引入小图片使用 base64配置项目文件懒加载UI 库配置按需加载开启 Gzip压缩
24
2020
08

怎么定义vue-router的动态路由?怎么获取传过来的动态参数?

答:在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id
24
2020
08

$route和$router的区别

$route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。而$router是“路由实例”对象包括了路由的跳转方法,钩子函数等
24
2020
08

vue-router有哪几种导航钩子

全局守卫: router.beforeEach全局解析守卫: router.beforeResolve全局后置钩子: router.afterEach路由独享的守卫: beforeEnter组件内的守卫: beforeRouteEnter、beforeRouteUpdate (2.2 新增)、beforeRouteLeave
24
2020
08

active-class是哪个组件的属性

vue-router 模块 的router-link组件
24
2020
08

Vue双向绑定实现的原理

采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。
24
2020
08

自定义指令的几个钩子函数

bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 。componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。unbind:只调用一次,指令与元素解绑时
24
2020
08

vue生命周期钩子函数有哪些?

beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。created:在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer), 属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。mounted:el 被新创建的 vm.$el 替换,并挂
24
2020
08

什么是vue生命周期和生命周期钩子函数?

vue 的生命周期是: vue 实例从创建到销毁,也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程。
24
2020
08

全局注册指令

在 src 文件夹中新建 utils 文件夹,在 utils 文件夹中新建 directives.js 文件在directives.js文件引入所有要注册的全局指令在 main.js 中引入 directives.js 文件并使用 Vue.use() 全局注册directives.jsexport default (Vue)=>{    Vue.directive("focus", {        inser
24
2020
08

Vue 如何注册组件

组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树全局注册在 src 文件夹中新建 utils 文件夹,在 utils 文件夹中新建 components.js 文件在 components.js 文件引入所有要注册的全局组件在 main.js 中引入 components.js 文件并使用 Vue.use() 全局注册举例:组件 diyHeader.vue<template> 
24
2020
08

Vue异步更新队列

Vue 执行 DOM 更新时,只要观察到数据变化,就会自动开启一个队列,并缓冲在同一个事件循环中发生的所以数据改变。在缓冲时会去除重复数据,从而避免不必要的计算和 DOM 操作。以上面的代码举例,你用一个 for 循环来动态改变 isShow 100 次,其实它只会应用最后一次改变,如果没有这种机制,DOM 就要重绘 100 次,这固然是一个很大的开销。所以执行 this.isShow= true时,#textDiv 还没有被创建出来,直到下一个 Vue 事件循环时,才开始创建。上面的代码应修改
24
2020
08

vue $nextTick 作用是什么?

官方解释:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。简单的说就是再DOM操作时,vue的更新是异步的,$nextTick 是用来知道什么时候 DOM 更新完成的。举例:我们给一个div设置显示隐藏,当点击 button 的时候 #textDiv 先是被渲染出来,接着我们获取 #textDiv 的 html内容<div id="app">    <div id="textD
24
2020
08

vue 中 key 值的作用

用于 管理可复用的元素。因为Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。key的作用主要是为了高效的更新虚拟DOM
24
2020
08

v-on 可以监听多个方法吗?

v-on 可以监听多个方法,但是同一种事件类型的方法,v-on 只能监听一个。
24
2020
08

v-if 和 v-show 有什么区别

共同点:v-if 和 v-show 都可以用来动态显示DOM元素。区别:编译过程: v-if 是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display。编译条件: v-if 是惰性的,如果在初始渲染时条件为假,则什么也不做。直到条件第一次变为真时,才会开始渲染条件块。v-show 不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS
24
2020
08

vue中 keep-alive 组件的作用

keep-alive:主要用于保留组件状态或避免重新渲染。两个重要属性,include 缓存组件名称,exclude 不需要缓存的组件名称。
24
2020
08

v-for 与 v-if 的优先级

当它们处于同一节点,v-for 的优先级比 v-if 更高。
24
2020
08

Vue 常用指令

v-model 多用于表单元素实现双向数据绑定(同angular中的ng-model)v-for 格式: v-for="字段名 in(of) 数组json" 循环数组或json(同angular中的ng-repeat),需要注意从vue2开始取消了$indexv-show 显示内容 (同angular中的ng-show)v-hide 隐藏内容(同angular中的ng-hide)v-if 显示与隐藏 (dom元素的删除添加 同angular中的ng-if 默认值为false)
24
2020
08

Vue项目结构介绍

build 文件夹:用于存放 webpack 相关配置和脚本。config 文件夹:主要存放配置文件,比如配置开发环境的端口号、开启热加载或开启gzip压缩等。dist 文件夹:默认命令打包生成的静态资源文件。node_modules:存放 npm 命令下载的开发环境和生产环境的依赖包。src: 存放项目源码及需要引用的资源文件。src下assets:存放项目中需要用到的资源文件,css、js、images 等。src下componets:存放 vue 开发中一些公共组件。src下emit:自己
24
2020
08

引进组件的步骤

答: 在template中引入组件;在script的第一行用import引入路径;
24
2020
08

Python 3.7.9 与 3.6.12 发布

原标题:Python 3.7.9 与 3.6.12 发布 来源:开源中国适用于 Python 3.7 和 Python 3.6 的最新安全修复汇总包 Python 3.7.9 及 3.6.12 已发布。Python 3.7 现在处于其生命周期的安全修复阶段。在此阶段,仅接受和解决与安全相关的问题。Python 3.7 会提供安全修复程序直至 2023 年中期,即最初发布后的五年。安全修复版本会根据需要定期生成,并且是仅源版本。Python 通常不为安全修复发行版提供二进制安装程序,但由于在上一个
24
2020
08

未命名

func main() { i := GetValue() switch i.(type) { case int: println("int") case string: println("string") case interface{}: println("interface") default:
23
2020
08

是否可以编译通过?如果通过,输出什么?

func main() { i := GetValue() switch i.(type) { case int:  println("int") case string:  println("string") case interface{}:  println("interface") default:  println("
21
2020
08

R 语言实例

R mean() 函数 - 计算平均值R median() 函数 - 计算中位数R - 计算向量中出现最多次的元素R - 线性回归
21
2020
08

Java 中操作 R

首先,在 R 中安装软件包 "Rserve" 。如果你使用的是 RGui 可视化界面,在菜单栏的 程序包 - 安装程序包 里可以完成这个步骤。如果你使用的是纯粹的 R Console,可以使用以下命令:install.packages("Rserve", repos = "https://mirrors.ustc.edu.cn/CRAN/")当 Reserve 安装完成之后,在 R 的根目录下会有一个 library 目录,在其中找到
21
2020
08

R 绘图 - 散点图

散点图是将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定,每个点对应一个 X 和 Y 轴点坐标。散点图可以使用 plot() 函数来绘制,语法格式如下:plot(x, y, type="p", main, xlab, ylab, xlim, ylim, axes)x 横坐标 x 轴的数据集合y 纵坐标 y 轴的数据集合type:绘图的类型,p 为点、l 为直线, o 同时绘制点和线,且线穿过点。main 图表标题。xlab、yl
21
2020
08

R 绘图 - 函数曲线图

函数曲线图是研究函数的重要工具。R 中 curve() 函数可以绘制函数的图像,代码格式如下:curve(expr, from = NULL, to = NULL, n = 101, add = FALSE,      type = "l", xname = "x", xlab = xname, ylab = NULL,      log = NULL, xlim = NULL, …)# S3 函
21
2020
08

R 绘图 - 中文支持

不同系统的字体库目录:Linux 一般在 /usr/share/fonts 下,我们可以使用 fc-list 命令查看:# fc-list/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book/usr/share/fonts/truety
21
2020
08

R 绘图 - 条形图

条形图,也称为柱状图条形图,是一种以长方形的长度为变量的统计图表。条形图可以是水平或垂直的,每个长方形可以有不同的颜色。R 语言使用 barplot() 函数来创建条形图,格式如下:barplot(H,xlab,ylab,main, names.arg,col,beside)参数说明:H 向量或矩阵,包含图表用的数字值,每个数值表示矩形条的高度。xlab x 轴标签。ylab y 轴标签。main 图表标题。names.arg 每个矩形条的名称。col 每个矩形条的颜色。接下来我们创建一个简单的
21
2020
08

R 绘图 - 饼图

R 语言提供来大量的库来实现绘图功能。饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系。R 语言使用 pie() 函数来实现饼图,语法格式如下:pie(x, labels = names(x), edges = 200, radius = 0.8,    clockwise = FALSE, init.angle = if(clockwise) 90 else 0,    density = NULL, angl
21
2020
08

R MySQL 连接

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。如果你对 MySQL 还不了解,可以先查阅:MySQL 教程R 语言读写 MySQL 文件需要安装扩展包,我们可以在 R 到控制台输入以下命令来安装:install.packages("RMySQL", repos = "https://mirrors.ust
21
2020
08

R JSON 文件

JSON: JavaScript Object Notation(JavaScript 对象表示法)。JSON 是存储和交换文本信息的语法。JSON 类似 XML,但比 XML 更小、更快,更易解析。如果你对 JSON 还不了解,可以先查阅:JSON 教程R 语言读写 JSON 文件需要安装扩展包,我们可以在 R 到控制台输入以下命令来安装:install.packages("rjson", repos = "https://mirrors.ustc.edu.cn/
21
2020
08

R XML 文件

XML 指的是可扩展标记语言(eXtensible Markup Language),XML 被设计用来传输和存储数据。如果你对 XML 还不了解,可以先查阅:XML 教程R 语言读写 XML 文件需要安装扩展包,我们可以在 R 到控制台输入以下命令来安装:install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")查看是否安装成功:> any(grepl("XML
21
2020
08

R Excel 文件

Excel 格式的文件主要是 xls 或 xlsx,这两种文件可以在 R 语言中导入 xlsx 库来实现直接的读取。R 语言读写 Excel 文件需要安装扩展包,我们可以在 R 到控制台输入以下命令来安装:install.packages("xlsx", repos = "https://mirrors.ustc.edu.cn/CRAN/") 安装过程如下:事实上,几乎所有的 Excel 软件与大多数表格软件一样支持 CSV 格式的数据,所以完全可以通过
21
2020
08

R CSV 文件

R 作为统计学专业工具,如果只能人工的导入和导出数据将使其功能变得没有意义,所以 R 支持批量的从主流的表格存储格式文件(例如 CSV、Excel、XML 等)中获取数据。CSV 表格交互CSV(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号) 是一种非常流行的表格存储文件格式,这种格式适合储存中型或小型数据规模的数据。由于大多数软件支持这个文件格式,所以常用于数据的储存与交互。CSV 本质是文本,它的文件格式极度简单:数据一行一行的用文本
21
2020
08

R 包

包是 R 函数、实例数据、预编译代码的集合,包括 R 程序,注释文档、实例、测试数据等。R 语言相关的包一般存储安装目录下对 "library" 目录,默认情况在 R 语言安装完成已经自带来一些常用对包,当然我们也可以在后期自定义添加一些要使用的包。R 语言完整的相关包可以查阅:https://cran.r-project.org/web/packages/available_packages_by_name.html接下来我们主要介绍如何安装 R 语言的包。查看 R 包的安
21
2020
08

R 数据重塑

合并数据框R 语言合并数据框使用 merge() 函数。merge() 函数语法格式如下:# S3 方法merge(x, y, …)# data.frame 的 S3 方法 merge(x, y, by = intersect(names(x), names(y)),      by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,      sort = TR
21
2020
08

R 数据框

数据框(Data frame)可以理解成我们常说的"表格"。数据框是 R 语言的数据结构,是特殊的二维列表。数据框每一列都有一个唯一的列名,长度都是相等的,同一列的数据类型需要一致,不同列的数据类型可以不一样。R 语言数据框使用 data.frame() 函数来创建,语法格式如下:data.frame(…, row.names = NULL, check.rows = FALSE,           check.n
21
2020
08

R 因子

因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人。R 语言创建因子使用 factor() 函数,向量作为输入参数。factor() 函数语法格式:factor(x = character(), levels, labels = levels,       exclude = NA, ordered = is.ordered(x), nmax = NA)参数说明:x:向量。levels:指定各水平值, 不指定时由x
21
2020
08

R 数组

数组也是 R 语言的对象,R 语言可以创建一维或多维数组。R 语言数组是一个同一类型的集合,前面我们学的矩阵 matrix 其实就是一个二维数组。向量、矩阵、数组关系可以看下图:R 语言数组创建使用 array() 函数,该函数使用向量作为输入参数,可以使用 dim 设置数组维度。array() 函数语法格式如下:array(data = NA, dim = length(data), dimnames = NULL)参数说明:data 向量,数组元素。dim 数组的维度,默认是一维数组。dim
21
2020
08

R 矩阵

R 语言为线性代数的研究提供了矩阵类型,这种数据结构很类似于其它语言中的二维数组,但 R 提供了语言级的矩阵运算支持。矩阵里的元素可以是数字、符号或数学式。一个 M x N 的矩阵是一个由 M(row) 行 和 N 列(column)元素排列成的矩形阵列。以下是一个由 6 个数字元素构成的 2 行 3 列的矩阵:R 语言的矩阵可以使用 matrix() 函数来创建,语法格式如下:matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimname
21
2020
08

R 列表

列表是 R 语言的对象集合,可以用来保存不同类型的数据,可以是数字、字符串、向量、另一个列表等,当然还可以包含矩阵和函数。R 语言创建列表使用 list() 函数。如下实例,我们创建一个列表,包含了字符串、向量和数字:实例list_data <- list("runoob", "google", c(11,22,33), 123, 51.23, 119.1)print(list_data)执行以上代码输出结果为:[[1]][1] "runo
21
2020
08

R 字符串

R 语言字符串可以使用一对单引号 ' ' 或一对双引号 " " 来表示。单引号字符串中可以包含双引号。单引号字符串中不可以包含单引号。双引号字符串中可以包含单引号。双引号字符串中不可以包含双引号。以下实例演示来字符串的使用:实例a <- '使用单引号'print(a)b <- "使用双引号"print(b)c <- "双引号字符串中可以包含单引号(') "print(c)d &l
21
2020
08

R 函数

函数是一组一起执行一个任务的语句。R 语言本身提供了很多的内置函数,当然我们也可以自己创建函数。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。R 语言中函数是一个对象,可以拥有属性。定义函数R 语言中的函数定义使用 function 关键字,一般形式如下:function_name <- function(arg_1, arg
21
2020
08

R 循环

有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了更为复杂执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图:R 语言提供的循环类型有:repeat 循环while 循环for 循环R 语言提供的循环控制语句有:break 语句Next 语句循环控制语句改变你代码的执行顺序,通过它你可以实现代码的跳转。循环类型repeatrepeat 循环会一直执行
21
2020
08

R 判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的一般形式:R 语言提供了以下类型的判断语句:if 语句if...else 语句switch 语句if 语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。语法格式如下:if(boolean_expression) {    // 布尔表达式为真将执行的语句}如果布尔表达式 boolean_expressio
21
2020
08

R 数据类型

数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。R 语言中的最基本数据类型主要有三种:数字逻辑文本数字常量主要有两种:一般型 123 -0.125科学计数法 1.23e2 -1.25E-1逻辑类型在许多其他编程语言中常称为布尔型(Boolean),常量值只有 TRUE 和 FALSE。注意:R 语言区分大小写,true 或 True 不能代表 TRUE。最直观的数据类型就是文本类型。文本就是其它语言中常出现的字符串(Str
21
2020
08

R 基础运算

本章介绍 R 语言的简单运算。 赋值 一般语言的赋值是 = 号,但是 R 语言是数学语言,所以赋值符号与我们数学书上的伪代码很相似,是一个左箭头 <- : 实例 a <- 123 b <- 456 print(a + b) 以上代码执行结果: [
21
2020
08

R 语言基础

一门新的语言学习一般是从输出 "Hello, World!" 程序开始,R 语言的 "Hello, World!" 程序代码如下:实例(helloworld.R)myString <- "Hello, World!"print ( myString )运行实例 »[1] "Hello, World!"以上实例将字符串 "Hello, World!" 赋值给 myString 变量,然后使用
20
2020
08

R 注释

注释主要用于对一段代码对解析,可以让阅读者更易理解,编程语言对注释会被编译器忽略掉,不会影响代码对执行。一般编程语言的注释分为单行注释与多行注释,但是 R 语言只支持单行注释,注释符号为 #。其实如果有多行注释我们只需要在每一行添加 # 号就好了。单行注释# 这是我对第一个编程代码myString <- "Hello, World!"print ( myString )多行注释# R 语言实现两个数相加  # 变量赋值a <- 9b <-
19
2020
08

R语言 环境设置

尝试在线环境你真的不需要设置自己的环境来开始学习R编程语言。 原因很简单,我们已经在线设置了R编程环境,以便您可以在进行理论工作的同时在线编译和执行所有可用的示例。 这给你对你正在阅读的信心,并用不同的选项检查结果。 随意修改任何示例并在线执行。实例:# Print Hello World. print("Hello World")  # Add two numbers. print(23.9 + 11.6)本地环境设置如果你仍然愿意为
16
2020
08

hbase的rowkey怎么创建好?列族怎么创建比较好?(重点)

hbase存储时,数据按照Row key的字典序(byte order)排序存储。设计key时,要充分利用排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)一个列族在数据底层是一个文件,所以将经常一起查询的列放到一个列族中,列族尽量少,减少文件的寻址时间。
16
2020
08

MapTask并行机度是由什么决定的?

由切片数量决定的。
15
2020
08

R 语言教程

R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,可以选择 Python、C 或 Java。R 语言与 C 语言都是贝尔实验室的研究成果,但两者有不同的侧重领域,R 语言是一种解释型的面向数学理论研究工作者的语言,而 C 语言是为计算机软件工程师设计的。R 语言是解释运行的语言(与 C 语言的编译运行不同),它的执行速度比 C 语言慢得多,不利于优化。但它在语法层面提供
14
2020
08

MySQL 常用时间记录

 获取当月最后一秒SELECT UNIX_TIMESTAMP(DATE_SUB(DATE_ADD(last_day(curdate()), INTERVAL 1 DAY),INTERVAL 1 SECOND))* 1000; 获取月初第一天select UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL - DAY(CURDATE()) + 1 DAY)) * 1000; 当日凌晨时间戳select UNIX_TIMESTAMP(
14
2020
08

shell脚本实战while 的使用案例

1. 循环输出1-10的数字#!/bin/bashnum=1while [ $num -le 10 ]do echo $num num=$(( $num + 1 ))done2. 使用while读文件并打印文件内容用法一:while read linedo echo $linedone <./a.txt用法二:cat ./a.txt|while read linedo echo $line donefor实现的读取文件并着行打印#!/bin
14
2020
08

shell脚本实战-while循环语句的语法分析

语法格式一:while [条件]do 操作done语法格式二:while read linedo 操作done  <  file通过read命令每次读取一行文件,文件内容有多少行,while循环多少次注意:只有表达式为真,do和done之间的语句才会执行,表达式为假时,结束循环(即条件成立就一直执行循环)例如:while true ;do echo 'helloword'done
14
2020
08

切换gaussDb中遇到的问题

    1.  执行出现如下错误:column "TASK.TASK_ID" must appear in the GROUP BY clause or be used in an aggregate function ,原因                是:select的字段与Group by中的字段要一致或不一致的字段必须使用聚合函数;   
14
2020
08

mysql数据迁移至gaussDB

   1. 导出mysql数据   show variables like '%secure%' 查询出secure_file_priv地址;                在secure_file_priv地址下mkdir aaa;                修改文件权限chmod -R 777
14
2020
08

GaussDB命令行连接

  1.1 ssh连接主机,IP:192.168.28.178,用户名:root,密码:Huawei @123                1.2 切换至bin目录,cd /home/gaussdba/app/bin/                1.3 切换用户为gaussdba,su gaussdba  &nb
14
2020
08

GaussDB基本操作命令

     \l  列出所有数据库                \c database_name 切换数据库                \d 列出当前数据库下的表                \d tablenam
14
2020
08

@Controller annotation

@Controller注解表示该类扮演控制器的角色。Spring不需要继承任何控制器基类或应用Servlet API。69.@RequestMapping annotation@RequestMapping注解用于将URL映射到任何一个类或者一个特定的处理方法上。
14
2020
08

在win32环境中线程有哪三种模式

1.单线程指从任务的开始到结束都需要自己来完成2.单元线程指可以多个单线程组成一个单元,他们完成各自的分工3.自由线程这些线程可以互相帮忙执行任务 
13
2020
08

请简述mapreduce中,combiner,partition作用?

   --在MapReduce整个过程中,combiner是可有可无的,需要是自己的情况而定,如果只是单纯的对map输出的key-value进行一个统计,则不需要进行combiner,combiner相当于提前做了一个reduce的工作,减轻了reduce端的压力,Combiner只应该适用于那种Reduce的输入(key:value与输出(key:value)类型完全一致,且不影响最终结果的场景。比如累加,最大值等,也可以用于过滤数据,在 map端将无效的数据过滤掉。在这些
13
2020
08

用非递归方法实现二分查找

 --代码如下,二分查找只适用于有序数列,对其进行查找,效率非常高,不适用于无序数列public static int binSearch(int srcArray[], int key) {  int mid;  int start = 0;  int end = srcArray.length - 1;  while (start <= end) {   mid = (end - start) / 2 + start
13
2020
08

请列出你所知道的hadoop调度器,并简要说明其工作方法?

 --1.先进先出调度器(FIFO)    --Hadoop 中默认的调度器,也是一种批处理调度器。它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业 --2.容量调度器(Capacity Scheduler)   --支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算
13
2020
08

请简述hadoop怎么样实现二级排序?

 --在MapReduce中本身就会对我们key进行排序,所以我们要对value进行排序,主要思想为将key和部分value拼接成一个组合key(实现WritableComparable接口或者调用 setSortComparatorClass函数),这样reduce获取的结果便是先按key排序,后按value排序的结果,在这个方法中,用户需 要自己实现Paritioner,继承Partitioner<>,以便只按照key进行数据划分。Hadoop显式的支持二次排序,在Co
13
2020
08

如何避免HBase行键的热点问题

字符串反转,加盐,hash
13
2020
08

Hive的内部表和外部表的概念

内部表:又称管理表,hive自己管理数据,hdfs中表现为所属库的文件夹,删除表会删除数据外部表:数据存储在指定的hdfs路径,删除表只会删除元数据,不会删除数据
13
2020
08

分片和分区的区别

分片:逻辑划分 根据文件大小等因素划分,一个map task 有一个分片分区:和reduce个数有关,根据键的hash分区
13
2020
08

说一下对hadoop的一些理解(提示:可以从Hadoop的概念、组件、作用方面回答)

概念:是一个开源分布式系统架构组件:hdfs-分布式存储,mapreduce-分布式计算框架,yarn-分布式资源管理,commen-支持所有其他模块的公共工具程序
13
2020
08

请讲述一下Hadoop Shuffle原理过程(越详细越好)

map缓冲区溢写前分区排序,然后溢写文件,对分区文件合并reduce 到map端拉取对应分区的数据,再次合并处理
13
2020
08

MapReduce中数据倾斜问题产生原因及解决方案?

--原因:主要是key分配不均,其次机器配置可能不同--解决方案:key打散添加随机值,具体字段有空值单独处理,加盐等处理
12
2020
08

R 环境安装

R 语言的开发环境本身具备了图形开发环境,这与其他很多工程语言是不同的,所以开发环境最好安装在为桌面个人计算机设计的操作系统上(如 Windows, macOS 或 Ubuntu 桌面版 等)。首先,我们需要下载 R 语言环境的安装包:Windows官方地址:https://cloud.r-project.org/bin/windows/base/R-4.0.0-win.exeUSTC 镜像:https://mirrors.ustc.edu.cn/CRAN/bin/windows/base/R-
11
2020
08

解释Kafka的Zookeeper是什么?我们可以在没有Zookeeper的情况下使用Kafka吗?

Zookeeper是一个开放源码的、高性能的协调服务,它用于Kafka的分布式应用。作用:协调Kafka Broker,存储原数据:consumer的offset+broker信息+topic信息+partition个信息。不,不可能越过Zookeeper,直接联系Kafka broker。一旦Zookeeper停止工作,它就不能服务客户端请求。Zookeeper主要用于在集群中不同节点之间进行通信在Kafka中,它被用于提交偏移量,因此如果节点在任何情况下都失败了,它都可以从之前提交的偏移量中
11
2020
08

Kafka服务器能接收到的最大信息是多少?

Kafka服务器可以接收到的消息的最大大小是1000000字节。
11
2020
08

什么是broker?作用是什么?

一个单独的kafka server就是一个broker,broker主要工作就是接收生产者发过来的消息,分配offset,之后保存到磁盘中。同时,接收消费者、其他broker的请求,根据请求类型进行相应的处理并返回响应,在一般的生产环境中,一个broker独占一台物理服务器
11
2020
08

解释Apache Kafka用例?

答:Apache Kafka有很多用例,例如:  Kafka指标可以使用Kafka进行操作监测数据。此外,为了生成操作数据的集中提要,它涉及到从分布式应用程序聚合统计信息。Kafka日志聚合 从组织中的多个服务收集日志。流处理在流处理过程中,Kafka的强耐久性非常有用。Apache Kafka对于新手的面试问题:31, 32, 33, 34, 38, 39, 40Apache Kafka对于有经验的人的面试问题:35, 36, 37
11
2020
08

连接器API的作用是什么?

答:一个允许运行和构建可重用的生产者或消费者的API,将Kafka主题连接到现有的应用程序或数据系统,我们称之为连接器API。Apache Kafka对于新手的面试问题:21, 23, 25, 26, 27, 28, 29, 30Apache Kafka对于有经验的人的面试问题:24, 22
11
2020
08

ISR在Kafka环境中代表什么?

答:ISR指的是同步副本。这些通常被分类为一组消息副本,它们被同步为领导者。
11
2020
08

解释流API的作用?

答:一种允许应用程序充当流处理器的API,它还使用一个或多个主题的输入流,并生成一个输出流到一个或多个输出主题,此外,有效地将输入流转换为输出流,我们称之为流API。
11
2020
08

消费者API的作用是什么?

答:允许应用程序订阅一个或多个主题并处理生成给它们的记录流的API,我们称之为消费者API。
11
2020
08

解释多租户是什么?

答:我们可以轻松地将Kafka部署为多租户解决方案。但是,通过配置主题可以生成或使用数据,可以启用多租户。此外,它还为配额提供操作支持。
11
2020
08

什么是Kafka中的地域复制?

答:对于我们的集群,Kafka MirrorMaker提供地理复制。基本上,消息是通过MirrorMaker跨多个数据中心或云区域复制的。因此,它可以在主动/被动场景中用于备份和恢复;也可以将数据放在离用户更近的位置,或者支持数据位置要求。
11
2020
08

传统的消息传递方法有哪些类型?

答:基本上,传统的消息传递方法有两种,如:排队:这是一种消费者池可以从服务器读取消息并且每条消息转到其中一个消息的方法。发布-订阅:在发布-订阅中,消息被广播给所有消费者。
11
2020
08

解释Kafka可以接收的消息最大为多少?

答:Kafka可以接收的最大消息大小约为1000000字节。
11
2020
08

在Kafka集群中保留期的目的是什么?

答:保留期限保留了Kafka群集中的所有已发布记录。它不会检查它们是否已被消耗。此外,可以通过使用保留期的配置设置来丢弃记录。而且,它可以释放一些空间。
11
2020
08

你能用Kafka做什么?

答:它可以以多种方式执行,例如:>>为了在两个系统之间传输数据,我们可以用它构建实时的数据流管道。>>另外,我们可以用Kafka构建一个实时流处理平台,它可以对数据快速做出反应。
11
2020
08

Apache Kafka是分布式流处理平台吗?如果是,你能用它做什么?

答:毫无疑问,Kafka是一个流处理平台。它可以帮助:1.轻松推送记录2.可以存储大量记录,而不会出现任何存储问题3.它还可以在记录进入时对其进行处理。Apache Kafka对于新手的面试问题:11,13,14,16,17,18,19Apache Kafka对于有经验的人的面试问题:12,15,20
11
2020
08

Kafka和Flume之间的主要区别是什么?

答:Kafka和Flume之间的主要区别是:工具类型 Apache Kafka——Kafka是面向多个生产商和消费者的通用工具。 Apache Flume——Flume被认为是特定应用程序的专用工具。复制功能Apache Kafka——Kafka可以复制事件。Apache Flume——Flume不复制事件。
11
2020
08

解释Kafka Producer API的作用。

答:允许应用程序将记录流发布到一个或多个Kafka主题的API就是我们所说的Producer API。
11
2020
08

在生产者中,何时发生QueueFullException?

答:每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。
11
2020
08

启动Kafka服务器的过程是什么?

答:初始化ZooKeeper服务器是非常重要的一步,因为Kafka使用ZooKeeper,所以启动Kafka服务器的过程是:要启动ZooKeeper服务器:>bin/zooKeeper-server-start.sh config/zooKeeper.properties接下来,启动Kafka服务器:>bin/kafka-server-start.sh config/server.properties
11
2020
08

如果副本长时间不在ISR中,这意味着什么?

答:简单地说,这意味着跟随者不能像领导者收集数据那样快速地获取数据。
11
2020
08

为什么Kafka的复制至关重要?

答:由于复制,我们可以确保发布的消息不会丢失,并且可以在发生任何机器错误、程序错误或频繁的软件升级时使用。
11
2020
08

副本和ISR扮演什么角色?

答:基本上,复制日志的节点列表就是副本。特别是对于特定的分区。但是,无论他们是否扮演领导者的角色,他们都是如此。此外,ISR指的是同步副本。在定义ISR时,它是一组与领导者同步的消息副本。
11
2020
08

是什么确保了Kafka中服务器的负载平衡?

答:由于领导者的主要角色是执行分区的所有读写请求的任务,而追随者被动地复制领导者。因此,在领导者失败时,其中一个追随者接管了领导者的角色。基本上,整个过程可确保服务器的负载平衡。
11
2020
08

解释领导者和追随者的概念。

答:在Kafka的每个分区中,都有一个服务器充当领导者,0到多个服务器充当追随者的角色。
11
2020
08

什么是消费者或用户?

答:Kafka消费者订阅一个主题,并读取和处理来自该主题的消息。此外,有了消费者组的名字,消费者就给自己贴上了标签。换句话说,在每个订阅使用者组中,发布到主题的每个记录都传递到一个使用者实例。确保使用者实例可能位于单独的进程或单独的计算机上。Apache Kafka对于新手的面试问题:1,2,4,7,8,9,10Apache Kafka对于有经验的人的面试问题:3,5,6
11
2020
08

Kafka的主要API有哪些?

答:Apache Kafka有4个主要API:生产者API 消费者API 流 API 连接器API
11
2020
08

为什么Kafka技术很重要?

答:Kafka有一些优点,因此使用起来很重要: 高吞吐量:我们在Kafka中不需要任何大型硬件,因为它能够处理高速和大容量数据。此外,它还可以支持每秒数千条消息的消息吞吐量。低延迟:Kafka可以轻松处理这些消息,具有毫秒级的极低延迟,这是大多数新用例所要求的。容错:Kafka能够抵抗集群中的节点/机器故障。耐久性:由于Kafka支持消息复制,因此消息永远不会丢失。这是耐久性背后的原因之一。可扩展性:卡夫卡可以扩展,而不需要通过添加额外的节点而在运行中造成任何停机。
11
2020
08

没有ZooKeeper可以使用Kafka吗?

答:绕过Zookeeper并直接连接到Kafka服务器是不可能的,所以答案是否定的。如果以某种方式,使ZooKeeper关闭,则无法为任何客户端请求提供服务。
11
2020
08

ZooKeeper在Kafka中的作用是什么?

答:Apache Kafka是一个使用Zookeeper构建的分布式系统。虽然,Zookeeper的主要作用是在集群中的不同节点之间建立协调。但是,如果任何节点失败,我们还使用Zookeeper从先前提交的偏移量中恢复,因为它做周期性提交偏移量工作。
11
2020
08

什么是消费者组?

答:消费者组的概念是Apache Kafka独有的。基本上,每个Kafka消费群体都由一个或多个共同消费一组订阅主题的消费者组成。
11
2020
08

解释偏移的作用。

答:给分区中的消息提供了一个顺序ID号,我们称之为偏移量。因此,为了唯一地识别分区中的每条消息,我们使用这些偏移量。
11
2020
08

Kafka中有哪几个组件?

答:Kafka最重要的元素是:  主题:Kafka主题是一堆或一组消息。生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。消费者:Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。经纪人:在管理主题中的消息存储时,我们使用Kafka Brokers。
11
2020
08

什么是Apache Kafka?

答:Apache Kafka是一个发布 - 订阅开源消息代理应用程序。这个消息传递应用程序是用“scala”编码的。基本上,这个项目是由Apache软件启动的。Kafka的设计模式主要基于事务日志设计。
11
2020
08

Kafka中的消息是否会丢失和重复消费?

要确定Kafka的消息是否丢失或重复,从两个方面分析入手:消息发送和消息消费。1、消息发送         Kafka消息发送有两种方式:同步(sync)和异步(async),默认是同步方式,可通过producer.type属性进行配置。Kafka通过配置request.required.acks属性来确认消息的生产:0---表示不进行消息接收是否成功的确认;1---表示当Leader接收成功时确认;-1---表示Leader和Follower都
11
2020
08

kafka的message格式是什么样的

一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性,比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributes属性body是由N个字节构成的一个消息体,包含了具体的key/value消息
11
2020
08

如果leader crash时,ISR为空怎么办

kafka在Broker端提供了一个配置参数:unclean.leader.election,这个参数有两个值:true(默认):允许不同步副本成为leader,由于不同步副本的消息较为滞后,此时成为leader,可能会出现消息不一致的情况。false:不允许不同步副本成为leader,此时如果发生ISR列表为空,会一直等待旧leader恢复,降低了可用性。
11
2020
08

kafka unclean 配置代表啥,会对 spark streaming 消费有什么影响

unclean.leader.election.enable 为true的话,意味着非ISR集合的broker 也可以参与选举,这样有可能就会丢数据,spark streaming在消费过程中拿到的 end offset 会突然变小,导致 spark streaming job挂掉。如果unclean.leader.election.enable参数设置为true,就有可能发生数据丢失和数据不一致的情况,Kafka的可靠性就会降低;而如果unclean.leader.election.enabl
11
2020
08

kafka producer 打数据,ack 为 0, 1, -1 的时候代表啥, 设置 -1 的时候,什么情况下,leader 会认为一条消息 commit了

1(默认)  数据发送到Kafka后,经过leader成功接收消息的的确认,就算是发送成功了。在这种情况下,如果leader宕机了,则会丢失数据。0 生产者将数据发送出去就不管了,不去等待任何返回。这种情况下数据传输效率最高,但是数据可靠性确是最低的。-1 producer需要等待ISR中的所有follower都确认接收到数据后才算一次发送完成,可靠性最高。当ISR中所有Replica都向Leader发送ACK时,leader才commit,这时候producer才能认为一个请求中的消
11
2020
08

kafka producer如何优化打入速度

增加线程提高 batch.size增加更多 producer 实例增加 partition 数设置 acks=-1 时,如果延迟增大:可以增大 num.replica.fetchers(follower 同步数据的线程数)来调解;跨数据中心的传输:增加 socket 缓冲区设置以及 OS tcp 缓冲区设置。
11
2020
08

kafka 为什么那么快

Cache Filesystem Cache PageCache缓存顺序写 由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数情况下比随机写内存还要快。Zero-copy 零拷技术减少拷贝次数Batching of Messages 批量量处理。合并小的请求,然后以流的方式进行交互,直顶网络上限。Pull 拉模式 使用拉模式进行消息的获取消费,与消费端处理能力相符。
11
2020
08

什么情况下一个 broker 会从 isr中踢出去

leader会维护一个与其基本保持同步的Replica列表,该列表称为ISR(in-sync Replica),每个Partition都会有一个ISR,而且是由leader动态维护 ,如果一个follower比一个leader落后太多,或者超过一定时间未发起数据复制请求,则leader将其重ISR中移除 。
11
2020
08

kafka follower如何与leader同步数据

Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制。完全同步复制要求All Alive Follower都复制完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率。而异步复制方式下,Follower异步的从Leader复制数据,数据只要被Leader写入log就被认为已经commit,这种情况下,如果leader挂掉,会丢失数据,kafka使用ISR的方式很好的均衡了确保数据不丢失以及吞吐率。Follower可以批量的从Leader复制数据,而且Leader充分利用磁盘
11
2020
08

kafka中的 zookeeper 起到什么作用,可以不用zookeeper么

zookeeper 是一个分布式的协调组件,早期版本的kafka用zk做meta信息存储,consumer的消费状态,group的管理以及 offset的值。考虑到zk本身的一些因素以及整个架构较大概率存在单点问题,新版本中逐渐弱化了zookeeper的作用。新的consumer使用了kafka内部的group coordination协议,也减少了对zookeeper的依赖,但是broker依然依赖于ZK,zookeeper 在kafka中还用来选举controller 和 检测broker是
11
2020
08

什么是kafka

Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。
11
2020
08

Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么

ISR:In-Sync Replicas 副本同步队列AR:Assigned Replicas 所有副本ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度, 当前最新的版本0.10.x中只支持replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR, 存入OSR(Outof-Sync Repli
11
2020
08

为什么要使用 kafka,为什么要使用消息队列

缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。健壮性:消息队列可以堆积请求,所以消费端业务即使短
11
2020
08

大主宰句子

1、我牧尘恩怨分明,你帮了我,我自然会对你感激,否则的话,等我有能力了,一个都不会放过!2、那一霎,少年原本显得柔和灿烂的脸庞,却是陡然间有着一股冷峻的味道散发出来,那种冷峻之下,仿佛是一种刀锋般的冰寒与凌冽。那种感觉,犹如慵懒云层之中悄然涌动的惊蛰,不经意之间,露出锐利峥嵘。3、牧尘伸了一个懒腰,漆黑的眸子望向了天边的红霞,眸子深处,倒映着一道纤细柔软的倩影,她有着犹如银河般的银色长发以及犹如琉璃般清亮的双眸,那张以后必定会成为祸水级别的精巧小脸蛋,时常布满着拒人千里的冷漠,只不过他却是知道,
11
2020
08

有人惦记就是幸福句子

1,这个世界上比好吃的更让人幸福的、就是有人惦记着你饿肚子啦。2,什么是幸福?身体健康,能吃好睡好就是幸福。家人平安,就是幸福。有人惦记,便是幸福。能和在意的人一起享受生活苦与甜,那也是幸福。久别朋友能小聚,也是幸福。3,所谓幸福就是时刻有人惦记着你,无论她在哪里都会记得你。4,人这一生,最大的幸福就是有人对你好!整天惦记你的人,你要感动;增经帮助过你的人,你要感激;当下陪你的人,你要感谢;不管亲人朋友,还是爱人,都要记得感恩。5,怎么说呢,就是会想着你,不用很多,有人惦记有人想念,就是幸福本身
10
2020
08

准确率Accuracy的局限性分析

前提问题分析:Hulu的奢侈品用户广告主们希望把广告定向投放给奢侈品用户。Hulu通过第三方数据平台(DMP)拿到了一部分奢侈品用户的数据,并以此为训练集合测试集,训练和测试奢侈品用户的分类模型。该模型的分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非奢侈品用户,还肯能是什么原因造成的?准确率的局限性准确率是指分类正确的样本占总样本的比例:Accuarcy=Nc是正确分类的样本个数,Nt是总样本的个数准确率是样本分类问题中最简单也是最直观的评价指标。但存在明显的缺陷
10
2020
08

内存不足错误:杀掉进程、评估或杀掉子进程。

当空闲的虚拟内存被消耗时,会出现因为内存不足而杀掉进程或子进程的错误,从而危及整个操作系统的稳定性。在这种情况下,“内存不足杀手”(“Out of memorykiller)或OOM杀手调用oom_kill_task()函数,向所选进程发送中止(terminate)/结束(kill)信号。这并不总是有害的,它是一个典型的Linux错误,毕竟Linux内核允许进程请求的内存量超出系统可用内存,因为大多数进程从未真正用完过所请求的内存量。但是如果所有进程都请求所需的内存呢?这时系统就会内存不足,错误
10
2020
08

Python是如何解释语言的?

Python在运行之前不需要对程序进行解释。因此,Python是一种解释型语言。
10
2020
08

Python是通用编程语言吗?

Python能够编写脚本,但从一般意义上讲,它被认为是一种通用编程语言。
10
2020
08

机器中为什么会有leader?

在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader选举。
08
2020
08

直接将时间戳作为行健,在写入单个 region 时候会发生热点问题,为什么呢?

region 中的 rowkey 是有序存储,若时间比较集中。就会存储到一个 region 中,这样一个 region 的数据变多,其它的 region 数据很少,加载数据就会很慢,直到 region 分裂,此问题才会得到缓解。 
08
2020
08

如何提高 HBase 客户端的读写性能?请举例说明

1 开启 bloomfilter 过滤器,开启 bloomfilter 比没开启要快 3、4 倍2 Hbase 对于内存有特别的需求,在硬件允许的情况下配足够多的内存给它3 通过修改 hbase-env.sh 中的export HBASE_HEAPSIZE=3000 #这里默认为 1000m4 增大 RPC 数量通过修改 hbase-site.xml 中的 hbase.regionserver.handler.count 属性,可以适当的放大RPC 数量,默认值为 10 有点小。
08
2020
08

HBase 在进行模型设计时重点在什么地方?一张表中定义多少个 Column Family 最合适?为什么?

Column Family 的个数具体看表的数据,一般来说划分标准是根据数据访问频度,如一张表里有些列访问相对频繁,而另一些列访问很少,这时可以把这张表划分成两个列族,分开存储,提高访问效率。
08
2020
08

Region 如何预建分区?

预分区的目的主要是在创建表的时候指定分区数,提前规划表有多个分区,以及每个分区的区间范围,这样在存储的时候 rowkey 按照分区的区间存储,可以避免 region 热点问题。通常有两种方案:方案 1:shell 方法create 'tb_splits', {NAME => 'cf',VERSIONS=> 3},{SPLITS => ['10','20','30']}方案 2: JAVA 程序控制·
08
2020
08

描述 HBase 的 rowKey 的设计原则?

① Rowkey 长度原则Rowkey 是一个二进制码流,Rowkey 的长度被很多开发者建议说设计在 10~100 个字节,不过建议是越短越好,不要超过 16 个字节。原因如下:(1)数据的持久化文件 HFile 中是按照 KeyValue 存储的,如果 Rowkey 过长比如 100个字节,1000 万列数据光 Rowkey 就要占用 100*1000 万=10 亿个字节,将近 1G 数据,这会极大影响 HFile 的存储效率;(2)MemStore 将缓存部分数据到内存,如果 Rowkey
08
2020
08

HBase 适用于怎样的情景?

① 半结构化或非结构化数据② 记录非常稀疏③ 多版本数据④ 超大数据量
08
2020
08

HBase 的特点是什么?

1)大:一个表可以有数十亿行,上百万列;2)无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;3)面向列:面向列(族)的存储和权限控制,列(族)独立检索;4)稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;5)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;6)数据类型单一:Hbase 中的数据都是字符串,没有类型。
08
2020
08

移动端的布局用过媒体查询吗?

通过媒体查询可以为不同大小和尺寸的媒体定义不同的css,适应相应的设备的显示。<head>里边<link rel="stylesheet" type="text/css" href="xxx.css" media="only screen and (max-device-width:480px)">CSS : @media only screen and (max-device-width:4
08
2020
08

上下margin重合的问题

在重合元素外包裹一层容器,并触发该容器生成一个BFC。例子:<div class="aside"></div><div class="text">    <div class="main"></div></div><!--下面是css代码--> .aside {        &nbs
08
2020
08

protobuf为何不能修改字段

Protobuf使用protoc生成的java类, 这个类一旦创建了对象,该对象就是只读的,不能修改它的任何属性,也就是说这个类是只读类。Protobuf使用builder来构建对象,构建过程中为设置对象属性值,设置完后,builder本次任务已经完结了。据下面的例子来说明一下:用户类:public class User {    private String userName;    private int age;    publi
07
2020
08

Protobuf3和protobuf2比,更新的内容

1.字段前取消了required和optional两个关键字,目前可用的只有repeated关键字。2.不可以现设置默认值了。  a.string默认为空串  b.枚举默认为第一个枚举定义的第一个值。并且必须是0,且为无效值,所有有意义的值请不要定义成0值  c.bytes默认为空bytes  d.bool默认为false  e.数字类型默认为0注意点:当你设置了message的变量等于 默认值时,序列化后是不占用空间的举例如下message LogoutResponse{uint32 resu
07
2020
08

C++ stream 序列化和反序列化API

//C++ stream 序列化/反序列化APIbool SerializeToOstream(ostream* output) const;bool ParseFromIstream(istream* input); //使用:void set_people(){    fstream fs(path,ios::out|ios::trunc|ios::binary);    wp.set_name("sealyaog");&
07
2020
08

文件描述符序列化和反序列化API

 //文件描述符的序列化和序列化API bool SerializeToFileDescriptor(int file_descriptor) const; bool ParseFromFileDescriptor(int file_descriptor);  //使用:void set_people(){    fd = open(path,O_CREAT|O_TRUNC|O_RDWR,0644);   
07
2020
08

C++ String的序列化和反序列化API

//C++string序列化和序列化APIbool SerializeToString(string* output) const;bool ParseFromString(const string& data);//使用:void set_people()             {    wp.set_name("sealyao");     &
07
2020
08

C数组的序列化和反序列化API

//C数组的序列化和序列化APIbool ParseFromArray(const void* data, int size);bool SerializeToArray(void* data, int size) const;//使用void set_people()             {    wp.set_name("sealyao");    
07
2020
08

如何配置在 Spring 中配置使用 Shiro

1、在 web.xml 中配置 Shiro 的 Filter2、在 Spring 的配置文件中配置 Shiro3、配置自定义 Realm:实现自定义认证和授权4、配置 Shiro 实体类使用的缓存策略5、配置 SecurityManager6、配置保证 Shiro 内部 Bean 声明周期都得到执行的 Lifecycle Bean 后置处理器7、配置AOP 式方法级权限检查8、配置 Shiro Filter
03
2020
08

事件发射器如何在Angular 2中工作的?

Angular 2不具有双向digest cycle,这是与Angular 1不同的。在Angular2中,组件中发生的任何改变总是从当前组件传播到其所有子组件中。如果一个子组件的更改需要反映到其父组件的层次结构中,我们可以通过使用事件发射器api来发出事件。简而言之,EventEmitter是在@ angular/core模块中定义的类,由组件和指令使用,用来发出自定义事件。
03
2020
08

解释Angular 2应用程序的生命周期hooks是什么?

Angular 2组件/指令具有生命周期事件,是由@angular/core管理的。@angular/core会创建组件,渲染它,创建并呈现它的后代。当@angular/core的数据绑定属性更改时,处理就会更改,在从DOM中删除其模板之前,就会销毁掉它。Angular提供了一组生命周期hooks(特殊事件),可以被分接到生命周期中,并在需要时执行操作。构造函数会在所有生命周期事件之前执行。每个接口都有一个前缀为ng的hook方法。例如,ngOnint界面的OnInit方法,这个方法必须在组件中
03
2020
08

设置base href 标签的作用?

angular路由器使用base href 作为组件、模板的基地址,开发期间,通常会在index.html所在目录中启动服务器,所以这个目录就是根目录,所以可以在index.html 的顶部添加<base href="/">。当没有配置base标签时,加载应用会失败。
03
2020
08

怎样在组件中选择一个元素?

 在组件的constructor中引入 ElementRef 来操作DOM元素constructor(myElement: ElementRef) { ... } 
03
2020
08

单页面应用和传统的web技术有什么不同?

在传统的web技术中,客户端请求一个web页面(HTML/JSP/asp),服务器返回资源(或HTML页面),客户端再次请求另一个页面,服务器用另一个资源响应。问题就在于请求/响应中消耗了大量时间,或者是重新加载使用了大量时间。而在SPA技术中,即使URL不断变化,我们也只维护一个页面(index.HTML)。
03
2020
08

使用spring事件的好处?

1、单一职责原则、代码耦合降低、事件的处理人员只需关注处理的代码、发布人员只需关注发布的代码;2、即可同步 也可异步;
03
2020
08

请解释一下spring中的IOC?

spring中的IoC容器是由spring的 org.springframework.beans 包和 org.springframework.context 包构成的。BeanFactory 接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。ApplicationContex 接口对 BeanFactory(是一个子接口)进行了扩展,在 BeanFactory的基础上添加了其他功能,比如与 Spring 的 AOP 更容易集成,也提供了处理 message resource的机制
03
2020
08

什么是IOC?什么是DI?

控制反转是一种思想,将对象的创建、注入、销毁交给spring容器帮我们去做,就是把对象的控制权交给了springIOC容器,开发人员不必去考虑如何进行依赖的注入,而使得代码维护更加容易。不至于出现一处属性的修改,而导致的“牵一发而动全身”。依赖注入是IOC的实现方式,即一个类内部的依赖不再由类内部创建,而在类外部进行创建并进行注入。这就是springIOC思想的具体实现。在 Java 中依赖注入有以下三种实现方式:构造器注入Setter 方法注入接口注入