小编hor*_*ace的帖子

关系数据库中的键值对

有人有将密钥值对存储在数据库中的经验吗?

我一直在使用这种类型的表:

CREATE TABLE key_value_pairs ( 
    itemid           varchar(32) NOT NULL,
    itemkey         varchar(32) NOT NULL,
    itemvalue       varchar(32) NOT NULL,
    CONSTRAINT ct_primarykey PRIMARY KEY(itemid,itemkey)
)
Run Code Online (Sandbox Code Playgroud)

然后例如可以存在以下行:

 itemid            itemkey        itemvalue    
 ----------------  -------------  ------------ 
 123               Colour         Red            
 123               Size           Medium             
 123               Fabric         Cotton
Run Code Online (Sandbox Code Playgroud)

这种方案的问题是提取数据所需的SQL语法非常复杂.仅创建一系列键/值列会更好吗?

CREATE TABLE key_value_pairs ( 
    itemid            varchar(32) NOT NULL,
    itemkey1        varchar(32) NOT NULL,
    itemvalue1      varchar(32) NOT NULL,
    itemkey2        varchar(32) NOT NULL,
    itemvalue2      varchar(32) NOT NULL,
 . . .etc . . .
)
Run Code Online (Sandbox Code Playgroud)

这将更容易,更快速地查询,但缺乏第一种方法的可扩展性.有什么建议?

sql database

67
推荐指数
6
解决办法
9万
查看次数

代码重用和重构

重用代码与复制/粘贴的最佳做法是什么?

重用的问题可能是更改重用代码会影响许多其他功能.

这是好的和坏的:好的,如果更改是错误修复或有用的增强.如果其他重用代码意外破坏,因为它依赖于旧版本(或新版本有错误),那就太糟糕了.

在某些情况下,复制/粘贴似乎更好 - 粘贴代码的每个用户都有一个私有副本,它可以自定义而不会产生任何后果.

这个问题是否有最佳实践; 重复使用是否需要水密单元测试?

code-reuse refactoring

7
推荐指数
2
解决办法
2150
查看次数

Java导入/导出依赖项

我试图找到一种方法来列出jar文件的(静态)依赖性要求,根据运行时需要的符号.

我可以看到类导出的方法可以使用"javap"列出,但似乎没有相反的工具来列出'imports'.是否有可能做到这一点?

这与Windows开发中的dumpbin实用程序类似,可用于列出DLL的导出和导入.

编辑:感谢您的回复; 我检查了所有的建议; 接受了DependencyFinder,因为它最符合我的要求.

java import export

5
推荐指数
1
解决办法
2529
查看次数

Java泛型 - 将子类型集合传递给需要基类型集合的方法

如何在Java中执行此操作 - 将子类型集合传递给需要基类型集合的方法?

以下示例给出:

The method foo(Map<String,List>) is not applicable for the arguments (Map<String,MyList>)
Run Code Online (Sandbox Code Playgroud)

我可以通过为类型化集合创建类层次结构来实现 - 但是否则可能呢?

public void testStackOverflow() {

    class MyList extends AbstractList {
        public Object get(int index) {
            return null;
        }
        public int size() {
            return 0;
        }           
    };

    Map <String, List>   baseColl = null;
    Map <String, MyList> subColl  = null;

    foo (subColl);              
}

private void foo (Map <String, List> in) {      
}
Run Code Online (Sandbox Code Playgroud)

编辑:从答案中得出结论,这需要"有界通配符",因此添加此文本以进行搜索

java generics

5
推荐指数
1
解决办法
3423
查看次数

标签 统计

java ×2

code-reuse ×1

database ×1

export ×1

generics ×1

import ×1

refactoring ×1

sql ×1