关闭代码非常简短:
var fn = function() {
return function() {
console.log(arguments);
}
}
(function(arg) {
console.log('bar');
})('foo');
Run Code Online (Sandbox Code Playgroud)
为什么["foo"]
打印而不是bar
?如果我注释掉var fn = ...
,结果是预期的并bar
打印出来.这两段代码如何相关?
通过/ metrics endpoint 暴露的Spring Boot指标中mem和mem.free的含义是什么?
我们正在负载测试一个部署在三个节点中的新的Spring Boot微服务,每个盒子的mem总共大约在VM中的4G总共250M,mem.free在不正常的负载下如100倍的正常负载可以下降到15M并且在之后慢慢恢复考试.
它们不是堆内存,因为Spring Boot Metrics分别报告它们并且它们本身不是Java进程本身,因为从命令行我可以看到无论负载有多大,它都保持在4G的16%,即大约900MB.这是/ metrics call response snippet:
{
mem: 227657,
mem.free: 44280,
processors: 2,
instance.uptime: 80393579,
uptime: 80414405,
systemload.average: 0.03,
heap.committed: 133632,
heap.init: 61440,
heap.used: 89351,
heap: 872448,
nonheap.committed: 96688,
nonheap.init: 2496,
nonheap.used: 94025,
nonheap: 0,
threads.peak: 109,
threads.daemon: 34,
threads.totalStarted: 183,
threads: 63,
classes: 10079,
classes.loaded: 10155,
classes.unloaded: 76,
Run Code Online (Sandbox Code Playgroud)
....}
Grafana mem.free截图最近24小时,最低点是重载测试期间(15MB!)
下面显示了Grafana cpu和内存使用情况报告,它告诉我在这段时间内处于压力之下的CPU是可以理解的.但是Java进程内存(在该框中只运行1个Spring引导)是稳定的:
那么在Spring Boot指标中mem和mem.free的意义又是什么呢?
两个包中有两个 POJO Market和MarketDTO。
Market是来自远程服务的 JSON 响应的映射对象。
MarketDTO是一个响应对象,它将通过我们的服务公开。
有一些来自Market -> MarketDTO 的数据按摩。他们有一些共同的领域,也都有独特的领域。有 3 个常见字段,例如id、name和status。
但是,Sonarqube 将它们的 getter 和 setter 指示为要删除的重复代码块。这实际上是糟糕的代码还是我应该将其标记为误报?
我们需要将现有的多个 PDF 导入到一个新的 PDF 中。部分代码与iText in Action 第二版6.2.1 节中的示例代码类似:
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(
document, new FileOutputStream(RESULT));
document.open();
PdfPTable table = new PdfPTable(2);
PdfReader reader = new PdfReader(MovieTemplates.RESULT);
int n = reader.getNumberOfPages();
PdfImportedPage page;
for (int i = 1; i <= n; i++) {
page = writer.getImportedPage(reader, i);
table.addCell(Image.getInstance(page));
}
document.add(table);
document.close();
Run Code Online (Sandbox Code Playgroud)
然而,我们刚刚意识到,在处理带有注释的可填充 PDF 时(在我们的例子中,这些 PDF 已经填充了数据),所有填充的数据都会在新 PDF 中丢失。
我们在书中的同一部分找到了答案:
了解呈现页面内容所需的资源与页面的交互功能之间的区别非常重要。一般来说,这些功能称为注释。它们包括链接、文本注释和表单字段。注释不是内容流的一部分。它们没有列在页面的资源字典中,而是列在注释字典中。使用 时不会复制这些交互功能
PdfImportedPage
,这意味着使用该类的getImportedPage()
方法复制页面时,所有交互性都会丢失PdfWriter
。
但是保留这些注释的解决方案是什么?