小编Yrl*_*lec的帖子

Google协议缓冲区与ASN.1相比如何?

Google Protocol Buffers和ASN.1(使用PER编码)之间最明显的区别是什么?对于我的项目,最重要的问题是序列化数据的大小.有没有人在两者之间做过任何数据大小的比较?

performance serialization asn.1 protocol-buffers

30
推荐指数
3
解决办法
8193
查看次数

使用Java 7的ProGuard + Maven

我正在尝试将ProGuard作为Maven构建过程的一部分.问题是官方的Maven插件使用的是ProGuard 4.3,它不支持Java 7.有没有简单的方法让插件使用Proguard 4.8?

我已经尝试指定插件的依赖项,但ProGuard似乎有一个新的Maven模块结构(proguard-base,proguard-parent等),所以插件不能使用任何版本> 4.4.这是我目前的pom看起来如何:

 <plugin>
                <groupId>com.pyx4me</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <proguardVersion>4.8</proguardVersion>
                    <obfuscate>true</obfuscate>
                    <options>
                        <option>-allowaccessmodification</option>
                        <option>-keep public class com.degoo.ui.ClientBackendStarter { public *; public static *; }</option>
                    </options>
                    <injar>${project.build.finalName}.jar</injar>
                    <outjar>${project.build.finalName}-small.jar</outjar>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                        <lib>${java.home}/lib/jsse.jar</lib>
                    </libs>
                    <addMavenDescriptor>false</addMavenDescriptor>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard</artifactId>
                        <version>4.8</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

有什么建议?

java proguard maven

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

优化算术编码器

我正在优化名为PackJPG的C++库的编码步骤

我用英特尔VTune描述了代码,发现当前的瓶颈是PackJPG使用的算术编码器中的以下功能:

