公司笔记,无私奉献,相当低级,没什么技术内容

笔记

1.       异常:Runtime Exception、CheckedException

2.       注解:SuppressWarnings(“unchecked”),指示编译器取消警告。

3.       getSession(false,true,null)的用法:

3.1:request.getSession(false):返回当前request中的session,如果没有,返回null。

3.2:request.getSession(true)等同于request.getSession(),如果没有session,就创建一个。

4.       spring注解:@Autowired与@Qualifier

4.1:@Autowired是根据类型来装配,当上下文中不存在该类型或不止一个该类型,就会报错;可以是使用@Qualifier来解决;

   a:@Autowired

@Qualifier(“UserDao”)

              b:若可能不存在UserDao实例:@Autowired(required=false)

5.       WSDL是什么?

网络服务描述语言

6.       XSD是什么?

指Xml结构定义

7.       日志级别:DEBUG、INFO、WARN、ERROR、FATAL、AllLevel、OFFlevel

AllLevel:最低等级、打开所有日志记录;

OFFlevel:最高,关闭所有。

8.       JMS:Java消息服务

Java消息服务是Java关于面向消息中间件的API,用于在两个应用程序之间或者分布式系统中发送消息,是一个与具体平台无关的API。

9.       Document与element、Node的关系?

10.  如何配置jar包关联的源码:

Java Build Path →libraries→某个jar包→Source attachment → edit选择源码

另:sourceattachment、Javadoclocation、Nativelibrary location、Accessrules 分别是什么意思,做什么的?

11.  DeploymentAssembly 是什么意思?干什么的?

12.  request.getParamenterValues(pName)会返回一个Enumeration对象,这个如何使用?

13.  getAttribute(“key”)与getParament(“key”)的区别?

14.  doGet()与doPost()与service():

servlet在默认情况下,无论是post或get请求都会经过service()方法方法处理,然后转向到doGet()或doPost()方法,如果你在自己的servlet类中重写了service()方法,这是service就不是用来转向的,而是处理业务。

15.  log4j的使用:添加不同级别的日志信息,调用不同方法加入日志内容,如:Log.info(“……….”),Log.error(“……..”),Log.debug(“………”),Log.warn(“…….”)

16.  Mybatis的mapper文件中的变量引用方式#{}与${}的区别?

默认使用#{},MyBatis会产生preparedStatement语句,安全地设置其参数,还会使用必要的安全检查。

${}不进行预编译,可能会产生sql注入问题,也会影响sql语句的预编译,如果需要插入一个不做任何修改的字符串到sql中,则使用${}。

17.  UTF-8占用几个字节?

1个字节的:数字,英文字母;

2个字节的:拉丁、希腊等;

3个字节的:类似 GBK,21000个汉字;

4个字节的:中日韩超大字符集里的汉字,5万多个。

18.  ASCII、Unicode、UTF-8、GBK、GB2312、ISO-8859-1?

UTF-8是Unicode的实现方式之一,

ASCII是最早出现的,美国制定的一种表示常用制度的编码方式,128个。

Unicode是万国码,它的出现时因为 每个国家标准不统一,导致同一个二进制数字在不同的国家代表的字符不一样。因为ASCII码只能表示常用的128个,而各国的字符都要在128个之后表示,每个国家就出现了不同的表示方式。Unicode规定了字符对应的二进制的值。

19.  Java的接口与抽象类:

①  语法上:抽象方法,是否可以有实例方法,实例变量等。

②  概念上:一个是对行为的抽象,一个是对类的抽象。

20.  Spring的几个注解:

@Controller:表现层的bean,不指定bean名,默认为首字母小写的类名;

@Component:受Spring管理的组件的通用注释;

@repository:数据访问组件,即Dao组件;

@service:业务层的bean;

@scope:作用域,prototype:原型,singleton:单例

21.  Spring注解扫描配置:

<context:annotation-config/>

<context:Component-sacnbase-package=”…”/>

22.  Spring注解

@RequestMapping(…..)

@ResponseBody(……)

23.  配置<MVC:annotation-driven/>时报前缀未绑定?

MVC:annotation-driven

↓          ↓

