草庐IT

php - 有没有办法用 xdebug 只记录比 X 慢的执行?

我希望xdebug仅跟踪超过X毫秒或超过YKBRAM的“跳跃”,例如,每次执行时间超过100毫秒或内存使用增加超过100KB。这会让我忽略成千上万条我不需要看到的跟踪线,并且会让优化变得更容易——因为在ZF2中,臃肿的框架只需要1秒就可以启动我们企业项目上的composerautoloader,结果在数千行中我真的没有用。沿线的某个地方,我确实发现执行时间有更大的跳跃,但在长时间滚动之后并没有。是否有一个默认选项可以禁用“比X快”执行的日志记录,或者如果没有,您是否知道可以仅grep出较慢的执行的辅助shell/python脚本?为了澄清,我说的是通过在我的应用程序中运行xdebug_

php - Crypt 和 Salt 如何比 MD5 更安全地抵御暴力攻击?

我在PHP.net上看到MD5没用,他们建议使用crypt+salt。于是,我就去看了他们的功能描述或者在我的例子中是这样的:$stored_password=fetch_password($user);if(crypt($_REQUEST['password'],$stored_password)===$stored_password){//ok}因此,当我看到盐存储在散列密码中并且您使用该散列密码作为盐时,我认为Crypt+Salt对于输出的暴力破解(设法窃取散列密码的黑客)并不更安全).它更安全吗?对于字典攻击,我能理解它的威力,但对于对散列密码的暴力攻击,我看不到它的优势。

java - Quercus (Java) 比 native PHP 快吗?

如果是,为什么?(或者更好的问题是“何时”?)我发现了一些零散的评论,例如thispost,这似乎表明Quercus实际上可能比原生PHP提供一些性能优势。我希望使用Tomcat/Quercus配置而不是Apache/PHP配置。(我需要一个Javaservlet容器,替代方法是在Apache中使用上下文过滤。) 最佳答案 来自theirpage:Performance:Quercusoutperformsastraightmod_phpimplementationbyabout4x(forMediawikiandDrupal).Q

php - 如何识别 guest 用户的时间比 session 通常存在的时间长

我知道,我可以使用\Session::getId()。但它会不时改变形式。也许我不明白session。据我所知,它在php运行时开始,并在php代码完成时被删除。另一方面,我读到sessionID存储在cookie中,当用户再次打开您的网站时,session“恢复”。那么为什么在我的例子中sessionID过期这么快。我怎样才能获得至少一个月内不会改变并且被购物车使用的“sessionID”?更新:问题变得有点困惑,因为我不想知道如何调用某些东西,也不知道这些东西是如何工作的。我想知道如何识别guest用户并在一段时间内(比session通常存在的时间更长)获取其唯一ID。结果我想要函

java - 为什么 Arrays.copyOf 对于小型数组比 System.arraycopy 快 2 倍?

我最近在玩一些基准测试,发现非常有趣的结果,我现在无法解释。这是基准:@BenchmarkMode(Mode.Throughput)@Fork(1)@State(Scope.Thread)@Warmup(iterations=10,time=1,batchSize=1000)@Measurement(iterations=10,time=1,batchSize=1000)publicclassArrayCopy{@Param({"1","5","10","100","1000"})privateintsize;privateint[]ar;@Setuppublicvoidsetup()

java - 我的 GUI 组件单元测试是否应该包含比被测代码更多的行?

这是一个合理性检查,因为我发现这在我们的代码中是正确的。与我们的功能代码不同,由于状态设置、组合案例分析和模拟/伪造邻居/合作者/听众/等,有状态GUI的测试具有不幸的权重。我错过了什么吗?感谢您的反馈。注意事项:测试在JVM中运行,一切都是POJO。到目前为止,我们已经通过增加单元大小进行了一些简化:测试粘在一起的更多部分。新笔记:我们正在使用jUnit和Mockito。 最佳答案 避免代码重复。应提取常见的设置代码和操作寻找层次结构。不要写一个巨大的测试场景。将公共(public)行组合在一起并将它们提取到一个有意义的命名方法中

java - Thread 在这里比 Executor 更受青睐吗?

据我了解,Executors有助于处理runnable的执行。例如。当我有几个工作线程完成它们的工作然后终止时,我会选择使用执行程序。执行者将处理创建和终止执行工作线程所需的线程。但是现在我面临着另一种情况。固定数量的类/对象应封装自己的线程。因此线程在创建这些对象时启动,线程将在这些对象的整个生命周期内继续运行。少数对象依次在程序开始时创建并在整个运行时存在。我想在这种情况下线程比执行器更可取,但是当我阅读互联网时,每个人似乎都建议在任何可能的情况下使用执行器而不是线程。有人可以告诉我这里是选择Executors还是Threads,为什么?谢谢 最佳答案

Java 需要比合理的更大的堆空间

我有一个程序,我将在其中使用非常大的short[]数组:importjava.lang.Math;publicclassHPTest{publicstaticvoidmain(String[]args){intn=30;short[]a=newshort[(int)Math.pow(2,n)];}}据我所知,short[]数组每个元素应使用2个字节,因此具有2^30个元素的数组应需要大约2GiB的RAM。为了运行程序,我因此尝试java-Xms2000mHPTest但仍然出现堆空间错误。即使在3000m时我也遇到同样的错误,但在4000m时它起作用了。关于为什么我必须超过2000m的估

java - 插入排序比 shell 排序快得多

我正在阅读Sedgewick的“算法”中有关排序的章节。在此过程中,我编写了3个基本的排序算法:选择、插入和shell排序。书中说,尽管这三者都具有二次最坏情况的复杂性,但shell排序应该比随机数据的插入排序快得多。在书中,他们获得了600倍的性能提升。但我在笔记本电脑上得到以下乘法器(几乎不随阵列大小的增加而改变):选择:5.5倍插入:1x外壳:1.8倍!困扰我的问题是-为什么shell排序比插入排序慢将近两倍?!我想,我的shellsort实现有问题。但我几乎是从书上抄来的:classShellSortextendsSort{//precalculatesequence:1,4,

java - 为什么 Major 垃圾回收比 Minor 慢?

通过这个link但仍然对次要和主要GC收集中实际发生的事情感到困惑。假设我在年轻一代中有100个对象,其中85个对象是无法访问的对象。现在当MinorGC运行时,它将回收85个对象的内存并将15个对象移动到较旧的(永久的)代。现在老年代有15个Activity对象,其中3个是不可访问的。假设MajorGC发生了。它会保持15个对象,并为3个无法访问的对象回收内存。据说主要GC比次要GC慢。我的问题是为什么?是不是因为majorGC发生的对象数量通常比minor多,因为minorgc比major发生得更频繁?根据理解majorGC应该更快,因为它需要做的工作更少即从无法访问的对象中回收内