void aricoder::encode( symbol* s )
{   
    // update steps, low count, high count
    unsigned int delta_plus_one = ((chigh - clow) + 1);
    cstep = delta_plus_one / s->scale;
    chigh = clow + ( cstep * s->high_count ) - 1;
    clow  = clow + ( cstep * s->low_count );

    // e3 scaling is performed for speed and to avoid underflows
    // if both, low and high are either in the lower half or in the higher half
    // …
Run Code Online (Sandbox Code Playgroud)

c++ optimization performance x86 assembly

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

Azure表存储上的自动增量

我目前正在开发Azure表存储的应用程序.在该应用程序中,我有一个表,它将具有相对较少的插入(几千/天),并且这些实体的主键将在另一个表中使用,该表将具有数十亿行.

因此,我正在寻找一种方法来使用自动递增的整数而不是GUID作为小表中的主键(因为它将节省大量存储和插入的可伸缩性并不是真正的问题).

关于这个主题已经有过一些讨论,例如http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/6b7d1ece-301b-44f1-85ab-eeb274349797.

但是,由于并发问题可能很难调试和发现,我对自己实现这一点感到有点不舒服.因此,我的问题是,是否有一个经过充分测试的阻止?

concurrency primary-key auto-increment identity-column azure-storage

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

查找字符串是否包含集合中的任何字符串

我正在尝试提高我所拥有的Java函数的性能,该函数确定给定的搜索字符串是否包含集合中> 0的字符串.这可能看起来像是过早优化但功能被称为A LOT,因此任何加速都会非常有益.

代码目前看起来像这样:

public static boolean containsAny(String searchString, List<String> searchCollection) {
    int size = searchCollection.size();
    for (int i = 0; i < size; i++) {
        String stringInCollection = searchCollection.get(i);
        if (!Util.isNullOrEmpty(stringInCollection)) {
            // This is a performance optimization of contains.
            if (searchString.indexOf(stringInCollection, 0) > -1) {
                return true;
            }
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

该列表通常具有大约30个元素,并且在每次调用之间重复使用相同的集合.

上面的代码是一个非常简单的线性搜索.除非我们改变数据结构以使其优于O(n),否则我认为它不会得到显着改善.是否有任何数据结构可以让我这样做?

java string collections data-structures

17
推荐指数
3
解决办法
2079
查看次数

在Java中创建唯一的时间戳

我需要在Java中创建一个时间戳(以毫秒为单位),该时间戳保证在该特定VM实例中是唯一的.我需要一些方法来限制System.currentTimeMillis()的吞吐量,这样它每ms最多返回一个结果.关于如何实现的任何想法?

java concurrency timestamp throttling epoch

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

为什么ServerSocket.setSocketFactory是静态的?

我正在尝试在Java中使用带有SSL的自定义SocketImpl.因为我需要设置ServerSocket的套接字工厂.我现在注意到它是静态的,这给我带来了一些麻烦,因为我想为它提供一些在每个ServerSocket实例之间不同的参数.有谁知道让它静止的理由?对我来说,感觉就像一个不必要的约束,只会在你的应用中引入更多的全局状态.

更新 似乎有一些混乱,为什么这是一个麻烦.这造成的问题是它迫使我在整个应用程序中使用相同的工厂.如果我想在一个地方使用默认的SocketImpl而在另一个地方使用自定义的SocketImpl怎么办?如果不诉诸一些丑陋的反思黑客,就无法做到这一点,因为工厂一旦设置就无法改变.我也无法让我的工厂创建默认实现,因为SocksSocketImpl是包私有的.

java serversocket

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

Amazon S3中的并发性

我目前正在构建一个系统,其中S3将被Internet上的许多计算机用作持久性哈希集(S3 URL是从数据中推断出来的).如果两个节点存储相同的数据,那么它将使用相同的密钥存储,因此不会存储两次.当一个对象被删除时,我需要知道其他一些节点是否也在使用该数据.在那种情况下,我不会删除它.

现在我通过添加一个存储节点列表作为写入S3的数据的一部分来实现它.因此,当节点存储数据时,会发生以下情况:

  1. 从S3读取对象.
  2. 反序列化对象.
  3. 将新节点的id添加到存储节点列表中.
  4. 序列化新对象(要存储的数据和节点列表).
  5. 将序列化数据写入S3.

这创建了一种幂等引用计数的形式.由于通过Internet的请求可能非常不可靠,我不想只计算存储节点的数量.这就是我存储列表而不是计数器的原因(如果节点发送相同的请求> 1次).

只要两个节点不同时写入,此方法就可以工作.S3(据我所知)并没有提供任何方法来锁定对象,以便所有这5个步骤都成为原子.

你会如何解决这个并发问题?我正在考虑实现某种形式的乐观并发.我该如何为S3做到这一点?我应该使用完全不同的方法吗?

c# concurrency distributed locking amazon-s3

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

用于进一步(无损)Jpeg压缩的库

我正在寻找一个专门用于压缩Jpegs而不改变图像的库.我找到了PackJpeg,但它没有提供任何源代码,你也不允许在商业上使用它.

compression jpeg lossless-compression

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

快速乘法和减法模数为素数

我需要优化一些代码,其中我将一个int(32位)的向量乘以标量模p(其中p是素数(2 ^ 32)-5),然后从另一个向量模p中减去该向量.

代码如下所示:

public static void multiplyAndSubtract(long fragmentCoefficient, long[] equationToSubtractFrom, long[] equationToSubtract) {
    for (int i = 0; i < equationToSubtractFrom.length; i++) {
        equationToSubtractFrom[i] =  modP(equationToSubtractFrom[i] - multiplyModP(fragmentCoefficient, equationToSubtract[i]));
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用longs因为Java不支持无符号整数但两个向量都是mod p所以你可以期望每个数字都是0 <= x <(2 ^ 32)-5

有什么想法来优化这个?mod p操作占用了大部分执行时间,因此优化这种方法的一种方法可能是在乘法后不知道怎么做modP并且只在减法后做.有关如何做到这一点的任何想法?

java optimization performance primes modulo

9
推荐指数
2
解决办法
2396
查看次数