zoukankan      html  css  js  c++  java
  • 2014年工作中遇到的20个问题:61-80

    61.mysql的tinyint(1)会被转换成java的boolean类型。
    mysql某个字段method,有0、1、2三种类型的值,为了节约存储,使用的是tinyint(1) unsigned,
    结果转换成bool之后,存放到map中,在页面中显示的时候,1显示为true,0没有显示出来,期待的显示结果应该是“false”。


    通过这个结果,可以推断在Freemarker中,${true}显示“true”,${false}显示为空。
    经过实际测试,发现上述推断是正确的,这应该是Freemarker自身的规定。


    修改method的字段为int(1) unsigned就好了。


    62.Spring配置字段,获得的url值竟然不能通过浏览器正常访问。


    "http://funds.yiqihao.com:8080/funds/bankCard/bankCardList.html "
    "http://login.yiqihao.com:8080/login-center/login.html "


    <bean class="com.p2p.base.interceptors.BaseLoginInterceptor">
    <property name="loginCenterUrl">
    <value>http://login.yiqihao.com:${p2p.port}/login-center/login.html
    </value>
    </property>
    <property name="loginBackUrl">
    <value>http://funds.yiqihao.com:${p2p.port}/funds/bankCard/bankCardList.html
    </value>
    </property>
    </bean>


    这种配置,没有登录时,访问会被拦截,跳转到登录页
    “http://login.yiqihao.com:8080/login-center/login.html%20?backUrl=http://funds.yiqihao.com:8080/funds/bankCard/bankCardList.html”
    login.html后面出现了多余的"%20",“20%”其实就是一个“空格”。


    改成下面的配置就可以了<value></value>不换行。
    <property name="loginCenterUrl">
    <value>http://login.yiqihao.com:${p2p.port}/login-center/login.html</value>
    </property>

    63.Maven有两个项目,Funds依赖Base。
    调试Funds的时候,不能直接调试Base项目的代码,在提示找不到源代码,提示“Edit Source Path”时,把Base项目加入到路径中就可以了。




    64.Git同步代码。
    #测试机-打包部署
    cd /var/opt/p2p_git_source 
    #需要一个参数,指定目标目录,$1的含义是第一个参数
    ./cpP2PWar.sh ~/tomcat7/webapps
    cpP2PWar.sh 脚本中 有git命令 "git clone http://git.yiqihao.com/yiqihao/p2p.git"
    git clone应该是把代码同步到当前目录下。


    为了简化,我想使用绝对路径执行这个脚本文件。
     ~/git-source/cpP2PWar.sh ~/tomcat7/webapps
     
     结果发现代码没有更新,从p2p文件夹的时间看得出来。
     
     猜测原因:“绝对路径执行cpP2PWar.sh,同步的代码不是cpP2Pwar.sh所在的目录”。
     
     后来再次绝对路径执行cpP2PWar.sh,发现代码更新了。
     
     最终现象:“绝对路径执行cpP2PWar.sh”,有时候代码没有更新。
     原因:不明
     
     -----------------------
     最终结论:git命令 "git clone http://git.yiqihao.com/yiqihao/p2p.git"同步代码的位置是相对于“执行git命令的路径”,
     使用绝对路径时,也是相对于命令所在的路径,比如直接登录系统后,路径是“用户根目录”"~",那么同步的代码p2p就位于
     "~/p2p"。


    65.Tomcat的shutdown.sh并没有正常完全停止。
    ps -ef|grep tomcat
    ps -ef|grep java
    发现残留的有apache-activemq等进程。


    66.一个域名可以对应很多个不同的系统。
    taobao.com一个网站,后台系统有几百个,通过Nginx和Url规则分配到不同的系统中。


    67.前后端分离
    理想情况是,前端的系统都是html、css、js文件,通过ajax与后台交互。
    但是开发起来效率不够高,最终开发的时候,还是把html文件放到了后台。
    没有做到完全分离。




    68.Tomcat设置参数
     JAVA_OPTS="$JAVA_OPTS -Dp2p.config_path=file:/home/git-source/p2p/ -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"
     
     更多Java_OPTS的参数可以参考: http://zhaotao110.blog.sohu.com/207472216.html
     
     -D设置系统属性
     
    69.使用盛付通充值的时候,需要带一个OrderNo订单号参数。
    由于换了办公位置,分配了新的服务器,导入了以前备份的数据,结果重新充值时,订单号与之前的重复了,导致
    盛付通提示“订单号重复,不能充值”。
    OrderNo:以前是用数据库自增id作为订单号的,模拟的。


    70.仿照Leader写的例子,发现结果却不一样。
     通过“对比”,即初中物理实验经常用到的“控制变量法”,来发现问题。


    71.Shell定义变量。
     好久没有写简单的Shell脚本了,今天写了个“ path = ~/p2p/source”竟然提示,"path:command not found,path不可知的命令。
     网上看了好几个答案,都是这样赋值的额。
     在看第N个答案的时候,突然意识到"="两边是没有空格的,去掉两边的空格再次执行,成功运行。
     原来在学习Linux的时候,有这么一点“意识”,要不然很难会突然想到是这么个情况。
     “灵感”也不是随随便便就蹦出来的,之前的积累还是蛮有用的。


    72.mysql自动增量。
      mysql自动增量必须大于表中id字段的最大值。
      比如 id 1,id 2,id 3
      那么这个表的自动增量至少是4。
      如果id 1,id 2, id 100,id 101,
      那么自动增量至少是102.


    73.互联网项目要注重性能。
       数据库的核心功能的存储数据和查询,left join不是主要功能。
       为了性能,使用单表查询。(开发慢,性能高,稳定性强)
       left join量大之后,稳定性不好。
       
       数据库一般只有一台,很容易成为瓶颈。
       而Web系统可以使用分布式部署多台。


        
    74.Freemarker中的FTL判断Bean类型有点“问题”。
    class Page extends ArrayList{} #{page} 会被当作ArrayList
    class PageVo extends HashMap{}  #{pageVo}会被当作Map


    75.Nginx的Location配置不能带具体的url
    location / {
       proxy_pass http://localhost:8080/xiaolei ;
    }


    需要把Java项目“xiaolei”部署到Tomcat的根目录ROOT下。


    能否把Tomcat部署到非ROOT目录下么?webapps/xiaolei 这样行么?
    这样的话,应该要配置Tomcat的虚拟主机才行。


    76.写Tomcat部署脚本的时候,最好把旧的目录和war包删掉,免得出现不正常的情况。


    77.SpringMVC Controller方法接收Web请求参数。
    符合类型接收参数有技巧:
    Bean{
      string name;
      Map params;
      List<Map<String,Object> list;
      Person person;
    }
    <input name="name"/>
    <input name="params[status]"/>
    <input name="list[0][name]"/>
    <input name="person.age"/>


    2013年第140个问题,和这个类似,都是请求参数相关的。


    78.Tomcat监听8080端口,如果再启动Tomcat,会报“端口被占用”的错误。
    而在Tomcat监听8080端口的情况下,再启动Jetty,Jetty不会报“端口被占用”的错误。
    只不过,访问运行在Jetty里的项目的URL,访问不到,只是404而已。
    关闭Tomcat,再访问URL,就可以显示出来了。


    79.把Tomcat下的.war包删除,结果解压后的文件也没有了。


    80.Tomcat有时会缓存内容,可以删除TOMCAT_HOME/work/Catalina下的文件,再重启。
    Tomcat直接运行过程中,删除这个目录,会导致无法访问。
  • 相关阅读:
    QT下载速度慢的解决方法
    第七章 多态
    第六章 重复运用class
    第五章 隐藏实现细节
    代码改变世界
    第四章 初始化和清理
    第三章 控制程序流程
    module.exports和exports
    如何与外部源交互
    实现POST服务器
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463176.html
Copyright © 2011-2022 走看看