小编Sna*_*Doc的帖子

ClassLoad一个枚举类型

如何通过ClassLoader或类似机制实例化Enum类型?(我试图将所有内容保存在独立服务器应用程序的相同上下文类加载器下).

我有类似的东西:

ClassLoader loader = new CustomClassLoader(parent, libDir);

Thread.currentThread().setContextClassLoader(loader);

// trouble area
Class<?> containerClass = loader.loadClass("com.somepackage.app.Name$SERVER");
Run Code Online (Sandbox Code Playgroud)

我错误地认为只需加载Enum就足以启动它(它的私有构造函数包含启动方法调用和什么不是).

执行上面的操作不会导致任何异常,但JVM只会在最后一行之后终止,并且服务器无法启动.

显然这样做:

containerClass.newInstance();
Run Code Online (Sandbox Code Playgroud)

抛出异常导致结果.

java enums classloader

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

Git/GitHub为帐户贡献的总行数

我想获得GitHub帐户的代码行总数.这不是为了判断生产力或其他任何东西(LOC是一个糟糕的选择),它真的只是为了我们的娱乐.

是否有可能获得GitHub上的帐户(通过电子邮件地址或句柄)完成的代码行总数?

git lines-of-code github

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

JAXB IllegalAnnotationExceptions

我是第一次与JAXB合作,并且在理解它希望我做什么方面遇到了一些问题.

我已经设置了一个类,它将成为一个相当大的XML的一部分 - 这个类将代表XML文档的"Header"部分.

package com.somecompany.jscentral.xml.integrator.soc;

import javax.xml.bind.JAXBException;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import com.somecompany.jscentral.xml.AbstractXML;

