30
2020
10

说明异步请求的get和post方法的区别

1.使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来2.使用Get请求发送数据量小,Post请求发送数据量大get 请求:post 请求:
30
2020
10

如何转化成JSON字符串

JSON.stringify(json)
30
2020
10

JSON数据的解析方法

1.JSON.parse(json)2.new Function(“return ” + json) (); 3.eval(“(”+json+”)”)
30
2020
10

AJAX实现表单验证用户注册流程

用户触发ajax请求,后台接口返回json格式字符串
30
2020
10

AJAX能够处理哪些格式的文件

https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequestXMLHttpRequest 2.0 新增了多种类型支持txt,json,js,图片,文档等等…
30
2020
10

AJAX如何调用JSON数据

答:xml.responseText
30
2020
10

AJAX的流程是什么?

1.客户端产生js的事件2.创建XMLHttpRequest对象3.对XMLHttpRequest进行配置4.通过AJAX引擎发送异步请求5.服务器端接收请求并且处理请求,返回html或者xml内容6.XML调用一个callback()处理响应回来的内容7.页面局部刷新
30
2020
10

AJAX中的跨域问题:什么是跨域?如何解决跨域问题?

答:域不一样的,即为跨域,包括(协议,域名,端口号)1.// 指定允许其他域名访问header(‘Access-Control-Allow-Origin:*’);2.使用jsonp
30
2020
10

除了AJAX还有什么模板可以与后台交互

jsonp
28
2020
10

什么是JSON,JSON的格式

答:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 语法是 JavaScript 对象表示语法的子集。数据在键值对中数据由逗号分隔花括号保存对象方括号保存数组
28
2020
10

使用异步加载获取JS数据至少两种方法?

答:post,get
28
2020
10

什么是AJAX ,AJAX原理

答:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。原理:XMLHttpRequest
28
2020
10

如何实现局部内容和后台交互时的变化

答:使用ajax
28
2020
10

你使用过哪些Javascript库?

答:jQuery Zepto(注意了:面试官可能问你这2个库都什么区别)jQuery是在Web上应用很广泛的JavaScript库,它提供了大量的工具和API函数,使用它的人相当普遍,使用的门槛也比较低。Zepto最初是为移动端开发的库,是jQuery的轻量级替代品,因为它的API和jQuery相似,而文件更小,对任何项目都是个不错的选择,Zepto是不支持IE浏览器。针对移动端程序,Zepto还有一些基本的触摸事件可以用来做触摸屏交互,如:tap事件——tap,singleTap,double
28
2020
10

编写一个jQuery的扩展方法(插件),让调用的对象设置宽度为200像素

jQuery.fn.extend({setWidth:function() {$(this).width(200);return this;}})
28
2020
10

用jQuery获取标签

