• 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

  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463680.html
Copyright © 2020-2023  润新知