@XmlRootElement(name = "Header")
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(propOrder = {"OrderRoutine", "CreationDate", "CreationTime", "UserId", "CustomerNumber", 
                        "OrderType", "Salesman", "Handler", "Warehouse", "PrimaryCurrency", "OrderNumber", 
                        "Name", "OrderDate", "DeliveryAddressNumber", "ConfirmationAddressNumber", "FullName999", 
                        "CompanyName999", "StreetAddress999Line1", "StreetAddress999Line2", "City999", "StateProvince999", 
                        "PostCode999", "Country999", "Resale999", "InvoiceCustomerNumber", "CustomerReference", 
                        "NumberOfInvoiceCopies", "Language", "VAT", "Backlog", "OrderDiscountPercent", "DiscountGroup", 
                        "PriceCode", "StandardTextNumber", "HoldOrder", "TermsOfPayment", "CreditDays", "TermsOfDelivery", 
                        "MannerOfTransport", "FreightFee", "PostageFee", "InsuranceFee", "AdministrationFee", "InvoiceFee", 
                        "CustomersOrderNumberReference", "GoodsMarking", "HoldInvoice", "DeliveryAddressEngineer", 
                        "DeliveryAddressLocation", "CountryDispatchedToArrivedFrom", "VATRegNumberOfDebtorAddr", 
                        "NatureOfTransaction", "VATHandlingCode", "PortOfArrivalDispatch", …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

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

Bash set -u 允许单个未绑定变量

使用 bash,您可以允许set -e特定命令失败,例如:

someCommandThatProbablyFails || true
Run Code Online (Sandbox Code Playgroud)

有什么set -u可以让特定变量不受约束的吗?

具体来说,我正在做类似的事情:

if [ -n "${1}" ]; then
    SOMEVAR="${1}"
else
    SOME_STUFF_TO_DETERMINE_SOMEVAR
fi
Run Code Online (Sandbox Code Playgroud)

在这种情况下,"${1}"如果没有任何内容从命令行传递到脚本中,则会触发未绑定变量错误。

variables bash

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

FileChannel ByteBuffer和Hashing Files

我在java中构建了一个文件哈希方法,它接受a的输入字符串表示,filepath+filename然后计算该文件的哈希值.散列可以是任何本机支持的java散列算法,例如MD2through SHA-512.

我试图找出最后一滴性能,因为这个方法是我正在研究的项目的一个组成部分.我被建议尝试使用FileChannel而不是常规FileInputStream.

我原来的方法:

    /**
     * Gets Hash of file.
     * 
     * @param file String path + filename of file to get hash.
     * @param hashAlgo Hash algorithm to use. <br/>
     *     Supported algorithms are: <br/>
     *     MD2, MD5 <br/>
     *     SHA-1 <br/>
     *     SHA-256, SHA-384, SHA-512
     * @return String value of hash. (Variable length dependent on hash algorithm used)
     * @throws IOException If file is invalid.
     * @throws HashTypeException If …
Run Code Online (Sandbox Code Playgroud)

java hash file

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

确定合适的缓冲区大小

我正在使用 ByteBuffer.allocateDirect() 分配一些缓冲内存以将文件读入内存,然后最终散列该文件字节并从中获取文件散列 (SHA)。输入文件的大小范围很大,从几 KB 到几 GB 不等。

我已经阅读了几个关于选择缓冲区大小的线程和页面(甚至一些在 SO 上)。有些人建议尝试选择本机 FileSystem 使用的一个,以尽量减少对部分块等进行读取操作的机会。比如4100字节的缓冲区,NTFS默认是4096,所以多出来的4位需要单独读操作,非常浪费。

所以坚持使用 2、1024、2048、4096、8192 等的幂。我看到一些推荐的缓冲区大小为 32KB,其他建议将缓冲区设置为输入文件的大小(对于小文件可能没问题,但是什么关于大文件?)。

坚持使用原生块大小的缓冲区有多重要?现代来说(假设现代 SATA 驱动器或更好的驱动器缓存至少有 8Mb,以及其他现代操作系统“魔法”来优化 I/O)缓冲区大小有多重要,我应该如何最好地确定将我的大小设置为多少?我可以静态设置它,还是动态确定它?感谢您的任何见解。

java buffer bytebuffer

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

JavaFX TableView列宽度\内容自动截断

我正在尝试"巧妙地"缩写/截断String嵌套在TableView中的列的内容.我尝试过使用UNCONSTRAINED_RESIZE_POLICY但非常喜欢,CONSTRAINED_RESIZE_POLICY因为它会根据窗口大小自动调整列的大小.

我想要完成的事情:

String one = "SomeVeryLongString";

// Displayed in the column where user has shrunk it too narrow

+-------------+
| Some...ring |
+-------------+

// and if the user shrunk it a bit more

+-----------+
| Som...ing |
+-----------+

// and if they stretch it a bit

+---------------+
| SomeV...tring |
+---------------+

// etc...
Run Code Online (Sandbox Code Playgroud)

我已经探索了读取String长度并进行自己的截断的可能性,但是当用户收缩/拉伸gui时,不可能动态更新.我的直觉说这必须完成,JavaFX Classes因为它会与之密切相关TableView,但我还没找到办法.

我该如何使用JavaFX?

java string javafx tableview javafx-2

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

在JFXPanel中嵌入JavaFX Stage(Swing Embed)

我正在尝试修改现有的JavaFX GUI程序,使其具有"始终保持最佳状态"的功能.目前JavaFX不支持这个(为什么!?!?),所以一些谷歌搜索让我相信我必须将Swing与我的JavaFX应用程序结合才能实现这一目标.不理想,但还可以.

我发现的所有示例模式都使用JFXPanel而不是Stage,但是因为我的应用程序已经存在并且从一开始就使用JavaFX编写(此时零Swing在代码库中),Stage从应用程序中删除开始成为一个重要的写道只是为了支持这个"在顶部"的功能.

如何在现有的JavaFX Stage中嵌入现有的JavaFX JFXPanel,这将允许我使用标准getSomeSwingWindowOrPanel().setAlwaysOnTop(true);并使我的应用程序浮动在所有其他窗口之上?我是不是错了,即.是否有更好的方法,如使用JNI或其他东西?

java swing javafx

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

断点如何在现代高分辨率设备上运行?

现代手机和平板电脑的分辨率非常高.

例如,我的Galaxy S7 Edge的分辨率为1440 x 2560像素.

移动设备的常见断点似乎大约为768像素,例如在bootstrap中.

bootstrap.css的示例:

@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的手机是如何显示网络的"响应式"版本的,尽管它的分辨率可以说比大多数桌面显示器大?从示例中,我的手机似乎总是以"桌面"模式显示该网站.

css resolution css3 media-queries responsive-design

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

Java NIO与非NIO性能

我花了很多时间尝试优化文件哈希算法,以便尽可能地查看每一次性能下降.

查看我以前的SO主题:

获取文件哈希性能/优化

FileChannel ByteBuffer和Hashing Files

确定适当的缓冲区大小

建议多次使用它Java NIO来获得本机性能提升(通过将缓冲区保留在系统中而不是将它们带入JVM).但是,我的NIO代码运行速度要慢很多基准测试(每个算法反复使用相同的文件进行散列,以消除任何可能导致结果偏差的操作系统/驱动器"魔力".

我现在有两种方法可以做同样的事情:

This one runs faster almost every time:

/**
 * Gets Hash of file.
 * 
 * @param file String path + filename of file to get hash.
 * @param hashAlgo Hash algorithm to use. <br/>
 *     Supported algorithms are: <br/>
 *     MD2, MD5 <br/>
 *     SHA-1 <br/>
 *     SHA-256, SHA-384, SHA-512
 * @param BUFFER Buffer size in bytes. Recommended to stay in<br/>
 *          multiples of 2 such as 1024, …
Run Code Online (Sandbox Code Playgroud)

java hash jvm

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