命名空间    元素

为什么要有命名空间?

       为了避免发生命名冲突。比如两xml文档中均含有带有不同内容的同一标签,两文档合并时候回发生冲突。此时引入命名空间,给两xml各自给一个命名空间,命名可见一般用一个全球唯一的网址表示。

24.  RequestMapping六个属性:

1.     value:指定请求的实际地址

2.     method:请求的method类型(get、post)

3.     cosumes:指定处理请求的提交内容类型(content-Type:application/json;text/html)

4.     produces:指定返回的内容类型,仅当request请求头中的accept类型中包含该指定类型才返回。

5.     params:指定请求中必须包含某些参数时,才让该方法处理。

6.     headers:指定request中必须包含某些指定header值,才让该方法处理。

25.  linux查看指定行:(xxx表示文件名)

grep -A 100 xxx:显示关键字后100行;

grep -B 100 xxx:显示关键字前100行;

grep -C 100 xxx:显示关键字前后100行

26.  DOS查看端口占用:

①  netstat–ano:找到端口对应IP;

②  tasklist|findstr“PID”:找到任务列表;

③  taskkill/f /t /im 任务名:杀死进程;

27.  linux:tar命令

tar –cvf 目标文件 源文件:打tar包;

tar –xvf xxxx.tar:先cd到目标路径下,再解包;

tar –zcvf xxxx.gz 源文件 :以gzip压缩;

tar –jcvf xxxx.bzz 源文件:以bzip压缩;

28.  Jsonp跨域请求:

①  What:非官方的跨域数据交换协议;

②  扩展:跨域请求与同源策略:

同源策略:目前,所有的浏览器都引入的一个规则,一个域内的脚本仅具有本域内的权限(同域脚本只能读取本域资源);

同源:同IP并且同端口且同协议

29.  Prototype,AlphaGo

30.  grep–n “关键字” 文件:显示关键字行数;

head –n 2 文件:查看前两行;

tail –n 2 文件:查看最后两行;

cat 文件|grep–n “关键字”:查看关键字所在行数;

sed –n ‘5,10p’ 文件:查看5-10行;

awk ‘NR==2,NR==11{print}’文件:同上一条;

31.  windows下安装启动MySQL:

①  下载包,解压到路径X:XX下;

②  配置环境变量:MYSQL_HOME:x:xx….;Path添加:%MYSQL_HOME%/bin

③  向windows注册mysql服务;

1)      管理员打开命令行;

2)      切换到bin目录;

3)      Mysqld.exe–install MySQL –defaults –file=”x:xx/my-default.ini”

4)      启动服务: net start mysql

④  Mysql:查看当前用户: select user();

     查看所有用户:selectuser,host,password from mysql.user;

⑤  修改密码,修改空密码:

1)      SETPASSWORD FOR ‘root’@’localhost’=PASSWORD(‘newPWD’);

2)      a:usemysql

b:UPDATE user SET password=PASSWORD(‘root’)where user=’root’;

3)      FLUSHPRIVILEGES;

32.  MySQL:

①  修改sql语句结束符:delimiter 结束符(注意:该语句后面没有跟旧的结束符)

②  创建一个存储过程:

CREATE PROCEDURE produce_name(IN param_nameTYPE,OUT param_name TYPE)

READS SQL DATA

BEGIN

……….(SQL)

END

$

注意:执行前后修改sql默认结束符;

33.  SpringMVC中使用Interceptor拦截器:

①  实现HandlerInterceptor 接口或继承实现该接口的类

②  实现WebRequestInterceptor接口或继承实现该接口的类

③  HandlerInterceptor接口定义了三个方法:

a)       preHandler(HttpServletRequestreq,HttpServletResponse res,Object obj){}:请求处理之前调用,返回boolean,若false不再执行后续步骤,若true则调用下一个拦截器或controller;

b)      postHandler(HttpServletRequestreq,HttpServletResponse res,Object obj,ModelAndView view){}:controller处理之后,视图解析器之前执行,所以是对ModelAndView进行处理的,与preHandler相反,先声明的会后执行;

