小编Jos*_*son的帖子

PHP函数调用的重要性有多大?

我对PHP比较陌生,慢慢学习特定于语言的特性.有一件事我得到了很大的好处,那就是我(所以我被告知)使用了太多的函数调用,并且我被要求做一些事情来解决它们.这是两个例子:

// Change this:
} catch (Exception $e) {
  print "It seems that error " . $e->getCode() . " occured";
  log("Error: " . $e->getCode());
}

// To this:
} catch (Exception $e) {
  $code = $e->getCode();
  print "It seems that error " . $code . " occured";
  log("Error: " . $code);
}
Run Code Online (Sandbox Code Playgroud)

第二个例子

// Change this:
$customer->setProducts($products);

// To this:
if (!empty($products)) {
  $customer->setProducts($products);
}
Run Code Online (Sandbox Code Playgroud)

在第一个例子中,我发现$e->getCode()$code广告分配一个轻微的认知开销; "什么是'$ code'?啊,这是异常的代码." 而第二个例子增加了圈复杂度.在这两个例子中,我发现优化是以可读性和可维护性为代价的.

性能提升是值得的,还是微观优化?

我应该注意到,我们现在仍然坚持使用PHP 5.2.

我做了一些非常粗略的基准测试,发现函数调用性能命中率在10%到70%之间,具体取决于我的工作台测试的性质.我承认这很重要.但在该catch块被击中之前,有一个数据库和HTTP端点的调用.在$products设置之前,$customer …

php optimization php-5.2

10
推荐指数
3
解决办法
7424
查看次数

如何获取javascript文件的位置(src)?

javascript文件如何知道它位于何处?例如:

<script type="text/javascript" src="http://mysite.com/scripts/howdy.js"></script>
Run Code Online (Sandbox Code Playgroud)

如何howdy.js知道代码http://mysite.com/scripts/howdy.js

编辑:澄清.我不能依赖于在DOM中搜索我的脚本标记,因为我需要在DOM准备好之前了解它.

javascript

8
推荐指数
1
解决办法
5826
查看次数

使用JSTL创建带有导航链接的菜单

是否有使用JSTL创建带导航链接的菜单的库或最佳实践方法?

我每页都有5个链接.我希望指向当前页面的链接被"禁用".我可以手动执行此操作,但这必须是人们之前处理过的问题.如果有一个taglib处理它但我不知道它,我不会感到惊讶.

jsp jstl menu

6
推荐指数
1
解决办法
9189
查看次数

Spring 3安全性和相对重定向URL

我们在Squid代理后面有一个带有Spring Security的Spring 3应用程序.问题是Spring只知道内部squid url,所以在成功登录后,example.com/login而不是重定向到example.com/home它重定向到internal.example.com.

有谁知道如何处理这种情况?

我的配置:

<security:http use-expressions="true" auto-config="true">
    <security:intercept-url pattern="/" access="hasRole('ROLE_ANONYMOUS') or hasRole('ROLE_GENERAL_ADMINISTRATION')"/>
    <security:intercept-url pattern="/**" access="hasRole('ROLE_GENERAL_ADMINISTRATION')"/>
    <security:intercept-url pattern="/static/**" filters="none"/>
    <security:logout invalidate-session="true" logout-url="/logout" logout-success-url="/"/>
    <security:form-login login-page="/" default-target-url="/dashboard"/>
    <security:anonymous/>
</security:http>
Run Code Online (Sandbox Code Playgroud)

编辑:

在我的情况下,管理员已经错误地设置了mod_jk所以一切都很好用鱿鱼和上面的配置.

java spring squid spring-security

6
推荐指数
1
解决办法
4372
查看次数

IndexedDB和关系

我可以在IndexedDB中的对象库之间创建关系吗?

例如,我有两个对象存储:artistalbum.与一个人artist有一对多的关系album.album.artistId将专辑与...联系起来artist.id.

我在想Hibernate.我愿做一个艺术家查询,并有属于返回称为数组艺术家的专辑artists中的album对象.

artist.albums = [];
Run Code Online (Sandbox Code Playgroud)

跟进(4.5年后,2017年)

下面有一些很好的答案可以很好地回答这个问题.我想补充一点,我最初试图将IndexedDB用作关系存储,并在其上构建类似ORM的解决方案,但它并不适合.IndexedDB是一个NoSQL数据库,因为我开始以这种方式处理它,它更有意义,我的项目更容易管理.我希望这为那些不断遇到它的人增加一些原始问题的价值.

javascript indexeddb

6
推荐指数
1
解决办法
3757
查看次数

春天保护@RequestBody

@RequestBody使用Spring Security 获得安全保障的正确方法是什么?

例如:A User可以有多个Blogs,每个Blog可以有多个Entrys.用户去保存某个博客的条目,请求会像这样:

@RequestMapping(value="/api/entry", method=RequestMethod.POST)
@ResponseBody
public Entry save(@Valid @RequestBody Entry entry) {
    this.entryService.save(entry);
    return entry;
}
Run Code Online (Sandbox Code Playgroud)

现在,传入entry有一个Blog,用户可以篡改请求并选择其他人的博客,有效地将条目发布到他们的博客.虽然我可以在验证中捕获这个(查询持久层以验证Blog属于登录的User)我觉得这应该由Spring Security处理.如果是这样,我该怎么做呢?

spring spring-security

6
推荐指数
1
解决办法
2240
查看次数

PHP 中是否可以弃用方法参数?

