第一次总结

Java web 基础

 1.Jsp有哪些内置对象?作用分别是什么?
Page,pageContext,request,response,session,application,out,config,exception
     Page指的是JSP被翻译成Servlet的对象的引用.
    pageContext对象可以用来获得其他8个内置对象,还可以作为JSP的域范围对象使用.pageContext中存的值是当前的页面的作用范围》
    request代表的是请求对象,可以用于获得客户机的信息,也可以作为域对象来使用,使用request保存的数据在一次请求范围内有效。
    Session代表的是一次会话,可以用于保存用户的私有的信息,也可以作为域对象使用,使用session保存的数据在一次会话范围有效
    Application:代表整个应用范围,使用这个对象保存的数据在整个web应用中都有效。
    Response是响应对象,代表的是从服务器向浏览器响应数据.
    Out:JSPWriter是用于向页面输出内容的对象
    Config:指的是ServletConfig用于JSP翻译成Servlet后 获得Servlet的配置的对象.
    Exception:在页面中设置isErrorPage=”true”,即可使用,是Throwable的引用.用来获得页面的错误信息
2. 什么是cookie?Session和cookie有什么区别?
Cookie是会话技术,将用户的信息保存到浏览器的对象.
Session也是会话技术,将Session的信息保存到服务器的对象.Session是基于Cookie的 利用Cookie向浏览器回写JSessionID.
3 ajax如何实现异步定时5秒刷新?
setInterval(function() {
    $("#content").load(location.href+" #content>*","");
}, 5000);

 

 

 

4.Servlet的生命周期

1.加载和实例化

2.初始化

3.请求处理

4.服务终止

5.jsp标准动作

Forward,执行页面跳转,将请求的处理转发到另一个页面
Param :用于传递参数
Include :用于动态引入一个jsp页面
Plugin :用于下载javaBean或applet到客户端执行
useBean :使用javaBean
setProperty :修改javaBean实例的属性值  
getProperty :获取javaBean实例的属性值
request.getParameter() 返回客户端的请求参数与值

  1. 发布项目时,把一jsp文件放到webroot下,与放在web-inf下,有什么区别? 

因为web-inf下,应用服务器把它指为禁访目录,即直接在浏览器里是不能访问到的.   
  但是可以让servlet进行访问,如web-inf下有a.jsp则可以用  request.getRequestDispatcher("/WEB-INF/a.jsp").forward(request,response);  
<jsp:forward page="/WEB-INF/a.jsp"></jsp:forward> 

 

  1. js五种创建对象
  1. object构造对象

Var user=new object();

User.name=”张三”;

User。Pass=”12345”;

User.sayHi=function{

Document.writer(“hello! ”+ this.name);

}

  1. 对象字面量创建对象

Var zs={

name=”张三”;

Pass=“12345”;

Document.writer(“hello! ”+ this.name);

}

  1. 工厂模式创建对象

Function createUser(name,pass){

Var user=new object();

user.name=name;

user.pass=pass;

User.sayHi={

Document.writer(“hello! ”+ this.name);

 

}}

  1. 构造方法创建对象

Function User(name,pass){

This.name=name;

This.pass=pass;

User.sayHi={

Document.writer(“hello! ”+ this.name);

}}

  1. 原型创建对象

Function User(name,pass){

This.name=name;

This.pass=pass;

}

User.prototype.salary=null;

User.prototype.sayHi=function{

Document.writer(“hello! ”+ this.name);

}

  1. js八种继承

Function Person(){

This.foot=2;

This.head=1;

}

Function Student(name,no){

This.name=name;

This.no=no;

}

Student.prototype=new Person;

Student.prototype.constructor=Student;

  1. 直接继承

 Function Person(){}

Person.prototype.foot=2;

Person.prototype.head=1;

Function Student(name,no){

This.name=name;

This.no=no;

}

Student.prototype= Person.prototype;

Student.prototype.constructor=Student;

  1. 空对象继承

 Function Person(){}

Person.prototype.foot=2;

Person.prototype.head=1;

Function Student(name,no){

This.name=name;

This.no=no;

}

Var f=new function{}

F.prototype=Person.prototype;

Student.prototype=new F();

Student.prototype.constructor=Student;

  1. 封装函数继承

 Function Person(){}

Person.prototype.foot=2;

Person.prototype.head=1;

Function Student(name,no){

This.name=name;

This.no=no;

}

Function extend (child,person){}

Var f=new function{}

F.prototype=person.prototype;

