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直接运行过程中,删除这个目录,会导致无法访问。