31
2020
03

Doctype有什么作用?严格模式与混杂模式有什么区别?

Doctype作用<!DOCTYPE>声明叫做文件类型定义DTD(Document Type Definition),声明的作用为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。<!DOCTYPE>声明必须在 HTML 文档的第一行,这并不是一个 HTML 标签。严格模式与混杂模式的区别:严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码。如何区分:浏览器解析时到底使用严格模
31
2020
03

Position属性的值有哪些?怎样使用?

absolute 生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。元素的位置通过”left”,”top”,”right”以及”bottom”属性进行规定。fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。relative 生成相对定位的元素,相对于其正常位置进行定位。因此,”left:20”会向元素的 LEFT 位置添加 20 像素。st
31
2020
03

CLR 技术和 COM技术的比较

CLR 和 COM 都定义了组件间交互的规范。COM 并没有定义如何描述组件间的依赖性,并且由于其严格的物理约定,造成了很多组件版本升级和控制的问题。CLR 运用元数据和逻辑类型定义等机制,有效地解决了 COM 遗留的一些问题。并且,相较于 COM模型,笔者认为CLR 更容易理解和学习。
31
2020
03

什么是 CTS、CLS 和CLR

公共语言运行库(CLR)是一个CLI 的一个实现,包含了.NET 运行引擎和符合 CLI 的类库。 通用类型系统(CTS)包含在微软公司提交的 CLI 规范,定义了一个可以在 CLR 上运行的类型规范。 公共语言规范是 CTS的一个子集,定义了所有面向.NET 的程序所需要符合的最小规范集。 
31
2020
03

Redis有什么缺点?

1. 存储受内存大小限制;2. 持久化时占用cpu较高
31
2020
03

Redis有什么优点?

1. 速度快:数据存储在内存中,类似于HashMap,操作和查找的时间复杂度都是O(1);2. 支持数据类型丰富:有字符串string,字典hash,列表list,集合set,有序集合zset3. 支持持久化
31
2020
03

Mybatis的编程步骤

 (0)创建SqlSessionFactoryBuilder   (1)通过SqlsesionFactoryBuilder创建sqlSessionFactory   (2)通过SqlSessionFactory创建sqlSession     (3)通过sqlSession执行数据库操作   (4)调用session.commit()提交事务   (5)调用session.cl
31
2020
03

$和#的区别

 (1)#把传入的参数当做字符串处理  $表示直接显示  (2)#很大程度防止Sql注入(语句拼接)  (3)能用#尽量用#
31
2020
03

模糊查询:LIKE

   <selectid="findByName2"        parameterType="java.lang.String" resultType="com.gugiu.model.User">               select *  from use
31
2020
03

映射文件

 <mapper name="text">         <select id="FindByID" paramenterType="int" resultType="com.guigu.User">                select
31
2020
03

Mybatis和jdbc的区别

 相比与jdbc,Mybatis具有以下优点           (1)数据库链接创建,释放频繁造成系统资源浪费会影响系统性能,使用数据库可以解决               解决:在核心配置文件SqlMapConfig.xml中配置数据链接池,使用数据链接池管理数据库链接       (2)Sql写在代码中
31
2020
03

Mybatis分为三层

(1)API接口层:提供给外部使用的接口API  (2)数据处理层:负责具体的SQL  (3)基础支撑层:负责最基础的功能支撑,如连接管理,事务管理,配置加载和缓存处理
31
2020
03

谈谈MyBatis

Mybatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使得开发者只需要专注于SQL语句本身,而不用去关心注册驱动,创建connection等,Mybatis通过xml文件配置或者注解的方式将要执行的各种statement配置起来,并通过java对象和statement中的sql进行映射成最终执行的sql语句,最后由Mybatis框架执行sql并将结果映射成java对象并返回。
31
2020
03

如何获取自动生成的(主)键值

 解决思路:通过LAST_INSERT_ID()获取刚插入记录的自增主键值,在insert语句执行后,执行select LAST_INSERT_ID()就可以获取自增主键。    <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">            
31
2020
03

使用MyBatis的mapper接口调用有哪些要求?

(1)Mapper接口方法名和mapper.xml中定义的每个sql的id相同(2)Mapper接口中输入的参数类型和mapper.xml中定义的每个sql的ParameterType相同(3)Mapper接口中输出的参数类型和mapper.xml中定义的每个sql的resultType相同(4)Mapper.xml文件中的namespace即是接口的类路径
31
2020
03

Statement和PrepareStatement的区别

  PreparedStatement:表示预编译的 SQL 语句的对象。  (1)PrepareStatement可以使用占位符,是预编译的,批处理比Statement效率高  (2)在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。  (3)PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行
31
2020
03

Python中pass语句的作用是什么?

pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作。
31
2020
03

final, finally, finalize的区别。

 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。        finally是异常处理语句结构的一部分,表示总是执行。        finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。但是JVM不保证此方法总被调用
31
2020
03

