• IceFig阅读笔记


    嗯:就是这里了

    http://research.worksap.com/research/icefig/

    一下阅读笔记:

    嗯,时间有限,他们提供的又茫茫多,所以 就找出来了 几个 单独聊聊吧。

    其他语言的看不太懂,所以跳过了部分,直接进入 有关java的部分。

    分别是

    http://research.worksap.com/research/junit4/

    http://research.worksap.com/research/java-dc-listopslib/

    http://research.worksap.com/research/icefig/

    结果是最先看的

    http://research.worksap.com/research/icefig/

    里面提到了:

    Yang Liu 是不是 上次 来宣讲的 哥哥0.0

    总之提到了java可能有一些 弊病,然后 说了java的习语可能有些不好的地方。然后是 大量的 类库。

    需要知道的

    1guava

    应该是 Google提供的 一个 类库吧。支持的东西好像还不少。

    2Apache Commons Lang/IO

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问 http://jakarta.apache.org/commons/index.html

    3、JodaTime

    日期处理有关,比如判断今天是否登录,今天的最小时间,今天结束的最大时间等。   目前Joda Time 已经纳入 JDK 8 的官方API.

    Ruby允许通过元编程(metaprogramming)改变改变类。

     # Fixnum is the built-in class of integers

       # 3.days.ago is not possible yet

       class Fixnum

         def days

            self * 60 * 60 * 24   # we store seconds in a day

         end

         def ago

           Time.now - self

         end

       end

       # then you can write

       3.days.ago

    Scala 可以通过 implicits实现隐式转换跟Ruby就很像了。

    遗失的猴子补丁让原本就不咋地的 sdk更加雪上加霜。

    java 8 foreEach 不能提供索引。

    开发了 IceFig。(之前有做过一个小例子,关于实现在迭代中得到)可以把,实现放在这里一下。

    解决方案:

    这个 ICEFIG

    唔。这个 部分的 源码包就没有了,实现不了了。。。悲伤。这个 语法,总觉得哪里 怪怪的 不太像是 java的语法啊。java里面没有 ->  吧。。。原谅我的无知。。。

    关于,文章提到的内容以前也遇到过,在优化页面显示的时候。就是增删改查制后,数据库里面查询出来的结果应该是对应改变的。比如插入一条记录以后,新增的记录应该优先显示。这个时候 原来分页查找的结果就应该丢弃一条记录,并且加入最新的那条记录。如果在迭代过程中直接删除的话,会报快速迭代异常。

    当时考虑的结果还比较多呢,现在记不太全了,贴一段代码先:

    版本1:

        @Override
        public List<StandardPo> getstandardInfosForEdition(int standardId,
                PageBean pageBean) {
            
            /**
             * bug 在于,如果当前被修改的人的id是第一个,然后 从 得到用户的信息的时候,也是 刚好拿到第一个 人。就会出bug。
             * 会显示两条 相同的 数据。
             * 如果没有相同的 就出掉最后一个,如果 有相同的 出去相同的。
             */
            List<StandardPo>  standardInfos = new ArrayList<StandardPo>();
            StandardPo standardPo = standardDao.getStandardInfoById(standardId);
            standardInfos.add(standardPo);
            List<StandardPo> pageStandardInfos = standardDao.getStandardInfos(pageBean);
            
            boolean flagForDeleteLast = true;//用来移除的标识,true 可移除。false 不可移除。
            /**
             * 如果 被修改的对象,恰好出现在分页信息列表里面。就移除当前对象。
             */
            int sameId = 0;
            boolean flagFordeleteSame = false;//代表我们可以移除 本身存在的一个对象
            StandardPo sameStandardPo=null;
            for(StandardPo s : pageStandardInfos){
                if(s.getStandardId()==standardPo.getStandardId()){
                    sameId=standardPo.getStandardId();
                    sameStandardPo = s;//这里这样删除会比较好,比起上一个userServiceImpl里面的写法。
                    flagFordeleteSame=true;
                }
            }
            if(flagFordeleteSame){
                pageStandardInfos.remove(sameStandardPo);
                flagForDeleteLast=false;
            }
            /**
             * 否则,就移除 最后一个。
             */
            if(flagForDeleteLast==true){
                pageStandardInfos.remove(pageStandardInfos.size()-1);
            }
            for (StandardPo s : pageStandardInfos) {
                standardInfos.add(s);
            }
            standardInfos = interceptDate(standardInfos);
            return standardInfos;
        }

    版本二:

    @Override
        public List<UserPo> getUserInfosForEdition(int userId, PageBean pageBean) {
            /**
             * bug 在于,如果当前被修改的人的id是第一个,然后 从 得到用户的信息的时候,也是 刚好拿到第一个 人。就会出bug。
             * 会显示两条 相同人的 数据。
             * 
             * 如果没有相同的 就出掉最后一个,如果 有相同的 出去相同的。
             */
            List<UserPo>  userInfos = new ArrayList<UserPo>();
            UserPo userPo = userManagerDao.getUserById(userId);
            userInfos.add(userPo);
            List<UserPo> pageUserInfos = userManagerDao.getUserInfos(pageBean);
            
            boolean flagForRemove = true;//用来移除的标识,true 可移除。false 不可移除。
            /**
             * 如果 被修改的对象,恰好出现在分页信息列表里面。就移除当前对象。
             */
            /**
             * 这个 地方多亏了小超神,但是 还是 有点儿 想不通!!!
             */
            int userIdForCMException = 0;
            //System.out.println(userIdForCMException);
            /**
             * 这里是由于,一边在遍历,另一边,从这个 集合中移除了一个 对象,那么在遍历就会发生异常。所以 这个 下面集合的遍历 得换招儿。
             */
            boolean couldWeDeleteFirst = false;
            for(UserPo userPo2 : pageUserInfos){
                if(userPo2.getUserId()==userPo.getUserId()){
                    userIdForCMException=userPo.getUserId();
                    couldWeDeleteFirst=true;
                }
    /*            if(userPo2.getUserId()==userPo.getUserId()){
                    pageUserInfos.remove(userPo2);
                    flagForRemove=false;
                }
    */        }
            if(couldWeDeleteFirst){
                UserPo userPoForCMException = userManagerDao.getUserById(userIdForCMException);
                pageUserInfos.remove(userPoForCMException);
                flagForRemove=false;
            }
            
            /**
             * 否则,就移除 最后一个。
             */
            if(flagForRemove==true){
                pageUserInfos.remove(pageUserInfos.size()-1);
            }
            for (UserPo userPo2 : pageUserInfos) {
                userInfos.add(userPo2);
            }
            return userInfos;
        }

    对对,增加和修改都会有bug,就是为了优化显示的时候。

    增加的时候优先显示,修改的时候优先显示,就会对应不同的bug。

    嗯,就这样吧

  • 相关阅读:
    为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?
    被公司的垃圾XG人事系统吓尿了
    【域控管理】父域的搭建
    【域控管理】域控的必要性
    对.net 程序进行源码混淆
    公司消费一卡通“变法”记
    Oracle研究专题:Oracle系统安装与配置
    数据仓库003
    数据仓库002
    数据仓库001
  • 原文地址:https://www.cnblogs.com/letben/p/5897038.html
Copyright © 2020-2023  润新知