可以说我有一个方法:

public function createFoo(Foo $foo, $isPremiumFoo=false);
Run Code Online (Sandbox Code Playgroud)

$isPremiumFoo事后看来,把这个标志争论挂在最后有点愚蠢。所以我们将其移入Foo,现在我想将其从方法签名中删除。但我不想一次完成所有这一切,因为这是一个公共方法并且已经在野外使用。我想@deprecate提醒用户他们应该停止使用它,然后最终删除它。既然不能在 PHP 中重载方法,那么我如何才能仅弃用该方法参数而不是整个方法呢?

php

6
推荐指数
2
解决办法
4562
查看次数

IndexedDB和多对多关系

你们如何处理IndexedDB中的多对多关系?

例如,假设我有一个Blog对象来保存博客帖子和一个Tag用于博客帖子的标签/标签的对象.一个Blog可以有很多Tags,一个Tag可以被许多人使用Blog.

我会创建一个blog storetag store(虽然我愿意接受建议)来容纳两种类型的对象:

// ...
var blogStore = db.createObjectStore("blog", {keyPath: "blogId", autoIncrement: true});
blogStore.createIndex("title", "title", {unique: true});
var tagStore = db.createObjectStore("tag", {keyPath: "tagId", autoIncrement: true});
tagStore.createIndex("label", "label", {unique: true});
Run Code Online (Sandbox Code Playgroud)

我可以想到两种方法将两者联系起来:

  1. 有一个对象Blog.tags的数组,BlogTag它包含blogIdtagId(并且也可以在商店中进行检索)或
  2. 有一个可以用来查找s的s Blog.tags数组.tagIdTag

第一种方式似乎更长,但是如何在SQL中解决这个问题.那只是我应该留下的SQL包袱吗?

我想第三种方法是Blog.tags成为一个Tags 数组.这似乎最简单,但后来我无法Tag在博客中查询s或重用标签(或者我可以吗?).

有没有其他人使用indexedDB处理这种情况?如果是这样,你最终做了什么?有什么陷阱?

javascript html5 indexeddb

5
推荐指数
1
解决办法
2311
查看次数

PHP/json_encode:处理具有数字属性的混合数组和对象

我最近不得不解决遗留 PHP 应用程序中的错误。此应用程序接收来自另一个应用程序的请求,其 JSON 格式为:

{
  "someList": [
    "item A",
    "item B"
  ],
  "ratings": {
    "0": 0.001234,
    "1": 0.0666,
    "2": 0.09876,
    "3": 0.777777
  }
}
Run Code Online (Sandbox Code Playgroud)

当它反序列化为原生 PHP “关联数组”时,列表和映射(键为 0、1、2 和 3)看起来都像列表。没关系,我可以解决这个问题。但是,此应用程序会对此数据进行计算,并在以大致相同的格式将其序列化回 JSON 并将其发送到另一个应用程序之前对其进行更多计算。这就是问题所在。json_encode($data)上述结果的开箱即用:

{
  "someList": [
    "item A",
    "item B"
  ],
  "ratings": [
    0.001234,
    0.0666,
    0.09876,
    0.777777
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的钥匙都没了...

我看到我可以使用JSON_FORCE_OBJECTlaecho json_encode($data, JSON_FORCE_OBJECT)但后来我得到:

{
  "someList": {
    "0": "item A",
    "1": "item B"
  },
  "ratings": {
    "0": 0.001234,
    "1": 0.0666,
    "2": 0.09876,
    "3": 0.777777
  } …
Run Code Online (Sandbox Code Playgroud)

php json associative-array

5
推荐指数
1
解决办法
913
查看次数

Mercurial存储库搜索/索引

有没有人知道搜索mercurial存储库的解决方案?(我们目前正在使用hgweb托管我们的存储库.)我们希望能够搜索过去的源代码修订版.例如,找出何时可能引入了一个bug.

Fisheye看起来很适合这个账单,但该公司不愿意付钱.是否有任何开源替代品或其他解决方案可以让我们在hg中搜索源历史记录?

一个理想的解决方案将允许我们:

  • 搜索评论
  • 搜索源代码的所有修订版
  • 搜索多个存储库

谢谢!

mercurial

4
推荐指数
1
解决办法
1504
查看次数

MappingJacksonJsonView:忽略不使用@JsonIgnore的字段

我需要忽略POJO中的某些字段,因为它们是延迟加载的和/或在某些情况下创建无限递归(父对齐的一对多Childs,Child多对一父对象).我的POJO驻留在另一个不知道Jackson,JSON等的jar中.

如何在不使用注释的情况下有效地告诉Jackson忽略这些字段?通过配置将是最好的.

谢谢

java spring jackson

4
推荐指数
1
解决办法
6232
查看次数

在Google Visualization DataTable中更新数据

如何更新Google可视化数据表中的数据?例:

var data = new google.visualization.DataTable();

data.addColumn('string', 'Name');
data.addColumn('string', 'Occupation');

data.addRow(['Bob', 'Shoe Wearer']);
data.addRow(['Henry', 'Transformer']);
data.addRow(['Betty', 'Seltzer Connoisseur']);

// Time passes and Bob changes jobs:
data.addRow(['Bob', 'Beach Comber']);
Run Code Online (Sandbox Code Playgroud)

当然,这增加了一个新行,现在我有两个Bobs.我怎样才能更新鲍勃的职业?

javascript google-visualization google-datatable

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