Web服务返回一个巨大的XML,我需要访问它的深层嵌套字段.例如:
return wsObject.getFoo().getBar().getBaz().getInt()
Run Code Online (Sandbox Code Playgroud)
问题是getFoo(),getBar(),getBaz()可能所有的回报null.
但是,如果我null在所有情况下检查,代码将变得非常冗长且难以阅读.此外,我可能会错过某些领域的支票.
if (wsObject.getFoo() == null) return -1;
if (wsObject.getFoo().getBar() == null) return -1;
// maybe also do something with wsObject.getFoo().getBar()
if (wsObject.getFoo().getBar().getBaz() == null) return -1;
return wsObject.getFoo().getBar().getBaz().getInt();
Run Code Online (Sandbox Code Playgroud)
写作是否可以接受
try {
return wsObject.getFoo().getBar().getBaz().getInt();
} catch (NullPointerException ignored) {
return -1;
}
Run Code Online (Sandbox Code Playgroud)
还是会被视为反模式?
java null exception nullpointerexception custom-error-handling
这是我长期以来一直存在的问题.我想在我的Windows计算机上运行PHP应用程序,它的加载时间非常长,大约10-25秒.我尝试了很多东西:
更新:我甚至尝试过APC - 它有所改善,但仍然是6-8秒/页
我将我的文件上传到Linux服务器(共享主机),它运行在300-500毫秒左右.在XAMPP安装上,我尝试运行其他(即非Symfony2)应用程序(例如phpmyadmin),它也比共享主机慢,但速度不是很慢,加载时间为2-3秒.在我将Linux更改为主操作系统之前,我该如何提高性能?我的笔记本电脑配有i7 CPU,4 GB RAM,5400RPM HDD,Win7 x64.
谢谢您的帮助!
UPDATE2:由于一些神秘的原因,我的Symfony路由无法使用fcgid(它给了我一个404错误)所以我回去使用PHP作为模块.现在,它已成为有史以来最糟糕的(比以前更糟糕的模块):应用模式20-25秒,在开发模式下,每次超过30秒,所以我得到一个超时错误,它与没有启用APC.
在这里你可以看到这个错误.这是可重现的:每次在30秒内达到不同的执行点:
根据文档,scala.collection.mutable.LinkedList从2.11版本开始被弃用.不幸的是,我没有找到任何替代它.我需要一个有序的集合,可以在恒定的时间内从任何索引中删除一个项目.
我该怎么用?
我实现了以下代码,将 32 个字节的输入转换为大写:
版本 1:
void to_upper(char* input) {
for (int i = 0; i < 32; ++i) {
input[i] = (input[i] >= 'a' && input[i] <= 'z') ? input[i] - 32 : input[i];
}
}
Run Code Online (Sandbox Code Playgroud)
版本 2:
void to_upper(char* input) {
for (int i = 0; i < 32; ++i) {
if (input[i] >= 'a' && input[i] <= 'z') {
input[i] = input[i] - 32; // same for: input[i] -= 32;
}
}
}
Run Code Online (Sandbox Code Playgroud)
第一个版本被自动矢量化,第二个没有。该行为在 clang 和 gcc 中是一致的。此外,我也在 …
我想将我的一个实体对象保存到会话中,但是当我这样做时,我得到以下两个错误:
例外:Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector :: serialize()必须返回一个字符串或NULL
和
ErrorException:注意:serialize():"id"作为成员变量从__sleep()返回,但在/ var/www/clients/client71/web256/web/_dev_fd/kkupon/vendor/symfony/src/Symfony/Component中不存在/HttpKernel/DataCollector/DataCollector.php第29行
我的代码是这样的:
$offer = $this->getEntityManager()->getRepository('KkuponMainBundle:Offer')->find($offer_id);
$request->getSession()->set('offer', $offer);
Run Code Online (Sandbox Code Playgroud)
我怎么能把它弄好?
谢谢.
更新 在Rowgm的帮助下,我可以通过设置受保护而不是私有的属性来解决此问题.我唯一的问题是从会话中读取实体后EntityManager不知道它,如果我将对象(从会话)添加到另一个对象(它们之间存在OneToMany关系),它将无法工作.
<?php
$offer = $this->get('session')->get('offer');
$coupon = new Coupon();
$coupon->setOffer($offer);
$this->em->persist($coupon);
$this->em->flush();
Run Code Online (Sandbox Code Playgroud)
这会引发错误,因为优惠券有一个对象属性,根据EntityManager不在数据库中(实际上它在数据库中,我从数据库中放入会话).
<?php
$offer = $this->get('session')->get('offer');
echo $this->em->getUnitOfWork()->isInIdentityMap($offer) ? "yes":"no"; //result: no
Run Code Online (Sandbox Code Playgroud)
一种解决方案可以是:
$offer = $this->em->merge($offer);
但这似乎并不是最好的.我希望我的EntityManager能够感知存储在会话中的实体对象而不必每次都告诉它.任何的想法?
我创建了一个计算某些东西的算法.这可以被视为模型.该算法以完全功能的方式实现,因此它仅使用不可变类.现在使用这个模型,我想在它的顶部开发一个GUI层.但是我对Scala中构建GUI的最佳实践一无所知.我打算使用ScalaFX.
我的问题如下:在ScalaFX中(类似于JavaFX),您可以将GUI中的值绑定到对象属性.这显然违反了功能范例,但似乎非常方便.这将需要重写我的类以使用可绑定的属性,这可能感觉像是摇尾巴的尾巴 - 模型将取决于GUI.
另一方面,我可以有一个独立的GUI层.在这种情况下,我需要代理对象来绑定,我将不得不基于这些代理对象创建我的模型对象.这会更加惯用,但意味着大量的代码重复和额外的工作.我的模型和代理对象必须保持同步,我将不得不处理复制属性.
这样做的好方法是什么?GUI总是充满了可变性,因此功能编程在这里感觉不到.不过我喜欢Scala,所以我也想继续使用它作为GUI.
关于地点和活动+ MVP的文档,我必须为每个页面创建:
我创建了一个具有基本功能的应用程序(5页和导航栏),我已经有超过1500行代码和~40个文件.我认为这是完全不可维护的,但是我没有找到任何解决这个问题的方法.有几个框架(例如GWTP)实现了MVP,但它们也需要相同数量的样板.
我可以使用spring mvc或play在~200行中实现相同的功能.
我做错了什么,你会如何解决?
我build.gradle按字母顺序重新排序了我的依赖项,之后我很快注意到我的Spring应用程序不再正常工作(它java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()在启动时停止显示消息).如果我将底部依赖从中间移动到顶部,那么一切都像以前一样正常.
依赖关系排序如何影响应用程序的运行方式?建议的订单是什么?
我在想是否可以在Scala中定义类似的类型NegativeNumber.此类型将表示负数,编译器将检查它与Ints,Strings等类似.
val x: NegativeNumber = -34
val y: NegativeNumber = 34 // should not compile
Run Code Online (Sandbox Code Playgroud)
同样:
val s: ContainsHello = "hello world"
val s: ContainsHello = "foo bar" // this should not compile either
Run Code Online (Sandbox Code Playgroud)
我可以像其他类型一样使用这些类型,例如:
def myFunc(x: ContainsHello): Unit = println(s"$x contains hello")
Run Code Online (Sandbox Code Playgroud)
这些约束类型可以由临时类型(Int,String)支持.
是否可以实现这些类型(可能使用宏)?
自定义文字怎么样?
val neg = -34n //neg is of type NegativeNumber because of the suffix
val pos = 34n // compile error
Run Code Online (Sandbox Code Playgroud) 我正在尝试连接到外部Web套接字服务器,这不是我自己运行的.我想从localhost javascript文件连接到它,因此origin头具有null值.
我知道这是针对跨站点伪造的措施.但是,因为我在localhost上,所以我应该能够通过让Chrome发送自定义的Origin标头来伪装它.
可能吗?(如果我需要延期,那很好)
如果没有,实现上述目标的最佳选择是什么?谢谢.
java ×3
scala ×3
php ×2
apache2 ×1
c++ ×1
clang ×1
collections ×1
constraints ×1
entity ×1
exception ×1
gcc ×1
gradle ×1
gwt ×1
gwt-mvp ×1
gwt-places ×1
immutability ×1
javafx ×1
javascript ×1
linked-list ×1
mvp ×1
null ×1
performance ×1
rust ×1
scala-macros ×1
scalafx ×1
session ×1
spring ×1
symfony ×1
types ×1
undertow ×1
websocket ×1
windows-7 ×1