div内部的信息当中的内容的代码为______? 答:$(“#con”).text()
28
2020
10

举出不少于6种的jQuery中对动画的操作命令,并说明其含义:_________、_________、_________、_________、_________、_________

28
2020
10

jQuery中的两个合成事件是_________和__________

答:toggle、hover
28
2020
10

jQuery动画效果的实现

答:$ele().animate({top:100},500)
28
2020
10

jQuery中对于节点的操作有哪些(举出不少于8种)?写出含义以及用法。

28
2020
10

jQuery中获取相对文档的坐标的方法是什么?

答:offset(),获取匹配元素在当前视口的相对偏移。返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效。position()获取匹配元素相对定位父级的偏移。没有定位父级即为文档坐标返回的对象包含两个整型属性:top 和 left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效。
28
2020
10

jQuery中绑定事件的方法是什么,尝试书写例子:为id名为con的div绑定一个事件,事件为弹出一个数字0。获取标签时不要使用原生javascript方法。

答:$(“#con”).click(function(){alert(0)})
27
2020
10

jQuery中对动画的操作命令有哪些?举出不少于8种,并说明含义

animate(),fadeIn(),fadeOut(),slideDown(),slideUp(),hide(),show(),toggle()
27
2020
10

使用jQuery中的链式书写方法书写如下代码

$(“#test”).css(“color”,”red”).width(20)
27
2020
10

jQuery中,使用nth-child(3n+2)所选中的是以下哪些

nth-child()匹配其父元素下的第N个子或奇偶元素‘:eq(index)’ 只匹配一个元素,而这个将为每一个父元素匹配子元素。:nth-child从1开始的,而:eq()是从0算起的2,5,8
27
2020
10

jQuery中 :odd :gt 这两种选择器的含义以及用法举例

:odd 匹配所有索引值为奇数的元素,从 0 开始计数 $(“div:odd”):gt(index) 匹配所有大于给定索引值的元素 $(“div:gt(2)”)
27
2020
10

列举jQuery的优势

答:兼容性处理,dom操作,获取元素简单,封装了ajax…
27
2020
10

(document).ready与window.onload有何区别?

答:(document).ready 对于支持DOMContentLoaded事件的浏览器,会使用该事件,所有的节点渲染完毕,就执行,可以调用多次,不支持的就使用 onload事件window.onload事件要等到所有的资源加载完毕,如图片,视频,js脚本等,只能绑定一次,后面绑定的覆盖前面所绑定的事件
27
2020
10

jQuery中,如何阻止事件冒泡和浏览器默认行为?

答:e.preventDefault();e.stopPropagation();
27
2020
10

用jQuery如何更换背景色

答:$(element).css({backgroundColor:”red”})
27
2020
10

用jQuery如何获取标签内容

答: ( e l e m e n t ) . t e x t ( ) / (element).text()/ (element).text()/(element).html();
27
2020
10

用jQuery如何获取标签

答:$(“div”)
27
2020
10

用jQuery如何获取标签的id

答:$(element).attr(“id”)
27
2020
10

JQuery链式写法原理

答:jQuery里的方法调用完毕返回return this
27
2020
10

jQuery如何获取元素?

答:$(selector)
27
2020
10

Js用过的插件

答:tween.js,swiper.js,touch.js,zepto.js
27
2020
10

jQuery对象和Dom对象相互转换

答:jQuery对象转原生Dom对象 $(“div”).get(0)原生Dom对象转jQuery对象 $(ele)
27
2020
10

jQuery绑定事件的方法书写至少两种?

答:bind(),on(),click()
27
2020
10

反向代理

答: 反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。理解起来有些抽象,可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。
27
2020
10

说一下什么是垃圾回收

(补充:JavaScript 中的内存管理是自动执行的,而且是不可见的。我们创建基本类型、对象、函数……所有这些都需要内存。当不再需要某样东西时会发生什么? JavaScript 引擎是如何发现并清理它?)答:(1)垃圾回收概述回答一: 垃圾回收机制(GC:Garbage Collection),执行环境负责管理代码执行过程中使用的内存。垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。
27
2020
10

es6面向对象

答:使用关键词class定义类来实现面向对象编程
27
2020
10

es5的面向对象

说出特点就好答:特点:抽象、封装、继承、多态继承的三种方式:(1)原型链继承;(2)call和play继承;(3)call和play组合继承
27
2020
10

解决跨域的方法

答:(1)通过jsop解决跨域(2)通过修改document.domain来跨子域(3)使用window.name来进行跨域(4)使用HTML5中新引进的window.postMessage方法来跨域
27
2020
10

事件委托

答:利用事件冒泡的原理,子元素的事件会冒泡到父元素,可以只给父元素添加事件,通过事件目标判断元素。优点:节省内存,动态添加的子元素也包含事件
27
2020
10

说一下事件冒泡、事件捕获的区别

这个问题和事件流回答一样即可先说下什么是事件流吧!!!事件流:事件流分为三个阶段(1)捕获阶段(2)目标阶段(3)冒泡阶段捕获过程:1.window——>2.document——>3.body——>4.div——>5.text目标过程:捕获过程的5冒泡过程:6.text——>7.div——>8.body——>9.document——>10.window事件捕获:首先window会捕获到事件,之后document、documentElement、bo
27
2020
10

描述一下对"异步"和"同步的理解"

答:异步:不按顺序执行,同一时刻只能执行一个事件同步:按顺序执行,同一时刻只能执行一个事件
27
2020
10

闭包

答:函数嵌套函数,内部函数使用外部函数的变量或者参数,使其长期驻扎在内存中,就形成了闭包!!!缺点:容易引起内存泄漏使用场景:(1)变量私有化(2)onclick(操作DOM元素是需要相应的索引值)
27
2020
10

说一下html5的离线储存

答:(主要问的是localStorage和sessionStorage)(1)localStorage长期储存在数据,浏览器关闭后数据不会丢失。(2)sessionStorage数据在浏览器关闭后自动删除。
27
2020
10

::before和:after中双冒号和单冒号有什么区别(这个不是常问的!!!)

先解释一下这两个伪元素,本质上并不支持伪元素的双冒号(::)写法,而是忽略掉了其中的一个冒号,仍以单引号来解释,所以等同变相支持了::before答:在before元素前面,after元素的后面插入内容(经典场景使用font-face小图标结合content:" ")
27
2020
10

position:fixed,在Android下无效怎么处理

答:使用JS处理判断当前设备是否是Android,如果是则添加监听当前页面滚动情况,设置position:absolute,不断改变top值。
27
2020
10

css定义的权重

答:标签权重为1、class权重为10、id权重为100、style权重为1000
27
2020
10

css优化、提高性能的方法有哪些

答:(1)加载性能(2)选择器性能(3)渲染性能(4)可维护性
27
2020
10

说一下怎么减少页面加载时间的方法

答:(1)压缩css、js文件(2)合并js、css文件,减少http请求(3)外部js、css文件放在最底下(4)减少dom操作,尽可能用变量替代不必要的dom操作
27
2020
10

描述一下cookies,sessionStorage和localStorage的区别

答:(1)cookies在浏览器和服务器间来回传递,sessionstorage和localStorage不会。(2)sessionStorage和localStorage的存储空间更大。(3)sessionStorage和localStorage有更多丰富易用的接口。(4)sessionStorage和localStorage各自独立的存储空间。
27
2020
10

rem,px,em之间的关系和区别

答:px实际上就是像素,用PX设置字体大小时,比较稳定和精确。但是px不支持用户进行浏览器缩放或者不同移动端的兼容,因为像素是固定的,屏幕大小是变化的。em是根据父元素来对应大小,是一种相对值;em值 = 1/父元素的font-size*需要转换的像素值。进行任何元素设置,都有可能需要知道他父元素的大小,这很不方便。rem是根据根元素html的font-size来对应大小,1rem = 16px,可以在根元素html中写固定像素也可以写百分比,然后在具体的标签上设置rem。
27
2020
10

说一下对css盒模型的理解

答:css盒子模型 又称框模型 (Box Model) ,包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。盒模型有两种:标准盒模型和IE盒模型。标准盒模型中width和height指的是内容区域的宽度和高度,增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸;但在IE6浏览器的width不是内容的宽度,而是内容、内边距和边框的宽总和;IE的content部分包含了border和padding。
23
2020
10

什么是设计模式?你是否在你的代码里面使用过任何设计模式?

 设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸。
23
2020
10

请列举出在JDK中几个常用的设计模式?

单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中; 工厂模式(Factory pattern)被用于各种不可变的类如 Boolean,像Boolean.valueOf; 观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中; 装饰器设计模式(Decorator design pattern)被用于多个 Java IO 类中。
23
2020
10

如何综合使用我们学过的设计模式来构建合理的应用程序结构

是采用接口进行隔离,然后同时暴露值对象和工厂类,如果是需要数据存储的功能,又会通过DAO 模式去与数据存储层交互。
23
2020
10

什么是替换法则(LSP)

 使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用
23
2020
10

什么是开放-封闭法则(OCP)

 可扩展但是不可以更改已有的模块 对扩展是开放的 对修改是封闭
23
2020
10

代码示例:DAO模式的实现方法

public interface CustomerDAO {public int insertCustomer(...);public Collection selectCustomersVO(...);}
23
2020
10

简述什么是DAO模式,以及他解决的问题,应用的环境,解决的方案,模式的本质

 数据访问对象 解决问题:根据数据源不同,数据访问也不同。根据存储的类型(关系数据库、 面向对象数据库、纯文件等)和供应商实现不同,持久性存储(如数据库)的访问差别也很大。如何对存储层以外的模块屏蔽这些复杂性,以提供统一的调用存储实现。程序的分布式问题 解决方案:式将数据访问逻辑抽象为特殊的资源,也就是说将系统资源的接口从 其底层访问机制中隔离出来;通过将数据访问的调用打包,数据访问对象可以 促进对于不同数据库类型和模式的数据访问。 DAO的本质就是一层屏蔽一种变化 本质:分层,是系统
23
2020
10

代码示例:值对象模式的实现方法

public class UserModel{    private String userId;    private String userName;    public void setUserId(String id){        this.userId = id;    }    public String getUserId(){ 
23
2020
10

简述什么是值对象模式,以及他解决的问题,应用的环境,解决的方案,模式的本质

用来把一组数据封装成一个对象的模式 解决问题:在远程方法的调用次数增加的时候,相关的应用程序性能将会有很大的下降 解决方案:使用值对象的时候,可以通过仅仅一次方法调用来取得整个对象,而不是使用多次方法调用以得到对象中每个域的数值 本质:就是把需要传递的多个值封装成一个对象一次性传过去
23
2020
10

简述什么是工厂模式,以及他解决的问题,应用的环境,解决的方案,模式的本质

利用工厂来解决接口选择的问题的模式 应用环境:当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定 创建的对象时,就需要用到工厂模式 解决方案:定义一个创建对象的接口,让子类来决定具体实例化哪一个类 本质就是根据不同的情况来选择不同的接口
23
2020
10

简述什么是单例模式,以及他解决的问题,应用的环境,解决的方案,模式的本质

在任何时间内只有一个类实例存在的模式,需要有一个从中进行全局访问和维护某种类型数据的区域的环境下使用单例模式,解决方案就是保证一个类只有一个类实例存在,本质就是实例共用同一块内存区域
23
2020
10

设计模式的应用范围

所能解决的特定的一类问题中
23
2020
10

基本的Java编程设计应遵循的规则?

面向接口编程,优先使用对象组合
23
2020
10

什么是对象粒度?

 对象中方法的多少就是粒度
23
2020
10

设计模式用来干什么?

 寻找合适的对象 决定对象的粒度 指定对象的接口 描述对象的实现 运用复用机制 重复使用经过实践验证的正确的,用来解决某一类问题的解决方案来达到减少工作量、提高正确率等目的
23
2020
10

什么是设计模式?

 就是经过实践验证的用来解决特定环境下特定问题的解决方案
22
2020
10

Tomcat顶层架构小结

(1)Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container; (2) Server掌管着整个Tomcat的生死大权; (3)Service 是对外提供服务的; (4)Connector用于接受请求并将请求封装成Request和Response来具体处理; (5)Container用于封装和管理Servlet,以及具体处理request请求。
22
2020
10

你平时怎么给tomcat调优?

第一步  – 提高JVM栈内存Increase JVM heap memory你使用过tomcat的话,简单的说就是“内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过配置TOmcat的配置文件(Windows 下的catalina.bat或Linux下的catalina.sh)可以解决这种问题.这种解决方法是通过增加JVM的栈内存实现的.也就是说,JVM通常不去调用垃圾回收器,所以服务器可以更多关注处理web请求,并要
22
2020
10

tomcat有哪几种Connector运行模式?

Tomcat Connector有三种运行模式(BIO, NIO, APR)这三种模式的不同之处如下:BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动:<Connector port="8080" protocol=&quo
22
2020
10

请解释servlet如何完成生命周期?

第一次访问Servlet,我们发现init()和service()都被调用了第二次访问Servlet,service()被调用了第三次访问Servlet,还是service()被调用了当我们关闭Tomcat服务器的时候,destroy()被调用了!Servlet生命周期可分为5个步骤加载Servlet。当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例;初始化。当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象;处理服务。当浏览器访
22
2020
10

请解释将Tomcat作为一个Windows 服务运行会带来哪些好处?

1)自动启动:对于需要在维护后远程重新启动系统的环境来说,这是至关重要的;2)启动无活动用户登录的服务器:Tomcat通常在刀片服务器上运行,这些服务器甚至可能没有一个活动监视器,Windows服务可以在没有活动用户的情况下启动;3)安全性:在Windows服务下的Tomcat可以让您在一个特殊的系统帐户下运行它,这个账户可以从其他用户帐户中得到保护。
22
2020
10

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

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

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

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

Spring 中都使用了哪些设计模式?

答:Spring 框架使用的设计模式如下。代理模式:在 AOP 中有使用单例模式:bean 默认是单例模式模板方法模式:jdbcTemplate工厂模式:BeanFactory观察者模式:Spring 事件驱动模型就是观察者模式很经典的一个应用,比如,ContextStartedEvent 就是 ApplicationContext 启动后触发的事件适配器模式:Spring MVC 中也是用到了适配器模式适配 Controller
21
2020
10

IO 使用了什么设计模式?

答:IO 使用了适配器模式和装饰器模式。适配器模式:由于 InputStream 是字节流不能享受到字符流读取字符那么便捷的功能,借助 InputStreamReader 将其转为 Reader 子类,因而可以拥有便捷操作文本文件方法;装饰器模式:将 InputStream 字节流包装为其他流的过程就是装饰器模式,比如,包装为 FileInputStream、ByteArrayInputStream、PipedInputStream 等。
21
2020
10

JDK 类库常用的设计模式有哪些?

答:JDK 常用的设计模式如下:1)工厂模式java.text.DateFormat 工具类,它用于格式化一个本地日期或者时间。public final static DateFormat getDateInstance();public final static DateFormat getDateInstance(int style);public final static DateFormat getDateInstance(int style,Locale locale);加密类KeyG
21
2020
10

什么是适配器模式?

答:适配器模式是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。优点:可以让两个没有关联的类一起运行,起着中间转换的作用;灵活性好,不会破坏原有的系统。缺点:过多地使用适配器,容易使代码结构混乱,如明明看到调用的是 A 接口,内部调用的却是 B 接口的实现。以生活中的例子来说,比如有一个充电器是 MicroUSB 接口,而手机充电口却是 TypeC 的,这个时候就需要一个把 MicroUSB 转换成 TypeC 的适配器,如下图所示:适配器
21
2020
10

什么是策略模式?

答:策略模式是指定义一系列算法,将每个算法都封装起来,并且使他们之间可以相互替换。优点:遵循了开闭原则,扩展性良好。缺点:随着策略的增加,对外暴露越来越多。以生活中的例子来说,比如我们要出去旅游,选择性很多,可以选择骑车、开车、坐飞机、坐火车等,就可以使用策略模式,把每种出行作为一种策略封装起来,后面增加了新的交通方式了,如超级高铁、火箭等,就可以不需要改动原有的类,新增交通方式即可,这样也符合软件开发的开闭原则。 策略模式实现代码如下:/\* \* 声明旅行 \*/interface ITri
21
2020
10

什么是代理模式?

代理模式是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。优点:代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度;可以灵活地隐藏被代理对象的部分功能和服务,也增加额外的功能和服务。缺点:由于使用了代理模式,因此程序的性能没有直接调用性能高;使用代理模式提高了代码的复杂度。举一个生活中的例子:比如买飞机票,由于离飞机场太远,直接去飞机场买票不太现实,这个时候我们就可以上携程 App 上购买飞机票,这个时候携程 App 就相当于是飞机票的代理商。代理模式实现代码如下:/\*
21
2020
10

什么是模板方法模式?

答:模板方法模式是指定义一个模板结构,将具体内容延迟到子类去实现。优点:提高代码复用性:将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中;实现了反向控制:通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制并且符合开闭原则。以给冰箱中放水果为例,比如,我要放一个香蕉:开冰箱门 → 放香蕉 → 关冰箱门;如果我再要放一个苹果:开冰箱门 → 放苹果 → 关冰箱门。可以看出它们之间的行为模式都是一样的,只是存放的水果品类不同而已,这个时候就非常适用模板方法模
21
2020
10

什么是装饰器模式?

答:装饰器模式是指动态地给一个对象增加一些额外的功能,同时又不改变其结构。优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。装饰器模式的关键:装饰器中使用了被装饰的对象。比如,创建一个对象“laowang”,给对象添加不同的装饰,穿上夹克、戴上帽子......,这个执行过程就是装饰者模式,实现代码如下。1)定义顶层对象,定义行为interface IPerson {    void show();}2)定义装
21
2020
10

