小编mch*_*chr的帖子

APNS 从多个服务器发送通知

我正在编写一个 iOS 应用程序,它将从后端服务器通过 APNS 发送通知。

我可以配置多个服务器以连接到 APNS 并发送通知吗?如果是这样,可以为单个应用程序发送通知的服务器数量是否有限制?

我在 Apple 网站上找不到任何有关此的详细信息(例如http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html

iphone apple-push-notifications ios

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

在加载下收集Java heapdump

我正在对运行在Java 6上的Tomcat 6运行负载.我想在Tomcat服务器负载时收集Java堆的堆转储.我通常使用jmap -dump来收集我的heapdumps.

但是,当我尝试在Tomcat处理高负载时执行此操作时,我发现heapdump集合失败.

jmap是从负载下的进程收集堆转储的最佳工具吗?导致jmap无法收集堆转储的可能原因是什么?

如果jmap不是最好的工具 - 哪个更好?

我可以完全接受jmap(或其他工具)在进行堆转储时在Java进程中停止世界.

java tomcat

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

详细的Java GC日志

当使用以下args时,sun JVM将详细的GC日志输出到StdOut.

 -verbose:gc
 -XX:+PrintGCTimeStamps
 -XX:+PrintGCDetails
Run Code Online (Sandbox Code Playgroud)

但是,我不希望StdOut中的输出,我真的不需要每个GC的细节.是否可以以编程方式访问用于这些日志的数据?我希望能够记录我自己的日志文件分配/收集的内存量,理想情况下是平均对象大小.

java garbage-collection

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

PostgreSQL DELETE/INSERT吞吐量问题

我在PostgreSQL 9.0上有DELETE/INSERT序列的吞吐量问题.我正在寻找改善这种情况的想法.

在我们可用的硬件上,我可以以3000/s的持续速率(在10个表中均匀地)将新行插入到数据库中,远远超出我通常测试的每个表中的1m行.但是,如果我切换到我们删除行并使用不同数据重新插入它的模式,性能会下降超过一个数量级到250行/秒(再次,在10个表中均匀分布).

任何表都没有约束.每个表中有2个索引列,总索引大小(每个表1m行)为1GB,在shared_buffers(2GB)内很容易.总数据大小(每个表1m行)为12GB,远远低于系统总RAM.这是一个影子数据库,我们可以在紧急情况下重建,所以我们关闭fsync.

看起来当我们处于填充模式时,我们受益于非常低的磁盘寻道时间,因为数据被追加.但是,当我们切换到更新模式时,有很多寻求进行(大概删除旧行).随机磁盘的成本约为8毫秒(=每秒125帧).有没有办法(没有硬件更改)我们可以显着提高UPDATE/re-INSERT操作的性能?

编辑1:我正在两个不同规格的硬件平台上进行性能测试.我之前引用的数字来自更高规格的平台.我刚刚在较低规格的平台上完成了测试.在此测试中,我尽可能快地插入新行,每10秒记录一次插入速率,直到我插入了100万行.此时,我的测试脚本切换到更新随机行.

Perf结果图

该图显示测量的更新速率在人口期间对所有10个表/秒的约150次更新,并且更新率对所有10个表/秒的<10次更新.

@wildplasser - 机器是真机,而不是VM.10个表都具有以下模式.

CREATE TABLE objecti_servicea_item1
(
  iss_scs_id text,
  iss_generation bigint,
  boolattr1 boolean,
  boolattr2 boolean,
  boolattr3 boolean,
  boolattr4 boolean,
  boolattr5 boolean,
  boolattr6 boolean,
  boolattr7 boolean,
  boolattr8 boolean,
  boolattr9 boolean,
  boolattr10 boolean,
  boolattr11 boolean,
  boolattr12 boolean,
  boolattr13 boolean,
  boolattr14 boolean,
  boolattr15 boolean,
  boolattr16 boolean,
  boolattr17 boolean,
  intattr1 bigint,
  intattr2 bigint,
  intattr3 bigint,
  intattr4 bigint,
  intattr5 bigint,
  intattr6 bigint,
  intattr7 bigint,
  intattr8 bigint,
  intattr9 bigint,
  intattr10 bigint,
  intattr11 bigint,
  intattr12 bigint,
  intattr13 bigint,
  intattr14 bigint, …
Run Code Online (Sandbox Code Playgroud)

sql postgresql performance

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

删除SWT TreeItem图像缩进

我正在尝试构建一个SWT树,它在顶层有图标但在下一层没有.

树截图

有没有办法避免似乎留给我不使用的图像的空白区域?我尝试使用以下代码片段,但没有做我想要的.

SWT.MeasureItem:

tree.addListener(SWT.MeasureItem, new Listener()
{
  @Override
  public void handleEvent(Event event)
  {
    TreeItem item = (TreeItem)event.item;
    Image image = item.getImage();
    if (image == null)
    {
      event.x -= 40;
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

SWT.PaintItem:

tree.addListener(SWT.PaintItem, new Listener()
{
  @Override
  public void handleEvent(Event event) {
    TreeItem item = (TreeItem)event.item;
    Image image = item.getImage();
    if (image == null)
    {
      event.x -= 40;
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我只是希望文本可以在左侧进一步绘制.

java eclipse swt

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

堆转储中不可能的Java内存引用

我在下午7:41进行了Java堆转储,我正在使用Eclipse内存分析工具进行分析.堆转储包括20个会话对象.

在我的堆中的其中一个会话对象上使用Path to GC Roots命令显示以下3个对会话对象的引用.

  • Finalizer线程拥有的"未完成"链表的终结器引用.我的目标是排在第3位,最终确定.
  • 来自消息处理程序线程的对会话对象的强引用,该消息处理程序线程本身是从计划在晚上7:11运行的清理TimerTask引用的.
  • 来自WeakHashMap $ Entry的会话对象的弱引用.WeakHashMap通过静态强引用保持活动状态.

当会话对象仍然具有强引用和弱引用时,它如何才能在终结器队列中?

在剩余的19个会话对象中,还有1个在终结器队列中,并且具有类似的弱引用.所有其他18个会话对象仅被弱引用.为什么GC没有清除这些弱的参考?

几点概括:

  • 对象只有在他们的弱引用被清除后才有资格完成(http://download.oracle.com/javase/6/docs/api/java/lang/ref/package-summary.html)
  • 会话对象没有可以复活它的终结器,即使它已经完成,它也不能在对象仍处于其他对象后面的未终结队列中时运行.
  • 我的应用程序不使用Phantom引用,它是唯一一个对象有资格完成后应该能够存在的引用.即使我的应用程序确实使用了幻像引用,这些对象也不会公开它们对所持对象的引用.

java garbage-collection memory-leaks

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

如何为SWT Java应用程序设置高质量的OSX停靠图标

我编写了一个SWT Java应用程序,并希望将其配置为在OSX dock中使用高质量图标.这是我目前的代码:

// Prepare window
final Shell window = new Shell();

// Load icons
Display display = window.getDisplay();
ClassLoader loader = InTraceStandaloneUI.class.getClassLoader();
InputStream is16 = loader.getResourceAsStream(
                 "org/intrace/icons/intrace16.gif");
Image icon16 = new Image(display, is16);
is16.close();
InputStream is32 = loader.getResourceAsStream(
                 "org/intrace/icons/intrace32.gif");
Image icon32 = new Image(display, is32);
is32.close();
window.setImages(new Image[] {icon16, icon32});
Run Code Online (Sandbox Code Playgroud)

https://github.com/mchr3k/org.intrace/blob/master/org.intrace/src/org/intrace/client/gui/InTraceStandaloneUI.java

这适用于加载16x16和32x32徽标,这些徽标在Windows上看起来不错,但OSX使用的徽标看起来仍然非常像素化.我只需要指定具有更高分辨率的第三个版本,还是应该使用不同的图像格式或API?

java macos swt

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

如何正确设置CTabItem的边框样式

我编写了一个Eclipse插件,它提供了一些使用CTabFolder组件的UI.

应用截图

Eclipse提供的CTabItems在激活时具有蓝色边框,在非活动时具有白色边框(如果CTabItem是Eclipse视图,则为灰色).

我创建的CTabItems总是以白色为边框,活动选项卡上的文本用下划线标出.

如何控制CTabItems的样式以更紧密地匹配Eclipse选项卡?

编辑:

我提出了以下代码,它从活动的Eclipse主题中提取正确的颜色.

IWorkbench workBench = PlatformUI.getWorkbench();
ITheme theme = workBench.getThemeManager().getCurrentTheme();
ColorRegistry colreg = theme.getColorRegistry();

Color c1 = colreg.get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START);
Color c2 = colreg.get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_END);
Run Code Online (Sandbox Code Playgroud)

但是,这并不理想,因为IWorkbenchThemeConstants位于eclipse ui内部包中.

是否有另一种公共方式来引用这些内部IWorkbenchThemeConstants引用的相同颜色?

java eclipse swt

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

跨平台UI间距/填充

我使用SWT UI库和MigLayout布局库编写了一个Java UI.

此页面显示了Windows,Linux和OSX上UI的屏幕截图:http://mchr3k.github.com/org.intrace/screenshots.html

在Linux和OSX上,我的UI有更多的填充和间距,我觉得浪费了大量的屏幕空间.这些平台是正常的吗?如果没有,解决这个问题的最佳方法是什么?

编辑:链接的屏幕截图现在已经更新,不再在OSX上显示额外的差距,因为我已经明确地将我的一些UI元素的边距设置为0. OSX UI仍然相当分散,但我认为这是正确的该平台.

java linux macos swt miglayout

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