try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

 我们知道finally{}中的语句是一定会执行的,那么这个可能正常脱口而出就是return之前,return之后可能就出了这个方法了,鬼知道跑哪里去了,但更准确的应该是在return中间执行,请看下面程序代码的运行结果:public classTest {    public static void main(String[]args) {       System.out.println(newTest().test())
31
2020
03

下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

对于如下代码:String s1 = "a";String s2 = s1 + "b";String s3 = "a" + "b";System.out.println(s2 == "ab");System.out.println(s3 == "ab");第一条语句打印的结果为false,第二条语句打印的结果为true,这说明javac编译可以对字符串常量直接相加的表达式进行优
31
2020
03

String和StringBuffer的区别

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
31
2020
03

String s = new String("xyz");创建了几个StringObject?是否可以继承String类?

 两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,那么这里就不会创建”xyz”了,直接从缓冲区拿,这时创建了一个StringObject;但如果以前没有用过"xyz",那么此时就会创建一个对象并放入缓冲区,这种情况它创建两个对象。至于String类是否继承
31
2020
03

你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。 List的具体实现包括 ArrayList和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List适用于按数值索引访问元素的情形。        Map 提供了一个更通用的元素存储方法。 Map集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。        它们都有增删改查的
31
2020
03

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。        ==和equal区别也是考烂了的题,这里说一下:        ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。        equals方法是用于比较两个独立对象的内
31
2020
03

Collection和Collections的区别。

 Collection是集合类的上级接口,继承他的接口主要有Set和List.        Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
31
2020
03

去掉一个Vector集合中重复的元素

Vector newVector = new Vector();For (int i=0;i<vector.size();i++){Object obj = vector.get(i);       if(!newVector.contains(obj);             newVector.add(obj);}还有一种简单的方式,利用了Set不允许重复元素:HashSet
31
2020
03

说出ArrayList,Vector,LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,索引就变慢了,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。     
31
2020
03

List、Map、Set三个接口,存取元素时,各有什么特点?

(这样的题比较考水平,两个方面的水平:一是要真正明白这些内容,二是要有较强的总结和表述能力。)        首先,List与Set具有相似性,它们都是单列元素的集合,所以,它们有一个共同的父接口,叫Collection。Set里面不允许有重复的元素,即不能有两个相等(注意,不是仅仅是相同)的对象,即假设Set集合中有了一个A对象,现在我要向Set集合再存入一个B对象,但B对象与A对象equals相等,则B对象存储不进去,所以,Set集合的add方法有一个
31
2020
03

List,Set, Map是否继承自Collection接口?

  List,Set是,Map不是
31
2020
03

List和 Map区别?

一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。
31
2020
03

HashMap和Hashtable的区别

   HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。        HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue
31
2020
03

ArrayList和Vector的区别

这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是与HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素。         ArrayList与Vector的区别主要包括两个方面:.(1)同步性: 
31
2020
03

String s = "Hello";s = s + "world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

 没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。      &
31
2020
03

内部类可以引用它的包含类的成员吗?有没有什么限制?

 完全可以。如果不是静态内部类,那没有什么限制!        如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如,下面的代码:class Outer{static int x;static class Inner    {        voidtest()        {&
31
2020
03

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

   abstract的method不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!        native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。例如,FileOutputSteam类要硬件打交道,底层的实现用的是操作系统相关的api实现;例如,在windows用c语言实现的,所以,查看jdk的源代码,
31
2020
03

abstractclass和interface语法上有什么区别?

1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。5. 抽象类中可以包含静态方法,接口中不能包含静态方法6. 抽象类和接口中都可以包
31
2020
03

Java中实现多态的机制是什么?

靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
31
2020
03

接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

 接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中可以有静态的main方法。        备注:只要明白了接口和抽象类的本质和作用,这些问题都很好回答,你想想,如果你是java语言的设计者,你是否会提供这样的支持,如果不提供的话,有什么理由吗?如果你没有道理不提供,那答案就是肯定的了。        只要记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有a
31
2020
03

Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

Overload是重载的意思,Override是覆盖的意思,也就是重写。        重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。        重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向
31
2020
03

Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

 Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应。        例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方
31
2020
03

Integer与int的区别

 int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。        例如:要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符
31
2020
03

是否可以从一个static方法内部发出对非static方法的调用?

   不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
31
2020
03

静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。        在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。&nbs
31
2020
03

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句: finalStringBuffer a=new StringBuffer("immutable");执行如下语句将报告编译期错误:a=new StringBuffer("");但是,执行如下语句则可以通过编译:a.append(" broken!");有人在定义方法的参数时,可能想采用如下形式来阻止方法内部
31
2020
03

用最有效率的方法算出2乘以8等於几?

  2<< 3,(左移三位)因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2<< 3。
31
2020
03

char型变量中能不能存贮一个中文汉字?为什么?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
31
2020
03

switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

 在switch(e)中,e只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。switch语句能否作用在String上说错了,Java1.7之后已经支持这种写法了!
31
2020
03

在JAVA中如何跳出当前的多重嵌套循环?

 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。例如:for(int i=0;i<10;i++){   for(intj=0;j<10;j++){       System.out.println(“i=” + i + “,j=” + j);       if(j == 5) bre
31
2020
03

说说&和&&的区别。

  &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。        &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!= null&& !str.equals(s))表达式,当str为null时,后面的表达式不会执行
31
2020
03

Java有没有goto?

  java中的保留字,现在没有在java中使用。
31
2020
03

一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。
31
2020
03

追加一个双重锁定的单例模式

using System;using System.Collections.Generic;/// <summary>/// 适用于在多线程的情况下保证只有一个实例化对象的情况,例如银行的操作系统/// </summary>namespace DoubleLockInstance{ //---------------------------------- // 双重锁定单例 public sealed class Singleton 
31
2020
03

现有一个整数number,请写一个方法判断这个整数是否是2的N次方

答:private static bool GetFlag(int num)        {        if (num < 1) return false;        return (num & num - 1) == 0;     }
31
2020
03

请写出C#中的单例模式

答:  public class Single    {        private static Single instance;        private Single (){}        public static Single GetInstance ()        {  &n
31
2020
03

类的私有成员会被子类继承吗?请说明原因。

答:会被子类继承,但是不能被访问。所以看上去是不能被继承的,实际上确实被继承了。
31
2020
03

接口和抽象类的区别是什么?

答:接口中所有的方法都不能有实现,并且不能指定方法的修饰符    抽象类中可以有方法的实现,也可以指定方法的访问修饰符    第一个继承接口的类必须实现接口里的所有方法    而抽象类中抽象方法的实现是由第一个非抽象的派生类来实现
31
2020
03

什么时候必须声明一个类为抽象类?

答:(1)当这个类中有抽象方法的时候,必须声明类为抽象类       (2)该类没有完全实现父类的抽象方法时,也需要声明为抽象类
31
2020
03

const和readonly有什么区别?

答:const关键字用来声明编译时的常量      readonly用来声明运行时的常量
31
2020
03

请问能设置类A可被继承,但类A中的某个方法不能被重写吗?

答:能,将类A的修饰符标记为public、标记类A中的不允许重写的方法为sealedsealed关键字不仅可以限制类,也可以限制方法。
31
2020
03

请简略描述重载和重写的区别?

答:方法重载提供了一个相同的方法但是方法签名的参数不同的调用的实现。      重写提供了子类中改变父类方法行为的实现。
31
2020
03

我们都知道一个类可以有多个构造函数,并且C#会在我们创建类的时候默认的提供一个无参的构造函数,当我实现了另外一个有参数的构造函数的时候,我还能调用无参数的构造函数吗?请说明原因。

答:不能,因为一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要自己手动写入一个无参数的构造函数。
31
2020
03

C#中类是否支持多继承?请说明原因。

答:不支持,需要用接口来实现多继承
30
2020
03

MyBatis 动态sql之bind标签

在进行模糊查询时,如果使用“${}”拼接字符串,则无法防止 SQL 注入问题。如果使用字符串拼接函数或连接符号,但不同数据库的拼接函数或连接符号不同。例如 MySQL 的 concat 函数、Oracle 的连接符号“||”,这样 SQL 映射文件就需要根据不同的数据库提供不同的实现,显然比较麻烦,且不利于代码的移植。幸运的是,MyBatis 提供了 <bind> 元素来解决这一问题。在 myBatisDemo03 应用中测试 <bind> 元素,具体过程如下: 
30
2020
03

你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms,g1

30
2020
03

jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代等

答:对象优先在新生代区中分配,若没有足够空间,Minor GC; 大对象(需要大量连续内存空间)直接进入老年态;长期存活的对象进入老年态。如果对象在新生代出生并经过第一次MGC后仍然存活,年龄+1,若年龄超过一定限制(15),则被晋升到老年态。
30
2020
03

类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序

答:先静态、先父后子。 先静态:父静态 > 子静态 优先级:父类 > 子类 静态代码块 > 非静态代码块 > 构造函数 一个类的实例化过程: 1,父类中的static代码块,当前类的static 2,顺序执行父类的普通代码块 3,父类的构造函数 4,子类普通代码块 5,子类(当前类)的构造函数,按顺序执行。 6,子类方法的执行,
30
2020
03

g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择

CMS收集器:是基于标记清除算法实现的,一般就是初始标记,并发标记,重新标记,并发清除,目的是实现最短的响应回收时间。保证系统的响应时间,减少垃圾收集时的停顿时间G1收集器:他的过程是初始标记、并发标记、最终标记、筛选回收,基于标记整理算法实现,以吞吐量优先,保证保证吞吐量的。
30
2020
03

你们线上应用的 JVM 参数有哪些。

-serverXms6000M-Xmx6000M-Xmn500M-XX:PermSize=500M-XX:MaxPermSize=500M-XX:SurvivorRatio=65536-XX:MaxTenuringThreshold=0-Xnoclassgc-XX:+DisableExplicitGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+UseCMSCompactAtFullCollection-XX:CMSFullGCsBeforeCompac
30
2020
03

抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。6、抽象方法只
30
2020
03

解释AOP模块

AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。
30
2020
03

XMLBeanFactory

最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根据XML文件中的定义加载beans。该容器从XML 文件读取配置元数据并用它去创建一个完全配置的系统或应用。
30
2020
03

BeanFactory – BeanFactory 实现举例。

Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离。最常用的BeanFactory 实现是XmlBeanFactory 类。
30
2020
03

核心容器(应用上下文) 模块。

这是基本的Spring模块,提供spring 框架的基础功能,BeanFactory 是 任何以spring为基础的应用的核心。Spring 框架建立在此模块之上,它使Spring成为一个容器。
30
2020
03

Spring由哪些模块组成?

以下是Spring 框架的基本模块:Core moduleBean moduleContext moduleExpression Language moduleJDBC moduleORM moduleOXM moduleJava Messaging Service(JMS) moduleTransaction moduleWeb moduleWeb-Servlet moduleWeb-Struts moduleWeb-Portlet module
30
2020
03

什么是spring?

Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 
30
2020
03

spring基于xml配置声明式事务管理步骤?

步骤:1.在applicationContext.xml中声明aop和tx的名称空间2.声明事物管理器  也就是声明一个bean3.声明通知 通过<tx:advice>和他里面的各种属性配置其中name是必须的,说明对那个方法进行事物控制4.声明切面  通过<aop:config>配置切面,在里面配置切点和通知Spring声明式事务管理步骤:1.导入所需jar包(Spring3.0之后不再一起发布依赖包,要自行下载) 2.在applicat
30
2020
03

谈谈你所知道的数据库事务管理器?

spring中的平台事物管理器可以根据不同的平台选择相应的事物管理器,有DataSourceTransactionManager,针对jdbctemplate和mybits开发HibernateTransactionManager针对Hibernate开发JpaTransactionManager针对jpa开发事物管理器根据TransactionDefinition定义的事物信息进行事物管理,通过Transactionstatus来描述事物的运行状态
30
2020
03

Dao类可以怎么样使用jdbcTemplate进行数据库操作?

1.通过Autowired注入jdbcTemplate,dao类在spring管理中,jdbcTemplate在spring管理中,在dao类上直接通过autowired注入2.通过property属性注入,dao类在spring管理中,jdbcTemplate在spring管理中,在dao类上添加set方法,在xml文件中配置property属性注入3.dao类继承JdbcDaoSupport,dao类在spring容器中,给他注入属性DataSource,然后在dao 类中直接使用getTe
30
2020
03

谈谈你所知道的数据库连接池?

概念:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。阿里的Druid开源连接池,c3p0连接池,Hibernate中sessionFactory内部维护了一个连接池,spring内置的连接池DriverManagerDataSource 
29
2020
03

如果现在要删除SQLite中表的一个字段如何做?

SQLite目前还不支持drop column,所以必须想出另外一种方法来进行表字段的删除。如下sql语句会复制一个和record表一样表结构的temp表出来,但是我们想要的是去除某一个字段(例如去除record表中的name字段,就不要复制它就好了),所以sql语句如下:create table temp as select recordId, customer, place, time from record where 1 = 1;  这样复制出来的表就会缺少“name”字段,然
29
2020
03

使用SQLite做批量操作有什么好的方法吗?

即使用事务处理进行优化,默认SQLite的数据库插入操作,如果没有采用事务的话,它每次写入提交,就会触发一次事务操作,而这样几千条的数据,就会触发几千个事务的操作,这就是时间耗费的根源
29
2020
03

了解SQLite中的事务处理吗?是如何做的?

使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。多用于大量数据操作时,能明显减少耗时。
29
2020
03

SharePreferences适用情形?使用中需要注意什么?

保存登录用户名密码等情形,应注意多进程并发读的时候数据可能不准确。需要注意:getSharedPreferences(“User”, Context.MODE_PRIVATE)方法中第二个参数需要了解Android的四种枚举方式下面是详细的解释: 私有模式 Context.MODE_PRIVATE 的值是 0; ①只能被创建这个文件的当前应用访问 ②若文件不存在会创建文件;若创建的文件已存在则会覆盖掉原来的文件追加模式 Context.MODE_
29
2020
03

Android中提供哪些数据持久存储的方法?

在Android中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供器(Content provider)和网络。
29
2020
03

Timer比AlarmManager实现心跳时更耗电原因

一. TimerAndroid 的 Timer 类可以用来计划需要循环执行的任务。 Timer 的问题是它需要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量, 大大减短手机待机时间。这种方式不能满足我们的需求。二. AlarmManagerAlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒 C
29
2020
03

列出几种常见的解决消息即时获取方案

轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。SMS(短信消息)(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。
29
2020
03

简要说明一下openfire、smack、spark

openfire是基于XMPP协议的即时通信的服务器端的一个实现,你不需要编写一行服务端的代码,实现一个简单的点对点通信或是简单的群聊.smack 是XMPP传输协议的Java实现,提供了一套API接口 可以连接服务端。一般用于快速开发手机客户端。spark是基于smack实现的一个XMPP即时通信客户端(PC端的)。
29
2020
03

简单阐述一下及时推送原理?

a) 传统获取服务器数据使用的是pull模式,是客户端向服务器请求数据。从客户端发起连接请求,获取到服务器数据后就关闭连接。当连接断开后,服务器就会失去客户端的地址,因此无法主动向客户端发送消息。b) 推送(push)是服务主动向客户端发送数据。它的原理是保持一个长连接,当客户端和服务器建立连接后不再断开,这样服务器随时有新消息都可以发送给客户端。长连接和短连接。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接。whi
29
2020
03

内存泄漏和内存溢出分别是什么?它们有什么关系?

内存泄露是指保存了不可能再被访问的变量引用,导致垃圾回收器无法回收内存。 也就是说: 在Java中有些对象的生命周期是有限的,当它们完成了特定的逻辑后将会被垃圾回收;但是,如果在对象的生命周期本来该被垃圾回收时这个对象还被别的对象所持有引用,那就会导致内存泄漏内存溢出是指虚拟机内存耗尽,无法为新对象分配内存,导致引用崩溃。典型的情况为加载多张大图,导致内存耗尽。当某个界面存在内存泄露,反复进入该界面,将导致一直有新对象创建但是无法回收,最终内存耗尽,产生内存溢出。
29
2020
03

C#中的委托是什么?事件是不是一种委托?

答 : 委托可以把一个方法作为参数代入另一个方法。                 委托可以理解为指向一个函数的引用。                 是,是一种特殊的委托
29
2020
03

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。

答:public class MainClass                  {                  public static void Main()                 &n
29
2020
03

.NET和C#有什么区别

答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。C#是一种编程语言,可以基于.NET平台的应用。
29
2020
03

Android 服务(Service)

服务是一个后台运行的组件,执行长时间运行且不需要用户交互的任务。即使应用被销毁也依然可以工作。服务基本上包含两种状态 -状态 描述Started Android的应用程序组件,如活动,通过startService()启动了服务,则服务是Started状态。一旦启动,服务可以在后台无限期运行,即使启动它的组件已经被销毁。Bound 当Android的应用程序组件通过bindService()绑定了服务,则服务是Bound状态。Bound状态的服务提供了一个客户服务器接口来允许组件与服务进行交互,如
29
2020
03

Android 广播接收器(Broadcast Receivers)

广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。例如,应用程序可以初始化广播来让其他的应用程序知道一些数据已经被下载到设备,并可以为他们所用。这样广播接收器可以定义适当的动作来拦截这些通信。有以下两个重要的步骤来使系统的广播意图配合广播接收器工作。创建广播接收器注册广播接收器还有一个附加的步骤,要实现自定义的意图,你必须创建并广播这些意图。创建广播接收器广播接收器需要实现为BroadcastReceiver类的子类,并重写onReceive()方法来接收以I
29
2020
03

Android - 内容提供者(Content Provider)

内容提供者组件通过请求从一个应用程序向其他的应用程序提供数据。这些请求由类 ContentResolver 的方法来处理。内容提供者可以使用不同的方式来存储数据。数据可以被存放在数据库,文件,甚至是网络。有时候需要在应用程序之间共享数据。这时内容提供者变得非常有用。内容提供者可以让内容集中,必要时可以有多个不同的应用程序来访问。内容提供者的行为和数据库很像。你可以查询,编辑它的内容,使用 insert(), update(), delete() 和 query() 来添加或者删除内容。多数情况下
29
2020
03

Android 碎片(Fragment)

碎片是活动的一部分,使得活动更加的模块化设计。我们可以认为碎片是一种子活动。下面是关于碎片的重要知识点 -碎片拥有自己的布局,自己的行为及自己的生命周期回调。当活动在运行的时候,你可以在活动中添加或者移除碎片。你可以合并多个碎片在一个单一的活动中来构建多栏的UI。碎片可以被用在多个活动中。碎片的生命周期和它的宿主活动紧密关联。这意味着活动被暂停,所有活动中的碎片被停止。碎片可以实现行为而没有用户界面组件。碎片是 Android API 版本11中被加入到 Android API。通过继承 Fra
29
2020
03

Android意图(Intent)和过滤器(Filter)

Android意图是一个要执行的操作的抽象描述。它可以通过 startActivity 来启动一个活动,broadcastIntent 来发送广播到任何对它感兴趣的广播接受器组件,startService(Intent) 或者bindService(Intent, ServiceConnection, int) 来与后台服务通讯。意图本身(一个 Intent 对象)是一个被动的数据结构,保存着要执行操作的抽象描述。例如,你有一个活动,需要打开邮件客户端并通过 Android 设备来发送邮件。为了
29
2020
03

AJAX 教程

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。AJAX 实例使用 AJAX 修改该文本内容修改内容尝试一下 »现在开始学习 AJAX !阅读本教程前,您需要了解的知识:阅读本教程,您需要有以下
29
2020
03

AJAX 简介

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。您应当具备的基础知识在继续学习之前,您需要对下面的知识有基本的了解:HTML / XHTMLCSSJavaScript / DOM如果您希望首先学习这些项目,请在我们的首页访问这些教程。什么是 AJAX ?AJAX = 异步 JavaScript 和 XML。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部
29
2020
03

AJAX 实例

为了帮助您理解 AJAX 的工作原理,我们创建了一个小型的 AJAX 应用程序:实例使用 AJAX 修改该文本内容修改内容尝试一下 »AJAX 实例解析上面的 AJAX 应用程序包含一个 div 和一个按钮。div 部分用于显示来自服务器的信息。当按钮被点击时,它负责调用名为 loadXMLDoc() 的函数:<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div><button typ
29
2020
03

AJAX - 创建XMLHttpRequest对象

XMLHttpRequest 是 AJAX 的基础。XMLHttpRequest 对象所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。创建 XMLHttpRequest 对象所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。创建
29
2020
03

AJAX向服务器发送请求请求

XMLHttpRequest 对象用于和服务器交换数据。向服务器发送请求如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true);xmlhttp.send();方法 描述open(method,url,async) 规定请求的类型、URL 以及是否异步处理请求。method:请求的类型;GET 或 POSTurl:
29
2020
03

AJAX - 服务器响应

服务器响应如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。属性 描述responseText 获得字符串形式的响应数据。responseXML 获得 XML 形式的响应数据。responseText 属性如果来自服务器的响应并非 XML,请使用 responseText 属性。responseText 属性返回字符串形式的响应,因此您可以这样使用:实例document.getElementById("m
29
2020
03

AJAX - onreadystatechange事件

onreadystatechange 事件当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。readyState 属性存有 XMLHttpRequest 的状态信息。下面是 XMLHttpRequest 对象的三个重要的属性:属性 描述onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。readyState 存有 XMLHttp
29
2020
03

AJAX ASP/PHP实例

AJAX 用于创造动态性更强的应用程序。AJAX ASP/PHP 实例下面的例子将为您演示当用户在输入框中键入字符时,网页如何与 web 服务器进行通信: 请在下面的输入框中键入字母(A - Z):实例在输入框中尝试输入字母 a:输入姓名: 提示信息:尝试一下 »实例解析 - showHint() 函数当用户在上面的输入框中键入字符时,会执行函数 "showHint()" 。该函数由 "onkeyup" 事件触发:function showHin
29
2020
03

AJAX数据库

AJAX Database 实例AJAX 可用来与数据库进行动态通信。AJAX 数据库实例下面的例子将演示网页如何通过 AJAX 从数据库读取信息: 请在下面的下拉列表中选择一个客户:实例客户信息将显示在这...尝试一下 »实例解释 - showCustomer() 函数当用户在上面的下拉列表中选择某个客户时,会执行名为 "showCustomer()" 的函数。该函数由 "onchange" 事件触发:function showCustomer(str)
29
2020
03

你了解RESTful API吗?说说干什么用的。

 所以RESTful API就是REST风格的API。 那么在什么场景下使用RESTful API呢?在当今的互联网应用的前端展示媒介很丰富。有手机、有平板电脑还有PC以及其他的展示媒介。那么这些前端接收到的用户请求统一由一个后台来处理并返回给不同的前端肯定是最科学和最经济的方式,RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式。     RESTful API由后台也就是SERVER来提供前端来调用。前端调用API向后台发起H
29
2020
03

XSS攻击?如何防范

  Xss又称css,全称:跨站式脚本攻击,问题出现的原因:用户在输入内容时故意输入css或者js代码使网站在加载内容时运行恶意程序造成网站无法正常运行或者恶意盗取信息防止:1: 正则过滤特殊字符,比如< > =  ‘’   2去除html标签 strp_tags()   3 利用php函数特殊字符转义  htmlentities()   addslashes()
29
2020
03

说下你目前框架所用到的核心概念

laravel thinkphp yii 什么的,讲框架的亮点
29
2020
03

如何实现不基于session和cookie的用户认证。

将用户信息加密放到http 的header部分,每次拿到http的时候,验证获取header的信息。
29
2020
03

说下你了解的session和cookie

  cookie不是很安全 ,cookie可以进行cookie欺骗,别人可以获取cookie中session id考虑到安全应当使用session。session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能   考虑到减轻服务器,性能方面,应当使用COOKIE。     Session用于存放后台的用户信息跟cookie进行会话机制,用于系统登录业务逻辑        作用?
29
2020
03

PHP的优化方案

 PHP语言级的性能优化,指的是PHP语法基本功能,这部分优化比较简单易 见、快速可行,比较快速看到效果。少写PHP的代码,多用PHP自身能力解决问题。 多使用PHP内置的变量、常量、函数。我们用PHP代码实现的功能和使用PHP内置的函数实现的同样功能差别是有的。:PHP内置函数的性能优劣。PHP内置函数之间依然存在快慢差别;少用PHP魔术方法;合理使用内存。 还有数据库的一些优化,索引啊,主键啊,合理运用,字段长度 和类型使用方法 
29
2020
03

观察者模式是如何实现的?工厂模式是如何实现的?适配器模式是如何实现的?……

单例模式:  单例模式是一种常用的软件设计模式。  在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。  应用场景:如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 工厂模式:  工厂模式主要是为创建对象提供了接口。  应用场景如下:  a、 在编码时不能预见需要创建哪种类的实例。  b、 系
29
2020
03

你了解设计模式吗?说下你最常用的设计模式

单例模式: 单例模式是一种常用的软件设计模式。 在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 应用场景:如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。工厂模式: 工厂模式主要是为创建对象提供了接口。 应用场景如下: a、 在编码时不能预见需要创建哪种类的实例。 b、 系统不应依赖于产品类实例如何
29
2020
03

PHP如何实现静态化

有一种方式是改写訪问地址,能够通过URL的PATHINFO模式来改动它。让它看上去更像一个静态页面。从而有更大的几率被搜索引擎抓取和收录,仅是对搜索引擎比較友好,伪静态化 第二种就是站点能够在用户訪问站点之前就通过一定的程序来进行静态化。生成静态页面。当用户去訪问该页面的时候。因为訪问的是静态页面,因此,訪问速度会比訪问动态页面的速度快了非常多倍,前台的表现是页面载入速度变快,在后台的表现是降低了数据库的连接。降低了数据库的压力,唯一的缺点就是相对占的硬盘多一些,硬盘相对便宜的多。
29
2020
03

什么是composer?以及composer是干什么用的?工作原理

 Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.  composer是一个多功能的工具,下载管理第三方包是其主要功能了,composer这个工具就是用php这个语言写的。 其主要的下载第三方包的功能  composer install命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下 composer update为了
29
2020
03

AJAX XML 实例

AJAX 可用来与 XML 文件进行交互式通信。AJAX XML 实例下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息:实例获取我收藏的 CD 尝试一下 »实例解析 - loadXMLDoc() 函数当用户点击上面的"获取我收藏的 CD"这个按钮,就会执行 loadXMLDoc() 函数。loadXMLDoc() 函数创建 XMLHttpRequest 对象,添加当服务器响应就绪时执行的函数,并将请求发送到服务器。当服务器响应就绪时,会构建一个
29
2020
03

AJAX实例

AJAX 实例一个简单的AJAX实例创建一个简单的XMLHttpRequest,从一个TXT文件中返回数据。用AJAX加载 XML 文件创建一个简单的XMLHttpRequest,从一个XML文件中返回数据。用AJAX进行一次 HEAD 请求检索资源(文件)的头信息。用AJAX进行一次指定的 HEAD 请求检索资源(文件)的指定头信息。用AJAX从ASP 文件返回数据当用户在文本框内键入字符时网页如何与Web服务器进行通信用AJAX从数据库返回数据用AJAX网页如何获取数据库中的信息用AJAX从
29
2020
03

SOAP总结

您已经学习了 SOAP,下一步呢?此教程已向您讲解了如何透过 HTTP 使用 SOAP 在应用程序之间交换信息。您已经学习了有关 SOAP 消息中不同元素和属性的知识。您也学习了如何把 SOAP 作为一种协议来使用以访问 web service。您已经学习了 SOAP,下一步呢?下一步应该学习 WSDL 和 Web Services。WSDLWSDL 是基于 XML 的语言,用于描述 Web services 以及如何访问它们。WSDL 可描述某个 web service,连同用于此 web s
29
2020
03

SOAP实例

一个 SOAP 实例在下面的例子中,一个 GetStockPrice 请求被发送到了服务器。此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数。此功能的命名空间被定义在此地址中: "http://www.example.org/stock"SOAP 请求:POST /InStock HTTP/1.1Host: www.example.orgContent-Type: application/soap+xml; charset=utf-8Conte
29
2020
03

SOAP HTTP协议

HTTP 协议HTTP 在 TCP/IP 之上进行通信。HTTP 客户机使用 TCP 连接到 HTTP 服务器。在建立连接之后,客户机可向服务器发送 HTTP 请求消息:POST /item HTTP/1.1Host: 189.123.255.239Content-Type: text/plainContent-Length: 200随后服务器会处理此请求,然后向客户机发送一个 HTTP 响应。此响应包含了可指示请求状态的状态代码:200 OKContent-Type: text/plainCo
29
2020
03

SOAP Fault元素

SOAP Fault 元素用于存留 SOAP 消息的错误和状态信息。SOAP Fault 元素可选的 SOAP Fault 元素用于指示错误消息。如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能出现一次。SOAP 的 Fault 元素拥有下列子元素:子元素 描述<faultcode> 供识别故障的代码<faultstring> 可供人阅读的有关故障的说明<faultactor> 有关是谁引发故障
29
2020
03

SOAP Body元素


强制使用的 SOAP Body 元素包含实际的 SOAP 消息。

29
2020
03

SOAP Header元素


可选的 SOAP Header 元素包含头部信息。


29
2020
03

SOAP Envelope元素

强制使用的 SOAP 的 Envelope 元素是 SOAP 消息的根元素。SOAP Envelope 元素必需的 SOAP 的 Envelope 元素是 SOAP 消息的根元素。它可把 XML 文档定义为 SOAP 消息。实例<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle=&
29
2020
03

SOAP语法

SOAP 构建模块一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息可选的 Header 元素,包含头部信息必需的 Body 元素,包含所有的调用和响应信息可选的 Fault 元素,提供有关在处理此消息所发生错误的信息所有以上的元素均被声明于针对 SOAP 封装的默认命名空间中:http://www.w3.org/2001/12/soap-envelope以及针对 SOAP 编码和数据类型的默认命名空间:
29
2020
03

SOAP简介


SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。


或者更简单地说:SOAP 是用于访问网络服务的协议。


29
2020
03

CentOS 安装dell工具


dell提供了工具,可以修改硬件的参数,远程连接过去直接修改。

29
2020
03

CentOS vim使用


安装vim工具:


[root@bogon ~]# yum install -y vim-enhanced


 

卸载vim工具:


[root@bogon ~]# yum remove -y vim*


29
2020
03

linux-CentOS搭建Git服务器

很多公司管理的代码一般都不是直接开源,所以不方便使用公有的git服务,这时候就需要搭建自己的git的服务器来同步代码。这里只是自己搭建的简单的git服务,比较完整的可以使用gitlab之类的比较完整的系统。

28
2020
03

设计模式中的单件模式,在Delphi中可以用什么方式创建。

答:  可以有两种方法:  1)可以在类中用声明一个自身类型的全局对象用于存储单件对象的引用,构造函数create通过检查全局变量的引用来避免创建多余对象。  2)可以用delphi自身的对象构造机制(参考TObject)实现,即覆盖TObject的NewInstance,FreeInstance,和实现RefCount
28
2020
03

用pascal 写一个双向链表。

答:    用record作为节点类型    type       Node = record        Data : string;        Pre   : ^Node;        Next : ^Node;       end;&n
28
2020
03

如何模块内部获得自身路径? Exe程序: DLL程序:

答:    exe:      application.Exename      ExpandFileName    Dll:1)方法一:Function GetDllPath(sDllName:string):string;var  ModuleFileName:array[0..255] of char; begin  //{取得dll的实际位置}  G
28
2020
03

现有Integer 变量 A、B,在不声明其它变量的情况下,将它们的值交换。 如,A := 1; B := 2; 交换之后 A = 2; B = 1。

答:    1)利用加法     var a, b : integer;    begin        a = a + b;        b = a - b;        a = a - b;    end;    2)利用异或    var
28
2020
03

将一周七天声明成枚举类型。

答:     type dayofweek = (sun,mon,tues,wens,thurs,fri,sat);
28
2020
03

简要描述Delphi代码单元中,以下关键字的作用。

答:      interface:接口声明部分,接口部分声明常量、类型、变量、过程和函数。   implementation:定义接口的实现或者类过程和函数的实现部分,实现部分定义接口部分声明的过程和函数。   initialization:定义单元初始化部分,初始化部分所包含的命令,将在程序启动时按它们出现的顺序开始执行。   finalization  :定义单元结束化部分,结束化
28
2020
03

Delphi 内置类型 string 和 WideString 的区别。

答:      string 即 UnicodeString,8 位(ANSI )字符      WideString 类型是动态分配的、由 16 位 Unicode 字符所构成的字符串
27
2020
03

浏览器输入地址到返回结果发生了什么

1.DNS解析2.TCP连接3.发送HTTP请求4.服务器处理请求并返回HTTP报文5.浏览器解析渲染页面6.连接结束
27
2020
03

HTTP请求的完整过程?

Http请求的过程,与电脑上访问一个网页大概相同建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。Web浏览器向Web服务器发送请求命令一旦建立了TCP连接,We
27
2020
03

Socket建立网络连接的步骤

建立Socket连接至少需要一对套接字,其中一个运行与客户端--ClientSocket,一个运行于服务端--ServiceSocket1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。注意:客户端的套接字必须描述他要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后就像服务器端套接字提出连接请求。3、连接确认:当服务器端套接字监听到客户端
27
2020
03

HTTP 和 HTTPS 的不同之处

1.HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头2.HTTP 是不安全的,而 HTTPS 是安全的3.HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 4434.在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层5.HTTP 无需加密,而 HTTPS 对传输的数据进行加密6.HTTP 无需证书,而 HTTPS 需要认证证书
27
2020
03

为什么需要 HTTPS ?

超文本传输协议 (HTTP) 是一个用来通过互联网传输和接收信息的协议。HTTP 使用请求/响应的过程,因此信息可在服务器间快速、轻松而且精确的进行传输。当你访问 Web 页面的时候你就是在使用 HTTP 协议,但 HTTP 是不安全的,可以轻松对窃听你跟 Web 服务器之间的数据传输。在很多情况下,客户和服务器之间传输的是敏感歇息,需要防止未经授权的访问。为了满足这个要求,网景公司(Netscape)推出了HTTPS,也就是基于安全套接字层的 HTTP 协议。
27
2020
03

http get与post方法在项目中如何选择,有何区别

GET一般用于获取/查询资源信息,而POST一般用于更新资源信息1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。(1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。注意:这里安全的含义仅仅是指是非修改信息。(2).幂等的意味着对同一URL的多个请求应该返回同样的结果。2.根据HTTP规范,POST表示可能修改变服务器上的资源的请求。3 get
27
2020
03

http协议有几种版本,它们有什么区别

HTTP/0.9 :只接受GET一种请求方法,没有在通信中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息,已过时。HTTP/1.0 :第一个在通信中指定的版本号,至今被广泛采用,特别是在代理服务器中。HTTP/1.1 :当前版本号,持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。HTTP/2.0:一个HTTP/2.0连接通过一个TCP连接(上面运行的应用程序级协议[TCP] )。
27
2020
03

Http位于TCP/IP模型中的第几层?为什么说Http是可靠的数据传输协议?

tcp/ip的五层模型: 从下到上:物理层->数据链路层->网络层->传输层->应用层 其中tcp/ip位于模型中的网络层,处于同一层的还有ICMP(网络控制信息协议)。http位于模型中的应用层 由于tcp/ip是面向连接的可靠协议,而http是在传输层基于tcp/ip协议的,所以说http是可靠的数据传输协议。
27
2020
03

如何设计在 UDP 上层保证 UDP 的可靠性传输

1.简单来讲,要使用UDP来构建可靠的面向连接的数据传输,就要实现类似于TCP协议的超时重传,有序接受,应答确认,滑动窗口流量控制等机制,等于说要在传输层的上一层(或者直接在应用层)实现TCP协议的可靠数据传输机制。2.比如使用UDP数据包+序列号,UDP数据包+时间戳等方法,在服务器端进行应答确认机制,这样就会保证不可靠的UDP协议进行可靠的数据传输。3.基于udp的可靠传输协议有:RUDP、RTP、UDT
27
2020
03

web前端三大主流框架

讲到前端的框架,大家想必都能脱口而出:Angular、React、Vue,那么这几个框架的优缺点,以及在项目当中如何抉择框架的使用等等,本篇就将介绍这三大框架的使用感受双向绑定开篇就用这三大框架的双向绑定的实现作为一个 demo 引入,通过这三大框架的双向绑定能够简单的了解三大框架在编码上的一些区别以及其的简易程度,从下面的代码简洁程度来讲,vue.js 给我们带来的体验还是不错的Angular<!DOCTYPE html><html lang="en"&g
27
2020
03

23种设计模式应用场景

设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有:     一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 ;     应用场景:一个无状态的类使用单例模式节省内存资源。     二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。        应用
26
2020
03

jsp静态包含和动态包含的区别

   1、<%@include file="xxx.jsp"%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而<jsp:include page="xxx.jsp">是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期         2、使用静态包含只会产生一个class文件,而使用动
26
2020
03

Java 中,throw 和 throws 有什么区别

 throw 用于抛出 java.lang.Throwable 类的一个实例化对象,意思是说你可以通过关键字 throw 抛出一个Exception,如: throw new IllegalArgumentException(“XXXXXXXXX″)        而throws 的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。Java 中,任何未处理的受检查异常强制在 throws 子句中声明。
26
2020
03

heap和stack的区别

 java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。        堆是与栈作用不同的内存,一般用于存放不在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。
26
2020
03

字节流与字符流区别

要把一段二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一段二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,这个抽象描述方式起名为IO流,对应的抽象类为OutputStream和InputStream,不同的实现类就代表不同的输入和输出设备,它们都是针对字节进行操作的。       计算机中的一切最终都是二进制的字节形式存在。对于经常用到的中文字符,首先要得到其对应的字节,然后将字节写入到输出流。
26
2020
03

a.hashCode() 有什么用?与 a.equals(b) 有什么关系?

 hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它与 equals() 方法关系特别紧密。根据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code。
26
2020
03

我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象

是的,我们可以做强制转换,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果强制转化,int 类型的高 24 位将会被丢弃,byte 类型的范围是从 -128 到 127。
26
2020
03

Java 中堆和栈有什么区别?

  JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。        栈:在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
26
2020
03

error和exception区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
26
2020
03

运行时异常与一般异常有何不同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
26
2020
03

final, finally, finalize的不同

 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。        finally是异常处理语句结构的一部分,表示总是执行。        finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。但是JVM不保证此方法总被调用
26
2020
03

String和StringBuffer的不同

 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
26
2020
03

String s = new String("xyz");创建了几个StringObject?是否可以继承String类?

 两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,那么这里就不会创建”xyz”了,直接从缓冲区拿,这时创建了一个StringObject;但如果以前没有用过"xyz",那么此时就会创建一个对象并放入缓冲区,这种情况它创建两个对象。至于String类是否继承
26
2020
03

List和 Map区别?

 一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。
26
2020
03

short s1= 1; s1 = (s1+1是int类型,而等号左边的是short类型,所以需要强转)1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?(没有错)

   对于short s1= 1; s1 = s1 + 1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。        对于short s1= 1; s1 += 1;由于 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
24
2020
03

简要阐述struts2的工作流程

1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被FilterDispatcher接收。3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。6、返回HTTP响应到客户端浏览器。
24
2020
03

说说Hibernate的缓存机制。

1. 一级缓存:内部缓存存在Hibernate中,属于应用事物级缓存。2. 二级缓存:应用级缓存、 分布式缓存。使用场景:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据3.引入第三方缓存(如ehcache等)。
24
2020
03

Hibernate工作原理及为什么要使用Hibernate?

工作原理:     1.读取并解析配置文件     2.读取并解析映射信息,创建SessionFactory    3.打开Session     4.创建事务Transation     5.持久化操作    6.提交事务     7.关闭Session     8.关闭Ses
24
2020
03

String字符串比较问题代码

public class TestStringAddress {  public static void main(String[] args) {  //1常量池  String a = "abc";  String b = new String("def");  String c = "abc";  String d = b.intern();  String e
24
2020
03

Java常用命令汇总详解


这篇文章就主要向大家展示了Java编程中常用的命令,下面看下具体内容。

24
2020
03

spring框架的IOC和DI

1). IOC也叫控制反转,将对象间的依赖关系交给Spring容器,使用配置文件来创建所依赖的对象,由主动创建对象改为了被动方式,实现解耦合。可以通过注解@Autowired和@Resource来注入对象,被注入的对象必须被下边的四个注解之一标注:@Controller@Service@Repository@Component2). 在Spring配置文件中配置<context:annotation-config/>元素开启注解。DI(依赖注入),IOC的另一种表述方式:即应用程序在
24
2020
03

轻量级Spring的优点有哪些呢?

Spring的依赖注入将对象之间的依赖关系交给了框架来处理,减小了各个组件之间的耦合性;AOP面向切面编程,可以将通用的任务抽取出来,复用性更高;Spring对于其余主流框架都提供了很好的支持,代码的侵入性很低。
24
2020
03

spring的核心模块:七个核心模块

Spring的七个核心模块,供大家参考,具体内容如下1、Spring core:核心容器核心容器提供spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。BeanFactory使用依赖注入的方式提供给组件依赖。主要实现控制反转IoC和依赖注入DI、Bean配置以及加载。2、S
24
2020
03

python Shapely使用

这篇文章主要介绍了python Shapely使用指南详解,需要的朋友可以参考下Shapely是一个Python库,用于操作和分析笛卡尔坐标系中的几何对象。引入包from shapely.geometry import Point from shapely.geometry import LineString共有的变量和方法object.area  Returns the area (float) of the object.object.bounds  返回对象的(minx,miny
24
2020
03

linux iptables

防火墙的作用众所周知,相较于企业内网,外部的公网环境更加恶劣,罪恶丛生。在公网与企业内网之间充当保护屏障的防火墙。虽然有软件或硬件之分,但主要功能都是依据策略对穿越防火墙自身的流量进行过滤。防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在企业内网和外部公网之间流动了。我们要知道,iptables与firewalld都不是真正的防火墙,它
24
2020
03

PHP JSON

本章节将介绍怎样使用 PHP 语言来编码和解码 JSON 对象。 环境配置: 在 php5.2.0 及以上版本已经内置 JSON 扩展。 JSON函数: 函数
23
2020
03

Bootstrap CSS编码规范

语法用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法。为选择器分组时,将单独的选择器单独放在一行。为了代码的易读性,在每个声明块的左花括号前添加一个空格。声明块的右花括号应当单独成行。每条声明语句的 : 后应该插入一个空格。为了获得更准确的错误报告,每条声明都应该独占一行。所有声明语句都应当以分号结尾。最后一条声明语句后面的分号是可选的,但是,如果省略这个分号,你的代码可能更易出错。对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如,box-shad
23
2020
03

Affix 插件

Affix插件(affix.js)是一个很有用的插件,它可以让你的导航始终都固定在某个位置。一开始的时候,导航出现在页面的某个位置,当页面滚动一定距离时,无论页面如何滚动,它都固定在一个位置,就像被帖在页面上一样。

23
2020
03

Font Awesome 基本图标

Font Awesome图标跟Glyphicon图标的用法完全相同,所有图标都需要一个基类 .fa 和对应每个图标的 .fa-* 类。只需创建一个行内元素,并为它应用图标类,即可使用Font Awesome图标。如:

23
2020
03

Font Awesome 图标的尺寸

通过应用.fa-lg、.fa-2x、.fa-3x、.fa-4x、.fa-5x类,让图标变得更大。按先后顺序,这些类所对应的图标大小按 33% 依次递增。如:

23
2020
03

Bootstrap3 固定宽度的图标

使用.fa-fw类,可以将图标设置为一个固定宽度。主要用于不同宽度图标无法对齐的情况,尤其在列表或导航时起到重要作用。如:

23
2020
03

Bootstrap3 列表图标

为 <ul> 和 <li> 元素分别应用 .fa-ul 和 .fa-li 类,可以轻松使用自定义图标替换无序列表的默认图标。如:

23
2020
03

Bootstrap3 带边框的图标

使用.fa-border类,可以类轻易构造出带有圆角边框的图标。还可以添加.pull-right或.pull-left类,让图标向右或向左浮动,所有图标都支持这两个类。如:<div><i class="fa fa-quote-left fa-3x fa-border pull-left"></i><p>歪脖网(waibo.wang),Web技术交流平台,分享Web知识,交流Web经验。</p><p>歪脖网
23
2020
03

Bootstrap3 旋转或翻转图标

Font Awesome提供了一组样式类,可以对图标进行固定角度的旋转或翻转。这些类分别是 .fa-rotate-90(顺时针旋转90度)、.fa-rotate-180(顺时针旋转180度)、.fa-rotate-270(顺时针旋转270度)、.fa-flip-horizontal(水平翻转)、.fa-flip-horizontal(垂直翻转)。如:

23
2020
03

Bootstrap3 带动画的图标

Font Awesome不仅支持固定角度的旋转,还提供了带动画的旋转图标。可以使用.fa-spin类让任意图标动态持续旋转,还可以使用.fa-pulse类让图标以 8 步为周期进行旋转,它们尤其适合表示刷新、加载等功能的图标,如.fa-spinner、.fa-refresh和.fa-cog等:

23
2020
03

Bootstrap3 堆叠的图标

Font Awesome还支持将多个图标叠加在一起组成一个复合图标。如果想要将多个图标堆叠起来,需要给容器元素添加.fa-stack类,为图标元素使用.fa-stack-1x作为正常比例的图标,使用.fa-stack-2x作为大一些的图标。还可以为图标元素使用.fa-inverse类让图标颜色反色,为容器元素添加 .fa-lg、或.fa-2x、或.fa-3x、或.fa-4x、或.fa-5x类来控制整体大小。如:

22
2020
03

oc 系统对象的 copy 与 mutableCopy 方法

一、非集合类对象的copy与mutableCopy  在非集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;  对可变对象进行copy和mutableCopy都是内容复制。用代码简单表示如下:    NSString *str = @"hello word!";    NSString *strCopy = [str copy] // 指针复制,strCopy与str的地址
22
2020
03

Category(类别)、 Extension(扩展)和继承的区别

区别:1. 分类有名字,类扩展没有分类名字,是一种特殊的分类。2. 分类只能扩展方法(属性仅仅是声明,并没真正实现),类扩展可以扩展属性、成员变量和方法。3. 继承可以增加,修改或者删除方法,并且可以增加属性。
22
2020
03

switf 2.0增加了一个新的关键字来实现递归枚举。enum List{ case Node(T,List)}什么关键字可以实现递归枚举?

indirect关键值可以允许递归枚举,代码如下:   enum List{ indirect case Cons{T,List)}
22
2020
03

怎么定义数组

var  arry:[String] = []  或  var arr:Array<String> = Array<String>()
22
2020
03

浅拷贝和深拷贝的区别?

浅拷贝:只复制指向对象的指针,而不复制引用对象本身。深拷贝:复制引用对象本身。内存中存在了两份独立对象本身,当修改A时,A_copy不变。
22
2020
03

runloop流程

22
2020
03

runtime是怎么实现的 ,那些地方用到了

obj_msgsend     黑魔法  tableview没数据时  添加一个view 字典转模型   模型转字典 class_propertyList   property_getName 自定义KVO   isa指针  NSKVONotifying_B
22
2020
03

frame 和 bounds 有什么不同?

frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父view的坐标系统)bounds指的是:该view在本身坐标系统中的位置和大小。(参照点是屏幕坐标系统)
22
2020
03

MVVM

给MVC解耦 解重  双向绑定
22
2020
03

Alamofire怎么实现的

使用线程池  文件图片上传代码基于TCP/IP  网络提交基于URLSession.dataTask  URLRequest
22
2020
03

map、filter、reduce 的作用

map : 映射 ,将一个元素根据某个函数 映射 成另一个元素(可以是同类型,也可以是不同类型)filter : 过滤 , 将一个元素传入闭包中,如果返回的是false , 就过滤掉reduce :先映射后融合 , 将数组中的所有元素映射融合在一起。
22
2020
03

Array、Set、Dictionary 三者的区别

Set:是用来存储相同类型、没有确定顺序、且不重复的值的集Array:是有序数据的集Dictionary:是无序的键值对的集
22
2020
03

Swift代码复用的方式有哪些?

1.继承2.在swift 文件里直接写方法,相当于一个全局函数3.extension 给类直接扩展方法
22
2020
03

swift把struct作为数据模型

3.1优点安全性: 因为 Struct 是用值类型传递的,它们没有引用计数。内存: 由于他们没有引用数,他们不会因为循环引用导致内存泄漏。速度: 值类型通常来说是以栈的形式分配的,而不是用堆。因此他们比 Class 要快很多!拷贝:Objective-C 里拷贝一个对象,你必须选用正确的拷贝类型(深拷贝、浅拷贝),而值类型的拷贝则非常轻松!线程安全: 值类型是自动线程安全的。无论你从哪个线程去访问你的 Struct ,都非常简单。3.2 缺点Objective-C与swift混合开发:OC调用的
22
2020
03

struct与class 的区别

struct是值类型,class是引用类型。值类型的变量直接包含它们的数据,对于值类型都有它们自己的数据副本,因此对一个变量操作不可能影响另一个变量。引用类型的变量存储对他们的数据引用,因此后者称为对象,因此对一个变量操作可能影响另一个变量所引用的对象。二者的本质区别:struct是深拷贝,拷贝的是内容;class是浅拷贝,拷贝的是指针。property的初始化不同:class 在初始化时不能直接把 property 放在 默认的constructor 的参数里,而是需要自己创建一个带参数的co
22
2020
03

open与public的区别

public:可以别任何人访问,但是不可以被其他module复写和继承。open:可以被任何人访问,可以被继承和复写。
22
2020
03

MyBatis在核心处理类分别叫什么?

MyBatis里面的核心处理类叫做SqlSession
22
2020
03

spring管理事务有几种方式

有两种方式:    1、编程式事务,在代码中硬编码。(不推荐使用)    2、声明式事务,在配置文件中配置(推荐使用)声明式事务又分为两种:a、基于XML的声明式事务b、基于注解的声明式事务
22
2020
03

SSM优缺点、使用场景?

1. Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。2. Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一
22
2020
03

SpringMVC的工作流程?

1. 用户发送请求至前端控制器DispatcherServlet2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器5. 执行处理器(Controller,也叫后端控制器)。6. Controller执行完成返回ModelA
22
2020
03

什么是MyBatis 框架?

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
22
2020
03

spring mvc常用4个基本注解

@Component、@Repository 、@Service、@Controller@Controller 控制层 ,通常我们所说的action层@Service 业务逻辑层,通常我们所说的service层或者manger层@Repository 持久层,通常我们所说的Dao层@Component 组件,书面意思就是我们不知道在哪一层时使用虽然对于spring来说,这4个注解的效果都是一样的,当spring扫描到这些注解时,都会当做需要注入的bean加载到上下文中但是在项目中,我们应该严格按
22
2020
03

IOC的优点是什么?

IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。
22
2020
03

解释AOP

面向切面的编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。
22
2020
03

有哪些不同类型的IOC(依赖注入)方式?

构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
22
2020
03

什么是Spring的依赖注入?

依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。
22
2020
03

什么是Spring IOC 容器?

Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。
22
2020
03

使用Spring框架的好处是什么?

轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring 包含并管理应用中对象的生命周期和配置。MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。异常处理:
22
2020
03

Mybatis执行批量插入,能返回数据库主键列表吗?

答:能,JDBC都能,Mybatis当然也能。
22
2020
03

有哪些不同类型的IOC(依赖注入)?

构造器依赖注入:构造器依赖注入在容器触发构造器的时候完成,该构造器有一系列的参数,每个参数代表注入的对象。Setter方法依赖注入:首先容器会触发一个无参构造函数或无参静态工厂方法实例化对象,之后容器调用bean中的setter方法完成Setter方法依赖注入。
22
2020
03

Spring IoC容器是什么?

Spring IOC负责创建对象、管理对象(通过依赖注入)、整合对象、配置对象以及管理这些对象的生命周期。
22
2020
03

什么是Spring?

Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。Spring框架的目标是使得Java EE应用程序的开发更加简捷,通过使用POJO为基础的编程模型促进良好的编程风格。
22
2020
03

谈谈你mvc的理解?

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。MVC中的模型、视图、控制器它们分别担负着不同的任务。视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型
21
2020
03

以下为Windows NT下的32位C++程序,请计算sizeof的值

void Func ( char str[100] ) {  sizeof( str ) = ? } void *p = malloc( 100 ); sizeof ( p ) = ?sizeof( str ) = 4   sizeof ( p ) = 4  
21
2020
03

分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句

BOOL型变量:if(!var)   int型变量: if(var==0)   float型变量:   const float EPSINON = 0.00001;   if ((x >= - EPSINON) && (x <= EPSINON)   指针变量:if(var==NULL)   
21
2020
03

指出代码错误

void Test( void ) {  char *str = (char *) malloc( 100 );  strcpy( str, "hello" );  free( str );   ... //省略的其它语句 }错误有二:使用malloc分配内
21
2020
03

写出完整版的strcpy函数

char * strcpy( char *strDest, const char *strSrc )  {  assert( (strDest != NULL) && (strSrc != NULL) );  char *address = strDest;
21
2020
03

怎么判断两个链表是否有交点?

答:假设一个链表长为n,另一个链表长为m,让长的链表的指针先走|n-m|个长度,再让两个链表的指针一起走,最后两个指针相遇的地方就是交点了(画图!画图!)
21
2020
03

单向链表怎么取到倒数第k个元素?

答:设置两个指针p1p2,让p2 先走k步,然后再让p1p2同时走,最后若p2 指向的节点的下一个节点是NULL ,那么输出p1即可。(画个图就明白了)
21
2020
03

再扩展: 这个链表的长度是多少?

答:上一个问题我们自然可以得到起点到成环点的距离,那么再回到第一个问题的情况,p1p2相遇了,那么再让他们继续走下去,再次相遇所经过的操作数就是这个环的长度了,这两者相加就得到了整个链表的长度。
21
2020
03

扩展:并指出成环的点在哪里?

答:这个lz 也是在网上看了人家的博客才知道的,当p1p2 指向同一个节点的时候,让p1 指向第一个节点,p2 不动,然后让两个节点以同样的速度指向下一个节点,最后p1p2相遇的地方就是成环的点。
21
2020
03

单向链表如何判断是否成环?

答:两个指针p1,p2 , 其中p1 每次指向下一个节点,p2每次指向下两个节点(p2=p2->next->next),这样若链表有环,那么p1p2必定在某一点指向同一个节点。
21
2020
03

100大小的数组放了1-99 100个数,只有一个数重复了,找出重复的那个数。

答:解法很简单,把这100个数加起来,然后逐一剪掉1-99 剩下的那个数就是重复的数。
21
2020
03

老鼠喝药的问题:

就是告诉你,有n瓶药,里面有一瓶是毒药,老鼠喝了就会死,让你用最少的老鼠测出来,到底哪一瓶是毒药。答:利用二进制的思想,将所有的药水按照1-n的编号,对应的老鼠喝下二进制上对应位为1 的药水,观察老鼠死的状态,得到答案,比如说 3瓶药水,1号药水 01 2号药水 10 三号药水 11,那么最少需要2^2=4>3 ,两只老鼠就可以了,一号老鼠喝下2和3 号药水,二号老鼠喝下 1 和 3 号药水,要是一号老鼠挂掉了,二号老鼠没挂,证明毒药水是 10=2 号药水,以此类推。
21
2020
03

在什么时候需要使用“常引用”? 

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符 &引用名=目标变量名;例1int a ;const int &ra=a;ra=1; //错误a=1; //正确例2string foo( );void bar(string & s);那么下面的表达式将是非法的:bar(foo( ));bar("hello world");原因在于foo( )和"hello wor
21
2020
03

全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?

【参考答案】生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁;局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在;使用方式不同:通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用;分配在栈区。 操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面 。
21
2020
03

基类的析构函数不是虚函数,会带来什么问题?

【参考答案】派生类的析构函数用不上,会造成资源的泄漏。
21
2020
03

内存的分配方式有几种?

【参考答案】一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最
21
2020
03

复杂声明 void * ( * (*fp1)(int))[10]; float (*(* fp2)(int,int,int))(int); int (* ( * fp3)())[10]();

【标准答案】                                                           1.void * ( * (*fp1)(int))[10]; &nbs
21
2020
03

const 与 #define 的比较 ,const有什么优点?

【参考答案】(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应) 。(2)  有些集成化的调试工具可以对 const 常量进行调试,但是不能对宏常量进行调试。
21
2020
03

引用与指针有什么区别?

【参考答案】                         1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。
21
2020
03

int id[sizeof(unsigned long)];这个对吗?为什么?

 答案:正确 这个 sizeof是编译时运算符,编译时就确定了  ,可以看成和机器有关的常量。
21
2020
03

将程序跳转到指定内存地址

要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234;那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?  *((void (*)( ))0x100000 ) ( );  首先要将0x100000强制转换成函数指针,即:  (void (*)())0x100000  然后再调用它:  *((void (*)())0x100000)();  用typedef可以看得更直观些:  typedef void(*)() voidFun
21
2020
03

栈内存与文字常量区

    char str1[] = "abc";  char str2[] = "abc";  const char str3[] = "abc";  const char str4[] = "abc";  const char *str5 = "abc";  const char *str6 = "abc";  char *str7 = "abc
21
2020
03

int (*s[10])(int) 表示的是什么?

int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。
21
2020
03

简述数组与指针的区别?

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。(1)修改内容上的差别char a[] = “hello”;a[0] = ‘X’;char *p = “world”; // 注意p 指向常量字符串p[0] = ‘X’; // 编译器不能发现该错误,运行时错误(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,
21
2020
03

请说出const与#define 相比,有何优点?

答案:const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。
21
2020
03

分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

答案:BOOL : if ( !a ) or if(a)int : if ( a == 0)float : const EXPRESSION EXP = 0.000001if ( a < EXP && a >-EXP)pointer : if ( a != NULL) or if(a == NULL)19.请说出const与#define 相比,有何优点?
21
2020
03

描述内存分配方式以及它们的区别?

1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。
21
2020
03

main 函数执行以前,还会执行什么代码?

答案:全局对象的构造函数会在main 函数之前执行。
21
2020
03

C++是不是类型安全的?

答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。
21
2020
03

有哪几种情况只能用intialization list 而不能用assignment?

答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。
21
2020
03

重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

常考的题目。从定义上来说:重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。重写:是指子类重新定义父类虚函数的方法。从实现原理上来说:重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称
21
2020
03

试写出程序结果:

int  a=4;int  &f(int  x){    a=a+x;      return  a;}int main(void){    int   t=5;     cout<<f(t)<<endl;  a = 9    f(t)=20;      
21
2020
03

结构与联合有和区别?

(1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。 (2). 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
21
2020
03

将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?

格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。(2)
21
2020
03

在什么时候需要使用“常引用”?

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符 &引用名=目标变量名;例1int a ;const int &ra=a;ra=1; //错误a=1; //正确例2string foo( );void bar(string & s);那么下面的表达式将是非法的:bar(foo( ));bar("hello world");原因在于foo( )和"hello wor
21
2020
03

将“引用”作为函数参数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。(3)
21
2020
03

什么是“引用”?申明和使用“引用”要注意哪些问题?

答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。
21
2020
03

求下面函数的返回值(微软)

int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。
21
2020
03

多态,虚函数,纯虚函数

多态:是对于不同对象接收相同消息时产生不同的动作。C++的多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现;在程序编译时多态性体现在函数和运算符的重载上;虚函数:在基类中冠以关键字 virtual 的成员函数。 它提供了一种接口界面。允许在派生类中对基类的虚函数重新定义。纯虚函数的作用:在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。作为接口而存在 纯虚函数不具备函数的功能,一般不能直接被调用。从基类继承来的纯虚函数,在派生类中仍是虚函数。如果
21
2020
03

子类析构时要调用父类的析构函数吗?

析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。
21
2020
03

C++有哪些性质(面向对象特点)

封装,继承和多态。
21
2020
03

delete与 delete []区别

delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。在More Effective C++中有更为详细的解释:“当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用operator delete来释放内存。”delete与new配套,delete []与new []配套MemTest *mTest1=new MemTest[10];MemTest *mTest2=new MemTest;Int *pInt1=new int [10];Int *pIn
21
2020
03

new、delete、malloc、free关系

delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
21
2020
03

ADO总结

ADO 概述本教程已经向您讲解了如何从网站访问数据库中的数据。您已经学习了如何在网站上显示来自数据库的数据,以及如何通过 ADO 来编辑、添加及删除这些数据。如需更多有关 ADO 的信息,请参阅我们的 ADO 实例。您已经学习了 ADO,下一步呢?下一步应该学习 SQL。SQL 是一门用于访问和操作数据库系统的标准计算机语言。SQL 语句用于检索和更新数据库中的数据。SQL 可以和这些数据库系统配合工作:MS Access, DB2, Informix, MS SQL Server, Oracl
20
2020
03

构造方法注入和设值注入有什么区别?

请注意以下明显的区别:在设值注入方法支持大部分的依赖注入,如果我们仅需要注入int、string和long型的变量,我们不要用设值的方法注入。对于基本类型,如果我们没有注入的话,可以为基本类型设置默认值。在构造方法注入不支持大部分的依赖注入,因为在调用构造方法中必须传入正确的构造参数,否则的话为报错。设值注入不会重写构造方法的值。如果我们对同一个变量同时使用了构造方法注入又使用了设置方法注入的话,那么构造方法将不能覆盖由设值方法注入的值。很明显,因为构造方法尽在对象被创建时调用。在使用设值注入时
20
2020
03

怎样用注解的方式配置Spring?

Spring在2.5版本以后开始支持用注解的方式来配置依赖注入。可以用注解的方式来替代XML方式的bean描述,可以将bean描述转移到组件类的内部,只需要在相关类上、方法上或者字段声明上使用注解即可。注解注入将会被容器在XML注入之前被处理,所以后者会覆盖掉前者对于同一个属性的处理结果。 注解装配在Spring中是默认关闭的。所以需要在Spring文件中配置一下才能使用基于注解的装配模式。如果你想要在你的应用程序中使用关于注解的方法的话,请参考如下的配置。 在 标签配置完成
20
2020
03

如何用基于Java配置的方式配置Spring?

Spring对Java配置的支持是由@Configuration注解和@Bean注解来实现的。由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由Spring的IoC容器来管理。@Bean声明所起到的作用与 元素类似。被@Configuration所注解的类则表示这个类的主要目的是作为bean定义的资源。被@Configuration声明的类可以通过在同一个类的内部调用@bean方法来设置嵌入bean的依赖关系。 最简单的@Configuration 声明类请参考下面
20
2020
03

如何用基于XML配置的方式配置Spring?

在Spring框架中,依赖和服务需要在专门的配置文件来实现,我常用的XML格式的配置文件。这些配置文件的格式通常用开头,然后一系列的bean定义和专门的应用配置选项组成。 SpringXML配置的主要目的时候是使所有的Spring组件都可以用xml文件的形式来进行配置。这意味着不会出现其他的Spring配置类型(比如声明的方式或基于Java Class的配置方式) Spring的XML配置方式是使用被Spring命名空间的所支持的一系列的XML标签来实现的。Spring有以下
20
2020
03

Spring有几种配置方式?

将Spring配置到应用开发中有以下三种方式: 1. 基于XML的配置 2. 基于注解的配置 3. 基于Java的配置 
20
2020
03

请解释下Spring框架中的IoC?

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

什么是控制反转(IOC)?什么是依赖注入?

控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的。在传统的编程方式中,业务逻辑的流程是由应用程序中的早已被设定好关联关系的对象来决定的。在使用控制反转的情况下,业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配器负责实例化,这种实现方式还可以将对象之间的关联关系的定义抽象化。而绑定的过程是通过“依赖注入”实现的。 控制反转是一种以给予应用程序中目标组件更多控制为目的设计范式,并在我们的实际工作中起到了有效的作
20
2020
03

使用Spring框架能带来哪些好处?

下面列举了一些使用Spring框架带来的主要好处: • Dependency Injection(DI) 方法使得构造器和JavaBean properties文件中的依赖关系一目了然。 • 与EJB容器相比较,IoC容器更加趋向于轻量级。这样一来IoC容器在有限的内存和CPU资源的情况下进行应用程序的开发和发布就变得十分有利。 • Spring并没有闭门造车,Spring利用了已有的技术比如ORM框架、logging框架、J2EE、Quartz和JDK Timer
20
2020
03

什么是Spring框架?Spring框架有哪些主要模块?

Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。 Spring框架至今已集成了20多个模块。这些模块主要被分为核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。
20
2020
03

什么是Spring Cloud Bus?我们需要它吗?

考虑以下情况:我们有多个应用程序使用Spring Cloud Config读取属性,而Spring Cloud Config从GIT读取这些属性。 下面的例子中多个员工生产者模块从Employee Config Module获取Eureka注册的财产。如果假设GIT中的Eureka注册属性更改为指向另一台Eureka服务器,会发生什么情况。在这种情况下,我们将不得不重新启动服务以获取更新的属性。还有另一种使用执行器端点/刷新的方式。但是我们将不得不为每个模块单独调用这个url。例如,如
20
2020
03

什么是Netflix Feign?它的优点是什么?

 Feign是受到Retrofit,JAXRS-2.0和WebSocket启发的java客户端联编程序。Feign的第一个目标是将约束分母的复杂性统一到http apis,而不考虑其稳定性。在employee-consumer的例子中,我们使用了employee-producer使用REST模板公开的REST服务。但是我们必须编写大量代码才能执行以下步骤使用功能区进行负载平衡。获取服务实例,然后获取基本URL。利用REST模板来使用服务。 前面的代码如下@Controller pub
20
2020
03

什么是Hystrix断路器?我们需要它吗?

由于某些原因,employee-consumer公开服务会引发异常。在这种情况下使用Hystrix我们定义了一个回退方法。如果在公开服务中发生异常,则回退方法返回一些默认值。如果firstPage method() 中的异常继续发生,则Hystrix电路将中断,并且员工使用者将一起跳过firtsPage方法,并直接调用回退方法。 断路器的目的是给第一页方法或第一页方法可能调用的其他方法留出时间,并导致异常恢复。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会 。
20
2020
03

什么是Hystrix?它如何实现容错?

 Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。 思考以下微服务假设如果上图中的微服务9失败了,那么使用传统方法我们将传播一个异常。但这仍然会导致整个系统崩溃。 随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达1000.这是hystrix出现的地方 我们将使用Hystrix在这
20
2020
03

负载平衡的意义什么?

在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
20
2020
03

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

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

使用Spring Cloud有什么优势?

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

什么是Spring Cloud?

Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
19
2020
03

GetString

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

GetRows

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

让用户来选择根据那一列来进行排序

ASP源代码:<html><body><table border="1" width="100%" bgcolor="#fff5ee"><tr><th align="left" bgcolor="#b0c4de"><a href="/example/adoe/demo_adoe_sort_3.asp?sort=compan
19
2020
03

根据指定的字段名称进行降序排序

ASP源代码<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&q
19
2020
03

根据指定的字段名称进行升序排序

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

让用户来选择过滤条件

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs=Server.CreateObject("ADODB.recordset&qu
19
2020
03

显示西班牙的客户

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

显示 "Companyname" 大于 E 的记录

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

显示 "Companyname" 以 A 开头的记录

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

向 HTML 表格添加颜色

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

向 HTML 表添添加标题

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
19
2020
03

在 HTML 表格中显示记录

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
18
2020
03

ADO 实例:显示记录

ASP源代码:<html><body><%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs = Server.CreateObject("ADODB.recordset&
18
2020
03

ADO实例

显示显示记录在 HTML 表格中显示记录向 HTML 表添添加标题向 HTML 表格添加颜色查询显示 "Companyname" 以 A 开头的记录显示 "Companyname" 大于 E 的记录显示西班牙的客户让用户来选择过滤条件排序根据指定的字段名称进行升序排序根据指定的字段名称进行降序排序让用户来选择根据那一列来进行排序Recordset 对象 GetRowsGetString
18
2020
03

说出jQuery中常见的几种函数以及他们的含义是什么?

  jQuery中常见的函数如下:   1)get()取得所有匹配的DOM元素集合.   2)get(index)取得其中一个匹配的元素.index表示取得第几个匹配的元素.   3)append(content)向每个匹配的元素内部追加内容.   4)after(content)在每个匹配的元素之后插入内容.   5)html()/html(var)取得或设置匹配元素的html内容.   6)find(expr)搜索所有与指定表达式匹
18
2020
03

什么是JSON,在什么情况下使用?

  JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON采用完全独立于语言的文本格式.   JSON最常见的用法之一,是从web服务器上读取JSON数据,将JSON数据转换为JavaScript对象,然后在网页中使用该数据.
18
2020
03

radio单选组的第二个元素为当前选中的值,该怎么去取

$('input[type=radio]')[1].checked=true
18
2020
03

jQuery中有哪些方法可以遍历节点?

children():获取匹配元素的子元素集合,不考虑后代元素 $(function(){$("div").children()})next()获取匹配元素后面紧邻的同级元素prev()获取匹配元素前紧邻的同级元素siblings()获取匹配元素前后的所有同辈元素
18
2020
03

如何来设置和获取HTML和文本的值?

获取HTMl:$("选择器").html()获取文本的值:$("选择器").text()        
18
2020
03

jQuery中如何来获取和设置属性

可以用attr()获取和设置元素属性removeAttr()方法来删除元素属性      
18
2020
03

jQuery中使用过哪些插入节点的方法,他们的区别是什么

在元素内部添加append:向每个匹配的元素内部追加内容         <p>我想说:</p>        $("p").append("<b>你好</b>")         <p>我想说:<b>你好</b></p>a
18
2020
03

怎么使用jQuery中的动画

影藏:hide()显示:show()淡入淡出:fadeIn()==淡入(显示) fadeOut()==淡出(消失)滑动:slideUp()==向上滑动  slideDown()==向下滑动
18
2020
03

jQuery中.get()提交和.get()提交和.post()提交的区别

1、.get()使用GET方法来进行异步提交.get()使用GET方法来进行异步提交.post()使用POST方法来进行异步提交 2、get请求方式将参数跟在url后进行传递用户可见 post请求则是作为http消息的实体内容发送给服务器,用户不可见 3、post传输数据比get大 4、get请求的数据会被浏览器缓存 不安全
18
2020
03

jQuery对象和DOM对象是怎样转换的

jQuery对象是一个包含了dom对象的数组 可以通过jQuery对象[下标]获取dom对象将dom对象放入$("")中转为jQuery对象
18
2020
03

jQuery的美元符号$有什么作用?

回答:其实美元符号$只是”jQuery”的别名,它是jQuery的选择器,如下代码:$(document).ready(function(){  });当然你也可以用jQuery来代替$,如下代码:jQuery(document).ready(function(){  });  
18
2020
03

你知道jQuery中的选择器吗,有哪些选择器

大致分为:基本选择器,层次选择器,表单选择器基本选择器:id选择器,标签选择器,类选择器等层次选择器:如:$("form input") 选择所有的form元素中的input元素 $("#main > *")选择id为main的所有子元素过滤选择器:如:$("tr:first")选择所有tr元素的第一个  $("tr:last")选择所有tr元素的最后一个表单选择器:如:$(":input&
18
2020
03

(document).ready()(document).ready()(functiion({}))方法和window.onload有什么区别?

两个方法的功能相似,但在实行时机方面是有区别的1、window.onload方法是在网页中所有的元素完全加载到浏览器后才执行2、$(document).ready() 可以在DOM载入就绪是就对其进行操纵,并调用执行绑定的函数
18
2020
03

你为什么要使用jQuery?你觉得jquery有哪些好处?

1、因为jQuery是轻量级的框架,大小不到30kb2、它有强大的选择器,出色的DOM操作的封装3、有可靠的事件处理机制(jQuery在处理事件绑定的时候相当的可靠)4、完善的ajax(它的ajax封装的非常的好,不需要考虑复杂浏览器的兼容性和XMLHttpRequest对象的创建和使用的问题。)5、出色的浏览器的兼容性6、支持链式操作,隐式迭代7、行为层和结构层的分离,还支持丰富的插件,jquery的文档也非常的丰富1‘
18
2020
03

Spring Boot 中如何实现定时任务 ?

定时任务也是一个常见的需求,Spring Boot 中对于定时任务的支持主要还是来自 Spring 框架。在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled 注解,另一个则是使用第三方框架 Quartz。使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。使用 Quartz ,则按照 Quartz 的方式,定义 Job 和 Trigger 即可。
18
2020
03

微服务中如何实现 session 共享 ?

在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享 session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的 session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis 上的 session 。这样就实现了 session 共享,Spring S
18
2020
03

如何使用 Spring Boot 实现分页和排序?

使用 Spring Boot 实现分页非常简单。使用 Spring Data-JPA 可以实现将可分页的传递给存储库方法。
18
2020
03

如何使用 Spring Boot 实现异常处理?

Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常。
18
2020
03

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

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

Spring Boot 需要独立的容器运行吗?

可以不需要,内置了 Tomcat/ Jetty 等容器。
18
2020
03

运行 Spring Boot 有哪几种方式?

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

Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?

Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过 java -jar xxx.jar 命令来运行,这种 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。Spring Boot 的 jar 无法被其他项目依赖,主要还是他和普通 jar 的结构不同。普通的 jar 包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOT-INF\classes 目录下才是我们
18
2020
03

spring-boot-starter-parent 有什么用 ?

我们都知道,新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 spring-boot-starter-parent ,spring-boot-starter-parent 主要有如下作用:定义了 Java 编译版本为 1.8 。使用 UTF-8 格式编码。继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。执行打包操作的配置。自动化的资源过滤。自动化的插件
18
2020
03

Spring Boot 中的 starter 到底是什么 ?

首先,这个 Starter 并非什么新的技术点,基本上还是基于 Spring 已有功能来实现的。首先它提供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性注入将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们只需要引入依赖就可以直接使用了。当然,开
18
2020
03

您使用了哪些 starter maven 依赖项?

使用了下面的一些依赖项spring-boot-starter-activemqspring-boot-starter-security这有助于增加更少的依赖关系,并减少版本的冲突。
18
2020
03

如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?Spring Boot项目如何热部署?

这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全
18
2020
03

前后端分离,如何维护接口文档 ?

前后端分离开发日益流行,大部分情况下,我们都是通过 Spring Boot 做前后端分离开发,前后端分离一定会有接口文档,不然会前后端会深深陷入到扯皮中。一个比较笨的方法就是使用 word 或者 md 来维护接口文档,但是效率太低,接口一变,所有人手上的文档都得变。在 Spring Boot 中,这个问题常见的解决方案是 Swagger ,使用 Swagger 我们可以快速生成一个接口文档网站,接口一旦发生变化,文档就会自动更新,所有开发工程师访问这一个在线网站就可以获取到最新的接口文档,非常方
18
2020
03

什么是 Swagger?你用 Spring Boot 实现了它吗?

Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱。Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger 正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。
18
2020
03

什么是 Apache Kafka?

Apache Kafka 是一个分布式发布 - 订阅消息系统。它是一个可扩展的,容错的发布 - 订阅消息系统,它使我们能够构建分布式应用程序。这是一个 Apache 顶级项目。Kafka 适合离线和在线消息消费。
18
2020
03

如何集成 Spring Boot 和 ActiveMQ?

对于集成 Spring Boot 和 ActiveMQ,我们使用依赖关系。 它只需要很少的配置,并且不需要样板代码。
18
2020
03

什么是 FreeMarker 模板?

FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。程序员可以处理应用程序代码,而设计人员可以处理 html 页面设计。最后使用freemarker 可以将这些结合起来,给出最终的输出页面。
18
2020
03

什么是 Spring Batch?

Spring Boot Batch 提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。
18
2020
03

什么是 Spring Data ?

Spring Data 是 Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。其主要目标是使数据库的访问变得方便快捷。Spring Data 具有如下特点:SpringData 项目支持 NoSQL 存储:1.MongoDB (文档数据库)2.Neo4j(图形数据库)3.Redis(键/值存储)4.Hbase(列族数据库)SpringData 项目所支持的关系数据存储技术:1.JDBC2.JPASpring Data Jpa 致力于减少数据访问层 (DAO) 的开
18
2020
03

什么是 WebSockets?

WebSocket 是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道。1、WebSocket 是双向的 -使用 WebSocket 客户端或服务器可以发起消息发送。2、WebSocket 是全双工的 -客户端和服务器通信是相互独立的。3、单个 TCP 连接 -初始连接使用 HTTP,然后将此连接升级到基于套接字的连接。然后这个单一连接用于所有未来的通信4、Light -与 http 相比,WebSocket 消息数据交换要轻得多。
18
2020
03

我们如何监视所有 Spring Boot 微服务?

Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应用程序的知识点以了解其状态或健康状况。想象一下涉及 50 个应用程序的微服务,管理员将不得不击中所有 50 个应用程序的执行终端。为了帮助我们处理这种情况,我们将使用位于的开源项目。 它建立在 Spring Boot Actuator 之上,它提供了一个 Web UI,使我们
18
2020
03

如何在 Spring Boot 中禁用 Actuator 端点安全性?

默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的。 我们可以使用来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。
18
2020
03

Spring Boot 中的监视器是什么?

Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态。
18
2020
03

什么是 CSRF 攻击?

CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。
18
2020
03

Spring Boot 中如何解决跨域问题 ?

跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写a
18
2020
03

比较一下 Spring Security 和 Shiro 各自的优缺点 ?

由于 Spring Boot 官方提供了大量的非常方便的开箱即用的 Starter ,包括 Spring Security 的 Starter ,使得在 Spring Boot 中使用 Spring Security 变得更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是 Spring Boot 项目,一般选择 Spring Security 。当然这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有问题的。Shiro 和 Spring Security 相比,主要有如
18
2020
03

如何实现 Spring Boot 应用程序的安全性?

为了实现 Spring Boot 的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter 并覆盖其方法。
18
2020
03

如何在自定义端口上运行 Spring Boot 应用程序?

为了在自定义端口上运行 Spring Boot 应用程序,您可以在application.properties 中指定端口。server.port = 8090
18
2020
03

什么是 Spring Profiles?

Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。因此,当应用程序在开发中运行时,只有某些 bean 可以加载,而在 PRODUCTION中,某些其他 bean 可以加载。假设我们的要求是 Swagger 文档仅适用于 QA 环境,并且禁用所有其他文档。这可以使用配置文件来完成。Spring Boot 使得使用配置文件非常简单。
18
2020
03

spring boot 核心配置文件是什么?bootstrap.properties 和 application.properties 有何区别 ?

单纯做 Spring Boot 开发,可能不太容易遇到 bootstrap.properties 配置文件,但是在结合 Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。spring boot 核心的两个配置文件:bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加载的,比 applicaton 优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring C
18
2020
03

Spring Boot 是否可以使用 XML 配置 ?

Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过 @ImportResource 注解可以引入一个 XML 配置。
18
2020
03

YAML 配置的优势在哪里 ?

YAML 现在可以算是非常流行的一种配置文件格式了,无论是前端还是后端,都可以见到 YAML 配置。那么 YAML 配置和传统的 properties 配置相比到底有哪些优势呢?1.配置有序,在一些特殊的场景下,配置有序很关键2.支持数组,数组中的元素可以是基本数据类型也可以是对象3.简洁相比 properties 配置文件,YAML 还有一个缺点,就是不支持 @PropertySource 注解导入自定义的 YAML 配置。
18
2020
03

什么是 YAML?

YAML 是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加结构化,而且更少混淆。可以看出 YAML 具有分层配置数据。
18
2020
03

你如何理解 Spring Boot 配置加载顺序?

在 Spring Boot 里面,可以使用以下几种方式来加载配置。1)properties文件;2)YAML文件;3)系统环境变量;4)命令行参数;等等……
18
2020
03

Spring Boot 自动配置原理是什么?

注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,@EnableAutoConfiguration 给容器导入META-INF/spring.factories 里定义的自动配置类。筛选有效的自动配置类。每一个自动配置类结合对应的 xxxProperties.java 读取配置文件进行自动配置功能
18
2020
03

什么是 JavaConfig?

Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:(1)面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。(2)减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java
18
2020
03

Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfigurat
18
2020
03

Spring Boot 有哪些优点?

Spring Boot 主要有如下优点:容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。开箱即用,远离繁琐的配置。提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。没有代码生成,也不需要XML配置。避免大量的 Maven 导入和各种版本冲突。
18
2020
03

什么是 Spring Boot?

Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
18
2020
03

最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗

Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement,举例:com.mybatis3.mappers.StudentDao.findStudentById,可以唯一找到namespace为com.mybati
18
2020
03

Mybatis映射文件中,如果A标签通过include引用了B标签的内容,请问,B标签能否定义在A标签的后面,还是说必须定义在A标签的前面?

虽然Mybatis解析Xml映射文件是按照顺序解析的,但是,被引用的B标签依然可以定义在任何地方,Mybatis都可以正确识别。原理是,Mybatis解析A标签,发现A标签引用了B标签,但是B标签尚未解析到,尚不存在,此时,Mybatis会将A标签标记为未解析状态,然后继续解析余下的标签,包含B标签,待所有标签解析完毕,Mybatis会重新解析那些被标记为未解析的标签,此时再解析A标签时,B标签已经存在,A标签也就可以正常解析完成了。
18
2020
03

MyBatis实现一对一,一对多有几种方式,怎么操作的?

有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在resultMap里面的association,collection节点配置一对一,一对多的类就可以完成嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过配置association,collection,但另外一个表的查询通过select节点配置。
18
2020
03

Mybatis是否可以映射Enum枚举类?

Mybatis可以映射枚举类,不单可以映射枚举类,Mybatis可以映射任何对象到表的一列上。映射方式为自定义一个TypeHandler,实现TypeHandler的setParameter()和getResult()接口方法。TypeHandler有两个作用,一是完成从javaType至jdbcType的转换,二是完成jdbcType至javaType的转换,体现为setParameter()和getResult()两个方法,分别代表设置sql问号占位符参数和获取列查询结果。
18
2020
03

Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?

Mybatis动态sql可以让我们在Xml映射文件内,以标签的形式编写动态sql,完成逻辑判断和动态拼接sql的功能,Mybatis提供了9种动态sql标签trim|where|set|foreach|if|choose|when|otherwise|bind。其执行原理为,使用OGNL从sql参数对象中计算表达式的值,根据表达式的值动态拼接sql,以此来完成动态sql的功能。
17
2020
03

简述Mybatis的插件运行原理,以及如何编写一个插件。

答:Mybatis仅可以编写针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件,Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法,当然,只会拦截那些你指定需要拦截的方法。编写插件:实现Mybatis的Interceptor接口并复写intercept()方法
17
2020
03

Mapper编写有哪几种方式?

第一种:接口实现类继承SqlSessionDaoSupport:使用此种方法需要编写mapper接口,mapper接口实现类、mapper.xml文件。(1)在sqlMapConfig.xml中配置mapper.xml的位置<mappers>    <mapper resource="mapper.xml文件的地址" />    <mapper resource="mapper.xml文件的地址&
17
2020
03

使用MyBatis的mapper接口调用时有哪些要求?

①  Mapper接口方法名和mapper.xml中定义的每个sql的id相同;②  Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同;③  Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同;④  Mapper.xml文件中的namespace即是mapper接口的类路径。
17
2020
03

什么是MyBatis的接口绑定?有哪些实现方式?

接口绑定,就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定, 我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上 @Select、@Update等注解,里面包含Sql语句来绑定;另外一种就是通过xml里面写SQL来绑定, 在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。当Sql语句比较简单时候,用注解绑定, 当SQL语句
17
2020
03

Mybatis的一级、二级缓存:

1)一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。2)二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现
17
2020
03

MyBatis实现一对多有几种方式,怎么操作的?

 有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在resultMap里面的collection节点配置一对多的类就可以完成;嵌套查询是先查一个表,根据这个表里面的 结果的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置。
17
2020
03

MyBatis实现一对一有几种方式?具体怎么操作的?

有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在resultMap里面配置association节点配置一对一的类就可以完成;嵌套查询是先查一个表,根据这个表里面的结果的 外键id,去再另外一个表里面查询数据,也是通过association配置,但另外一个表的查询通过select属性配置。
17
2020
03

一对一、一对多的关联查询 ?

<mapper namespace="com.lcb.mapping.userMapper">      <!--association  一对一关联查询 -->      <select id="getClass" parameterType="int" resultMap="ClassesResultMap">
17
2020
03

为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?

Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。
17
2020
03

Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

不同的Xml映射文件,如果配置了namespace,那么id可以重复;如果没有配置namespace,那么id不能重复;原因就是namespace+id是作为Map<String, MapperStatement>的key使用的,如果没有namespace,就剩下id,那么,id重复会导致数据互相覆盖。有了namespace,自然id就可以重复,namespace不同,namespace+id自然也就不同。但是,在以前的Mybatis版本的namespace是可选的,不过新版本的na
17
2020
03

Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

答:<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>,加上动态sql的9个标签,其中<sql>为sql片段标签,通过<include>标签引入sql片段,<selectKey>为不支持自增的主键生成策略标签。
17
2020
03

Mybatis动态sql有什么用?执行原理?有哪些动态sql?

Mybatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql,执行原理是根据表达式的值 完成逻辑判断并动态拼接sql的功能。Mybatis提供了9种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。
17
2020
03

在mapper中如何传递多个参数?

(1)第一种://DAO层的函数Public UserselectUser(String name,String area);  //对应的xml,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。<select id="selectUser"resultMap="BaseResultMap">      select *  fromuser_u
17
2020
03

如何获取自动生成的(主)键值?

insert 方法总是返回一个int值 ,这个值代表的是插入的行数。如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入的参数对象中。示例:<insert id=”insertname” usegeneratedkeys=”true” keyproperty=”id”>     insert into names (name) values (#{name})</insert>    name
17
2020
03

如何执行批量插入?

首先,创建一个简单的insert语句:    <insert id=”insertname”>         insert into names (name) values (#{value})    </insert>然后在java代码中像下面这样执行批处理插入:  list<string> names = new arraylist();  &n
17
2020
03

通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

Dao接口即Mapper接口。接口的全限名,就是映射文件中的namespace的值;接口的方法名,就是映射文件中Mapper的Statement的id值;接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MapperStatement。在Mybatis中,每一个<select>、<insert>、<update>、<delete>标签,都会被解析为一个
17
2020
03

模糊查询like语句该怎么写?

第1种:在Java代码中添加sql通配符。    string wildcardname = “%smi%”;    list<name> names = mapper.selectlike(wildcardname);     <select id=”selectlike”>     select * from foo where bar like #{value}&nb
17
2020
03

当实体类中的属性名和表中的字段名不一样 ,怎么办 ?

第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。    <select id=”selectorder” parametertype=”int” resultetype=”me.gacl.domain.order”>       select order_id id, order_no orderno ,order_price price form orders where order
17
2020
03

#{}和${}的区别是什么?

#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。
17
2020
03

MyBatis与Hibernate有哪些不同?

(1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。(2)Mybatis直接编写原生态sql,可以严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套sql映射文件,工作量大。 (3)Hibernate对象/关系映射能力强,数据库无关性好,
17
2020
03

MyBatis框架适用场合

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

MyBatis框架的缺点

(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
17
2020
03

Mybaits的优点:

(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。(4)能够与Spring很好的集成;(5)提供映射标签,支持对象与数据库的ORM
17
2020
03

什么是Mybatis?

(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。(2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。(3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通
17
2020
03

MyBatis(IBatis)的好处是什么

ibatis把sql语句从Java源程序中独立出来,放在单独的XML文件中编写,给程序的维护带来了很大便利。ibatis封装了底层JDBC API的调用细节,并能自动将结果集转换成Java Bean对象,大大简化了Java数据库编程的重复工作。 因为Ibatis需要程序员自己去编写sql语句,程序员可以结合数据库自身的特点灵活控制sql语句,因此能够实现比hibernate等全自动orm框架更高的查询效率,能够完成复杂查询。
17
2020
03

讲下MyBatis的缓存

MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/>
17
2020
03

IBatis和MyBatis在细节上的不同有哪些

在sql里面变量命名有原来的#变量# 变成了#{变量}原来的$变量$变成了${变量},原来在sql节点里面的class都换名字交type原来的queryForObject queryForList 变成了selectOne selectList原来的别名设置在映射文件里面放在了核心配置文件里
17
2020
03

IBatis和MyBatis在核心处理类分别叫什么

IBatis里面的核心处理类交SqlMapClient,MyBatis里面的核心处理类叫做SqlSession
17
2020
03

MyBatis里面的动态Sql是怎么设定的?用什么语法?

MyBatis里面的动态Sql一般是通过if节点来实现,通过OGNL语法来实现,但是如果要写的完整,必须配合where,trim节点,where节点是判断包含节点有内容就插入where,否则不插入,trim节点是用来判断如果动态语句是以and 或or开始,那么会自动把这个and或者or取掉 
17
2020
03

MyBatis实现一对多有几种方式,怎么操作的

有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置collection节点配置一对多的类就可以完成; 嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置
17
2020
03

MyBatis实现一对一有几种方式?具体怎么操作的

有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置association节点配置一对一的类就可以完成; 嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过association配置,但另外一个表的查询通过select属性配置
17
2020
03

什么情况下用注解绑定,什么情况下用xml绑定

当Sql语句比较简单时候,用注解绑定,当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多
17
2020
03

接口绑定有几种实现方式,分别是怎么实现的?

接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上@Select@Update等注解里面包含Sql语句来绑定,另外一种就是通过xml里面写SQL来绑定,在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名.
17
2020
03

什么是MyBatis的接口绑定,有什么好处

接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置.
17
2020
03

Mybatis比IBatis比较大的几个改进是什么

a.有接口绑定,包括注解绑定sql和xml绑定Sql ,b.动态sql由原来的节点配置变成OGNL表达式,c. 在一对一,一对多的时候引进了association,在一对多的时候引入了collection节点,不过都是在resultMap里面配置
16
2020
03

SpringMvc里面拦截器是怎么写的

有两种写法,一种是实现接口,另外一种是继承适配器类,然后在SpringMvc的配置文件中配置拦截器即可:<!-- 只针对部分请求拦截 --><mvc:interceptor>   <mvc:mapping path="/modelMap.do" />   <bean class="com.et.action.MyHa
16
2020
03

讲下SpringMvc的执行流程

系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到核心控制器disPatherServlet,spring容器通过映射器去寻找业务控制器,使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉及到类型转换,执行完业务类后使用ModelAndView进行视图转发,数据放在model中,用map传递数据进行页面显示。
16
2020
03

Spring MVC的优点

1、易于通view框架无缝集成,采用IOC便于测试2、典型的纯MVC构架,Struts是不完全基于MVC框架的3、与tapestry是纯正的Servlet系统,(这也是相对于Struts的优势)
16
2020
03

Spring MVC的简介:

1、可以插入的MVC架构。这中架构可以通过一:内置的spring web框架 二是:Struts Web框架 来实现。2、spring。xml中还可以通过策略接口来实现其框架高度的配置,即:可配置多种视图技术,如:jsp velocity tiles iTest POI3、Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色
16
2020
03

什么是Spring MVC ?简单介绍下你对springMVC的理解?

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
16
2020
03

SpringMVC的流程?

(1)用户发送请求至前端控制器DispatcherServlet;(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫
16
2020
03

Springmvc的优点:

(1)可以支持各种视图技术,而不仅仅局限于JSP;(2)与Spring框架集成(如IoC容器、AOP等);(3)清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。(4) 支持各种请求资源的映射策略。
16
2020
03

Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。(2)处理器映射器HandlerMapping(不需要程序员开发)作用:根据请求的URL来查找Handler(3)处理器适配器HandlerAdapter注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。(4)处
16
2020
03

springMVC和struts2的区别有哪些?

(1)springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。(2)springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。(3)Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析
16
2020
03

SpringMVC怎么样设定重定向和转发的?

(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"(2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"
16
2020
03

SpringMvc怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :(1)加入Jackson.jar(2)在配置文件中配置json的映射(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。
16
2020
03

如何解决POST请求中文乱码问题,GET的又如何处理呢?

(1)解决post请求乱码问题:在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8;<filter>    <filter-name>CharacterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</fi
16
2020
03

Spring MVC的异常处理 ?

答:可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。
16
2020
03

SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

答:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。
16
2020
03

SpringMVC常用的注解有哪些?

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
16
2020
03

SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?

答:一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller,表示是表现层,除此之外,一般不用别的注解代替。
16
2020
03

如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?

答:可以在@RequestMapping注解里面加上method=RequestMethod.GET。
16
2020
03

怎样在方法里面得到Request,或者Session?

答:直接在方法的形参中声明request,SpringMvc就自动把request对象传入。
16
2020
03

如果想在拦截的方法里面得到从前台传入的参数,怎么得到?

答:直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样。
16
2020
03

如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

答:直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。
16
2020
03

SpringMvc中函数的返回值是什么?

答:返回值可以有很多类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一起的,但一般用String比较好。
16
2020
03

SpringMvc用什么对象从后台向前台传递数据的?

通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到。
16
2020
03

怎么样把ModelMap里面的数据放入Session里面?

答:可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key。
16
2020
03

SpringMvc里面拦截器是怎么写的:

有两种写法,一种是实现HandlerInterceptor接口,另外一种是继承适配器类,接着在接口方法当中,实现处理逻辑;然后在SpringMvc的配置文件中配置拦截器即可:  <!-- 配置SpringMvc的拦截器 --> <mvc:interceptors>     <!-- 配置一个拦截器的Bean就可以了 默认是对所有请求都拦截 -->     <bean id=&
16
2020
03

注解原理:

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。
16
2020
03

SpringMVC 的工作原理

a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;b. DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping将请求映射到处理器 HandlerExcutionChain;c. DispatchServlet 根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理;d. Handler 对数据处理完成以后将返回一个 Mode
16
2020
03

SpringMVC 常用注解都有哪些?

@requestMapping 用于请求 url 映射。@RequestBody 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。@ResponseBody 注解实现将 controller 方法返回对象转化为 json 响应给客户。
16
2020
03

如何开启注解处理器和适配器?

我们在项目中一般会在 springmvc.xml 中通过开启 mvc:annotation-driven来实现注解处理器和适配器的开启。
16
2020
03

如何解决 get 和 post 乱码问题?

解决 post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器。 设置为 utf-8.解决 get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法有两个:修改 tomcat 配置文件添加编码与工程编码一致。另 外 一 种 方 法 对 参 数 进 行 重 新 编 码 String userName = NewString(Request.getParameter(“userName”).getBytes(“ISO885
16
2020
03

常见的反爬虫和应对方法?

1)通过Headers反爬虫从用户请求的Headers反爬虫是最常见的反爬虫策略。可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。2)基于用户行为反爬虫通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。有了大量代理ip后可以每请求几次更换
16
2020
03

爬虫过程中验证码怎么处理?

1)scrapy自带2)付费接口
16
2020
03

分布式爬虫主要解决什么问题?

1)ip2)带宽3)cpu4)io
16
2020
03

数据库的优化?

1)优化索引、SQL 语句、分析慢查询;2)优化硬件;采用SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等;3)采用MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率;4)选择合适的表引擎,参数上的优化;5)进行架构级别的缓存,静态化和分布式;6)采用更快的存储方式,例如 NoSQL存储经常访问的数据
16
2020
03