什么是观察者模式?

观察者模式是定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 优点:观察者模式可以实现表示层和数据逻辑层的分离,并定义了稳定的消息更新传递机制,抽象了更新接口,使得可以有各种各样不同的表示层作为具体观察者角色;观察者模式在观察目标和观察者之间建立一个
21
2020
10

什么是抽象工厂模式?

答:抽象工厂模式是在简单工厂的基础上将未来可能需要修改的代码抽象出来,通过继承的方式让子类去做决定。比如,以上面的咖啡工厂为例,某天我的口味突然变了,不想喝咖啡了想喝啤酒,这个时候如果直接修改简单工厂里面的代码,这种做法不但不够优雅,也不符合软件设计的“开闭原则”,因为每次新增品类都要修改原来的代码。这个时候就可以使用抽象工厂类了,抽象工厂里只声明方法,具体的实现交给子类(子工厂)去实现,这个时候再有新增品类的需求,只需要新创建代码即可。抽象工厂实现代码如下:public class Abstr
21
2020
10

什么是简单工厂模式?

答:简单工厂模式又叫静态工厂方法模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。比如,一台咖啡机就可以理解为一个工厂模式,你只需要按下想喝的咖啡品类的按钮(摩卡或拿铁),它就会给你生产一杯相应的咖啡,你不需要管它内部的具体实现,只要告诉它你的需求即可。优点:工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象;客户端无须知道所创建
21
2020
10

什么是单例模式?

答:单例模式是一种常用的软件设计模式,在应用这个模式时,单例对象的类必须保证只有一个实例存在,整个系统只能使用一个对象实例。优点:不会频繁地创建和销毁对象,浪费系统资源。使用场景:IO 、数据库连接、Redis 连接等。单例模式代码实现:class Singleton {    private static Singleton instance = new Singleton();    public static Singleton getInstanc
21
2020
10

说一下设计模式?你都知道哪些?

答:设计模式总共有 23 种,总体来说可以分为三大类:创建型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )。**分类** **包含** **关注点**     创建型模式 工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式 关注于对象的创建,同时隐藏创建逻辑   结构型模式 适配器模式、过滤器模式、装饰模式、享元模式、代理模式、外观模式、组合模
21
2020
10

说说线程池的拒绝策略

当请求任务不断的过来,而系统此时又处理不过来的时候,我们需要采取的策略是拒绝服务。RejectedExecutionHandler接口提供了拒绝任务处理的自定义方法的机会。在ThreadPoolExecutor中已经包含四种处理策略。AbortPolicy策略:该策略会直接抛出异常,阻止系统正常工作。CallerRunsPolicy 策略:只要线程池未关闭,该策略直接在调用者线程中,运行当前的被丢弃的任务。DiscardOleddestPolicy策略: 该策略将丢弃最老的一个请求,也就是即将被
21
2020
10

线程池中的几种重要的参数

corePoolSize就是线程池中的核心线程数量,这几个核心线程,只是在没有用的时候,也不会被回收maximumPoolSize就是线程池中可以容纳的最大线程的数量keepAliveTime,就是线程池中除了核心线程之外的其他的最长可以保留的时间,因为在线程池中,除了核心线程即使在无任务的情况下也不能被清                           &nbs
21
2020
10

说说几种常见的线程池及使用场景

1、newSingleThreadExecutor创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。2、newFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。3、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。4、newScheduledThreadPool创建一个定长线程池,支持定时及周期
21
2020
10

线程池有什么作用?

线程池作用就是限制系统中执行线程的数量。1、提高效率 创建好一定数量的线程放在池中,等需要使用的时候就从池中拿一个,这要比需要的时候创建一个线程对象要快的多。2、方便管理 可以编写线程池管理代码对池中的线程同一进行管理,比如说启动时有该程序创建100个线程,每当有请求的时候,就分配一个线程去工作,如果刚好并发有101个请求,那多出的这一个请求可以排队等候,避免因无休止的创建线程导致系统崩溃。
21
2020
10

什么是线程池?

线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行交由线程池来管理。如果每个请求都创建一个线程去处理,那么服务器的资源很快就会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 
21
2020
10

为什么要使用线程池?

创建线程和销毁线程的花销是比较大的,这些时间有可能比处理业务的时间还要长。这样频繁的创建线程和销毁线程,再加上业务工作线程,消耗系统资源的时间,可能导致系统资源不足。(我们可以把创建和销毁的线程的过程去掉)
21
2020
10

为什么不建议使用 Executors静态工厂构建线程池

阿里巴巴Java开发手册,明确指出不允许使用Executors静态工厂构建线程池原因如下:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险说明:Executors返回的线程池对象的弊端如下:1:FixedThreadPool 和 SingleThreadPool:允许的请求队列(底层实现是LinkedBlockingQueue)长度为Integer.MAX_VALUE,可能会堆积大量
20
2020
10

ThreadLocal使用的一般步骤

1、在多线程的类(如ThreadDemo类)中。创建一个ThreadLocal对象threadXxx,用来保存线程间须要隔离处理的对象xxx。2、在ThreadDemo类中。创建一个获取要隔离访问的数据的方法getXxx(),在方法中推断,若ThreadLocal对象为null时候,应该new()一个隔离訪问类型的对象,并强制转换为要应用的类型。3、在ThreadDemo类的run()方法中。通过getXxx()方法获取要操作的数据。这样能够保证每一个线程相应一个数据对象,在不论什么时刻都操作的
20
2020
10

一次完整的HTTP请求所经历的7个步骤

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建 Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则, 只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。We
20
2020
10

HTTPS工作原理

一、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;二、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);三、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;四、发送给服务端,此时只有服务端(RSA私钥)能解密。五、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。
20
2020
10

HTTP请求报文与响应报文格式

请求报文包含四部分:a、请求行:包含请求方法、URI、HTTP版本信息b、请求首部字段c、请求内容实体d、空行响应报文包含四部分:a、状态行:包含HTTP版本、状态码、状态码的原因短语b、响应首部字段c、响应内容实体d、空行常见的首部:通用首部字段(请求报文与响应报文都会使用的首部字段)Date:创建报文时间Connection:连接的管理Cache-Control:缓存的控制Transfer-Encoding:报文主体的传输编码方式请求首部字段(请求报文会使用的首部字段)Host:请求资源所在
20
2020
10

URI和URL的区别

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的URI一般由三部组成:     ①访问资源的命名机制     ②存放资源的主机名     ③资源自身的名称,由路径表示,着重强调于资源。URL是uniform resource locator,统一资源定位器,它是一种具
20
2020
10

什么是Http协议无状态协议?怎么解决Http协议无状态协议?

无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。
20
2020
10

Http与Https的区别

HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头HTTP 是不安全的,而 HTTPS 是安全的HTTP 标准端口是80 ,而 HTTPS 的标准端口是443在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层HTTP 无法加密,而HTTPS 对传输的数据进行加密HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书
19
2020
10

什么时候进行GC

程序员不能控制具体的时间Eden区满了会触发minor GC,老年代满或调用system.gc执行Full GC
19
2020
10

什么情况下对象进入老年代

大对象直接进入老年代(需要大量连续空间的对象)。常见的大对象就是很长的字符串和数组长期存活的对象进入老年代。每个对象有一个年龄计数器。每熬过一次moinor gc,年龄就增加一岁。当年龄增加到一定程度(默认为15)就会晋升到老年代(通过MaxTenuringThreshold设置)。动态年龄判断:如果survivor空间某个年龄对象的大小大于survivor空间的一半,年龄大于或等于的直接进入老年代空间分配担保:复制算法中,survivor中无法容纳的对象将通过分配担保机制直接进入老年代
19
2020
10

常见的垃圾收集器?

Serial收集器:单线程收集器ParNew收集器:,新生代收集器,Serial收集器的多线程版本Parallel Scavenge收集器:新生代收集器,使用复制算法。是用来实现最大吞吐量(代码运行时间/(代码运行时间+垃圾收集的时间))Serial Old收集器:Serial收集器的老年代版本Parallel Old收集器:ParNew收集器的老年代版本(一般使用Parallel Scavenge + Parallel Old)CMS收集器:是一种以获取最短停顿时间为目标的收集器。分为4个步骤
19
2020
10

垃圾收集算法有哪些

