71.Tomcat访问项目带了“项目名称”。
最简单的办法,是把这个项目部署到“root”目录,据boss所说,阿里的每一个项目,都单独放到1个Tomcat的root下。
但是,我们的实际项目遇到了一些问题。
Front项目,前端系统
Backend项目,后端管理系统
CMS与静态资源,前端系统2

由于图片等资源,存的是相对路径,同时需要让Front和Backend都能够访问到图片,我们最后决定把CMS放在Tomcat的root目录下。
项目发布之后,Front项目的访问路径是:http://a.com/Front。
这种路径真的很坑,http://a.com,不能直接访问,我们在CMS系统下增加了一个index.jsp,重定向到http://a.com/Front。

这种真的很烂,但是暂时如此。

其它考虑:
多个客户的项目,可能会部署到一台配置极好的服务器上。
因此,从简化部署的考虑,一个客户只用一个Tomcat,只有一个root,这就是让人纠结的地方。

如果是我的话:
第一种方法,一个客户用2个Tomcat,就是管理稍微麻烦了些。
第二种方法,CMS系统和Front系统合并成为一个,小公司多个项目放在一起,更简单开发和维护。
第三种方法,一个客户用1台配置较低的服务器,开2个Tomcat,甚至多个,Nginx配好。

72.浮点数相乘,元转分,分转换成元。
//Money内部用double,有时对,有时错,不稳定
double a =5.1d;
Money m = new Money(a);
System.out.println(m);

//509.99999999999994,直接坑了
double d = 5.10*100;
System.out.println(d);

//方法一:用BigDecimal的setScale方法,设置“精度”和“舍入模式”。
BigDecimal bd = new BigDecimal(d).setScale(3,BigDecimal.ROUND_UP);
System.out.println(bd.longValue());
System.out.println(bd.doubleValue());

方法二:
public static double mul(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}

方法三:Boss比较倾向于,“元转分”自己实现,但是,不从根本上解决“普通的double相乘问题”,只是解决“元转分”这个特殊的具体问题。
输入:
类型:double
典型值:5,5.0,5.10,5.09,5.011

第1步:转换成统一的格式,5.00,小数点后有2位,第3位之后的,直接舍掉。
第2步:提取整数部分intPart和小数部分doublePart。
第3步:intPart*100+doublePart。

想探究下BigDecimal.multiply和方法三的区别,不过源码没有看懂。

参考资料:
JDK1.6 API文档
http://www.csdn123.com/html/blogs/20130818/55035.htm
小雷粉-爱孔孟

73.模版或视图页面的存放位置。
WebContent目录下的模版文件,可以直接通过url访问到,很可能会泄漏视图部分的源码。
从安全角度考虑,放在WEB-INF目录下比较好。

FTL模版不应该放在WebContent的根目录下。
  外界可以直接访问到,非常危险,
  JSP还相对安全一些,默认会执行,不会直接泄漏源码。
  
74.Freemarker变量最好判断是否存在。
  <#if role?exists && role=="admin">
  如果role不存在,可能会报错,阻碍后面Freemarker代码的执行。
  关于变量是否null和是否存在,挺麻烦的。
  
75.Tomcat配置https。
双向证书参考的是,百度经验上的
http://jingyan.baidu.com/article/a948d6515d3e850a2dcd2ee6.html
经过实践的命令:
 keytool -genkey -v -alias tomcat -keyalg RSA -keystore C:/p2p/tomcat.keystore -validity 365
 
 keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore c:/p2p/mykey.p12
 
 keytool -export -alias mykey -keystore C:/p2p/mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file c:/p2p/mykey.cer 
 
 keytool -import -v -file c:/p2p/mykey.cer -keystore c:/p2p/tomcat.keystore
 
 keytool -list -keystore c:/p2p/tomcat.keystore
 
 keytool -keystore c:/p2p/tomcat.keystore -export -alias tomcat -file c:/p2p/tomcat.cer
 
  <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="c:/p2p/tomcat.keystore" keystorePass="123456"
truststoreFile="c:/p2p/tomcat.keystore" truststorePass="123456" />

单向证书,还没有尝试,找了一篇看起来还不错的
http://forchenyun.iteye.com/blog/473776

在JavaEye上,还搜到了一篇同时有“单向”和“双向”的证书配置教程。
http://juncao2011.iteye.com/blog/973988

据说,某机构发1个HTTPS证书,每年收费7000元,吃人啊。

76.通过本地控制台,连接远程redis-server。
cd /D E:\Mongodb-Redis-Nginx\redis_win\redisbin_x64
redis-cli -h 120.90.56.110 -p 6379

如果服务器上的redis没有设置密码,通过以上命令,可以成功访问。

77.VIM查找命令。
想在Redis中查找注释的密码配置,几百行,实在是懒得一行行往下翻了。
看来还是有必要学习下“查找命令”。
方法:命令模式下,按‘/’,然后输入要查找的字符,Enter。?和/的区别是,一个向前(下)找,一个向后(上)。
参考资料:http://zhidao.baidu.com/link?url=4rSOqYZEPYH9h_B8MRPyVSC9IuTiJGlaVfJYgGU1ir1mXvr_Tu-cFO0aJ5oz8tN6jkqNDqKFh5ei0_dGXIF1H_

78.设置Redis的密码。
通过/requirepass 在第348行找到了密码配置。
348 # requirepass foobared

把密码这种比较常用的配置,放在最后太不科学了,手动在Redis.conf的前几行,增加密码配置:
requirepass xiaolei
redis-cli -h 120.90.56.110 -p 6379 -a xiaolei
参考资料:http://www.iteye.com/topic/1124400

79.hosts文件的位置。
Linux:/etc/hosts
Windows:C:\Windows\System32\drivers\etc\hosts

Windows上直接修改hosts文件,可能会被“QQ电脑管家”之类的安全软件拦截,因为直接修改hosts文件有“安全风险”。

80.数据库字段名和sql映射java属性名转成小写。
  原来是大写的,想改成小写,看起来舒服一点。
  mysql-front,没有自带可以把大写字段“ABC”转换成小写“abc”的工具,只好手动改。
  mybatis中的java字段名称,手动改,太慢了点,可以使用Eclipse的快捷键“Ctrl+Shift+Y”,“大写转小写”。
  “Ctrl+Shift+X”,“小写转大写”,只可惜与QQ拼音输入法的截屏快捷键冲突了,可以手动改一下QQ的截屏快捷键。

2015年工作中遇到的问题:71-80,Tomcat-Redis-浮点数-HTTPS相关推荐

  1. 2015年工作中遇到的问题:61-70

    61.实名认证的故事. 据说,官方公安提供的实名认证接口只有1个,一次调用5元钱. 阿里由于量大,和公安谈判,貌似1元1次. 经过多年,阿里积累了大量的实名认证数据,后来还对外提供了这项服务,一次调用 ...

  2. 截至2015年工作中接触集成过的硬件设备整理记录

    1.仪表设备 1.1.济南金钟:XK3102.XK3102S 1.2.梅特勒托利多:IND880.8142.XK3127.XK3133(T800)-T800-7000-023 1.3.上海耀华:XK3 ...

  3. 2015年工作中遇到的问题:21-30(这10个问题很有价值)

     21.mysql数据库的数据类型numberic和double是不同的. numberic只能表达最长65位精度的定点数 而double可以描述的是允许的值是-1.7976931348623157E ...

  4. 2015年工作中遇到的问题141-150

    141.用一条sql语句查询出"每门"课程都大于80分的学生姓名. Name chengji fengshu 张三 数学 75 张三 语文 81 李四 数学 90 李四 语文 76 ...

  5. Visual Studio 2013或2015工程属性中包含目录和库目录的添加方法,附加依赖项,相对路径

    参考文章:包含目录.库目录.附加包含目录.附加库目录.附加依赖项之详解 https://blog.csdn.net/u012043391/article/details/54972127 参考文章:V ...

  6. iPIN CEO 杨洋:AI 还未被大规模用在工作中,缺的是认知智能

    iPIN CEO 杨洋:AI 还未被大规模用在工作中,缺的是认知智能 本文作者:叨叨 2017-08-06 10:49 导语:如果一个技术不能解决问题,是没有价值的. 雷锋网(公众号:雷锋网)按:8 ...

  7. 谈谈工作中常用的设计模式

    今天跟大家聊聊开发过程中用到的几种设计模式.包括在校招,社招面试的时候都要问到的一些设计模式. 先看文章,如果还是不怎么理解跟明白的话,你可以回头看看这个视频讲解:设计模式详解 面向对象的实现 设计模 ...

  8. 写给我的2015—开启工作新旅程

    前沿: 2015年的总结相比2014年来的晚了很多,原因一方面是今年呀的发现CSDN居然没有了前两年写年终的活动.还有一方面嘛还是自己太懒散了,一直恍恍惚惚的没有下手来总结. 今天,在这小年夜里(ps ...

  9. python在日常工作处理中的应用-Python全栈开发在实际工作中的应用

    2012年,SEO行业分为两派--技术派和理论派,技术派认为应该深入理解搜索引擎工作原理. 学会web开发,这样做SEO才能走得远;理论派则认为只要掌握理论,会不会编程无所谓.当时SEO人员纷纷站队, ...

最新文章

  1. context.xml mysql_在tomcat下context.xml中配置各种数据库连接池(示例代码)
  2. End Credits
  3. 模型蒸馏(Distillation)
  4. 机器学习揭示了人类大脑的新见解
  5. ubuntu下配置华为交换机s2016
  6. sqlplus连mysql库_sqlplus连接服务器的Oracle的经历
  7. python格式化字符串语法_详解Python3 中的字符串格式化语法
  8. 【鬼网络】之DHCP原理与配置
  9. python123第6周答案_Python123测验6: 组合数据类型 (第6周)
  10. Oracle→表、表字段数据类型、表DDL语句、数据DML语句、约束、case...when、decode
  11. hdu 2234(IDA*)
  12. 不是生活所迫,谁特么想努力!
  13. WebGoat系列实验Buffer Overflows Code Quality Concurrency
  14. Linux常用命令总结之(七)mkdir
  15. 递归算法JAVA实现
  16. Ubuntu 入门学习之从安装部署到java环境的安装
  17. JS实现京东表单注册
  18. 不同分子量的PEG衍生物试剂,DSPE-PEG6-Mal
  19. 再度递表港交所,“快”能否成为绿茶餐厅突围的筹码?
  20. 【机器学习基础】EM算法详解及其收敛性证明

热门文章

  1. nodejs -- 使用seneca模块搭建为服务
  2. 抓包分析SSL/TLS连接建立过程
  3. java里面几种锁的区别。。
  4. 你想成为一名核心开发者吗?
  5. EAUML日拱一卒-状态图::基本要素画法
  6. [BZOJ]4180: 字符串计数 SAM+矩阵乘法+二分
  7. linux内核snat分析,Linux2.6.29.6内核netfilter代码中SNAT的过程跟踪
  8. 从 Windows 过度到 Mac 必备快捷键对照表
  9. jQuery1.2选择器
  10. 人脸检测——mAP的含义