写爬虫是用多进程好?还是多线程好? 为什么?

IO密集型代码(文件处理、网络爬虫等),多线程能够有效提升效率(单线程下有IO操作会进行IO等待,造成不必要的时间浪费,而开启多线程能在线程A等待时,自动切换到线程B,可以不浪费CPU的资源,从而能提升程序执行效率)。在实际的数据采集过程中,既考虑网速和响应的问题,也需要考虑自身机器的硬件情况来设置多进程或多线程。
16
2020
03

什么是关联查询,有哪些?

将多个表联合起来进行查询,主要有内连接、左连接、右连接、全连接(外连接)
16
2020
03

描述下scrapy框架运行的机制?

从start_urls里获取第一批url并发送请求,请求由引擎交给调度器入请求队列,获取完毕后,调度器将请求队列里的请求交给下载器去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理:1) 如果提取出需要的数据,则交给管道文件处理;2)如果提取出url,则继续执行之前的步骤(发送url请求,并由引擎将请求交给调度器入队列...),直到请求队列里没有请求,程序结束。
16
2020
03

你常用的mysql引擎有哪些?各引擎间有什么区别?

主要 MyISAM 与 InnoDB 两个引擎,其主要区别如下:1)InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM就不可以了;2)MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用;3)InnoDB 支持外键,MyISAM 不支持;4)MyISAM 是默认引擎,InnoDB 需要指定;5)InnoDB 不支持 FULLTEXT 类型的索引;6)I
16
2020
03

