发表于: 2018-10-14 14:20:11
1 430
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
一.继续学习turscany
CLIENT模块配置文件
composite文件 对一个componet定义
将SCAclient和serviceName对应法服务进行绑定
<component name="UserServiceComponent">
<implementation.java class="com.ptteng.sca.pet.universal.client.UserSCAClient"/>
<reference name="userService">
<scallop:binding.rmi registryName="user-pet-universal-service-rmi" serviceName="UserRMIService"/>
</reference>
</component>
spring配置文件中将composite中注册的component进行绑定
<!-- UserService -->
<bean id="userService"
class="com.gemantic.common.sca.service.SCAClientServiceFactory">
<property name="client" ref="scaClient" />
<property name="component" value="UserServiceComponent" />
<property name="className"
value="com.ptteng.pet.universal.service.UserService" />
</bean>
scallop的配置,暂时还没理解有什么用
scallop.registry.center = http://scallop.resource.center:8102
scallop.performace.rmi.processTimeThreshold=200
scallop.performace.rmi.showParameters=false
scallop.performace.rmi.executeTimesPrintInterval=600
二.迭代器iteator
http://www.runoob.com/design-pattern/iterator-pattern.html
迭代器模式
这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
介绍
意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
主要解决:不同的方式来遍历整个整合对象。
何时使用:遍历一个聚合对象。
如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。
关键代码:定义接口:hasNext, next。
应用实例:JAVA 中的 iterator。
优点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。
缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。
使用场景: 1、访问一个聚合对象的内容而无须暴露它的内部表示。 2、需要为聚合对象提供多种遍历方式。 3、为遍历不同的聚合结构提供一个统一的接口。
注意事项:迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。
一个demo
1.定义一个迭代器接口,包含两个基本方法
public interface MyIterator {
boolean hasNext();
Object next();
}
2.定义一个容器接口包含迭代器接口
public interface Container {
MyIterator getIterator();
}
3.定义容器的实现类,并实现迭代器接口
public class NameRepository implements Container{
String names[] ={"a","b","c","d"};
@Override
public MyIterator getIterator() {
return new NameItorater();
}
private class NameItorater implements MyIterator{
int index;
@Override
public boolean hasNext() {
if(index < names.length){
return true;
}
return false;
}
@Override
public Object next() {
if(this.hasNext()){
return names[index++];
}
return null;
}
}
}
4.运行,通过迭代器取出容器中的元素
public static void main(String[] args) {
NameRepository nameRepository = new NameRepository();
for(MyIterator iterator = nameRepository.getIterator();iterator.hasNext();){
String name = (String) iterator.next();
System.out.println("name = " + name);
}
}
三.对比java源码理解iterator
接口中定义了基础的两个方法
ps:java中的defult关键字可以在接口中定义方法
public interface Iterator<E> {
boolean hasNext();
E next();
default void remove() {
throw new UnsupportedOperationException("remove");
}
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}
java中还定义了一个iterable接口
接口中的包含了一个iterator接口用以实现迭代
public interface Iterable<T> {
Iterator<T> iterator();
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
}
定义collection接口继承iterable接口
set list等接口均继承collection接口
* @see Set
* @see List
* @see Map
* @see SortedSet
* @see SortedMap
* @see HashSet
* @see TreeSet
* @see ArrayList
* @see LinkedList
* @see Vector
* @see Collections
* @see Arrays
* @see AbstractCollection
* @since 1.2
*/public interface Collection<E> extends Iterable<E> {
明天继续
明天计划的事情:(一定要写非常细致的内容)
今天断网,项目启动时报微信连接异常,明天试着把项目跑起来,然后自己写个demo
学习阅读arrylist源码
遇到的问题:(遇到什么困难,怎么解决的)
项目中涉及了很多ptteng二方库jar包,本地环境 开发环境 测试环境下的配置需要变更,项目启动缓慢
收获:(通过今天的学习,学到了什么知识)
分布式学习 数据结构学习
评论