Child.prototype=new f();

Child.prototype.constructor=child;

Extend(student,person);

 

 

  1. call构造继承

Function person(foot,head){

This.foot=foot;

This.head=head;

}

Function student(foot,head,name,no){

Person.call{this,foot,head };

This.name=name;

This.no=no;

}

  1. apply继承

Function person(foot,head){

This.foot=foot;

This.head=head;

}

Function student(foot,head,name,no){

Person.apply(this[foot,head] );

This.name=name;

This.no=no;

}

  1. 组合继承

Function person(foot,head){

This.foot=foot;

This.head=head;

}

Function student(name,no){

Person.call(this);

This.name=name;

This.no=no;

}

Student.prototype=new  Person();

Student.prototype.constructor=Student;

  1. 拷贝继承

Function person(){};

Person.prototype.foot=2;

Person.prototype.head=1;

Function student(name,no){

This.name=name;

This.no=no;

}

Function extend(){

Var p=parson.prototype;

Var i=student.prototype;

For(var i in p){

c[i]=p[i];

}extend(Student,Person);

}

9. IO下载

Url url=new Url(“路径”);

HTTPURLConnection conn=(HTTPURLConnection )url.openConnection();

InputStream is=conn.getInputStream();

File file=new File(“文件名”);

file.createNewFile();

 OutputStream os=new FileOutputStream (file);

Byte[] bb=new byte[1024];

While (is.read(bb)=-1){

Os.write(bb);

Os.flush();

}

;关闭资源‘’

10解析JSEN

Goods good=new Goods();

List<Goods> li=good.findAll();

String json=Json.toJsonString(li);

File file=new File(tomcat\webapps\项目名\json文件);

file.createFile();

OutputStream os=new FileOutputStream (file);

Os.write(json.getByte[]);

 

 

 

 

 

Spring

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

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

 2.在 Spring中如何注入一个java集合?

Spring提供以下几种集合的配置元素:

  • <list>类型用于注入一列值,允许有相同的值。
  • <set> 类型用于注入一组值,不允许有相同的值。
  • <map> 类型用于注入一组键值对,键和值都可以为任意类型。
  • <props>类型用于注入一组键值对,键和值都只能为String类型。

3.Spring注解

3.1@Required  注解

这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。

 

3.2@Autowired 注解

@Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法。

3.3@Qualifier 注解

当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。

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

         控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的。在传统的编程方式中,业务逻辑的流程是由应用程序中的早已被设定好关联关系的对象来决定的。在下,使用控制反转的情况业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配器负责实例化,这种实现方式还可以将对象之间的关联关系的定义抽象化。而绑定的过程是通过“依赖注入”实现的。

         控制反转是一种以给予应用程序中目标组件更多控制为目的设计范式,并在我们的实际工作中起到了有效的作用。

依赖注入是在编译阶段尚未知所需的功能是来自哪个的类的情况下,将其他对象所依赖的功能对象实例化的模式。这就需要一种机制用来激活相应的组件以提供特定的功能,所以依赖注入是控制反转的基础。否则如果在组件不受框架控制的情况下,框架又怎么知道要创建哪个组件?

5.请解释Spring Bean的生命周期?

在一个bean实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个bean不在被调用时需要进行相关的析构操作,并从bean容器中移除。

            Spring bean factory 负责管理在spring容器中被创建的bean的生命周期。Bean的生命周期由两组回调(call back)方法组成。

           初始化之后调用的回调方法。
           销毁之前调用的回调方法。

5.五种增强

1.前置增强:org.springframework.aop.BeforeAdvice是前置增强顶层接口,因为Spring只支持方法的增强,其子接口MethodBeforeAdvice是目前可用的前置增强。表示在目标方法执行前实施增强。

2.后置增强:org.springframework.aop.AfterReturningAdvice是目前可用的后置增强,表示在目标方法执行后实施增强。

3.环绕增强:org.aopalliance.intercept.MethodInterceptor代表了环绕增强,表示在目标方法执行前后实施增强。直接使用了AOP联盟定义的接口。

4.异常抛出增强:org.springframework.aop.ThrowsAdvice代表了异常抛出增强,表示在目标方法抛出异常后实施增强。

5.引介增强:org.springframework.aop.IntroductionInterceptor代表引介增强,表示在目标类中添加一些新的方法和属性。

6.Spring的7种事务传播行为类型

1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘

3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

4、PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

5、PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

6、PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

7、PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

