2012年 一月 13日 周五 | tags: java, morphia, mongo, code, -- (permalink)

前天和昨天一直都在忙后台CMS树的优化和一些bug的修改,不过主要精力放在了树的优化上。

后台数据较多的树有两个,都是和视频相 关的,我们的树用的是dwz的树,但是这是一个同步树,也就是说,这个树是一次性取出数据,通过freemarker构建成html代码,然后在由dwz 渲染成树,在数据量小的时候还不觉得有什么,但是数据量一大就会发现,后台服务端数据查询还不用什么,但是dwz渲染那是一个慢啊,后来我一个同事找了个 jquery的一个异步树,然后由我来对树进行更换。

在换掉dwz的树之后发现,虽然加载数据的速度提升很大,但是在某些数据量略大的节点上依然会有查询很慢的问题,长一点的有要到7-8秒的时间。这样长的时间主要是因为3个方面:

  1. 第一个就是dwz的树是同步树,在接收完数据之后,才进行树的渲染,在数据量略微大的话,渲染的效率就很低,而且我们的树是5级的,五层循环下来,基本上要循环过百万次,在firefox和chrome下测试发现,虽然chrome的js渲染速度快,但是效果并不明显
  2. 第二个就是mongodb的问题,但是问题不在与mongodb上,而在于我们的查询上,几个树加载慢的表都冗余了大量的数据,这些数据在树的显示上都没有用,一个树需要的只有一个id和name两个字段,所以在查询上带出了太多的无用数据。
  3. 第三个就是在网络传输上,这个问题其实和第二个是一样的,从mongodb带出了太多的无用数据,而且是一次性全部数据都查寻来,这样就会造成数据越多查询越慢,网络的传输上压力就越大,到最后就是服务器崩掉 ...

2012年 一月 05日 周四 | tags: java, morphia, code, mongo, -- (permalink)

昨天中午临吃午饭前,我对系统的业务功能代码进行重构之后,准备测试一下,通过就去吃饭,但是发生了一个让我很意外的问题,就是在存储的时候,系统 报出来,类型转换异常(java.lang.ClassCaseException)或者是这么一个错误信息(object is not an instance of declaring class),很纠结因为之前这里测试都好好的,而且给内容组,视频组和测试组部署的测试环境,还在正常运行,一时想不通那里出了问题。

在 经过几次debug跟踪之后发现,每次报错都是在,存储FreeCourse和FreeVideo两个类是发生的问题,我仔细回忆 了,从上次重部署测试环境到出问题之间修改的代码,中间都没有什么问题,只有一个地方和其他人写的代码略有不一样,就是:其他人在写list类型的属性 时,默认是给空值的,但是我会给他们new一个size为0的ArrayList,这是我的一个喜欢,是为了避免出现一些因为疏忽而发生的问题,但是如果 只是这样不应该会有问题。

我 又仔细的看了一边相关业务代码和实体类的代码,所有代码中都没有问题,但是有一点和其他人的不同,就是我的FreeVideo下有个字段 videoInfos他的类型是 ...


2011年 十二月 07日 周三 | tags: jquery, javascript, code, -- (permalink)

我们头不让我们使用外面的页面特效脚本,因为页面加载的时候使用太多的不相关页面会影响页面加载的速度。so,只能自己动手去写一个分页插件。

今天没有在公司,没有截到效果图,不过没有关系,我可以说一下我的实现思路,我会在后面把效果图补上。

这个插件有两个主要方法refresh_data和refresh_num_bar,这两个方法是用来刷新,首页,末页,上一页,下一页,以及在这些中间的数字按钮的样式变化。

首先是refresh_data:

var refresh_data = function($data, cur_page) {
    $data.find('.peak_comment_li').each(function() {
        $(this).find('#peak_comment_count').peak({
            url: $(this).find("#peak_comment_url").val(),
            msgbox: options['msgbox'],
            peakTagId: "peak_comment_d_count"
        });
        $(this).find('.reply_comment_btn').bind('click', function(event) {
            $(this).parent ...

2011年 十二月 01日 周四 | tags: jquery, javascript, code, -- (permalink)

公司网站首页广告位需要一个鼠标悬浮切换的特效,但是公司不让使用jquery已经实现过的特效,而公司的这方面的高手又没有时间做,所以只能自己去实现一个这样的特效插件。

下面是先说下JQuery 插件大概的结构:

// 这里这个匿名函数,是为了避免冲突
(function($){
  // 为JQuery 附加一个新的方法
  $.fn.extend({
    //这里需要开发的插件的名字
    fv_adv: function(){
      // 这里就是插件的具体实现代码
    },
    ……
    // 这里可以继续增加插件
  });
})(jQuery);

本来想把代码大概的说下的,但是觉得这个插件很简单,没有什么值得特别说说的,jquery的 插件结构就项上面说的那样,一个插件名,对应一个具体的实现,在function里写插件的具体代码,这些东西在网上被人都快说烂了,但是我觉得有些说的 实在不清晰,至少我没看明白,我在这里不像说太多的,有时候对于程序员来说具体的代码,比一本书更管用!

源代码:jquery_plugin.7z


« Page 2 / 2