小编How*_*wie的帖子

java中的protobuf是线程安全的吗?

我定义了以下 protobuf msg:

message Counts {
    repeated int32 counts = 1;
}
Run Code Online (Sandbox Code Playgroud)

它在线程之间共享RW作为构建器共享:

private final Counts.Builder countsBuilder;
Run Code Online (Sandbox Code Playgroud)

线程R只会读取countsBuilderW只会写入countsBuilder. 共享构建器将被读取、写入和(在某个时候)构建和通过网络发送。

AFAIK,对消息的并发读取很好,但是开发人员必须在更高级别同步其他任何内容吗?所以,我实际上不能同时写入和读取共享构建器?

如果这不是本质上线程安全的,我正在考虑使用某种线程安全的Collection<Integer>,我将用于读/写,并且(在某个时候)将在通过网络发送之前创建一个全新的消息。或者我错过了什么?

谢谢!

编辑 1:我使用 protobuf 2.4.1 和 java 6

编辑 2:一些术语和拼写修复。

java thread-safety protocol-buffers

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

优化Dictionary.TryGetValue()

我正在编写计算成本高昂的应用程序(NLP机器学习任务),需要进行优化.

由于我的代码有很多for循环,我使用Parallel.For(和变体)来并行化最外层的循环.我还使用数组和Dictionarys来构建一些可以大大降低成本的索引.

VS2010的分析器表明应用程序花费了大部分时间Dictionary.TryGetValue()(这是索引的副产品).

这引出了一个问题,我是否可以做得更好?如何?

我的第一个问题是,是否存在ConcurrentDictionary.TryGetValueDictionary.TryGetValue我的情况更好的 普遍共识- 许多读者,没有作家?

我没有动力编写自己的hashmap,因为它可能比.NET的集合更糟糕.但是有没有库可以保证我的方案更快的查找?

也许哈希码实现正在减慢速度?

c# multithreading .net-4.0

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

Java中的软件自动更新程序

我正在开发一种软​​件,我会提前和经常修补,所以我正在研究用Java制作的autoupdater.

如果我谷歌"自动更新程序java"它给了我Java的自动更新程序,而不是一般的软件.

编辑:Java Web Start和JNLP不是可行的选择,因为它们是错误的并且根本不可靠(或者是一般意见).

java

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

MouseOver 不会在重叠的 div 上冒泡吗?

使用 jQuery 2.1,Meyer 的 2.0 CSS重置脚本,针对 IE9+ 和现代浏览器。

我制作了两个重叠的 div。我在听mouseovermouseout事件对他们两个。小提琴:http : //jsfiddle.net/vbkjL/1/

预期行为:鼠标悬停事件在两个 div 上触发。

实际行为:鼠标悬停事件仅在顶部 div 上触发。

如何使鼠标悬停事件气泡到底部 div?

HTML

<div id="container">
    <div id="top"></div>
    <div id="below"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

jQuery

 $("#top")
     .mouseover(function () {
     console.log("top");
 })
     .mouseout(function () {
     console.log("top out");
 });

 $("#below")
     .mouseover(function () {
     console.log("bottom");
 })
     .mouseout(function () {
     console.log("bottom out");
 });
Run Code Online (Sandbox Code Playgroud)

CSS

#top {
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
    height: 100px;
    border: 1px red solid;
}
#below { …
Run Code Online (Sandbox Code Playgroud)

javascript css

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

对每个 PHP 请求执行

我使用的是 IIS 8 和 PHP 7,没有额外的框架。

PHP 中是否有钩子可以在处理 PHP 文件之前或之后执行一些 PHP 代码?或者在提出请求之前或之后?

我基本上想在用户点击其他地方(请求不同的 PHP 文件)或 5 分钟过去后取消设置会话变量。

php

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

javascript OOP中的公共方法

我想用一些方法创建一个javascript类,我可以在类中以及类之外调用这些方法.如果愿意,我想制作一个"公开"的方法.我想要getTextAreaElementappendTextArea成为这样的方法.

我已经展示了迄今为止我能想到的最佳代码片段.我也尝试将方法定义为原型以及类(this.func = ...).但是,这只是让我以外(调用方法new Socket().appendTextArea("osgjr89");),但不是类本身内!下面的代码片段显示了完全相反的实现,我无法在类之外调用该方法,但可以在其中调用它.

错误:

未捕获的TypeError:对象#Socket没有方法'appendTextArea'

socket.js:

function Socket() {
var socket;
var canvas = document.getElementById('c');
var context = canvas.getContext("2d");

if (window.WebSocket) {
    socket = new WebSocket("ws://localhost:9012/websocket");
    socket.binaryType = 'arraybuffer';
    socket.onopen = onopen;
    socket.onmessage = onmessage;
    socket.onerror = onerror;
    socket.onclose = onclose;
} else {
    alert("Your browser does not support Web Socket.");
}

function getTextAreaElement() {
    return document.getElementById('responseText');
}

function appendTextArea(newData) {
    var el = getTextAreaElement();
    el.value …
Run Code Online (Sandbox Code Playgroud)

javascript oop methods

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

XAML没有看到我的IValueConverter类

我正在创建一个简单的WP8,但我在控件上隐藏(更改Visibility属性)时遇到麻烦.

在XAML中,我添加了xmlns:local="clr-namespace:MyProjectName"(我也尝试过using).然后,XAML的结构如下:

<phone:PhoneApplicationPage
x:Class="MyProjectName.Pages.Main"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyProjectName"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True" Margin="0,4,0,-4" Background="#FFBD3F3F">

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}" >
    <Grid x:Name="ContentPanel" Grid.Row="1" >
        <Grid.Resources>
            <local:VisibilityFormatter x:Key="FormatConverter" />
        </Grid.Resources>

        <phone:LongListSelector Grid.Row="4">
            <phone:LongListSelector.ItemTemplate>
                <DataTemplate>
                     <TextBlock Text="{Binding Obj}" 
                                     Visibility="{Binding ObjVisibility, 
                                     Mode=OneWay, 
                                     Converter={StaticResource FormatConverter}}" />
                </DataTemplate>
            </phone:LongListSelector.ItemTemplate>
        </phone:LongListSelector>
    </Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

问题在于<local:...>:The name "VisibilityFormatter" does not exist in the namespace "clr-namespace:MyProjectName".

该类定义如下:

using System;
using System.Collections.Generic;
using …
Run Code Online (Sandbox Code Playgroud)

c# xaml windows-phone-8

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