7.五个不同的事务隔离级别

DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
未提交读(read uncommited) :脏读,不可重复读,虚读都有可能发生
已提交读 (read commited):避免脏读。但是不可重复读和虚读有可能发生
可重复读 (repeatable read) :避免脏读和不可重复读.但是虚读有可能发生.
串行化的 (serializable) :避免以上所有读问题.

 

 

 

 

 

 

 

orcale

1. 分析一个SQL语句是怎样在数据库内部工作的。

A、用户发出SQL请求,打开游标;

B、把SQL语句语法分析,执行计划,数据字典等信息存入内存中共享池内;

C、从数据文件中把相关数据块读入数据缓冲区;

D、做相应操作,若做修改,先加上行级锁,经确认后,把改过前后记录内容存入重做日志缓冲区内;

E、返回结果给用户,关闭游标。

2.

 

 

 

 

内容概要:本文档详细介绍了在三台CentOS 7服务器(IP地址分别为192.168.0.157、192.168.0.158和192.168.0.159)上安装和配置Hadoop、Flink及其他大数据组件(如Hive、MySQL、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala)的具体步骤。首先,文档说明了环境准备,包括配置主机名映射、SSH免密登录、JDK安装等。接着,详细描述了Hadoop集群的安装配置,包括SSH免密登录、JDK配置、Hadoop环境变量设置、HDFS和YARN配置文件修改、集群启动与测试。随后,依次介绍了MySQL、Hive、Sqoop、Kafka、Zookeeper、HBase、Spark、Scala和Flink的安装配置过程,包括解压、环境变量配置、配置文件修改、服务启动等关键步骤。最后,文档提供了每个组件的基本测试方法,确保安装成功。 适合人群:具备一定Linux基础和大数据组件基础知识的运维人员、大数据开发工程师以及系统管理员。 使用场景及目标:①为大数据平台建提供详细的安装指南,确保各组件能够顺利安装和配置;②帮助技术人员快速掌握Hadoop、Flink等大数据组件的安装与配置,提升工作效率;③适用于企业级大数据平台的建与维护,确保集群稳定运行。 其他说明:本文档不仅提供了详细的安装步骤,还涵盖了常见的配置项解释和故障排查建议。建议读者在安装过程中仔细阅读每一步骤,并根据实际情况调整配置参数。此外,文档中的命令和配置文件路径均为示例,实际操作时需根据具体环境进行适当修改。
在无线通信领域,天线阵列设计对于信号传播方向和覆盖范围的优化至关重要。本题要求设计一个广播电台的天线布局,形成特定的水平面波瓣图,即在东北方向实现最大辐射强度,在正东到正北的90°范围内辐射衰减最小且无零点;而在其余270°范围内允许出现零点,且正西和西南方向必须为零。为此,设计了一个由4个铅垂铁塔组成的阵列,各铁塔上的电流幅度相等,相位关系可自由调整,几何布置和间距不受限制。设计过程如下: 第一步:构建初级波瓣图 选取南北方向上的两个点源,间距为0.2λ(λ为电磁波波长),形成一个端射阵。通过调整相位差,使正南方向的辐射为零,计算得到初始相位差δ=252°。为了满足西南方向零辐射的要求,整体相位再偏移45°,得到初级波瓣图的表达式为E1=cos(36°cos(φ+45°)+126°)。 第二步:构建次级波瓣图 再选取一个点源位于正北方向,另一个点源位于西南方向,间距为0.4λ。调整相位差使西南方向的辐射为零,计算得到相位差δ=280°。同样整体偏移45°,得到次级波瓣图的表达式为E2=cos(72°cos(φ+45°)+140°)。 最终组合: 将初级波瓣图E1和次级波瓣图E2相乘,得到总阵的波瓣图E=E1×E2=cos(36°cos(φ+45°)+126°)×cos(72°cos(φ+45°)+140°)。通过编程实现计算并绘制波瓣图,可以看到三个阶段的波瓣图分别对应初级波瓣、次级波瓣和总波瓣,最终得到满足广播电台需求的总波瓣图。实验代码使用MATLAB编写,利用polar函数在极坐标下绘制波瓣图,并通过subplot分块显示不同阶段的波瓣图。这种设计方法体现了天线阵列设计的基本原理,即通过调整天线间的相对位置和相位关系,控制电磁波的辐射方向和强度,以满足特定的覆盖需求。这种设计在雷达、卫星通信和移动通信基站等无线通信系统中得到了广泛应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值