你用过的爬虫框架或者模块有哪些?

Python自带:urllib,urllib2第 三 方:requests框 架:Scrapyurllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。urllib2.:urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对象时候,并以此可以来设置一个URL 的headers),urllib.urlopen只接收一个urlurllib 有urlencode,urllib2没有,因此总是urllib,urllib2常会一起使用的原因
16
2020
03

scrapy和scrapy-redis有什么区别?为什么选择redis数据库?

1) scrapy是一个Python爬虫框架,爬取效率极高,具有高度定制性,但是不支持分布式。而scrapy-redis一套基于redis数据库、运行在scrapy框架之上的组件,可以让scrapy支持分布式策略,Slaver端共享Master端redis数据库里的item队列、请求队列和请求指纹集合。2) 因为redis支持主从同步,而且数据都是缓存在内存中的,所以基于redis的分布式爬虫,对请求和数据的高频读取效率非常高。
16
2020
03

如何使用NumPy / SciPy制作3D绘图/可视化?

与2D绘图一样,3D图形超出了NumPy和SciPy的范围,但就像2D情况一样,存在与NumPy集成的包。Matplotlib在mplot3d子包中提供基本的3D绘图,而Mayavi使用功能强大的VTK引擎提供各种高质量的3D可视化功能。
16
2020
03

