我们使用的是 SpringBoot 2.1.x 版本,因此 Hikari 是默认的 DataSource 实现。但是,我不确定如何配置 Hikari 设置以在数据库维护/重新启动或网络连接问题后自动重新连接到我们的 Oracle 数据库。
我们有以下 hikari 设置,但似乎没有帮助。
account.datasource.url: jdbc:oracle:thin:@myserver:1521:DEV
account.datasource.username: user
account.datasource.password: xxxx
account.datasource.driverClassName: oracle.jdbc.driver.OracleDriver
account.datasource.hikari.connection-timeout: 30000
account.datasource.hikari.maximum-pool-size: 3
account.datasource.hikari.idle-timeout: 60000
account.datasource.hikari.max-lifetime: 1800000
account.datasource.hikari.minimum-idle: 2
Run Code Online (Sandbox Code Playgroud)
与数据库的网络连接恢复后,无法重新连接。
获取JDBC连接失败;嵌套异常是 java.sql.SQLTransientConnectionException:HikariPool-1 - 连接不可用,请求在 30033 毫秒后超时。
任何其他 account.datasource.hikari.xxxxx 将有助于自动重新连接到数据库?
我正在尝试使用 iText 7.1.1 将 TIFF 图像转换为多页 PDF 文件。感谢那些让我开始阅读这篇文章使用 iText 从 TIFF 图像创建 PDF 的人。但是,它是 iText 5.5.x,我很难在 iText 7 中复制它。
我确实找到了TiffImageData.getNumberOfPages(raf)替换int pages = TiffImage.getNumberOfPages(rafa)。
但是,我无法TiffImage.getTiffImage(rafa, i)在 iText7 中进行替换。我需要使用new Image(ImageDataFactory.createTiff(...)). 感谢任何建议。
iText 5.5.x 代码
import java.io.FileOutputStream;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.io.FileChannelRandomAccessSource;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.RandomAccessFileOrArray;
import com.itextpdf.text.pdf.codec.TiffImage;
public class Test1 {
public static void main(String[] args) throws Exception {
RandomAccessFile aFile = new RandomAccessFile("/myfolder/origin.tif", "r"); …Run Code Online (Sandbox Code Playgroud) 我有一个帐户列表,我正在尝试使用Comparator.comparing对它们进行排序。但是,由于余额不是字符串的两倍,因此排序不正确。有没有办法使用Comparator.comparing()将String值中的balance字段排序为double?
在我看来,我必须将余额类型更改为两倍才能使其正常工作,但我尝试不更改该值以与所有字符串类型的其他字段保持一致。
List<Account> accountList = getAccountList(id);
Comparator<Account> accountComparator =
Comparator.comparing(Account::getBalance);
if (sortDirect.equalsIgnoreCase("desc")) {
accountList.sort(accountComparator.reversed());
} else {
accountList.sort(accountComparator);
}
Balance DESC order sorted incorrectly.
"accountList": {
"accounts": [
{
"accountNumber": "A",
"balance": "39261.2",
"payment": "111.42"
},
{
"accountNumber": "B",
"balance": "251194.28",
"payment": "128.79"
...
]
Run Code Online (Sandbox Code Playgroud)
}
我需要显示一个帐户对象列表,并在其中一个帐户对象字段(所有字符串类型)上进行排序。但是,某些帐户字段值未null显示在中JSON。null pointer exception当我对那些缺失的字段进行排序时,它给了我一个机会。如何Comparator在排序期间忽略忽略的字段?
我试过了,Comparator.comparing()但它仅适用于公共字段(所有帐户对象中都存在)。如果我尝试对帐户对象之一中缺少的字段进行排序。NullPointerException发生了。当然,如果我试图强制所有字段以空字符串值(“”)的形式显示,那么它可以正常工作,但看起来不太好,因为这些字段可能太多。
帐户定义
@JsonInclude(Include.NON_NULL)
private String type;
@JsonInclude(Include.NON_NULL)
private String accountNumber;
@JsonInclude(Include.NON_NULL)
private String accountStatus;
@JsonInclude(Include.NON_NULL)
private String accountValue;
....
Run Code Online (Sandbox Code Playgroud)
排序以下列表-仅type和accountNumber是通用的
"accounts": [
{
"type": "type1",
"accountNumber": "1816227",
"accountStatus": "cancelled",
},
{
"type": "type2",
"accountNumber": "2816218",
"accountValue": "19438.60",
},
{
"type": "type3",
"accountNumber": "2209890",
"accountStatus": "inactive",
"accountValue": "4343.410",
}
Run Code Online (Sandbox Code Playgroud)
if (sortField.equalsIgnoreCase("type")) {
accountComparator = Comparator.comparing(Accounts::getType);
}else if(sortField.equalsIgnoreCase("accountNumber")) {
accountComparator = Comparator.comparing(Accounts::getAccountNumber);
}else if(sortField.equalsIgnoreCase("accountStatus")) {
accountComparator = …Run Code Online (Sandbox Code Playgroud)