c)       afterCompletion(HttpServletRequestreq,HttpServletResponse res,Object handle,Exception ex){} 与postHandle方法同样都是都是preHandle方法返回true才执行。该方法还在请求之后执行。

34.  配置Tomcat连接池(Server.xml文件配置)

①  Server.xml中配置DataSource,并为其指定参数;

<!-- Global JNDI resources

       Documentation at /docs/jndi-resources-howto.html

   -->

   <GlobalNamingResources>

     <!-- Editable user database that can alsobe used by

         UserDatabaseRealm to authenticate users

     -->

     <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

              description="Userdatabase that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFacto"

              pathname="conf/tomcat-users.xml"/>

 <!--

   |-name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任更换,但是程序中最终要查找的就是此名称,

           为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一jdbc的关于oracle的命名服务。

   |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效

   |-type:此名称所代表的类型,现在为javax.sql.DataSource

   |-maxActive:表示一个数据库在此服务器上所能打开的最大连接数

   |-maxIdle:表示一个数据库在此服务器上维持的最小连接数

   |-maxWait:最大等待时间。10000毫秒

   |-username:数据库连接的用户名

   |-password:数据库连接的密码

   |-driverClassName:数据库连接的驱动程序

   |-url:数据库连接的地址

 -->

 <!--配置Oracle数据库的JNDI数据源-->

 <Resource

         name="jdbc/bmos_ds"

        auth="Container"

        type="javax.sql.DataSource"

        maxActive="100"

        maxIdle="30"

        maxWait="10000"

        username="lead_oams"

        password="p"

        driverClassName="oracle.jdbc.driver.OracleDriver"

        url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>

 

 <!--配置MySQL数据库的JNDI数据源-->

 <Resource

         name="jdbc/mysql"

        auth="Container"

         type="javax.sql.DataSource"

        maxActive="100"

        maxIdle="30"

        maxWait="10000"

        username="root"

        password="root"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amcharacterEncoding=utf-8"/>

 

 <!--配置SQLServer数据库的JNDI数据源-->

 <Resource

         name="jdbc/sqlserver"

        auth="Container"

        type="javax.sql.DataSource"

        maxActive="100"

        maxIdle="30"

        maxWait="10000"

        username="sa"

        password="p@ssw0rd"

        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

        url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>

 

   </GlobalNamingResources>

②  Web.xml中引用资源;

<resource-ref>

<res-ref-name>jdbc/bmos_ds</res-ref-name>

<res-type>javax.sql.Datasource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

 

③  Javabean、servlet中使用资源。

获取连接的方式变了,

原来:加载驱动,获取连接;

现在:使用连接池,如下:

Context context = new InitialContext();

Datasource ds = ()context.lookup(“java:comp/env/jdbc/bmos_ds”);//对应上面name

Connection conn = ds.getConnection();

//java:comp/env/为固定写法,后面跟server.xml中资源名;

//lookup方法会从资源中获取一个数据源。

35.  Javax.sql.Datasource接口:

用于提供此Datasource对象表示的物理数据源的连接。作为DriverManager的替代。实现该接口的对象通常基于JDNI注册,该接口驱动由驱动程序供应商实现。

方法:

Connection getConnection()

Connection getConnection(Stringusername,String password)

36.  JNDI:Java命名和目录接口:

J2EE的重要规范之一,就是为某个Java对象起一个名字。

Ps:打jar包的方法:

        i.             先编译.java文件为.class文件

      ii.             jar –cvf 生成包的名字class文件或者文件夹(一个或者多个)

例如:jar–cvf test.jar ./com

37.  HashMap的实现原理:(数组+链表)

1)      数组:寻址容易,插入、删除难;

2)      链表:寻址难,插入、删除容易

哈希表结合了二者的有点:

HashMap -> Entry[]   Entry为HashMap的静态内部类(三个属性:key,value,next)

3)      存取:大致算法是 先用key.hashCode()方法得到hash值,用hash%Entry[].length对数组取余(源码是:hash&(Entry[].length-1))得到的index即value存放在数组中的下标。具体还是看这个吧http://www.importnew.com/16301.html

38.没意思

39.transient关键字:不会序列化,只能修饰变量。

