觉悟吧,少年!

——认真编码,认真生活!

Java web开发问题整理

背景

近期开发过程中的简单问题,整理一下。

数据库字段类型选择

数据库设计过程中,选择合适的类型,可以极大提高磁盘空间的利用率。使用TokuDB数据库引擎的某张表的主键,由原来的128位的varchar类型,改为bigint类型后,相同数据规模下,发现数据库文件大小减少了一半。

效果非常明显:原来一亿条记录的字符串主键类型,需要7G左右磁盘空间,改为数值存储后,只需要3G左右的磁盘空间,大大减少了磁盘消耗。

启示:字段类型按需选择,MySQL的客户端HediSQL在编辑表字段时,可以看到各种类型所表示的数据范围。hour类型可以选择tinyint,端口类型smallint(正好跟端口号的0-65535一致)。还有其他的时间字段,字符串最大20即可。

Tomcat连接池问题

使用Tomcat数据源配置后,Java Web启动过程中会报mysql驱动jar包找不到,虽然已经将jdbc驱动添加到项目的lib目录下了,但是还是出现这个问题。

原因是Tomcat数据源是依赖jdbc的jar包的,所以还必须将其放在tomcat的lib目录下。但是使用其他数据源,就不需要再放在tomcat的lib目录了。

Spring配置文件

我们使用SpringMVC时,需要在web.xml中添加两个配置信息,SpringMVC的初始化配置信息和Spring的配置信息:

<!-- 初始化spring配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath*:config/applicationContext.xml
        </param-value>
    </context-param>
<!-- spring MVC初始化 -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:config/applicationContext-mvc.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

applicationContext-mvc.xml和applicationContext.xml文件,他俩的区别和联系是什么呢?前者是SpringMVC的初始化配置信息,后缀是Spring的Bean配置文件。

Spring作为一个Bean工厂,它需要管理所有配置的bean的信息,项目中所有需要的Bean都应该在该文件中定义,如果配置文件过多,可以分别写多个xml文件,然后在applicatonContext.xml使用resource标签引入,但是必须保证引入路径的正确。

SpringMVC,作为一个MVC框架技术,它的配置文件中主要是DispatcherServlet所需要的bean的配置,并利用它们来处理Request请求和生成相应的视图返回。

摘要算法的选择

项目中的密码存储方式是MD5摘要的16进制格式的数据,但是据说MD5算法已经被破解了,所以更换了另一种摘要生成算法SM3。

摘要算法,是不可逆的,并不存在解密之说,在数字签名中使用MD5,是为了保证数据的真实性、不可抵赖的特性。而加密算法的作用才是保证数据的完整性,通常加密算法都是可逆过程,需要解密得到明文数据的。

启示录

检查代码时发现一个单独配置spring-mail.xml中的Bean的定义又在applicationContext.xml文件中定义了一遍,而该文件中已经用resource引入了spring-mail.xml配置文件,但是被注释掉了。

仔细一看,才发现被注释掉的resource的配置路径错误了,修正后并删掉applicationContext.xml中关于spring-mail的bean配置,直接通过文件引用就可以了。

解决这个遗留问题后,就想到了spring和springMVC配置文件直接的区别和联系了。自己想想就想明白它们的区别和作用的。编码时间久了,有写技术用着用这顺带知其所以然了。书读百遍,其义自见,大概就是这种体验吧!

此外,喝水的时候果真不能思考,否则会忘记喝水而被呛着的,这也是程序员一大风险!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wojiushiwo945you/article/details/78011220
文章标签: java web
个人分类: 简单东西
上一篇Java web应用中的安全问题整理
下一篇文档和配置管理基础
想对作者说点什么? 我来说一句

java web开发中常遇到的问题

2012年12月10日 47KB 下载

javaweb开发必备源码整理

2016年08月18日 5.24MB 下载

没有更多推荐了,返回首页

关闭
关闭