0

我需要查找 Application Server 收到的所有 Web 请求,以检查 URL 是否具有 .css、.gif 等扩展名

提到了 tomcat 如何侦听每个请求并选择正确配置的 Servlet 来提供服务。 字符块 ,消息字节映射器

这是我实施的想法:

  • 加载我们喜欢比较的所有扩展并获取它们的字节表示。
  • 通过对字节数组中的字节求和来获得此扩展的唯一值 // 例如:“css”.getBytes()
  • 将结果值添加到排序列表
  • 每当我们收到请求时,获取 URL 的字节表示 // 例如:“flipkart.com/eshopping/images/theme.css”.getBytes()
  • 开始对字节数组的最后一个索引中的字节求和,并在遇到“。”时中断。点字节值
  • 搜索与排序列表相加的值的存在 // 在此处使用二分搜索

如果有的话,请就实施和问题提供您的反馈。

-感谢,克里希纳

4

1 回答 1

3

这听起来比它需要的要复杂得多

  • 用于String.lastIndeXOf查找 URL 中的最后一个点
  • 用于String.substring获取基于它的扩展
  • 有一HashSet<String>组支持的扩展,或者HashMap<String, Whatever>如果你想将扩展映射到其他东西

当我发现这种简单的方法被证明是性能瓶颈时,我绝对会感到震惊- 事实上,我怀疑它会比您建议的方法有效,因为它不需要将整个 URL 转换为一个字节数组...(尚不清楚为什么您的方法无论如何都使用字节数组而不是从char值中形成散列。)

从根本上说,我更喜欢的性能方法是:

  • 在架构上围绕以后难以更改的事物进行前期设计和测试
  • 对于其他一切:
    • 首先确定性能标准,以便您知道何时可以停止
    • 编写最简单的代码
    • 用真实数据进行测试
    • 如果性能不够好,请使用分析器(等)来找出瓶颈所在,并对其进行优化,以确保您可以使用现有测试证明其优势
于 2013-03-11T10:46:38.660 回答