小编Xtr*_*der的帖子

为什么display = inline-block会增加无法控制的垂直边距

我试图在http://jsfiddle.net上解决我的问题并且在那里有最奇怪的行为.你能解释这些(http://jsfiddle.net/C6V3S/)垂直边距来自何处?出现在jsfiddle.net上(至少在Chrome和FF中),在复制/粘贴到本地独立文件时不会出现...

在此输入图像描述

工作正常,改为简单的块 在此输入图像描述

独立测试文件的示例:.btn {padding:0px; 边框:1px纯红色; display:inline-block; }

.txt {
    display: inline-block;
    width: 12px;
    height: 12px;
    border: none;
    padding: 0;
    margin: 0;
    background: #77FF77;
}
</style>

<div class="btn"><div class="txt"></div></div>
Run Code Online (Sandbox Code Playgroud)

html css

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

为什么HTTP/2比普通HTTPS慢?

我正在评估从HTTP2到HTTP2的性能和获得奇怪的结果我可以从我的网站获得的东西 - 欧洲的网站是从美国加载的:

  • 使用HTTP/2 - 在6-7秒内
  • 使用普通HTTPS - 5-6秒(大约快1秒)

我从Chrome的网络监视器捕获屏幕截图,看起来像HTTP/2,大多数资源是一个接一个地加载而不是并行加载,就像普通SSL一样.

为了测试,我使用Apache 2.4.17(Win32)所涵盖的Web应用程序作为代理(以应用对SSL和HTTP/2协议的支持).客户端浏览器是Windows 7上的Chrome 46.0.2490.86.

捕获的网络请求如下.简短摘要:1.第一拳 - 是HTML页面2.下一组 - 6个请求 - 直接在HTML中声明的资源3.其余 - 通过脚本动态添加的资源(文档/头部中的'script'和'link/css'标签) .

图片的左侧是HTTP/2,右侧 - 通过普通SSL(http2_module已关闭)的相同工作人员.

在此输入图像描述


更新:我测试了支持HTTP/2作为反向代理的"其他东西".它来自http://nginx-win.ecsds.eu的 nginx 1.9.7.1 Kitty - 原始nginx的分支'for windows'.原始nginx中的HTTP/2仅在商业版中可用,因此我无法尝试.看起来没有其他服务器实现HTTP/2 +反向代理可用于Windows,或者我找不到它们(列表在这里这里).

我在Kitty中得到的结果更具误导性 - 没有像Apache那样的"顺序加载"资源,但是传输速率比HTTP/2慢两倍于普通SSL.最终结果是 - HTTP/2明显慢于普通SSL.以下是所有这些并排.

在所有这些中,我只能假设性能强烈依赖于实现,并且当前可用的实现执行奇怪,以得出关于HTTP/2的任何一致的结论.

在此输入图像描述

performance http2

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

Grails 2.0的性能真的非常低吗?

