当前位置: 编程技术>WEB前端
本页文章导读:
▪小议Javascript 序 今天我不谈什么技术细节了,这个太多人聊了,如果真想知道,那就去买个书或者下个电子书看看!今天我就唠闲嗑,想到什么说什么,没有主题,胡乱的聊。如果不当之处,.........
▪javaEE ssh 面试题 1.strust的。 Action是不是线程安全的?如果不是 有什么方式可以保证Action的线程安全?如果是,说明原因
2.MVC,分析一下struts是如何实现MVC的
3.struts中的几个关键对象的作用(说说几个关键对.........
▪Data类型的Url 所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些“小”的数据,可以在网页中直接嵌入,而不是从外部文件载入。 data格式的Url最直接的好处.........
[1]小议Javascript
序
今天我不谈什么技术细节了,这个太多人聊了,如果真想知道,那就去买个书或者下个电子书看看!今天我就唠闲嗑,想到什么说什么,没有主题,胡乱的聊。如果不当之处,忘请见谅,我就想打破以往的思维方式,乱想,想到什么说什么,这个应该就叫自由吧!
作为PHP程序员,Javascipt是你居家旅行必备的工具,所以学好Javascipt我们任重道远。
水平
你的Javascript功底如何,你如何考证?工作年限吗?我工作了已经有些年头了,有些时候还不如刚工作的coder,估计是笨了点的缘故。
我与她为伍这么长时间,还是不了解她,所以我总是思考,我怎样才能真正的征服她?
混乱
没事我喜欢去浏览各个巨头互联网公司的JS代码,乖乖,大部分都进行了压缩。这怎么看,那就看能看的地方,打开浏览器的查看源码,里面真是赏心悦目啊,各种形式的JS嵌入方式,有以script标签镶金去的,有外链的,也有直接写在div标签的。——乖乖真够乱的。
难道这些公司程序员都很差劲吗?应该不是,既然是巨头公司,应该是不惜金钱,招兵买马。我猜应该很多是历史遗留问题,主要是初期没有想好整个代码的后期运转(估计当时的coder没想这么远),所以现在演变成大部分程序员按照自己喜欢的方式去写代码。
浏览器
现在的浏览器不是个省心的玩意,大家都喜欢玩自己的一套,所以兼容问题很多时候让人头疼。
但我们应该明白浏览器执行js代码是按照单进程方式进行的,一旦有一个地方消耗比较长的时间,那么就有可能拖死后面的代码了。——所以很多时候,要求把js代码放在页面底部,有些特殊的业务非要放在前面,那我们也没有办法了。很多时候,比较费时费力的业务都放置在后加载上,也就是页面加载完了(或触发事件,比如点击、滚动)去处理。
术语
要想学好一门东西,要想跟人沟通更容易一些,你就必须了解有关的常用名词。如以下的一些名词:
变量污染:变量在页面中乱用,有的时候多人开发,A用了个变量叫a,B在纷杂的页面中也起了个变量a,结果把A的变量a给冲掉了。这个主要是因为代码命名上没有一个明确的规范。
代码重用:这个应该是常见的毛病,就是一个功能写了多次。常常是因为程序员不太关注整个js代码,还有就是代码缺少规范,缺少文档导致。
平衡
js文件数量和文件大小之间的平衡:文件小了那么自然的文件就多了,自然请求数就多了,增加服务器的压力。文件大了,加大了服务器的IO流,很可能产生阻塞现象。
缓存平衡:现在很多人都喜欢使用缓存,尽量把缓存往前搁置。这也要量力而行,经常修改的文件我们尽量把缓存时间设置的短一些,一些常用的工具类文件,我们就加大对它的缓存时长。——常用的方式是,header缓存,服务端js文件设置缓存时长。
总结
推荐
本文链接
[2]javaEE ssh 面试题
来源: 互联网 发布时间: 2013-11-06
1.strust的。 Action是不是线程安全的?如果不是 有什么方式可以保证Action的线程安全?如果是,说明原因
2.MVC,分析一下struts是如何实现MVC的
3.struts中的几个关键对象的作用(说说几个关键对象的作用)
4.spring 说说AOP和IOC的概念以及在spring中是如何应用的
5.Hibernate有哪几种查询数据的方式 6.load()和get()的区别
回答:
1 Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因 不是线程安全的。
只要不申明类变量就可以保证线程安全。
因为只存在一个Action实例,所有线程会共享变量。 声
明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在spring中用scope="prototype"来管理
2.MVC,分析一下struts是如何实现MVC的
m:JavaBean 或结合 EJB 组件或者pojo构成
c:ActionServlet 、action来实现
v:一组 JSP 文件及其标签构成。
3.struts中的几个关键对象的作用(说说几个关键对象的作用)
Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态form,ActonMapping:配置文件中action节点的信息......
4.说说AOP和IOC的概念以及在spring中是如何应用的
AOP:面向切面编程,
ioc:依赖注入;声明式事务和编程式事务积极一些通用部分
5.Hibernate有哪几种查询数据的方式
hql查询,sql查询,qbc条件查询
6.load()和get()的区别
hibernate 对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load()默认支持延迟加载,在用到对象中的其他属性数据时才查询数据 库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对象的数据时,数 据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先 查一下session缓存看看该id对应的对象是否存在,不存在则创建代理(load时候之查询一级缓存,不存在则创建代理)。get()首先会在一级缓 存找数据,没有就去二级缓存找,没有就去数据库找,没有就返回null ;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。 简单地说:如果查询不到数据load()会抛异常,get()会返回null。
7.谈谈hibernate的延迟加载和 openSessionInView 延迟加载要在session范围内,用到的时候再加载;openSessionInBiew是在web层写了一个 filter来打开和关闭session,这样就表示在一次request过程中session一直开着,保证了延迟 加载在session中的这个前提。
8.spring的事务有几种方式?谈谈spring事务的隔离级别和传播行为。 声明式事务和编程式事务 隔离级别: - DEFAULT使用数据库默认的隔离级别 - READ_UNCOMMITTED会出现脏读,不可重复读和幻影读问题 - READ_COMMITTED会出现重复读和幻影读 - REPEATABLE_READ会出现幻影读 - SERIALIZABLE最安全,但是代价最大,性能影响极其严重 和传播行: - REQUIRED存在事务就融入该事务,不存在就创建事务 - SUPPORTS存在事务就融入事务,不存在则不创建事务 - MANDATORY存在事务则融入该事务,不存在,抛异常 - REQUIRES_NEW总是创建新事务 - NOT_SUPPORTED存在事务则挂起,一直执行非事务操作 - NEVER总是执行非事务,如果当前存在事务则抛异常 - NESTED嵌入式事务
9.Hibernate中的update()和saveOrUpdate()的区别. saveOrUpdate()做下面的事:
如 果对象已经在本session中持久化了,不做任何事 如果另一个与本session关联的对象拥有相同的持久化标识(identifier),抛出一个异常 如果对象没有持久化标识(identifier)属性,对其调用save() 如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用save() 如果对象是附带版本信息的(通过 或 )并且版本属性的值表明其是一个新实例化的对象,save()它。否则update() 这个对象
10.Spring对多种ORM框架提供了很 好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。(常用) getHiberanteTemplate里面提供了save,update,delete,find等方法。 简单说一个:如果配置了声明式事务,当执行getHibernateTemplate的各种方法的时候,事务会 自动被加载 如果没有配置事务,那么以上操作不会真正的被同步到数据库,除非配置了hibernate的 autocommit=true
11.spring 的事务有几种方式?谈谈spring事务的隔离级别和传播行为。 spring事务分两种形式,声明式事务和编程式事务,spring提供了一个事务的接口 PaltformTractionManager接口,针对不同的事务,spring进行了不同的实现,对hibernate事务 的实现HIbernateTractionManager,对JDBC的JdbcTractionManager, DataSourceTractionManager以及JdoTractionManager。接口platformTractionManager提 供了三 个方法,获取事务,提交和回滚的方法。
下面是另一些问题与答案:
1.Hibernate有哪几种查询数据的方式
(1)导航对象图查询
(2)OID查询
(3)HQL
(4)QBC
(5)本地SQL
2.load()和get()的区别
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
get加载方法:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
两加载方法区别:
区 别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代 码如果调用user对象的某个属性(比如user.getPassword())会抛出异 常:org.hibernate.ObjectNotFoundException;
区别2:load支持延迟加载,get不支持延迟加载。
也就是说:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。
而:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。
注意:
Java代码
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());
上 面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但 是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。
3. Hibernate工作原理及为什么要用?
原理:
1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
为什么要用:
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
4. Hibernate是如何延迟加载?
1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)
2. Hibernate3 提供了属性的延迟加载功能
当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
5. Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)
类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、
5. 说下Hibernate的缓存机制
1. 内部缓存存在Hibern
2.MVC,分析一下struts是如何实现MVC的
3.struts中的几个关键对象的作用(说说几个关键对象的作用)
4.spring 说说AOP和IOC的概念以及在spring中是如何应用的
5.Hibernate有哪几种查询数据的方式 6.load()和get()的区别
回答:
1 Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因 不是线程安全的。
只要不申明类变量就可以保证线程安全。
因为只存在一个Action实例,所有线程会共享变量。 声
明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在spring中用scope="prototype"来管理
2.MVC,分析一下struts是如何实现MVC的
m:JavaBean 或结合 EJB 组件或者pojo构成
c:ActionServlet 、action来实现
v:一组 JSP 文件及其标签构成。
3.struts中的几个关键对象的作用(说说几个关键对象的作用)
Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态form,ActonMapping:配置文件中action节点的信息......
4.说说AOP和IOC的概念以及在spring中是如何应用的
AOP:面向切面编程,
ioc:依赖注入;声明式事务和编程式事务积极一些通用部分
5.Hibernate有哪几种查询数据的方式
hql查询,sql查询,qbc条件查询
6.load()和get()的区别
hibernate 对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load()默认支持延迟加载,在用到对象中的其他属性数据时才查询数据 库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对象的数据时,数 据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先 查一下session缓存看看该id对应的对象是否存在,不存在则创建代理(load时候之查询一级缓存,不存在则创建代理)。get()首先会在一级缓 存找数据,没有就去二级缓存找,没有就去数据库找,没有就返回null ;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。 简单地说:如果查询不到数据load()会抛异常,get()会返回null。
7.谈谈hibernate的延迟加载和 openSessionInView 延迟加载要在session范围内,用到的时候再加载;openSessionInBiew是在web层写了一个 filter来打开和关闭session,这样就表示在一次request过程中session一直开着,保证了延迟 加载在session中的这个前提。
8.spring的事务有几种方式?谈谈spring事务的隔离级别和传播行为。 声明式事务和编程式事务 隔离级别: - DEFAULT使用数据库默认的隔离级别 - READ_UNCOMMITTED会出现脏读,不可重复读和幻影读问题 - READ_COMMITTED会出现重复读和幻影读 - REPEATABLE_READ会出现幻影读 - SERIALIZABLE最安全,但是代价最大,性能影响极其严重 和传播行: - REQUIRED存在事务就融入该事务,不存在就创建事务 - SUPPORTS存在事务就融入事务,不存在则不创建事务 - MANDATORY存在事务则融入该事务,不存在,抛异常 - REQUIRES_NEW总是创建新事务 - NOT_SUPPORTED存在事务则挂起,一直执行非事务操作 - NEVER总是执行非事务,如果当前存在事务则抛异常 - NESTED嵌入式事务
9.Hibernate中的update()和saveOrUpdate()的区别. saveOrUpdate()做下面的事:
如 果对象已经在本session中持久化了,不做任何事 如果另一个与本session关联的对象拥有相同的持久化标识(identifier),抛出一个异常 如果对象没有持久化标识(identifier)属性,对其调用save() 如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用save() 如果对象是附带版本信息的(通过 或 )并且版本属性的值表明其是一个新实例化的对象,save()它。否则update() 这个对象
10.Spring对多种ORM框架提供了很 好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。(常用) getHiberanteTemplate里面提供了save,update,delete,find等方法。 简单说一个:如果配置了声明式事务,当执行getHibernateTemplate的各种方法的时候,事务会 自动被加载 如果没有配置事务,那么以上操作不会真正的被同步到数据库,除非配置了hibernate的 autocommit=true
11.spring 的事务有几种方式?谈谈spring事务的隔离级别和传播行为。 spring事务分两种形式,声明式事务和编程式事务,spring提供了一个事务的接口 PaltformTractionManager接口,针对不同的事务,spring进行了不同的实现,对hibernate事务 的实现HIbernateTractionManager,对JDBC的JdbcTractionManager, DataSourceTractionManager以及JdoTractionManager。接口platformTractionManager提 供了三 个方法,获取事务,提交和回滚的方法。
下面是另一些问题与答案:
1.Hibernate有哪几种查询数据的方式
(1)导航对象图查询
(2)OID查询
(3)HQL
(4)QBC
(5)本地SQL
2.load()和get()的区别
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
get加载方法:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
两加载方法区别:
区 别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代 码如果调用user对象的某个属性(比如user.getPassword())会抛出异 常:org.hibernate.ObjectNotFoundException;
区别2:load支持延迟加载,get不支持延迟加载。
也就是说:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。
而:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。
注意:
Java代码
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());
上 面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但 是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。
3. Hibernate工作原理及为什么要用?
原理:
1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
为什么要用:
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
4. Hibernate是如何延迟加载?
1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)
2. Hibernate3 提供了属性的延迟加载功能
当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
5. Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)
类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、
5. 说下Hibernate的缓存机制
1. 内部缓存存在Hibern
[3]Data类型的Url
所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些“小”的数据,可以在网页中直接嵌入,而不是从外部文件载入。
data格式的Url最直接的好处是,这些Url原本会引起一个新的网络访问,因为那里是一个网页的地址,现在不会有新的网络访问了,因为现在这里是网页的内容。这样做,会减少服务器的负载,当然同时也增加了当前网页的大小。所以对“小”数据特别有好处。
data类型的图片格式为:
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAg...省略N个字节"/>
data类型的url有以下几种形式:
data:,<文本数据>
data:text/plain,<文本数据>
data:text/html,<HTML代码>
data:text/html;base64,<base64编码的HTML代码>
data:text/css,<CSS代码>
data:text/css;base64,<base64编码的CSS代码>
data:text/javascript,<Javascript代码>
data:text/javascript;base64,<base64编码的Javascript代码>
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
data:text/plain,<文本数据>
data:text/html,<HTML代码>
data:text/html;base64,<base64编码的HTML代码>
data:text/css,<CSS代码>
data:text/css;base64,<base64编码的CSS代码>
data:text/javascript,<Javascript代码>
data:text/javascript;base64,<base64编码的Javascript代码>
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
data类型的url已经得到了大部分浏览器支持,IE除外。
本文链接
最新技术文章: