《
1人30天44587行代码,分享舍得网开发过程》文章地址:http://www.tfxk.com/zixun/0416364342013.htm
舍得网(shedewang.com)的开发临时告一段落,一个人用时不到1个月,java底层代码16902行,jsp代码27685行,共计44587行。全部开发进程遇到过很多问题,但最后都解决了。下面把我在开发中碰到的所有问题跟解决方法列出,自己程度普通,仅供同寅们参考。
 ,网站开发公司; <property name="hibernate.c3p0.validate">false</property>
5.在%JavaHome%/jre/lib目录下,履行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
Postfix邮件服务器配置和上传图片缩放更是我遇到最艰苦的问题,一言难尽,有兴致的友人可以加MSN:bruce_lau@163.com懂得了解。
体系构架:redhat AS4/apache2.0.59/resin2.1.17/jdk6.0 u2/hibernate3.0/lucene2.2/urlrewrite3.0.4,数据库用得是mysql4.1.15,数据库缓存是构架在hibernate之上的,是一个只有794行的java类,但这个java类却做了数据库对象缓存、列表缓存、update缓冲、主动删除列表缓存,还供给了数据库查询、更新、插入的所有操作,它节俭了我一半以上的开发时光。一个获取含有五个查问前提获取列表的方式只用不到10行代码就能够了。
问题七:IE6/IE7/FF的适配,这体现在许多细节上,如FF的回车事件捕捉,IE7的href=#页面会挪动等等问题上,多测几回,多上网找找也就都解决了。良多人开发网站似乎不太会管FF能不能看,但好歹我也在SP混过几年,做WAP的时候要适配10来款手机,做web适配三五个阅读器不算什么。
<property name="hibernate.c3p0.min_size">20</property>
问题二:jfreecharts在Linux上不能显示中文,这个问题没有费多长时间就解决了,上网一搜就搞定,解决方法如下:
<property name="hibernate.c3p0.max_size">200</property>
问题四:内存泄漏,表示出来的特点是CPU占到99.9%,内存由10%左右经由多少个小时后缓缓涨到50%,最后逝世掉。做java的人晓得,这个问题十分苦楚,而且不很好的解决措施,由于直接看代码很丢脸出来。我本来始终认为问题会呈现在缓存上,但细心想想apache的LRUMap不至于发生内存泄露,尤其我设置了LRUMap最大长度只有10000,10000个内存对象能有多大,后来发明是SmartUpload的问题,改成apache的FileUpload子名目就可以了。另外,我在设置jvm参数时增添了-Xmx2048m -Xms2048m -Xmn768m -Xss512k -XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy这些参数,可以回收年迈区的内存,当初比拟稳固,个别内存占到27%左右就不会再涨了,可能这些参数还不是最优的,有待摸索。另外查找内存泄露的软件JProbe我也玩了玩,确实看出其余代码没有显明内存泄露。
echo 65536 > /proc/sys/fs/file-max
6.重起resin,OK。
问题一:做数据库缓存时遇到的问题。Map在并发遍历时会报ConcurrentModificationException,即便应用Collections.synchronizedList把Map包起来仍是会报这个异样,这个问题很简单,解决办法也简略。第一种解决办法是不要用Map的iterator来遍历,而是用Set(Map.keySet方法)的toArray办法来遍历,这种办法固然会损耗必定的机能和内存,但比在方法前加synchronized好得多;第二种解决办法用jdk5.0当前的ConcurrentHashMap来实现。(我的数据库的缓存用的是apache的LRUMap,用第一种解决办法,第二种解决办法我也筹备好了,随时可以调换)
3.确认/usr/share/fonts/zh_CN/TrueType目录存在,假如不存在则mkdir创立
4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf
<property name="hibernate.c3p0.timeout">3600</property>
费了不少心理才写出来这么写货色,盼望斑竹加个精或者置个顶,谢谢!
2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,从新天生fonts.dir文件
1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf
<property name="hibernate.c3p0.acquire_increment">5</property>
问题六:URL链接“静态化”。本想直接用apache的URL Rewrite来实现,发现不太可能,于是改用urlrewirte实现,配置没什么难度,然而要留神resin的web-app里须增加一行配置<servlet-mapping url-pattern='*.htm' servlet-name='plugin_match'/>,这样apache才会把htm结尾的恳求转交给resin,否则apache报404过错,这在正常structs项目中都会提到。现在看到的舍得网
问题八:linux本身的bug。远程衔接mysql时有时mysql好像会重起,这个问题仿佛是linux自身的bug,似乎和解析有点关联导致mysql瓦解。解决办法:启动mysql增加一个参数,如下:/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-name-resolve &
用ulimit -a 查看,如果看到行open files (-n) 65536就阐明对了
问题三:linux下的too many open files毛病,这个问题比较重大,AS4默认翻开文件数是1024,如果超过这个数,resin就自动down掉了,无比恶心。解决办法如下:
<property name="hibernate.c3p0.idle_test_period",成都最好的网络公司;>300</property>
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
编辑/etc/sysctl.conf 文件,编辑行 fs.file-max = 65536
问题九:hiberate配置文件的问题,配置不好的话老是会报NESTED Exception,或者多用户并发的时候报错。我想一般人都遇到过了,增加一个c3p0的配置段,尤其注意max_statements设置略微大一点,原来我设置为100的时候10个用户同时创建记载就会犯错。
<property name="hibernate.c3p0.max_statements">1000</property>
问题五:搜寻分词。一个用户在用舍得网时反应,看到有“啤酒”和“茅台酒”,为什么搜“酒”搜不出来,起因很简单,成都网站制作,“啤酒”和“茅台酒”是独自一个词,lucene写入的时候没有再把它拆开,所以必需要搜“啤酒”或“茅台酒”才干搜出来,这在技巧上公道,但是用户感到分歧理。所以我改良了搜索算法,把中国3万多个汉字也加到词库中,而且在写入和搜索时用不同的分词算法,如“我喜欢喝啤酒”在写入时会分成“我+爱好+喝+啤酒+喜+欢+啤+酒”,而在搜索时这句话会被分词为“我+喜欢+喝+啤酒”,这样,用户搜“啤酒”能搜到,搜“酒”也能搜到,而对应另外一句话“这人啤气不好,总饮酒”搜“啤”和“酒”都能搜到,但搜“啤酒”却搜不到,似乎有点意思。但是这么分词也会有点小问题,就是搜索的成果不太人道化。(我的中文词库加成语加汉字共50多万个,比起一般网上十来二十万要丰盛得多,不外这没什么大用)
编纂文件/etc/security/limits.conf,增长行 * - nofile 65536
到网高低载一个linux下的ttf字体,本例用的是zysong.ttf
问题十:ajax的应用问题。提交大文本时好像不能用prototype提供的Ajax.Updater,要本人创建一个AJAX对象,而后把内容send从前,详细js代码可以参考舍得网的comm.js,另外用jsp获取Ajax提交的内容如果是乱码,把jsp改成UTF-8编码即可。AJAX运用好了的确可以增加用户感触,而且可以让代码的疏松耦合性更好,可以把一大段逻辑写在一个小的jsp里面。
(责任编辑:网站建设)
1人30天44587行代码,分享舍得网开发过程相关文章