08
2020
03

描述数组、链表、队列、堆栈的区别?

数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据;队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出;队列和堆栈可以用数组来实现,也可以用链表实现。
08
2020
03

Python中的yield用法

yield简单说来就是一个生成器,这样函数它记住上次返 回时在函数体中的位置。对生成器第 二次(或n 次)调用跳转至该函 次)调用跳转至该函数。
06
2020
03

常用Linux命令

ls,help,cd,more,clear,mkdir,pwd,rm,grep,find,mv,su,date
06
2020
03

如何提高python的运行效率

使用生成器;关键代码使用外部功能包(Cython,pylnlne,pypy,pyrex);针对循环的优化--尽量避免在循环中访问变量的属性
06
2020
03

线上服务可能因为种种原因导致挂掉怎么办?

linux下的后台进程管理利器 supervisor每次文件修改后再linux执行 service supervisord restart
06
2020
03

find和grep

grep命令是一种强大的文本搜索工具,grep搜索内容串可以是正则表达式,允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。find通常用来再特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
06
2020
03

大数据的文件读取

1)利用生成器generator2)迭代器进行迭代遍历:for line in file
06
2020
03

什么是猴子补丁?

在运行期间动态修改一个类或模块。class A:  def func(self):      print("Hi")def monkey(self):print "Hi, monkey"m.A.func = monkeya = m.A()a.func()Hi, Monkey
06
2020
03

解释Python的参数传递机制

Python使用按引用传递(pass-by-reference)将参数传递到函数中。如果你改变一个函数内的参数,会影响到函数的调用。这是Python的默认操作。不过,如果我们传递字面参数,比如字符串、数字或元组,它们是按值传递,这是因为它们是不可变的。
06
2020
03

每当Python退出时,为什么不是所有的内存都被解除分配?

每当python退出时,尤其是那些对其他对象具有循环引用的Python模块或者从全局名称空间引用的对象并不总是被解除分配或释放。由于python拥有自己的高效清理机制,无法解除分配保留的那些内存部分会在退出时尝试取消分配/销毁其他所有对象。
06
2020
03

ascii、unicode、utf-8、gbk 区别?

ASCII码:使用一个字节编码,所以它的范围基本是只有英文字母、数字和一些特殊符号 ,只有256个字符;Unicode:能够表示全世界所有的字节;GBK:是只用来编码汉字的,GBK全称《汉字内码扩展规范》,使用双字节编码;UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码。
06
2020
03

Lambda和Def之间的主要区别是什么?

当lambda是uni-expression函数时,Def可以包含多个表达式。Def生成一个函数并指定一个名称以便稍后调用它。Lambda形成一个函数对象并返回。Def可以有一个return语句。Lambda不能有return语句。Lambda支持在列表和字典中使用。
06
2020
03

什么是Python中的“按引用调用”?

我们可以互换地使用“引用调用”和“引用传递”。当我们通过引用传递参数时,它可以作为函数的隐式引用,而不是简单的副本。在这种情况下,对参数的任何修改也将对调用者可见。该方案还具有带来更多时间和空间效率的优点,因为它留下了创建本地副本的需要。相反,缺点可能是函数调用期间变量可能会意外更改。
06
2020
03

Python中的“按值调用”是什么?

在call-by-value中,表达式或值是否绑定到函数中的相应变量的参数。Python会将该变量视为函数级范围中的本地变量。对该变量所做的任何更改都将保留在本地,并且不会反映在该函数之外。
06
2020
03

range和xrange有什么区别?

在大多数情况下,xrange和range在功能方面完全相同,它们都提供了一种生成整数列表的方法。唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。
06
2020
03

解释Python Flask中的数据库连接

Flask支持数据库驱动的应用程序(RDBS)。Flask允许以三种方式请求数据库1)before_request():在请求之前调用它们并且不传递任何参数2)after_request():在请求后调用它们并传递将发送到客户端的响应3)teardown_request():在引发异常时调用它们,并且不保证响应。它们在响应构建后被调用。不允许他们修改请求,并忽略它们的值。
06
2020
03

解释Python中“re”模块的split(),sub(),subn()方法。

为了修改字符串,Python的“re”模块提供了3种方法。1)split() - 使用正则表达式模式将给定字符串“拆分”到列表中;2)sub() - 查找正则表达式模式匹配的所有子字符串,然后用不同的字符串替换它们;3)subn() - 它类似于sub(),并且还返回新字符串和no。替换。
06
2020
03

什么是负索引

Python序列可以是正数和负数的索引。对于正索引,0是第一个索引,1是第二个索引,依此类推。对于负索引,( - 1)是最后一个索引,( - 2)是倒数第二个索引,依此类推。
06
2020
03

如何以相反的顺序显示文本文件的内容?

1)将给定文件转换为列表2)使用reverse()反转列表例如:for reverse in reverse(list(open(“file-name”,“r”))):print()
06
2020
03

Python如何处理内存管理?

Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此私有堆。Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。
06
2020
03

如何在Python中执行模式匹配?

正则表达式(RE)使我们能够指定匹配给定字符串的特定“部分”的表达式。例如,我们可以定义一个正则表达式来匹配单个字符或数字,电话号码或电子邮件地址等.Python的“re”模块提供正则表达式模式,并从Python 2.5的更高版本中引入。“re”模块提供搜索文本字符串的方法,或者替换文本字符串以及基于定义的模式拆分文本字符串的方法。
06
2020
03

Python支持多少种序列?

Python支持7种序列类型。它们是str,list,tuple,unicode,byte array,xrange和buffer。其中xrange在python 3.5.X中已弃用。
06
2020
03

解释Python支持的所有文件处理模式?

Python中可以使用三种方法打开文件。他们是:1)通过分别指定标志“r”,“w”,“rw”,“a”,只读模式,只写模式,读写模式和附加模式;2)通过指定选项“t”,可以在上述任何一种模式中打开文本文件;3)“r”,“w”,“rw”和“a”,以便前面的模式变为“rt”,“wt”,“rwt”和“at”。二进制文件可以在任何一个中打开上述模式通过指定选项“b”以及“r”,“w”,“rw”和“a”使得前面的模式为“rb”,“wb”,“rwb”,“ab”。
06
2020
03

解释使用with声明?

在python中,通常“with”语句用于打开文件,处理文件中存在的数据,还可以在不调用close()方法的情况下关闭文件。
06
2020
03

在Python中命名与文件相关的模块?

Python为库/模块提供了一些函数,你可以在文件系统上操作文本文件和二进制文件。使用它们完成创建文件,更新内容,复制和删除文件的操作。这些库是:os,os.path和shutil。
06
2020
03

什么是酸洗和去除?

Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用dump函数将其转储到文件中,此过程称为pickling。从存储的字符串表示中检索原始Python对象的过程称为unpickling。
06
2020
03

请谈谈.pyc文件和.py文件的不同之处

虽然这两种文件均保存字节代码,但.pyc文件是Python文件的编译版本,它有平台无关的字节代码,因此我们可以在任何支持.pyc格式文件的平台上执行它。
06
2020
03

Python中的继承

继承允许一个类获得另一个类的所有成员(比如属性和方法)。继承提供代码可重用性,使创建和维护应用程序更容易。Python支持的不同类型的继承:1)单一继承 - 派生类获取单个超类的成员;2)多级继承 - 从基类base1继承的派生类d1,d2继承自base2;3)分层继承 - 从一个基类可以继承任意数量的子类;4)多重继承 - 派生类从多个基类继承。
06
2020
03

什么是Tkinter ?

TKinter是一款很知名的Python库,用它我们可以制作图形用户界面。其支持不同的GUI工具和窗口构件,比如按钮、标签、文本框等等。这些工具和构件均有不同的属性,比如维度、颜色、字体等。
06
2020
03

如何在python中使用三元运算符?

Ternary运算符是用于显示条件语句的运算符。这包含true或false值,并且必须为其评估语句。三元运算符将被给出为:[on_true] if [expression] else [on_false] x,y = 25,50big =x if x <y else y表达式的计算方式与x <y else y一样,在这种情况下,如果x <y为真,则返回值为big = x,如果不正确则返回big = y作为结果。
06
2020
03

如何在Python中实现多线程?

python主要是通过thread和threading这两个模块来实现多线程支持。python的thread模块是比较底层的模块,python的threading模块是对thread做了一些封装,可以更加方便的被使用。但是python(cpython)由于GIL的存在无法使用threading充分利用CPU资源,如果想充分发挥多核CPU的计算能力需要使用multiprocessing模块(Windows下使用会有诸多问题)。python3.x中已经摒弃了Python2.x中采用函数式thread
06
2020
03

PYTHONSTARTUP,PYTHONCASEOK,PYTHONHOME,PYTHONSTARTUP环境变量的目的是什么?

PYTHONSTARTUP - 它包含一个包含Python源代码的初始化文件的路径。每次启动解释器时都会执行它。它在Unix中命名为.pythonrc.py,它包含加载实用程序或修改PYTHONPATH的命令。PYTHONCASEOK - 在Windows中用于指示Python在import语句中查找第一个不区分大小写的匹配项。将此变量设置为任何值以激活它。PYTHONHOME - 它是另一种模块搜索路径。它通常嵌入在PYTHONSTARTUP或PYTHONPATH目录中,以便于切换模块库。
05
2020
03

PYTHONPATH环境变量的目的是什么?

PYTHONPATH - 它的作用类似于PATH。此变量告诉Python解释器在何处找到导入程序的模块文件。它应该包括Python源库目录和包含Python源代码的目录。PYTHONPATH有时由Python安装程序预设。
05
2020
03

Python中Pass和Continue有什么区别?

continue语句使循环从下一次迭代中恢复。pass语句指示什么都不做,代码的其余部分像往常一样执行。
05
2020
03

Python中的函数调用或可调用对象是什么?

Python中的函数被视为可调用对象。它可以允许一些参数,并以元组的形式返回一个值或多个值。除了函数之外,Python还有其他构造,例如类或适合同一类别的类实例。
05
2020
03

深拷贝和浅拷贝有什么区别?

深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。 在Python中,我们使用函数deepcopy()执行深拷贝,导入模块copy,如下所示: import copy b=copy.deepcopy(a) 而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝,使用如下所示: b=copy.co
05
2020
03

我们如何用Python编写函数?

我们可以通过以下方式创建Python函数。1)用def定义函数并链接功能名称;2)传递参数并使用括号将它们括起来,使用冒号来表示结尾;3)添加所需的Python语句以供执行。
05
2020
03

Python中有多少基本类型的函数可用?

Python为我们提供了两种基本类型的函数:内置和用户定义。内置函数是Python语言的一部分,比如print(),dir(),len()和abs()等。
05
2020
03

Python编程中的函数是什么?

函数是表示代码块并且是可重用实体的对象。它为程序带来了模块化,并提供了更高程度的代码可重用性。Python为我们提供了许多内置函数,例如print()等,并提供了创建用户定义函数的能力。
05
2020
03

Python中的%S是什么?

Python支持将值格式化为字符串。虽然这可以包括非常复杂的表达式,但最基本的用法是将值插入到%s 占位符的字符串中 。name = raw_input("who are you?") print "hello %s" % (name,)
05
2020
03

什么是Python切片?

Python中符合序列的有序序列都支持切片(slice),如:列表,字符,元祖 Python中切片的格式:[start : end : step] Start:起始索引,从0开始,-1表示结束;End:结束索引;Step:步长 end-start=正数时,从左向右取值,=负数时反向取值 注意:切片结果不包含结束索引,即不包含最后一位,
05
2020
03

python解释器种类以及特点?

CPython:这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器;IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强;PyPy:PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代进行动态编译,所以可以显著提高Python代码的执行速度;Jython:Jython是运行在Jav
05
2020
03

什么是Python模块?

模块是一个Python脚本,通常包含import语句,函数,类和变量定义,以及Python可运行代码,文件的扩展名为“.py”。
04
2020
03

Python中支持的数据类型有哪些?

Python支持5种数据类型: 1)Numbers(数字)——用于保存数值; a=7.0 2)Strings(字符串)——字符串是一个字符序列,我们用单引号或双引号来声明字符串; title="Data123" 3)Lists(列表)——列表就是一些值的有序集合,我们用方括号声明列表; colors=['red','green','blue&
04
2020
03

Python的主要功能是什么?

1)python是一种解释型语言,因此在使用python时不需要进行编译2)声明变量和类似变量时,不需要重复声明变量的类型;3)Python非常适合面向对象的编程,因为它允许类的定义以及组合和继承;4)函数是第一类对象,这意味着它们可以分配给变量,从其他函数返回并传递给函数,类也是第一类对象;5)用于许多领域,包括Web应用程序,自动化,科学建模,大数据应用程序等等。
04
2020
03

什么是Python?

Python是一种面向对象的,交互式的,解释型的计算机程序设计语言。Python的设计具有高可读性,它使用英语关键词而非标点符号,语法结构也比其他语言简单。
03
2020
03

如何调试一个插件工程。

答案:配置一个 ECLIPSE  APPLICATION 。用 DEUBG 模式运行。
03
2020
03

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

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

什么是 EMF 。

答案:模型驱动开发的一个框架。可以根据模型产生相应的 java 代码。
03
2020
03

Policy 的作用。

答案:处理相应的请求,并且发放到相对应的 COMMAND 中去 .
03
2020
03

EditDomain 的作用。

答案: EditDomain 是专门用于维护 EditPartView , Command 信息的对象,一般每个 EditPart 有一个 EditDomain 。
03
2020
03

Editpart 的作用。

答案:接收用户的请求,通过注册的 Policy 通知模型。接收模型的事件,改变图型的展示。 在 GEF MVC 模式中起到控制器的作用。
03
2020
03

什么是 GEF 。

 答案: GEF(Graphical Edit FrameWork) 图形化编辑框架。可以提供可视化图形界面,可以应用在 Eclipse 各个 Part 中。
02
2020
03

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

 答案:添加进度条。
02
2020
03

列举使用过的 Widget (三个以上)。

标签 (Label) ,文本框 (Text) ,复合框( Combo ),各种按钮( Button )。
02
2020
03

列举几种 JFace 的 Dialog (三个以上)。

 答案: 1 ProgressMonitorDialog  2 MessageDialog 3 InputDialog 4 ErrorDialog 5 TitleAreaDialog 6 StatusDialog 等等。
02
2020
03

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

答案:创建 TreeView ,编写它的内容器和标签器。
02
2020
03

如何创建视图 (View) 。

答案:通过插件扩展点创建。 [org.eclipse.ui.views]
02
2020
03

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

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

插件如何安装。

有 2 种安装方法,第一个自动安装,通过 Eclipse 更新管理者,填写相应的网址即可跟新。第二种手动安装,下载插件安装包,把插件的 plugins 和 features 目录直接拷到 eclipse 安装目录下(或 Link 方式安装。)
02
2020
03

第三方的 lib 在插件中如何使用。

答案:加入到 plugin.xml 中的运行时类路径中即可。(或以插件的方式引用)。
02
2020
03

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

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

列举几个 Eclipse 的子项目 ( 五个以上 ) 。

答案: 1 GMF   2 EMF  3 GEF  4 JDT  5 PDE  等等。
02
2020
03

用JQ完整的写出AJAX与后台交互的方法

$.get(“url”,function(data){ }); $.post(“url”,{data},function(data){ }); $.ajax({url:””,...............});
02
2020
03

MyBatis工作原理

mybatis是一个优秀的持久层框架,他对jdbc操作数据库的过程进行了封装,使开发着只用关注sql本身,不用去关注例如注册驱动,加载链接,得到statement,处理结果集等复杂的过程。 mybatis通过xml或者注解的方式,将要执行的各种sql语句配置起来,并通过Java对象和statement中的sql语句映射生成最终的sql语句,最后由mybatis框架执行sql语句,并将结果映射成Java对象返回。 
02
2020
03

mybatis是什么?

mybatis是一个优秀的持久层框架,他对jdbc操作数据库的过程进行了封装,使开发着只用关注sql本身,不用去关注例如注册驱动,加载链接,得到statement,处理结果集等复杂的过程。 mybatis通过xml或者注解的方式,将要执行的各种sql语句配置起来,并通过Java对象和statement中的sql语句映射生成最终的sql语句,最后由mybatis框架执行sql语句,并将结果映射成Java对象返回。 
02
2020
03

如何实现加载外部视频并播放?

外部视频文件:目前测试仅支持ogg格式(设置网络获取视频时,必须将MIME设置.ogg为application/octet-stream)场景设置:MainCamera上添加AudioSource脚本;播放物体上(如Plane)添加MovieTest脚本MovieTest脚本:using UnityEngine;   using System.Collections;     public class 
02
2020
03

什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。
02
2020
03

如何优化内存?

有很多种方式,例如1.压缩自带类库;2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;3.释放AssetBundle占用的资源;4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
02
2020
03

动态加载资源的方式?(有时候也问区别,具体请百度)

1.Resources.Load();2.AssetBundle
02
2020
03

什么是协同程序?

