小编Han*_*etz的帖子

Java:超类中的synchronized方法获取与子类中的同一个锁,对吧?

class A {
    public synchronized void myOneMethod() {
        // ...
    }
}

class B extends A {
    public synchronized void myOtherMethod() {
        // ...
    }
}

// ...

B myObject;

// ...

myObject.myOneMethod(); // acquires lock
myObject.myOtherMethod(); // same lock?
Run Code Online (Sandbox Code Playgroud)

我如何理解同步模型,我会说是的,确实如此,因为锁/监视器与实例myObject相关联,并且定义方法的位置并不重要.但我是对的吗?如果没有,为什么?如果是的话,你为什么确定,我不是?:-)

java concurrency

17
推荐指数
2
解决办法
4544
查看次数

在Unicode感知浏览器时代,HTML中的命名实体是否仍然是必需的?

我在过去几年中做了很多PHP编程,让我讨厌的一件事就是对Unicode和多字节字符串的弱支持(当然,原则上没有).例如,"htmlentities"似乎是PHP世界中一个常用的函数,我发现当你努力保持每个字符串可以本地化时,它只会在你的数据库中存储UTF-8,只提供UTF -8 webpages等突然间,在你的数据库和浏览器之间的某个地方,这个绝望的天真函数假装每个字节都是一个字符并且混乱了一切.

我只是喜欢,只是倾倒这种功能,他们似乎完全是多余的.这几天仍然需要写'ä' 代替'?至少我的Firefox似乎非常高兴能够显示最奇怪的亚洲字形,只要它们以适当的编码方式提供.

更新:更准确:除了显示HTML标记之外,其他任何东西都是必需的实体(如"<"表示"<")

更新2:

@Konrad:你是说,不,不需要命名实体吗?

@Ross:但是在输入时清理用户输入是不是更好,以保持我的输出逻辑免受这些问题的影响?(当然,假设可以对输入进行可靠的消毒 - 但是,如果不是,那么它可以输出吗?)

html php unicode internationalization

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

MS-SQL是否支持内存表?

最近,我开始将一些应用程序更改为支持MS SQL Server作为替代后端.

我遇到的一个兼容性问题是使用MySQL的CREATE TEMPORARY TABLE来创建内存表,这些表在会话期间保存数据以实现非常快速的访问,而无需永久存储.

MS SQL中的等价物是什么?

一个要求是我需要能够像使用其他临时表一样使用临时表,尤其是JOIN永久表.

mysql sql-server portability rdbms

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

Flash Player是否自动传输会话cookie?

Flash影片中无法访问HTTP Cookie,但我现在已经反复阅读过,Flash Player应该自动处理会话cookie.但是,我没有找到任何关于此的文档,并且它肯定不适用于使用默认JSESSIONID cookie运行Struts后端的Flex客户端.

那么,Flash Player是否处理会话cookie或不处理会话cookie,如果是,我该如何设置?

cookies flash session

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

如何在运行我的代码时调试JVM中发生的Segfaults?

我的Java应用程序已开始定期崩溃,包括SIGSEGV和堆栈数据转储以及文本文件中的大量信息.

我在gdb中调试了C程序,并且已经从IDE调试了Java代码.我不确定如何在正在运行的Java程序中处理类似C的崩溃.

我假设我不是在看这里的JVM错误.其他Java程序运行得很好,Sun的JVM可能比我的代码更稳定.但是,我不知道如何使用Java代码导致段错误.肯定有足够的可用内存,当我上次检查分析器时,堆使用率约为50%,偶尔会出现80%左右的峰值.我可以调查任何启动参数吗?在接近像这样的bug时,什么是好的清单?

虽然我不能够可靠地再现事件,但它似乎也不是完全随机发生的,所以测试并非完全不可能.

ETA:一些血腥的细节

(我正在寻找一种通用方法,因为实际问题可能非常具体.但是,我已经收集了一些信息并且可能有一些价值.)

不久之前,升级我的CI服务器之后遇到了类似的问题(详见此处),但是这次修复(设置-XX:MaxPermSize)没有帮助.

进一步的调查显示,在崩溃日志文件中,标记为"当前线程"的线程永远不是我的,但任何一个称为"VMThread"或称为"GCTaskThread" - 我是后者,它还标有注释"(已退出)",如果是前者,则GCTaskThread不在列表中.这让我想到问题可能是在GC操作结束时.

java segmentation-fault

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

在Java中,post增量运算符如何在return语句中起作用?

给定以下代码,ixAdd会执行您期望的操作,即在增量之前返回ix的值,但在离开函数之前增加类成员吗?

class myCounter {
    private int _ix = 1;

    public int ixAdd()
    {
        return _ix++;
    }
}
Run Code Online (Sandbox Code Playgroud)

当程序离开函数的堆栈帧(或Java中的任何内容)时,我不太确定post/pre increment的通常规则是否也适用于return语句.

java operators

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

我在哪里为Maven Assembly插件添加自定义程序集描述符?

无论是我遗漏了一些明显的东西,还是Maven书Maven Assembly Plugin的主页,在描述如何编写自定义程序集描述符时,都没有说明该文件的去向.这是我项目的一部分吗?它是否进入某个中央Maven配置目录?我必须在某处指定它的位置吗?

maven-2

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

(如何)我可以安全地使用MyBatis和DB-agnostic在SQL查询中使用"LIKE"?

MyBatis中,您可以在SQL中标记应插入参数的位置,如下所示:

SELECT*FROM Person WHERE id = #{id}

此语法激活正确的转义等,以避免SQL注入攻击等.如果您有可信输入并希望跳过转义,则可以逐字插入参数:

SELECT*FROM {tableName} WHERE id =#{id}

现在,我想对不安全的输入进行LIKE搜索,所以我想做的是:

SELECT*FROM Person WHERE name LIKE #{beginningOfName} || '%'

但遗憾的是,重要的数据库服务器不支持||串联语法:

MSSQL - 使用'+'运算符而不是'||'来打破标准.

...

MySQL - 通过重新定义||严重打破了标准 表示OR.

所以,我也可以

SELECT*FROM Person WHERE name LIKE CONCAT(#{beginningOfName},'%')

在这种情况下,只限于MySQL,或者我可以做到

SELECT*FROM Person WHERE name LIKE '{beginningOfName}%'

并且必须自己清理输入.

有更优雅的解决方案吗?

sql mybatis

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

插入节点后,如何保证DAG保持非循环?

我有一个DAG存储我的应用程序中的某些对象之间的关系.当通过在现有顶点下面添加新顶点(即,隐式地在新顶点中创建新边)并且然后(在任何稍后时间)从那里到其他顶点的新边缘来更新此结构时,我想确保图形保持DAG,即我的代码不会创建周期.

我是否必须为每个插入和连接操作添加一个循环检测,或者是否有我可以遵循的规则,这将保证我不会产生循环?

我能想到的一种方法是存储每个节点的拓扑级别,并且只允许指向更高级别(远离源节点)的新边缘.然而,看起来这实际上会让我失去很多我希望通过使用DAG而不是一组普通树来实现的灵活性.

algorithm graph-theory

14
推荐指数
2
解决办法
1975
查看次数

当Java对象的所有成员都为null时,它会使用多少内存?

假设Java对象只占用对象引用的8个字节是正确的,只要它的所有成员都被设置为null或者成员的定义是否因为某种原因已经占用了实例中的空间?

换句话说,如果我有一大堆我希望节省空间的对象,我可以指望将未使用的成员设置null为减少内存占用吗?

java memory optimization

13
推荐指数
2
解决办法
4118
查看次数