40.soap,WSDL。UDDI

RMI调用 RMI Registry

SOAP(Simple Object Access Protocol,简单对象访问协议),是一种数据交换的协议格式,SOAP=HTTP+xml+RPC

RPC可以选择走TCP还是HTTP

41.nio:

       nio的核心组件之一:channel,类似io里面的stream,nio的操作是基于channel,同一可以读取数据到buffer,再写入通道,不过,通道既可以读又可以写,通道有非阻塞io模式。

42.Java设计模式:

1)      分类:

a)       创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。(5个)

b)      结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。(7个)

c)       行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。(11个)

d)      并发模式和线程池模式

2)      六大原则:

a)       开闭原则:对外扩展开放,对修改关闭。(接口和抽象类的使用)

b)      里氏替换原则:任何基类可以出现的地方,子类一定可以出现。

c)       依赖倒转原则:开闭原则的基础,针对接口编程,依赖于抽象而非具体实现。

d)      接口隔离原则:使用多个隔离的接口,比使用单个接口要好。

e)      迪米特原则(最少知道原则):一个实体应该尽可能少得与其他实体间发生互相作用,使得系统模块互相独立。

f)       合成复用原则:尽量使用合成/聚合的方式,而不是使用继承。

43.Web Service

a)       wsimport

使用:wsimport [options]  <WSDL_URI>

       -WSDL_URI 统一资源标识符

-d 指定要输出的文件的位置

-s 指定要解析java的源码,默认解析出的是class字节码

-p 指定输出的包名

b)      看懂WSDL文件:

Service:服务名

Port:服务的访问方式(get、post、soap11、soap12)

Soap:address:服务的地址

Binding name:绑定名,对应port里binding

c)       面试相关:

1.     soap:简单对象访问协议  http+xml

2.     soa:面向服务架构,一种思想;

组成:首先,面向web的服务,面向web的组件:webservice(内存,cpu,显卡);然后,企业服务总线(ESB),相当于主板。

3.     wsdl:webservice的描述语言。

4.     UDDI  统一描述,发现,集成

这是目录服务,通过该服务可以注册和发布webservice,以便于第三方调用者统一调用。

d)      Webservice 在mvc架构中属于哪一层?业务层

e)      Webservice没有严格的服务端和客户端

f)       使用EndPointPublish发布WebService时,遇到wrapper class package….is notfound 。Have you run APT to generatethem?

这是因为没有使用工具生成对应的工具类,可以使用wsgen 工具。

Wsgen –keep –cp 包.类  需要先cd到classes目录的根目录。

g)       WebService框架:

                      i.             axis,xfire,axis2

                    ii.             CXF框架:Celtrix(ESB框架)与xFire(Web Service)合并

h)      CXF框架:soa框架

1)      是两个框架的合并;

核心是org.apache.CXF.BUS(总线),类似于Spring的ApplicationContext;

依赖于Spring;

需要JDK1.6以上;

内置Jetty容器

2)      特点:

1.       与spring、servlet无缝对接,CXF框架里面继承了servlet容器Jetty

2.       支持注解的方式发布WebService

3.       能够显示WebService的服务列表;

4.       能够添加拦截器:输入拦截器,输出拦截器(日志拦截器,权限认证)

5.       ServletFactoryBean:不支持注解,不支持拦截器

6.       JaxWsServerFactoryBean:可注解,可拦截。

7.       WebService访问步骤:

A.      检测本地代理描述的WSDL是否与服务端的WSDL一致,俗称握手;

B.      通过SOAP协议进行通讯,采用POST请求,数据服装在满足SOAP约定的xml中。

C.       返回数据同样封装在xml 中。

i)        Spring与CXF整合:

添加jar包

编写业务类,通过CXF来发布WebService

添加一个CXF请求的Servlet,用来处理WebService的请求(过滤地址/ws/*)

配置Spring的配置文件:applicationContext.xml,配置CXFde bean

web.xml中配置cxf的Servlet,添加Spring监听;

通过wsimport生成本地代理,访问WebService。

      


猜你喜欢

转载自blog.csdn.net/sinat_34875106/article/details/80516996