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的习语可能有些不好的地方。然后是 大量的 类库。
需要知道的 有
1、guava
应该是 Google提供的 一个 类库吧。支持的东西好像还不少。
2、Apache 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。
嗯,就这样吧
IceFig阅读笔记的更多相关文章
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
- Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable
酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...
- Hadoop阅读笔记(五)——重返Hadoop目录结构
常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...
- Hadoop阅读笔记(四)——一幅图看透MapReduce机制
时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过, ...
随机推荐
- 为什么 Apple 开发者网站关闭是件好事?
作者:趋势科技 Apple 的开发者中心网站在 7 月 18 日因为安全漏洞或攻击而关闭.在他们的通知里,Apple 公司表示,这起安全事件可能导致开发商的姓名.通讯地址和电子邮件地址被盗取,虽然该公 ...
- C# 数据类型详解
在asp.net中C#数据类型包括有值类型.简单类型.整型.布尔型.字符型.浮点型.结构类型等等,有需要学习的朋友可进入参考参考. 4.1 值类型 各种值类型总是含有相应该类型的一个值.C#迫使你初始 ...
- UI进阶 科大讯飞(1) 语音听写(语音转换成文字)
一.科大讯飞开放平台: http://www.xfyun.cn/ 注册.登录之后创建新应用. 因为本项目只实现了语音听写,所以在SDK下载中心勾选语音听写单项SDK就可以了 开发平台选择iOS,应用选 ...
- 基于TF/IDF的聚类算法原理
一.TF/IDF描述单个term与特定document的相关性TF(Term Frequency): 表示一个term与某个document的相关性. 公式为这个term在document中出 ...
- STL 速解
STL(Standard Template Library)是C++的标准模版库. STL概述 STL的一个重要概念是数据结构和算法的分离,这使得STL变得十分通用.例如:由于STL的sort()函数 ...
- C#以及Oracle中的上取整、下取整方法
1.C#中: 上取整——Math.Ceiling(Double),即返回大于或等于指定双精度浮点数的最大整数(也可称为取天板值): eg: Math.Ceiling(1.01)=2; Ma ...
- Flex SuperTabNavigator Tab标签图片不显示或图片显示不完全
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- .Net连接到SAP【转载】
刚开始接触SAP了,感觉很陌生,清一色的TCode,不过里面的功能确实强大,不得不佩服啊,之前我一直是搞WinForm和WebForm的,现在能够接触到SAP那我还是想多学习一下,看了一下ABAP的语 ...
- Looksery Cup 2015 A. Face Detection 水题
A. Face Detection Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/549/pro ...
- MySql中的事件
一.前言 自MySQL5.1.0起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系 ...