标记-清除算法:首先标记出所有的对象,标记完成后统一回收(1效率问题:标记和清除两个过程效率都不高(2空间问题:产生碎片复制算法:将内存划分为一块较大的Eden空间(80%)和两块较小的Survivor空间(10%),每次使用Eden和其中的一块Survivor,当回收时,将两者中存活的对象一次性复制到另一块Survivor,并清空刚才用到的空间,如果这块Survivor不够,则启用分配担保机制,将多处的对象存储再老年代标记-整理算法:首先标记出所有的对象,回收时让存活的对象都向一端移动,直接清
19
2020
10

内存泄漏和内存溢出的区别

内存泄漏:分配出去的内存无法回收(可达却无用的对象无法被gc回收)内存溢出:程序要求的内存超出了系统能分配的范围(如栈满进栈,栈空出栈)
19
2020
10

一个对象的内存划分是怎样的?

可分为3块区域:对象头,实例数据,对齐填充对象头由Mark world和类型指针组成mark World包括hash码,GC分代年龄,锁状态标志等。类型指针来确定这个对象是哪个类的实例实例数据是对象存储的真正的有效信息hostspot虚拟机要求对象的大小必须是8字节的整数倍
19
2020
10

java类加载机制

加载:通过类的全限定名获取类的二进制字节流,将字节流代表的静态存储结构转化为方法区的运行时数据结构。在内存生成这个类的class对象连接:包括三步验证,准备,解析验证:保证class文件的字节流中包含的信息符合当前虚拟机的要求,且不危害虚拟机自身安全准备:正式为类变量分配内存并设置类变量初始值解析:将常量池的符号引用替换为直接引用初始化:根据程序员的意愿初始化类变量
19
2020
10

类的实例化顺序

首先是父类的静态变量和静态代码块(看两者的书写顺序);第二执行子类的静态变量和静态代码块(看两者的书写顺序);第三执行父类的成员变量赋值第四执行父类类的构造代码块第五执行父类的构造方法()执行子类的构造代码块第七执行子类的构造方法();总结,也就是说虽然客户端代码是new 的构造方法,但是构造方法确实是在整个实例创建中的最后一个调用。切记切记!!!先是父类,再是子类;先是类静态变量和静态代码块,再是对象的成员变量和构造代码块–》构造方法。记住,构造方法最后调用!!!!成员变量优先构造代码块优先构
19
2020
10

说说Java线程栈

Java线程栈从线程创建时存在,并且是私有的。线程栈用户存储栈帧,栈帧用于存储局部变量、中间运算结果。所以局部是不存在并发的问题,因为每个栈是私有的。虚拟机只会对Java栈进行二种操作:以栈帧为单位的压栈和出栈。对于执行引擎来说,在活动线程中,只有位于栈顶的栈帧才是有效的,称为当前栈帧(Current Stack Frame),与这个栈帧相关联的方法称为当前方法(Current Method)。执行引擎运行的所有字节码指令都只针对当前栈帧进行操作。
19
2020
10

讲讲什么情况下会出现内存溢出,内存泄漏

内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。Java内存泄漏的根本原因是什么呢?长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏,尽管短生命周期对象已经不
19
2020
10

JVM内存模型都有哪些

程序计数器java虚拟机栈本地方法栈java堆方法区运行时常量池直接内存
19
2020
10

EMF 模型生成的几个部分代码是什么?及各个部分的作用。

答案: 1 产生模型代码。提供模型的持久化和通知者。         2 产生提供者插件代码。主要提供内容提供者和标签提供者。         3 产生编辑器插件代码。主要提供模型的可视化编辑。         4 产生测试代码。提供插件的测试功能。
19
2020
10

如果某个操作很耗时,怎样在界面上处理,用什么方法。

添加进度条。
19
2020
10

怎样创建 TreeViewer 及为其添加内容。

创建 TreeView ,编写它的内容器和标签器。
19
2020
10

列举几种 Eclipse 使用的设计模式,并提供解释(三个以上)。

1 适配器模式,在 Eclipse 中被广泛的使用,提供运行时对象的改变。        2 单例模式,为类提供唯一的使用对象。        3 MVC 模式。        4 命令模式。        5 策略模式。6 Factory 模式等等。
19
2020
10

plugin.xml 文件中保存了那些信息。

答案:插件的 ID 、版本号、名称、提供者 ;依赖的插件;扩展点信息;扩展信息;工程的构建信息等等。
18
2020
10

什么是secondary或slave?

Seconday从当前的primary上复制相应的操作。它是通过跟踪复制oplog(local.oplog.rs)做到的。
18
2020
10

什么是master或primary?

它是当前备份集群(replica set)中负责处理所有写入操作的主要节点/成员。在一个备份集群中,当失效备援(failover)事件发生时,一个另外的成员会变成primary。
18
2020
10

我怎么查看 Mongo 正在使用的链接?

db._adminCommand(“connPoolStats”);
18
2020
10

分片(sharding)和复制(replication)是怎样工作的?

每一个分片(shard)是一个分区数据的逻辑集合。分片可能由单一服务器或者集群组成,我们推荐为每一个分片(shard)使用集群。
18
2020
10

如何执行事务/加锁?

MongoDB没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成MySQL MylSAM的自动提交模式。通过精简对事务的支持,性能得到了提升,特别是在一个可能会穿过多个服务器的系统里。
18
2020
10

Mongodb允许空值null吗?

对于对象成员而言,是的。然而用户不能够添加空值(null)到数据库丛集(collection)因为空值不是对象。然而用户能够添加空对象{}。
18
2020
10

分析器在MongoDB中的作用是什么?

MongoDB中包括了一个可以显示数据库中每个操作性能特点的数据库分析器。通过这个分析器你可以找到比预期慢的查询(或写操作);利用这一信息,比如,可以确定是否需要添加索引。
18
2020
10

Mongodb 的索引注意事项?

索引很有用,但是它也是有成本的——它占内存,让写入变慢;mongoDB通常在一次查询里使用一个索引,所以多个字段的查询或者排序需要复合索引才能更加高效;复合索引的顺序非常重要在生成环境构建索引往往开销很大,时间也不可以接受,在数据量庞大之前尽量进行查询优化和构建索引;避免昂贵的查询,使用查询分析器记录那些开销很大的查询便于问题排查;通过减少扫描文档数量来优化查询,使用explai对开销大的查询进行分析并优化;索引是用来查询小范围数据的,不适合使用索引的情况: 每次查询都需要返回大部分数据的文档
18
2020
10

如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?

如果一个分片停止了,除非查询设置了“Partial”选项,,否则查询会返回一个错误。如果一个分片响应很慢,MongoDB会等待它的响应。
18
2020
10

如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件?

GridFS是一种将大型文件存储在MongoDB中的文件规范。使用GridFS可以将大文件分隔成多个小文档存放,这样我们能够有效的保存大文档,而且解决了BSON对象有限制的问题。
18
2020
10

MySQL和MongoDB之间最基本的区别是什么?

关系型数据库与非关系型数据库的区别,即数据存储结构的不同。
18
2020
10

MongoDB支持存储过程吗?如果支持的话,怎么用?

MongoDB支持存储过程,它是javascript写的,保存在db.system.js表中。
18
2020
10

使用mongodb的优点

面向文件高性能高可用易扩展可分片对数据存储友好
18
2020
10

消费顺序性如何保证

方案一:保证需要排序的消息按照先后顺序发送到同一个消费队列中,并且这个队列只有一个相应的消费者方案二:通过业务限制,保证前消息被消费完,才可以发送后消息
18
2020
10

activemq消息丢失如何处理

情况一:发送到broker时消息丢失解决:先持久到数据库,发送成功后删除或者标记删除。定时任务处理情况二:broker崩溃解决:消息持久化情况三:broker到消费端出问题解决:逻辑整理使其可以重新发送(如,发送时持久化消息并置状态为已发送,消费成功则置为已消费),当然消费要实现等幂性情况一:发送到broker时消息丢失解决:先持久到数据库,发送成功后删除或者标记删除。定时任务处理情况二:broker崩溃解决:消息持久化情况三:broker到消费端出问题解决:逻辑整理使其可以重新发送(如,发送时
18
2020
10

消息重复消费问题

可能原因:发送时消息重复、投递时消息重复消费者的接口要实现等幂性方法一:全局唯一ID:根据业务的操作和内容生成一个全局ID,在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行。方法二:去重表,建立一个去重表,去重表中设置唯一索引,如果去重表插入成功则执行方式三:多版本控制
18
2020
10

Activemq的作用以及原理

Activemq 的作用就是系统之间进行通信。 当然可以使用其他方式进行系统间通信, 如果使用 Activemq 的话可以对系统之间的调用进行解耦, 实现系统间的异步通信。 原理就是生产者生产消息, 把消息发送给activemq。 Activemq 接收到消息, 然后查看有多少个消费者, 然后把消息转发给消费者, 此过程中生产者无需参与。 消费者接收到消息后做相应的处理和生产者没有任何关系
17
2020
10

说说你对代码管理的了解?常使用那些代码版本控制软件?

通常一个项目是由一个团队去开发,每个人将自己写好的代码提交到版本服务器,由项目负责人按照版本进行管理,方便版本的控制,提高开发效率,保证需要时可以回到旧版本。常用的版本控制器:SVN,GIT
17
2020
10

面向对象的接口和抽象类的区别

(1)有抽象方法的类叫做抽象类,抽象类中不一定只有抽象方法,抽象方法必须使用abstract关键字定义。(2)接口中全部是抽象方法,方法不用使用abstract定义。
17
2020
10

简述Cookie的设置及获取过程

设置:setcookie(名称,值,保存时间,有效域);获取:$_COOKIE['名称'];
17
2020
10

你所知道的设计模式?

单例模式、工厂模式、观察者模式、策略模式
17
2020
10

你所知道的php技术有哪些?

Smarty, jquery, ajax, memcache, div+css, js,mysqli,pdo,svn,thinkphp,brophp,yii
17
2020
10

php读取文件内容的几种方法和函数?

打开文件,然后读取。Fopen() fread()打开读取一次完成file_get_contents()
17
2020
10

你想自动加载类时,使用哪个函数声明?

答:function __autoload($class_name)
17
2020
10

PHP session扩展默认将session数据储存在哪里?

答:Session Server
15
2020
10

Jenkins的优势是什么?

Jenkins的优势包括:在开发环境的早期阶段, 错误跟踪很容易。提供大量的插件支持。对代码的迭代改进。构建失败会在集成阶段进行缓存。对于每个代码提交更改, 都会生成一个自动生成报告通知。为了将构建报告的成功或失败通知开发人员, 它与LDAP邮件服务器集成在一起。实现持续集成的敏捷开发和测试驱动的开发。通过简单的步骤, 即可自动完成maven发布项目。
15
2020
10

如何确保你的项目构建不会在Jenkins中破裂?

你必须遵循以下步骤, 以确保你的项目构建不会在Jenkins中中断:首先, 使用所有单元测试在本地计算机上执行成功的全新安装。检查所有代码更改。与存储库同步, 以确保所有必需的配置和POM更改以及所有差异都被检入到存储库中。
15
2020
10

如何将Jenkins从一台服务器移动或复制到另一台服务器?

请按照以下步骤将Jenkins从一台服务器移动或复制到另一台服务器:首先, 复制相关的作业目录, 然后将作业从Jenkins的一个安装滑动到另一个安装。通过使用不同的名称克隆作业目录来复制现有作业。通过重命名目录来重命名现有作业。
15
2020
10

可以使用哪些命令手动启动Jenkins?

你可以使用以下任何命令来手动启动Jenkins:(Jenkins_url)/ restart:强制重启, 而无需等待构建完成。(Jenkin_url)/ safeRestart:允许所有正在运行的构建完成。
15
2020
10

Jenkins中最有用的插件是什么?

Jenkins中一些最有用的插件:Maven 2项目亚马逊EC2HTML发布者复制工件加入绿球
15
2020
10

如何在Jenkins中创建备份和复制文件?

如果要创建Jenkins设置的备份, 只需复制将Jenkins的所有设置, 构建工件和日志保存在其主目录中的目录。你还可以复制作业目录以克隆或复制作业或重命名目录。
15
2020
10

如何通过Jenkins克隆Git存储库?

如果要通过Jenkins克隆Git存储库, 则必须输入Jenkins系统的电子邮件和用户名。切换到作业目录并为此执行” git config”命令。
15
2020
10

如何设置Jenkins职位?

按着这些次序:从菜单中选择新项目。之后, 输入作业的名称, 然后选择自由样式的作业。然后单击”确定”以在Jenkins中创建新作业。下一页使你可以配置作业。
15
2020
10

Jenkins主要整合了两个组成部分?

Jenkins与以下两个组件集成在一起:GIT, SVN等版本控制系统并构建诸如Apache Maven之类的工具。
14
2020
10

怎么保证项目进行时,和别人的配合顺利进行。

答案:和设计师合作,一定在项目初始阶段就做好基础规范,统一好节目界面上的基础元素。例如:文字的规范,在标题,正文,标注上的字号大小及颜色的规范;色彩的规范,主题色的运用在什么场合中运用;线框的规范,线框颜色,粗细等。列表规范,列表高度,及列表的呈现方式等。图标的规范,线性图标的轮廓粗细,转角的一致性。扁平图标的色彩范围,大小及是否有投影等。按钮的规范,按钮大小啊,高度啊,在不同文字情况下的宽度变化。点击的状态和产品经理的沟通就是原型图的理解,看着原型做设计,要是有不明白的要马上问,不要自己猜测。
14
2020
10

当下流行的风格是什么?

答案:扁平风,极简风,孟菲斯风格等。图标前段时间流行MBE,比较可爱,还有二次元风格什么的。风格流行不特别落后就好,最主要还是要适合自己的产品,才是最好的。
14
2020
10

大学期间,你的主要课程有哪些?

答案:根据自己的专业,一定要记下来自己的专业课程内容。背诵下来。
14
2020
10

现在流行扁平化的设计,有什么优势?

答:扁平化忽略了真实环境中的渐变环节,更简洁,更直观,识别度更好,在同样的设计图形图像上,扁平化的设计更容易获得关注力。而且扁平化的设计色彩单纯,所占内存更小,更优化,更适合移动设备。
14
2020
10

有关注现在的流行趋势吗?常去的网站和关注的设计师有哪些?

答案:这个至少要说3-5个网站名称,外国的,并且要举例说出关注的,喜欢的设计师,喜欢的原因。每个人都要问这个问题。
14
2020
10

说一说你最满意的作品,及满意在哪?

答案:这个在自己的项目基础上认真准备。每个人根据自己的项目情况做个3分钟左右的详细的介绍。
14
2020
10

在这个项目中你的角色是什么。

答案:应该说我是主创,当时同事一起每个人出了2-3个方案,老板最后选了我设计的,初始规范文档也是在我的方案基础上扩展的。包括色彩,文字,图标,按钮等基本规范。
14
2020
10

你怎么和程序员交接的。

答案:交付规范文档;交付效果图;各个倍率的切图,ios的23倍率,安卓的加个1.5倍率;交接标注好的文件;svg直接交付1倍率的矢量文件。psd文件再交付源文件给程序员,在像素大厨中直接看发开模式。也可以使用蓝湖看标注。有特殊效果的时候,交接ae动效,或者和程序员面对面进行沟通,保证顺利完成。还要做后续的界面bug的测试。保证项目的最终效果和效果图一致。
14
2020
10

怎么做app的适配。

答案:之前我设计app用的软件是sketch,因为是矢量软件,所以用一倍率设计的,一倍率的时候,1px等于1pt和1dp。在这样情况去兼容ios和android很方便,一般我做375*667的界面先,适配安卓的时候,做360*640的界面,iphoneplus的适配再出一套414*736的界面。基本上就是图标文字不动,适当的缩小间距或者放大间距就好。特殊用html5做app的时候,一般是640*960的尺寸做界面。Ipad的话一倍率是用1024*768做一倍率。
14
2020
10

做过平面类的设计吗,平面印刷要注意什么。

答案:做过,一年或两年。平面印刷就是要注意吸引人的目光,争取在3秒中能够给用户留下的印象。选择CMYK颜色,ps的分辨率300,印刷的时候注意通道,特别是字体,尽量用单色通道去做设计,保证文字的清晰度。常规很多时候都使用k100这样的方式做设计。
14
2020
10

你怎么理解UI设计的一致性原则。

答案:制作app的初始的规范设计,包括从色彩,字号,按钮,图标细节等各方面的一致性设计。主要是考虑到;风格的一致性:用户友好度更好,降低用户学习成本,同样条件的情况下更快速的识别。
14
2020
10

你如何使用色彩?

答案:去寻找自己app的配色心理学的色彩分析,具体用文字说明。用户群体,年龄分析,app的内容分析点方面去考虑。考虑明度的对比,我国色盲男性5%-8%,女性0.5%-1%。全球男性8%,女性0.5%,所以在设计的时候,要充分考虑到色盲大众群体的需求。
14
2020
10

认为UI和平面的区别是

答案:UI是英文User和interface的缩写,是用户与界面2个部分组成。带交互及用户体验,一个好的UI设计师,更多的价值体现在用户体验及交互上的优势。怎么样设计出更符合人操作习惯的用户界面,怎么设计出更简洁明了的用户界面,怎么更符合用户群体的审美。如手机手势的使用,移动场景变化的时候,界面的呈现,手持设备的交互等。平面的更多是纯图形的设计。考虑更多的是产品的受众人群,符合他们的审美观点,符合他们的使用习惯,符合他们的价值区间的设计。更多考虑的是现实场景中的使用状态。如海报,VI,易拉宝等。
14
2020
10

Android手机的常用设计尺寸有_________.怎么适配ios和安卓。

答案:安卓320 X 480是常规模拟器、但现在的开发都是用360x640做一倍率。480 X 800(1.5倍率)、720 X 1280(2倍率)、1920*1080(3倍率)ios用sketch软件出375*812的1倍率的设计图,直接生产标注,1倍率中1px=1pt=1dp。方便程序员理解。Ios适配安卓将375缩小间距至360,文字大小不变,图标大小不变,图片按等比缩小。也出一倍率标注。1px=1dp。适合程序员开发。
13
2020
10

指令分类

组件:用于构建UI组件,继承于Directive类属性指令:用于改变组件的外观或行为ngClassngStyle结构指令:用于动态添加或删除DOM元素来改变DOM布局ngIfngForngSwitch自定义指令
13
2020
10

生命周期钩子

生命周期的顺序,见下图:ngOnChanges:当组件数据绑定的输入属性发生变化是触发,该方法接收一个SimpleChanges对象,包括当前值和上一个属性值。首次调用一定发生在ngOnInit前,值得注意的是该方法仅限于对象的引用发生变化时才会触发。ngOninit:初始化指令或组件,在angular第一次显示展示组件的绑定属性后调用,该方法只会调用一次ngDocheck:检测                &nb
13
2020
10

父子组件之间的数据传递

@Input 父组件向子组件传递数据和传递方法(子组件中使用)@output 子组件传值给父组件  (事件传递的方式)(子组件中使用)//子组件中使用事件发射器@output()  somethingChanged = new EventEmitter();somethingChanged.emit(value);使用@ViewChid 父组件通过局部变量获取子组件的引用,主动获取子组件的数据和方法(父组件中使用)
13
2020
10

双向数据绑定的原理

data => view:数据绑定,模板语法 [ ]view => data:   事件绑定,模板语法()angular的双向数据绑定就是 数据绑定 + 事件绑定 ,模板语法 [()]
13
2020
10

组件和指令的区别

component使用注解@Component修饰,directive使用注解@Directive修饰component是组件化思想,基于组件创建应用,把应用划分成细小的可重复利用的组件,而directive用来在已经存在的DOM元素上实现一些行为component是可重复使用的组件,directive是可重复使用的行为component可创建一个view,即template或templateUrl,而directive没有。
13
2020
10

ng-content指令?

像p标签或者h1标签,在标记之间可以添加内容,eg: <p>this is a paragraph</p>.那我们如果想在angular的标签之间添加内容呢,例如在<app-test></app-test>,这种情况下就可以使用<ng-content>tag directive is used</ng-content>
13
2020
10

router.navigate 的使用?

当我们想路由到一个组件的时候使用router.navigatethis.router.navigate(['./component name']) 
13
2020
10

什么是ViewEncapsulation

ViewEncapsulation 决定组件中定义的样式是否会影响整个应用程序。在Angular中有三种方法可以做到这一点:Emulated : 样式从其他HTML传播到组件。Native : 来自其他HTML的样式不会传播到组件。None:组件中定义的样式对所有组件都是可见的。
13
2020
10

RouterOutlet

<router-outlet></router-outlet>简单理解:页面占位符,决定component显示在哪里,最终会被相应的component的view替换掉
13
2020
10

{{}}

与HTML标签一起使用,eg:<h1>{{var}}</h1>var 是来自于ts(component)中的值。
13
2020
10

有几种数据绑定方式?

属性绑定  [ ]事件绑定()双向数据绑定 [()]
13
2020
10

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

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

Observables 和Promises的区别

Observables 是惰性的,意思是在subsciption之前什么都不会发生。        Promise是eager的,意思是一旦创建,就会执行Observable是一个stream,可以传递0,1,或者多个事件,并且为每个事件回调。        Promise只处理一个事件Observable可取消        Promise不可取消 
13
2020
10

AsyncPipe ?

当observable或promise返回data时,我们使用一个临时属性来保存内容。稍后,我们将相同的内容绑定到模板。通过使用AsyncPipe, promise或observable可以直接在模板中使用,而不需要临时属性。
13
2020
10

Authentication and Authorization的区别?

Authentication (认证) : 用户登录凭据传递给(服务器上的)认证API。在服务器端验证凭据并返回JSON Web Token(JWT)。JWT是一个JSON对象,它有关于当前用户的一些信息或属性。一旦JWT返回给给客户端,客户端或用户将被该JWT所标记。Authorization(授权):登录成功后,经过身份验证或真正的用户不能访问所有内容。用户未被授权访问其他人的数据,他/她被授权访问某些数据。
13
2020
10

AOT编译 和JIT编译?

Just-In-Time (JIT) 生成的JS代码,在浏览器中进行。       -- 大概的开发流程:          - 使用Typescript开发          - 使用tsc编译          - 打包、压缩、部署         部署好
13
2020
10

component和module的区别?

component控制视图(html).组件之间以及组件和service之间互相交互给app提供功能module是包括一个或多个组件,module不会控制视图(HTML)。module声明了哪些模块可以被其他模块使用,依赖注入了哪些类,以及启动的component,模块来管理组件,使app实现模块化。
13
2020
10

ng-Class 和 ng-Style的区别

ng-Class: 加载css类ng-Style:设置css样式
13
2020
10

什么是Pipes?

此功能用于更改模板上的输出;比如将字符串更改为大写并在模板上显示它。它还可以相应地更改日期格式。
13
2020
10

什么是Redux?

它是一个帮助我们维护应用程序状态的库。简单的数据流应用程序不需要Redux,它用于具有复杂数据流的单页应用程序。
13
2020
10

Observer / Observable

Observable(可观察者) 接受一个Observer作为参数然后返回unsubscribe函数        -  特征:           -- 是一个函数           -- 接受一个Observer对象(包含next、error、complete方法的对象)作为参数      &
13
2020
10

Constructor 和 ngOnInit 的本质区别

Constructor 在ES6中 constructor表示构造函数,使用在class中。来初始化操作。当类被初始化之后,构造函数会被调用ngOnInitngOnInit 是angular中OnInit钩子的实现,用来初始化组件。ngOnInit  : 在angular 第一次显示数据绑定和设置指令、组件的输入属性之后,初始化指令、组件所以从angular的生命周期看,constructor是执行在先的所以既然ngOnchanges是输入属性发生变化的时候调用,并且ngOn
13
2020
10

Angular的懒加载

默认情况下,在初始化的时候所有路由都会加载,导致加载缓慢,启动速度慢,所以可以使用懒加载懒加载 : 通俗 的讲就是进入主模块之后,子模块不加载,等真正访问到子模块之后,再去加载。使用loadChildren配置路由知识点:RouterModule.forRoot() 用于主模块 RouterModule.forChild() 用于子模块loadChildren const routes: Routes = [  {path:'',redirectTo
13
2020
10

如何优化Angular 2应用程序来获得更好的性能?

1)考虑AOT编译。2)确保应用程序已经经过了捆绑,uglify和tree shaking。3)确保应用程序不存在不必要的import语句。4)确保应用中已经移除了不使用的第三方库。5)所有dependencies 和dev-dependencies都是明确分离的。6)如果应用程序较大时,我会考虑延迟加载而不是完全捆绑的应用程序。
13
2020
10