在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。
02
2020
03

Unity3d中的碰撞器和触发器的区别?

碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器
02
2020
03

物体发生碰撞的必要条件?

两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。
02
2020
03

请简述ArrayList和List的主要区别?

####ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理)
装箱拆箱的操作(费时)
List是接口,ArrayList是一个实现了该接口的类,可以被实例化
02
2020
03

如何安全的在不同工程间安全地迁移asset数据?三种方法

1.将Assets目录和Library目录一起迁移2.导出包,export Package3.用unity自带的assets Server功能
02
2020
03

OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生

Awake –>OnEnable->Start,OnEnable在同一周期中可以反复地发生。
01
2020
03

MeshRender中material和sharedmaterial的区别?

修改sharedMaterial将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的材质,使用material替代。
01
2020
03

Unity提供了几种光源,分别是什么

四种。平行光:Directional Light点光源:Point Light聚光灯:Spot Light区域光源:Area Light
01
2020
03

简述一下对象池,你觉得在FPS里哪些东西适合使用对象池

对象池就存放需要被反复调用资源的一个空间,当一个对象回大量生成的时候如果每次都销毁创建会很费时间,通过对象池把暂时不用的对象放到一个池中(也就是一个集合),当下次要重新生成这个对象的时候先去池中查找一下是否有可用的对象,如果有的话就直接拿出来使用,不需要再创建,如果池中没有可用的对象,才需要重新创建,利用空间换时间来达到游戏的高速运行效果,在FPS游戏中要常被大量复制的对象包括子弹,敌人,粒子等
01
2020
03

CharacterController和Rigidbody的区别

Rigidbody具有完全真实物理的特性,Unity中物理系统最基本的一个组件,包含了常用的物理特性,而CharacterController可以说是受限的的Rigidbody,具有一定的物理效果但不是完全真实的,是Unity为了使开发者能方便的开发第一人称视角的游戏而封装的一个组件
01
2020
03

简述prefab的用处

在游戏运行时实例化,prefab相当于一个模板,对你已经有的素材、脚本、参数做一个默认的配置,以便于以后的修改,同时prefab打包的内容简化了导出的操作,便于团队的交流。
01
2020
03

请简述sealed关键字用在类声明时与函数声明时的作用

sealed修饰的类为密封类,类声明时可防止其他类继承此类,在方法中声明则可防止派生类重写此方法。
01
2020
03

请简述private,public,protected,internal的区别

public:对任何类和成员都公开,无限制访问private:仅对该类公开protected:对该类和其派生类公开internal:只能在包含该类的程序集中访问该类
01
2020
03

使用Unity3d实现2d游戏,有几种方式?

1. 使用本身的GUI,在Unity4.6以后出现的UGUI2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;3.使用2d插件,如:2DToolKit,和NGUI
01
2020
03

在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数

三个阶段,1.OnCollisionEnter 2.OnCollisionStay 3.OnCollisionExit
01
2020
03

Unity3d的物理引擎中,有几种施加力的方式,分别描述出来

rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数中。大家可以自己去查看一下rigidbody的API
01
2020
03

拦截过滤器模式(Intercepting Filter Pattern)

拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。过滤器(Filter) - 过滤器在请求处理程序执行请求之前或之后,执行某些任务。过滤器链(Filter Chain) - 过滤器链带有多个过滤器,并在 Target 上按照定义的顺序执行这些过滤器。Target -
01
2020
03

服务定位器模式(Service Locator Pattern)

服务定位器模式(Service Locator Pattern)用在我们想使用 JNDI 查询定位各种服务的时候。考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术。在首次请求某个服务时,服务定位器在 JNDI 中查找服务,并缓存该服务对象。当再次请求相同的服务时,服务定位器会在它的缓存中查找,这样可以在很大程度上提高应用程序的性能。以下是这种设计模式的实体。服务(Service) - 实际处理请求的服务。对这种服务的引用可以在 JNDI 服务器中查找到。Context

01
2020
03

传输对象模式(TransferObjectPattern)

传输对象模式    传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。传输对象也被称为数值对象。传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输。它没有任何的行为。服务器端的业务类通常从数据库读取数据,然后填充 POJO,并把它发送到客户端或按值传递它。对于客户端,传输对象是只读的。客户端可以创建自己的传输对象,并把它传递给服务器,以便一次性更新

01
2020
03

什么叫做链条关节?

Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。
01
2020
03

物体自身旋转使用的函数?

Transform.Rotate()
01
2020
03

Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数

PlayerPrefs.SetInt() PlayerPrefs.GetInt()
01
2020
03

Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。

Awake——>OnEnable–>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy
01
2020
03

物理更新一般放在哪个系统函数里?

FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
01
2020
03

在场景中放置多个Camera并同时处于活动状态会发生什么?

游戏界面可以看到很多摄像机的混合。
01
2020
03

如何销毁一个UnityEngine.Object及其子类?

如何销毁一个UnityEngine.Object及其子类?

01
2020
03

请描述为什么Unity3d中会发生在组件上出现数据丢失的情况

一般是组件上绑定的物体对象被删除了
01
2020
03

LOD是什么,优缺点是什么?

LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。缺点是增加了内存。
01
2020
03

MipMap是什么,作用?

MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。
29
2020
02

请描述Interface与抽象类之间的不同

请描述Interface与抽象类之间的不同抽象类表示该类中可能已经有一些方法的具体定义,但接口就是公公只能定义各个方法的界面 ,不能具体的实现代码在成员方法中。类是子类用来继承的,当父类已经有实际功能的方法时该方法在子类中可以不必实现,直接引用父类的方法,子类也可以重写该父类的方法。实现接口的时候必须要实现接口中所有的方法,不能遗漏任何一个。
29
2020
02

.Net与Mono的关系?

三十一:.Net与Mono的关系?mono是.net的一个开源跨平台工具,就类似java虚拟机,java本身不是跨平台语言,但运行在虚拟机上就能够实现了跨平台。.net只能在windows下运行,mono可以实现跨平台跑,可以运行于linux,Unix,Mac OS等。

29
2020
02

简述Unity3D支持的作为脚本的语言的名称

Unity的脚本语言基于Mono的.Net平台上运行,可以使用.NET库,这也为XML、数据库、正则表达式等问题提供了很好的解决方案。Unity里的脚本都会经过编译,他们的运行速度也很快。这三种语言实际上的功能和运行速度是一样的,区别主要体现在语言特性上。JavaScript、 C#、Boo
29
2020
02

U3D中用于记录节点空间几何信息的组件名称,及其父类名称

Transform 父类是 Component
29
2020
02

向量的点乘、叉乘以及归一化的意义?

1.点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影2.叉乘得到的向量垂直于原来的两个向量3.标准化向量:用在只关系方向,不关心大小的时候
29
2020
02

为何大家都在移动设备上寻求U3D原生GUI的替代方案

不美观,OnGUI很耗费时间,效率不高,使用不方便
29
2020
02

请简述如何在不同分辨率下保持UI的一致性

NGUI很好的解决了这一点,屏幕分辨率的自适应性,原理就是计算出屏幕的宽高比跟原来的预设的屏幕分辨率求出一个对比值,然后修改摄像机的size。UGUI通过锚点和中心点和分辨率也解决这个问题
29
2020
02

什么是LightMap?

LightMap:就是指在三维软件里实现打好光,然后渲染把场景各表面的光照输出到贴图上,最后又通过引擎贴到场景上,这样就使物体有了光照的感觉。

29
2020
02

Unity和cocos2d的区别

1. Unity3D支持C#、javascript等,cocos2d-x 支持c++、Html5、Lua等。2. cocos2d 开源 并且免费3. Unity3D支持iOS、Android、Flash、Windows、Mac、Wii等平台的游戏开发,cocos2d-x支持iOS、Android、WP等。
29
2020
02

C#和C++的区别?

简单的说:C# 与C++ 比较的话,最重要的特性就是C# 是一种完全面向对象的语言,而C++ 不是,另外C# 是基于IL 中间语言和.NET Framework CLR 的,在可移植性,可维护性和强壮性都比C++ 有很大的改进。C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过Interop 和Pinvoke 完成一些底层操作。
29
2020
02

结构体和类有何区别?

结构体是一种值类型,而类是引用类型。(值类型、引用类型是根据数据存储的角度来分的)就是值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作
29
2020
02

ref参数和out参数是什么?有什么区别?

ref和out参数的效果一样,都是通过关键字找到定义在主函数里面的变量的内存地址,并通过方法体内的语法改变它的大小。不同点就是输出参数必须对参数进行初始化。ref必须初始化,out 参数必须在函数里赋值。ref参数是引用,out参数为输出参数。
29
2020
02

C#的委托是什么?有何用处?

委托类似于一种安全的指针引用,在使用它时是当做类来看待而不是一个方法,相当于对一组方法的列表的引用。用处:使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。
29
2020
02

C#中的排序方式有哪些?

选择排序,冒泡排序,快速排序,插入排序,希尔排序,归并排序
29
2020
02

射线检测碰撞物的原理是?

射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 。
29
2020
02

Unity中,照相机的Clipping Planes的作用是什么?调整Near、Fare两个值时,应该注意什么?

剪裁平面 。从相机到开始渲染和停止渲染之间的距离。
29
2020
02

如何让已经存在的GameObject在LoadLevel后不被卸载掉?

void Awake(){    DontDestroyOnLoad(transform.gameObject);}
29
2020
02

请简述GC(垃圾回收)产生的原因,并描述如何避免?

GC回收堆上的内存避免:1.减少new产生对象的次数2.使用公用的对象(静态成员)3.将String换为StringBuilder
29
2020
02

反射的实现原理?

审查元数据并收集关于它的类型信息的能力。实现原理:在运行时根据程序集及其中的类型得到元数据。下面是实现步骤:1. 导入using System.Reflection;2. Assembly.Load(“程序集”)加载程序集,返回类型是一个Assembly3. 得到程序集中所有类的名称foreach (Type type in assembly.GetTypes()){    string t = type.Name;}4. Type type = assembly.GetTy
29
2020
02

简述四元数的作用,四元数对欧拉角的优点?

四元数用于表示旋转相对欧拉角的优点:1.能进行增量旋转2.避免万向锁3.给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)
28
2020
02

移动相机动作在哪个函数里,为什么在这个函数里?

LateUpdate,是在所有的update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是所有的update操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
28
2020
02

GPU的工作原理

简而言之,GPU的图形(处理)流水线完成如下的工作:(并不一定是按照如下顺序) 顶点处理:这阶段GPU读取描述3D图形外观的顶点数据并根据顶点数据确定3D图形的形状及位置关系,建立起3D图形的骨架。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Vertex Shader(定点着色器)完成。 光栅化计算:显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最
28
2020
02

什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化
28
2020
02

如何优化内存?

有很多种方式,例如1.压缩自带类库;2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;3.释放AssetBundle占用的资源;4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。6.代码中少产生临时变量
28
2020
02

动态加载资源的方式?他们之间的区别

1.通过resources模块,调用它的load函数:可以直接load并返回某个类型的object,前提是要把这个资源放在resource命名的文件夹下,unity不关有没有场景引用,都会将其全部打入到安装包中。resources.load();2.通过bundle的形式:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用www模块get 下来,然后从这个bundle中load某个object。assetbundle3.通过assetdatabase.loadasset :这
28
2020
02

请描述游戏动画有哪几种,以及其原理?

主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
28
2020
02

alpha blend工作原理

Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。
28
2020
02

写出光照计算中的diffuse的计算公式

diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系数、colorLight 光的颜色、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘,如果结果小于等于0,则漫反射为0。
28
2020
02

两种阴影判断的方法、工作原理。

本影和半影:本影:景物表面上那些没有被光源直接照射的区域(全黑的轮廓分明的区域)。半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的区域(半明半暗区域)工作原理:从光源处向物体的所有可见面投射光线,将这些面投影到场景中得到投影面,再将这些投影面与场景中的其他平面求交得出阴影多边形,保存这些阴影多边形信息,然后再按视点位置对场景进行相应处理得到所要求的视图(利用空间换时间,每次只需依据视点位置进行一次阴影计算即可,省去了一次消隐过程)
28
2020
02

Vertex Shader是什么,怎么计算?

顶点着色器是一段执行在GPU上的程序,用来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。Vertex Shader对输入顶点完成了从local space到homogeneous space(齐次空间)的变换过程,homogeneous space即projection space的下一个space。在这其间共有world transformation, view transformation和projection t
28
2020
02

下列代码在运行中会产生几个临时对象?

string a = new string("abc");a = (a.ToUpper() + "123").Substring(0, 2);   在C#中第一行是会报错的(Java中倒是可行)。应该这样初始化:string b = new string(new char[]{'a','b','c'});答案为:5个临时对象
28
2020
02

下列代码在运行中会发生什么问题?如何避免?

List<int> ls = new List<int>(new int[] { 1, 2, 3, 4, 5 });foreach (int item in ls){    Console.WriteLine(item * item);    ls.Remove(item);}  产生运行时错误,在 ls.Remove(item)这行,因为foreach是只读的。不能一边遍历一边修改。
28
2020
02

Unity3D是否支持写成多线程程序?如果支持的话需要注意什么?

仅能从主线程中访问Unity3D的组件,对象和Unity3D系统调用支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine。注意:C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象
28
2020
02

Unity3D的协程和C#线程之间的区别是什么?

多线程程序同时运行多个线程 ,而在任一指定时刻只有一个协程在运行,并且这个正在运行的协同程序只在必要时才被挂起。除主线程之外的线程无法访问Unity3D的对象、组件、方法。Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。 StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间
28
2020
02

矩阵相乘的意义及注意点

用于表示线性变换:旋转、缩放、投影、平移、仿射注意矩阵的蠕变:误差的积累
28
2020
02

为什么dynamic font在unicode环境下优于static font

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。使用动态字体时,Unity将不会预先生成一个与所有字体的字符纹理。当需要支持亚洲语言或者较大的字体的时候,若使用正常纹理,则字体的纹理将非常大。
28
2020
02

当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免?

穿透(碰撞检测失败)
28
2020
02

请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?

当物体是否可见切换之时。可以用于只需要在物体可见时才进行的计算。
28
2020
02

什么叫动态合批?跟静态合批有什么区别?

如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。动态批处理操作是自动完成的,并不需要你进行额外的操作。区别:动态批处理一切都是自动的,不需要做任何操作,而且物体是可以移动的,但是限制很多。静态批处理:自由度很高,限制很少,缺点可能会占用更多的内存,而且经过静态批处理后的所有物体都不可以再移动了。
28
2020
02

简述StringBuilder和String的区别?

String是字符串常量。StringBuffer是字符串变量 ,线程安全。StringBuilder是字符串变量,线程不安全。String类型是个不可变的对象,当每次对String进行改变时都需要生成一个新的String对象,然后将指针指向一个新的对象,如果在一个循环里面,不断的改变一个对象,就要不断的生成新的对象,所以效率很低,建议在不断更改String对象的地方不要使用String类型。StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时
28
2020
02

Unity3D Shader分哪几种,有什么区别?

表面着色器的抽象层次比较高,它可以轻松地以简洁方式实现复杂着色。表面着色器可同时在前向渲染及延迟渲染模式下正常工作。顶点片段着色器可以非常灵活地实现需要的效果,但是需要编写更多的代码,并且很难与Unity的渲染管线完美集成。固定功能管线着色器可以作为前两种着色器的备用选择,当硬件无法运行那些酷炫Shader的时,还可以通过固定功能管线着色器来绘制出一些基本的内容。
28
2020
02

