- 浏览: 125854 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
弦月001:
楼主目前对jcifs还记得吗?我目前在做jcifs sso研究 ...
JCIFS支持多域的SSO -
jusescn:
effort.mjb 写道博主好,请问怎么样才能直接获取到当前 ...
JCIFS支持多域的SSO -
effort.mjb:
博主好,请问怎么样才能直接获取到当前客户端的用户的域信息呢?( ...
JCIFS支持多域的SSO -
jusescn:
yingzhor 写道博主,您好。 如果,我想扩展一下,如果客 ...
JCIFS支持多域的SSO -
yingzhor:
博主,您好。 如果,我想扩展一下,如果客户端不再域内,直接把请 ...
JCIFS支持多域的SSO
http://www2.matrix.org.cn/thread.shtml?topicId=9d26c084-f245-11dc-9424-a7e8ce8f8823&forumId=14
1人30天44587行代码,分享舍得网开发经验【修订版】
我用心写这么高水准的帖子,应该置顶才对。该帖在原来的基础上做了修正和增加。
舍得网(shedewang.com)的开发暂时告一段落,一个人用时不到1个月,java底层代码16902行,jsp代码27685行,共计44587行。整个开发过程遇到过许多问题,但最后都解决了。下面把我在开发中遇到的所有问题和解决办法列出,供参考。
系统构架: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行代码就可以了。【增加:现在我已经把这个数据库操作工具改成分布式了,可以随便增加java应用服务器实现负载均衡,并且各服务器之间可以实现缓存同步,这样,即使每日用户达到百万级别,我的构架也是可以支持的,我将在下面详细说明我的构架,仅供参考。许多人要求我开源,我觉得现在系统还没有经过大规模用户的并发验证,还不是时候,以后我会考虑开源的,我的代码没有太多高深的算法和设计模式,主要用到了模板模式,但全是用心写出来的。
问题一:做数据库缓存时遇到的问题。HashMap在并发遍历时会报ConcurrentModificationException,即使使用Collections.synchronizedList把Map包起来还是会报这个异常,这个问题很简单,解决办法也简单。第一种解决办法是不要用Map的iterator来遍历,而是用Set(Map.keySet方法)的toArray方法来遍历,这种办法虽然会损耗一定的性能和内存,但比在方法前加synchronized好得多;第二种解决办法用jdk5.0以后的ConcurrentHashMap来实现。【修正:经过测试和验证,第一种方法不行,也就是并发操作MAP而且要求遍历的时候只能用ConcruuentHashMap,在此要感谢写ConcurrentHashMap的专家们。】【增加:数据库的缓存有很多种办法,对于单个对象的缓存比较容易,直接用HashMap都可以,但是对于列表的缓存就比较复杂了,网上说到的memcachedb+memcache_engine或者berkeleydb应该都是做不到列表自动缓存,因为增加一条记录后会影响许多列表的排序,所以什么时候删除列表缓存是个比较头痛的问题,我的解决办法是列表的缓存的key便包含了查询条件信息。如一个表T有字段A,B,C,对应T.java有域A,B,C,那么查询一个A=1 and B=2 and C> 0 的组合条件的列表的key就是A=1#B=2#C> 0,这样,如果增加了一个对象T,其中T.A=1,T.B=3,T.C=0,显然上面列表查询条件包含了条件B=2,而增加的对象B=3,那么无论如何这个新增加的对象T都不可能在这个列表中,也就是说不用删除这个列表,只有增加的对象T满足T.A=1、T.B=2、T.C> 0时该列表才需要重新从数据库中获取,以此可以推出更新、删除一个T对象时什么时候需要删除什么列表。】【增加:至于分布式,我用到了memcached来做远程缓存,利用UDP报文来保持各服务器之间的缓存同步。如获取一个对象:首先在本机缓存中获取,如果没有再去远程memcached server中获取,如果还没有才从数据库中获取并同时放入memcached server 和本机缓存,这样,不管有多少台服务器在做负载均衡,对于一个对象T,只需要在数据库中读取一次,其他所有服务器都可以共享了,数据库查询的压力几乎没有,当然如果插入和修改的次数达到每秒几千次,我可能会用到mysql-proxy,但目前看来,几十万的用户/天的量都用不着,用个好点的数据库服务器即可】【不谦虚的说,我的这套分布式缓存方案是比较强大的,都是用心写出来的,虽然代码只有2874行。实例:如要获取一个id为6789的用户,只要用User u =UserManager.getInstance().getById("6789");一句话即可,所有缓存逻辑都已经包含在里面了。】
问题二:jfreecharts在Linux上不能显示中文,这个问题没有费多长时间就解决了,上网一搜就搞定,解决方法如下:
到网上下载一个linux下的ttf字体,本例用的是zysong.ttf
1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf
2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,重新生成fonts.dir文件
3.确认/usr/share/fonts/zh_CN/TrueType目录存在,如果不存在则mkdir创建
4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf
5.在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
6.重起resin,OK。
问题三:linux下的too many open files错误,这个问题比较严重,AS4默认打开文件数是1024,如果超过这个数,resin就自动down掉了,非常恶心。解决办法如下:
echo 65536 > /proc/sys/fs/file-max
编辑/etc/sysctl.conf 文件,编辑行 fs.file-max = 65536
编辑文件/etc/security/limits.conf,增加行 * - nofile 65536
用ulimit -a 查看,如果看到行open files (-n) 65536就说明对了
问题四:内存泄露,表现出来的特征是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我也玩了玩,的确看出其他代码没有明显内存泄露。【修正:上面的参数配置狗P用都没有,内存总是一直在涨。我还尝试了用其他不同方法去回收内存,结果都不太好使,直接用jvm默认的回收方式是最好的,也就是只配置两个参数-Xmx768M -Xms768M效果最好,这样java才真的可以一次性回收几百兆的内存。】
问题五:搜索分词。一个用户在用舍得网时反映,看到有“啤酒”和“茅台酒”,为什么搜“酒”搜不出来,原因很简单,“啤酒”和“茅台酒”是单独一个词,lucene写入的时候没有再把它拆开,所以必须要搜“啤酒”或“茅台酒”才能搜出来,这在技术上合理,但是用户觉得不合理。所以我改进了搜索算法,把中国3万多个汉字也加到词库中,而且在写入和搜索时用不同的分词算法,如“我喜欢喝啤酒”在写入时会分成“我+喜欢+喝+啤酒+喜+欢+啤+酒”,而在搜索时这句话会被分词为“我+喜欢+喝+啤酒”,这样,用户搜“啤酒”能搜到,搜“酒”也能搜到,而对应另外一句话“这人啤气不好,总喝酒”搜“啤”和“酒”都能搜到,但搜“啤酒”却搜不到,似乎有点意思。但是这么分词也会有点小问题,就是搜索的结果不太人性化。(我的中文词库加成语加汉字共50多万个,比起一般网上十来二十万要丰富得多,不过这没什么大用)
问题六:URL链接“静态化”。本想直接用apache的URL Rewrite来实现,发现不太可能,于是改用urlrewirte实现,配置没什么难度,但是要注意resin的web-app里须增加一行配置 <servlet-mapping url-pattern='*.htm' servlet-name='plugin_match'/> ,这样apache才会把htm结尾的请求转交给resin,否则apache报404错误,这在一般structs项目中都会提到。现在看到的舍得网http://shedewang.com/pg_5_c_2_index.htm,其实就是http://shedewang.com/index.jsp?pg=5&c=2,呵呵,没什么特别的。
问题七:IE6/IE7/FF的适配,这体现在许多细节上,如FF的回车事件捕获,IE7的href=#页面会移动等等问题上,多测几次,多上网找找也就都解决了。很多人开发网站似乎不太会管FF能不能看,但好歹我也在SP混过几年,做WAP的时候要适配10来款手机,做web适配三五个浏览器不算什么。
问题八:linux自身的bug。远程连接mysql时有时mysql似乎会重起,这个问题似乎是linux自身的bug,好像和解析有点关系导致mysql崩溃。解决办法:启动mysql增加一个参数,如下:/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-name-resolve &
问题九:hiberate配置文件的问题,配置不好的话总是会报NESTED Exception,或者多用户并发的时候报错。我想一般人都遇到过了,增加一个c3p0的配置段,尤其注意max_statements设置稍微大一点,原来我设置为100的时候10个用户同时创建记录就会出错。
<property name="hibernate.connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider </property>
<property name="hibernate.c3p0.max_size"> 200 </property>
<property name="hibernate.c3p0.min_size"> 20 </property>
<property name="hibernate.c3p0.timeout"> 3600 </property>
<property name="hibernate.c3p0.max_statements"> 1000 </property>
<property name="hibernate.c3p0.idle_test_period"> 300 </property>
<property name="hibernate.c3p0.acquire_increment"> 5 </property>
<property name="hibernate.c3p0.validate"> false </property>
问题十:ajax的运用问题。提交大文本时似乎不能用prototype提供的Ajax.Updater,要自己创建一个AJAX对象,然后把内容send过去,具体js代码可以参考舍得网的comm.js,另外用jsp获取Ajax提交的内容如果是乱码,把jsp改成UTF-8编码即可。AJAX运用好了的确可以增加用户感受,而且可以让代码的松散耦合性更好,可以把一大段逻辑写在一个小的jsp里面。
问题十一:网上似乎还有很多人在为自己选择应用服务器的事发愁,我只相信自己的眼睛,就拿tomcat6最新版和resin2.1.17做测试,50个用户并发的情况下tomcat慢4-5倍,我还能指望tomcat在更多的用户并发下发挥作用吗?我用resin2.1.17,很快!resin3 和resin Pro只有在配置好缓存和native的时候可能才有用,但对于我这种情况,用resin3和resin Pro不一定会更快。
做技术、做管理、做事都是在做人,有很多刚入门的新手,好多人都问我到底用struts还是spring还是什么MVC构架,其实这些都不是问题,只要养成自己的一套开发方式即可,但做技术要有深厚的基本功。像一个武林高手,就拿李小龙来说,他懂空手道、跆拳道、刀枪钯棍都研究过,但真正打架的时候就那么几招,但他有力量、脚步和无与伦比的速度,这些都是基本功;对于篮球高手来说,他甚至不需要懂街球那些花骚的玩法,但实战的时候他也就用几招而已,像科比,他最常用的就是远程投篮和突破,真正打球时没必要在地上一边打滚一边运球,当然,科比也是非常有力量的一个球员。
email:bruce_lau@163.com,欢迎指教!
1人30天44587行代码,分享舍得网开发经验【修订版】
我用心写这么高水准的帖子,应该置顶才对。该帖在原来的基础上做了修正和增加。
舍得网(shedewang.com)的开发暂时告一段落,一个人用时不到1个月,java底层代码16902行,jsp代码27685行,共计44587行。整个开发过程遇到过许多问题,但最后都解决了。下面把我在开发中遇到的所有问题和解决办法列出,供参考。
系统构架: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行代码就可以了。【增加:现在我已经把这个数据库操作工具改成分布式了,可以随便增加java应用服务器实现负载均衡,并且各服务器之间可以实现缓存同步,这样,即使每日用户达到百万级别,我的构架也是可以支持的,我将在下面详细说明我的构架,仅供参考。许多人要求我开源,我觉得现在系统还没有经过大规模用户的并发验证,还不是时候,以后我会考虑开源的,我的代码没有太多高深的算法和设计模式,主要用到了模板模式,但全是用心写出来的。
问题一:做数据库缓存时遇到的问题。HashMap在并发遍历时会报ConcurrentModificationException,即使使用Collections.synchronizedList把Map包起来还是会报这个异常,这个问题很简单,解决办法也简单。第一种解决办法是不要用Map的iterator来遍历,而是用Set(Map.keySet方法)的toArray方法来遍历,这种办法虽然会损耗一定的性能和内存,但比在方法前加synchronized好得多;第二种解决办法用jdk5.0以后的ConcurrentHashMap来实现。【修正:经过测试和验证,第一种方法不行,也就是并发操作MAP而且要求遍历的时候只能用ConcruuentHashMap,在此要感谢写ConcurrentHashMap的专家们。】【增加:数据库的缓存有很多种办法,对于单个对象的缓存比较容易,直接用HashMap都可以,但是对于列表的缓存就比较复杂了,网上说到的memcachedb+memcache_engine或者berkeleydb应该都是做不到列表自动缓存,因为增加一条记录后会影响许多列表的排序,所以什么时候删除列表缓存是个比较头痛的问题,我的解决办法是列表的缓存的key便包含了查询条件信息。如一个表T有字段A,B,C,对应T.java有域A,B,C,那么查询一个A=1 and B=2 and C> 0 的组合条件的列表的key就是A=1#B=2#C> 0,这样,如果增加了一个对象T,其中T.A=1,T.B=3,T.C=0,显然上面列表查询条件包含了条件B=2,而增加的对象B=3,那么无论如何这个新增加的对象T都不可能在这个列表中,也就是说不用删除这个列表,只有增加的对象T满足T.A=1、T.B=2、T.C> 0时该列表才需要重新从数据库中获取,以此可以推出更新、删除一个T对象时什么时候需要删除什么列表。】【增加:至于分布式,我用到了memcached来做远程缓存,利用UDP报文来保持各服务器之间的缓存同步。如获取一个对象:首先在本机缓存中获取,如果没有再去远程memcached server中获取,如果还没有才从数据库中获取并同时放入memcached server 和本机缓存,这样,不管有多少台服务器在做负载均衡,对于一个对象T,只需要在数据库中读取一次,其他所有服务器都可以共享了,数据库查询的压力几乎没有,当然如果插入和修改的次数达到每秒几千次,我可能会用到mysql-proxy,但目前看来,几十万的用户/天的量都用不着,用个好点的数据库服务器即可】【不谦虚的说,我的这套分布式缓存方案是比较强大的,都是用心写出来的,虽然代码只有2874行。实例:如要获取一个id为6789的用户,只要用User u =UserManager.getInstance().getById("6789");一句话即可,所有缓存逻辑都已经包含在里面了。】
问题二:jfreecharts在Linux上不能显示中文,这个问题没有费多长时间就解决了,上网一搜就搞定,解决方法如下:
到网上下载一个linux下的ttf字体,本例用的是zysong.ttf
1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf
2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,重新生成fonts.dir文件
3.确认/usr/share/fonts/zh_CN/TrueType目录存在,如果不存在则mkdir创建
4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf
5.在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
6.重起resin,OK。
问题三:linux下的too many open files错误,这个问题比较严重,AS4默认打开文件数是1024,如果超过这个数,resin就自动down掉了,非常恶心。解决办法如下:
echo 65536 > /proc/sys/fs/file-max
编辑/etc/sysctl.conf 文件,编辑行 fs.file-max = 65536
编辑文件/etc/security/limits.conf,增加行 * - nofile 65536
用ulimit -a 查看,如果看到行open files (-n) 65536就说明对了
问题四:内存泄露,表现出来的特征是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我也玩了玩,的确看出其他代码没有明显内存泄露。【修正:上面的参数配置狗P用都没有,内存总是一直在涨。我还尝试了用其他不同方法去回收内存,结果都不太好使,直接用jvm默认的回收方式是最好的,也就是只配置两个参数-Xmx768M -Xms768M效果最好,这样java才真的可以一次性回收几百兆的内存。】
问题五:搜索分词。一个用户在用舍得网时反映,看到有“啤酒”和“茅台酒”,为什么搜“酒”搜不出来,原因很简单,“啤酒”和“茅台酒”是单独一个词,lucene写入的时候没有再把它拆开,所以必须要搜“啤酒”或“茅台酒”才能搜出来,这在技术上合理,但是用户觉得不合理。所以我改进了搜索算法,把中国3万多个汉字也加到词库中,而且在写入和搜索时用不同的分词算法,如“我喜欢喝啤酒”在写入时会分成“我+喜欢+喝+啤酒+喜+欢+啤+酒”,而在搜索时这句话会被分词为“我+喜欢+喝+啤酒”,这样,用户搜“啤酒”能搜到,搜“酒”也能搜到,而对应另外一句话“这人啤气不好,总喝酒”搜“啤”和“酒”都能搜到,但搜“啤酒”却搜不到,似乎有点意思。但是这么分词也会有点小问题,就是搜索的结果不太人性化。(我的中文词库加成语加汉字共50多万个,比起一般网上十来二十万要丰富得多,不过这没什么大用)
问题六:URL链接“静态化”。本想直接用apache的URL Rewrite来实现,发现不太可能,于是改用urlrewirte实现,配置没什么难度,但是要注意resin的web-app里须增加一行配置 <servlet-mapping url-pattern='*.htm' servlet-name='plugin_match'/> ,这样apache才会把htm结尾的请求转交给resin,否则apache报404错误,这在一般structs项目中都会提到。现在看到的舍得网http://shedewang.com/pg_5_c_2_index.htm,其实就是http://shedewang.com/index.jsp?pg=5&c=2,呵呵,没什么特别的。
问题七:IE6/IE7/FF的适配,这体现在许多细节上,如FF的回车事件捕获,IE7的href=#页面会移动等等问题上,多测几次,多上网找找也就都解决了。很多人开发网站似乎不太会管FF能不能看,但好歹我也在SP混过几年,做WAP的时候要适配10来款手机,做web适配三五个浏览器不算什么。
问题八:linux自身的bug。远程连接mysql时有时mysql似乎会重起,这个问题似乎是linux自身的bug,好像和解析有点关系导致mysql崩溃。解决办法:启动mysql增加一个参数,如下:/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-name-resolve &
问题九:hiberate配置文件的问题,配置不好的话总是会报NESTED Exception,或者多用户并发的时候报错。我想一般人都遇到过了,增加一个c3p0的配置段,尤其注意max_statements设置稍微大一点,原来我设置为100的时候10个用户同时创建记录就会出错。
<property name="hibernate.connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider </property>
<property name="hibernate.c3p0.max_size"> 200 </property>
<property name="hibernate.c3p0.min_size"> 20 </property>
<property name="hibernate.c3p0.timeout"> 3600 </property>
<property name="hibernate.c3p0.max_statements"> 1000 </property>
<property name="hibernate.c3p0.idle_test_period"> 300 </property>
<property name="hibernate.c3p0.acquire_increment"> 5 </property>
<property name="hibernate.c3p0.validate"> false </property>
问题十:ajax的运用问题。提交大文本时似乎不能用prototype提供的Ajax.Updater,要自己创建一个AJAX对象,然后把内容send过去,具体js代码可以参考舍得网的comm.js,另外用jsp获取Ajax提交的内容如果是乱码,把jsp改成UTF-8编码即可。AJAX运用好了的确可以增加用户感受,而且可以让代码的松散耦合性更好,可以把一大段逻辑写在一个小的jsp里面。
问题十一:网上似乎还有很多人在为自己选择应用服务器的事发愁,我只相信自己的眼睛,就拿tomcat6最新版和resin2.1.17做测试,50个用户并发的情况下tomcat慢4-5倍,我还能指望tomcat在更多的用户并发下发挥作用吗?我用resin2.1.17,很快!resin3 和resin Pro只有在配置好缓存和native的时候可能才有用,但对于我这种情况,用resin3和resin Pro不一定会更快。
做技术、做管理、做事都是在做人,有很多刚入门的新手,好多人都问我到底用struts还是spring还是什么MVC构架,其实这些都不是问题,只要养成自己的一套开发方式即可,但做技术要有深厚的基本功。像一个武林高手,就拿李小龙来说,他懂空手道、跆拳道、刀枪钯棍都研究过,但真正打架的时候就那么几招,但他有力量、脚步和无与伦比的速度,这些都是基本功;对于篮球高手来说,他甚至不需要懂街球那些花骚的玩法,但实战的时候他也就用几招而已,像科比,他最常用的就是远程投篮和突破,真正打球时没必要在地上一边打滚一边运球,当然,科比也是非常有力量的一个球员。
email:bruce_lau@163.com,欢迎指教!
发表评论
-
淘宝技术嘉年华ADC2013主题论坛视频
2013-08-01 13:29 1343业务架构&后端技术 CRM平台架构 http:/ ... -
2012年开春计划-系统调优之路
2012-03-01 10:16 512012年开春计划,今年打算边学边写一点系统优化方法的东西。年 ... -
浅谈企业应用架构
2009-05-06 12:27 731http://www.blogjava.net/AndersL ... -
大型网站架构技术方案集锦
2008-12-26 11:01 4483http://www.cnblogs.com/net205/a ... -
大型网站架构演变和知识体系
2008-09-04 12:14 1052这是一篇简单的,用来入门的。 http://www.blogj ... -
从LiveJournal后台发展看大规模网站性能优化方法
2008-09-04 12:10 877http://blog.zhangjianfeng.com/a ... -
舍得网数据库缓存策略
2008-08-16 22:07 0请把该文贴到自己的博 ... -
好事要做到底,我们需要full stack的设计
2008-07-16 09:19 1072http://www.blogjava.net/OneEyeW ... -
一个Java的Restful服务框架,支持JPA、JAAS、分布式资源对象
2008-06-18 09:48 1640http://www.iteye.com/news/2582 ... -
快速Web开发环境&模板jws-jpt1.0发布
2008-06-18 09:47 1096http://www.iteye.com/news/2589 ... -
大量小文件的实时同步方案
2008-06-18 09:38 2371http://blog.daviesliu.net/2008/ ... -
反模式[中英文版]
2008-06-17 17:47 1536来自Wikipedia, 自由百科 ... -
LinkedIn架构图:99%都是用Java写的
2008-06-14 10:24 5240著名社交网站LinkedIn的Java架构技术,在Java ... -
一种一站式的Java Web框架的设计和实现
2008-05-07 17:16 1749http://zwchen.iteye.com/blog/47 ... -
软件架构
2008-05-04 09:42 919软件架构(software archite ... -
web架构设计经验分享
2008-04-28 13:00 1020本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次 ... -
关于ss3扩展框架
2008-04-07 13:39 1410原文可以去springside的论 ...
相关推荐
标题“舍得网高效数据库缓存”暗示了我们讨论的核心是关于如何提高数据库访问效率,特别是通过缓存技术来实现这一目标。在这个项目中,我们可能会看到如何在Web应用环境中使用缓存策略,如数据的预加载、缓存更新...
舍得网站源代码 更多资源请访问http://www.59186618.com
QQ机器人对话库一开始是很空白的,如你舍得教它说话, 则它可以变得很强大,至少在 网购客服方面是足够需求的。就看你怎么设计对话数据库了。 关于设计对话数据库, 可以看下面说明。 开发工具:VS2008 代码权限...
包含了分布式解决方案,该系统已经应用在舍得网上了,没有发现大问题,本人也相信该系统已经足够强大,应付数百万IP/天的应用都不是问题,我这么说肯定有人会对此表示怀疑,其实系统到底能撑多少IP/天不在于系统本身...
SuperMemo2006 PC版是一个有超强功能的学习工具.与传统的记忆法相比(用卡片帮助记忆),它可以提高最多10-50倍的效率. 也就是说你只用1/10 - 1/50的时间来完成所有的内容,或者在指定的时间内完成10-50倍的记忆内容。这...
描述中的“在清理电脑时不舍得删掉”暗示了这些代码对于个人编程习惯的形成有着重要作用,意味着它们可能是从实践中提炼出的宝贵经验。面向对象基础是Python编程中不可或缺的一部分,它涉及类、对象、封装、继承和...
完整版本代码+文档+注释+说明ssh_project教学互动社区完整版本ssh论坛ssh教学教程要不是毕业好几年我都不舍得分享出来!!! CTRL+D收藏一下或者关注走一波-有你所需!不断更新! 其他相关下载,配套代码以及PPT。...
SuperMemo2006 PC版是一个有超强功能的学习工具.与传统的记忆法相比(用卡片帮助记忆),它可以提高最多10-50倍的效率. 也就是说你只用1/10 - 1/50的时间来完成所有的内容,或者在指定的时间内完成10-50倍的记忆内容。这...
SuperMemo2006 PC版是一个有超强功能的学习工具.与传统的记忆法相比(用卡片帮助记忆),它可以提高最多10-50倍的效率. 也就是说你只用1/10 - 1/50的时间来完成所有的内容,或者在指定的时间内完成10-50倍的记忆内容。这...
SuperMemo2006 PC版是一个有超强功能的学习工具.与传统的记忆法相比(用卡片帮助记忆),它可以提高最多10-50倍的效率. 也就是说你只用1/10 - 1/50的时间来完成所有的内容,或者在指定的时间内完成10-50倍的记忆内容。这...
c#ASP.net大作业游戏资讯网站代码+文档+数据库sql说明+搭建教程+PPT全部完整版本ASP.net大作业游戏资讯网站要不是毕业好几年我都不舍得分享出来!!! CTRL+D收藏一下或者关注走一波-有你所需!不断更新! 其他相关...
"直销人成功的八大心态--直销领袖葛军1年组建9万人团队的秘诀" 本文主要讲述了直销人成功的八大心态,通过葛军老师的分享,了解到成功的秘诀。以下是八大心态的详细解释: 1. 老板心态:老板的眼睛盯着市场,打工...
舍得网支撑1亿pv/天构架,开源了 说是支持1亿pv/天,也许有点夸张,也是为了吸引您能点进来,如果您能认真看完相信也不会让您失望,当然,肯定有很多“高手”会对此会嗤之以鼻,没关系,有很多眼高手低的人总喜欢...
“你怎么舍得我难过.fla”文件是这个Flash项目的源文件,包含了所有图形、动画帧、声音和ActionScript代码。通过打开和分析这个FLA文件,我们可以深入了解每一个元素如何被创建和组织,以及MAV技术、声音处理、引导...
在IT行业中,舍得的哲学同样具有深远的影响。在快速发展的技术领域,我们常常需要面对选择,舍弃一些旧的技术、过时的观念,才能得到新的发展机会和创新成果。这不仅是个人成长的智慧,也是企业战略的重要组成部分。...
* 舍得酒业通过不同的品牌来满足不同客户的需求,通过从客户开发、到产品服务、再到售后跟踪打造了全生命周期客户管理。 * 大数据应用,是最重要的支撑能力,借助金蝶云·星空平台,通过大数据分析可以优化目标客户...
基于类别的稀疏表示分类器的简单实现,MATLAB代码版本 一共10个.m文件,各自作用简单介绍如下(实际上只用到了下面第一部分的七块代码): cdSRC.m 主程序 normalize_data.m 用来对原始数据归一化 lda.m 用来对...
这个工具相信前几天已经有人在微博上看到了,因为 Epic 中国也有一起宣传。这个工具可以让开发者佩戴虚拟设备,手持可实时反馈的手柄在虚拟现实世界里直接参与调试、编辑、创建角色。这可以让开发者更直观地体会自己...