NumPy和SciPy有什么区别?

1)在理想的世界中,NumPy只包含数组数据类型和最基本的操作:索引,排序,重新整形,基本元素函数等。2)所有数字代码都将驻留在SciPy中。然而,NumPy的一个重要目标是兼容性,因此NumPy试图保留其前任任何一个支持的所有功能。3)因此,NumPy包含一些线性代数函数,即使它们更恰当地属于SciPy。无论如何,SciPy包含更多全功能的线性代数模块版本,以及许多其他数值算法。4)如果你使用python进行科学计算,你应该安装NumPy和SciPy。大多数新功能属于SciPy而非NumPy。
16
2020
03

解释装饰器的用法

Python中的装饰器用于修改或注入函数或类中的代码。使用装饰器,您可以包装类或函数方法调用,以便在执行原始代码之前或之后执行一段代码。装饰器可用于检查权限,修改或跟踪传递给方法的参数,将调用记录到特定方法等
16
2020
03

NumPy阵列在(嵌套)Python列表中提供了哪些优势?

1)Python的列表是高效的通用容器。它们支持(相当)有效的插入,删除,追加和连接,Python的列表推导使它们易于构造和操作。2)有一定的局限性它们不支持元素化加法和乘法等“向量化”操作,可以包含不同类型的对象这一事实意味着Python必须存储每个元素的类型信息,并且必须在操作时执行类型调度代码在每个元素上。3)NumPy不仅效率更高,也更方便你可以获得大量的矢量和矩阵运算,这有时可以避免不必要的工作。4)NumPy数组更快你可以使用NumPy,FFT,卷积,快速搜索,基本统计,线性代数,直
16
2020
03

