橘子洲烟花

        9月24晚上,橘子洲中秋放烟花啦,可惜这次观看位置是杜甫江阁对面,预约杜甫江阁现在需要会员,滴滴滴表示现充会员也不行—-失败,而且交通管制,在滴滴师傅的指点下到了这个也很棒的位置。


路上比较堵车,万幸提前3分钟赶到,烟花表演20分钟,视频由笑笑提供,hhhhhh我真是个懒鬼。烟花很漂亮,回来的路上有微风,迎面走过去很舒服

Spring接口容器加载配置文件

去年记得有一次面试,提问Spring装载Bean和初始化的问题,回答的并不好。重新整理下思路。

首先先从加载Spring配置文件说起。

1     ApplicationContext  接口容器
ApplicationContext 接口用于加载Spring配置文件,实现类为ClassPathXmlApplicationContext  和  FileSystemXmlApplicationContext,如下图:

a、配置文件在类路径下
b、配置文件在本地目录
c、配置文件在项目跟路径下
2     BeanFactory 接口容器
BeanFactory 接口是 ApplicationContext接口的父类

一般使用 XmlBeanFactory 实现类 加载 Spring 配置文件
XmlBeanFactory的结构:

参数Resource 是接口,有两个实现类:

ClassPathResource : 指定类路径下的资源文件
FileSystemResouce : 指定项目根路径或本地磁盘路径下的资源文件
在创建了 BeanFactory 容器后,通过使用 getBean() 方法,从容器中获得指定的 Bean 对象
编写测试代码举例(spring配置文件我放在了src/resource目录下):

 

3    […] Continue Reading…

Hibernate报错: java.lang.ClassCastException: pojo.Student_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy

今天滴滴滴在温故关于Hibernate的查询语法:Query的 list() 与iterate() 时
编写测试代码报错:javassist_0 cannot be cast to javassist.util.proxy.Proxy

hibernate_javassist报错

查阅很多资料 大概有三种解决方法:

1.在web.xml中配置 filter

<filter>
       <filter-name>openSessionInView</filter-name>
      <filter- class>             org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
    […] Continue Reading…

Stream类分析

先认识一个概念:流
流是数据流向某个对象,并且到达这个对象的过程
流式输入/输出是一种很常见的输入和输出方式。认识这一个概念,需要我们用使用、认识计算机的角度,如:输入流代表从外设(比如键盘)流入计算机内存的数据序列;输出流代表从计算机内存流向外设(比如显示器)的数据序列

根据数据类型的不同,流分为两类:字节流(Byte流),可以依次读写8位二进制数,如 InputStream 和 OutputStream 类;字符流(Character流),可以一次读写16位二进制数,如 Reader 和 Writer

他们都是抽象类。下面看看他们的结构层次:

InputStream 类层次结构图

 

OutputStream 类层次结构图 Reader类层次结构图 Writer类层次结构图

 

单例、多例与线程安全问题

单例与多例问题是指,当多个用户访问某个类时,系统是为每个用户创建一个该类实例,还是整个系统无论多少用户访问,只创建一个该类实例。

线程安全问题是指,多个用户同时在访问同一个程序时,其对于某一数据的修改,会不会影响到其他用户中的该数据。若无影响,则是线程安全的;若有可能影响,则是线程不安全的。

现在对HttpServlet、HttpSession、Struts2中的Action、Hibernate中的SessionFactory与Session,进行总结。
(1)HttpServlet
单例。即无论多少用户访问同一个业务,如LoginServlet,Web容器只会创建一个该Servlet实例。而该实例是允许多用户访问的。
若Servlet中包含成员变量,则每个用户对于成员变量的修改,均会影响到其他用户所看到的该变量的值,所以这时是线程不安全的。若不包含成员变量,则是线程安全的。
(2)HttpSession
多例。Web容器会为每个用户开辟一个Session,多个用户会有多个Session。而每个用户只能访问自己的Session。所以,对于Session来说,就不存在并发访问的情况,也就不存在线程安全的问题了。所以可以说是线程安全的。
(3)Struts2的Action
多例。对于同一个业务,例如LoginAction,系统会为每一个用户创建一个LoginAction的实例,并使其成员变量username与password接收用户提交的数据。同一用户只能访问自己的Action。所以,对于Action来说,就不存在并发访问的情况,也就不存在线程安全的问题了。所以可以说是线程安全的。
(4)Hibernate的SessionFactory
单例。无论多少用户访问该项目,系统只会创建一个SessionFactory对象,即这个对象是可以被所有用户访问的。
SessionFactory实现类中所包含的成员变量基本都是final常量,即任何用户均不能修改。所以,也就不存在用户的修改对其他用户的影响问题了,所以是线程安全的。
(5)Hibernate的Session
多例。系统会为每个用户创建一个Session。
Session的实现类中定义了很多的非final成员变量,一个事务对成员变量所做的修改,会影响到另一个事务对同一数据的访问结果,所以是线程不安全的。