小编Aic*_*ich的帖子

Java:以度为单位计算两点之间的角度

我需要为自己的Point类计算两点之间的角度,点a应该是中心点.

方法:

public float getAngle(Point target) {
    return (float) Math.toDegrees(Math.atan2(target.x - x, target.y - y));
}
Run Code Online (Sandbox Code Playgroud)

测试1://返回45

Point a = new Point(0, 0);
    System.out.println(a.getAngle(new Point(1, 1)));
Run Code Online (Sandbox Code Playgroud)

测试2://返回-90,预期:270

Point a = new Point(0, 0);
    System.out.println(a.getAngle(new Point(-1, 0)));
Run Code Online (Sandbox Code Playgroud)

如何将返回的结果转换为0到359之间的数字?

java point angle degrees

44
推荐指数
2
解决办法
11万
查看次数

如何从PHP中的301重定向下载链接获取图像?

我正在尝试使用PHP 下载图像以使用GD进行编辑.我找到了许多图像链接解决方案,但这个是下载链接.

编辑:

$curl = curl_init("http://minecraft.net/skin/Notch.png");
$bin = curl_exec($curl);
curl_close($curl);
$img = @imagecreatefromstring($bin);
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码.它显示"301 Moved Permanently".我必须设置CURLOPT吗?

php curl gd image download

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

Java:按指定的度数值旋转另一个

我试图在java中围绕另一个具有指定度数值的2D点旋转,在这种情况下简单地围绕点(0,0)在90度.

方法:

public void rotateAround(Point center, double angle) {
    x = center.x + (Math.cos(Math.toRadians(angle)) * (x - center.x) - Math.sin(Math.toRadians(angle)) * (y - center.y));
    y = center.y + (Math.sin(Math.toRadians(angle)) * (x - center.x) + Math.cos(Math.toRadians(angle)) * (y - center.y));
}
Run Code Online (Sandbox Code Playgroud)

预期为(3,0):X = 0,Y = -3

返回(3,0):X = 1.8369701987210297E-16,Y = 1.8369701987210297E-16

预期为(0,-10):X = -10,Y = 0

返回(0,-10):X = 10.0,Y = 10.0

这个方法本身有问题吗?我将函数移植到(在Lua-GPWiki中将2D点转换为Java).

编辑:

做了一些性能测试.我不会这么想,但矢量解决方案赢了,所以我会用这个.

java geometry 2d point rotation

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

Hibernate实体持续存在巨大内存泄漏,为什么?

我将 Hibernate 与 JPA EntityManager 一起使用,而不是 Hibernate 会话。大多数人似乎建议为每个事务使用新的 EntityManager,所以这就是我正在做的事情。

因此,我连续创建了 10000 个新实体。第一次迭代的堆使用量约为 90 MB,最后一次迭代的堆使用量约为 5 GB。

java内存泄漏

这是我的迭代代码:

    Session session = Core.getDatabase().createEntityManager().unwrap(Session.class);
    Query query = session.getNamedQuery("Account.getAllIds");
    query.setReadOnly(true);
    query.setFetchSize(100);
    ScrollableResults accounts = query.scroll(ScrollMode.FORWARD_ONLY);

    EntityManager entityManager = Core.getDatabase().createEntityManager();
    entityManager.getTransaction().begin();

    while (accounts.next()) {

        int id = (int) accounts.get(0);
        Account account = entityManager.getReference(Account.class, id);

        Core.getDatabase().persist(new AccountTest(account));
        changes++;

    }

    entityManager.close();
    accounts.close();
    session.close();
Run Code Online (Sandbox Code Playgroud)

还有我的持久化函数:

public class Database
{
    private final EntityManagerFactory entityManagerFactory;

    public Database(String host, String database, String user, String password)
    {
        Map<String, Object> properties = new …
Run Code Online (Sandbox Code Playgroud)

java persistence memory-leaks hibernate jpa

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

Java RegEx - 非法字符点

String filter = "a-zA-Z0-9äöüÄÖÜß-\\.";
"^[^" + filter + "]*$", ""

inputtext.replaceAll("^[^" + filter + "]*$", "");
Run Code Online (Sandbox Code Playgroud)

这个Java RegEx过滤器应该从inputtext中删除除过滤器中的字符之外的所有字符,但是我得到一个异常,说明不允许使用该点.我已经用两个斜线逃脱了点.怎么了?

java regex string

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

Java:HashMap.get返回null

我正在用Java编写一个用于AS3中的MMORPG的套接字服务器.我对HashMap.get(byte [])的奇怪行为有一些问题.什么东西可能导致以下问题?

我不使用任何序列化系统,我发送字节,客户端和服务器都知道如何处理接收字节的字节数.客户端发出的第一个请求是要求服务器创建一个播放会话.服务器将生成一个随机会话令牌,作为byte [],包含8个条目,并将令牌添加到HashMap.响应将是9个字节长.第一个定义响应类型(在本例中为字节'+',表示"您已被接受.这是您的令牌.")和字节2-9是令牌.客户端必须存储令牌并将其附加到任何进一步的请求(此概念可以与PHP会话进行比较).

这是将客户端添加到HashMap的代码:

byte[] token = Util.generateToken();

// f is ResultSet entry of JDCB SQL query return value
Client client = new Client(f.getInt("id"), token);
Core.clients.put(token, client);

// I display client.token instead of token to make sure client != null      
Log.log("User " + f.getString("name") + " has logged in with session token " + Util.getHexString(client.token) + ".");
Run Code Online (Sandbox Code Playgroud)

日志:

[01:50:30]用户已使用会话令牌92登录:B7:F8:C6:4B:53:17:3A.

这些是一些调试行,将在任何进一步的请求中显示:

// Show (byte[]) Token as Hex String, 8 bytes long
Log.soc("Token: " + Util.getHexString(buffer.getBytes(1, 9)));

// Show all keys …
Run Code Online (Sandbox Code Playgroud)

java comparison bytearray serversocket hashmap

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