如何用Python/ NumPy计算百分位数?

importnumpy as npa =np.array([1,2,3,4,5]p =np.percentile(a, 50) #Returns 50th percentile, e.g. medianprint(p)3
16
2020
03

如何在NumPy数组中获得N个最大值的索引?

我们可以使用下面的代码在NumPy数组中获得N个最大值的索引:importnumpy as nparr =np.array([1, 3, 2, 4, 5])print(arr.argsort()[-3:][::-1])4 3 1
16
2020
03

什么是Python中的map函数?

map函数执行作为第一个参数给出的函数,该函数作为第二个参数给出的iterable的所有元素。如果给定的函数接受多于1个参数,则给出了许多迭代。
15
2020
03

JS的三种输出方式

1.window.alert(”),弹框效果,window可省略。弹出比较突然,用户的体验不好,基本用来测试代码使用。

15
2020
03

字符串转换成Date类型异常:java.text.ParseException: Unparseable date 解决方案


将字符串转换成Date类型的用法很常见,一般使用SimpleDateFormat下的parse方法,但是使用这个方法需要考虑一些经常会碰到的问题。

14
2020
03

列出Django中的继承样式

在Django中,有三种可能的继承样式:抽象基类:当你只希望父类包含而你不想为每个子模型键入的信息时使用;多表继承:对现有模型进行子类化,并且需要每个模型都有自己的数据库表。代理模型:只想修改模型的Python级别行为,而无需更改模型的字段。
14
2020
03

在Django框架中解释会话的使用?

Django提供的会话允许您基于每个站点访问者存储和检索数据。Django通过在客户端放置会话ID cookie并在服务器端存储所有相关数据来抽象发送和接收cookie的过程。
14
2020
03

提到Django模板的组成部分。

模板是一个简单的文本文件。它可以创建任何基于文本的格式,如XML,CSV,HTML等。模板包含在评估模板时替换为值的变量和控制模板逻辑的标记(%tag%)。
14
2020
03

举例说明如何在Django中编写VIEW?

这是我们在Django中使用write一个视图的方法:from django.http import HttpResponseimport datetimedef Current_datetime(request):now =datetime.datetime.now()html ="<html><body>It is now %s</body></html>"%nowreturn HttpResponse(html)返回当前日
14
2020
03

解释如何在Django中设置数据库

Django使用SQLite作为默认数据库,它将数据作为单个文件存储在文件系统中。如过你有数据库服务器-PostgreSQL,MySQL,Oracle,MSSQL-并且想要使用它而不是SQLite,那么使用数据库的管理工具为你的Django项目创建一个新的数据库。无论哪种方式,在您的(空)数据库到位的情况下,剩下的就是告诉Django如何使用它。这是项目的settings.py文件的来源。我们将以下代码行添加到setting.py文件中:DATABASES ={'default'
14
2020
03

讨论Django架构

Django架构开发人员提供模型,视图和模板,然后将其映射到URL,Django可以为用户提供服务。
14
2020
03

Django,Pyramid和Flask之间的差异

Flask是一个“微框架”,主要用于具有更简单要求的小型应用程序。Pyramid适用于大型应用程序,具有灵活性,允许开发人员为他们的项目使用数据库,URL结构,模板样式等正确的工具。Django也可以像Pyramid一样用于更大的应用程序。它包括一个ORM。
14
2020
03

请解释或描述一下Django的架构

对于Django框架遵循MVC设计,并且有一个专有名词:MVT,M全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架;V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse;T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎
14
2020
03

在Python中为数值数据集编写排序算法

以下代码可用于在Python中对列表进行排序:list = ["1", "4", "0", "6", "9"]list = [int(i) for i in list]list.sort()print (list)
14
2020
03

请写一个Python逻辑,计算一个文件中的大写字母数量

import osos.chdir('C:\Users\lifei\Desktop')with open('Today.txt') as today:count=0for i in today.read():if i.isupper():count+=1print(count)
14
2020
03

编写一个Python程序来计算文本文件中的行数

def file_lengthy(fname):open(fname)as f:for i,l in enumerate(f):passreturn i + 1print(“file of lines:”,file_lengthy(“test.txt”))
14
2020
03

编写一个Python程序来读取文件中的随机行

import randomdef random_line(fname):lines = open(fname).read().splitlines()return random.choice(lines)print(random_line('test.txt'))
14
2020
03

编写一个Python程序来计算数字列表的总和

def list_sum(num_List):如果len(num_List)== 1:return num_List [0]else:return num_List [0] + list_sum(num_List [1:])print(list_sum([3,4,5,6,11]))29
14
2020
03

解释一些在Python中实现面向功能的编程的方法

有时,当我们想要遍历列表时,一些方法会派上用场。1)filter()过滤器允许我们根据条件逻辑过滤一些值。list(filter(lambda x:x> 5,range(8)))[6,7]2)map()Map将函数应用于iterable中的每个元素。list(map(lambda x:x ** 2,range(8)))[0,1,4,9,16,25,36,49]3)reduce()在我们达到单个值之前,Reduce会反复减少序列顺序。from functools import reducer
14
2020
03

