小编Vla*_* M.的帖子

构造函数引用 - 创建泛型数组时没有警告

在Java中,不可能直接创建泛型类型的数组:

Test<String>[] t1 = new Test<String>[10]; // Compile-time error
Run Code Online (Sandbox Code Playgroud)

但是,我们可以使用原始类型执行此操作:

Test<String>[] t2 = new Test[10]; // Compile warning "unchecked"
Run Code Online (Sandbox Code Playgroud)

在Java 8中,也可以使用构造函数引用:

interface ArrayCreator<T> {
    T create(int n);
}

ArrayCreator<Test<String>[]> ac = Test[]::new; // No warning
Test<String>[] t3 = ac.create(10);
Run Code Online (Sandbox Code Playgroud)

为什么编译器在最后一种情况下不显示警告?它仍然使用原始类型来创建数组,对吗?

java generics language-lawyer java-8

55
推荐指数
3
解决办法
2199
查看次数

BufferedImage颜色饱和度

我正在使用jfreesaneApache PDFBox编写一个简单的扫描应用程序.

这是扫描码:

InetAddress address = InetAddress.getByName("192.168.0.17");
SaneSession session = SaneSession.withRemoteSane(address);
List<SaneDevice> devices = session.listDevices();
SaneDevice device = devices.get(0);
device.open();
device.getOption("resolution").setIntegerValue(300);

BufferedImage bimg = device.acquireImage();
File file = new File("test_scan.png");
ImageIO.write(bimg, "png", file);

device.close();
Run Code Online (Sandbox Code Playgroud)

并制作PDF:

PDDocument document = new PDDocument();
float width = bimg.getWidth();
float height = bimg.getHeight();
PDPage page = new PDPage(new PDRectangle(width, height));
document.addPage(page);
PDImageXObject pdimg = LosslessFactory.createFromImage(document, bimg);
PDPageContentStream stream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);
stream.drawImage(pdimg, 0, 0);
stream.close();

document.save(filename);
document.close();
Run Code Online (Sandbox Code Playgroud)

这是结果: …

java bufferedimage colors scanning pdfbox

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

Maven仅使用Nexus的中央存储库

我已经设置了Nexus代理中央Maven存储库并添加了一个镜像settings.xml:

<mirror>
    <id>nexus</id>
    <mirrorOf>central</mirrorOf>
    <url>http://my-host:8081/nexus/content/repositories/central/</url>
</mirror>
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我尝试添加其他存储库,pom.xml如下所示:

<repository>
    <id>jboss</id>
    <url>http://repository.jboss.org/nexus/content/repositories/releases/</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

Maven的只是没有看到这些仓库,直到我删除<mirror>setting.xml.我还尝试将其他存储库镜像到Nexus,没有运气:Maven仍然只使用中央存储库.

我究竟做错了什么?

nexus maven

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

WMI .NET无效查询

尝试执行以下查询时,我不断收到"无效查询"异常:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskQuota WHERE QuotaVolume.DeviceID = 'C:'");
ManagementObjectCollection quotaCollection = searcher.Get();
Run Code Online (Sandbox Code Playgroud)

但是这可行:"SELECT*FROM Win32_DiskQuota".

根据MSDN:

对于WHERE子句中类描述符的大多数用法,WMI将查询标记为无效并返回错误.但是,对WMI中的object类型的属性使用点(.)运算符.例如,如果Prop是MyClass的有效属性并且类型为object,则以下查询有效:

SELECT*FROM MyClass WHERE Prop.embedprop = 5

这是否意味着只有在Prop宣布为OBJECT时才有效?

以下是异常详细信息:

System.Management.ManagementException was unhandled
  HResult=-2146233087
  Message=Invalid query 
  Source=System.Management
  StackTrace:
       ? System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
       ? System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
       ? UserQuota.Program.getQuota() ? c:\users\administrator\documents\visual studio 2015\Projects\UserQuota\UserQuota\Program.cs:?????? 40
       ? UserQuota.Program.Main(String[] args) ? c:\users\administrator\documents\visual studio 2015\Projects\UserQuota\UserQuota\Program.cs:?????? 33
       ? System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       ? System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       ? Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       ? System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       ? System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object …
Run Code Online (Sandbox Code Playgroud)

.net c# wmi wql

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

Hibernate:使用一对多限制查询

例如,我有Service实体:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "service")
public List<ServiceStatus> getServiceStatuses() {
    return serviceStatuses;
}
Run Code Online (Sandbox Code Playgroud)

ServiceStatus实体:

@ManyToOne
@JoinColumn(name = "service", nullable = false)
public Service getService() {
    return service;
}

@Column(name = "date", nullable = false)
@Temporal(TemporalType.DATE)
public Date getDate() {
    return date;
}
Run Code Online (Sandbox Code Playgroud)

现在我需要查询所有Service对象,以便每个ServiceStatus对象只有那些ServiceStatus.date介于date1和之间的对象date2.也就是说,如果有10个ServiceStatus对象具有正确的日期,则serviceStatuses列表将只有那10个对象而已.可能吗?

提前致谢.

hibernate

4
推荐指数
2
解决办法
9883
查看次数

使用 PostgreSQL ltree 对节点进行排序

假设我有一个使用 ltree 存储的树:

   id   |   path   |   sort   
------------------------------
0       |0         |1
1       |0.1       |2
2       |0.1.2     |3
3       |0.1.3     |1
4       |0.1.4     |2
5       |0.5       |3
6       |0.6       |1
Run Code Online (Sandbox Code Playgroud)

我想选择节点,以便:

  1. 子节点紧跟在父节点之后;
  2. 具有较小“排序”值的兄弟节点首先出现;

像这样:

   id   |   path   |   sort   
------------------------------
0       |0         |1
6       |0.6       |1
1       |0.1       |2
3       |0.1.3     |1
4       |0.1.4     |2
2       |0.1.2     |3
5       |0.5       |3
Run Code Online (Sandbox Code Playgroud)

第一个要求是可能的ORDER BY path,但我不知道如何实现第二个要求,这甚至可能吗?

sql postgresql tree

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