小编sve*_*eri的帖子

小方法的性能偏差

我们有一个OSGi容器,里面有很多产品,其中一个是我们的产品.
我们正在运行一些性能测试,并且存在一个奇怪的问题,即每个OSGi容器重启都会导致我们的一些测试的性能偏差高达400%.
通过一些测试和事情,我能够跟踪这个方法:

public static Method getMethodForSlotKey(Class<?> cls, String slotKey, String methodType) {

    Method[] methods = cls.getMethods();

    if (methods != null && methods.length > 0) {
        for (Method method : methods) {
            String methName = method.getName();
            if (methName.startsWith(methodType)) {

                IDataAnnotation annot = method.getAnnotation(IDataAnnotation.class);
                if (annot != null) {
                    String annotSlotKey = annot.SlotKey();
                    if (annotSlotKey != null && annotSlotKey.equals(slotKey)) {
                        Class<?>[] paramTypes = method.getParameterTypes();
                        // for now, check length == 1 for setter and 0 for getter.
                        int len = SET_TXT.equals(methodType) …
Run Code Online (Sandbox Code Playgroud)

java reflection performance osgi

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

Jess - 从 Java 11 到 Java 13+ 的性能回归

我们正在使用 Jess,它是一个用 Java 编写的规则引擎。它已经变得相当古老,并且大部分是使用 Java 1.5 和更低版本的语言功能编写的。现在,我们已经使用它很多年了,在 Java 升级过程中从未注意到任何问题,直到现在,当我们计划从 Java 11 切换到 Java 17 时。

仅通过切换 java 版本,我们的运行时间就变慢了 30-40%。我们已经做了很多测试,但无法真正找到罪魁祸首。
例如,我们检查了不同的 Java 版本和不同的供应商(eclipse、azul 和 orcacle),13+ 的所有版本都比 Java 11 慢。

使用 VisualVM,我能够指出一些方法,但没有任何具体的内容可以说明这可能是问题所在。
看看它,似乎有多个性能回归加在一起就是一个很大的回归,但这似乎很不现实。

一些函数如下所示:

    private synchronized Map findVariable(String key) {
        Context c = this;
        while (c != null) {
            Map ht = c.getVariables();
            Value v = (Value) ht.get(key);
            if (v != null)
                return ht;
            else
                c = c.m_parent;
        }
        return null;
    }

    private synchronized Map getVariables() {
        if (m_variables == null)
            m_variables …
Run Code Online (Sandbox Code Playgroud)

java performance regression java-11 java-13

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

从表单绑定play framework 2.0中的多个对象

我拼命地尝试从表单提交中接收值列表并将其绑定到对象列表.

什么有效是检索单行:

//class
case class Task(name: String, description: String)

val taskForm: Form[Task] = Form(
  mapping(
  "name" -> text,
  "description" -> text

  )(Task.apply)(Task.unapply)
)


//form
<tr>
  <td><input name="name" type="text" class="span2" placeholder="Name..."></td>
  <td><textarea name="description" class="autoexpand span7" rows="1"     placeholder="Description..."></textarea>
  </td>
</tr>

//receiving action:
val task = taskForm.bindFromRequest.get
Run Code Online (Sandbox Code Playgroud)

但是现在我想提交多个类型为task的对象,例如:

<tr>
  <td><input name="name[0]" type="text" class="span2" placeholder="Name..."></td>
  <td><textarea name="description[0]" class="autoexpand span7" rows="1" placeholder="Description..."></textarea></td>                   
</tr>
<tr>
  <td><input name="name[1]" type="text" class="span2" placeholder="Name..."></td>
  <td><textarea name="description[1]" class="autoexpand span7" rows="1" placeholder="Description..."></textarea></td>                   
</tr> 
Run Code Online (Sandbox Code Playgroud)

现在执行taskForm.bindFromRequest.get失败.

有人想出一个解决方案吗?或者你处理这种情况完全不同?

forms binding scala playframework-2.0

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

主键序列不存在

我有一个 postgresql 数据库,在迁移到新版本并导入旧数据后,我的主键出现了问题:

\n\n
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint   \n"browser_link_pkey"  Detail: Key (id)=(173) already exists.\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我想重置我的序列,但运行:

\n\n
select nextval(\'browser_link_id_seq\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

也失败:

\n\n
column \xe2\x80\x9ebrowser_link_id_seq\xe2\x80\x9c does not exist\nSQL Status:42703\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是建表的SQL

\n\n
CREATE TABLE browser_link (\n    id bigint NOT NULL,\n....\n);\nALTER TABLE ONLY browser_link\nADD CONSTRAINT browser_link_pkey PRIMARY KEY (id);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试选择串行序列,但似乎不存在:

\n\n
postgres=# \\connect historify\nYou are now connected to database "historify" as user "postgres".\nhistorify=# select pg_get_serial_sequence(\'browser_link\', \'id\');\n pg_get_serial_sequence\n------------------------\n\n(1 row)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在使用 postgresql 9.5.3。另外,在发生错误之前,id 列确实按预期增加,因此它确实可以工作。

\n\n

现在我的两个问题:

\n\n
    \n …

postgresql primary-key sequence auto-increment

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