小编Adr*_*ith的帖子

Objective-C例外

我刚刚完成了一个iPhone应用程序编程课程.作为课程的一部分,我看到了

  • Objective-C使用该@try指令提供异常处理
  • 系统库不使用异常处理,而不喜欢 return nil

我问我是否应该对我编写的新代码使用异常处理(例如,如果我同时编写前端和逻辑代码,那么它们之间的通信就在我手中)但是我被告知不,我不应该使用新的异常码.(但他没有详细说明,然后课程继续进行,我想也许后来原因会变得清晰......)

当然例外优于return nil?你可以捕获特定的类型,你不要忽略通常成功的函数的返回类型来忽略它们,你有可以记录的文本消息,它们允许你的代码专注于正常情况,因此更具可读性.为什么要使用例外.

所以你怎么看?我的教练是不是不使用Objective-C例外?如果是这样,为什么?

exception-handling objective-c nserror

52
推荐指数
3
解决办法
3万
查看次数

将SVG转换为PDF

如何以编程方式将SVG文件转换为PDF?(在生成PDF之前,我需要在某些方面更改SVG,因此仅使用工具预转换它是不够的.)

理想情况下使用Java但Perl或PHP也可以.

显然我基本上考虑Apache FOP和Batik与Java.但无论我搜索多久,我都找不到如何做到的简单介绍.像SVGConverter这样的描述有​​"定义能够转换部分或全部GraphicContext的类的接口"的描述,但我真的不知道这意味着什么.

我有这种感觉必须有一个API来完成这个,非常简单,由FOP或Batik提供,但我现在无法找到它(或者它可能真的不存在.)

就我所需的支持的SVG功能而言,该文件有一些填充了一些线性渐变的路径.

理想情况下,如果我可以将SVG作为理想的DOM文档传递; 然后我将加载我的模板SVG文件,根据用户的指定进行更改,然后生成PDF.

java pdf svg

27
推荐指数
2
解决办法
3万
查看次数

当Flyway在Spring Boot上不起作用时如何调试?

我正在使用Maven和Spring Boot.我使用运行应用程序mvn spring-boot:run.

https://flywaydb.org/documentation/plugins/springboot说应该在Spring Boot启动时调用Flyway.

所以我的pom.xml包含对Flyway的依赖.

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>4.1.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我第一次运行Maven命令时它下载了Flyway的东西,所以我认为依赖是有效的.

我有以下文件:

./src/main/resources/db/migration/V123__foo.sql
./src/main/resources/application.properties
Run Code Online (Sandbox Code Playgroud)

上面的文章暗示它应该"正常工作",但我不明白它会在哪里找到数据库的JDBC URL.所以我在application.properties文件中添加了以下内容:

flyway.url=jdbc:postgresql://localhost:5432/services?user=postgres&password=postgres
flyway.enabled=true
Run Code Online (Sandbox Code Playgroud)

当Spring Boot启动(并加载并使我的Web应用程序可用)时,Flyway没有日志.我认为Flyway被忽略了.

我能做什么?或者,更一般地说,我将如何自己调试此问题?

flyway spring-boot

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

在加载背景图像之前设置网页背景颜色

我有一个Web应用程序,背景图像是深色.它的大小也超过100KB.(我真的不太欣赏背景图片那么大,但这不是我能做的任何事情,或者这个问题的主题..另外它是一个JPEG!..网页设计来自客户和我尽管我有抗议活动,但还是要保持原样!)

由于背景图像主要由深色(近黑色)组成,因此文本为白色.

麻烦的是,用户第一次进入网页时,背景为白色(默认浏览器背景),文本也是白色,因此您无法阅读任何文本.只有在加载背景图像后,才能阅读文本.(该页面加载一个CSS文件,这会加载另一个CSS文件,并在此指定背景图像.因此,在UMTS移动互联网连接等高延迟连接上,这可能需要几秒钟.)

有没有办法说"这个页面的背景应该有一个特定的背景图像(如现在),但另外应该有黑色,即黑色将显示,直到背景图像已加载,或如果它没有加载"?以这种方式,用户将能够立即阅读文本.我确定我已经看到这样做了(或者是表格单元格背景?)但是唉不记得谷歌搜索也没有帮助.

目前的CSS是:

