我试图在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) 我正在评估从HTTP2到HTTP2的性能和获得奇怪的结果我可以从我的网站获得的东西 - 欧洲的网站是从美国加载的:
我从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的任何一致的结论.
我对基于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),
结果是......
JSF:400 Req/Sec …
最近我有一个非常奇怪的事情 - 一个方法在profiler下非常慢,没有明显的原因.它包含很少的操作long
,但是被频繁调用 - 它的总体使用率约占总程序时间的30-40%,而其他部分看起来要"更重".
我通常在x32 JVM上运行非内存饥饿的程序,但假设我遇到了64位类型的问题,我尝试在x64 JVM上运行相同的程序 - "实时场景"中的整体性能提高了2-3倍.之后我用特定方法为操作创建了JMH基准测试,并对x32和x64 JVM的差异感到震惊 - 高达50次.
我会"接受"x32 JVM(较小的字号)大约慢2倍,但我没有30-50次可能来自的线索.你能解释一下这个巨大的差异吗?
对评论的回复:
所以似乎我的问题的答案是
以下是结果(注意:? 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 库从“普通”JVM 迁移到 android,并坚持使用代码中使用的一些 Java11 API。
我已经得到的第一件事 - Java11 语言功能似乎仅适用于 Android Studio 的 Canary 版本,请参阅此处的答案
现在我需要了解哪些 API 可以真正使用。这里有两个对我不起作用的用例,如果我做错了什么或者它永远不应该起作用,我就无法得到:
List.copyOf()
- Java11中引入,该方法copyOf
在android上不可用。Java 9 中引入的“List.of()”方法可以正常工作。
class java.lang.invoke.LambdaMetafactory
- 随 Java 1.8 引入 - 用于以编程方式创建 lambda 以供使用,而不是用于反射,在 Android 上不可见。
我在这里的来源中看到了它们desugar_jdk_libs
:
所以 - 问题是:我如何确定某些 Java API 是否应该在“脱糖”android 版本中可用?“脱糖”到底能带来什么?
重现步骤:
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) 我将从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中禁用视图状态?
相关链接:
ASP.NET中的用例 - "禁用页面的视图状态":http:
//www.ironspeed.com/articles/Disable%20View%20State%20for%20a%20Page/Article.aspx
stackoverflow上没有帮助的答案:
如何在JSF中减少javax.faces.ViewState
更新:相关链接(来自以下评论):
我正在研究一些旧的(并且专门针对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) 我在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: …
是否有可能使一些线程子集(例如来自特定的ThreadPool)从自己的堆中分配内存?例如,大多数线程都是从常规共享堆分配的,很少有工作线程从各个堆分配(每个线程1:1).
目的是确保在共享环境中安全执行代码 - 典型的worker是无状态的并且在单独的线程上运行,处理一个请求不应该消耗超过4MB的堆.
更新#1 Re:但是为什么你担心"安全执行"和不可预测的堆消耗增加?
关键是在我的进程中安全托管任意第三方java代码.由于第三方代码中存在错误,因此我的整个过程不会得到"内存不足".
更新#2 Re:从限制每个线程的内存使用量来看,用Java语言来说这是不可能的
根据我的调查,在我发布这个问题之前,我的看法是一样的,我只是希望我错过了一些东西.
我现在看到的唯一可能的用例替代解决方案是......
1)我的java线程需要多少内存? - 跟踪某些调控器线程中的线程内存使用情况并终止坏线程
2)在我自己的JVM上运行Java代码 - 是的,这是可能的.你可以下载一个JVM开源实现,修改它...... :)
我就像许多人正在考虑在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仅通过明确定义的范围支持分片/分块,并且我的想法不起作用.是真的吗?