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])定义:应用某一对象的一个方法,用另一个对象
31
2020
07

请指出JavaScript宿主对象和原生对象的区别?

原生对象ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。“本地对象”包含哪些内容:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。由此可以看出,简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。内置对
31
2020
07

在什么时候你会使用document.write()?

大多数生成的广告代码依旧使用document.write(),虽然这种用法会让人很不爽。
31
2020
07

请指出浏览器特性检测,特性推断和浏览器UA字符串嗅探的区别?

特性检测:为特定浏览器的特性进行测试,并仅当特性存在时即可应用特性。User-Agent检测:最早的浏览器嗅探即用户代理检测,服务端(以及后来的客户端)根据UA字符串屏蔽某些特定的浏览器查看网站内容。特性推断:尝试使用多个特性但仅验证了其中之一。根据一个特性的存在推断另一个特性是否存在。问题是,推断是假设并非事实,而且可能导致可维护性的问题。
31
2020
07

请解释JSONP的工作原理,以及它为什么不是真正的AJAX。

JSONP (JSON with Padding)是一个简单高效的跨域方式,HTML中的script标签可以加载并执行其他域的javascript,于是我们可以通过script标记来动态加载其他域的资源。例如我要从域A的页面pageA加载域B的数据,那么在域B的页面pageB中我以JavaScript的形式声明pageA需要的数据,然后在 pageA中用script标签把pageB加载进来,那么pageB中的脚本就会得以执行。JSONP在此基础上加入了回调函数,pageB加载完之后会执行page
31
2020
07

请解释变量声明提升。

在JS里定义的变量,存在于作用域链里,而在函数执行时会先把变量的声明进行提升,仅仅是把声明进行了提升,而其值的定义还在原来位置。示例如下:1 var test = function() {2     console.log(name); // 输出:undefined3     var name = "jeri";4     console.log(name); // 输出:jeri5 }6 7 test(
31
2020
07

请指出document.onload和document.ready两个事件的区别。

页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页面包含图片等文件在内的所有元素都加载完成。
31
2020
07

"attribute"和"property"的区别是什么?

1. 定义Property:属性,所有的HTML元素都由HTMLElement类型表示,HTMLElement类型直接继承自Element并添加了一些属性,添加的这些属性分别对应于每个HTML元素都有下面的这5个标准特性: id,title,lang,dir,className。DOM节点是一个对象,因此,他可以和其他的JavaScript对象一样添加自定义的属性以及方法。property的值可以是任何的数据类型,对大小写敏感,自定义的property不会出现在html代码中,只存在js中。At
31
2020
07

请描述下事件冒泡机制。

冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。捕获型事件:事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定)。支持W3C标准的浏览器在添加事件时用addEventListener(event,fn,useCapture)方法,基中第3个参数useCapture是一个Boolean值,用来设置事件是在事件捕获时执行,还是事件冒泡时执行。而不兼容W3C的浏览器(IE)用attac
29
2020
07

==和===有什么不同?

首先,== equality 等同,=== identity 恒等。 ==, 两边值类型不同的时候,要先进行类型转换,再比较。 ===,不做类型转换,类型不同的一定不等。先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等: 如果类型不同,就[不相等] 如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断) 如果两个都是字符串,每个位置的字符都一样
29
2020
07

你如何从浏览器的URL中获取查询字符串参数。