使用Angular的好处

 可以添加自定义的directive.优秀的社区支持。客户端和服务器的通讯非常便利。强大的功能比如动画和事件处理。使用mvc模式。支持双向数据绑定。支持依赖注入, restful service和有效验证。
13
2020
10

Angular的核心部件有哪些?

1、模块(Modules)2、组件(Components)3、模版(Templates)4、元数据(Metadata)5、数据绑定(Data Binding)6、指令(Directives)7、服务(Services)8、依赖注入(Dependency Injection)9、路由(routing)
13
2020
10

列举一下Angular中的filter类型

Currency.Date.Filter.Json.limitTolowercasenumberorderBy
13
2020
10

Dirty check是怎么回事?

 Dirty check是比较新的数据跟老的数据的差别,如果看到有改变, 就用新的数据更新现有的视图。
13
2020
10

DOM和BOM的区别是什么?

Dom是document object model。Bom是browser object model。DOM代表的是网页的内容。Bom包含dom, 它还包含有浏览器的属性。Dom是一棵树结构,通过对应的API来访问里面的数据。Bom包含在全局的JavaScript对象里面,是window object的子成员。Dom用来操作html文档。Bom用来操作浏览器窗口。Dom有w3c的标准。Bom,对各个浏览器来说都是有自己具体的实现,都不一样。
13
2020
10

