zoukankan      html  css  js  c++  java
  • 2013年工作中遇到的20个问题:81-100


    81.Spring中注入Filter。
    如果只是为了使用Filter,实际上可以不使用Spring的注入,直接在web.xml中配置就可以了。

    现在出现了新的需求,Filter中用到了Service,需要注入进去。
    web.xml配置一个
        <filter>
            <filter-name>DelegatingFilterProxy</filter-name>
            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
            <init-param>
                <param-name>targetBeanName</param-name>
                <param-value>myFilter</param-value>         //自己过滤器的名字,比如SessionFilter
            </init-param>
            <init-param>
                <param-name>targetFilterLifecycle</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>

        <filter-mapping>
            <filter-name>DelegatingFilterProxy</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    配置过滤器时,一定要注意让合法的请求可以通过。
    第2天,发现Flex调用Java接口的请求被过滤了,导致Flex端无法登录。

    /* 拦截所有的内容,感觉有点多。

    82.Session过期。
    通过配置Filter,可以方便地检查Session是否过期和用户是否登录。
    但是在通过Ajax异步上传文件时,如果此时过期了,此时后台返回值,
    正常情况是“正确”或“错误”,现在变成了“login页面的jsp源码”。

    需要特殊处理。

    关于session等权限检查问题和特殊处理ajax上传文件,待进一步研究。

    83.多数据源获取Hibernate的Session失败。
     出现的异常:对象名table_name不存在。
     实际情况:目标数据库存在table_name这个表。
     
      Session session = getSessionByProjectId(projectId);
     
      多数据源的实现是通过Spring配置的。
     
      大部分功能都没有问题。
     
      在一个多线程的方法中,实现 动态获取Session,执行CRUD操作时,发现
     获取的Session总是默认的Session,而不是根据projectId获取的Session。
     
       后来,把多线程改成了单线程,就可以了。
      
       至于具体原因,不清楚。
      
       教训:尽量不使用多线程。多线程不一定会使程序运行的更快。


      
    84.Spring事务回滚与Dao捕获异常。
     
       原来的代码:
       @Transactional(...配置事务)
        serviceFunction(){
           for(int index=0;index<10000;index++){
           daoFunction();
        }
        }
     
     daoFunction(){
       try{
         //access db
       }catch{
      
       }
     }
     
     问题:如果daoFunction内部发生了异常,Spring也不会回滚事务。
     改进:daoFunction不捕获异常,直接抛出。或者捕获,再抛出异常。


    85.事务与内存。
       代码同上。
         for(int index=0;index<10000;index++){
           daoFunction();
        }
       
        如果dao执行1万次,再提交,可以保证这1万次在同一个事务中。
        如果发生了错误,事务回滚,保证数据正常。
       
        缺点:由于一直没有提交,导致内存占用越来越大。
        MyEclipse会自动进行垃圾回收,线上的服务器应该不会。

    86.查看Hibernate的Session访问的数据库。
       在调试问题83时,想知道Session访问的数据库。
       最开始使用的是:Session.createSQLQuery("show tables").list();
       提示,语法不正确。估计是,Hibernate不支持。
      
       使用下面这个方法是可以的。
       Session.connection().getCatalog()。
      
    87.加速Eclipse和MyEclipse的启动。
       每次打开Eclipse,都提示我是否需要提交一些信息给Eclipse指定的某个网站。
       实在是难以忍受,网上找到了一点技巧。
      
       首选项-General-Startup and Shutdown,把不需要的选项去掉。
       比如,MyEclipse EASIE Weblogic。

    88.PhpMyadmin登录失败。
      登录phpmyadmin提示: #1045 无法登录 MySQL 服务器
     
      根本原因:管理员账号是root,不是admin。
      IE,Firefox,搜狗 3个浏览器使用admin登录几十次都失败。重新安装后,admin也失败。
      我就随手输入了个root,成功了。
      无语啊!


    89.PHP sites-enabled下配置了多个类似的文件,本以为只会读取000-default,实际上
    该目录下的所有文件都当作了配置文件。

    90.http://42.96.184.84/fansunion改为http://42.96.184.84/后,
    首页可以进去,文章和目录页面打不开,而登录功能却可以使用。

    一直以为是虚拟主机没有配置好,我也很奇怪,因为81端口的虚拟主机都是好的。
    后来终于发现,是固定链接需要更新。而.htaccess因为权限不够,不能自动更新。

    91.ubuntu 默认面板恢复命令
       昨天裝了Ubuntu,折腾来折腾去,面板不见了,不是默认的布局了,添加面板不是解決办法。

    Google 了下,解决办法如下:

    打开终端,终端窗口打开之后,立即在提示符后面输入下列命令:
    gconftool --recursive-unset /apps/panel
    (注意:每个斜杠 “/” 后面没有空格)
    接下来输入下列命令:
    rm -rf ~/.gconf/apps/panel
    最后还需要执行:
    pkill gnome-panel
    接下来,Ubuntu 默认的上下两栏面板就会恢复默认值,出现顶部+底部各一面板的默认布局。

    92.在dos环境下,为了将java命令的使用帮助信息放到一个文件中,
    使用标记-复制方法不行,只好换了另外一种方法。
      java>  c:java.txt就可以了
     c盘根目录java.txt就有java的详细使用信息了。
     熟悉dos 命令的使用

    93. 切换到 非C盘目录。
       需要增加 /D 参数
      cd /D J:开发工具Tomcat家族apache-tomcat-6.0.35in

    94.dos命令行复制
       a. 点击标题栏-右键菜单-编辑-标记,选中标记菜单,开始标记。
       b. 选中 黑屏中需要复制的内容,完成标记过程。
       c. 点击标题栏-右键菜单-编辑-复制,完成复制过程,然后就可以粘贴了。

    95.eclipse内存不足
       Eclipse发生内存不足错误时,使用记事本修改eclipse.ini文件是个错误的方法。(换行容易发生错误)

        应该使用notepad++等编辑器打开,修改参数设置,才可以!
     
     运行程序时,报内存溢出,也有可能是Tomcat的内存不够导致的。
     
    96. 环境变量
       新建环境变量JAVA_HOME ,值为C:Program Files (x86)Jave(末尾不能有分号)
        不需要末尾的分号,难道是因为只有一个么.

    97.安装OpenCMS修改MySQL配置。
     提示MySQL的'max_allowed_packet' 太小,需要调大一点。
     修改C:Program Files (x86)MySQLMySQL Server 5.5/my.ini,添加
    max_allowed_packet=167772160(160M),任务管理器-服务-MySQL-重新启动就可以继续安装了。

    98. 把引用到的jar包折叠起来。
      直接把一个包下的文件夹,比如src目录下的lib文件夹里的jar,全部加入到classpath中,
      这些jar包全都显示在 项目列表中,而不是在一个 文件夹下。
     
      而我期待的是 这种形式的:ReferencedJars,点击ReferencedJars,出现jar列表。
     

    99.压缩文件
      JDK自带的有。
       // 声明压缩流对象
            ZipOutputStream zipOut = null;
         
                zipOut = new ZipOutputStream(new FileOutputStream(new File(
                        zipFilePath)));
                for (String file : files) {
                    File file2 = new File(file);
                    // 设置ZipEntry对象
                    zipOut.putNextEntry(new ZipEntry(file2.getName()));
                   // zipOut.setComment("www.fansunion.cn");
                    zipOut.write(FileUtils.getBytesFromFile(file2));

                }
     JODD,Apache Commons Compress也可以,应该是对JDK自带类库的进一步封装。
       

    100. 字符串比较 区分大小写。

      修改一个项目的名称时,把大写改为小写,提示项目名称已存在。
     
      方法一:从数据库查询出字符串与目标字符串 比较。
     
      方法二:修改数据库的信息,修改列属性的排序规则(SQLServer)。
     

    相关阅读

    工作问题 http://blog.csdn.net/FansUnion/article/category/1334371

  • 相关阅读:
    Shell基础:变量类型 & 运算符
    Ant基础入门
    Shell基础:Shell和Mysql交互
    Linux配置邮箱发送(MUTT/MSMTPQ)
    [转载]JMeter源码导入Eclipse
    [转载]Badboy使用教程
    工程目录 Java/Web/Maven
    Maven基础知识和环境搭建
    Github/Eclipse管理Maven项目
    Git分支管理详解
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463681.html
Copyright © 2011-2022 走看看