body {
    background: transparent url(bg.jpg) top left no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

我在"背景"属性中添加了"黑色",但这没有帮助.

html css

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

在Oracle的SQL*Plus中相当于MySQL的\ G.

在Oracle的SQL*Plus中,SELECT的结果以表格方式显示.有没有办法以键值方式显示行(如MySQL的\G选项)?

我正在处理的数据库(模式不是由我定义的)有一堆名为eg YN_ENABLED(YN = yes no)的列CHAR(1).因此,当我进行查询时,我会得到一个结果

ID_MYTABLE   Y Y Y
------------ - - -
3445         Y N Y
Run Code Online (Sandbox Code Playgroud)

因此,哪些列具有哪些值(没有在另一个窗口中打开架构)并不是很清楚.

oracle sqlplus

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

Runtime.getRuntime().availableProcessors() 返回 1,即使 ECS AWS 上有许多可用内核

我正在 AWS 的 ECS 上通过 Docker 运行任务。该任务执行一些受 CPU 限制的计算,我想并行运行这些计算。我启动了一个线程池,其中指定的线程数Runtime.getRuntime().availableProcessors()在我的 PC 上本地运行良好。出于某种原因,在 AWS ECS 上,即使有多个内核可用,它也始终返回 1。因此,我的计算是串行运行的,不使用多核。

例如,现在,我有一个在“t3.medium”实例上运行的任务,根据docs应该有 2 个内核。

当我执行以下代码时:

System.out.println("Java reports " + 
    Runtime.getRuntime().availableProcessors() + " cores");
Run Code Online (Sandbox Code Playgroud)

然后在日志中显示以下内容:

Java reports 1 cores
Run Code Online (Sandbox Code Playgroud)

我没有cpu在 ECS 的任务定义中指定参数。我看到在 ECS 管理控制台中的任务列表中,有一列“CPU”为我的任务读取 0。我还注意到,在实例(= VM)列表中,它将“可用 CPU”列为 2048,这可能与 VM 有 2 个内核的事实有关。

我希望我的 Java 程序能够看到 VM 必须提供的所有内核。(当 Java 程序在没有 Docker 的计算机上运行时通常就是这种情况)。

我该怎么做?

java amazon-ecs docker

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

链接到RSS/Atom提要,相对,在Firefox中不起作用

我有一个奇怪的问题.我生成了一个HTML页面,托管在http://www.x.com/stuff上提供,其中包含

<head>
  <link type="application/atom+xml" rel="alternate" href="/stuff/feed"/>
  ..
</head>
Run Code Online (Sandbox Code Playgroud)

结果是:

  • 在IE7中一切正常 - 您可以在浏览器中单击提要图标并显示提要
  • 在Firefox中,查看源代码,单击链接,然后查看源/stuff/feed的源,以便按预期工作
  • 在Firefox中,查看页面(不是源代码),然后单击地址栏中的feed图标,我收到一条错误,指出它无法检索到URL feed://http//www.x.com/stuff/feed

所以问题是,它会附加feed://到URL的前面,然后取出:后面的冒号http.我知道这feed:是HTTP,所以也许添加它不是一个大问题.

但无论如何,事实是,Firefox生成的我的<link>标签不起作用.

我曾考虑把网址是绝对的,但我还没有发现任何证据表明,这些网址必须是绝对的,也不是我能理解为什么会是这样.由于各种原因,我的代码生成绝对URL会很不方便.如有必要,我能做到这一点,但我希望看到的证据(如规格,或Mozilla错误报告)认为有必要做我的代码之前凌乱

你怎么看?有谁知道URL应该是绝对的任何证据?或者我做错了什么?这似乎是一个简单/明显的标签,没有什么可以出错,但我无法让它工作.

html rss firefox feed atom-feed

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

Java XSLT转换中newTransformer和newTemplates之间的区别

在Java中,从TransformerFactory用于创建对象到处理XSLT,它具有以下方法:

  • newTransformer它创建了 Transformer对象,可以将XML转换为结果.
  • newTemplates它创建了Templates可以创建的对象Transformer.

Transformer明确说明的文档:

变压器可以多次使用.

我的应用程序使用相同的XSLT处理各种不同的XML.在程序开始时,我用newTransformer它创建一个Transformer然后重新使用它来处理所有XML(确保它是同步的,所以我只在一个线程中使用它;并reset()在每次处理之前调用它的方法.).

这样我就不会为每个XML I进程重新编译XSLT.

那么这个newTemplatesTemplates对象的重点是什么?我应该使用它,并Transformer为每个XML 创建一个新对象吗?

java xml xslt saxon

8
推荐指数
2
解决办法
5106
查看次数

使用Wicket 1.5提供动态内容

我有我的Wicket 1.4代码,有一个链接下载以编程方式生成的文件:

protected class MyWebResource extends WebResource {
    public IResourceStream getResourceStream() {
        .....
        return new StringResourceStream(myString, "text/plain");
    }
}

ResourceLink<?> downloadLink = 
   new ResourceLink<Object>("downloadLink", new MyWebResource());
Run Code Online (Sandbox Code Playgroud)

一切都很好.现在我升级到Wicket 1.5.现在WebResource不再存在了.

我在网上搜索了很多年,当然这必须是一个简单的问题,有一个简单的解决方案吗?唉,我找不到.

wicket wicket-1.5

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

写入Lucene索引,一次一个文档,随着时间的推移逐渐减慢

我们有一个程序,它可以持续运行,执行各种操作,并更改数据库中的某些记录.这些记录使用Lucene编制索引.因此,每次我们更改实体时,我们都会执行以下操作:

  1. 打开db transaction,打开Lucene IndexWriter
  2. 在事务中对db进行更改,indexWriter.deleteDocuments(..)然后使用then 更新Lucene中的该实体indexWriter.addDocument(..).
  3. 如果一切顺利,请提交db事务并提交IndexWriter.

这很好,但随着时间的推移,indexWriter.commit()需要越来越多的时间.最初它需要大约0.5秒,但在几百次此类交易之后需要超过3秒.如果脚本运行时间更长,我不怀疑它会花费更长的时间.

到目前为止,我的解决方案是注释掉indexWriter.addDocument(..)indexWriter.commit(),并且indexWriter.deleteAll()在一个Lucene transction/IndexWriter(大约14秒内大约250k文档)中首先使用然后重新添加所有文档来重新创建整个索引.但这显然违背了数据库和Lucene提供的事务方法,它使两者保持同步,并使我们使用Lucene搜索的工具的用户可以看到数据库的更新.

我可以在14秒内添加250k文档,但添加1个文档需要3秒钟,这似乎很奇怪.我做错了什么,我该如何改善这种情况?

java lucene indexing performance

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