模板驱动表单和 响应式表单的比较

Template-Driven Forms (模板驱动表单) 的特点使用方便适用于简单的场景通过 [(ngModel)] 实现数据双向绑定最小化组件类的代码不易于单元测试Reactive Forms (响应式表单) 的特点比较灵活适用于复杂的场景简化了HTML模板的代码,把验证逻辑抽离到组件类中方便的跟踪表单控件值的变化易于单元测试
13
2020
10

ContentChild 与 ViewChild 的异同点

相同点都是属性装饰器都有对应的复数形式装饰器:ContentChildren、ViewChildren都支持 Type<any>|Function|string 类型的选择器不同点ContentChild 用来从通过 Content Projection 方式 (ng-content) 设置的视图中获取匹配的元素ViewChild 用来从模板视图中获取匹配的元素在父组件的 ngAfterContentInit 生命周期钩子中才能成功获取通过 ContentChild 查询的元素在父组
29
2020
09

drf视图

drf在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。在前后端分离的应用模式中 ,前端与后端的耦合度相对较低。在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。RESTful是一种开发
29
2020
09

drf序列化器与反序列化器

序列化:将对象的状态信息转换为可以存储或传输的形式的过程。(百度定义)对应到drf中,序列化即把模型对象转换为字典形式, 再返回给前端,主要用于输出 序列化返回序列化器,就是对数据进行校验、对数据对象进行转化将Django中的模型类对象装换为JSON字符串,这个转换过程我们称为序列化。反序列化:把其他格式转化为程序中的格式。对应drf中接收前段数据经过验证转为Python中的字典,主要用于输入,接收前段数据反序列化存储使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存
29
2020
09

Django中间件与装饰器的区别

Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。作用:在视图函数执行之前先去进行处理,在视图函数执行之后再去进行收尾工作。 在Django创建的时候,Django默认会给我们加6个中间件。 “比如session和csrf,在视图函数执行前,我们就需
29
2020
09

django中间件

Django 在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预。1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件。 1.def init(): 2. pass 2.处理请求前:在每个请求上调用,返回 None 或 HttpResponse 对象。 1.def process_request(request): 2. pass 3.处理视图前:在每个请求上调用,返回 None 或 HttpResponse
29
2020
09

类视图

以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。就比如说项目里面的注册时,需要先判断用户是get请求还是post请求,然后再根据这些请求来进行处理。其他模块如果也要判断是get还是post请求的话,也要在啪啦啪啦写一遍。如果用了类视图就不一样了,我们可以定义一个类。类里面封装get方法和post方法,如果其他模块想要使用直接调用继承这个类视图就可以啦。就是说项目
29
2020
09

django处理http过程

一个 HTTP 请求,首先被转成一个 HttpRequest对象,然后该对象被传递给Request中间件处理,如果该中间件返回了Response,则直接传递给 Response 中间件做收尾处理。  否则的话 Request 中间件将访问 URL 配置,确定哪个 view 来处理,在确定了哪个 view 要执行,但是还没有执行该 view 的时候,系统会把 request 传递给view中间件处理器进行处理,如果该中间件返回了Response,那么该 Re
28
2020
09

如何实现中间div宽度固定,两端div自适应宽度?说出2种方法

float法通过使两边的div左右浮动,脱离文档流,再为中间的div设置margin-left,margin-right值为左右div的宽度即可.此处应该注意的是中间div在代码中的位置,应该放在最后。存在问题:在屏幕宽度减少至一定程度后,右边div会错位,另起一行。/*float法*/.float .left {    float: left;    height: 200px;}.float .center {    margin:
28
2020
09

什么是DIV高度塌陷?,如何解决?

如果父元素只包含浮动元素,且父元素未设置高度和宽度,那么它的高度就会塌缩为零,也就是所谓的“高度塌陷”。解决“高度塌陷”问题的方法:1.浮动父级元素,父级元素的高度就会扩大,直到完全包含它里面的浮动元素。如果使用这种方法,一定要在该元素的下个元素添加clear:both,确保浮动元素落到父级元素的下方。2.使用overflow:hidden,zoom:1,overflow:hidden属性会强制父级元素扩大到包含浮动元素,zoom:1只是触发IE6的hasLayout模式,不会对其他浏览器产生影
28
2020
09

什么是FOUC?如何解决?

如果使用import方法对CSS进行导入,会导致某些页面在Windows 下的Internet Explorer出现一些奇怪的现象:以无样式显示页面内容的瞬间闪烁,这种现象称之为文档样式短暂失效(Flash of Unstyled Content),简称为FOUC。原因大致为:1,使用import方法导入样式表。 2,将样式表放在页面底部 3,有几个样式表,放在html结构的不同位置。其实原理很清楚:当样式表晚于结构性html加载,当加载到此样式表时,页面将停止之前的渲染。此
28
2020
09

如何实现垂直居中?

为实现良好的兼容性,PC端实现垂直居中的方法一般是通过绝对定位,table-cell,负边距等方法。 // HTML结构:<div class="box box1">    <span>垂直居中</span></div>方法1:table-cell// CSS:.box1{    display: table-cell;    vertical-align:
28
2020
09

HTML5为什么只需要写就可以了?

doctype是documenttype(文档类型)的简写,在页面中,用来指定页面所使用的xhtml(或者html)的版本。要想制作符合标准的页面,一个必不可少的关键组成部分就 是doctype声明。只有确定了一个正确的doctype,xhtml里的标识和css才能正常生效。 html 告诉浏览器这个文件是html格式网页文件两个合起来就是 html5标准网页声明,原先的是一串很长的字符串,现在是这个简洁形式,支持html5标准的主流浏览器都认识这个声明。
27
2020
09

以下有两个表 user表 字段id (int),name (varchar) score表 字段uid (int),subject (varchar) ,score (int) score表的uid字

1). mysql_query(“insert into user(name) values(‘test’)”);$id = mysql_insert_id();Mysql_query(“insert into score(uid,subjext,score) values(“.$id.”,’english’,’99’)”);2).$sql = select uid,sunjext,score from score where uid=2 order by score desc limit 0,
27
2020
09

