小编Xin*_*Xin的帖子

列出包的所有子包

我正在寻找一种方法来列出Java中任意包的所有子包.

像这样的东西:

Package basePackage = getPackage("com.mypackage");
for(Package subPackage : basepackage.getSubPackages()){
  System.out.println(subPackage.getName());
}
Run Code Online (Sandbox Code Playgroud)

有办法吗?提前致谢.

IDE(让我们说Netbeans)如何做到这一点? 在此输入图像描述

更新:

我正在尝试找到MyBatis的所有mappers包.在我的项目中,所有映射器包都必须命名为"*.mappers".例如:"abmappers"或"abcmappers".问题是我只知道基础包,并且不确定它下面有多少个映射器包.

更新:这是我的代码试图使用反射库来做到这一点:

private Set<String> getPackagesNames() {
    Reflections reflections = new Reflections("com.mypackage");
    Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);
    Set<String> packageNames = new HashSet<>();

    for( Iterator<Class<? extends Object>> it = allClasses.iterator(); it.hasNext(); ) {
        Class<? extends Object> subClass= it.next();
        packageNames.add(subClass.getPackage().getName());
    }

    return packageNames;
}
Run Code Online (Sandbox Code Playgroud)

不知道为什么这不起作用.这里没有上课....

UPDATE

这是我的代码.有点慢,但在我的情况下表现并不是那么大.我之前从未使用过Spring,所以如果有更好的方法可以做到,请告诉我.谢谢.

    private static Set<String> getPackages(String basePackage) throws IOException, ClassNotFoundException {
        Set<String> packagesNames = new HashSet<>();

        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        MetadataReaderFactory …
Run Code Online (Sandbox Code Playgroud)

java spring

10
推荐指数
2
解决办法
1万
查看次数

PostgreSQL开发工作流程

我开始使用PostgreSQL为我的项目构建一个新数据库.(顺便说一下,我是PostgreSQL和数据库的新手.)

我认为我的开发工作流程非常糟糕,以下是其中的一部分:

  1. 使用pgAdmin创建表/视图/功能.
  2. 在保存代码之前确定文件的名称.
    目标是能够通过运行所有已保存的脚本自动重新创建数据库,
    我需要知道为依赖性原因运行这些脚本的顺序.
    所以我为每个文件添加一个数字来表示订单.例如:001_create_role_user.ddl,002_create_database_project.ddl,013_user_table.ddl
  3. 保存代码.
  4. 使用GIT将文件提交到存储库.

以下是我能想到的一些不好的事情:

  • 我很容易忘记我所做的改变.例如,创建了一个新类型或编辑过的注释
  • 很难确定文件的名称(顺序).
  • 更改代码会很麻烦,特别是当新代码更改顺序时.

所以我的工作流程很糟糕.我想知道其他Postgres开发人员的工作流程是什么样的.

是否有任何好的工具(免费或便宜)用于编辑和保存脚本?好的IDE可能吗?

如果我可以为数据库创建自动化单元测试,那将是很棒的.

任何重建数据库的工具?CI服务器工具?

基本上我正在寻找任何建议,良好实践或数据库开发的好工具.

(对不起,这个问题可能不适合Q&A格式,但我不知道在哪里可以提出这个问题.)

database postgresql workflow development-environment

6
推荐指数
1
解决办法
1476
查看次数

PostgreSQL:float(1)和float(24)之间有什么区别?

我很难理解float(p)PostgreSQL中的精度参数p .例如,float(1)并且float(24)似乎是完全一样的我.

有谁可以向我提供一些他们的差异的例子,好吗?

postgresql floating-point precision sqldatatypes floating-point-precision

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

从表变量中选择

我试图保存SELECT查询的结果,传递它,并在另一个PL/pgSQL函数中重用它:

DECLARE
  table_holder my_table; --the type of table_holder is my_table;
  result text;

BEGIN
  SELECT * INTO table_holder FROM table_holder ;

  result = another_function(table_holder);  
  return result;
END
Run Code Online (Sandbox Code Playgroud)

代码another_function(table_holder my_table)分别为:

BEGIN

  RETURN QUERY
  SELECT col FROM table_holder where id = 1;

END
Run Code Online (Sandbox Code Playgroud)

是否可以对SELECT变量运行查询?如果没有,有没有办法解决这个限制?

我正在使用PostgreSQL 9.2.

postgresql plpgsql postgresql-9.2

4
推荐指数
1
解决办法
1万
查看次数

将varchar与char进行比较

我想弄清楚Postgres在比较varchar时的作用char.

这是我的一个测试:

test=# select 'a'::character varying = 'a     '::character;
?column?
----------
 t

test=# select 'ab'::character varying = 'ab     '::character;
?column?
----------
 f
Run Code Online (Sandbox Code Playgroud)

对我来说这看起来像个错误.有谁知道这里发生了什么?这个主题有好的文件吗?

sql postgresql types

2
推荐指数
1
解决办法
1618
查看次数

Java:int和double取0 millisecons进行1亿次简单计算

我正在用double进行一些简单的测试,如下所示:

startTime = System.currentTimeMillis();

for (int i = 0; i < 100_000_000; i++) 
{
   doubleCalcTest();
}

endTime = System.currentTimeMillis();    
System.out.println("That took " + (endTime - startTime) + " nanoseconds");
Run Code Online (Sandbox Code Playgroud)

.

public static double doubleCalcTest() 
{
    double x = 987.654321;
    double y = 123.456789;

    x = x + y;
    x = x - y;
    x = x * y;
    return x / y;
}
Run Code Online (Sandbox Code Playgroud)

事实证明输出是0毫秒.这对我没有意义,因为如果我将for循环设置为仅运行100,000次,则输出为3毫秒.我发现int也以同样的方式行事.

任何人都可以帮我一把吗?谢谢.

我更改了我的代码以调用'System.nanoTime'时间并传递一个double值,该值按照建议的循环索引递增.

double x = 123.456789
startTime = System.nanoTime();

for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

java double int

1
推荐指数
2
解决办法
248
查看次数

为什么0x8FFFFFF等于128MB?

我有时会看到这样的代码:

int length = 0x8FFFFFF; //128MB
byte buf = new byte[length];
Run Code Online (Sandbox Code Playgroud)

对我来说,这没有什么意义,因为:

0x8FFFFFF = 150,994,943
128MB = 128 * 1024 * 1024字节= 134,217,728字节

这两个数字不相等。我在这里想念什么?

谢谢,

hex

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