如何从列表中删除最后一个对象?

从列表中删除并返回最后一个对象或obj。list.pop(obj = list [-1])
14
2020
03

如何计算一个字符串的长度?

这个也比较简单,在我们想计算长度的字符串上调用函数len()即可。len('Data 123')8
14
2020
03

如何用Python找出你目前在哪个目录?

我们可以使用函数/方法getcwd(),从模块os中将其导入。import osos.getcwd()'C:\\Users\\37410\\Desktop\\代码'
14
2020
03

函数zip()的是干嘛的?

Python新手可能对这个函数不是很熟悉,zip()可以返回元组的迭代器。list(zip(['a','b','c'],[1,2,3]))[(‘a’,1), (‘b’, 2), (‘c’, 3)]在这里zip()函数对两个列表中的数据项进行了配对,并用它们创建了元组。
14
2020
03

请说说生成器和迭代器之间的区别

1)在使用生成器时,我们创建一个函数;在使用迭代器时,我们使用内置函数iter()和next();2)在生成器中,我们使用关键字‘yield’来每次生成/返回一个对象;3)生成器中有多少‘yield’语句,你可以自定义;4)每次‘yield’暂停循环时,生成器会保存本地变量的状态。而迭代器并不会使用局部变量,它只需要一个可迭代对象进行迭代;5)使用类可以实现你自己的迭代器,但无法实现生成器;6)生成器运行速度快,语法简洁,更简单;7)迭代器更能节约内存。
14
2020
03

什么是迭代器?

迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。我们使用inter()函数创建迭代器。odds=iter([1,2,3,4,5])#每次想获取一个对象时,我们就调用next()函数next (odds)1next (odds)2next (odds)3next (odds)4next (odds)5
14
2020
03

什么是生成器?

生成器会生成一系列的值用于迭代,这样看它又是一种可迭代对象。它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。我们定义一个能逐个“yield”值的函数,然后用一个for循环来迭代它。def squares(n):  i=1  while(i<=n):      yield i**2      i+=1for i in squares(5):  print(i)1491625
14
2020
03