本地mysql数据库db_test里已建有表friend,数据库的连接用户为root,密码为123 friend表字段为:id,name,age,gender,phone,email 请使用php连接

<?php$link = Mysql_connect(“localhost”,”root”,”123”) or die(“数据库连接失败!”);Mysql_select_db(“db_test”,$link) or die(“选择数据库失败!”);$sql = “select id,name,age,gender,phone,email from friend where age>20”;$result = mysql_query($sql);$count = mysql_num_r
27
2020
09

请简单写一个类,实例化这个类,并写出调用该类的属性和方法的语句

Class myclass{Public $aaa;Public $bbb;Public function myfun(){Echo “this is my function”;}}$myclass = new myclass();$myclass->$aaa;$myclass->myfun();
27
2020
09

你使用过哪种PHP的模板引擎?

Smarty,thinkphp自带的模板引擎
27
2020
09

一个文件的路径为/wwwroot/include/page.class.php,写出获得该文件扩展名的方法

$arr = pathinfo(“/wwwroot/include/page.class.php”);$str = substr($arr[‘basename’],strrpos($arr[‘basename’],’.’));
27
2020
09

写出一个函数,参数为年份和月份,输出结果为指定月的天数

Function day_count($year,$month){Echo date(“t”,strtotime($year.”-”.$month.”-1”));}
27
2020
09

serialize() /unserialize()函数的作用

serialize()和unserialize()在php手册上的解释是:serialize — 产生一个可存储的值的表示,返回值为字符串,此字符串包含了表示 value 的字节流,不丢失其类型和结构,可以存储于任何地方。unserialize — 从已存储的表示中创建 PHP 的值具体用法:$arr = array(“测试1″,”测试2″,”测试3″);//数组 $sarr = serialize($arr);//产生一个可存储的值(用于存储)//
27
2020
09

$str = “1,3,5,7,9,10,20”,使用什么函数可以把字符串str转化为包含各个数字的数组?

$arr = explode(“,”,$str);
27
2020
09

写出php进行编码转换的函数

Iconv(‘utf-8’,’gb2312’,$str);
27
2020
09

写出获取当前时间戳的函数,及打印前一天的时间的方法(格式:年-月-日 时:分:秒)

Time();Date(“Y-m-d H:i:s”,Strtotime(“-1 day”));
27
2020
09

写出将一个数组里的空值去掉的语句

$arr = array(‘’,1,2,3,’’,19);第一种方法:$array1 = array('  ',1,'',2,3);print_r(array_filter($array1, "del"));function del($var){       return(trim($var)); }第二种方法:$arr=array("",1,2,3,"&
27
2020
09

$str是一段html文本,使用正则表达式去除其中的所有js脚本

$pattern = ‘/<script.*>\.+<\/script>/’;Preg_replace($pattern,’’,$str);
27
2020
09

写出使用header函数跳转页面的语句

Header(‘location:index.php’);
27
2020
09

如何获取客户端的IP地址?

$_SERVER[‘REMOTE_ADDR’]
27
2020
09

__FILE__表示什么意思?

文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
26
2020
09

现有MS SQL Server 数据库 UserLibs 列举出所有用户表及其字段。

答:   use UserLibs   select a . name as tbname , b . [name] as colname    from sysobjects a    left join syscolumns b       on a . id = b . id    where (1 = 1)    and a .
26
2020
09

写出Delphi声明Win32类型的库及其对应的Win32 Dll库(至少3个)。

答:    windows - kernel32.dll   graphics - gdi32.dll   winsock - wsock.dll
26
2020
09

Delphi快捷键

答:  快速搜索添加控件:ctrl + alt + p  打开工程属性对话框: ctrl+shift+f11  切换编辑中的代码窗体:f12  删除一行代码:ctrl + y
19
2020
09

HTML < wbr > 标签

实例

一段带有 Word Break Opportunity 的文本:

<p>
如果想学习 AJAX,那么您必须熟悉 XML<wbr>Http<wbr>Request 对象。
</p>

运行代码:

<!DOCTYPE html>
<html>
<body>

<p>
如果想学习 AJAX,那么您必须熟悉 XML<wbr>Http<wbr>Request 对象。
</p>

</body>
</html>
           

运行结果:

如果想学习 AJAX,那么您必须熟悉 XMLHttpRequest 对象。




19
2020
09

vuex的Mutation特性是?

答:一、Action 类似于 mutation,不同在于:二、Action 提交的是 mutation,而不是直接变更状态。三、Action 可以包含任意异步操作
19
2020
09

vuex的Getter特性是?

答:一、getters 可以对State进行计算操作,它就是Store的计算属性二、 虽然在组件内也可以做计算属性,但是getters 可以在多组件之间复用三、 如果一个状态只在一个组件内使用,是可以不用getters
19
2020
09

vuex的State特性是?

答:一、Vuex就是一个仓库,仓库里面放了很多对象。其中state就是数据源存放地,对应于与一般Vue对象里面的data二、state里面存放的数据是响应式的,Vue组件从store中读取数据,若是store中的数据发生改变,依赖这个数据的组件也会发生更新三、它通过mapState把全局的 state 和 getters 映射到当前组件的 computed 计算属性中
17
2020
09

文件权限读、写、执行三种符号的标志依次是

rwx
17
2020
09

vim退出不保存的命令是

17
2020
09

用于自动补全功能时,输入命令或文件的前1个或后几个字母按什么键

tab
17
2020
09

那个用户存放用户密码信息

etc 
17
2020
09

在登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么

答:PIDw命令查看用户tty终端信息ps -ef|grep pts/0
17
2020
09

springBoot实现分布式锁(Spring integration+redis)

springBoot实现分布式锁(Spring integration+redis)一、 redis安装使用docker-compose安装所需的redis环境version: '3'services:  redis:    image: redis # redis镜像    container_name: my_redis    command: redis-server --requirepass 1234
17
2020
09

springboot redis分布式锁代码实例

随着微服务等分布式架构的快速发展及应用,在很多情况下,我们都会遇到在并发情况下多个线程竞争资源的情况,比如我们耳熟能详的秒杀活动,多平台多用户对同一个资源进行操作等场景等。分布式锁的实现方式有很多种,比如基于数据库、Zookeeper、Redis等,本文我们主要介绍Spring Boot整合Redis实现分布式锁。工具类如下:import org.springframework.beans.factory.annotation.Autowired; import org.s
16
2020
09

谈一谈你对ORM的理解

ORM是“对象-关系-映射”的简称。MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动
16
2020
09

简述什么是FBV和CBV

FBV(function base views)就是在视图函面使用函数处理请求CBV(class base views)就是在视图里面使用类处理请求
16
2020
09

简述Django请求生命周期

   一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。#1.wsgi,请求封装后交给web框架 (Flask、Django)     #2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、r
16
2020
09

简述MVC模式和MVT模式

 所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求MTV    Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。T 代表模
16
2020
09

谈谈你对HTTP协议的认识。1.1 长连接

HTTP是一个属于应用层的面向对象的协议HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。基于TCP/IP    双方建立通信的顺序,以及Web页面显示需要 处理的步骤,等等。像这样把与互联网相关联的协议集合起来总称为       TCP/IP。而http协议是基于TCP/IP协议之上的应用层协议。基于请求-响应模式&nbs
16
2020
09

请说说MyBatis的工作原理

在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml
16
2020
09

MyBatis框架适用场景

MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。
16
2020
09

传统JDBC开发存在的问题

频繁创建数据库连接对象、释放,容易造成系统资源浪费,影响系统性能。可以使用连接池解决这个问题。但是使用jdbc需要自己实现连接池。sql语句定义、参数设置、结果集处理存在硬编码。实际项目中sql语句变化的可能性较大,一旦发生变化,需要修改java代码,系统需要重新编译,重新发布。不好维护。使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。结果集处理存在重复代码,处理麻烦。如果可以映射成J
15
2020
09

什么是线程死锁

百度百科:死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。下面通过一个例子
15
2020
09

如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?

windows上面用任务管理器看,linux下可以用 top 这个工具看。找出cpu耗用厉害的进程pid, 终端执行top命令,然后按下shift+p 查找出cpu利用最厉害的pid号根据上面第一步拿到的pid号,top -H -p pid 。然后按下shift+p,查找出cpu利用率最厉害的线程号,比如top -H -p 1328将获取到的线程号转换成16进制,去百度转换一下就行使用jstack工具将进程信息打印输出,jstack pid号 > /tmp/t.dat,比如jstack 3
15
2020
09

守护线程和用户线程有什么区别呢?

守护线程和用户线程用户 (User) 线程:运行在前台,执行具体的任务,如程序的主线程、连接网络的子线程等都是用户线程守护 (Daemon) 线程:运行在后台,为其他前台线程服务。也可以说守护线程是 JVM 中非守护线程的 “佣人”。一旦所有用户线程都结束运行,守护线程会随 JVM 一起结束工作main 函数所在的线程就是一个用户线程啊,main 函数启动的同时在 JVM 内部同时还启动了好多守护线程,比如垃圾回收线程。比较明显的区别之一是用户线程结束,JVM 退出,不管这个时候有没有守护线程运
15
2020
09

什么是上下文切换?

多线程编程中一般线程的个数都大于 CPU 核心的个数,而一个 CPU 核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU 采取的策略是为每个线程分配时间片并轮转的形式。当一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于一次上下文切换。概括来说就是:当前任务在执行完 CPU 时间片切换到另一个任务之前会先保存自己的状态,以便下次再切换回这个任务时,可以再加载这个任务的状态。任务从保存到再加载的过程就是一次上下文切换。上下文切换通常是计算密集型的。
15
2020
09

进程与线程的区别

线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间
15
2020
09

什么是线程和进程?

进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。
15
2020
09

什么是多线程,多线程的优劣?

多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。多线程的好处:可以提高 CPU 的利用率。在多线程程序中,一个线程必须等待的时候,CPU 可以运行其它的线程而不是等待,这样就大大提高了程序的效率。也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程的劣势:线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;多线程需要协调和管理,所以需要 CPU 时间跟踪线程;线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题。
15
2020
09

并行和并发有什么区别?

并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。并行:单位时间内,多个处理器或多核处理器同时处理多个任务,是真正意义上的“同时进行”。串行:有n个任务,由一个线程按顺序执行。由于任务、方法都在一个线程执行所以不存在线程不安全情况,也就不存在临界区的问题。做一个形象的比喻:并发 = 两个队列和一台咖啡机。并行 = 两个队列和两台咖啡机。串行 = 一个队列和一台咖啡机。
15
2020
09

并发编程三要素是什么?在 Java 程序中怎么保证多线程的运行安全?

并发编程三要素(线程的安全性问题体现在):原子性:原子,即一个不可再被分割的颗粒。原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。可见性:一个线程对共享变量的修改,另一个线程能够立刻看到。(synchronized,volatile)有序性:程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)出现线程安全问题的原因:线程切换带来的原子性问题缓存导致的可见性问题编译优化带来的有序性问题解决办法:JDK Atomic开头的原子类、synchronized、LOCK,可以
15
2020
09

