我正在尝试编写需要使用Java中的Graphics2D类绘制许多字符串的应用程序.我需要获取每个String对象的大小(以计算每个字符串的确切位置).在调用paint()方法之前应该完成很多字符串,并且在程序开始时只执行一次(所以我还没有Graphics2D对象).我知道有一个方法Font.getStringBounds()但它需要一个FontRenderContext对象作为参数.
当我试图创建自己的对象时:
FontRenderContext frc = new FontRenderContext(MyFont.getTransform(), true, true)
Run Code Online (Sandbox Code Playgroud)
然后获取字符串边界我总是得到不同的大小,而不是我在paint()方法中使用Graphics2D.getFontRenderContext()方法获得FontRenderContext.差异不大(约1E-3),但我想知道为什么会有任何区别?
但是,有没有更好更安全的方法来获取字符串的大小?
Thnx提前提供任何帮助!
每当我部署jetty应用程序时,我都遇到了这个问题.看起来有些人jar或班级被打破了.
git和maven)~/.m2和重建没有帮助.jar被打破了.试过jar tvf $every_jar,没有找到任何东西.任何想法如何调试这个?看起来真的很神秘,我怀疑是有些文件被破坏了.
Stack trace:
2014-10-21 13:29:25.123:WARN:oejw.WebAppContext:Failed startup of context o.e.j.w.WebAppContext{/,file:/XYZ/},/XYZ/webapps/root
javax.servlet.ServletException: jersey-serlvet
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:553)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:615)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) …Run Code Online (Sandbox Code Playgroud) 我无法在macOS High Sierra上安装Valgrind.它无法通过brew.我试过3.10.之后make install,我收到这条消息:
configure: error: Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x and 14.x (Mac OS X 10.6/7/8/9/10)
Run Code Online (Sandbox Code Playgroud)
Homebrew说:
valgrind: This formula either does not compile or function as expected on macOS
versions newer than Sierra due to an upstream incompatibility.
Error: An unsatisfied requirement failed this build.
Run Code Online (Sandbox Code Playgroud) 我在Windows上运行Tomcat 6.我有"监控Tomcat"系统托盘图标,它允许我启动和关闭Tomcat,但还有另一个小工具,让我可以在我更改类文件时轻松重新加载我的Web应用程序吗?我知道Tomcat附带的"经理"应用程序有一个重新部署选项,但只是想知道是否有一个本机应用程序可以更快更好地做到这一点?
请参阅http://shootout.alioth.debian.org/u32q/compare.php?lang=clojure Clojure比java -server慢得多,而scala则不然.
是什么赋予了?
我已经从http://mirrors.ibiblio.org/pub/mirrors/maven2/dot-index/nexus-maven-repository-index.gz下载了为Maven Central生成的索引.
我想列出这些索引文件中的工件信息(例如groupId,artifactId,version).我已经读过,有一个高级API.似乎我必须使用以下maven依赖项.但是,我不知道使用什么入口点(哪个类?)以及如何使用它来访问这些文件:
<dependency>
<groupId>org.sonatype.nexus</groupId>
<artifactId>nexus-indexer</artifactId>
<version>3.0.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Spring&Jersey应用程序,它非常适合通过简单的资源消费请求.但是,我想返回一个JSON响应 - 包含一个对象的简单JSON序列化.为此,我添加了一个maven依赖项jersey-json.但是,只要我添加此依赖项,我就会在服务器启动时收到此错误:
com.sun.jersey.api.container.ContainerException: No WebApplication provider is present at
com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69) at
com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391)
Run Code Online (Sandbox Code Playgroud)
我并不完全清楚提供商到底是什么,但我很确定应该找到一个默认提供商.
为了完整性,这是我的资源:
@Path("/scan")
@Resource
@Component
public class ScanResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{barcode}")
public List<Scan> getScansForBarcode(@PathParam("barcode") Long barcode){
..snip..
return results;
}
}
Run Code Online (Sandbox Code Playgroud)
Scan对象是一个简单的Entity Bean对象.
mvn依赖是:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我会得到No WebApplication provider is present例外?有关如何解决它的任何想法?
谢谢
使用hibernate,当我尝试启用批量插入时
<property name="jdbc.batch_size">50</property>
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[...] cfg.SettingsFactory INFO - JDBC batch updates for versioned data: disabled
[...] cfg.SettingsFactory INFO - Order SQL inserts for batching: disabled
Run Code Online (Sandbox Code Playgroud)
然后这个:
[...] jdbc.AbstractBatcher DEBUG - Executing batch size: 1
Run Code Online (Sandbox Code Playgroud)
从来没有超过batch size: 1基本.
我错过了一个设置吗?
从PHP 5.0开始,默认启用SQLite扩展.从PHP 5.4开始,SQLite扩展仅可通过PECL获得.
好吧,我在PHP编程方面相对较新,我想知道官方PHP网站引用的信息是什么意思?
我编写了一些运行SQlite而不是MySQL数据库的应用程序,如果它将从未来版本的PHP中弃用,我会非常担心.
它是什么意思"从现在开始,只通过PECL"?我知道SQlite 可用,但这并不意味着:
PHP团队将至少关注PHP/SQlite集成的未来发展
我们可以期待网络托管服务提供商将错过安装SQlite扩展,因为它不再是默认的?
当PHP"扔掉"PECL的扩展时,有人有经验吗?提前致谢.
我似乎遇到了一些tcp请求有时被"卡住"的问题,比如它正在等待一些响应,但连接已被"切断",因此响应将永远不会到来.HttpURLConnection的预期行为是否具有默认超时?是否设置了合理的默认设置,以便我无法默认进入这种奇怪的"挂起"状态?