区分Abstract类和接口类是否重要?
抽象类只是一个接口类,有一些具体的方法.
如果抽象类与Interface类共享相同的前缀"I",我们可以通过引入新的逻辑等轻松地将我们的接口类升级为抽象类.
UPDATE
我问这个的原因是,当项目增长时,界面会产生一些限制.例如,
如果一个接口已经由千个类"实现",并且在某些时候我们需要在基类中引入一些新方法,我们将必须修复所有子类.
抽象类在功能扩展方面提供了灵活性,因为它可以提供默认实现而不会影响子类.
这就是为什么我能够交换使用接口和抽象类的想法.
ICar car = new Merz(); // ICar can be interface or abstract class
Run Code Online (Sandbox Code Playgroud)
但是,当我再次考虑它时,我们仍然需要更改所有子类,因为类声明迫使我们在一开始就使用"扩展"或"实现".
所以我认为没有选择在abstract/interface类上进行多态.
在学习Mahout之前我是否需要掌握Hadoop?在不学习Hadoop的情况下,我可以走多远(为了使用数据挖掘功能)?
我想将JRE 6.0与我的java应用程序捆绑在一起.我的所有源代码都驻留在CVS中.我的客户将签出代码并自行构建.我应该将JRE存储在CVS中吗?
我几天前在Cassandra 1.2中删除了一个列:1.删除整个表,2.重新创建表,没有列,3.插入insert语句(没有列).
我这样做的原因是因为Cassandra 1.2不支持"drop column"操作.
今天,由于数据损坏问题,Ops团队通知了我.我的问题:
怎么解决?
错误[ReadStage:79] 2014-11-04 11:29:5521 CassandraDaemon.java(第191行)线程中的异常线程[ReadStage:79,5,main] org.apache.cassandra.io.sstable.CorruptSSTableException:org. apache.cassandra.db.ColumnSerializer $ CorruptColumnException:org.apache.cassandra.db.columniterator.SimpleSliceReader中无效的列名长度为0(/data/cassandra/data/xxx/yyy/zzzferences.db,剩余1799885个字节). computeNext(SimpleSliceReader.java:110)在org.apache.cassandra.db.columniterator.SimpleSliceReader.computeNext(SimpleSliceReader.java:40)在com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)在COM .google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)在org.apache.cassandra.db.columniterator.SSTableSliceIterator.hasNext(SSTableSliceIterator.java:90)在org.apache.cassandra.db.filter.QueryFilter位于org.apache.cassandra.utils的org.apache.cassandra.db.filter.QueryFilter $ 2.hasNext(QueryFilter.java:154)$ 2.getNext(QueryFilter.java:171).meerIterator $ OneToOne.computeNext(MergeIterator.java:199)位于com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) )org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:160)位于org.apache.cassandra的org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:136). db.filter.QueryFilter.collateOnDiskAtom(QueryFilter.java:84)在org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:291)在org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java: 65)在org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1398)在org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1214)在org.apache.cassandra.db.ColumnFamilyStore .getColumnFamily(ColumnFamilyStore.java:1130)atg.apache.cassandra.db.Table.getRow(T able.java:344)在org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:70)在org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:44)在org.apache.cassandra java.util.concurrent.ThreadPoolExecutor中的.net.MessageDeliveryTask.run(MessageDeliveryTask.java:56)java.lang上的java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)中的$ Worker.runTask(未知来源). Thread.run(未知来源)由以下原因引起:org.apache.cassandra.db.ColumnSerializer $ CorruptColumnException:无效的列名长度为0(/data/cassandra/data/xxx/yyy/zzzferences.db,剩余1799885字节)at at org.apache.cassandra.db.ColumnSerializer $ CorruptColumnException.create(ColumnSerializer.java:148)位于org.apache.cassandra.db的org.apache.cassandra.db.OnDiskAtom $ Serializer.deserializeFromSSTable(OnDiskAtom.java:86).在org.apache.cassandra.db.columniterator.SimpleSliceReader.computeNext(SimpleSliceReader.java:106)的OnDiskAtom $ Serializer.deserializeFromSSTable(OnDiskAtom.java:73).. .24 more ERROR [ReadStage:89] 2014-11-04 11:29:58,876 CassandraDaemon.java(第191行)线程中的异常Thread [ReadStage:89,5,main] java.lang.OutOfMemoryError:org中的Java堆空间.apache.cassandra.io.util.RandomAccessReader.readBytes(RandomAccessReader.java:376)在org.apache.cassandra.utils.ByteBufferUtil.read(ByteBufferUtil.java:392)在org.apache.cassandra.utils.ByteBufferUtil.readWithLength (ByteBufferUtil.java:355)在org.apache.cassandra.db.ColumnSerializer.deserializeColumnBody(ColumnSerializer.java:108)在org.apache.cassandra.db.OnDiskAtom $ Serializer.deserializeFromSSTable(OnDiskAtom.java:92)的组织. apache.cassandra.db.OnDiskAtom $ Serializer.deserializeFromSSTable(OnDiskAtom.java:73)在org.apache.cassandra.db.columniterator.SimpleSliceReader.computeNext(SimpleSliceReader.java:106)在org.apache.cassandra.db.columniterator. SimpleSliceReader.computeNext(SimpleSliceReader.java:40)at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)at co m.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)位于org.apache.cassandra.db.filter的org.apache.cassandra.db.columniterator.SSTableSliceIterator.hasNext(SSTableSliceIterator.java:90). QueryFilter $ 2.getNext(QueryFilter.java:171)org.apache.cassandra.db.filter.QueryFilter $ 2.hasNext(QueryFilter.java:154)at org.apache.cassandra.utils.MergeIterator $ OneToOne.computeNext(MergeIterator. Java的:199)
假设我有一个包含以下数据的表:
| id | t0 | t1 | t2 |
______________________
| 1 | 4 | 5 | 6 |
| 2 | 3 | 5 | 2 |
| 3 | 6 | 4 | 5 |
| 4 | 4 | 5 | 9 |
| 5 | 14 | 5 | 49 |
Run Code Online (Sandbox Code Playgroud)
我想检索包含4,5,6的所有行(无论表中数字的位置如何),因此将选择第1行和第3行.如何使用SQL查询?
该表包含数千条记录.