以下函数把获取一个key的参数。 1 function parseQueryString ( name ){ 2     name = name.replace(/[\[]/,"\\\["); 3     var regexS = "[\\?&]"+name+"=([^&#]*)"; 4     var regex = n
29
2020
07

请解释一下JavaScript的同源策略。

在客户端编程语言中,如javascript和 ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域,什么叫不同的域呢?当两个域具有相同的协议, 相同的端口,相同的host,那么我们就可以认为它们是相同的域。同源策略还应该对一些特殊情况做处理,比如限制file协议下脚本的访问权限。本地的HTML文件在浏览器中是通过file协议打开的,如果脚本能
29
2020
07

什么是三元表达式?“三元”表示什么意思?

三元表达式:? :。三元--三个操作对象。在表达式boolean-exp ? value0 : value1 中,如果“布尔表达式”的结果为true,就计算“value0”,而且这个计算结果也就是操作符最终产生的值。如果“布尔表达式”的结果为false,就计算“value1”,同样,它的结果也就成为了操作符最终产生的值。
29
2020
07

JavaScript里函数参数arguments是数组吗?

在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,通过使用下标就可以访问相应的参数。arguments虽然有一些数组的性质,但其并非真正的数组,只是一个类数组对象。其并没有数组的很多方法,不能像真正的数组那样调用.jion(),.concat(),.pop()等方法。
29
2020
07

什么是"use strict";?使用它的好处和坏处分别是什么?

在代码中出现表达式-"use strict"; 意味着代码按照严格模式解析,这种模式使得Javascript在更严格的条件下运行。好处:消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;消除代码运行的一些不安全之处,保证代码运行的安全;提高编译器效率,增加运行速度;为未来新版本的Javascript做好铺垫。坏处:同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在&quo
29
2020
07

解释"chaining"。

jQuery方法链接。直到现在,我们都是一次写一条jQuery语句(一条接着另一条)。不过,有一种名为链接(chaining)的技术,允许我们在相同的元素上运行多条jQuery命令,一条接着另一条。提示:这样的话,浏览器就不必多次查找相同的元素。如需链接一个动作,您只需简单地把该动作追加到之前的动作上。
29
2020
07

解释"deferreds"。

开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。简单说,deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是&
29
2020
07

你知道哪些针对jQuery的优化方法?

1.总是从ID选择器开始继承在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法。例如有一段HTML代码: 1 <div id="content"> 2     <form method="post"action="#"> 3         <h2>
29
2020
07

请解释.end()的用途。

在官方的API上是这样描述end()方法的:“回到最近的一个"破坏性"操作之前。即,将匹配的元素列表变为前一次的状态。”;看样子好像是找到最后一次操作的元素的上一元素,在如下的例子中:html代码:复制代码代码如下:1 <div>测试内容1</div><div>测试内容2</div>jQuery代码:复制代码代码如下:1 $('<p>新增内容</p>').appendTo('div
29
2020
07

你如何给一个事件处理函数命名空间,为什么要这样做?

任何作为type参数的字符串都是合法的;如果一个字符串不是原生的JavaScript事件名,那么这个事件处理函数会绑定到一个自定义事件上。这些自定义事件绝对不会由浏览器触发,但可以通过使用.trigger()或者.triggerHandler()在其他代码中手动触发。如果type参数的字符串中包含一个点(.)字符,那么这个事件就看做是有命名空间的了。这个点字符就用来分隔事件和他的命名空间。举例来说,如果执行.bind('click.name',handler),那么字符串中的cl
29
2020
07

请说出你可以传递给jQuery方法的四种不同值。

选择器(字符串),HTML(字符串),回调函数,HTML元素,对象,数组,元素数组,jQuery对象等。
29
2020
07

什么是效果队列?

jQuery中有个动画队列的机制。当我们对一个对象添加多次动画效果时后添加的动作就会被放入这个动画队列中,等前面的动画完成后再开始执行。可是用户的操作往往都比动画快,如果用户对一个对象频繁操作时不处理动画队列就会造成队列堆积,影响到效果。jQuery中有stop这个方法可以停止当前执行的动画,并且它有两个布尔参数,默认值都为false。第一个参数为true时会清空动画队列,第二个参数为true时会瞬间完成掉当前动画。所以,我们经常使用obj.stop(true,true)来停止动画。但是这还不够
29
2020
07

请指出.get(),[],eq()的区别。

eq:返回是一个jquery对象作用是将匹配的元素集合缩减为一个元素。这个元素在匹配元素集合中的位置变为0,而集合长度变成1。get:是一个html对象数组作用是取得其中一个匹配的元素。num表示取得第几个匹配的元素。
29
2020
07

请指出.bind(),.live()和.delegate()的区别。

在操纵DOM的语境中,document是根节点。现在我们可以较容易地说明.bind()、.live()和.delegate()的不同之处了。.bind()1 $('a').bind('click', function() {alert("That tickles!")});这是最简单的绑定方法了。JQuery扫描文档找出所有的$(‘a’)元素,并把alert函数绑定到每个元素的click事件上。.live()1 $('a').l
29
2020
07

请指出$和$.fn的区别,或者说出$.fn的用途。

Jquery为开发插件提供了两个方法,分别是:1 $.extend(obj);2 $.fn.extend(obj);1.那么这两个分别是什么意思?$.extend(obj);是为了扩展jquery本身,为类添加新的方法。$.fn.extend(obj);给JQUERY对象添加方法。2.$.fn中的fn是什么意思,其实是prototype,即$.fn=$.prototype;具体用法请看下面的例子:1 $.extend({2 3     add:function(a,
29
2020
07

"i'm a lasagna hog".split("").reverse().join("");问题:上面的语句的返回值是什么?

答案:"goh angasal a m'i";
29
2020
07

请写出一个函数实现N!的计算。N取很大的值时,该怎么办?

使用循环、递归都能写出函数。当N取值很大时,应该考虑把数值转化为字符串再进行运算。大数乘法再转化为大数加法运算,其具体算法应该有不少C语言实现,可以参考一下。
29
2020
07

(window.foo||(window.foo="bar"));问题:window.foo的值是什么?

答案:"bar"只有window.foo为假时的才是上面答案,否则就是它本身的值。var foo="Hello";(function(){var bar="World";alert(foo+bar);})();alert(foo+bar);
29
2020
07

问题:上面两个alert的结果是什么?

答案:"Hello World"和ReferenceError:bar is not defined
27
2020
07

下面两个函数的返回值是一样的吗?为什么?

function foo1(){  return {      bar: "hello"  };}function foo2(){  return  {      bar: "hello"  };}在编程语言中,基本都是使用分号(;)将语句分隔开,这可以增加代码的可读性和整洁性。而在JS中,如若语句各占独立一行,通常可以省略语句间的分号(;),JS
27
2020
07

在严格模式('use strict')下进行 JavaScript 开发有神马好处?

消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;消除代码运行的一些不安全之处,保证代码运行的安全;提高编译器效率,增加运行速度;为未来新版本的Javascript做好铺垫。
27
2020
07

将 JavaScript 代码包含在一个函数块中有神马意思呢?为什么要这么做?

换句话说,为什么要用立即执行函数表达式(Immediately-Invoked Function Expression)。IIFE 有两个比较经典的使用场景,一是类似于在循环中定时输出数据项,二是类似于 JQuery/Node 的插件和模块开发。for(var i = 0; i < 5; i++) {    setTimeout(function() {        console.log(i);    &n
27
2020
07

下面的代码会在 console 输出神马?为什么?

var myObject = {    foo: "bar",    func: function() {        var self = this;        console.log("outer func:  this.foo = " + this.foo);        c
27
2020
07

下面的代码会在 console 输出神马?为什么?

(function(){  var a = b = 3;})();console.log("a defined? " + (typeof a !== 'undefined'));   console.log("b defined? " + (typeof b !== 'undefined'));这跟变量作用域有关,输出换成下面的:console.log(b); //3console,log(ty
27
2020
07

使用 typeof bar === "object" 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊端?

使用 typeof 的弊端是显而易见的(这种弊端同使用 instanceof):let obj = {};let arr = [];console.log(typeof obj === 'object');  //trueconsole.log(typeof arr === 'object');  //trueconsole.log(typeof null === 'object');  //true从上面的输出结果可
27
2020
07

Executors的四种线程池浅析

newFixedThreadPool//Executors.javapublic static ExecutorService newFixedThreadPool(int nThreads) {    return new ThreadPoolExecutor(nThreads, nThreads,                0L, TimeUnit.MILLISECONDS, 
27
2020
07

阻塞队列的简单了解

队列的阻塞插入:当队列满时,队列会阻塞插入元素的线程,直到队列不满队列的阻塞移除:当队列为空时,获取元素的线程会等待队列变为非空BlockingQueue提供的方法如下,其中put和take是阻塞操作操作方法 抛出异常 返回特殊值 阻塞线程 超时退出插入元素 add(e) offer(e) put(e) offer(e, timeout, unit)移除元素 remove() poll() take() pull(timeout, unit)检查 element() peek() 无 无Arra
27
2020
07

线程池原理之执行流程

//ThreadPoolExecutor.javapublic void execute(Runnable command) {    ...    if (workerCountOf(c) < corePoolSize) { //plan A        if (addWorker(command, true))             
27
2020
07

JDK封装的线程池

//ThreadPoolExecutor.javapublic ThreadPoolExecutor(    int corePoolSize,     int maximumPoolSize,    long keepAliveTime,    TimeUnit unit,    BlockingQueue<Runnable> workQueue,   
27
2020
07

线程池及其优点

线程的每次使用创建,结束销毁是非常巨大的开销。若用缓存的策略(线程池),暂存曾经创建的线程,复用这些线程,可以减少程序的消耗,提高线程的利用率降低资源消耗:重复利用线程可降低线程创建和销毁造成的消耗提高响应速度:当任务到达时,不需要等待线程创建就能立即执行提高线程的可管理性:使用线程池可以进行统一的分配,监控和调优
27
2020
07

JAVA线程的几种常用方法

线程启动函数//Thread.java//调用start启动线程,进入Runnable状态,等待系统调度执行public synchronized void start(){//synchronized同步执行    if (threadStatus != 0) //0 代表new状态,非0则抛出错误            throw new IllegalThreadStateException(); 
27
2020
07

JAVA线程的实现原理

java的线程是基于操作系统原生的线程模型(非用户态),通过系统调用,将线程交给系统调度执行java线程拥有属于自己的虚拟机栈,当JVM将栈、程序计数器、工作内存等准备好后,会分配一个系统原生线程来执行。Java线程结束,原生线程随之被回收原生线程初始化完毕,会调Java线程的run方法。当JAVA线程结束时,则释放原生线程和Java线程的所有资源java方法的执行对应虚拟机栈的一个栈帧,用于存储局部变量、操作数栈、动态链接、方法出口等
27
2020
07

构造器(有参、无参)

构造器: 就是和类名相同但无返回类型的方法。用于当前或某一对象的实例化,并将当前或某一对象返回。无参构造:1、如果使用new关键字实际上是调用无参构造器;2、无参构造往往是为了初始化一些值。有参构造:一旦定义了有参构造,必须要显示定义无参构造使用构造器需注意:1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)2.每个类可以有一个以上的构造器3.构造器可以有0个、1个或1个以上的参数4.构造器没有返回值5.构造器总是伴随着new操作一起调用123456789下面是有参无
27
2020
07

什么是集中化的版本控制系统?

那么,集中化的版本控制系统又是什么呢,说白了,就是有一个集中管理的中央服务器,保存着所有文件的修改历史版本,而协同开发者通过客户端连接到这台服务器,从服务器上同步更新或上传自己的修改。
26
2020
07

解释生产者是什么?

答:生产者的主要作用是将数据发布到他们选择的主题上。基本上,它的职责是选择要分配给主题内分区的记录。
26
2020
07

比较RabbitMQ与Apache Kafka

答:Apache Kafka的另一个选择是RabbitMQ。那么,让我们比较两者:功能Apache Kafka– Kafka是分布式的、持久的和高度可用的,这里共享和复制数据RabbitMQ中没有此类功能性能速度Apache Kafka–达到每秒100000条消息。RabbitMQ–每秒20000条消息。
26
2020
07

比较传统队列系统与Apache Kafka

答:让我们比较一下传统队列系统与Apache Kafka的功能:消息保留 传统的队列系统 - 它通常从队列末尾处理完成后删除消息。 Apache Kafka中,消息即使在处理后仍然存在。这意味着Kafka中的消息不会因消费者收到消息而被删除。基于逻辑的处理传统队列系统不允许基于类似消息或事件处理逻辑。Apache Kafka允许基于类似消息或事件处理逻辑。
26
2020
07

为什么要使用Apache Kafka集群?

答:为了克服收集大量数据和分析收集数据的挑战,我们需要一个消息队列系统。因此Apache Kafka应运而生。其好处是:只需存储/发送事件以进行实时处理,就可以跟踪Web活动。通过这一点,我们可以发出警报并报告操作指标。此外,我们可以将数据转换为标准格式。此外,它允许对主题的流数据进行连续处理。由于它的广泛使用,它秒杀了竞品,如ActiveMQ,RabbitMQ等。
26
2020
07

解释术语“Log Anatomy”

答:我们将日志视为分区。基本上,数据源将消息写入日志。其优点之一是,在任何时候,都有一个或多个消费者从他们选择的日志中读取数据。下面的图表显示,数据源正在写入一个日志,而用户正在以不同的偏移量读取该日志。  
26
2020
07

列出所有Apache Kafka业务

答:Apache Kafka的业务包括:添加和删除Kafka主题如何修改Kafka主题如何关机在Kafka集群之间镜像数据找到消费者的位置扩展您的Kafka群集自动迁移数据退出服务器数据中心
26
2020
07

Apache Kafka的缺陷

答:Kafka的局限性是:1.没有完整的监控工具集2.消息调整的问题3.不支持通配符主题选择4.速度问题
26
2020
07

解释如何调整Kafka以获得最佳性能。

答:因此,调优Apache Kafka的方法是调优它的几个组件:1.调整Kafka生产者2.Kafka代理调优3.调整Kafka消费者
26
2020
07

Kafka中的数据日志是什么?

答:我们知道,在Kafka中,消息会保留相当长的时间。此外,消费者还可以根据自己的方便进行阅读。尽管如此,有一种可能的情况是,如果将Kafka配置为将消息保留24小时,并且消费者可能停机超过24小时,则消费者可能会丢失这些消息。但是,我们仍然可以从上次已知的偏移中读取这些消息,但仅限于消费者的部分停机时间仅为60分钟的情况。此外,关于消费者从一个话题中读到什么,Kafka不会保持状态。
26
2020
07

Kafka流的特点。

答:Kafka流的一些最佳功能是Kafka Streams具有高度可扩展性和容错性。Kafka部署到容器,VM,裸机,云。我们可以说,Kafka流对于小型,中型和大型用例同样可行。此外,它完全与Kafka安全集成。编写标准Java应用程序。完全一次处理语义。而且,不需要单独的处理集群。
26
2020
07

Kafka的一些最显著的应用。

答:Netflix,Mozilla,Oracle
26
2020
07

Kafka的流处理是什么意思?

答:连续、实时、并发和以逐记录方式处理数据的类型,我们称之为Kafka流处理。
26
2020
07

系统工具有哪些类型?

答:系统工具有三种类型:1.Kafka迁移工具:它有助于将代理从一个版本迁移到另一个版本。2.Mirror Maker:Mirror Maker工具有助于将一个Kafka集群的镜像提供给另一个。3.消费者检查:对于指定的主题集和消费者组,它显示主题,分区,所有者。
26
2020
07

什么是复制工具及其类型?

答:为了增强持久性和更高的可用性,这里提供了复制工具。其类型为创建主题工具列表主题工具添加分区工具
26
2020
07

Java在Apache Kafka中的重要性是什么?

答:为了满足Kafka标准的高处理速率需求,我们可以使用java语言。此外,对于Kafka的消费者客户,Java也提供了良好的社区支持。所以,我们可以说在Java中实现Kafka是一个正确的选择。
26
2020
07

Kafka提供的保证是什么?

答:他们是生产者向特定主题分区发送的消息的顺序相同。此外,消费者实例按照它们存储在日志中的顺序查看记录。此外,即使不丢失任何提交给日志的记录,我们也可以容忍最多N-1个服务器故障。Apache Kafka对于新手的面试问题:41, 42, 43, 44, 45, 47, 49Apache Kafka对于有经验的人的面试问题:46, 48
26
2020
07

解释一些Kafka流实时用例。

答:《纽约时报》:该公司使用它来实时存储和分发已发布的内容到各种应用程序和系统,使其可供读者使用。基本上,它使用Apache Kafka和Kafka流。Zalando:作为ESB(企业服务总线)作为欧洲领先的在线时尚零售商,Zalando使用Kafka。LINE:基本上,为了相互通信,LINE应用程序使用Apache Kafka作为其服务的中心数据中心。
26
2020
07

解释术语“主题复制因子”。

答:在设计Kafka系统时,考虑主题复制是非常重要的。
26
2020
07

说明Kafka的一个最佳特征。

答:Kafka的最佳特性是“各种各样的用例”。这意味着Kafka能够管理各种各样的用例,这些用例对于数据湖来说非常常见。例如日志聚合、Web活动跟踪等。
26
2020
07

Mybatis都有哪些Executor执行器?它们之间的区别是什么?

Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map<String, Statemen
16
2020
07

介绍下 promise.all

  Promise.all()方法将多个Promise实例包装成一个Promise对象(p),接受一个数组(p1,p2,p3)作为参数,数组中不一定需要都是Promise对象,但是一定具有Iterator接口,如果不是的话,就会调用Promise.resolve将其转化为Promise对象之后再进行处理。      使用Promise.all()生成的Promise对象(p)的状态是由数组中的Promise对象(p1,p2,p3)决定的。如果所有的Prom
16
2020
07

js 执行机制、事件循环

  JavaScript 语言的一大特点就是单线程,同一个时间只能做一件事。单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。JavaScript 语言的设计者意识到这个问题,将所有任务分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous),在所有同步任务执行完之前,任何的异步任务是不会执行的。      当我们打开网站时,网页的渲染过程就是一
16
2020
07

DOM 事件有哪些阶段?谈谈对事件代理的理解

分为三大阶段:捕获阶段--目标阶段--冒泡阶段事件代理简单说就是:事件不直接绑定到某元素上,而是绑定到该元素的父元素上,进行触发事件操作时(例如'click'),再通过条件判断,执行事件触发后的语句(例如'alert(e.target.innerHTML)')好处:(1)使代码更简洁;(2)节省内存开销
16
2020
07

数组去重的方法

1.ES6 的 Setlet arr = [1,1,2,3,4,5,5,6]let arr2 = [...new Set(arr)]2.reduce()let arr = [1,1,2,3,4,5,5,6]let arr2 = arr.reduce(function(ar,cur) {  if(!ar.includes(cur)) {    ar.push(cur)  }  return ar},[])3.filter()// 这种方法会有一个问
16
2020
07

闭包的概念?优缺点?

闭包的概念:闭包就是能读取其他函数内部变量的函数。优点:避免全局变量的污染希望一个变量长期存储在内存中(缓存变量)缺点:内存泄露(消耗)常驻内存,增加内存使用量
16
2020
07

ES5 和 ES6 分别几种方式声明变量

ES5 有俩种:var 和 functionES6 有六种:增加四种,let、const、class 和 import注意:let、const、class声明的全局变量再也不会和全局对象的属性挂钩
16
2020
07

判断 js 类型的方式

1. typeof可以判断出'string','number','boolean','undefined','symbol'但判断 typeof(null) 时值为 'object'; 判断数组和对象时值均为 'object'2. instanceof原理是 构造函数的 prototype 属性是否出现在对象的原型链中的任何位置function A() {}let a = new A(
14
2020
07

JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
14
2020
07

页面间对象传递的方法

request,session,application,cookie等
14
2020
07

jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作jsp:include:在页面被请求的时候引入一个文件。jsp:useBean:寻找或者实例化一个JavaBean。jsp:setProperty:设置JavaBean的属性。jsp:getProperty:输出某个JavaBean的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
14
2020
07

jsp有哪些内置对象?作用分别是什么? 分别有什么方法?

答:JSP共有以下9个内置的对象:request 用户端请求,此请求会包含来自GET/POST请求的参数response 网页传回用户端的回应pageContext 网页的属性是在这里管理session 与请求有关的会话期application servlet 正在执行的内容out 用来传送回应的输出config servlet的构架部件page JSP网页本身exception 针对错误网页,未捕捉的例外 request表示HttpServletRequest对象。它包含了有关浏览器
14
2020
07

request.getAttribute() 和 request.getParameter() 有何区别?

1.getAttribute是取得jsp中 用setAttribute設定的attribute2.parameter得到的是string;attribute得到的是object3.request.getParameter ()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据;request.setAttribute()和 getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。即request.getAttribute()方
14
2020
07

forward 和redirect的区别

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。  redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
14
2020
07

Request对象的主要方法:

setAttribute(String name,Object):设置名字为name的request的参数值getAttribute(String name):返回由name指定的属性值getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组getCharacterEncoding():返回请求中的字符编码方式getContentLength():返回请求的Body
14
2020
07

什么情况下调用doGet()和doPost()?

Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost()。
14
2020
07

SERVLET API中forward() 与redirect()的区别?

答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
14
2020
07

Servlet的基本架构

public class ServletName extendsHttpServlet {public void doPost(HttpServletRequestrequest, HttpServletResponse response) throwsServletException, IOException {}public void doGet(HttpServletRequestrequest, HttpServletResponse response) throwsServletExc
14
2020
07

说一说Servlet的生命周期?

答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。web容器加载servlet,生命周期开始。通过调用se
14
2020
07

解释一下什么是servlet

答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。
14
2020
07

HTTP请求的GET与POST方式的区别

(1)get是从服务器上获取数据,post是向服务器传送数据。在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。(3) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。(4)安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Po
14
2020
07

Tomcat的优化经验

答:去掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存
14
2020
07

Struts,Spring,Hibernate优缺点

Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。 Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServerPages(JSP)技术的Web应用时更加容易。Struts框架为开放者提供了一个统一的标准框架,通过使用Struts作为基础,开发者能够更专注 于应用程序的商业逻辑。Struts框架本身是使用Java Servlet和JavaServer Pages技术的一
14
2020
07

spring工作机制及为什么要用?

1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.3.DispatcherServlet请请求提交到目标Controller4.Controller进行业务逻辑处理后,会返回一个ModelAndView5.Dispathcher查询一个或多个ViewResolver视图解析器,找到Model
14
2020
07

Struts工作机制?为什么要使用Struts?

工作机制:Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.   -(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;   -(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户
14
2020
07

Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。

getHiberanteTemplate里面提供了save,update,delete,find等方法。简单说一个:如果配置了声明式事务,当执行getHibernateTemplate的各种方法的时候,事务会自动被加载如果没有配置事务,那么以上操作不会真正的被同步到数据库,除非配置了hibernate的autocommit=true
14
2020
07

Hibernate中的update()和saveOrUpdate()的区别.

摘自hibernate说明文档:saveOrUpdate()做下面的事:如果对象已经在本session中持久化了,不做任何事如果另一个与本session关联的对象拥有相同的持久化标识(identifier),抛出一个异常如果对象没有持久化标识(identifier)属性,对其调用save()如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用save()如果对象是附带版本信息的(通过<version>或 <timestamp>)并且版本属性的值表
14
2020
07

spring的事务有几种方式?谈谈spring事务的隔离级别和传播行为。

声明事务和编程事务隔离级别:- DEFAULT使用数据库默认的隔离级别- READ_UNCOMMITTED会出现脏读,不可重复读和幻影读问题- READ_COMMITTED会出现重复读和幻影读- REPEATABLE_READ会出现幻影读- SERIALIZABLE最安全,但是代价最大,性能影响极其严重和传播行:- REQUIRED存在事务就融入该事务,不存在就创建事务- SUPPORTS存在事务就融入事务,不存在则不创建事务- MANDATORY存在事务则融入该事务,不存在,抛异常- REQU
14
2020
07

谈谈hibernate的延迟加载和openSessionInView

延迟加载要在session范围内,用到的时候再加载;opensessioninview是在web层写了一个filter来打开和关闭session,这样就表示在一次request过程中session一直开着,保证了延迟加载在session中的这个前提。
14
2020
07

load()和get()的区别

hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数 据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对 象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在 load时会先查一下session缓存看看该id对应的对象是否
14
2020
07

Struts1流程

1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被ActionServlet接收。3、根据struts-config.xml配置, ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。4、是否验证,需要验证则调用ActionForm的validate方法,验证失败则跳转到input,成功则继续。5、Action从ActionForm获得数据,调用javabean 中的业务方法处理数据。6、
13
2020
07

查看各类环境变量用什么命令?

答案:查看所有 env查看某个,如 home: env $HOME
13
2020
07

使用什么命令查看 ip 地址及接口信息?

答案:ifconfig
13
2020
07

使用什么命令查看网络是否连通?

答案:netstat
13
2020
07

使用什么命令查看磁盘使用空间? 空闲空间呢?

答案:df -hl文件系统 容量 已用 可用 已用% 挂载点Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G44% //dev/hda1 494M 19M 450M 4% /boot
13
2020
07

使用什么命令查看用过的命令列表?

答案:history
13
2020
07

查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?

答案:查找自己所在的终端信息:who am i查看当前谁在使用该主机:who
13
2020
07

搜索文件用什么命令? 格式是怎么样的?

答案:find <指定目录> <指定条件> <指定动作>whereis 加参数与文件名locate 只加文件名find 直接搜索磁盘,较慢。find / -name "string*"
13
2020
07

怎么查看系统支持的所有信号?

答案:kill -l
13
2020
07

终止进程用什么命令? 带什么参数?

答案:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]kill-9 pid
13
2020
07

把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?

答案:把后台任务调到前台执行 fg把停下的后台任务在后台执行起来 bg
13
2020
07

哪个命令专门用来查看后台任务?

答案:jobs
13
2020
07

怎么使一个命令在后台运行?

答案:一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)
13
2020
07

Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?

答案: 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。 grep [stringSTRING] filename grep [^string] filename
13
2020
07

Linux 下命令有哪几种可使用的通配符?分别代表什么含义?

答案: “?”可替代单个字符。 “*”可替代任意多个字符。 方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]
13
2020
07

1

11
2020
07

拼写纠错是如何实现的?

(1)拼写纠错是基于编辑距离来实现;编辑距离是一种标准的方法,它用来表示经过插入、删除和替换操作从一个字符串转换到另外一个字符串的最小操作步数;(2)编辑距离的计算过程:比如要计算 batyu 和 beauty 的编辑距离,先创建一个7×8 的表(batyu 长度为 5,coffee 长度为 6,各加 2),接着,在如下位置填入黑色数字。其他格的计算过程是取以下三个值的最小值:如果最上方的字符等于最左方的字符,则为左上方的数字。否则为左上方的数字+1。(对于 3,3 来说为 0)左方数字+1(对
11
2020
07

是否了解字典树?

常用字典数据结构如下所示:Trie 的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有 3 个基本性质:1)根节点不包含字符,除根节点外每一个节点都只包含一个字符。2)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。3)每个节点的所有子节点包含的字符都不相同。(1)可以看到,trie 树每一层的节点数是 26^i 级别的。所以为了节省空间,我们还可以用动态链表,或者用数组来模拟动态。而空间的花费,不会超过单词数×单词长度。(2)实现:对
11
2020
07

介绍一下你们的个性化搜索方案?

基于word2vec和Elasticsearch实现个性化搜索(1)基于word2vec、Elasticsearch和自定义的脚本插件,我们就实现了一个个性化的搜索服务,相对于原有的实现,新版的点击率和转化率都有大幅的提升;(2)基于word2vec的商品向量还有一个可用之处,就是可以用来实现相似商品的推荐;(3)使用word2vec来实现个性化搜索或个性化推荐是有一定局限性的,因为它只能处理用户点击历史这样的时序数据,而无法全面的去考虑用户偏好,这个还是有很大的改进和提升的空间;
11
2020
07

介绍下你们电商搜索的整体技术架构。

介绍下你们电商搜索的整体技术架构。
11
2020
07

如何监控 Elasticsearch 集群状态?

Marvel 让你可以很简单的通过 Kibana 监控 Elasticsearch。你可以实时查看你的集群健康状态和性能,也可以分析过去的集群、索引和节点指标。
11
2020
07

在并发情况下,Elasticsearch 如果保证读写一致?

(1)可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突;(2)另外对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,分片将会在一个不同的节点上重建。(3)对于读操作,可以设置 replication 为 sync(默认),这使得操作在主分片和副本分片都完成后才会返回;如果设置 replication 为 asy
11
2020
07

Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?

Elasticsearch 提供的首个近似聚合是 cardinality 度量。它提供一个字段的基数,即该字段的 distinct 或者 unique 值的数目。它是基于 HLL 算法的。HLL 会先对我们的输入作哈希运算,然后根据哈希运算的结果中的 bits 做概率估算从而得到基数。其特点是:可配置的精度,用来控制内存的使用(更精确 = 更多内存);小的数据集精度是非常高的;我们可以通过配置参数,来设置去重需要的固定内存使用量。无论数千还是数十亿的唯一值,内存使用量只与你配置的精确度相关。&n
11
2020
07

对于 GC 方面,在使用 Elasticsearch 时要注意什么?

(1)倒排词典的索引需要常驻内存,无法 GC,需要监控 data node 上 segmentmemory 增长趋势。(2)各类缓存,field cache, filter cache, indexing cache, bulk queue 等等,要设置合理的大小,并且要应该根据最坏的情况来看 heap 是否够用,也就是各类缓存全部占满的时候,还有 heap 空间可以分配给其他任务吗?避免采用 clear cache等“自欺欺人”的方式来释放内存。(3)避免返回大量结果集的搜索与聚合。确实需要大
11
2020
07

Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

(1)64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的。少于 8 GB 会适得其反。(2)如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。(3)如果你负担得起 SSD,它将远远超出任何旋转介质。 基于 SSD 的节点,查询和索引性能都有提升。如果你负担得起,SSD 是一个好的选择。(4)即使数据中心们近在咫尺,也要避免集群跨越多个数据中心。绝对要避免集群跨越大的地理距离。(5)请确保
11
2020
07

在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?

(1)Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。(2)Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。
11
2020
07

详细描述一下 Elasticsearch 搜索的过程。

(1)搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch;(2)在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的优先队列。PS:在搜索的时候是会查询 Filesystem Cache 的,但是有部分数据还在 MemoryBuffer,所以搜索是近实时的。(3)每个分片返回各自优先队列中 所有文档的 ID 和排序值 给协调节点,它合并这些值到自己的优先队列中来产生一个全局排
11
2020
07

详细描述一下 Elasticsearch 更新和删除文档的过程。

(1)删除和更新也都是写操作,但是 Elasticsearch 中的文档是不可变的,因此不能被删除或者改动以展示其变更;(2)磁盘上的每个段都有一个相应的.del 文件。当删除请求发送后,文档并没有真的被删除,而是在.del 文件中被标记为删除。该文档依然能匹配查询,但是会在结果中被过滤掉。当段合并时,在.del 文件中被标记为删除的文档将不会被写入新段。(3)在新的文档被创建时,Elasticsearch 会为该文档指定一个版本号,当执行更新时,旧版本的文档在.del 文件中被标记为删除,新版
11
2020
07

详细描述一下 Elasticsearch 索引文档的过程。

协调节点默认使用文档 ID 参与计算(也支持通过 routing),以便为路由提供合适的分片。shard = hash(document_id) % (num_of_primary_shards)(1)当分片所在的节点接收到来自协调节点的请求后,会将请求写入到 MemoryBuffer,然后定时(默认是每隔 1 秒)写入到 Filesystem Cache,这个从 MomeryBuffer 到 Filesystem Cache 的过程就叫做 refresh;(2)当然在某些情况下,存在 Mome
11
2020
07

客户端在和集群连接时,如何选择特定的节点执行请求的?

TransportClient 利用 transport 模块远程连接一个 elasticsearch 集群。它并不加入到集群中,只是简单的获得一个或者多个初始化的 transport 地址,并以 轮询 的方式与这些地址进行通信。 
11
2020
07

Elasticsearch 中的节点(比如共 20 个),其中的 10 个

选了一个 master,另外 10 个选了另一个 master,怎么办?(1)当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题;(3)当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data节点,避免脑裂问题。
11
2020
07

Elasticsearch 是如何实现 Master 选举的?

(1)Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之间通过这个 RPC 来发现彼此)和 Unicast(单播模块包含一个主机列表以控制哪些节点需要 ping 通)这两部分;(2)对所有可以成为 master 的节点(node.master: true)根据 nodeId 字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第 0 位)节点,暂且认为它是 master 节点。(3)如果对某个节点的投票数达到一定的值(可以成为
11
2020
07

lucence 内部结构是什么?

面试官:想了解你的知识面的广度和深度。解答:Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。可以基于这个脉络展开一些。 
11
2020
07

Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法

面试官:想了解对 ES 集群的运维能力。解答:(1)关闭缓存 swap;(2)堆内存设置为:Min(节点内存/2, 32GB);(3)设置最大文件句柄数;(4)线程池+队列大小根据业务需要做调整;(5)磁盘存储 raid 方式——存储有条件使用 RAID10,增加单节点性能以及避免单节点存储故障。
11
2020
07

详细描述一下 Elasticsearch 搜索的过程?

面试官:想了解 ES 搜索的底层原理,不再只关注业务层面了。解答:搜索拆解为“query then fetch” 两个阶段。query 阶段的目的:定位到位置,但不取。步骤拆解如下:(1)假设一个索引数据有 5 主+1 副本 共 10 分片,一次请求会命中(主或者副本分片中)的一个。(2)每个分片在本地进行查询,结果返回到本地有序的优先队列中。(3)第 2)步骤的结果发送到协调节点,协调节点产生一个全局的排序列表。fetch 阶段的目的:取数据。路由节点获取所有文档,返回给客户端。
11
2020
07

详细描述一下 Elasticsearch 索引文档的过程

面试官:想了解 ES 的底层原理,不再只关注业务层面了。解答:这里的索引文档应该理解为文档写入 ES,创建索引的过程。文档写入包含:单文档写入和批量 bulk 写入,这里只解释一下:单文档写入流程。记住官方文档中的这个图。第一步:客户写集群某节点写入数据,发送请求。(如果没有指定路由/协调节点,请求的节点扮演路由节点的角色。)第二步:节点 1 接受到请求后,使用文档_id 来确定文档属于分片 0。请求会被转到另外的节点,假定节点 3。因此分片 0 的主分片分配到节点 3 上。第三步:节点 3 在
11
2020
07

elasticsearch 是如何实现 master 选举的

面试官:想了解 ES 集群的底层原理,不再只关注业务层面了。解答:前置前提:(1)只有候选主节点(master:true)的节点才能成为主节点。(2)最小主节点数(min_master_nodes)的目的是防止脑裂。核对了一下代码,核心入口为 findMaster,选择主节点成功返回对应 Master,否则返回 null。选举流程大致描述如下:第一步:确认候选主节点数达标,elasticsearch.yml 设置的值discovery.zen.minimum_master_nodes;第二步:比
11
2020
07

elasticsearch 索引数据多了怎么办,如何调优,部署

面试官:想了解大数据量的运维能力。解答:索引数据的规划,应在前期做好规划,正所谓“设计先行,编码在后”,这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户检索或者其他业务受到影响。如何调优,正如问题 1 所说,这里细化一下:3.1 动态索引层面基于模板+时间+rollover api 滚动创建索引,举例:设计阶段定义:blog 索引的模板格式为:blog_index_时间戳的形式,每天递增数据。这样做的好处:不至于数据量激增导致单个索引数据量非常大,接近于上线 2 的32 次
11
2020
07

elasticsearch 的倒排索引是什么

面试官:想了解你对基础概念的认知。解答:通俗解释一下就可以。传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置。而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表即为倒排索引。有了倒排索引,就能实现 o(1)时间复杂度的效率检索文章了,极大的提高了检索效率。学术的解答方式:倒排索引,相反于一篇文章包含了哪些词,它从词出发,记载了这个词在哪些文档中出现过,由两部分组成——词典和倒排表。加分项:倒排索引的底层实现是基于:FST(Finite State Transduce
11
2020
07

elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。

面试官:想了解应聘者之前公司接触的 ES 使用场景、规模,有没有做过比较大规模的索引设计、规划、调优。解答:如实结合自己的实践场景回答即可。比如:ES 集群架构 13 个节点,索引根据通道不同共 20+索引,根据日期,每日递增 20+,索引:10 分片,每日递增 1 亿+数据,每个通道每天索引大小控制:150GB 之内。仅索引层面调优手段:1.1、设计阶段调优(1)根据业务增量需求,采取基于日期模板创建索引,通过 roll over API 滚动索引;(2)使用别名进行索引管理;(3)每天凌晨定
11
2020
07

Elasticsearch是一个高度可伸缩的开源全文搜索和分析引擎。它允许您快速和接近实时地存储、搜索和分析大量数据。

这里有一些使用Elasticsearch的用例:(1)你经营一个网上商店,你允许你的顾客搜索你卖的产品。在这种情况下,您可以使用Elasticsearch来存储整个产品目录和库存,并为它们提供搜索和自动完成建议。(2)你希望收集日志或事务数据,并希望分析和挖掘这些数据,以查找趋势、统计、汇总或异常。在这种情况下,你可以使用loghide (Elasticsearch/ loghide /Kibana堆栈的一部分)来收集、聚合和解析数据,然后让loghide将这些数据输入到Elasticsearc
11
2020
07

Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎。

(1)查询 : Elasticsearch 允许执行和合并多种类型的搜索 — 结构化、非结构化、地理位置、度量指标 — 搜索方式随心而变。(2)分析 : 找到与查询最匹配的十个文档是一回事。但是如果面对的是十亿行日志,又该如何解读呢?Elasticsearch 聚合让您能够从大处着眼,探索数据的趋势和模式。(3)速度 : Elasticsearch 很快。真的,真的很快。(4)可扩展性 : 可以在笔记本电脑上运行。 也可以在承载了 PB 级数据的成百上千台服务器上运行。(5)弹性 : Elast
11
2020
07

如何检查Elasticsearch服务器是否正在运行?

通常,ElasticSearch使用9200-9300的端口范围。因此,要检查它是否在您的服务器上运行,只需键入主页的URL,然后输入端口号。 例如:mysitename.com:9200
11
2020
07

列出Elasticsearch的不同类型的查询?

这些查询分为两种类型,在它们下面有多个查询分类:  基于全文检索:匹配查询、匹配词组查询、多匹配查询、匹配词组前缀查询、常用词查询、查询字符串查询、简单查询字符串查询。  基于词条检索:词条查询、词条集查询、范围查询、前缀查询、通配符查询、regexp查询、模糊查询、存在查询、类型查询、id查询
11
2020
07

如何在Elasticsearch群集中添加或创建索引?

 通过在索引名称之前使用命令PUT,创建索引,如果要添加另一个索引,则在索引名称前使用命令POST。 例如:put网站 创建名为computer的索引
11
2020
07

什么是文档?

  Elasticsearch中的文档与关系数据库中的行类似。唯一的区别是索引中的每个文档都可以具有不同的结构或字段但对于公共字段必须具有相同的数据类型。文档中的每个数据类型不同的字段可以出现多次。这些字段还可以包含其他文档
11
2020
07

Elasticsearch中的群集是什么?

 它是由一个或多个节点或服务器组成的集合或集合,这些节点或服务器用来保存完整的数据,并提供跨所有节点的联合索引和搜索功能。它由一个不同且唯一的名称标识,默认为“ElasticSearch”。 此名称被认为是重要的,因为只有将节点设置为按名称加入集群时,它才能成为集群的一部分。
11
2020
07

Elasticsearch数据储存在哪里?

  ElasticSearch是一个带有多个目录的分布式文档存储。它可以实时存储和检索序列化为JSON文档的复杂数据结构。
11
2020
07

列出安装Elasticsearch的软件要求?

  由于Elasticsearch是使用Java构建的,因此我们需要以下任何软件才能在我们的设备上运行Elasticsearch     Java 8系列的最新版本建议使用Java版本1.8.0_131
11
2020
07

在ElasticSearch中聚合是如何工作的?

   聚合框架提供基于搜索查询的聚合数据。它可以看作是一个工作单元,用于在一组文档上构建分析信息。聚合的类型不同,用途和输出也不同。
11
2020
07

什么是SHARDS?

由于应用程序在不同的机器上使用了多个ElasticSearch实例,因此在扩展方面存在诸如RAM、VCPU等资源限制。索引中的数据可以分为多个部分,由一个单独的ElasticSearch节点或实例管理。每个部分称为一个SHARDS。默认情况下,ElasticSearch索引有5个SHARDS。
11
2020
07

您能列出一些使用Elasticsearch的公司吗?

一些使用Elasticsearch以及Logstash和Kibana的公司是:·  Wikipedia·  Netflix·  Accenture·  Stack Overflow·  Fujitsu·  Tripwire·  Medium·  Swat.io·  Hip chat·  IFTTT
11
2020
07

如何在ES中列出集群的所有索引?

通过使用 GET / _index name/ indices,我们可以获得集群中存在的索引列表
11
2020
07

什么是REPLICAS?

Elasticsearch中的每个分片再次具有两个称为副本的分片副本。它们服务于容错和高可用性的目的
11
2020
07

如何在Elasticsearch中完成相关性和评分?

 Lucene使用布尔模型来查找类似文档,并使用一个称为实用评分函数的公式来计算相关性。该公式从逆文档/术语 - 文档频率和向量空间模型中复制概念,并添加了细条印子字段长度归一化等现代特征。得分(q , d)是查询“q”是文档“d”的相关得分。
11
2020
07

Elasticsearch可以取代数据库吗?

 是的,Elasticsearch可以用作数据库的替代品,因为Elasticsearch非常强大。它提供了多用户,分片和备份,分发和云实时获取,刷新,提交,版本控制和重新索引等功能,使其成为数据库的适当替代品。
11
2020
07

Elasticsearch中如何删除索引?

要在ElasticSearch中删除索引,请使用命令delete/index name。   例如:DELETE /website(删除/网站)
11
2020
07

如何在索引中添加映射?

 基本上,Elasticsearch将根据用户在请求正文中提供的数据自动创建映射。其批量功能可用于在索引中添加多个JSON对象。 例如:POST网站/ _bulk
11
2020
07

如何在ES中按ID检索文档?

要在ElasticSearch中检索文档,我们使用get动词,后跟_index、_type、_id。例如:get/computer/blog/123?=漂亮
11
2020
07

什么是索引?

ElasticSearch中的索引类似于关系数据库中的表,唯一的区别在于将实际值存储在关系数据库中,而ElasticSearch中的索引是可选的。 索引能够在索引中存储实际值或分析值。
11
2020
07

如何启动 Elasticsearch服务器?

在终端上运行以下命令以启动Elasticsearch服务器:   cd elasticsearch    ./bin/elasticsearch    curl'http:// localhost:9200 /?pretty'命令用于检查ElasticSearch服务器是否正在运行
11
2020
07

Elasticsearch的当前稳定版本是什么?

  截至2018年3月,版本6.2.2是Elasticsearch的最新稳定版本。
11
2020
07

在Elasticsearch中搜索的方式有哪些?

我们可以在Elasticsearch中执行以下搜索: 多索引,多类型搜索:所有搜索API都可以应用于所有多个索引,并支持多索引系统我们可以搜索所有索引中的某些标签以及所有索引和所有类型的所有标签。 URI搜索:通过提供请求参数,纯粹使用URI执行搜索请求。 请求正文搜索:搜索请求可以由搜索DSL执行,搜索DSL包括正文中的查询DSL。
11
2020
07

基于词条的查询和全文的查询有什么区别?

基于词条的查询:词条查询或模糊查询等查询是没有分析阶段的低级查询。词条查询术语Foo在倒排索引中搜索确切的词条并计算IDF / TF相关性分数对于每个有词条的文档。全文查询:匹配查询或查询字符串查询等查询是了解字段映射的高级查询。只要查询汇总了完整的项目列表,它就会为每个项执行适当的低级查询,最后结合他们的结果来产生每个文档的相关性分数。
11
2020
07

什么是节点?

 Elasticsearch 的每个实例都是一个节点,多个节点的集合可以协调工作,形成一个  Elasticsearch 集群
11
2020
07

请解析映射?

影射是定义文档如何映射到搜索引擎的过程,包括可搜索的特征,例如那些字段是标记以即刻搜索的。在Elasticsearch中,创建的索引可能包含所有“映射类型”的文档。
11
2020
07

ElasticSearch中的分片是什么

 在大多数环境中,每个节点都在单独的盒子或虚拟机上运行。  索引 - 在Elasticsearch中,索引是文档的集合。  分片 -因为Elasticsearch是一个分布式搜索引擎,所以索引通常被分割成分布在多个节点上的被称为分片的元素。
11
2020
07

在并发情况下,Elasticsearch如果保证读写一致?

可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突;  另外对于写操作,一致性级别支持quorum/one/all,默认为quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,分片将会在一个不同的节点上重建。  对于读操作,可以设置replication为sync(默认),这使得操作在主分片和副本分片都完成后才会返回;如果设置replication为async时,也可以通过设置搜索
11
2020
07

Elasticsearch对于大数据量(上亿量级)的聚合如何实现?

Elasticsearch 提供的首个近似聚合是cardinality 度量。它提供一个字段的基数,即该字段的distinct或者unique值的数目。它是基于HLL算法的。HLL 会先对我们的输入作哈希运算,然后根据哈希运算的结果中的 bits 做概率估算从而得到基数。其特点是:可配置的精度,用来控制内存的使用(更精确 = 更多内存);小的数据集精度是非常高的;我们可以通过配置参数,来设置去重需要的固定内存使用量。无论数千还是数十亿的唯一值,内存使用量只与你配置的精确度相关 .
11
2020
07

详细描述一下Elasticsearch搜索的过程

 搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch;  在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的优先队列。PS:在搜索的时候是会查询Filesystem Cache的,但是有部分数据还在Memory Buffer,所以搜索是近实时的。  每个分片返回各自优先队列中 所有文档的 ID 和排序值 给协调节点,它合并这些值到自己的优先队列中来产生一个全局排序后的结果列
11
2020
07

详细描述一下Elasticsearch更新和删除文档的过程

 删除和更新也都是写操作,但是Elasticsearch中的文档是不可变的,因此不能被删除或者改动以展示其变更;  磁盘上的每个段都有一个相应的.del文件。当删除请求发送后,文档并没有真的被删除,而是在.del文件中被标记为删除。该文档依然能匹配查询,但是会在结果中被过滤掉。当段合并时,在.del文件中被标记为删除的文档将不会被写入新段。  在新的文档被创建时,Elasticsearch会为该文档指定一个版本号,当执行更新时,旧版本的文档在.del文件中被标记为删除,新版本的文档被索引到一个新
11
2020
07

详细描述一下Elasticsearch索引文档的过程。

 协调节点默认使用文档ID参与计算(也支持通过routing),以便为路由提供合适的分片。  shard = hash(document_id) % (num_of_primary_shards)  当分片所在的节点接收到来自协调节点的请求后,会将请求写入到Memory Buffer,然后定时(默认是每隔1秒)写入到Filesystem Cache,这个从Momery Buffer到Filesystem   Cache的过程就叫做refresh;  当然在某些情况下,存在Momery Buffe
11
2020
07

Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?

 当集群master候选数量不小于3个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题;当候选数量为两个时,只能修改为唯一的一个master候选,其他作为data节点,避免脑裂问题。
11
2020
07

Elasticsearch是如何实现Master选举的?

 Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分;  对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是master节点。  如果对某个节点的投票数达到一定的值(可以成为master节点数n/2+1)并且该节点自
11
2020
07

为什么要使用Elasticsearch?

因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下,而我们使用ES做一个全文索引,我们将经常查询的商品的某些字段,比如说商品名,描述、价格还有id这些字段我们放入我们索引库里,可以提高查询速度。
07
2020
07

Android Intent 的使用

在一个 Android 应用中,主要是由一些组件组成,( Activity,Service,ContentProvider,etc.) 在这些组件之间的通讯中,由 Intent 协助完成。正如网上一些人解析所说, Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述, Android 则根据此 Intent 的描述,负责找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。 Intent 在这里起着实现调用者与被调用者之间的解耦作用。Intent 传递过程中,
07
2020
07

什么是 ANR 如何避免它 ?

ANR : Application Not Responding ,五秒在 Android 中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时, Android 就会显示 ANR 对话框了:对输入事件 ( 如按键、触摸屏事件 ) 的响应超过 5 秒意向接受器 (intentReceiver) 超过 10 秒钟仍未执行完毕Android 应用程序完全运行在一个独立的线程中 ( 例如 main) 。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发 ANR
07
2020
07

4 种 activity 的启动模式

standard: 标准模式 ,一调用 startActivity() 方法就会产生一个新的实例。singleTop : 如果已经有一个实例位于 Activity 栈的顶部时,就不产生新的实例,而只是调用 Activity中的 newInstance() 方法。如果不位于栈顶,会产生一个新的实例。singleTask : 会在一个新的 task 中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。singleInstance : 这个跟 singleTask 基本上是一样,只有一个区
07
2020
07

Android 中的长度单位详解

现在这里介绍一下 dp 和 sp 。 dp 也就是 dip 。这个和 sp 基本类似。如果设置表示长度、高度等属性时可以使用 dp 或 sp 。但如果设置字体,需要使用 sp 。 dp 是与密度无关, sp 除了与密度无关外,还与 scale 无关。如果屏幕密度为 160 ,这时 dp 和 sp 和 px 是一样的。 1dp=1sp=1px ,但如果使用 px 作单位,如果屏幕大小不变(假设还是 3.2 寸),而屏幕密度变成了 320 。那么原来TextView 的宽度设成 160px ,在密度
07
2020
07

设计模式和 IoC( 控制反转 )

Android 框架魅力的源泉在于 IoC ,在开发 Android 的过程中你会时刻感受到 IoC 带来的巨大方便,就拿 Activity 来说,下面的函数是框架调用自动调用的:protected void onCreate(Bundle savedInstanceState) ;不是程序编写者主动去调用,反而是用户写的代码被框架调用,这也就反转了!当然 IoC 本身的内涵远远不止这些,但是从这个例子中也可以窥视出 IoC带来的巨大好处。此类的例子在 Android 随处可见,例如说数据库的管
07
2020
07

广播接收者生命周期

一个广播接收者有一个回调方法: void onReceive(Context curContext , Intent broadcastMsg )。当一个广播消息到达接收者是, Android 调用它的 onReceive() 方法并传递给它包含消息的 Intent对象。广播接收者被认为仅当它执行这个方法时是活跃的。当 onReceive() 返回后,它是不活跃的。有一个活跃的广播接收者的进程是受保护的,不会被杀死。但是系统可以在任何时候杀死仅有不活跃组件的进程,当占用的内存别的进程需要时。这带
07
2020
07

ListView 优化

工作原理 :ListView 针对 List 中每个 item ,要求 adapter “ 给我一个视图 ” (getView) 。一个新的视图被返回并显示如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图? NO! 这不可能!实际上 Android 为你缓存了视图。Android 中有个叫做 Recycler 的构件,下图是他的工作原理:如果你有 10 亿个项目 (item) ,其中只有可见的项目存在内存中,其他的在 Recycler 中。1. ListView 先请求一个 type1
07
2020
07

如何启用 Service ,如何停用 Service

Android 中的服务和 windows 中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务的开发比较简单,如下:第一步:继承 Service 类public class SMSService extends Service {}第二步:在 AndroidManifest.xml 文件中的 <application> 节点里对服务进行配置 :<service android:name=”.SMSService”
07
2020
07

请介绍下 Android 中常用的五种布局

Android 布局是应用界面开发的重要一环,在 Android 中,共有五种布局方式,分别是:FrameLayout (框架布局), LinearLayout (线性布局),AbsoluteLayout (绝对布局), RelativeLayout (相对布局), TableLayout (表格布局)。1.FrameLayout这个布局可以看成是墙脚堆东西,有一个四方的矩形的左上角墙脚,我们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简
07
2020
07

Android 常用控件的信息

单选框 (RadioButton 与 RadioGroup) :RadioGroup 用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。事件: setOnCheckedChangeListener() ,处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener 实例作为参数传入。多选框 (CheckBox):每个多选框都是独立的,可以通过迭代所有的多选框,然后根据其状态是否被选中在获取其值。事件: setOnCheckChangeListener()
07
2020
07

Android 系统的架构

android 的系统架构和其操作系统一样,采用了分层的架构。从架构图看, android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和 linux 核心层。1. 应用程序Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端, SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用 JAVA 语言编写的。2. 应用程序框架开发人员也可以完全访问核心应用程序所使用的 API 框架。该应用程序的架构设计简化了组件
07
2020
07

在 android 中 mvc 的具体体现

MVC 是 Model,View,Controller 的缩写,从上图可以看出 MVC 包含三个部分:.. 模型( Model )对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。.. 视图( View )对象:是应用程序中负责生成用户界面的部分。也是在整个MVC 架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。.. 控制器( Control )对象:是根据用户的输入,控制用户界面数据显示及更新Model 对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交
07
2020
07

如何将打开 res aw 目录中的数据库文件 ?

解答:在 Android 中不能直接打开 res aw 目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或 SD 卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource 方法获得 res aw 目录中资源的 InputStream 对象,然后将该InputStream 对象中的数据写入其他的目录中相应文件中。在 Android SDK 中可以使用SQLiteDatabase.openOrCreateDatabas
07
2020
07

如何将 SQLite 数据库 (dictionary.db 文件 ) 与 apk 文件一起发布 ?

解答:可以将 dictionary.db 文件复制到 Eclipse Android 工程中的 res aw 目录中。所有在 res aw 目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将 dictionary.db 文件复制到 res aw 目录中
07
2020
07

让 Activity 变成一个窗口: Activity 属性设定

讲点轻松的吧 , 可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很 简单你只需要设置 一下 Activity 的主题就可以了在 AndroidManifest.xml 中定义 Activity 的 地方一句话:Xml 代码1. android :theme=”@android:style/Theme.Dialog”这就使你的应用程序变成对话框的形式弹出来了,或者Xml 代码1. android:theme=”@android:style/Theme.Translucent”就变成
07
2020
07

sim 卡的 EF 文件有何作用

sim 卡的文件系统有自己规范,主要是为了和手机通讯, sim 本 身可以有自己的操作系统,EF 就是作存储并和手机通讯用的
07
2020
07

Android dvm 的进程和 Linux 的进程 , 应用程序的进程是否为同一个概念

DVM 指 dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。而每一个 DVM 都是在 Linux 中的一个进程,所以说可以认为是同一个概念。 
07
2020
07

android 中线程与线程,进程与进程之间如何通信

1 、一个 Android 程序开始运行时,会单独启动一个 Process 。默认情况下,所有这个程序中的 Activity 或者 Service 都会跑在这个 Process 。默认情况下,一个 Android 程序也只有一个 Process ,但一个 Process 下却可以有许多个 Thread。2 、一个 Android 程序开始运行时,就有一个主线程 Main Thread 被创建。该线程主要负责 UI 界面的显示、更新和控件交互,所以又叫 UI Thread 。一个 Android
07
2020
07

什么是嵌入式实时操作系统 , Android 操作系统属于实时操作系统吗 ?

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而 android 是基于linux 内核的,因此属于软实时。
07
2020
07

handler 机制的原理

andriod 提供了 Handler 和 Looper 来满足线程间的通信。 Handler 先进先出原则。 Looper 类用来管理特定线程内对象之间的消息交换 (Message Exchange) 。1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的 Message Queue( 消息队列 ) 。2)Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里; 或者接收 Looper
07
2020
07

一条最长的短信息约占多少 byte?

中文70( 包括标点) ,英文160 ,160 个字节。
07
2020
07

android 中的动画有哪几类,它们的特点和区别是什么 ?

两种,一种是 Tween 动画、还有一种是 Frame 动画。 Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化 ; 另一种 Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
07
2020
07

横竖屏切换时候 activity 的生命周期

1. 不设置 Activity 的 android:configChanges 时 , 切屏会重新调用各个生命周期 , 切横屏时会执行一次 , 切竖屏时会执行两次 .2. 设置 Activity 的 android:configChanges=”orientation” 时 , 切屏还是会重新调用各个生命周期 , 切横、竖屏时只会执行一次 .3. 设置 Activity 的 android:configChanges=”orientation|keyboardHidden” 时 , 切屏不会重新
07
2020
07

如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?

当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B这个时候A会执行Java代码public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong(“id”, 1234567890);}B 完成以后又会来找A, 这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A就要重新调用onCreate()方
07
2020
07

vue如何自定义一个过滤器?

html代码:<div id="app">     <input type="text" v-model="msg" />     {{msg| capitalize }}</div>JS代码:var vm=new Vue({    el:"#app",    data:{ 
07
2020
07

vue-cli如何新增自定义指令?

1.创建局部指令var app = new Vue({    el: '#app',    data: {        },    // 创建指令(可以多个)    directives: {        // 指令名称        dir1: {    &
07
2020
07

vue路由的钩子函数

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

Vue与Angular以及React的区别?

(版本在不断更新,以下的区别有可能不是很正确。我工作中只用到vue,对angular和react不怎么熟)1.与AngularJS的区别相同点:都支持指令:内置指令和自定义指令;都支持过滤器:内置过滤器和自定义过滤器;都支持双向数据绑定;都不支持低端浏览器。不同点:AngularJS的学习成本高,比如增加了Dependency Injection特性,而Vue.js本身提供的API都比较简单、直观;在性能上,AngularJS依赖对数据做脏检查,所以Watcher越多越慢;Vue.js使用基于依
07
2020
07

Vue的路由实现:hash模式 和 history模式

hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash读取;特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 http://www.xxx.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误。history模式:history采用HTML5的新特性;且提供了两个新方法:pus
07
2020
07

Vue实现数据双向绑定的原理:Object.defineProperty()

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

什么是MVVM?

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

mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

mvc和mvvm其实区别并不大。都是一种设计思想。主要就是mvc中Controller演变成mvvm中的viewModel。mvvm主要解决了mvc中大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。区别:vue数据驱动,通过数据来显示视图层而不是节点操作。场景:数据操作比较多的场景,更加便捷
07
2020
07

组件之间的传值?

父组件与子组件传值父组件通过标签上面定义传值子组件通过props方法接受数据子组件向父组件传递数据子组件通过$emit方法传递参数
07
2020
07

路由之间跳转

声明式(标签跳转) 编程式( js跳转)
07
2020
07

v-show和v-if指令的共同点和不同点

v-show指令是通过修改元素的display的CSS属性让其显示或者隐藏;v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果;使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。
07
2020
07

keep-alive /keep-alive的作用是什么?

包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染。
07
2020
07

Vue中引入组件的步骤?

1)采用ES6的import … from …语法或CommonJS的require()方法引入组件2)对组件进行注册,代码如下// 注册Vue.component(‘my-component’, { template:’A custom component!'})3)使用组件
07
2020
07

指令v-el的作用是什么?

提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标.可以是 CSS 选择器,也可以是一个 HTMLElement 实例
07
2020
07

在Vue中使用插件的步骤

采用ES6的import … from …语法或CommonJSd的require()方法引入插件使用全局方法Vue.use( plugin )使用插件,可以传入一个选项对象Vue.use(MyPlugin, { someOption: true })
07
2020
07

active-class是哪个组件的属性?

vue-router模块的router-link组件。