发表于: 2016-11-12 21:47:48

2 2117


今天完成的事情:项目组自测了一下app和接口,找到了几个bug,接下来,下个星期客户会到公司反馈演示中的问题,准备迎接更大一波的bug吧

遇到的问题:

1.

警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 

'org.eclipse.jst.jee.server:yunbang2' did not find a matching property.启动的时候遇到的

这个知乎的回答解决了这个问题

https://www.zhihu.com/question/22298367/answer/30704992

对应的收获:

1

昨天关于tomcat的启动问题,还有错误

http://www.cnblogs.com/yanghua1012/p/5869192.html


<!-- Context,对应于一个Web App

             path : 该Context的路径名是"",故该Context是该Host的默认Context

             docBase : 该Context的根目录是webapps/mycontext/

             reloadable:如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和

Web-INF/lib目录CLASS文件的改变.如果监视到有class文件 被更新,服务器自重新加载Web应用-->


也就是说配置对应属性,那么tomcat就会根据class文件的改变自动重新加载,我在查看对应tomcat的配置

server.xml的时候发现他们没有配置context节点,但是可以启动tomcat同级目录的项目

下面的blog就提到了这种项目配置情况

http://blog.csdn.net/zou_hailin226/article/details/19152103

原因是在tomcat/conf/目录下配置了/catalina/localhost/yunbang.xml

在这个yunbang.xml中配置了项目的启动信息

<?xml version='1.0' encoding='utf-8'?>

<Context crossContext="true" debug="5" displayName= "yunbang" docBase= "/root/yunbang" path= 

"/yunbang" reloadable="true" workDir= "work\Catalina\localhost\yunbang" >

</Context>


<!-- Context,对应于一个Web App

    crossContext="true"  表示配置的不同context共享一个session

    debug="5"

    displayName= "yunbang"

             docBase : 应用程序的路径或者是WAR文件存放的路径是/root/yunbang

             path : 表示此web应用程序的url的前缀是yunbang

             reloadable="true" 当web.xml或者class有改动的时候都会自动重新加载不需要从新启动服务,也就


是说如果修改class文件,该项目是可以自动重启的,前面没有看到效果,并且得出错误结论的原因可能是因为修改


class文件之后直接kill -9 相应进程,所以没有看到tomcat自动重启

workDir= "work\Catalina\localhost\yunbang" 指的是存放jsp运行时转换为servlet后生成的.java

文件和.class文件的目录,

               -->

这个blog对workDir和docBase进行了解释

http://blog.csdn.net/melody_susan/article/details/50617289


2.

Communications link failure

通信链路故障

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received 


any packets from the server.

成功发送到服务器的最后一个数据包是 0 毫秒前。该驱动程序没有收到服务器的任何数据包。


https://zhidao.baidu.com/question/327405477043411485.html

百度到了这个

上面这个回答提到了mysql服务器空闲时间超过8小时会断开该链接,然而连接池认为这个连接是有效的,结果导致


错误,这里涉及到了连接池,我还听说过线程池,对象池,缓存池(我了解到的是一个静态类,然后使用map来实现

收获2:

Java获取IP地址:request.getRemoteAddr()

servlet、request、response、虽然每天都在用,但是脑子里面没有一个清晰的概念,这也是一个大坑


3.

Map map 和Map<Object,Object> map

一查才知道后者是map的泛型用法,平常使用的时候根本没有注意到

http://www.cnblogs.com/lwbqqyumidi/p/3837629.html

关于泛型是否影响性能

http://www.educity.cn/wenda/368593.html

上面那个连接中的回答

泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,

还原成没有泛型的代码,所以网上说java用泛型比不用泛型速度慢7倍纯属无稽之谈,顶多编译速度稍微慢一些,执

行速度是完全没有什么区别的.

在泛型这里 Object 就只表示Object 不能表示所有对象

5.

序列化Serializable

百度百科的解释:将对象的状态信息转换为可以存储或传输的形式的过程

自己的理解,序列化可以是数据在传输的时候不失真

serialVersionUID是干啥的

百度找到的:Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的,

serialVersionUID有两种显示的生成方式:一个是默认的1L,比如:private static final long serialVersionUID = 1L;       

一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段

eclipse中如果Serializable接口但是没有写serialVersionUID,就会报一个warring,当然java序列化机制会自动生成serialVersionUID,所以没有指定他并不会出现error



返回列表 返回列表
评论

    分享到