已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。2.解释为什么要返回char

 char * strcpy(char * strDest,const char * strSrc){    if ((strDest==NULL)||(strSrc==NULL))        throw "Invalid argument(s)";    char * strDestCopy=strDest;    while ((*strDest++=*str
28
2020
02

C#中四种访问修饰符是哪些?各有什么区别?

1.属性修饰符 2.存取修饰符 3.类修饰符 4.成员修饰符。属性修饰符:Serializable:按值将对象封送到远程服务器。STATread:是单线程套间的意思,是一种线程模型。MATAThread:是多线程套间的意思,也是一种线程模型。存取修饰符:public:存取不受限制。private:只有包含该成员的类可以存取。internal:只有当前工程可以存取。protected:只有包含该成员的类以及派生类可以存取。类修饰符:abstract:抽象类。指示一个类只能作为其它类的基类。seal
28
2020
02

Heap与Stack有何区别?

1.heap是堆,stack是栈。2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。3.stack空间有限,heap的空间是很大的自由区。
28
2020
02

值类型和引用类型有何区别?

1.值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。2.值类型存取速度快,引用类型存取速度慢。3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用4.值类型继承自System.ValueType,引用类型继承自System.Object5.栈的内存分配是自动释放;而堆在.NET中会有GC来释放6.值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
28
2020
02

请写出求斐波那契数列任意一位的值得算法

递归实现: int Fib1(int index){    if(index迭代实现: int Fib5(int index){    if(index
28
2020
02

协同程序的执行代码是什么?有何用处,有何缺点?

 function Start() {     // 协同程序WaitAndPrint在Start函数内执行,可以视同于它与Start函数同步执行.    StartCoroutine(WaitAndPrint(2.0));     print ("Before WaitAndPrint Finishes " + Time.time );} function WaitAndPr
28
2020
02

什么是里氏代换元则?

里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。通俗点:就是子类对象可以赋值给基类对象,基类对象不能赋值给子类对象
28
2020
02

Mock和Stub有何区别?

Mock与Stub的区别:Mock:关注行为验证。细粒度的测试,即代码的逻辑,多数情况下用于单元测试。Stub:关注状态验证。粗粒度的测试,在某个依赖系统不存在或者还没实现或者难以测试的情况下使用,例如访问文件系统,数据库连接,远程协议等。
28
2020
02

概述序列化:

序列化简单理解成把对象转换为容易传输的格式的过程。比如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器端之间传输该对象
27
2020
02

堆和栈的区别?

栈通常保存着我们代码执行的步骤,如在代码段1中 AddFive()方法,int pValue变量,int result变量等等。而堆上存放的则多是对象,数据等。我们可以把栈想象成一个接着一个叠放在一起的盒子。当我们使用的时候,每次从最顶部取走一个盒子。栈也是如此,当一个方法(或类型)被调用完成的时候,就从栈顶取走,接着下一个。堆则不然,像是一个仓库,储存着我们使用的各种对象等信息,跟栈不同的是他们被调用完毕不会立即被清理掉。
27
2020
02

概述c#中代理和事件?

代理就是用来定义指向方法的引用。C#事件本质就是对消息的封装,用作对象之间的通信;发送方叫事件发送器,接收方叫事件接收器
27
2020
02

客户端与服务器交互方式有几种

socket通常也称作”套接字”,实现服务器和客户端之间的物理连接,并进行数据传输,主要有UDP和TCP两个协议。Socket处于网络协议的传输层。http协议传输的主要有http协议 和基于http协议的Soap协议(web service),常见的方式是 http 的post 和get 请求,web 服务。
27
2020
02

Unity和Android与iOS如何交互?

Unity可以到处Android和iOS的工程,然后通过安卓或者iOS的类去给Unity发消息,调用Unity中的方法
27
2020
02

如何在Unity3D中查看场景的面试,顶点数和Draw Call数?如何降低Draw Call数?

在Game视图右上角点击Stats。降低Draw Call 的技术是Draw Call Batching这个在5.0以后在window-》Profiler下面,快捷键是cmd + 7(ctl + 7
27
2020
02

请问alpha test在何时使用?能达到什么效果?

Alpha Test ,中文就是透明度测试。简而言之就是V&F shader中最后fragment函数输出的该点颜色值(即上一讲frag的输出half4)的alpha值与固定值进行比较。AlphaTest语句通常于Pass{}中的起始位置。Alpha Test产生的效果也很极端,要么完全透明,即看不到,要么完全不透明。
27
2020
02

UNITY3d在移动设备上的一些优化资源的方法

1.使用assetbundle,实现资源分离和共享,将内存控制到200m之内,同时也可以实现资源的在线更新2.顶点数对渲染无论是cpu还是gpu都是压力最大的贡献者,降低顶点数到8万以下,fps稳定到了30帧左右3.只使用一盏动态光,不是用阴影,不使用光照探头粒子系统是cpu上的大头4.剪裁粒子系统5.合并同时出现的粒子系统6.自己实现轻量级的粒子系统animator也是一个效率奇差的地方7.把不需要跟骨骼动画和动作过渡的地方全部使用animation,控制骨骼数量在30根以下8.animato
27
2020
02

四元数有什么作用?

对旋转角度进行计算时用到四元数
27
2020
02

将Camera组件的ClearFlags选项选成Depth only是什么意思?有何用处?

如果把摄像机的ClearFlags勾选为Deapth Only,那么摄像机就会只渲染看得见的对象,把背景会完全透明,这种情况一般用在两个摄像机以上的场景中
27
2020
02

在编辑场景时将GameObject设置为Static有何作用?

设置游戏对象为Static时,这些部分被静态物体挡住而不可见时,将会剔除(或禁用)网格对象。因此,在你的场景中的所有不会动的物体都应该标记为Static。
26
2020
02

有A和B两组物体,有什么办法能够保证A组物体永远比B组物体先渲染?

把A组物体的渲染对列大于B物体的渲染队列,通过shader里面的渲染队列来渲染
26
2020
02

将图片的TextureType选项分别选为““Texture”和“Sprite”有什么区别

Sprite作为UI精灵使用,Texture作用模型贴图使用。Sprite需要2的整次幂,打包图片省资源
26
2020
02

问一个Terrain,分别贴3张,4张,5张地表贴图,渲染速度有什么区别?为什么?

没有区别,因为不管几张贴图只渲染一次。
26
2020
02

什么是DrawCall?DrawCall高了又什么影响?如何降低DrawCall?

Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。DrawCall越高对显卡的消耗就越大。降低DrawCall的方法:1. Dynamic Batching2. Static Batching
26
2020
02

实时点光源的优缺点是什么?

可以有cookies – 带有 alpha通道的立方图(Cubemap )纹理。点光源是最耗费资源的。
26
2020
02

Unity的Shader中,Blend SrcAlpha OneMinusSrcAlpha这句话是什么意思?

作用就是Alpha混合。公式:最终颜色 = 源颜色 x 源透明值 + 目标颜色 x(1 - 源透明值)
26
2020
02

简述水面倒影的渲染原理

原理就是对水面的贴图纹理进行扰动,以产生波光玲玲的效果。用shader可以通过GPU在像素级别作扰动,效果细腻,需要的顶点少,速度快
26
2020
02

简述NGUI中Grid和Table的作用?

对Grid和Table下的子物体进行排序和定位
26
2020
02

请简述NGUI中Panel和Anchor的作用

1. 只要提供一个half-pixel偏移量,它可以让一个控件的位置在Windows系统上精确的显示出来(只有这个Anchor的子控件会受到影响)2. 如果挂载到一个对象上,那么他可以将这个对象依附到屏幕的角落或者边缘3.UIPanel用来收集和管理它下面所有widget的组件。通过widget的geometry创建实际的draw call。没有panel所有东西都不能够被渲染出来,你可以把UIPanel当做Renderer
26
2020
02

Unity3D编辑器操作设置实现:

Button提供OnClick操作,实现事件步骤一:创建c#脚本,添加OnTestClick()步骤二:创建Empty对象,接受和响应点击事件,创建名为Panel的UI对象,于触发点击事件。步骤三:Panel对象添加EventTrigger组件," Add New" -> 选择" PointerClick"。将Empty对象拖拽到触发者位置。然后点击"No Function"选择我们写在Test脚本中的OnTestClick事件。
25
2020
02

什么是微服务?

微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。 服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服
25
2020
02

微服务之间是如何通讯的?

第一种:远程过程调用(Remote Procedure Invocation)直接通过远程过程调用来访问别的service。示例:REST、gRPC、Apache、Thrift优点:简单,常见。因为没有中间件代理,系统更简单缺点:只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅、发布/异步响应降低了可用性,因为客户端和服务端在请求过程中必须都是可用的第二种:消息使用异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信。示例:Apache Kafka、Rabbit
25
2020
02

springcloud 与dubbo有哪些区别?

相同点:SpringCloud 和Dubbo可以实现RPC远程调用框架,可以实现服务治理。不同点:SpringCloud是一套目前比较网站微服务框架了,整合了分布式常用解决方案遇到了问题注册中心Eureka、负载均衡器Ribbon ,客户端调用工具Rest和Feign,分布式配置中心Config,服务保护Hystrix,网关Zuul Gateway ,服务链路Zipkin,消息总线Bus等。Dubbo内部实现功能没有SpringCloud强大(全家桶),只是实现服务治理,缺少分布式配置中心、网关
25
2020
02

请谈谈对SpringBoot 和SpringCloud的理解

SpringBoot专注于快速方便的开发单个个体微服务。SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖的关系.SpringBoot专注于快速、方便的开发单个微服务个体,SpringC
25
2020
02

分布式系统面临的问题

复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加
25
2020
02

什么是服务熔断,什么是服务降级

服务熔断熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand。Hystrix服务降级其实就是线程池
25
2020
02

微服务的优缺点分别是什么?说下你在项目开发中碰到的坑?

优点每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务功能或业务需求开发简单、开发效率提高,一个服务可能就是专一的只干一件事。微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。微服务能使用不同的语言开发。易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, Hudson, bamboo 。微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己
25
2020
02

你所知道的微服务技术栈有哪些?请列举一二

服务开发Springboot、Spring、SpringMVC服务配置与管理Netflix公司的Archaius、阿里的Diamond等服务注册与发现Eureka、Consul、Zookeeper等服务调用Rest、RPC、gRPC服务熔断器Hystrix、Envoy等负载均衡Ribbon、Nginx等服务接口调用(客户端调用服务的简化工具)Feign等消息队列Kafka、RabbitMQ、ActiveMQ等服务配置中心管理SpringCloudConfig、Chef等服务路由(API网关)Zu
25
2020
02

什么是 Eureka服务注册与发现

Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper
25
2020
02

Eureka的基本架构是什么?

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以通
25
2020
02

作为服务注册中心,Eureka比Zookeeper好在哪里?

著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性P在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。因此,Zookeeper 保证的是CP, Eureka 则是AP。Zookeeper保证CP当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点
25
2020
02

Ribbon负载均衡能干嘛?

LB(负载均衡LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA。常见的负载均衡有软件Nginx,LVS,硬件 F5等。相应的在中间件,例如:dubbo和SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义。集中式LB即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某
25
2020
02

什么是 Feign 负载均衡

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。 Feign可以与Eureka和Ribbon组合使用以支持负载均衡。Feign是一个声明式的Web服务客户端,使得编写Web服务客户
25
2020
02

什么是 Ribbon负载均衡

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现
25
2020
02

Feign 能干什么

Feign旨在使编写Java Http客户端变得更容易。前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它(以前是
25
2020
02

什么是 Hystrix断路器

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等, Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用
25
2020
02

Hystrix断路器能干嘛?

服务降级整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来服务熔断熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解
25
2020
02

什么是 zuul路由网关

Zuul 包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。注意: Zuul服务最终还是会注册进Eureka提供=代理+路由+过滤 三大功能
25
2020
02

什么是SpringCloud Config分布式配置中心

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
25
2020
02

分布式配置中心能干嘛?

集中管理配置文件不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置将配置信息以REST接口的形式暴露
24
2020
02

Linux: cat命令

cat 命令用于连接文件并打印到标准输出设备上。 使用权限: 所有使用者 语法格式: cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -n 或 --number:由 1 开始对所有输出的行数编号。 -b 或 --num
23
2020
02

Linux下nginx的安装配置

linux下nginx的安装以及环境配置:第一步:下载nginx压缩包在这里可以去nginx官网下载。也可以直接使用wget命令下载,指令如下所示(请根据自己的需求进行下载):wget -c https://nginx.org/download/nginx-1.10.1.tar.gz注意:这一步最好在自己的目标目录进行操作,我一般是把压缩包下载到/usr/local目录下。第二步:配置nginx安装所需的环境1. 安装gcc安装 nginx 需要先将官网下载的源码进行编译,编
23
2020
02

MySQL 安装配置

MySQL 是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。MySQL 安装本教程的系统平台:CentOS release 6.6 (Final) 64位。一、安装编译工具及库文件yum -y install gcc gcc-c++ make autoconf libt
23
2020
02

linux删除文件夹命令使用方法

在Linux中,删除目录中的文件夹和文件的方法其实很简单,使用rm -rf命令即可。upLinux命令大全具体使用规则:rm -rf 目录名字-r 向下递归,不管有多少级目录,一并删除。-f 直接强行删除,没有任何提示。实例:删除文件夹实例:rm -rf /var/log/httpd这句代码的意思是:删除/var/log/httpd目录以及其下所有文件、文件夹删除文件实例:rm -f /var/log/httpd/access.log这个将会强制删除/var/log/httpd/access.l
23
2020
02

Linux关机命令和重启命令说明

在Linux中,常用的关机命令shutdown、halt、poweroff、init;重启命令有:reboot。本文将主要为大家带来一些常用的关机命令以及各种关机命令之间的区别和具体用法。upLinux命令大全关机命令:1、halt:立刻关机2、poweroff:立刻关机3、shutdown -h now:立刻关机(root用户使用)4、shutdown -h 10:10分钟后自动关机注意,如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启重启命令1、reboo
22
2020
02

do……while和while……do有什么区别?

答:前一个循环一遍再判断,后一个判断以后再循环 
22
2020
02

语句for( ;1 ;)有什么问题?它是什么意思?

答:和while(1)相同。
22
2020
02

全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以,在不同的C文件中以static形式来声明同名全局变量。   可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 。
22
2020
02

如何引用一个已经定义过的全局变量?

答:extern。  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。          头文件引用在编译期间报错,extern方式在连接期间报错。
22
2020
02

局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "。  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 
21
2020
02

简述 strcpy、sprintf 与 memcpy 的区别

三者主要有以下不同之处:(1) 操作对象不同,strcpy 的两个操作对象均为字符串,sprintf 的操作源对象可以是多种数据类型,目的操作对象是字符串,memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。(2) 执行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。(3) 实现功能不同,strcpy 主要实现字符串变量间的拷贝,sprintf 主要实现其他数据类型格式到字符串的转化,memcpy 主要是内存块间的拷贝。说明:strcpy、s
21
2020
02

简述 C、C++程序编译的内存分配情况

C、C++中内存分配方式可以分为三种:(1) 从静态存储区域分配:内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static 变量等。(2) 在栈上分配:在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配:即动态内存分配。程序在运行的时候用 malloc 或 new 申请任意大小的内存,程序员自己
21
2020
02

a 和&a 有什么区别

请写出以下代码的打印结果,主要目的是考察 a 和&a 的区别。#include<stdio.h> void main( void ) {   int a[5]={1,2,3,4,5};   int *ptr=(int *)(&a+1);  printf("%d,%d",*(a+1),*(ptr-1));   return; } 输出结果:2
21
2020
02

一个指针可以是 volatile 吗

可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改一个指向一个 buffer 的指针时,必须用 volatile 来修饰这个指针。说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。
21
2020
02

写一个“标准”宏 MIN

#define min(a,b)((a)<=(b)?(a):(b))注意:在调用时一定要注意这个宏定义的副作用,如下调用:((++*p)<=(x)?(++*p):(x)。p 指针就自加了两次,违背了 MIN 的本意。
21
2020
02

C中的 malloc 和C++中的 new 有什么区别

malloc 和 new 有以下不同:(1) new、delete 是操作符,可以重载,只能在 C++中使用。(2) malloc、free 是函数,可以覆盖,C、C++中都可以使用。(3) new 可以调用对象的构造函数,对应的 delete 调用相应的析构函数。(4) malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数(5) new、delete 返回的是某种数据类型指针,malloc、free 返回的是 void 指针。注意:malloc 申请的内存空间要用 fre
21
2020
02

C 语言的关键字 static 和 C++ 的关键字 static 有什么区别

在 C 中 static 用来修饰局部静态变量和外部静态变量、函数。而 C++中除了上述功能外,还用来定义类的成员变量和函数。即静态成员和静态成员函数。注意:编程时 static 的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而 C++的静态成员则可以在多个对象实例间进行通信,传递信息。
21
2020
02

sizeof 和 strlen 的区别

sizeof 和 strlen 有以下区别:1 sizeof 是一个操作符,strlen 是库函数。2 sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\0‘的字符串作参数。3 编译器在编译时就计算出了 sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。4 数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。注意:有些是操作符
21
2020
02

写出 bool 、int、 float、指针变量与“零值”比较的 if 语句

bool 型数据: if( flag ) {   A; } else {   B; } int 型数据: if( 0 != flag ) {   A; } else {   B; } 指针型数: if( NULL == flag ) {   A;&n
21
2020
02

变量的声明和定义有什么区别

为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。
21
2020
02

简述指针常量与常量指针区别

指针常量是指定义了一个指针,这个指针的值只能在定义时初始化,其他地方不能改变。常量指针是指定义了一个指针,这个指针指向一个只读的对象,不能通过常量指针来改变这个对象的值。指针常量强调的是指针的不可改变性,而常量指针强调的是指针对其所指对象的不可改变性。注意:无论是指针常量还是常量指针,其最大的用途就是作为函数的形式参数,保证实参在被调用函数中的不可改变特性。
21
2020
02

数组名和指针的区别

请写出以下代码的打印结果:#include <iostream.h>#include <string.h>void main(void){char str[13]="Hello world!";char *pStr="Hello world!";cout<<sizeof(str)<<endl;cout<<sizeof(pStr)<<endl;cout<<strlen(str
21
2020
02

如何避免“野指针”

“野指针”产生原因及解决办法如下:(1) 指针变量声明时没有被初始化。解决办法:指针声明时初始化,可以是具体的地址值,也可让它指向 NULL。(2) 指针 p 被 free 或者 delete 之后,没有置为 NULL。解决办法:指针指向的内存空间被释放后指针应该指向 NULL。(3) 指针操作超越了变量的作用范围。解决办法:在变量的作用域结束前释放掉变量的地址空间并且让指针指向 NULL。注意:“野指针”的解决方法也是编程规范的基本原则,平时使用指针时一定要避免产生“野指针”,在使用指针前一定
21
2020
02

常引用有什么作用

常引用的引入主要是为了避免使用变量的引用时,在不知情的情况下改变变量的值。常引用主要用于定义一个普通变量的只读属性的别名、作为函数的传入形参,避免实参在调用函数中被意外的改变。说明:很多情况下,需要用常引用做形参,被引用对象等效于常对象,不能在函数中改变实参的值,这样的好处是有较高的易读性和较小的出错率。
21
2020
02

编码实现字符串转化为数字

编码实现字符串转化为数字编码实现函数 atoi(),设计一个程序,把一个字符串转化为一个整型数值。例如数字:“5486321”,转化成字符:5486321。【答案】int myAtoi(const char * str){int num = 0; //保存转换后的数值int isNegative = 0; //记录字符串中是否有负号int n =0;char *p = str;if(p == NULL) //判断指针的合法性{return -1;}while(*p++ != '\0
21
2020
02

简述 strcpy、sprintf 与 memcpy 的区别

三者主要有以下不同之处:(1) 操作对象不同,strcpy 的两个操作对象均为字符串,sprintf 的操作源对象可以是多种数据类型,目的操作对象是字符串,memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。(2) 执行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。(3) 实现功能不同,strcpy 主要实现字符串变量间的拷贝,sprintf 主要实现其他数据类型格式到字符串的转化,memcpy 主要是内存块间的拷贝。说明:strcpy、s
21
2020
02

用 C 编写一个死循环程序

while(1){ }说明:很多种途径都可实现同一种功能,但是不同的方法时间和空间占用度不同,特别是对于嵌入式软件,处理器速度比较慢,存储空间较小,所以时间和空间优势是选择各种方法的首要考虑条件。
21
2020
02

编码实现某一变量某位清 0 或置 1

编码实现某一变量某位清 0 或置 1给定一个整型变量 a,写两段代码,第一个设置 a 的 bit 3,第二个清 a 的 bit 3,在以上两个操作中,要保持其他位不变。【答案】#define BIT3 (0x1 << 3 ) Satic int a;  //设置 a 的 bit 3:  void set_bit3( void ) {   a |= BIT3;          
21
2020
02

评论下面这个中断函数

评论下面这个中断函数中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展——让标准 C 支持中断。具体代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt 关键字去定义一个中断服务子程序(ISR),请评论以下这段代码。__interrupt double compute_area (double radius)  {  double area = PI * radius * radius;  printf(
21
2020
02

构造函数能否为虚函数

构造函数不能是虚函数。而且不能在构造函数中调用虚函数,因为那样实际执行的是父类的对应函数,因为自己还没有构造好。析构函数可以是虚函数,而且,在一个复杂类结构中,这往往是必须的。析构函数也可以是纯虚函数,但纯虚析构函数必须有定义体,因为析构函数的调用是在子类中隐含的。说明:虚函数的动态绑定特性是实现重载的关键技术,动态绑定根据实际的调用情况查询相应类的虚函数表,调用相应的虚函数。
21
2020
02

谈谈你对面向对象的认识

面向对象可以理解成对待每一个问题,都是首先要确定这个问题由几个部分组成,而每一个部分其实就是一个对象。然后再分别设计这些对象,最后得到整个程序。传统的程序设计多是基于功能的思想来进行考虑和设计的,而面向对象的程序设计则是基于对象的角度来考虑问题。这样做能够使得程序更加的简洁清晰。说明:编程中接触最多的“面向对象编程技术”仅仅是面向对象技术中的一个组成部分。发挥面向对象技术的优势是一个综合的技术问题,不仅需要面向对象的分析,设计和编程技术,而且需要借助必要的建模和开发工具。
21
2020
02

设计模式是什么?你知道哪些设计模式,并简要叙述。

- 单例模式:通过static关键词,声明全局变量。在整个进程运行期间只会被赋值一次。- 观察者模式:KVO是典型的通知模式,观察某个属性的状态,状态发生变化时通知观察者。- 委托模式:代理+协议的组合。实现1对1的反相传值操作。- 工厂模式:通过一个类方法,批量的根据已有模板生产对象。- MVC模式:Model View Control, 把模型 视图 控制器 层进行解耦合编写。- MVVM模式:Model View ViewModel 把 模型 视图 业务逻辑 层进行解耦合编写。
21
2020
02

用预处理指令#define声明一个常数,用以表明一年中有多少秒(忽略闰年问题)。

#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)
21
2020
02

你对@interface中的成员变量和@property声明的属性的理解。

@interface AA: NSObject{    NSString *_name; //成员变量}@property NSString *sex; //属性如上所示:属性拥有setter和getter方法 外加_sex成员变量。_name只是成员变量, 没有setter和getter方法。
21
2020
02

OC的类可以多继承吗?可以实现多个接口吗?Category是什么?分类中能定义成员变量或属性吗?为什么?重写一个类的方式是继承好还是类别好?为什么?

Object-c的类不可以多重继承;可以实现多个接口(协议),通过实现多个接口可以完成C++的多重继承;Category是类别,推荐使用类别,用Category去重写类的方法,仅对本引入Category的类有效,不会影响到其他类与原有类的关系。
21
2020
02

简要叙述面向对象的特点,特别是多态。

1. 封装封装是对象和类概念的主要特性。它是隐藏内部实现,提供外部接口,可以看作是“包装”。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。好处:可以隐藏内部实现细节。通过大量功能类封装,加快后期开发速度。2. 继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以
20
2020
02

你如何理解 Spring Boot 中的 Starters?

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。
20
2020
02

Spring Boot 的目录结构是怎样的?

cn +- javastack     +- MyApplication.java     |     +- customer     |   +- Customer.java     |   +- CustomerControl
20
2020
02

运行 Spring Boot 有哪几种方式?

1)打包用命令或者放到容器中运行2)用 Maven/ Gradle 插件运行3)直接执行 main 方法运行
20
2020
02

开启 Spring Boot 特性有哪几种方式?

1)继承spring-boot-starter-parent项目2)导入spring-boot-dependencies项目依赖
20
2020
02

MEDIA-TYPE:媒体类型

①. all:默认值,所有设备②. screen:电脑屏幕,智能手机,平板电脑③. tv:电视设备
20
2020
02

搭建 Less 服务器端编译环境 - 重点&乱点 Less 编译器实际上是由 Javascript 编写的

(1). 安装独立的 JS 解释器 - node.exe查看是否安装成功在命令行中执行 node -v 显示其安装版本如: 4.4.7(2). 安装 Less 编译器程序 (npm安装包解压即可)确保C:\npm\node_modules\less\bin\lessc文件存在即可(3). 将less文件转为css文件(必须要是UTF-8格式,WS里面要设置)①. 第一种方法:在控制台中 测试 less 转换为 css输入 :node  C:\npm\node_modules\less\
20
2020
02

Less 语法

(1). Less 完全支持 CSS 语法(2). Less 支持多行注释和单行注释,只有多行注释能被编译到 css 中多行: /* 注释内容 */单行: // 注释内容(3). Less 支持变量(Variable),变量就是在 less 中可以变化的数据①. 声明变量(变量可以是任意合法的值)语法: @变量名:值;A. @jd_color:#e4393c;         B. @border_width:5px;    
20
2020
02

Less 中支持在一组样式中混入另一种样式(Mixin)

(1). 样式嵌套选择器 1{ ... }选择器 2{ ... ;选择器 1;...;}最终:选择器 2 中会包含该 选择器 1 定义好的样式,可以实现样式无限的嵌套(2). 带参数的混合声明选择器的时候,允许使用参数来表示暂时不确定的数据,最终在调用时,要将具体的数值传递进来选择器 1(@参数名 1,@参数名 2){      width:@参数名 1;      height:@参数名 2; }(3). 使用带参的混合写法
20
2020
02

嵌套规则

#top{}#top p{}#top p span{}在 less 中,允许在一个选择器内再声明另一个选择器,以便完成父子结构或后代结构选择器 1{...     选择器 2{...}}最终编译成 CSS 的结果为选择器 1{...}选择器 1 选择器 2{...}
20
2020
02

Less 中提供的功能函数

(1). lighten(@color,20%)返回一个变亮的颜色值(颜色减淡)(2). darken(@color,30%)返回一个变暗的颜色(颜色加深)(3). image-width("xx.jpg")返回指定图片的宽度(4). image-height("xx.jpg")返回指定图片的高度(5). ceil(@num)对数字向上取整ceil(55.787865235) =>结果为 56(6). floor(@num)对数字向下取整floor(
20
2020
02

@import 功能

在 Less 中的@import ,在服务器端将多个 less 文件的内容整合到一个 less 文件中@import "xxx.less";在CSS中使用@import功能将多个CSS文件导入一个文件后再引入该文件,会增加服务器的请求次数,而在Less中使用@import它会将引入的多个css或是less文件编译后成为一个css文件,不会增加服务器的请求次数 
20
2020
02

Bootstrap的订制流程

(1). 删除工程目录下的bootstrap.css或是bootstrap.min.css文件,删除html文件里面的引入文件语句(2). 在工程目录下新建“less”文件夹,将bootstrap源代码拷贝到文件夹下,webstrom会自动编译所有的less文件(3). 将自定义的css文件后辍名改为less,在此文件开头输入:@import "../less/bootstrap.less"; 系统会生成新的css文件(4). 自定义css文件时,所有的变量都存在variab
20
2020
02

通过修改Bootstrap的less源文件实现定制

(1). Bootstrap瘦身,删除不必要的样式用“//”注释掉bootstrap.less中不需要的@import即可(2). 修改Bootstrap默认的样式值,实现粗粒度定制修改variable.less中的变量值即要(3). 修改Bootstrap组件的细节样式,实现细粒度定制修改特定的组件对应的less文件,如dropdown.less
20
2020
02

项目不允使用Bottstrap时,提取以下css样式文件

(1). @import "variables.less";变量文件(2). @import "mixins.less";混合文件(3). @import "normalize.less";样式重置文件(4). @import "scaffolding.less";脚手架,基础设置文件(5). @import "grid.less";栅格布局文件
20
2020
02

Twitter Bootstrap的容器

bootstrap的container类是非常有用的,它能在页面中创建一个居中的区域,然后我们能够把其他位置的内容放到里面。container类等价于创建了一个具有静态宽度并且magin值为auto的一个居中的div框。twitter bootstrap的 container类的优点在于它是响应式的,它会以当前屏幕的宽度为基础计算出最佳的宽度予以实用。在body标签中,使用container类创建一个div。它会作为页面主要的放置其他代码的外层包裹。<div class="con
20
2020
02

bootstrap引入twitter bootstrap文件

为了使用twitter bootstrap我们仅仅需要把一个文件引入到我们的模板当中来,引入文件有很多种方法,如果你想了解这些方法请查阅相关文档。基于本教程的出发点,我们将会通过CDN来引入bootstrap-combined.min.css文件而不需要下载任何的文件。<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" rel
20
2020
02

ACL 权限控制机制

UGO(User/Group/Others)目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式。是一种粗粒度的文件系统权限控制模式。ACL(Access Control List)访问控制列表包括三个方面:权限模式(Scheme)(1)IP:从 IP 地址粒度进行权限控制(2)Digest:最常用,用类似于 username:password 的权限标识来进行权限配置,便于区分不同应用来进行权限控制(3)World:最开放的权限控制方式,是一种特殊的 digest 模式,
20
2020
02

客户端回调 Watcher

客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher。客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了。
20
2020
02

服务端处理 Watcher 实现

(1)服务端接收 Watcher 并存储接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的 process 接口,此时可以看成一个 Watcher 对象)存储在WatcherManager 的 WatchTable 和 watch2Paths 中去。(2)Watcher 触发以服务端接收到 setData() 事务请求触发 NodeDataChanged
20
2020
02

四种类型的数据节点 Znode

(1)PERSISTENT-持久节点除非手动删除,否则节点一直存在于 Zookeeper 上(2)EPHEMERAL-临时节点临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper 连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。(3)PERSISTENT_SEQUENTIAL-持久顺序节点基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。(4)EPHEMERAL_SEQUENTIAL-临时顺序节点基本特性同
20
2020
02

Zookeeper 怎么保证主从节点的状态同步?

Zookeeper 的核心是原子广播机制,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 Zab 协议。Zab 协议有两种模式,它们分别是恢复模式和广播模式。恢复模式当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数 server 完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。广播模式一旦 leader 已经和多数的 follower 进行了状态同步后,它就可以开
20
2020
02

Zookeeper 文件系统

Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为1M。
20
2020
02

rest framework 视图你都用过哪些基类?

a. 继承 APIView                这个类属于rest framework中顶层类,内部帮助我们实现了只是基本功能:认证、权限、频率控制,但凡是数据库、分页等操作都需要手动去完成,比较原始。                           &n
20
2020
02

为什么要使用django rest framework框架?

在编写接口时可以不适用django rest framework框架,                        如果不使用:也可以做,那么就可以django的CBV来实现,开发者编写的代码会更多一些。            如果  使用:内部帮助我们提供了很多方便的组件,我们通过配置就可以完成
20
2020
02

vue-loader是什么?使用它的用途有哪些?

解析.vue文件的一个加载器。用途:js可以写es6、style样式可以scss或less、template可以加jade等
20
2020
02

第一次页面加载会触发哪几个钩子

答:第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子
20
2020
02

请列举出3个Vue中常用的生命周期钩子函数

created: 实例已经创建完成之后调用,在这一步,实例已经完成数据观测, 属性和方法的运算, watch/event事件回调. 然而, 挂载阶段还没有开始, $el属性目前还不可见mounted: el被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。activated: keep-alive组件激活时调用
20
2020
02

不用Vuex会带来什么问题?

可维护性会下降,想修改数据要维护三个地方;可读性会下降,因为一个组件里的数据,根本就看不出来是从哪来的;增加耦合,大量的上传派发,会让耦合性大大增加,本来Vue用Component就是为了减少耦合,现在这么用,和组件化的初衷相背。
20
2020
02

vuex的Getter特性

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

vuex的State特性

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

vue如何实现按需加载配合webpack设置

webpack中提供了require.ensure()来实现按需加载。以前引入路由是通过import 这样的方式引入,改为const定义的方式进行引入。不进行页面按需加载引入方式:import home from '../../common/home.vue'进行页面按需加载的引入方式:const home = r => require.ensure( [], () => r (require('../../common/home.vue')))
20
2020
02

vue.cli中怎样使用自定义的组件?有遇到过哪些问题吗?

第一步:在components目录新建你的组件文件(indexPage.vue),script一定要export default {}第二步:在需要用的页面(组件)中导入:import indexPage from '@/components/indexPage.vue'第三步:注入到vue的子组件的components属性上面,components:{indexPage}第四步:在template视图view中使用,例如有indexPage命名,使用的时候则index-page
20
2020
02

为什么会出现vue修改数据后页面没有刷新这个问题?

答案:受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为 getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的。
20
2020
02

你是怎么认识vuex的?

答案:vuex可以理解为一种开发模式或框架。比如PHP有thinkphp,java有spring等。通过状态(数据源)集中管理驱动组件的变化(好比spring的IOC容器对bean进行集中管理)。应用级的状态集中放在store中; 改变状态的方式是提交mutations,这是个同步的事物; 异步逻辑应该封装在action中。
20
2020
02

vue.cli中怎样使用自定义的组件?有遇到过哪些问题吗?

答案:第一步:在components目录新建你的组件文件(smithButton.vue),script一定要export default 将组件导出。第二步:在需要用的页面(组件)中导入:import smithButton from ‘…/components/smithButton.vue’第三步:注入到vue的子组件的components属性上面,components:{smithButton}第四步:在template视图view中使用, 问题有:smithButton命名,
20
2020
02

NextTick 是做什么的

$nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM。
20
2020
02

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

v-show指令是通过修改元素的displayCSS属性让其显示或者隐藏,v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果
19
2020
02

当一个服务接口有多种实现时怎么做?

当一个接口有多种实现时,可以用 group 属性来分组,服务提供方和消费方都指定同一个 group 即可。
19
2020
02

Dubbo支持服务多协议吗?

Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。
19
2020
02

Dubbo启动时如果依赖的服务不可用会怎样?

Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,默认 check="true",可以通过 check="false" 关闭检查。
19
2020
02

Dubbo默认使用什么注册中心,还有别的选择吗?

推荐使用 Zookeeper 作为注册中心,还有 Redis、Multicast、Simple 注册中心,但不推荐。
19
2020
02

Dubbo内置了哪几种服务容器?

Spring ContainerJetty ContainerLog4j ContainerDubbo 的服务容器只是一个简单的 Main 方法,并加载一个简单的 Spring 容器,用于暴露服务。
19
2020
02

Dubbo需要 Web 容器吗?

不需要,如果硬要用 Web 容器,只会增加复杂性,也浪费资源。
19
2020
02

dubbo都支持什么协议,推荐用哪种?

dubbo://(推荐)rmi://hessian://http://webservice://thrift://memcached://redis://rest://
19
2020
02

嵌套静态类与顶级类有什么区别?

一个公共的顶级类的源文件名称与类名相同,而嵌套静态类没有这个要求。一个嵌套类位于顶级类内部,需要使用顶级类的名称来引用嵌套静态类,如HashMap.Entry 是一个嵌套静态类,HashMap 是一个顶级类,Entry 是一个嵌套静态类。
19
2020
02

什么时候使用享元模式?

享元模式通过共享对象来避免创建太多的对象。为了使用享元模式,你需要确保你的对象是不可变的,这样你才能安全的共享。JDK 中 String 池、Integer 池以及 Long 池都是很好的使用了享元模式的例子。
19
2020
02

给我一个符合开闭原则的设计模式的例子?

开闭原则要求你的代码对扩展开放,对修改关闭。这个意思就是说,如果你想增加一个新的功能,你可以很容易的在不改变已测试过的代码的前提下增加新的代码。有好几个设计模式是基于开闭原则的,如策略模式,如果你需要一个新的策略,只需要实现接口,增加配置,不需要改变核心逻辑。一个正在工作的例子是Collections.sort() 方法,这就是基于策略模式,遵循开闭原则的,你不需为新的对象修改 sort() 方法,你需要做的仅仅是实现你自己的 Comparator 接口。
19
2020
02

OOP 中的 组合、聚合和关联有什么区别?

如果两个对象彼此有关系,就说他们是彼此相关联的。组合和聚合是面向对象中的两种形式的关联。组合是一种比聚合更强力的关联。组合中,一个对象是另一个的拥有者,而聚合则是指一个对象使用另一个对象。如果对象 A 是由对象 B组合的,则 A 不存在的话,B 一定不存在,但是如果 A 对象聚合了一个对象 B,则即使 A 不存在了,B 也可以单独存在。
19
2020
02

Java 中,嵌套公共静态类与顶级类有什么不同?

类的内部可以有多个嵌套公共静态类,但是一个 Java 源文件只能有一个顶级公共类,并且顶级公共类的名称与源文件名称必须一致。
19
2020
02

继承和组合之间有什么不同?

虽然两种都可以实现代码复用,但是组合比继承共灵活,因为组合允许你在运行时选择不同的实现。用组合实现的代码也比继承测试起来更加简单。
19
2020
02

什么时候使用组合模式?

组合模式使用树结构来展示部分与整体继承关系。它允许客户端采用统一的形式来对待单个对象和对象容器。当你想要展示对象这种部分与整体的继承关系时采用组合模式。
19
2020
02

什么时候使用访问者模式?

访问者模式用于解决在类的继承层次上增加操作,但是不直接与之关联。这种模式采用双派发的形式来增加中间层。
19
2020
02

解决 ThreadLocal 内存溢出的关键代码是什么?

答:关键代码为 threadLocal.remove() ,使用完 ThreadLocal 之后,调用remove() 方法,清除掉 ThreadLocalMap 中的无用数据就可以避免内存溢出了。
19
2020
02

ThreadLocal 为什么会发生内存溢出?

答:ThreadLocal 造成内存溢出的原因:如果 ThreadLocal 没有被直接引用(外部强引用),在 GC(垃圾回收)时,由于 ThreadLocalMap 中的 key 是弱引用,所以一定就会被回收,这样一来 ThreadLocalMap 中就会出现 key 为 null 的 Entry,并且没有办法访问这些数据,如果当前线程再迟迟不结束的话,这些 key 为 null 的 Entry 的 value 就会一直存在一条强引用链:Thread Ref -> Thread ->
19
2020
02

ThreadLocal 如何共享数据?

答:通过 ThreadLocal 的子类 InheritableThreadLocal 可以天然的支持多线程间的信息共享。
19
2020
02

为什么ThreadLocal变量要设置成 static 修饰?

如果把ThreadLocal声明为某个类的非静态变量,也就是实例变量,那么每次创建该类的实例时,都会导致创建等同的对象,这些重复的对象会导致浪费。
19
2020
02

ThreadLocal的应用场景

ThreadLocal适用于独立变量副本的情况,如果变量为全局共享的,则不适用了。一个典型的应用场景是数据库连接管理,每个线程访问数据库都应当是一个独立的Session会话,如果多个线程共享同一个Session会话,有可能出现其他线程关闭连接了,而当前线程再执行提交时出现会话已关闭的异常。如果采取ThreadLocal的方式能避免线程争抢Session,提高并发下的安全性。
19
2020
02

为什么 ThreadLocalMap 的 key 是弱引用?

如果 key 是强引用,那么发生 GC 时 ThreadLocalMap 还持有 ThreadLocal 的强引用,会导致 ThreadLocal 不会被回收,从而导致内存泄漏。弱引用 ThreadLocal 不会内存泄漏,对应的 value 在下一次 ThreadLocalMap 调用 set、get、remove 方法时被清除,这算是最优的解决方案。
19
2020
02

Spring是什么?

Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。主要由以下几个模块组成:Spring Core:核心类库,提供IOC服务;Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);Spring AOP:AOP服务;Spring DAO:对JDBC的抽象,简化了数据访问
19
2020
02

Spring 的优点?

(1)spring属于低侵入式设计,代码的污染极低;(2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性;(3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。(4)spring对于主流的应用框架提供了集成支持。
19
2020
02

Spring的AOP理解:

OOP面向对象,允许开发者定义纵向的关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用。AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理。AOP实现的关键在于 代理模式,AOP代理主要分为静态代理和动态代理。静态代理的代表为AspectJ
19
2020
02

Spring的IoC理解:

(1)IOC就是控制反转,是指创建对象的控制权的转移,以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象之间松散耦合,也利于功能的复用。DI依赖注入,和控制反转是同一个概念的不同角度的描述,即 应用程序在运行时依赖IoC容器来动态注入对象需要的外部资源。(2)最直观的表达就是,IOC让对象的创建不用去new了,可以由spring自动生产,使用java的反射机制,根据配置文件在运行时动态的去创建对
19
2020
02

BeanFactory和ApplicationContext有什么区别?

    BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。(1)BeanFactory:是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。ApplicationContext接口作为BeanFactory的派生,除了提供Bea
19
2020
02

请解释Spring Bean的生命周期?

 首先说一下Servlet的生命周期:实例化,初始init,接收请求service,销毁destroy; Spring上下文中的Bean生命周期也类似,如下:(1)实例化Bean:对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化。对于ApplicationContext容器,当容器启动结束后,通过获取BeanDefinition对象中的信息,实例化所有
19
2020
02

解释Spring支持的几种bean的作用域。

Spring容器中的bean可以分为5个范围:(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。(2)prototype:为每一个bean请求提供一个实例。(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。(5)global-session:全局作
19
2020
02

Spring框架中的单例Beans是线程安全的么?

 Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”。
19
2020
02

Spring如何处理线程并发问题?

在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域,因为Spring对一些Bean中非线程安全状态采用ThreadLocal进行处理,解决线程安全问题。ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。同步机制采用了“时间换空间”的方式,仅提供一份变量,不同的线程在访问前需要获取锁,没获得锁的线程则需要排队。而ThreadLocal采用了“空间换时间”的方式。ThreadLocal会为每
19
2020
02

Spring的自动装配

在spring中,对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象,使用autowire来配置自动装载模式。在Spring框架xml配置中共有5种自动装配:(1)no:默认的方式是不进行自动装配的,通过手工设置ref属性来进行装配bean。(2)byName:通过bean的名称进行自动装配,如果一个bean的 property 与另一bean 的name 相同,就进行自动装配。 (3)byType:通过参数的数据类型进行自动装配。(4)const
19
2020
02

Spring基于xml注入bean的几种方式

(1)Set方法注入;(2)构造器注入:①通过index设置参数的位置;②通过type设置参数类型;(3)静态工厂注入;(4)实例工厂;
19
2020
02

Spring 框架中都用到了哪些设计模式?

(1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;(2)单例模式:Bean默认为单例模式。(3)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;(4)模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。(5)观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现--
19
2020
02

Spring中的隔离级别

① ISOLATION_DEFAULT:这是个 PlatfromTransactionManager 默认的隔离级别,使用数据库默认的事务隔离级别。② ISOLATION_READ_UNCOMMITTED:读未提交,允许另外一个事务可以看到这个事务未提交的数据。③ ISOLATION_READ_COMMITTED:读已提交,保证一个事务修改的数据提交后才能被另一事务读取,而且能看到该事务对已有记录的更新。④ ISOLATION_REPEATABLE_READ:可重复读,保证一个事务修改的数据提交
19
2020
02

spring的事务传播行为

spring事务的传播行为说的是,当多个事务同时存在的时候,spring如何处理这些事务的行为。① PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。② PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘③ PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。④ PROP
19
2020
02

Spring事务的种类

spring支持编程式事务管理和声明式事务管理两种方式:①编程式事务管理使用TransactionTemplate。②声明式事务管理建立在AOP之上的。其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明或通过@Transactional注解的方式,便可以将事务规则应用到业务逻辑中
19
2020
02

Spring事务的实现方式和实现原理:

Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的。(1)Spring事务的种类:spring支持编程式事务管理和声明式事务管理两种方式:①编程式事务管理使用TransactionTemplate。②声明式事务管理建立在AOP之上的。其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之
19
2020
02

Spring框架中有哪些不同类型的事件?

Spring 提供了以下5种标准的事件:(1)上下文更新事件(ContextRefreshedEvent):在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。(2)上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。(3)上下文停止事件(ContextStoppedEvent):当容器调用Configurable
19
2020
02

解释一下Spring AOP里面的几个名词:

(1)切面(Aspect):被抽取的公共模块,可能会横切多个对象。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @AspectJ 注解来实现。(2)连接点(Join point):指方法,在Spring AOP中,一个连接点 总是 代表一个方法的执行。 (3)通知(Advice):在切面的某个特定的连接点(Join point)上执行的动作。通知有各种类型,其中包括“around”、“before”和“after”等通知。许多AOP框架,包括Spr
19
2020
02

Spring通知有哪些类型?

(1)前置通知(Before advice):在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。(2)返回后通知(After returning advice):在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。 (3)抛出异常后通知(After throwing advice):在方法抛出异常退出时执行的通知。 (4)后通知(After (finally) advice)
18
2020
02

请说一下你对httpd服务的了解?

答:Apache是一个模块化服务,支持的模块比较多,采用servlet处理模型,同步阻塞模型,工作模式多变,对于高并发的场景处理速度会比较慢,运行稳定。支持异步读写,可以通过正则表达式做动静分离。
18
2020
02

优化tomcat可以从哪些方面着手?

答:1、内存优化;2、线程池的优化3、禁用DNS查询;4、开启日志切割功能;5、关闭404错误返回的版本信息;
18
2020
02

如何避免用户在访问一个不存在的页面时,Tomcat将其详细版本信息返回给用户。

答:解决办法就是将404状态码进行重定向,以便我们自定义返回的页面信息。
18
2020
02

Tomcat有哪几种connector运行模式(服务的请求方式)?

答:三种。修改它的运行模式需要在主配置文件中找到connector字段中的protocol进行修改这三种不同运行模式的性能相差很大,具体如下:BIO:阻塞型I/O操作,一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,默认使用这种方式。NIO:基于缓冲区,能提供非阻塞I/O操作,和传统的BIO相比,具备更好的抗并发性能;APR(Apache portable run-time libraries):简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器
18
2020
02

Tomcat的缺省端口是多少?怎么修改?

答:缺省端口是8080,若要修改,可以进入Tomcat的安装目录下找到conf目录下的server.xml文件,找到该文件中的Connector字段中的port。
18
2020
02

列举几种常见的3和4开头的状态码以及他们的意义?

答:301 :永久性重定向302 :临时重定向304 :请求资源未被修改,命中缓存400 (错误请求) 服务器不理解请求的语法。403 (禁止) 服务器拒绝请求。404 (未找到) 服务器找不到请求的网页。
18
2020
02

是否可以在一句 import 中导入多个库?

答:可以是可以,但是不推荐。因为一次导入多个模块可读性不是很好,所以一行导入一个模块会比较好。同样的尽量少用 from modulename import *,因为判断某个函数或者属性的来源有些困难,不方便调试,可读性也降低了。
18
2020
02

Python 代码缩进中是否支持 Tab 键和空格混用。

答:不允许 tab 键和空格键混用,这种现象在使用 sublime 的时候尤为明显。一般推荐使用 4 个空格替代 tab 键。
18
2020
02

如何给变量加注释?

答:可以通过变量名:类型的方式如下a: str = "this is string type"
18
2020
02

如何优雅的给一个函数加注释?

答:可以使用 docstring 配合类型注解
18
2020
02

Python 中的注释有几种?

答:总体来说分为两种,单行注释和多行注释。单行注释在行首是 #。多行注释可以使用三个单引号或三个双引号,包括要注释的内容。
18
2020
02

例举你知道 Python 对象的命名规范,例如方法或者类等

答:类:总是使用首字母大写单词串,如 MyClass。内部类可以使用额外的前导下划线。 变量:小写,由下划线连接各个单词。方法名类似 常量:常量名所有字母大写 等
18
2020
02

了解类型注解么?

答:PEP 484 引入了类型提示,这使得可以对 Python 代码进行静态类型检查。 在使用 Ide 的时候可以获取到参数的类型,更方便传入参数。使用格式如下def foo(num: int) -> None:    print(f"接收到的数字是:{num}")介绍下这个简单例子,我们可以在函数的参数部分使用参数名+:+类型,来指定参数可以接受的类型,这里的话就是 num 参数为 int 类型,然后后面->接的是返回值的类型。这里返回值为
18
2020
02

了解 DocStrings 么?

答:DocStrings 文档字符串是一个重要工具,用于解释文档程序,帮助你的程序文档更加简单易懂。主要是解释代码作用的。
17
2020
02

获取页面的元素的值有几种方式,分别说一下

request.getParameter() 返回客户端的请求参数的值request.getParameterNames() 返回所有可用属性名的枚举request.getParameterValues() 返回包含参数的所有值的数组
17
2020
02

Jsp可以操作窗口吗?

Jsp不能够直接调用窗口,只能先生成打开窗口的js,再由js调用窗口
17
2020
02

Jsp如何处理json

在 jsp 中处理 JSON,通常需要配套使用 JQuery 控件,并且导入一些 Common jar 包。使用 JQuery 控件是因为它能有效的解析并且展示 JSON 数据,导入Common 则是因为 Java 中的对象并不是纯粹的数据,需要通过这些 Jar 包的处理使之转化成真实数据。
17
2020
02

有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就不能再登陆这个用户,使用session共享,你是怎么做的。

把所有的session的数据保存到Mysql服务器上,所有Web服务器都来这台Mysql服务器来获取Session数据。
17
2020
02

Ajax的实现流程是怎样的?

(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.(3)设置响应HTTP请求状态变化的函数.(4)发送HTTP请求.(5)获取异步调用返回的数据.(6)使用JavaScript和DOM实现局部刷新. <script type="text/javascript">        var httpRequest;&nbs
17
2020
02

跨域解决方案有哪些?

1:jsonp 只能解决get跨域(问的最多)原理:动态创建一个script标签。利用script标签的src属性不受同源策略限制。因为所有的src属性和href属性都不受同源策略限制。可以请求第三方服务器数据内容。步骤:去创建一个script标签script的src属性设置接口地址接口参数,必须要带一个自定义函数名 要不然后台无法返回数据。通过定义函数名去接收后台返回数据//去创建一个script标签var  script = document.createElement("
17
2020
02

什么情况造成跨域?

同源策略限制 不同源会造成跨域。以下任意一种情况不同,都是不同源。http://www.baidu.com/8080/index.htmlhttp:// 协议不同www 子域名不同baidu.com 主域名不同8080 端口号不同www.baidu.com ip地址和网址不同
17
2020
02

ajax几种请求方式?他们的优缺点?

常用的post,get,delete。不常用copy、head、link等等。###代码上的区别 1:get通过url传递参数 2:post设置请求头  规定请求数据类型###使用上的区别 1:post比get安全 (因为post参数在请求体中。get参数在url上面) 2:get传输速度比post快 根据传参决定的。 (post通过请求体传参,后台通过数据流接收。速度稍微慢一些。而get通过url传参可以直接获取) 
17
2020
02

json字符串转换集json对象、json对象转换json字符串

//字符串转对象JSON.parse(json)eval('(' + jsonstr + ')')   // 对象转字符串JSON.stringify(json)
17
2020
02

原生js ajax请求有几个步骤?分别是什么

//创建 XMLHttpRequest 对象var ajax = new XMLHttpRequest();//规定请求的类型、URL 以及是否异步处理请求。ajax.open('GET',url,true);//发送信息至服务器时内容编码类型ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //发送请求ajax.send(nul
17
2020
02

什么是ajax?ajax作用是什么?

异步的javascript和xml  AJAX 是一种用于创建快速动态网页的技术。  ajax用来与后台交互
17
2020
02

你如何使用jQuery来提取一个HTML 标记的属性 例如. 链接的href?

attr() 方法被用来提取任意一个HTML元素的一个属性的值. 你首先需要利用jQuery选择及选取到所有的链接或者一个特定的链接,然后你可以应用attr()方法来获得他们的href属性的值。下面的代码会找到页面中所有的链接并返回href值:$('a').each(function(){   alert($(this).attr('href'));});
17
2020
02

网页上有 5 个 元素,如何使用 jQuery来选择它们?

另一个重要的 jQuery 问题是基于选择器的。jQuery 支持不同类型的选择器,例如 ID 选择器、class 选择器、标签选择器。鉴于这个问题没提到 ID 和 class,你可以用标签选择器来选择所有的 div 元素。jQuery 代码:$("div"),这样会返回一个包含所有 5 个 div 标签的 jQuery 对象。更详细的解答参见上面链接的文章。
17
2020
02

jQuery 库中的 $() 是什么?

 $() 函数是 jQuery() 函数的别称,乍一看这很怪异,还使 jQuery 代码晦涩难懂。一旦你适应了,你会爱上它的简洁。$() 函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery 对象上的多个不同方法。你甚至可以将一个选择器字符串传入 $() 函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。这个问题我已经见过好几次被提及,尽管它非常基础,它经常被用来区分一个开发人员是否了解 jQuery。
17
2020
02

怎样查看一个linux命令的概要与用法?假设你在/bin目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?

答案:使用命令whatis 可以先出显示出这个命令的用法简要,比如,你可以使用whatis zcat 去查看‘zcat’的介绍以及使用简要。[root@localhost ~]# whatis zcatzcat [gzip] (1) – compress or expand files
17
2020
02

哪一个bash内置命令能够进行数学运算。

答案:bash shell 的内置命令let 可以进行整型数的数学运算。#! /bin/bash……let c=a+b……
17
2020
02

bash shell 中的hash 命令有什么作用?

答案:linux命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。[root@localhost ~]# hashhits command2 /bin/ls2 /bin/su
17
2020
02

如果你的助手想要打印出当前的目录栈,你会建议他怎么做?

使用Linux 命令dirs可以将当前的目录栈打印出来。[root@localhost ~]# dirs/usr/share/X11【附】:目录栈通过pushd popd 来操作。
17
2020
02

如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?

答案:使用命令compgen ­-c,可以打印出所有支持的命令列表。[root@localhost ~]$ compgen -cl.lllswhichifthenelseelifficaseesacforselectwhileuntildodone… 
17
2020
02

你怎么能从循环中退出?

使用break语句,我们可以立即终止循环的执行:for (int i = 0; ; i++) {    if (i > 10) {        break;    }}
17
2020
02

什么是增强的for循环?

for语句的另一种语法旨在迭代集合,数组,枚举或实现Iterable接口的任何对象的所有元素:for (String aString : arrayOfStrings) {    // ...}
17
2020
02

Java支持哪些类型的循环?

Java提供了三种不同类型的循环:for,while和do-while。for循环用于提供了一种方法来迭代一个范围的值。当我们事先知道任务将重复多少次时,它是最有用的:for (int i = 0; i < 10; i++) {     // ...}而while循环在特定条件为真时可以执行的语句块:while (iterator.hasNext()) {    // ...}DO-While同时是一个的变化而声明,其中所述的布尔表达式是在
17
2020
02

什么时候最好使用if-then-else和Switch语句?

一个Switch测试多种单值的单个变量或当几个值将执行相同的代码时,声明更适合:switch (month) {    case 1:    case 3:    case 5:    case 7:    case 8:    case 10:    case 12:        days = 31; 
17
2020
02

当我们忘记在Switch的case子句中放入break语句时会发生什么?

该Switch语句将一直向下执行。这意味着它将继续执行所有case标签,直到找到break语句,即使这些标签与表达式的值不匹配。这是一个证明这一点的例子:int operation = 2;int number = 10; switch (operation) {    case 1:        number = number + 10;        break;  &n
17
2020
02

当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?

答案:可以使用bind命令,bind可以很方便地在shell中实现宏或按键的绑定。在进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。比如获取F12的字符序列获取方法如下:先按下Ctrl+V,然后按下F12 .我们就可以得到F12的字符序列 ^[[24~。接着使用bind进行绑定。[root@localhost ~]# bind ‘”\e[24~":"date"'注意:相同的按键在不同的终端或终端模拟器下可能会产生不同的字符序列。【附】也可以使用s
17
2020
02

du 和 df 的定义,以及区别?

答案:du 显示目录或文件的大小df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配图并考虑 Meta Data。df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
17
2020
02

查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?

答案:whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文件。-b   只查找二进制文件。-B<目录> 只在设置的目录下查找二进制文件。 -f 不显示文件名前的路径名称。-m   只查找说明文件。-M<目录> 只在设置的目录下查找说明文件
17
2020
02

通过什么命令指定命令提示符?

答案:\u:显示当前用户账号\h:显示当前主机名\W:只显示当前路径最后一个目录\w:显示当前绝对路径(当前用户目录会以~代替)$PWD:显示当前全路径\$:显示命令行’$'或者’#'符号\#:下达的第几个命令\d:代表日期,格式为week day month date,例如:"MonAug1"\t:显示时间为24小时格式,如:HH:MM:SS\T:显示时间为12小时格式\A:显示时间为24小时格式:HH:MM\v:BASH的版本信息 如export PS1=
17
2020
02

利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?

答案:ps -ef (system v 输出) ps -aux bsd 格式输出ps -ef | grep pid
17
2020
02

Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

答案:(1)、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。(2)、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。(3)、就绪状态:在 run_queue 队列里的状态(4)、运行状态:在 run_queue 队列里的状态(5)、可中断睡眠状态:处于
17
2020
02

随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?

答案:写文件命令:vi向屏幕输出带空格的字符串:echo hello world
17
2020
02

目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?

答案:创建目录: mkdir创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件复制文件: cp 7. 文件权限修改用什么命令?格式是怎么样的?文件权限修改: chmod格式如下:$ chmod u+x file 给 file 的属主增加执行权限$ chmod 751 file 给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限$ chmod u=rwx,g=rx,o=x
17
2020
02

建立软链接(快捷方式),以及硬链接的命令。

答案:软链接: ln -s slink source硬链接: ln link source
17
2020
02

Ls 命令执行什么功能? 可以带哪些参数,有什么区别?

ls 执行的功能: 列出指定目录中的目录,以及文件哪些参数以及区别: a 所有文件l 详细信息,包括大小字节数,可读可写可执行的权限等
17
2020
02

怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?

答案:清屏: clear退出当前命令: ctrl+c 彻底退出执行睡眠 : ctrl+z 挂起当前进程fg 恢复后台查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名查看指定帮助: 如 man adduser 这个很全 而且有例子; adduser --help 这个告诉你一些常用参数; info adduesr;
17
2020
02

怎么查看当前进程?怎么执行退出?怎么查看当前路径?

查看当前进程: ps执行退出: exit查看当前路径: pwd
16
2020
02

为什么我们不建议在实际的应用程序中使用 Spring Data Rest?

我们认为 Spring Data Rest 很适合快速原型制造!在大型应用程序中使用需要谨慎。通过 Spring Data REST 你可以把你的数据实体作为 RESTful 服务直接发布。当你设计 RESTful 服务器的时候,最佳实践表明,你的接口应该考虑到两件重要的事情:你的模型范围。你的客户。通过 With Spring Data REST,你不需要再考虑这两个方面,只需要作为 TEST 服务发布实体。这就是为什么我们建议使用 Spring Data Rest 在快速原型构造上面,或者作
16
2020
02

如何使用 Spring Boot 部署到不同的服务器?

你需要做下面两个步骤:在一个项目中生成一个 war 文件。将它部署到你最喜欢的服务器(websphere 或者 Weblogic 或者 Tomcat and so on)。
16
2020
02

为什么我们需要 spring-boot-maven-plugin?

spring-boot-maven-plugin 提供了一些像 jar 一样打包或者运行应用程序的命令。spring-boot:run 运行你的 SpringBooty 应用程序。spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可执行。spring-boot:start 和 spring-boot:stop 管理 Spring Boot 应用程序的生命周期(也可以说是为了集成测试)。spring-boot:build-info 生成执行器可以使用的构造信
16
2020
02

Spring2 和 Spring5 所需要的最低 Java 版本是什么?

Spring Boot 2.0 需要 Java8 或者更新的版本。Java6 和 Java7 已经不再支持。
16
2020
02

SpringBoot开发的具体好处

回顾我们之前的 SSM 项目,搭建过程还是比较繁琐的,需要:1、配置web.xml,加载spring和spring mvc2、配置数据库连接、配置spring事务3、配置加载配置文件的读取,开启注解。。。配置完成之后部署tomcat 调试而使用 Spring Boot 来开发项目则只需要非常少的几个配置就可以搭建起来一个 Web 项目,并且利用 IDEA 可以自动生成生成,这简直是太爽了...
16
2020
02

什么是SpringBoot

Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。
16
2020
02

SpringBoot四个主要特性

1、SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;2、自动配置:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;3、命令行接口:(Command-line-interface, CLI):SpringBoot的CLI发挥了Groovy编程语言的优势,并结合自动配置进一步简化Spring应用的开发;4、Actuatir:它为
16
2020
02

你常用的docker常用命令有哪些?操作镜像、容器、仓库的命令

docker images # 查看本地镜像docker serach 镜像 # 通过docker hub搜索镜像docker rmi 镜像 # 删除镜像docker save 镜像 > 路径 # 导出镜像docker load < 路径 # 导入镜像docker build -t . # 打包生成镜像操作容器命令:docker run -d 镜像 解释器 # 根据镜像生成容器,后台允许docker run -it 镜像 解释器 # 根据镜像生成并进入容器docker start/s
16
2020
02

简述项目部署流程?如何部署路飞

uwsgi+nginx+supervisor+nginx部署路飞:1.安装python3 环境2.安装 mysql,redis,nginx3.部署前端1.安装node.js的环境2.安装依赖包3.修改axios的发送的端口接口4.打包4.部署后端1.安装virtualenv2.创建虚拟环境3.安装django和uwsgi,以及项目的依赖包4.修改uwsgi的配置文件5.通过uwsgi -ini 配置文件启动django项目5.配置nginx1.创建两个虚拟主机,分别监听80和8000端口2.访问
16
2020
02

如何永久添加/opt/python36/的环境变量?

vim /etc/profile添加PATH = /opt/python36/bin:source /etc/profile
16
2020
02

什么是静态资源,什么是动态资源?

静态资源指定的是网站的CSS/JS/HTML文件动态资源一般指的是数据,即后端给前端提供的数据
16
2020
02

virtulevnwrapper是什么?简述使用

virtualenv 的一个最大的缺点就是,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录。Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环1.安装虚拟环境 pip3 install virtualenvwrapper2.创建并进入虚拟环境 mkvirtualenv env13.切换虚拟环境 workon 虚拟环境名
16
2020
02

redis哨兵是什么?作用是

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案redis哨兵是监控redis主从服务,不存储数据的,作用是用于自动切换reidis服务主从关系,即当主库服务停止后,会将其中一个从库变为主库
16
2020
02

redis-cluster是什么?

即使使用哨兵,redis每个实例也是全量数据存储,每个redis存储的内容都是完整的数据。为了最大化利用内存,可以采用cluster群集,就是分布式存储。即每台redis存储不同的内容。采用redis-cluster架构正是满足这种分布式存储要求的集群的一种体现。redis-cluster架构中,被设计成共有16384个hash slot。每个master分得一部分slot,其算法为:hash_slot = crc16(key) mod 16384 ,这就找到对应slot。采用hash slot
16
2020
02

命令 kill 9 的含义是:

sends SIGTERM to the process whose PID IS 9.
16
2020
02

在一行结束位置加上什么符号,表示未结束,下一行继续?

答:\
16
2020
02

如何显示Linux系统中注册的用户数(包含系统用户)?

答:wc --lines /etc/passwd
16
2020
02

显示二进制文件的命令是?

答:od
16
2020
02

在ps命令中什么参数是用来显示所有用户的进程的?

答:a
16
2020
02

如何在文件中查找显示所有以"*"打头的行?

grep ‘^\*’ file
16
2020
02

man 5 passwd含义是

显示passwd文件的结构
16
2020
02

在系统文档中找到关于print这个单词的所有说明?

答:apropos print
16
2020
02

多数Linux发行版本中,图形方式的运行级定义为?

答案:5
16
2020
02

哪个命令用来显示系统中各个分区中inode的使用情况?

答案:df -i
16
2020
02

xt2fs文件系统中,缺省的为root用户保留多大的空间?

答案:10%
16
2020
02

在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则

参考答案:磁盘簇(或i节点密度)是文件系统调度文件的基本单元.磁盘簇的大小,直接影响系统调度磁盘空间效率.当磁盘分区较大时,磁盘簇也应选得大些;当分区较小时,磁盘簇应选得小些.通常使用经验值.
15
2020
02

如果你参与到一个项目中,发现他们使用 Tab 来缩进代码,但是你喜欢空格,你会怎么做?

1.建议这个项目使用像 EditorConfig (http://editorconfig.org/) 之类的规范    2.为了保持一致性,接受项目原有的风格    3.直接使用 VIM 的 retab 命令 
15
2020
02

var numberArray = [3,6,2,4,1,5];

 1) 实现对该数组的倒排,输出[5,1,4,2,6,3]  2) 实现对该数组的降序排列,输出[6,5,4,3,2,1]          var numberArray = [3,6,2,4,1,5];         numberArray.reverse(); // 5,1,4,2,6,3         numberA
15
2020
02

设置一个已知ID的div和html内容为xxx,字体颜色设置为黑色?(不使用第三方框架)

 var div = document.getElementById(id);    div.innerHTML = ”;    div.style.color = ”;
15
2020
02

需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器的前进,后退时正确响应。给出你的技术实现方案?

用cookie或者localStorage来记录应用的状态即可,刷新页面时读取一下这个状态,然后发送相应ajax请求来改变页面即可     HTML5里引用了新的API,就是history.pushState和history.replaceState,就是通过这个接口做到无刷新改变页面URL的      虽然ajax可以无刷新改变页面内容,但无法改变页面URL     其次为了更好的可访问性,内容
15
2020
02

JQ和JQUI有啥区别?

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是”write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。jQuery UI 是建立在 jQuery JavaScript 库上的一组用户界面交互、特效、小部件及主
15
2020
02

什么是window对象?什么是document对象?

 window它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口。    document对象是window对象的一个对象属性
15
2020
02

display设置为inline-block时,li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?

行框的排列会受到中间空白(回车空格等等)的影响,这些空白也会被应用样式,占据空间,所以会有间隔    解决:设置ul的font-size为0,缺陷是必须重新在li中去设置字体大小
15
2020
02

如何居中div,如何居中一个浮动元素?如何让绝对定位的div居中?

 a.margin:xpx auto;    b.确定容器的宽高,这里宽度是必须的,高度可以不设,设置外层的上外边距和左外边距分别是宽高的一半。     实现居中关键在于 margin设置与 position:relative.    .div {     width:500px ;     height:300px;     
14
2020
02

网页验证码是干嘛的?是为了解决什么安全问题?

网页验证码介绍:”验证码”的英文表示为CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),翻译过来就是”全自动区分计算机和人类的图灵测试”,顾名思义,它是用来区分计算机和人类的。在 CAPTCHA 测试中,作为服务器的计算机会自动生成一个问题由用户来解答。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答 CAPTCHA 的问题,所以回答出问题的用户就可以
14
2020
02

try-with-resources如何运作?

在try-with-resources语句声明,并在执行前初始化一个或多个资源的try块,并在发言结束时自动关闭它们无论块是否正常或突然完成。任何实现AutoCloseable或Closeable接口的对象都可以用作资源:try (StringWriter writer = new StringWriter()) {    writer.write("Hello world!");}
14
2020
02

在哪些情况下,即使不能抛出异常,也可以使用try-finally块?

当我们想要确保我们不会通过遇到break,continue或return语句而意外地绕过清理代码中使用的资源时,此块很有用:HeavyProcess heavyProcess = new HeavyProcess();try {    // ...    return heavyProcess.heavyTask();} finally {    heavyProcess.doCleanUp();}此外,我们可能会面临无法在本地处理抛出
14
2020
02

在哪些情况下,finally块可能无法执行?

当执行try或catch块时JVM终止时,例如,通过调用System.exit(),或者当执行线程被中断或终止时,则不执行finally块。
14
2020
02

描述try-catch-finally构造中的执行流程。

当程序进入try块并且在其中抛出异常时,try块的执行被中断,并且控制流继续使用可以处理抛出异常的catch块。如果不存在这样的块,则当前方法执行停止,并且异常被抛出到调用堆栈上的前一个方法。或者,如果没有异常发生,则忽略所有catch块,并且程序执行正常继续。一个finally执行块总是被执行,无论是否try...cathc块中是否发生异常。
14
2020
02

未标记和标记的continue语句之间有什么区别?

未标记的continue语句跳转到最里面for,while或do-while循环的当前迭代的末尾,而标记的continue跳转到标记有给定标签的外循环。这是一个演示这个的例子:int[][] table = { { 1, 15, 3 }, { 25, 15, 49 }, { 15, 68, 93 } };int loopCycles = 0; outer: for (int[] rows : table) {    for (int row : rows) {&nb
14
2020
02

未标记和已标记的中断语句之间有什么区别?

未标记的break语句终止最内层的switch,for,while或do-while语句,而带标签的break则结束外部语句的执行。让我们创建一个示例来演示:int[][] table = { { 1, 2, 3 }, { 25, 37, 49 }, { 55, 68, 93 } };boolean found = false;int loopCycles = 0; outer: for (int[] rows : table) {    for (int row
14
2020
02

你怎么能从循环中退出?

使用break语句,我们可以立即终止循环的执行:for (int i = 0; ; i++) {    if (i > 10) {        break;    }}
14
2020
02

什么是增强的for循环?

for语句的另一种语法旨在迭代集合,数组,枚举或实现Iterable接口的任何对象的所有元素:for (String aString : arrayOfStrings) {    // ...}
14
2020
02

Java支持哪些类型的循环?

Java提供了三种不同类型的循环:for,while和do-while。for循环用于提供了一种方法来迭代一个范围的值。当我们事先知道任务将重复多少次时,它是最有用的:for (int i = 0; i < 10; i++) {     // ...}而while循环在特定条件为真时可以执行的语句块:while (iterator.hasNext()) {    // ...}DO-While同时是一个的变化而声明,其中所述的布尔表达式是在
14
2020
02

什么时候最好使用if-then-else和Switch语句?

一个Switch测试多种单值的单个变量或当几个值将执行相同的代码时,声明更适合:switch (month) {    case 1:    case 3:    case 5:    case 7:    case 8:    case 10:    case 12:        days = 31; 
14
2020
02

当我们忘记在Switch的case子句中放入break语句时会发生什么?

该Switch语句将一直向下执行。这意味着它将继续执行所有case标签,直到找到break语句,即使这些标签与表达式的值不匹配。这是一个证明这一点的例子:int operation = 2;int number = 10; switch (operation) {    case 1:        number = number + 10;        break;  &n
14
2020
02

描述switch语句。switch子句中可以使用哪些对象类型?

Switch允许根据变量值选择多个执行路径。每个路径都标有case或default,switch语句计算匹配的每个case表达式,并执行匹配标签后面的所有语句,直到找到break语句。如果找不到匹配项,则会执行默认块:switch (yearsOfJavaExperience) {    case 0:        System.out.println("Student");     
14
2020
02

描述if-then和if-then-else语句。什么类型的表达式可以用作条件?

两个语句都告诉我们的程序只有在特定条件的计算结果为true时才执行它们内部的代码。但是,如果 if子句的计算结果为false,则if-then-else语句会提供辅助执行路径:if (age >= 21) {    // ...} else {    // ...}与其他编程语言不同,Java仅支持布尔表达式作为条件。如果我们尝试使用不同类型的表达式,我们将得到编译错误。
14
2020
02

描述一个”reset”的CSS文件并如何使用它。知道normalize.css吗?你了解他们的不同之处?

Reset样式的目的就是清除某些浏览器的默认样式,方便css的书写:例如:*{margin:0;padding:0;list-style:none;}normalize的理念与reset的不同,他并不是清除浏览器的默认样式,而是尽量将所有的浏览器的默认样式统一。
14
2020
02

什么是Lambda表达式,Java 8 Lambda 表达式

1. 什么是λ表达式 λ表达式本质上是一个匿名方法。让我们来看下面这个例子:    public int add(int x, int y) {        return x + y;    }转成λ表达式后是这个样子:        (int x, int y) -> x + y;参数类型也可以省略,Java编译器会根据上下文推断出来: 
13
2020
02

列举3条以上PEP8编码规范

1、顶级定义之间空两行,比如函数或者类定义。2、方法定义、类定义与第一个方法之间,都应该空一行。3、三引号进行注释。4、使用Pycharm、Eclipse一般使用4个空格来缩进代码。
13
2020
02

int("1.4"),int(1.4)输出结果?

int("1.4")报错,int(1.4)输出1
13
2020
02

IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异

IOError:输入输出异常AttributeError:试图访问一个对象没有的属性ImportError:无法引入模块或包,基本是路径问题IndentationError:语法错误,代码没有正确的对齐IndexError:下标索引超出序列边界KeyError:试图访问你字典里不存在的键SyntaxError:Python代码逻辑语法出错,不能执行NameError:使用一个还未赋予对象的变量
13
2020
02

简述多线程、多进程

进程:1、操作系统进行资源分配和调度的基本单位,多个进程之间相互独立2、稳定性好,如果一个进程崩溃,不影响其他进程,但是进程消耗资源大,开启的进程数量有限制线程:1、CPU进行资源分配和调度的基本单位,线程是进程的一部分,是比进程更小的能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源。2、如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线程崩溃,都会造成进程的崩溃。应用:IO密集的用多线程,在用户输入,sleep 时候,可以切换到其他线程执行,减少等待的时间CPU密集的
13
2020
02

简述同源策略

同源策略需要同时满足以下三点要求: 1)协议相同  2)域名相同 3)端口相同  http:www.test.com与https:www.test.com 不同源——协议不同  http:www.test.com与http:www.admin.com 不同源——域名不同  http:www.test.com与http:www.test.com:8081 不同源——端口不同 只要不满足其中
13
2020
02

列出常见MYSQL数据存储引擎

InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。 MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。MEMORY:所
13
2020
02

分别从前端、后端、数据库阐述web项目的性能优化

该题目网上有很多方法,我不想截图网上的长串文字,看的头疼,按我自己的理解说几点。前端优化:1、减少http请求、例如制作精灵图。2、html和CSS放在页面上部,javascript放在页面下面,因为js加载比HTML和Css加载慢,所以要优先加载html和css,以防页面显示不全,性能差,也影响用户体验差。后端优化:1、缓存存储读写次数高,变化少的数据,比如网站首页的信息、商品的信息等。应用程序读取数据时,一般是先从缓存中读取,如果读取不到或数据已失效,再访问磁盘数据库,并将数据再次写入缓存。
13
2020
02

列出常见的状态码和意义

200 OK 请求正常处理完毕204 No Content 请求成功处理,没有实体的主体返回206 Partial Content GET范围请求已成功处理301 Moved Permanently 永久重定向,资源已永久分配新URI302 Found 临时重定向,资源已临时分配新URI303 See Other 临时重定向,期望使用GET定向获取304 Not Modified 发送的附带条件请求未满足307 Tempora
13
2020
02

遇到bug如何处理

1、细节上的错误,通过print()打印,能执行到print()说明一般上面的代码没有问题,分段检测程序是否有问题,如果是js的话可以alert或console.log。2、如果涉及一些第三方框架,会去查官方文档或者一些技术博客。3、对于bug的管理与归类总结,一般测试将测试出的bug用teambin等bug管理工具进行记录,然后我们会一条一条进行修改,修改的过程也是理解业务逻辑和提高自己编程逻辑缜密性的方法,我也都会收藏做一些笔记记录。4、导包问题、城市定位多音字造成的显示错误问题。
13
2020
02

简述mysql和redis区别

redis: 内存型非关系数据库,数据保存在内存中,速度快mysql:关系型数据库,数据保存在磁盘中,检索的话,会有一定的Io操作,访问速度相对慢
13
2020
02

提高python运行效率的方法

1、使用生成器,因为可以节约大量内存2、循环代码优化,避免过多重复代码的执行3、核心模块用Cython  PyPy等,提高效率4、多进程、多线程、协程5、多个if elif条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率
13
2020
02

写5条常用sql语句

show databases;show tables;desc 表名;select * from 表名;delete from 表名 where id=5;update students set gender=0,hometown="北京" where id=5
13
2020
02

正则表达式匹配中,(.*)和(.*?)匹配区别?

(.*)是贪婪匹配,会把满足正则的尽可能多的往后匹配(.*?)是非贪婪匹配,会把满足正则的尽可能少匹配
13
2020
02

请列出你会的任意一种统计图(条形图、折线图等)绘制的开源库,第三方也行

pychart、matplotlib
13
2020
02

数据库优化查询方法

外键、索引、联合查询、选择特定字段等等
13
2020
02

用python删除文件和用linux命令删除文件方法

python:os.remove(文件名)linux:       rm  文件名
13
2020
02

python2和python3区别?列举5个

1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print('hi')Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存3、python2中使用ascii编码,python中使用utf-8编码4、python2中unicode表示字符串序列,str表示字节序列      p
13
2020
02

数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复行,请写sql语句

select  distinct  name  from  student
13
2020
02

避免转义给字符串加哪个字母表示原始字符串?

r , 表示需要原始字符串,不转义特殊字符。
13
2020
02

一句话解释什么样的语言能够用装饰器?

函数可以作为参数传递的语言,可以使用装饰器。
13
2020
02

列出5个python标准库

os:提供了不少与操作系统相关联的函数sys:   通常用于命令行参数re:   正则匹配math: 数学运算datetime:处理日期时间
13
2020
02

举例说明同步和异步。

答:如果系统中存在临界资源(资源数量少于竞争资源的线程数量的资源),例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就必须进行同步存取(数据库操作中的排他锁就是最好的例子)。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。事实上,所谓的同步就是指阻塞式操作,而异步就是非阻塞式操作。
13
2020
02

请说出与线程同步以及线程调度相关的方法。

答:wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理InterruptedException异常;notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且与优先级无关;notityAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有线程,而是让它们竞争,只有获得锁的线程才能进入就绪状态。
13
2020
02

Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?

sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复(线程回到就绪状态,请参考第66题中的线程状态转换图)。wait()是Object类的方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的notify()方法(或notifyAll()方法)时才能唤醒等待池中的线程进入等锁池(lock
12
2020
02

HTML sup 标签/上标文本sup


<sup> 标签的定义是“上标文本”。


上标文本将会显示在当前文本流中字符高度的一半为基准线的上方,但是与当前文本流中文字的字体和字号都是一样的。上标文本能用来添加脚注,比如 WWW[1]。

11
2020
02

appml安全

<AppML> 安全通过 <AppML> 标签中的安全属性设置。<appml security="artists">以上应用开头包含了安全定义属性,只允许 artists 用户登陆。在这种情况下,用户登录的用户名必须为 "artists"组的成员。
11
2020
02

appml数据模型

appml数据模型: <appml security="security"><datasource>Datasource definition goes here</datasource><filters>Filter definitions goes here (if any)&
11
2020
02

HTML文档的后缀名

HTML文档的后缀名是:.html.htm以上两种后缀名没有区别,都可以使用。关于HTM,实际上HTM与HTML没有本质意义的区别,只是为了满足磁盘操作系统(DOS)仅能识别三位文件名而已,因为一些老的系统(win32)不能识别四位文件名,所以某些网页服务器要求index.html最后一个l必须去掉。这个后缀为htm的应该是很早之前设计的网站。
11
2020
02

Web Quality - 无障碍(WAI)

能够被残障人士使用的网站才能称得上一个易用的(易访问的)网站。

残障人士指的是那些带有残疾或者身体不健康的用户。

10
2020
02

bootstrap布局容器

BootStrap必须需要至少一个布局容器,才能为页面内容进行封装和方便的样式控制。相当于一个画板。任意元素使用了布局容器的样式,都会成为一个布局容器,建议使用div作为布局容器。样式作用.container类用于固定宽度并支持响应式布局的容器。 【特点:居中,两端留白】 <div class="container"> ... </div>.container-fluid类用于 100% 宽度,占据全部视口(viewport)的容器。&nbs
10
2020
02

bootstrap基本模板

使用以下给出的这份超级简单的 HTML 模版,或者修改这些实例。我们强烈建议你对这些实例按照自己的需求进行修改,而不要简单的复制、粘贴。 拷贝并粘贴下面给出的 HTML 代码,这就是一个最简单的 Bootstrap 页面了。 <!DOCTYPE html><html lang="zh-CN"> 
10
2020
02

bootstrap文件结构

如下图所示,红色框内是bootstrap的结构:
07
2020
02

常见状态码及原因短语

HTTP请求结构: 请求方式 + 请求URI + 协议及其版本   HTTP响应结构: 状态码 + 原因短语 + 协议及其版本1×× : 请求处理中,请求已被接受,正在处理2×× : 请求成功,请求被成功处理 200 OK3×× : 重定向,要完成请求必须进行进一步处理 301 : 永久性转移 302 :暂时性转移 304 : 已缓存4×× : 客户端错误,请求不合法 400:Bad Request,请求有语法问题 403:拒
07
2020
02

IP地址与物理地址

物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址,其中ARP协议用于IP地址与物理地址的对应。
07
2020
02

网络层的ARP协议工作原理

网络层的ARP协议完成了IP地址与物理地址的映射。首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查
07
2020
02

TCP和UDP分别对应的常见应用层协议

1). TCP对应的应用层协议 FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。 Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。 SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如
07
2020
02

TCP的拥塞处理

计算机网络中的带宽、交换结点中的缓存及处理机等都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏,这种情况就叫做拥塞。拥塞控制就是 防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。注意,拥塞控制和流量控制不同,前者是一个全局性的过程,而后者指点对点通信量的控制。拥塞控制的方法主要有以下四种:1). 慢启动:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小;2). 拥塞避免:拥塞避免算
07
2020
02

客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?

服务器端会为每个请求创建一个链接,并向其发送确认报文,然后等待客户端进行确认1)、DDos 攻击客户端向服务端发送请求链接数据包服务端向客户端发送确认数据包客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认2)、DDos 预防 ( 没有彻底根治的办法,除非不使用TCP )限制同时打开SYN半链接的数目缩短SYN半链接的Time out 时间关闭不必要的服务
07
2020
02

Mybatis介绍

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了Google,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。
07
2020
02

JDBC问题分析

一个JDBC编码例子:一个JavaWeb中连接数据库的代码如下:详细的步骤可以参照———JDBC编程步骤。package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLExcept
07
2020
02

JDBC编码问题分析

数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能。如果使用数据库链接池可解决此问题。Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java代码。设想:把sql语句写在一个配置文件中,修改配置文件中的sql语句就行了。使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。设想:sql语句中的占位符及其参数写在一个配
07
2020
02

持久层框架

1.HibernateHibernate是一个全自动ORM(Object Relation Mapping),旨在消除sql。但这也是把双刃剑,直接造成了herbinate的优化成本高。2.MybatiesMybaties是一个半自动,轻量级的框架。sql与Java编码分离,sql由开发人员控制。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weixin_43691058/articl
07
2020
02

MyBatis优缺点

总结:Mybatis的优点同样是Mybatis的缺点,正因为Mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限。Mybatis没有hibernate那么强大,但是Mybatis最大的优点就是简单小巧易于上手,方便浏览修改sql语句。1.优点①简单易学。(mybatis本身就很小且简单。没有任何第三方依赖)②灵活。(sql写在xml里,便于统一管理和优化)③解除sq
06
2020
02

对bootstrap的理解(高频率)

bootstrap就是从一个原始样本中进行有放回的重复采样,采样大小和原始样本大小相同,采样次数根据计算量而定。从每个重新样的样本中可以计算某个统计量的bootstrap 分布,比如说均值,多个重采样样本的均值构成了原始样本均值的bootstrap分布。在采样完后需要检查待研究统计量的bootstrap分布是不是符合正态分布。此外,统计量的bootstrap标准误等于该统计量bootstrap分布的标准差。
06
2020
02

用过媒体查询,或针对移动端的布局/CSS吗?

媒体查询,就是响应式布局。通过不同的媒介类型和条件定义样式表规则。媒介查询让CSS可以更精确作用于不同的媒介类型和同一媒介的不同条件。语法结构及用法:@media 设备名 only (选取条件) not (选取条件) and(设备选取条件),设备二{sRules}。
06
2020
02

data-属性的作用是什么?

属性用于存储页面或应用程序的私有自定义数据。data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。存储的(自定义)数据能够被页面的 
06
2020
02

如果想给段落添加强调文本,可以怎样操作?

添加class=“lead”
06
2020
02

如果需要在一个标题的旁边创建副标题,可以怎样操作?

在元素两旁添加,或者添加.small的class。
06
2020
02

Bootstrap 网格系统(Grid System)的工作原理?

(1)行必须放置在 .container class 内,以便获得适当的对齐(alignment)和内边距(padding)。(2)使用行来创建列的水平组。(3)内容应该放置在列内,且唯有列可以是行的直接子元素。(4)预定义的网格类,比如 .row 和 .col-xs-4,可用于快速创建网格布局。LESS 混合类可用于更多语义布局。(5)列通过内边距(padding)来创建列内容之间的间隙。该内边距是通过 .rows 上的外边距(margin)取负,表示第一列和最后一列的行偏移。(6)网格系统是
06
2020
02

什么是Bootstrap网格系统(Grid System)?

Bootstrap 包含了一个响应式的、移动设备优先的、不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到 12 列。它包含了用于简单的布局选项的预定义类,也包含了用于生成更多语义布局的功能强大的混合类。响应式网格系统随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。
06
2020
02

如果需要制作响应式图像,需要在标签上面增加什么?

class=“img-responsive"
06
2020
02

什么是Bootstrap?以及为什么要使用Bootstrap?

Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。Bootstrap具有移动设备优先、浏览器支持良好、容易上手、响应式设计等优点,所以Bootstrap被广泛应用。
06
2020
02

Bootstrap是哪家公司研发的?

Twitter
06
2020
02

box-sizing常用的属性有哪些?分别有什么作用?

属性值· box-sizing:content-box· box-sizing:border-box· box-sizing:inherit content-box· 这是box-sizing的默认属性值· 是CSS2.1中规定的宽度高度的显示行为· 在CSS中定义的宽度和高度就对应到元素的内容框· 在CSS中定义的宽度和高度之外绘制元素的内边距和边框border-box· 在CSS中微元素设定的宽度和高度就决定了元素的边框盒· 即为元素在设置内边距和边框是在已经设定好的宽度和高度之内
04
2020
02

简述Linux的技术特点。

  1:一个新潮的,非常稳定的,多用户,多任务的环境。        2:标准的平台。        3:无法超越的计算能力,可移动性和适应性。        4:X-Window系统。        5:设备独立性。        6:提供全部的源代码。    &nb
04
2020
02

linux采用什么版权方式发行?这种版权与通常的商业软件有何区别?

linux采用的发行方式是GPL,即General Public License.          区别:可以提供源代码,爱好者可以按照自己的需要自由修改,复制和发布程序的源码,并公布在Internet。这样就可以吸引了世界各地的操作系统高手为Linux编写各种的驱动程序和应用软件。这是一个包括系统管理工具,完整的开发环境,开发工具及应用软件在内的操作系统,用户可以方便的获取它。重要的是可以获取Linux的源代码。
04
2020
02

如果让你测试一个完全不熟悉的系统,你会怎么办?

1、先去直接操作和观察被测物;2、从各个渠道获取对测试有力的信息: 同类产品、历史bug、说明书、历史邮件、会议纪要、找产品经理、开发、运维、测试;3、一边学习一边加深理解,输出测试的重点、风险点,易出现问题的点;
04
2020
02

应用自动化 提高了多少效率?

自动化测试主要是为了节省将来回归测试的时间。例如下次更新版本,要对所有接口功能回归一遍,如果仍然按人手去测试,需要 4天/人; 如果跑自动化测试脚本,可能半小时就完成了。自动化测试,执行的次数越高,越体现出它的价值。
04
2020
02

为什么使用bootstrap?

移动设备优先:自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式。浏览器支持:所有的主流浏览器都支持 Bootstrap。    容易上手:只要您具备 HTML 和 CSS 的基础知识,您就可以开始学习 Bootstrap。响应式设计:Bootstrap 的响应式 CSS 能够自适应于台式机、平板电脑和手机。更多有关响应式设计的内容详见 Bootstrap 响应式设计。它为开发人员创建接口提供了一个简洁统一的解决方案。它包含了功能强大的内置组
04
2020
02

Bootstrap 包的内容

基本结构:Bootstrap 提供了一个带有网格系统、链接样式、背景的基本结构. CSS:Bootstrap 自带以下特性:全局的 CSS 设置、定义基本的 HTML 元素样式、可扩展的 class,以及一个先进的网格系统. 组件:Bootstrap 包含了十几个可重用的组件,用于创建图像、下拉菜单、导航、警告框、弹出框等等. JavaScript 插件:Bootstrap 包含了十几个自定义的 jQuery 插件。您可以直接包含所有的插件,也可以逐个包含这些插件.
03
2020
02

在Kafka中broker的意义是什么?

接收Producer发过来的数据,并且将它持久化,同时提供给Consumer去订阅组成Kafka集群节点,之间没有主从关系,依赖ZooKeeper来协调,broker负责消息的读取和存储,一个broker可以管理多个partition
03
2020
02

请说明Kafka相对传统技术有什么优势?

快速:单一的Kafka代理可以处理成千上万的客户端,每秒处理数兆字节的读写操作。可伸缩:在一组机器上对数据进行分区和简化,以支持更大的数据持久:消息是持久性的,并在集群中进行复制,以防止数据丢失。设计:它提供了容错保证和持久性
03
2020
02

请说明什么是传统的消息传递方法?

传统的消息传递方法包括两种:排队:在队列中,一组用户可以从服务器中读取消息,每条消息都发送给其中一个人。发布-订阅:在这个模型中,消息被广播给所有的用户
03
2020
02

请说明什么是Apache Kafka?

Apache Kafka是由Apache开发的一种发布订阅消息系统,它是一个分布式的、分区的和重复的日志服务。
03
2020
02

什么是lmbda表达式?它有什么好处?

简单来说,lambda表达式通常是当你需要使用一个函数,但是又不想费脑袋去命名一个函数的时候使用,也就是通常所说的匿名函数。lambda表达式一般的形式是:关键词lambda后面紧接一个或多个参数,紧接一个冒号“:”,紧接一个表达式。lambda表达式是一个表达式不是一个语句。
03
2020
02

C++的应用

1.游戏开发例如:LOL、魔兽世界游戏引擎 cocos2d cocos2d-x cocos3d2.操作系统开发及驱动开发其中有些部分必需要只能由C语言完成3.图形界面软件QQ、office 、ubuntu的图形界面软件等都是由C语言编写的C++的图形界面库可在Unix\windows\android\ios 跨平台使用而win32/MFC的图形界面编程语言,微软的C++图形界面库只适用于windows操作系统4.网络及分布式5.既需要性能也希望提高开发效率的情况下 一般都会选择C++例如:电信系
03
2020
02

为什么要学习C++?

1.虽然C++的需要永远不会有现在java的市场需求,但是C++的市场是其它编程语言永远无法侵蚀的;2.C++具有高性能、建模能力强的特点;3.C++的性能(优化之后)比C语言相差无几 C++的开发效率比C有了极大的提高;4.嵌入式开发中 C和C++相辅相成;
03
2020
02

JAVA和C++的关系

java:只是在C++的基础之上进行了"减法"算法,去掉了C++中难的语法。
03
2020
02

gRPC原则和诉求

服务而非对象、消息而非引用 —— 促进微服务的系统间粗粒度消息交互设计理念,同时避免分布式对象的陷阱和分布式计算的谬误。普遍并且简单 —— 该基础框架应该在任何流行的开发平台上适用,并且易于被个人在自己的平台上构建。它在CPU和内存有限的设备上也应该切实可行。免费并且开源 —— 所有人可免费使用基本特性。以友好的许可协议开源方式发布所有交付件。互通性 —— 该数据传输协议(Wire Protocol)必须遵循普通互联网基础框架。通用并且高性能 —— 该框架应该适用于绝大多数用例场景,相比针对特定
03
2020
02

gRPC 特点

语言中立,支持多种语言;基于 IDL ( 接口定义语言(Interface Define Language))文件定义服务,通过 proto3 工具生成指定语言的数据结构、服务端接口以及客户端 Stub;通信协议基于标准的 HTTP/2 设计,支持·双向流、消息头压缩、单 TCP 的多路复用、服务端推送等特性,这些特性使得 gRPC 在移动端设备上更加省电和节省网络流量;序列化支持 PB(Protocol Buffer)和 JSON,PB 是一种语言无关的高性能序列化框架,基于 HTTP/2 +
03
2020
02

gRPC 是什么?

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。
03
2020
02

CPU是如何做比较的

CPU的比较其实就是再内部做减法运算,什么意思呢?比如要比较a和b,就是再内部做一个a-b的操作,然后依据得到的结果来对a和b做比较,这里面肯定是要借助寄存器来完成,比如得到的结果就会放到标志寄存器中
03
2020
02

指令译码器(ID)

简单点就是对指令做分析的,看看你这个指令要干啥
03
2020
02

地址寄存器(AR)

这个就是保存着CPU访问内存上的那一块内存的内存地址,为啥要保存这个,因为CPU和内存速度相差比较大,所以CPU要保存着正在访问的那块内存的地址,直到内存的读写操作完成,不然,找不到之前访问的是哪个内存单元了啊
03
2020
02

程序计数器(PC)

这个学过Java内存结构的应该了解,它保存着下一条要执行的指令,也就是说当一个程序要执行的时候,会把这个程序的起始地址存到这个PC中,如果这个指令被执行的话也不用担心,CPU会自动修改,使得PC存放下一条要执行的指令
03
2020
02

指令寄存器(IR)

寄存器是保存东西的,指令寄存器自然就是保存指令的,也就是说CPU要执行一条指令的话,需要先把指令从内存上读取,然后放到我们上面说的数据缓冲寄存器中,之后再从DR放到IR中,接着嘞,会有一个叫做指令译码器的东西根据IR的内容生成很多的微操作指令,从而去控制其他部件已完成相应的功能
03
2020
02

CPU的主要组成部分

寄存器运算器没错就是这俩货,那他们是干啥的嘞,首先你得知道他们是CPU中的东西,这个寄存器啊,说白了就是存放数据的,是个存储部件,还记得之前说内存就是一个个的小格子吗?这个寄存器你就可以简单的想成也是小格子,放数据的。寄存器寄存器是存储部件,容量非常有限,能存储的数据的大小,现在来说一般有两种,也就是我们常听说的32位和64位,32位的寄存器就能存储4个字节的数据,64位的寄存器就能存储8个字节的数据,另外CPU也分为32位和64位其实就是由其中的寄存器的位数决定的,可想而知,即使是64位的寄存
03
2020
02

运算器

这个是计算的核心,主要的作用就是用来做加减乘除这些运算的,不过嘞,这里你需要知道的一点就是,运算器是没法直接操作内存中的数据的,很容易想到,运算器操作的数据是寄存器中存放的数据。
03
2020
02

寄存器

首先你得知道他们是CPU中的东西,这个寄存器啊,说白了就是存放数据的,是个存储部件,还记得之前说内存就是一个个的小格子吗?这个寄存器你就可以简单的想成也是小格子,放数据的。寄存器是存储部件,容量非常有限,能存储的数据的大小,现在来说一般有两种,也就是我们常听说的32位和64位,32位的寄存器就能存储4个字节的数据,64位的寄存器就能存储8个字节的数据,另外CPU也分为32位和64位其实就是由其中的寄存器的位数决定的,可想而知,即使是64位的寄存器也干不了啥大事啊,所以啊,现在的CPU一般都内置了
03
2020
02

CPU的特点

首先,这家伙是真的复杂,除此之外嘞,你还需要知道对于CPU来说,必须要把数据读取到寄存器中才能做相应的运算,另外CPU的数据读写的速度是真的快,内存和硬盘根本没法比,可能你没啥概念,举个例子吧CPU这家伙执行一条指令大约需要耗时1ns,但是对于内存呢?它去硬盘读取数据至少8ms,在这段时间内,CPU可以执行大约800万条指令,说这个,主要是为了让你直观的感受到CPU是真的快。就像《码农翻身》一书中说的那样:CPU的运算速度快的丧心病狂,但是它能做的事情简单的令人发指啥?为啥做的事情简单的令人发指
01
2020
02

你的系统中是否有使用到webservice开发,具体是怎么实现的?

如果你觉得自己掌握的不够好,对自己不够自信的可以回答为“我的系统中没有使用到webservice的开发,但是我掌握webservice开发的概念和流程”,然后可以给他讲讲相关的概念,也就是上面的这些问题的回答,这样可以绕过这个问题,因为并不是所有的系统都会涉及到webservice的开发。另一种回答即是先给他介绍一种webservice开发框架,比如CXF,然后告诉他你做的是服务端开发还是客户端开发,如果你说你做的事服务端开发,那么你就告诉他怎么定义的webservice,使用了哪些注解,怎么跟
01
2020
02

说说你知道的webservice框架,他们都有什么特点?

Webservice常用框架有JWS、Axis2、XFire以及CXF。下面分别介绍一个这几种Web Service框架的基本概念1、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。2、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是Web
01
2020
02

Webservice的SEI指什么?

WebService EndPoint Interface(webservice终端[Server端]接口)就是 WebService服务器端用来处理请求的接口
01
2020
02

怎么理解UDDI?

UDDI是Universal Description Discovery and Integration的缩写,即统一描述、发现和整合规范。用来注册和查找服务,把web services收集和存储起来,这样当别人访问这些信息的时候就从UDDI中查找,看有没有这个信息存在。
01
2020
02

WSDL文档主要有那几部分组成,分别有什么作用?

一个WSDL文档的根元素是definitions元素,WSDL文档包含7个重要的元素:types, import, message, portType, operations, binding和service元素。1、 definitions元素中一般包括若干个XML命名空间;2、 Types元素用作一个容器,定义了自定义的特殊数据类型,在声明消息部分(有效负载)的时候,messages定义使用了types元素中定义的数据类型与元素;3、 Import元素可以让当前的文档使用其他WSDL文档中指
01
2020
02

WSDL是什么,有什么作用?

WSDL是web service definition language的缩写,即web service的定义(描述)语言。怎样向别人介绍你的 web service 有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的web s
01
2020
02

什么是webservice(用你的话描述webservice)?在什么时候用webservice(webservice能给我们解决什么样的问题)?

一句话概括:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用Java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法。譬如从天气预报系统中获取某个城市的天气数据在自己系统中进行展示;从证券交易系统中获取某只股票的交易信息在自己的系统中进行展示;又譬如一个商城系统中能够展
30
2020
01

String为啥不可变,在内存中的具体形态?

 `String` 使用 `final char value[]` 来存放字符序列。
30
2020
01

String,StringBuffer,StringBuilder,区别,项目中那里用到了 StringBuffer 或者 StringBuilder

    - `String` 不可变    - `StringBuffer`,可变,线程安全    - `Stringbuilder`,可变,线程不安全
30
2020
01

String 是否可以继承, “+” 怎样实现?

  - `String` 是 `final` 类,不可继承。    - `+` 是通过 `StringBuilder`(或 `StringBuffer`) 类,和 `append` 方法实现
30
2020
01

Java 访问修饰符权限的区别

 - `public` 所有类都可访问    - `protected` 只允许包内、子类访问。    - `默认` 只允许包内访问    - `private` 只允许类内访问
30
2020
01

boolean 占几个字节

 1. 如果 boolean 变量在栈上,那么它占用一个栈单元(32-bits)    1. 如果在堆上,那么就跟 JVM 的实现有关了    1. 在 Oracle 的 JVM 实现,boolean[] 中每个元素占用一个字节(8-bits)
30
2020
01

Java 的优势

 - 语法简单    - 跨平台    - 当开发规模膨胀到一定程度,Java在规范、协作和性能调优上还是占有很大优势,在大型应用,尤其是企业应用上,Java的地位仍然难以撼动
30
2020
01

Trie-Tree 原理及其应用;

    - 字典树    - 特点        1. 根节点不包含字符,除根节点外的每一个子节点都包含一个字符。        1. 从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。        1. 每个节点的所有子节点包含的字符互不相同。    - 核心思想是空间换时间  &nb
30
2020
01

红黑树的特点及相比平衡二叉树的优点(先介绍各自特点)?

  - 红黑树        1. 每个节点要么是红色,要么是黑色。        1. 根节点永远是黑色的。        1. 所有的叶节点都是空节点(即 null),并且是黑色的。        1. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的路径上不会有两个连续的红色节点)     
30
2020
01

TreeMap 和 TreeSet 区别和实现原理

   - `TreeSet` 底层是 `TreeMap`,`TreeMap` 是基于红黑树来实现的。
30
2020
01

ConcurrentHashMap 原理

 1. 最大特点是引入了 CAS(借助 Unsafe 来实现【native code】)        1. CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。        1. Unsafe 借助 CPU 指令 cmpxchg 来实现        1. 使用实例:  &nb
30
2020
01

HashMap、ConcurrentHashMap 区别。

  1. 索引计算消除了最高位的影响    1. 默认容量: 16(若定义了初始容量(c),容量会定义为大于(c + (c >>> 1) +1) 的最小 2^n)        - 例如:初始容量为 13,则真正的容量是 32.    1. 线程安全,并发性能较好        - 并发性能好的原因是 ConcurrentHashMap 并不是定义