什么是递归?

在调用一个函数的过程中,直接或间接地调用了函数本身这个就叫递归。但为了避免出现死循环,必须要有一个结束条件,举个例子:def facto(n):  if n==1: return 1  return n*facto(n-1)facto(5)120
14
2020
03

什么是Python中的连接(concatenation)?

Python中的连接就是将两个序列连在一起,我们使用+运算符完成:'22'+'33'‘2233’[1,2,3]+[4,5,6][1, 2,3, 4, 5, 6](2,3)+(4)TypeError  Traceback (most recent call last)<ipython-input-7-69a1660f2fc5> in <module>----> 1 (2,3)+(4)TypeError: can only co
14
2020
03

如何检查字符串中所有的字符都为字母数字?

对于这个问题,我们可以使用isalnum()方法。'DATA123'.isalnum()True'DATA123!'.isalnum()False我们还可以用其它一些方法:'123'.isdigit()#检测字符串是否只由数字组成True'123'.isnumeric()#只针对unicode对象True'data'.islower()#是否都为小写True'Data'.isupper()#是否都为大

14
2020
03

怎样将字符串中第一个字母大写?

最简单的方法就是用capitalize()方法。'daxie'.capitalize()'Daxie'
14
2020
03

在Python中如何生成一个随机数?

要想生成随机数,我们可以从random模块中导入函数random()。from random import randomrandom()0.013501571090371978我们还可以使用函数randint(),它会用两个参数表示一个区间,返回该区间内的一个随机整数。from random import randintrandint(2,7)4
14
2020
03

在Python中怎样将字符串转换为整型变量?

如果字符串只含有数字字符,可以用函数int()将其转换为整数。int('22')我们检查一下变量类型:type('22')<class'str'>type(int('22'))<class'int'>
14
2020
03

如何用Python输出一个Fibonacci数列?

a,b = 0, 1  while b<100:  print (b)  a, b = b, a+b
14
2020
03

怎么移除一个字符串中的前导空格?

字符串中的前导空格就是出现在字符串中第一个非空格字符前的空格。我们使用方法Istrip()可以将它从字符串中移除。'  Data123  '.lstrip()结果:'Data123 '最初的字符串当中既有前导字符也有后缀字符,调用Istrip()去除了前导空格,如果我们想去除后缀空格,可以使用rstrip()方法。'Data123    '.rstrip()'Data123'
14
2020
03

在Python中使用//运算符?

它是一个Floor Divisionoperator,用于分割两个操作数,结果为商,只显示小数点前的数字。例如,10 // 5 = 2和10.0 // 5.0 = 2.0。
14
2020
03

解释如何从C访问用Python编写的模块?

您可以通过以下方法访问C中用Python编写的模块:Module = = PyImport_ImportModule(“<modulename>”)
14
2020
03

如何在Python中删除文件?

使用命令os.remove(filename)或os.unlink(filename)
11
2020
03

抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。6、抽象方法只
11
2020
03

String能被继承吗?为什么?

不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String.valueOf来返回String实例对象,至于调用哪个则取决于你的赋值,比如String num=1,调用的是public static String valueOf(int i) {return Integer.toString(i);}后者则是调用
10
2020
03

Java 条件语句 - if...else

一个 if 语句包含一个布尔表达式和一条或多条语句。语法if 语句的语法如下:if(布尔表达式){   //如果布尔表达式为true将执行的语句}如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。Test.java 文件代码:public class Test {    public static void main(String args[]){      int x
10
2020
03

Java 循环结构 - for, while 及 do...while

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。Java中有三种主要的循环结构:while 循环do…while 循环for 循环在Java5中引入了一种主要用于数组的增强型for循环。while 循环while是最基本的循环,它的结构为:while( 布尔表达式 ) {  //循环内容}只要布尔表达式为 true,循环就会一直执行下去。实例Test.java 文件代码:public class Test {   public
10
2020
03

Java 运算符

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符算术运算符算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。表格中的实例假设整数变量A的值为10,变量B的值为20:操作符 描述 例子+ 加法 - 相加运算符两侧的值 A + B 等于 30- 减法 - 左操作数减去右操作数 A – B 等于 -10* 乘法 - 相乘操
10
2020
03

Java 修饰符

Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明:public class ClassName {   // ...}private boolean myFlag;static final double weeks = 9.5;protected static final int BOXWIDTH = 42;public static void main(String[] ar
10
2020
03

Java 变量类型

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:type identifier [ = value][, identifier [= value] ...] ;格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。以下列出了一些变量的声明实例。注意有些包含了初始化过程。int a, b, c;         // 声明三个int型整数:a、 b、cint d = 3, e = 4,
10
2020
03

Java 基本数据类型

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。Java 的两大数据类型:内置数据类型引用数据类型内置数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。byte:byte 数据类型是8位、有符号的,以二进制补码表示的整数;最小值是 -128(-2^7);最大值是 1
10
2020
03

Java 对象和类

Java作为一种面向对象语言。支持以下基本概念:多态继承封装抽象类对象实例方法重载本节我们重点研究对象和类的概念。对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。下图中男孩(boy)、女孩(girl)为类(class),而具体的每个人为该类的对象(object):Java中的对象现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,
10
2020
03

Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。第一个Java程序下面看一个简单的
10
2020
03

Java 开发环境配置

在本章节中我们将为大家介绍如何搭建Java开发环境。Windows 上安装开发环境Linux 上安装开发环境安装 Eclipse 运行 Javawindow系统安装java下载JDK首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点击如下下载按钮:在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以 Window 64位系统为例:下载后JDK
10
2020
03

Java 简介

Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java分为三个体系:JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)JavaME(J2ME)(Java 2 Platform Mi
10
2020
03

java EE与java SE的区分

JavaEE是指Java Enterprise Edition,Java企业版,多用于企业级开发,包括web开发等等。也叫J2EE。JavaSE通常是指Java Standard Edition,Java标准版,就是一般Java程序的开发就可以(如桌面程序),可以看作是JavaEE的子集。Java是一问语言,J2EE是Java语言的一门使用技术,Java为J2EE提供了库和语法,J2EE使用Java的库和语法应用在WEB上。这是概念性的区别。更详细的解释:Java 平台有三个版本,这使软件开发人
09
2020
03

静态变量和实例变量的概念

静态变量:static修饰的成员变量叫做静态变量【也叫做类变量】,静态变量是属于这个类,而不是属于是对象。实例变量:没有被static修饰的成员变量叫做实例变量,实例变量是属于这个类的实例对象。还有一点需要注意的是:static是不允许用来修饰局部变量,不要问我问什么,因为java规定的!
09
2020
03

static的独特之处

1、被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。怎么理解 “被类的实例对象所共享” 这句话呢?就是说,一个类的静态成员,它是属于大伙的【大伙指的是这个类的多个对象实例,我们都知道一个类可以创建多个实例!】,所有的类对象共享的,不像成员变量是自个的【自个指的是这个类的单个实例对象】…我觉得我已经讲的很通俗了,你明白了咩?2、在该类被第一次加载的时候,就会去加载被static修饰的部分,而且只在类第一次使用时加载并
09
2020
03

static存在的主要意义

static的主要意义是在于创建独立于具体对象的域变量或者方法。以致于即使没有创建对象,也能使用属性和调用方法!static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。因此,很多时候会将一些只需要进行一次的初始化操作都放在sta
09
2020
03

Netty 是什么?

Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty是基于nio的,它封装了jdk的nio,让我们使用起来更加方法灵活。
09
2020
03

Netty 的特点是什么?

高并发:Netty 是一款基于 NIO(Nonblocking IO,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。传输快:Netty 的传输依赖于零拷贝特性,尽量减少不必要的内存拷贝,实现了更高效率的传输。封装好:Netty 封装了 NIO 操作的很多细节,提供了易于使用调用接口。
09
2020
03

Netty 的优势有哪些?

使用简单:封装了 NIO 的很多细节,使用更简单。功能强大:预置了多种编解码功能,支持多种主流协议。定制能力强:可以通过 ChannelHandler 对通信框架进行灵活地扩展。性能高:通过与其他业界主流的 NIO 框架对比,Netty 的综合性能最优。稳定:Netty 修复了已经发现的所有 NIO 的 bug,让开发人员可以专注于业务本身。社区活跃:Netty 是活跃的开源项目,版本迭代周期短,bug 修复速度快。
09
2020
03

Netty 的应用场景有哪些?

典型的应用有:阿里分布式服务框架 Dubbo,默认使用 Netty 作为基础通信组件,还有 RocketMQ 也是使用 Netty 作为通讯的基础。
09
2020
03

Netty 高性能表现在哪些方面?

IO 线程模型:同步非阻塞,用最少的资源做更多的事。内存零拷贝:尽量减少不必要的内存拷贝,实现了更高效率的传输。内存池设计:申请的内存可以重用,主要指直接内存。内部实现是用一颗二叉查找树管理内存分配情况。串形化处理读写:避免使用锁带来的性能开销。高性能序列化协议:支持 protobuf 等高性能序列化协议。
09
2020
03

BIO、NIO和AIO的区别?

BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,BIO是面向流的,NIO是面向缓冲区的;BIO的各种流是阻塞的。而NIO是非阻塞的;BIO的Stream是单向
09
2020
03

NIO的组成?

Buffer:与Channel进行交互,数据是从Channel读入缓冲区,从缓冲区写入Channel中的flip方法 : 反转此缓冲区,将position给limit,然后将position置为0,其实就是切换读写模式clear方法 :清除此缓冲区,将position置为0,把capacity的值给limit。rewind方法 : 重绕此缓冲区,将position置为0DirectByteBuffer可减少一次系统空间到用户空间的拷贝。但Buffer创建和销毁的成本更高,不可控,通常会用内存池来
09
2020
03

Netty的线程模型?

Netty通过Reactor模型基于多路复用器接收并处理用户请求,内部实现了两个线程池,boss线程池和work线程池,其中boss线程池的线程负责处理请求的accept事件,当接收到accept事件的请求时,把对应的socket封装到一个NioSocketChannel中,并交给work线程池,其中work线程池负责请求的read和write事件,由对应的Handler处理。单线程模型:所有I/O操作都由一个线程完成,即多路复用、事件分发和处理都是在一个Reactor线程上完成的。既要接收客户
09
2020
03

TCP 粘包/拆包的原因及解决方法?

TCP是以流的方式来处理数据,一个完整的包可能会被TCP拆分成多个包进行发送,也可能把小的封装成一个大的数据包发送。TCP粘包/分包的原因:应用程序写入的字节大小大于套接字发送缓冲区的大小,会发生拆包现象,而应用程序写入数据小于套接字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发生粘包现象;进行MSS大小的TCP分段,当TCP报文长度-TCP头部长度>MSS的时候将发生拆包以太网帧的payload(净荷)大于MTU(1500字节)进行ip分片。解决方法消息定长:FixedLen
09
2020
03

什么是 Netty 的零拷贝?

Netty 的零拷贝主要包含三个方面:Netty 的接收和发送 ByteBuffer 采用 DIRECT BUFFERS,使用堆外直接内存进行 Socket 读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行 Socket 读写,JVM 会将堆内存 Buffer 拷贝一份到直接内存中,然后才写入 Socket 中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。Netty 提供了组合 Buffer 对象,可以聚合多个 ByteBuffer 对
09
2020
03

Netty 中有哪种重要组件?

Channel:Netty 网络操作抽象类,它除了包括基本的 I/O 操作,如 bind、connect、read、write 等。EventLoop:主要是配合 Channel 处理 I/O 操作,用来处理连接的生命周期中所发生的事情。ChannelFuture:Netty 框架中所有的 I/O 操作都为异步的,因此我们需要 ChannelFuture 的 addListener()注册一个 ChannelFutureListener 监听事件,当操作执行成功或者失败时,监听就会自动触发返回结
09
2020
03

Netty 发送消息有几种方式?

Netty 有两种发送消息的方式:直接写入 Channel 中,消息从 ChannelPipeline 当中尾部开始移动;写入和 ChannelHandler 绑定的 ChannelHandlerContext 中,消息从 ChannelPipeline 中的下一个 ChannelHandler 中移动。
09
2020
03

了解哪几种序列化协议?

序列化(编码)是将对象序列化为二进制形式(字节数组),主要用于网络传输、数据持久化等;而反序列化(解码)则是将从网络、磁盘等读取的字节数组还原成原始对象,主要用于网络传输对象的解码,以便完成远程调用。影响序列化性能的关键因素:序列化后的码流大小(网络带宽的占用)、序列化的性能(CPU资源占用);是否支持跨语言(异构系统的对接和开发语言切换)。Java默认提供的序列化:无法跨语言、序列化后的码流太大、序列化的性能差XML,优点:人机可读性好,可指定元素或特性的名称。缺点:序列化数据只包含数据本身以
09
2020
03

如何选择序列化协议?

具体场景对于公司间的系统调用,如果性能要求在100ms以上的服务,基于XML的SOAP协议是一个值得考虑的方案。基于Web browser的Ajax,以及Mobile app与服务端之间的通讯,JSON协议是首选。对于性能要求不太高,或者以动态类型语言为主,或者传输数据载荷很小的的运用场景,JSON也是非常不错的选择。对于调试环境比较恶劣的场景,采用JSON或XML能够极大的提高调试效率,降低系统开发成本。当对性能和简洁性有极高要求的场景,Protobuf,Thrift,Avro之间具有一定的竞
09
2020
03

Netty 支持哪些心跳类型设置?

readerIdleTime:为读超时时间(即测试端一定时间内未接受到被测试端消息)。writerIdleTime:为写超时时间(即测试端一定时间内向被测试端发送消息)。allIdleTime:所有类型的超时时间。
09
2020
03

Netty 和 Tomcat 的区别?

作用不同:Tomcat 是 Servlet 容器,可以视为 Web 服务器,而 Netty 是异步事件驱动的网络应用程序框架和工具用于简化网络编程,例如TCP和UDP套接字服务器。协议不同:Tomcat 是基于 http 协议的 Web 服务器,而 Netty 能通过编程自定义各种协议,因为 Netty 本身自己能编码/解码字节流,所有 Netty 可以实现,HTTP 服务器、FTP 服务器、UDP 服务器、RPC 服务器、WebSocket 服务器、Redis 的 Proxy 服务器、MySQ
09
2020
03

NIOEventLoopGroup源码?

NioEventLoopGroup(其实是MultithreadEventExecutorGroup) 内部维护一个类型为 EventExecutor children [], 默认大小是处理器核数 * 2, 这样就构成了一个线程池,初始化EventExecutor时NioEventLoopGroup重载newChild方法,所以children元素的实际类型为NioEventLoop。线程启动时调用SingleThreadEventExecutor的构造方法,执行NioEventLoop类的r
08
2020
03

请解释使用*args和*kwargs的含义

当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用*args:def func(*args):  for i in args:      print(i) func(3,2,1,4,7)32147在我们不知道该传递多少关键字参数时,使用**kwargs来收集关键字参数:def func(**kwargs):  for i in kwargs:      print(i,kwargs[
08
2020
03

您需要从IMDb前250电影页面中删除数据,只有字段电影名称,年份和评级

from bs4 import BeautifulSoupimport requestsimport sysurl ='http://www.imdb.com/chart/top'response =requests.get(url)soup =BeautifulSoup(response.text)tr =soup.findChildren("tr")tr =iter(tr)next(tr)formovie intr:title =movie.find(&#
08
2020
03

如何获取任何网址或网页的Google缓存时限?

使用以下URL格式:http://webcache.googleusercontent.com/search?q=cache:URLGOESHERE请务必将“URLGOESHERE”替换为您要检索其缓存的页面或网站的正确网址,并查看时间。例如,要查看http://edureka.co的Google Webcache时代,您需要使用以下网址:http://webcache.googleusercontent.com/search?q=cache:edureka.co
08
2020
03

如何使用我已经知道的URL地址本地保存图像?

将使用以下代码从URL地址本地保存图像:import urllib.requesturllib.request.urlretrieve("URL", "local-filename.jpg")