小编rth*_*sen的帖子

如何在Java中有效地绘制SVG图像?

参考: 旋转BufferedImage时如何产生清晰的绘画效果?

在引用的问题中,我询问了关于光栅化图像变换的质量.有人建议我应该使用SVG图像,因为转换的质量会更高,更灵活.(这是对的,是吗?)

所以我花了很多时间试图弄清楚如何使用Batik库,阅读他们的API和谷歌搜索,看看其他人是否有同样的问题.

到目前为止,我没有遇到任何重大问题,所以我希望有人可以帮助我.这实际上是我想做的事情:

与使用BufferedImages的AffineTransform和Graphics2D的drawImage(...)类似,
是否可以(以及如何)转换然后将SVG图像/对象绘制到JPanel上?

在我想要绘制它之前我在思考,我可以先根据AffineTransform对象以某种方式对其进行栅格化,然后使用Graphics2D绘制它,但如果我每次都要在绘制图像之前进行栅格化...肯定会有更好的效果做法.

所以经过深思熟虑,我想知道SVG是否真的是这样的方式.那么我应该采取的最佳方法是什么?
光栅化与矢量图像.

注意:创建SVG文件根本不是问题.

谢谢.

java svg batik

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

使用Java下载文件随机冻结

当我尝试下载文件时(在这种情况下它只是一个图像,但真正的应用程序是一种更新机制),InputStream似乎冻结了read.我很确定我的代码没问题,所以我想知道为什么会这样,如果它只是在我的电脑上.有人可以运行这个吗?请注意,Timer它仅用于调试目的.

非常感谢你.

这是一个显示问题的视频:视频

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.URL;
import javax.swing.Timer;

public class FileDownloader {

    public final static int BUFFER_LENGTH = 1 << 14;

    private static Timer timeoutTimer = new Timer(5000, new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Timeout");
            System.exit(0);
        }
    });

    public static void main(String [] args) throws Exception{
        URL url = new URL("http://host.trivialbeing.org/up/tdk-aug3-jokr-high-res-2.jpg");
        download(url, new File("joker.jpg"));
    }

    public static void download(final URL url, final File dest) …
Run Code Online (Sandbox Code Playgroud)

java io

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

我应该使用永远不会改变的字段值的访问器吗?

我们以这堂课为例:

public class Student{
    private String name;
    private String id;

    public Student(String name, String id){
        this.name = name;
        this.id = id;
    }

    ... getters and setters for both fields
Run Code Online (Sandbox Code Playgroud)

并将其与此进行比较:

public class Student{
    public final String name;
    public final String id;

    public Student(String name, String id){
        this.name = name;
        this.id = id;
    }
 }
Run Code Online (Sandbox Code Playgroud)

我认为不需要访问者.
这会被认为是糟糕的OO设计吗?

java oop encapsulation

5
推荐指数
2
解决办法
328
查看次数

为什么Java不在循环中存储条件的值?

例如:

for(int i = 0; i < 20 * 40 * 60 * 80; i++){ ... }
Run Code Online (Sandbox Code Playgroud)

相比:

for(int i = 0; i < 3840000; i++){ ... }
Run Code Online (Sandbox Code Playgroud)

第一个循环比第二个循环运行得慢得多(做了一些时间试验),即使条件的值在整个迭代的任何阶段都不会改变.当然,使用方法会有所不同,因为该值可能会发生变化(即使它可能不应该).我只是想知道为什么Java不缓存/临时该值.

long fact10 = factorial(10);
for(long n = 0; n < fact10; n++)    vs   for(long n = 0; n < factorial(10); n++)
Run Code Online (Sandbox Code Playgroud)

java iteration compiler-optimization

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

Haskell Assignment - 将String拆分为单词所需的方向

我们几周前开始写一篇关于Haskell的论文,刚收到我们的第一份作业.我知道SO不喜欢家庭作业问题,所以我不打算问怎么做.相反,如果有人能用这个推动我朝着正确的方向发展,我将非常感激.看来它可能不是一个特定的问题,它会更适合在讨论/社区维基中吗?

问题: Tokenize一个字符串,即:"Hello,World!" - > ["Hello","World"]

来自Java背景,我不得不忘记关于通常的方法.问题是我对Haskell仍然很无能为力.这就是我想出来的:

module Main where

main :: IO()
main = do putStrLn "Type in a string:\n"
          x <- getLine
          putStrLn "The string entered was:"
          putStrLn x
          putStrLn "\n"
          print (tokenize x)

tokenize :: String -> [String]
tokenize [] = []
tokenize l = token l ++ tokenize l

token :: String -> String
token [] = []
token l = takeWhile (isAlphaNum) l
Run Code Online (Sandbox Code Playgroud)

什么是第一个明显的错误?谢谢.

haskell

3
推荐指数
1
解决办法
583
查看次数

在迭代时修改列表 - 为什么不呢?

几乎每个关于这个主题的教程和SO答案都坚持你在迭代它时不应该修改列表,但是如果代码有效,我不明白为什么这是一件坏事.例如:

while len(mylist) > 0:
    print mylist.pop()
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

python list

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

转换句子会产生无限循环 - 但是如何?

我无法弄清楚这出错的地方.请注意,我对Prolog很新,我确定我错过了一些东西 - 不知道那可能是什么.有人可以帮帮我吗?

谢谢,这是我的代码:

printSentence([]).   
printSentence([W|[]]) :-
    write(W),
    write('.'),
    nl.  
printSentence([W|R]) :-
    write(W),
    write(' '),
    printSentence(R).

transform([], Result).  
transform([Word|Rest], Result) :-
    replace(Word, Replacement),
    append(Result, Replacement, NewResult),
    transform(Rest, NewResult).

replace(my, your).
replace(i, you).
replace(you, me).
replace(am, are).
replace(Word, Word).

test :-
    X = [you, are, my, only, hope],
    transform(X, Result),
    printSentence(Result).
Run Code Online (Sandbox Code Playgroud)

prolog text-manipulation non-termination failure-slice

3
推荐指数
1
解决办法
305
查看次数

您是否应该始终关闭连接?

到目前为止,我所见过的所有JDBC代码每次都会创建和关闭一个连接。但是,我想知道是否有必要,因为我的代码似乎运行得很好,并且每次都在重用相同的连接:

这是一个不好的方法吗?

public static int getCount() {
    synchronized (DATABASE_ACCESS_LOCK) {
        try (ResultSet rs = QUERY.executeQuery("SELECT COUNT(1) FROM " + TABLE_CLIENTS)) {
            return rs.getInt(1);
        } catch (SQLException ex) {
            ex.printStackTrace();
            return -1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java sqlite concurrency jdbc

3
推荐指数
1
解决办法
127
查看次数

3
推荐指数
1
解决办法
1656
查看次数

拥有嵌套的公共接口是否完全可以接受?

我有几个接口都只有一个方法,它们都非常相似.我知道它有效,但我应该或不应该像这样分组:

public class InterfaceGroup {
    public interface Type1 {
        public void method(int a);
    }
    public interface Type2 {
        public void method(String s);
    }
    public interface Type3 {
        public void method();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在外部引用它们InterfaceGroup.Type1.

java

3
推荐指数
1
解决办法
74
查看次数