我对基于JVM堆栈的WEB开发有点新手,但是未来的项目将需要一些基于JVM的WEB引擎.因此,我开始寻找一些可以快速制作的东西并转而尝试Grails.从书中看起来很不错,但真正长时间的启动时间给我留下了深刻印象(grails run-app)我决定在负载下测试它是如何工作的.这里是:

  • 测试应用程序:按照这里的一些说明从地面开始(假设你已经安装了Grails和Tomcat,需要2分钟):

    _http://grails.org/Quick+Start

  • 测试用例(使用Apache基准测试 - 附带Apache httpd - _http://httpd.apache.org):

    ab.exe -n 500 -c _http:// localhost:8080/my-project/book/create
    (注意:这只是在样式容器中显示2个输入字段)

  • 硬件:Intel i5 650(4Core*3.2GHz)8GB Ram&Win Server 2003 x64

结果是......

Grails:32 Req/Sec

Total transferred:      1380500 bytes
HTML transferred:       1297500 bytes
Requests per second:    32.45 [#/sec] (mean)
Time per request:       308.129 [ms] (mean)
Time per request:       30.813 [ms] (mean, across all concurrent requests)
Transfer rate:          87.51 [Kbytes/sec] received
Run Code Online (Sandbox Code Playgroud)

(只有32 Req/Sec,CPU饱和度为100%,这远低于我对这类硬件的预期)

...接下来 - 我试图比较它与类似的虚拟JSF应用程序(我在这里拿了一个:_http://www.ibm.com/developerworks/library/j-jsf2/ - 寻找"带有JAR文件的源代码",里面有\ jsf-example2\target\jsf-example2-1.0.war),

  • 测试用例:ab.exe -n 500 -c 10 _http:// localhost:8080/jsf/backend/listing.jsp

结果是......

JSF:400 Req/Sec …

performance grails grails-2.0

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

整数性能 - x32与x64 jvm的差异是30-50倍?

最近我有一个非常奇怪的事情 - 一个方法在profiler下非常慢,没有明显的原因.它包含很少的操作long,但是被频繁调用 - 它的总体使用率约占总程序时间的30-40%,而其他部分看起来要"更重".

我通常在x32 JVM上运行非内存饥饿的程序,但假设我遇到了64位类型的问题,我尝试在x64 JVM上运行相同的程序 - "实时场景"中的整体性能提高了2-3倍.之后我用特定方法为操作创建了JMH基准测试,并对x32和x64 JVM的差异感到震惊 - 高达50次.

我会"接受"x32 JVM(较小的字号)大约慢2倍,但我没有30-50次可能来自的线索.你能解释一下这个巨大的差异吗?


对评论的回复:

  • 我重写了测试代码以"返回某些东西"并避免"死代码消除" - 它似乎没有改变'x32'的任何内容,但是'x64'上的某些方法明显变慢了.
  • 两个测试都在"客户端"下运行.在'-server'下运行没有明显的效果.

所以似乎我的问题的答案是

  • "测试代码"是错误的:由于"没有返回值",它允许JVM执行"死代码消除"或任何其他优化,并且看起来"x32 JVM"执行的此类优化比"x64 JVM"更少 - 这导致了x32和x64之间存在显着的"错误"差异
  • '正确的测试代码'上的性能差异高达2x-5x倍 - 这似乎是合理的

以下是结果(注意:? 10??特殊字符不是在Windows上打印的 - 它是低于0.001 s/op用科学记数法写成的10e- ??)

x32 1.8.0_152

Benchmark                Mode  Score Units    Score (with 'return')
IntVsLong.cycleInt       avgt  0.035  s/op    0.034   (?x slower vs. x64)
IntVsLong.cycleLong      avgt  0.106  s/op    0.099   (3x slower vs. x64) 
IntVsLong.divDoubleInt   avgt  0.462  s/op    0.459
IntVsLong.divDoubleLong  avgt  1.658  s/op    1.724   (2x slower …
Run Code Online (Sandbox Code Playgroud)

java performance

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

Android + coreLibraryDesugaring:我可以使用哪些 Java 11 API?

我正在尝试将一些 Java 库从“普通”JVM 迁移到 android,并坚持使用代码中使用的一些 Java11 API。

我已经得到的第一件事 - Java11 语言功能似乎仅适用于 Android Studio 的 Canary 版本,请参阅此处的答案

现在我需要了解哪些 API 可以真正使用。这里有两个对我不起作用的用例,如果我做错了什么或者它永远不应该起作用,我就无法得到:

  1. List.copyOf()- Java11中引入,该方法copyOf在android上不可用。Java 9 中引入的“List.of()”方法可以正常工作。

  2. class java.lang.invoke.LambdaMetafactory- 随 Java 1.8 引入 - 用于以编程方式创建 lambda 以供使用,而不是用于反射,在 Android 上不可见。

我在这里的来源中看到了它们desugar_jdk_libs

所以 - 问题是:我如何确定某些 Java API 是否应该在“脱糖”android 版本中可用?“脱糖”到底能带来什么?

重现步骤:

  1. 使用Android Studio Canary生成一个虚拟的“Basic Activity”项目
  2. 确保以下内容中提供build.gradle
android {
    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
}
dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
} …
Run Code Online (Sandbox Code Playgroud)

android java-11

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

如何禁用ViewState?

我将从MS和ASP.NET进入Java世界,并在Java中寻找类似于基于ASP.NET组件的HTML框架.在审查了互联网上的大量链接之后,看起来JSF2(与facelets)是最匹配的(顺便说一下这是真的吗?还是有其他更好的选择?).

我在评估期间遇到的问题是正确使用JSF的视图状态.我的最终使用场景将是一个集群的WEB服务器,我不会有任何会话/服务器存储的对象,我不会使用网络带宽进行虚拟视图状态(请参阅另一个人在这里有点相关的问题JSF调整) .

我拿了一些JSF2教程并在设置了javax.faces.STATE_SAVING_METHOD = client后将ViewState生成为440个字符的HTML(omygod,页面只包含1个虚拟文本输入和1个提交按钮).在"POST on submit"中,我确实只需要来自文本输入的文本(10个字符)而不是虚拟视图状态(440个字符).

所以问题是 - 是否可以在JSF2中禁用视图状态?

相关链接:

更新:相关链接(来自以下评论):

viewstate jsf jsf-2

11
推荐指数
2
解决办法
5951
查看次数

utf8 < - > utf16:codecvt性能不佳

我正在研究一些旧的(并且专门针对win32)的东西,并考虑使它更现代/可移植 - 即在C++ 11中重新实现一些可广泛重用的部分.其中一个部分是在utf8和utf16之间进行转换.在Win32 API中,我正在使用MultiByteToWideChar/ WideCharToMultiByte,尝试使用此处的示例代码将这些内容移植到C++ 11:https://stackoverflow.com/a/14809553.结果是

发布版本(由MSVS 2013编译,在Core i7 3610QM上运行)

stdlib                   = 1587.2 ms
Win32                    =  127.2 ms
Run Code Online (Sandbox Code Playgroud)

调试构建

stdlib                   = 5733.8 ms
Win32                    =  127.2 ms
Run Code Online (Sandbox Code Playgroud)

问题是 - 代码有问题吗?如果一切似乎都没问题 - 这种性能差异是否有充分的理由?

测试代码如下:

#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <clocale>  
#include <codecvt> 

#define XU_BEGIN_TIMER(NAME)                       \
    {                                           \
        LARGE_INTEGER   __freq;                 \
        LARGE_INTEGER   __t0;                   \
        LARGE_INTEGER   __t1;                   \
        double          __tms;                  \
        const char*     __tname = NAME;         \
        char            __tbuf[0xff];           \
                                                \ …
Run Code Online (Sandbox Code Playgroud)

c++ performance utf-8 c++11

11
推荐指数
2
解决办法
2209
查看次数

java7/Rhino中编译与解释的javascript的性能

我在Java7中遇到Rhino javascript引擎的性能问题,很快 - 我的脚本(解析和编译文本)在Chrome中运行的速度比Java7 Rhino脚本引擎快50到100倍.

我试图找到改善情况的方法,并发现Rhino支持编译脚本.我尝试用我的脚本做这件事,实际上没有看到任何改进.最后 - 我最终得到了一个虚拟的短测试套件,我认为编译版和解释版之间的性能没有任何差别.请让我知道我做错了什么.

注意:有些消息来源提到Rhino引擎运行编译脚本比直接用Java编写的"相同"代码慢大约1.6.不确定此示例中使用的"脚本编译"是否与假设相同.

测试java类如下,我在我的机器上得到的样本结果......

结果

     Running via com.sun.script.javascript.RhinoScriptEngine@c50443 ... 
      time: 886ms, chars: 38890, sum: 2046720
      time: 760ms, chars: 38890, sum: 2046720
      time: 725ms, chars: 38890, sum: 2046720
      time: 765ms, chars: 38890, sum: 2046720
      time: 742ms, chars: 38890, sum: 2046720
       ... 3918ms


     Running via com.sun.script.javascript.RhinoCompiledScript@b5c292 @ com.sun.script.javascript.RhinoScriptEngine@f92ab0 ... 
      time: 813ms, chars: 38890, sum: 2046720
      time: 805ms, chars: 38890, sum: 2046720
      time: 812ms, chars: 38890, sum: 2046720
      time: 834ms, chars: 38890, sum: 2046720
      time: 807ms, chars: …

javascript rhino java-7

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

特定于线程的堆分配

是否有可能使一些线程子集(例如来自特定的ThreadPool)从自己的堆中分配内存?例如,大多数线程都是从常规共享堆分配的,很少有工作线程从各个堆分配(每个线程1:1).

目的是确保在共享环境中安全执行代码 - 典型的worker是无状态的并且在单独的线程上运行,处理一个请求不应该消耗超过4MB的堆.

更新#1 Re:但是为什么你担心"安全执行"和不可预测的堆消耗增加?

关键是在我的进程中安全托管任意第三方java代码.由于第三方代码中存在错误,因此我的整个过程不会得到"内存不足".

更新#2 Re:从限制每个线程的内存使用量来看,用Java语言来说这是不可能的

根据我的调查,在我发布这个问题之前,我的看法是一样的,我只是希望我错过了一些东西.

我现在看到的唯一可能的用例替代解决方案是......

1)我的java线程需要多少内存? - 跟踪某些调控器线程中的线程内存使用情况并终止坏线程

2)在我自己的JVM上运行Java代码 - 是的,这是可能的.你可以下载一个JVM开源实现,修改它...... :)

java heap heap-memory

8
推荐指数
2
解决办法
6476
查看次数

通过ObjectID进行分片,这是正确的方法吗?

我就像许多人正在考虑在Mongo中对我的收藏品进行分类的正确方法.主要问题是 - 自动分片是如何工作的?

官方文档称 - "MongoDB通过自动分片(分区)架构进行水平扩展"和"要对分区进行分区,我们指定了一个分片键模式." 注意"为集合选择正确的分片键很重要":).
http://www.mongodb.org/display/DOCS/Sharding+Introduction#ShardingIntroduction-ShardKeys
http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key

现在的问题是 - "这是正确的密钥"(通过ObjectID进行分片)?

db.runCommand({ shardcollection : "test", key : { _id : 1 }})
Run Code Online (Sandbox Code Playgroud)

Mongo内部会发生什么?在这种情况下,Mongo如何将数据拆分为块?假设我最初拥有10ml带有2个分片服务器的记录 - 当我想在集合达到20mln记录时再添加2个分片服务器时,Mongo方面会发生什么?我无法在Mongo相关来源的任何地方找到这种级别的详细信息.

考虑到自生生_id及其结构的随机性,

... http://www.mongodb.org/display/DOCS/Object+IDs ......

我将通过最低有效字节(rtl顺序)进行分片,其中块分为2-3个字节的值 - 这将提供简单的方法来分片2 ^ N的分片服务器--2,4,8,...,256个分片服务器在每个分片上具有或多或少的均匀负载,并且具有最少的所需配置.据我所知,Mongo仅通过明确定义的范围支持分片/分块,并且我的想法不起作用.是真的吗?

mongodb

7
推荐指数
2
解决办法
6867
查看次数