如果它有所作为,我正在使用Apache Derby 10.8.
我有一个非常简单的数据库,其中包含一个充满项目的表格以及一个充满这些项目出价的表格.我想选择加入该项目的出价最高的每件商品.以下是我的第一次尝试,性能很糟糕:
select
item.id as item_id,
item.name as item_name,
item.retail_value as item_retail_value,
item.vendor as item_vendor,
bid.bid_amount as bid_amount,
bid.bidder_name as bid_bidder_name,
bid.bidder_phone as bid_bidder_phone,
bid.operator_name as bid_operator_name
from item
left outer join bid on bid.item_id = item.id and
bid.bid_amount = (select max(bid.bid_amount) from bid where bid.item_id = item.id and bid.status = 'OK')
Run Code Online (Sandbox Code Playgroud)
我创建了一组测试数据,使用了282个项目,每个项目有200个出价(总共56400个出价).上述查询大约需要30-40秒才能运行.如果我选择每个项目并手动循环选择每个项目的高出价,则只需不到一秒钟.
我已经尝试索引bid.bid_amount和bid.status列,但它没有做任何明显的事情.SQL不是我最强的领域,所以如果有人愿意解释为什么这个查询太慢了我真的很感激.
每个分支的尖端的哈希值是否足以证明我整个存储库的完整性?为了便于讨论,假设您必须将整个存储库交给某人,让他们做任何他们想做的事情,并确定他们是否改变了1位数据.你会怎么做?
如果我正在推送上游裸机库,那么我需要保证的所有数据是否可以在以后验证整个存储库的完整性?
git ls-remote --heads origin
fcce961b46784fae13be8a30c2622ddd34d970ec refs/heads/develop
9da7bb692a72235451706f24790a3f7a100a64e2 refs/heads/feature-netty-testing
86020c50d86691caecff4a55d3b1f2f588f6291d refs/heads/javafx-testing
871d715e5c072b1fbfacecc986f678214fa0b585 refs/heads/master
7ed641c96d910542edeced5fc470d63b8b4734f0 refs/heads/orphan-branch
Run Code Online (Sandbox Code Playgroud)
这来自我用来玩的沙盒存储库.该orphan-branch是分支的描述我故意孤立这里.一切似乎都适合我.列出了我期望的所有分支,但如果每个分支提示的SHA都是我需要的,那么我不肯定.我错过了什么吗?
标签怎么样?那些被删除而没有合并成任何东西的分支呢?
正如一些评论中指出的那样,除了可能需要考虑的头部之外,可能还有其他参考文献.例如,tags并且notes可能取决于他们是否是你或你是否正在签署您的标记重要是有用的.对于我自己,我主要对提交内容感兴趣,这就是我接受VonC答案的原因.
该方法应该同步吗?我想我不明白上下文切换是如何(以及何时)发生的,所以我不知道是否有多个线程可以进入我方法中的if块.
public class ServiceLocator {
private static final Map<Class, Object> applicationServices =
new HashMap<Class, Object>();
/**
* Locates an application scoped service. The service is lazy loaded and
* will be cached permanently.
*
* @param type The type of service to locate.
* @return An application scoped service of the specified type.
*/
@SuppressWarnings({"unchecked"})
public synchronized static <T> T getApplicationService(Class<T> type) {
if(!applicationServices.containsKey(type)) {
// If this method is NOT synchronized, is it possible for more than
// one …Run Code Online (Sandbox Code Playgroud) 我已经更新了这个问题,以便更准确地描述我的问题的原因,并且包含了一个比我最初使用的更简单的例子.
我在下面添加了一个简单的示例来说明我遇到的性能问题.当我使用普通的ArrayList支持我的JXTable时,它的表现相当不错.但是,如果我为EventList切换ArrayList并使用EventTableModel构建表,则排序要慢得多(在这种情况下慢约10倍).
如果使用Maven或Gradle,这里是我正在使用的工件坐标.
apply plugin: 'java'
apply plugin: 'application'
mainClassName = "SortPerfMain"
dependencies {
compile "net.java.dev.glazedlists:glazedlists_java15:1.8.0"
compile "org.swinglabs.swingx:swingx-core:1.6.4"
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子.我试图使用EventList的唯一原因是因为我想要一个我可以在TableModel之外修改并且发生必要通知的数据结构.
import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.gui.TableFormat;
import ca.odell.glazedlists.swing.EventTableModel;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.renderer.*;
import org.jdesktop.swingx.table.TableColumnExt;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;
/* This class creates a JFrame with two JXTables displayed side by side. Both
* tables have a single column that holds Item objects. Each Item has one …Run Code Online (Sandbox Code Playgroud) 我有时会使用apply from: 'some/common/config.gradle'并希望有一种简单的方法来立即配置相关插件(如果它已经存在)或监视它的添加并稍后进行配置。我可以做我想做的事,但看起来有点混乱,因为我最终将配置复制/粘贴到两个位置。下面是我想要的,但我想知道是否有更好的方法。
def configured = false;
if(plugins.hasPlugin(ApplicationPlugin)) {
run.classpath.add(configurations.jfxrt)
startScripts {
mainClassName = "com.javafx.main.Main"
doLast {
logger.warn(":${project.name}:startScripts:!! WARNING !!" +
" Replaced mainClassName with com.javafx.main.Main")
}
}
configured = true
}
else {
plugins.whenPluginAdded { plugin ->
if(plugins.hasPlugin(ApplicationPlugin) && !configured) {
run.classpath.add(configurations.jfxrt)
startScripts {
mainClassName = "com.javafx.main.Main"
doLast {
logger.warn(":${project.name}:startScripts:!! WARNING !!" +
" Replaced mainClassName with com.javafx.main.Main")
}
}
configured = true
}
}
}
Run Code Online (Sandbox Code Playgroud) 这可能是预期的行为,但我找不到任何说明的文档.我正在使用番石榴14.0.1.在下面的示例中,地图中没有对该键的强引用的条目将被删除,这是我所期望的,但是地图的大小不同步.
在第一次检查中,大小和计数都是5.但是,在第二次检查中,大小报告为5,但计数为0.为什么第二次检查报告地图大小为5时实际上没有地图中的条目?
import com.google.common.collect.Lists;
import com.google.common.collect.MapMaker;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class MapSizeCheck {
public static void main(String[] args) {
keepReferencesAndCheckSize();
System.out.println();
discardReferencesAndCheckSize();
}
private static void keepReferencesAndCheckSize() {
Map<Object,Object> map = new MapMaker().weakKeys().makeMap();
List<Object> refs = Lists.newArrayList();
for(int i=0;i<5;i++) {
Object key = new Object();
Object value = new Object();
map.put(key, value);
refs.add(key); // Hold a strong reference to the key.
}
System.gc();
int size = map.size();
int count = 0;
Iterator<Object> it = map.keySet().iterator(); …Run Code Online (Sandbox Code Playgroud) 是否存在绑定内容的现有方法ListProperty?考虑以下:
private final ListProperty<Worker<?>> workers = new SimpleListProperty<>(FXCollections.observableArrayList());
public ListProperty<Worker<?>> workersProperty() {return workers;}
public ObservableList<Worker<?>> getWorkers() {return workers.get();}
public void setWorkers(ObservableList<Worker<?>> workers) {this.workers.set(workers);}
private final ObservableList<Worker<?>> stateWatchedWorkers = FXCollections.observableArrayList(
new Callback<Worker<?>, Observable[]>() {
@Override
public Observable[] call(final Worker<?> param) {
return new Observable[]{
param.stateProperty()
};
}
}
);
Run Code Online (Sandbox Code Playgroud)
我想要做的是将stateWatchedWorkers列表的内容绑定到工作人员.如果workers替换整个列表,我希望stateWatchedWorkers更新以匹配新列表的内容.换句话说,我希望stateWatchedWorkers列表映射到workers属性所持有的当前列表.
假设我有一个界面和一个对象:
public interface MyInterface {
public String getStringOne();
}
public class MyObject implements MyInterface {
private final String stringOne = "string1";
private final Image myGiganticImage; // loads from disk in the constructor
// Getters for both would follow
}
Run Code Online (Sandbox Code Playgroud)
如果我在将MyObject发送到MyInterface之前将其发送到线路之前会传输什么?
public class MyService {
private final MyObject data = new MyObject();
public MyInterface getData() {
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
具体来说,是否myGiganticImage会通过电汇发送?