小编hvr*_*hal的帖子

在Postgres中向JSON对象添加元素

我在数据库(postgres 9.2.1)中有一个文本字段,其中包含一个json blob.它看起来与此类似,除了所有在一行上,显然:

{
  "keyword": {
    "checked": "1",
    "label": "Keyword"
  },
  "agency_name": {
    "checked": "0",
    "label": "Agency Name"
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要向json数组添加一个元素,使它看起来像这样:

{
  "keyword": {
    "checked": "1",
    "label": "Keyword"
  },
  "something_new": {
    "checked": "1",
    "label": "Something New"
  },
  "agency_name": {
    "checked": "0",
    "label": "Agency Name"
  }
}
Run Code Online (Sandbox Code Playgroud)

我并不关心新数组元素的位置.它可以在agency_name之后.在postgres中有一个简单的方法吗?

string postgresql select json replace

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

如何避免JBoss-Cache区域被驱逐?

我正在尝试为仅在短时间内相关的数据创建jboss-cache.在那之后,应该丢弃数据并释放相应的存储器.

缓存的组织方式如下:

/my_region
    /session_1
        /datanode_1
          attribute1: value1
        /datanode_2
          attribute2: value2
    /session_2
        ...
    /session_3
        ...
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

我的驱逐策略配置如下所示:

<attribute name="EvictionPolicyClass">org.jboss.cache.eviction.LRUPolicy</attribute> 
<attribute name="EvictionPolicyConfig">
   <config>
      <attribute name="wakeUpIntervalSeconds">5</attribute>     
         <region name="/my_region">
     <attribute name="maxNodes">100</attribute>
     <attribute name="timeToLiveSeconds">1800</attribute>
        </region>
   </config>
</attribute>
Run Code Online (Sandbox Code Playgroud)

这样做:当/my_region有超过100个孩子时,最近最少使用的孩子被驱逐,以便该地区缩小回100个孩子.

与问题LRUPolicy是,当退出的节点有孩子,他们没有完全消除,但标有jboss:internal:uninitialized: null代替.此行为对于缓存的实体有意义,以避免从持久存储中获取它们,但它不适用于缓存未持久且永远不会再次访问的实体.

因此,为了删除节点,我创建了一个扩展,LRUPolicy用删除覆盖evict.

@Override
public void evict(Fqn fqn) throws Exception {
    cache_.remove(fqn);
}
Run Code Online (Sandbox Code Playgroud)

这个新策略不会joss:internal:uninitialized: null落后,但它会在到达/my_region时删除节点maxNodes.当我放LRUPolicy回去的时候,我注意到区域节点本身实际上被驱逐并得到了unitialized标签,但最近使用的100个孩子仍然存在.

如何防止该地区被驱逐呢?有没有更好的方法去除而不是驱逐而不将驱逐与过期分开?

我正在使用jboss-cache版本1.3.0.SP4.

java jboss caching jboss-cache

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

两个Eclipse UI Form部分可以抓住多余的垂直空间并正确折叠?

我正在尝试创建一个Eclipse Form,它有三个可折叠部分,一个固定大小,另外两个应该抓住编辑器窗口中所有剩余的垂直空间,这样,当其中一个底部折叠时,另一个将填充所有可用空间.

我已阅读形式的文章,尝试了许多变化grabExcessVerticalSpaceSWT.FILL的和几乎一切的GridData的部分所提供的,但没有运气.我也试图在复合材料中嵌套部分客户端grabExcess...Space,但这也无济于事.调用layout()没有帮助,折叠部分时形式回流,折叠第一部分工作正常.

这是一个包含三个部分的表单的代码,但是其中两个底部部分在折叠时只放弃了它们的一小部分空间,而不是我想要的所有部分:

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.SectionPart;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.events.ExpansionAdapter;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;

public class SectionFormPage extends FormPage {
    private IManagedForm managedForm;

    public SectionFormPage(FormEditor editor) {
        super(editor, "sectionEditor", "title");
    }

    protected void createFormContent(IManagedForm managedForm) {
        this.managedForm = managedForm;
        FormToolkit toolkit = managedForm.getToolkit();
        Composite body = managedForm.getForm().getBody();

        body.setLayout(new GridLayout());

        createSectionWithButton(toolkit, body, new GridData(SWT.FILL, SWT.FILL, true, false)); …
Run Code Online (Sandbox Code Playgroud)

java eclipse user-interface swt eclipse-rcp

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