并发编程有什么缺点

并发编程的目的就是为了能提高程序的执行效率,提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到很多问题,比如**:内存泄漏、上下文切换、线程安全、死锁**等问题。
15
2020
09

为什么要使用并发编程(并发编程的优点)

充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升方便进行业务拆分,提升系统并发能力和性能:在特殊的业务场景下,先天的就适合于并发编程。现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体的并发能力以及性能。面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分 。
14
2020
09

MyBatis 入门

安装要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:<dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis</artifactId>  <version>x.x.x<
12
2020
09

MyBatis 教程

1502093784622523.png什么是 MyBatis ?

12
2020
09

Shiro的核心概念Subject、SecurityManager、Realm

Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如爬虫、机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者。SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可
12
2020
09

什么是shiro

Shiro是一个强大易用的java安全框架,提供了认证、授权、加密、会话管理、与web集成、缓存等功能,对于任何一个应用程序,都可以提供全面的安全服务,相比其他安全框架,shiro要简单的多。
11
2020
09

NoClassDefFoundError 和 ClassNotFoundException 区别?

NoClassDefFoundError 是一个 Error 类型的异常,是由 JVM 引起的,不应该尝试捕获这个异常。引起该异常的原因是 JVM 或 ClassLoader 尝试加载某类时在内存中找不到该类的定义,该动作发生在运行期间,即编译时该类存在,但是在运行时却找不到了,可能是变异后被删除了等原因导致;ClassNotFoundException 是一个受查异常,需要显式地使用 try-catch 对其进行捕获和处理,或在方法签名中用 throws 关键字进行声明。当使用 Class.f
11
2020
09

final、finally、finalize 有什么区别?

final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,Java 中允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去
11
2020
09

throws 关键字和 throw 关键字在使用上的几点区别如下:

throw 关键字用在方法内部,只能用于抛出一种异常,用来抛出方法或代码块中的异常,受查异常和非受查异常都可以被抛出。throws 关键字用在方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表。一个方法用 throws 标识了可能抛出的异常列表,调用该方法的方法中必须包含可处理异常的代码,否则也要在方法签名中用 throws 关键字声明相应的异常。
11
2020
09

throw 和 throws 的区别是什么?

Java 中的异常处理除了包括捕获异常和处理异常之外,还包括声明异常和拋出异常,可以通过 throws 关键字在方法上声明该方法要拋出的异常,或者在方法内部通过 throw 拋出异常对象。throws 关键字和 throw 关键字在使用上的几点区别如下:throw 关键字用在方法内部,只能用于抛出一种异常,用来抛出方法或代码块中的异常,受查异常和非受查异常都可以被抛出。throws 关键字用在方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表。一个方法用 throws 标识了可能抛出
11
2020
09

JVM 是如何处理异常的?

在一个方法中如果发生异常,这个方法会创建一个异常对象,并转交给 JVM,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并转交给 JVM 的过程称为抛出异常。可能有一系列的方法调用,最终才进入抛出异常的方法,这一系列方法调用的有序列表叫做调用栈。JVM 会顺着调用栈去查找看是否有可以处理异常的代码,如果有,则调用异常处理代码。当 JVM 发现可以处理异常的代码时,会把发生的异常传递给它。如果 JVM 没有找到可以处理该异常的代码块,JVM 就会将该异常转交给默认的异常处
11
2020
09

RuntimeException异常和受检异常之间的区别

RuntimeException异常和受检异常之间的区别:是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常(RuntimeException)。一般来讲,如果没有特殊的要求,我们建议使用RuntimeException异常。
11
2020
09

运行时异常和一般异常(受检异常)区别是什么?

运行时异常包括 RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。 Java 编译器不会检查运行时异常。受检异常是Exception 中除 RuntimeException 及其子类之外的异常。 Java 编译器会检查受检异常。RuntimeException异常和受检异常之间的区别:是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常(RuntimeException)。一般来讲,如果没有特殊的要求,我们
11
2020
09

Error 和 Exception 区别是什么?

Error 类型的错误通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,JAVA 应用程序也不应对这类错误进行捕获,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复;Exception 类的错误是可以在应用程序中进行捕获并处理的,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。
10
2020
09

未命名

tgryrtyytrytrt
09
2020
09

服务注册和发现是什么意思?Spring Cloud 如何实现?

当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。
09
2020
09

使用 Spring Boot 开发分布式微服务时,我们面临以下问题

(1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。(2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。(3)冗余-分布式系统中的冗余问题。(4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。(5)性能-问题 由于各种运营开销导致的性能问题。(6)部署复杂性-Devops 技能的要求。
09
2020
09

Spring Cloud的版本关系

Spring Cloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。 为了管理Spring Cloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个Spring Cloud版本对应的子项目版本。 为了避免Spring Cloud版本号与子项目版本号混淆,Spring Cloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序,例如Angel是第一个版本,Brixton是第二个版本。 当Spring Cloud的发布
09
2020
09

Spring Cloud主要项目

Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架"Spring Boot化"的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。Spring Cloud Config集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作。Spring Cloud NetflixNetfli
09
2020
09

Spring Cloud整体架构

Spring Cloud整体架构
09
2020
09

Spring Cloud发展前景

Spring Cloud对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。同时,随着近几年微服务架构和Docker容器概念的火爆,也会让Spring Cloud在未来越来越“云”化的软件开发风格中立有一席之地,尤其是在五花八门的分布式解决方案中提供了标准化的、全站式的技术方案,意义可能会堪比当年Servlet规范的诞生,有效推进服务端软件系统技术水
09
2020
09

Spring Cloud设计目标与优缺点

设计目标协调各个微服务,简化分布式系统开发。优缺点微服务的框架那么多比如:dubbo、Kubernetes,为什么就要使用Spring Cloud的呢?优点:产出于Spring大家族,Spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善组件丰富,功能齐全。Spring Cloud 为微服务架构提供了非常完整的支持。例如、配置管理、服务发现、断路器、微服务网关等;Spring Cloud 社区活跃度很高,教程很丰富,遇到问题很容易找到解决方案服务拆分粒度更细,耦合度比较低,有
09
2020
09

什么是Spring Cloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统
09
2020
09

为什么需要学习Spring Cloud

不论是商业应用还是用户应用,在业务初期都很简单,我们通常会把它实现为单体结构的应用。但是,随着业务逐渐发展,产品思想会变得越来越复杂,单体结构的应用也会越来越复杂。这就会给应用带来如下的几个问题:代码结构混乱:业务复杂,导致代码量很大,管理会越来越困难。同时,这也会给业务的快速迭代带来巨大挑战;开发效率变低:开发人员同时开发一套代码,很难避免代码冲突。开发过程会伴随着不断解决冲突的过程,这会严重的影响开发效率;排查解决问题成本高:线上业务发现 bug,修复 bug 的过程可能很简单。但是,由于只
03
2020
09

线程池常用参数

/**     * Creates a new {@code ThreadPoolExecutor} with the given initial     * parameters.     *     * @param corePoolSize the number of threads to keep in the pool, even     
03
2020
09

常见线程池

①newSingleThreadExecutor单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务②newFixedThreadExecutor(n)固定数量的线程池,没提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行③newCacheThreadExecutor(推荐使用)可缓存线程池,当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲(一般是60秒无执行)的线程,当有任务来时,又智能的添加新线程来执行。④newSc
03
2020
09

什么是线程池

java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。一个线程池包括以下四个基本组成部分:1、线程池管理器(
03
2020
09

为什么不建议使用 Executors静态工厂构建线程池

阿里巴巴Java开发手册,明确指出不允许使用Executors静态工厂构建线程池原因如下:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险说明:Executors返回的线程池对象的弊端如下:1:FixedThreadPool 和 SingleThreadPool:允许的请求队列(底层实现是LinkedBlockingQueue)长度为Integer.MAX_VALUE,可能会堆积大量
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 方法注入接口注入
31
2020
07

call和.apply的区别是什么?

call方法: 语法:call(thisObj,Object)定义:调用一个对象的一个方法,以另一个对象替换当前对象。说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 apply方法: 语法:apply(thisObj,[argArray])定义:应用某一对象的一个方法,用另一个对象