我在客户端(浏览器)上使用GWT,在服务器上使用Joda Time.我希望执行一些数据库查找,这些查找以当天(即00:00:00至23:59:59)为限,请求进入,时间边界基于用户(即浏览器)时区.
所以我有GWT代码做一个new java.util.Date()来获取请求的时间,并将其发送到服务器.然后我像这样使用Joda Time:
new DateTime(clientDate).toDateMidnight().toDateTime()
Run Code Online (Sandbox Code Playgroud)
当然,麻烦的是toDateMidnight(),在没有指定TimeZone的情况下,将使用系统(即服务器的)TimeZone.我一直试图找到一种简单的方法将TimeZone从浏览器传递到服务器而没有太多运气.在GWT中,我可以通过以下方式获得GMT偏移:
DateTimeFormat.getFormat("Z").fmt(new Date())
Run Code Online (Sandbox Code Playgroud)
这导致类似"-0400"的东西.但是Joda Time DateTimeZone.forID()希望字符串格式化为"America/New_York",或者是小时和分钟的整数参数.当然我可以将"-0400"分解为-4小时0分钟,但我想知道是否有更简单的方法来做到这一点.
我在Glassfish中遇到一些基本的JNDI配置时遇到了麻烦.
我认为应该是一个简单的任务:在运行时,确定特定属性是否设置为true.我认为这是JNDI的一个很好的应用程序,但似乎无法在app服务器和我的servlet代码之间获得正确的路径.
这是我在Glassfish中配置属性的方法:

在我的servlet代码中,我试图通过以下方式查找值:
Boolean enabled = (Boolean) ctx.lookup("java:global/arizona/quartz_enabled");
Run Code Online (Sandbox Code Playgroud)
除了这条路之外,我还尝试了以下方法但没有成功:
我的应用程序名为"arizona",但如果重要,则部署到根上下文.
我确定这只是一个简单的问题,找出适当的命名空间到达该属性,但我觉得我只是在黑暗中试图找到它.有没有一种简单的方法来浏览Glassfish中的JNDI树?
我的项目依赖于太阳黑子,太阳黑子依赖于progress_bar.progress_bar定义了一个被调用的类(在任何模块/命名空间之外)ProgressBar.
我的测试代码依赖于minitest-reporter,而后者依赖于ruby-progressbar.ruby-progressbar定义了一个类(也在任何模块/命名空间之外)ProgressBar.
作为Ruby的新手,我花了很多时间来追踪这两个ProgressBar类是冲突的事实.我知道如何命名我自己的代码来防止这样的问题,但有没有办法解决第三方代码中的这种冲突?
更新:
minitest-reporter的所有者非常友好地将他对(显然已被遗弃的)ProgressBar的使用替换为另一个进度库PowerBar.所以这解决了我的问题.但是猜猜 - PowerBar还会污染全局命名空间!这似乎在Ruby中是病态的......
我有一个TYPE_INT_BGR类型的BufferedImage.我需要与另一个BufferedImage进行逐像素比较,以计算两个图像之间的"距离".我有一些有用的东西,但很慢.我从"参考"图像中获取一个像素,将其分解为RGB字节:
int pixel = referenceImage.getRGB(col, row);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
Run Code Online (Sandbox Code Playgroud)
我将r/g/b值与候选图像的相应像素进行比较,并将差值求平方.
有没有更快的方法来进行这种比较?窥视JRE源代码,我看到BufferedImage.getRGB()实际上是将光栅中的RGB值组合在一起,这对我来说是浪费的,因为我只是将其分解为字节.
我将尝试直接尝试,但我想知道是否有更好的方法来做到这一点,无论是通过我可能错过的Java或第三方API.
是否可以以编程方式查询Task Queue API以查看当前正在执行/挂起的任务数量?
我没有看到任何方法在API中执行此操作,因此我使用在数据存储区中创建对象来表示排队的任务.运行时,任务会从数据存储中删除相应的条目.
可以想象,这很容易失去同步.我真的很高兴能够在队列中获得给定队列名称的简单任务计数.
我正在Glassfish 3.1上运行GWT + Hibernate应用程序.几个小时后,我跑出了Permgen空间.这没有任何webapp重新加载.我正在跑步–XX:MaxPermSize=256m –XmX1024m.
我接受了这个页面的建议,发现我泄漏了很多类 - 我所有的Hibernate模型和所有的GWT RequestFactory代理.
上面引用的指南说"检查链条,找到意外参考,并修复代码".说起来容易做起来难.
类加载器总是指向一个实例org.glassfish.web.loader.WebappClassLoader.进一步挖掘,我发现了许多来自$Proxy135和类似命名对象的引用.但我不知道还有什么可以贯彻的.
SOLR结果通常按搜索条件的"最佳匹配"排序.是否可以按给定的SOLR字段按字母顺序排序结果?
我意识到这不是一个典型的用例,但这是我的动机.我们有很多围绕SOLR编写的代码,它们根据用户搜索数据的各个字段执行查询.大多数情况下,我们需要相关性排序(即最佳匹配).
但是一个异常的用例要求我们按字段按字母顺序返回数据.我可以使用我们的SQL数据库执行此查询(完全避免使用SOLR),但我必须复制大量围绕消费SOLR结果(特别是方面)的代码.我希望使用相同的代码路径,如果可以从SOLR获得这样的排序.
我将ActionMailer配置放在我的config/environment.rb文件中,如下所示:
MyApp::Application.initialize!
MyApp::Application.configure do
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.elasticemail.com",
port: 2525,
domain: "myapp.com",
authentication: "plain",
user_name: "my_username",
password: "my_password",
enable_starttls_auto: true
}
end
Run Code Online (Sandbox Code Playgroud)
我的理解是,这是配置适用于所有环境的设置的正确方法.
这在开发中运行良好,但是当我部署到我的登台服务器(使用自定义config/environments/staging.rb配置文件)时,我在尝试传递邮件时遇到"连接被拒绝"错误.staging.rb根本没有与邮件程序相关的设置.
所以我在登台服务器上启动了控制台RAILS_ENV=staging rails c,并且"put Rails.application.config.action_mailer"显示我放入的设置environment.rb确实有效,但由于某些原因,ActionMailer没有使用它们.
通过实验,我发现直接复制配置可以staging.rb解决问题.为什么这有必要?如果rails控制台显示设置有效,为什么ActionMailer不使用它们?
深入挖掘,我看到我的邮件程序类的delivery_method未按预期设置:
MyMailer.foo(Person.find(1)).delivery_method
=> #<Mail::SMTP:0x0000000370d4d0 @settings={:address=>"localhost", :port=>25, :domain=>"localhost.localdomain", :user_name=>nil, :password=>nil, :authentication=>nil, :enable_starttls_auto=>true, :openssl_verify_mode=>nil, :ssl=>nil, :tls=>nil}>
Run Code Online (Sandbox Code Playgroud) 我非常偶然地注意到,我可以成功地传递指向结构的指针和指向结构的指针json.Unmarshal(),并且两者都可以正常工作:
package main
import (
"testing"
"encoding/json"
)
type Person struct {
Name string
Age int
}
func TestMarshaling(t *testing.T) {
foo := &Person{Name: "bob", Age: 23}
// marshal it to bytes
b, err := json.Marshal(foo)
if err != nil {
t.Error(err)
}
bar := &Person{} // pointer to new, empty struct
err = json.Unmarshal(b, bar) // unmarshal to bar, which is a *Person
if err != nil {
t.Error(err)
}
testBob(t, bar) // ok
bar = &Person{} …Run Code Online (Sandbox Code Playgroud) 我有一个Wicket应用程序,其中一些页面包含重音字符,输入为UTF-8,例如"résumé".
当我通过传统的Wicket Start.java类(调用嵌入式Jetty服务器)调试应用程序时,一切都很好.但是,当我尝试部署到本地Tomcat实例时,它呈现为"r√©sum√©".
我的文档看起来像:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
résumé
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
以下是curl -I在Jetty上运行时返回页面的内容:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Language: en-US
Pragma: no-cache
Cache-Control: no-cache, max-age=0, must-revalidate
Content-Length: 13545
Server: Jetty(6.1.25)
Run Code Online (Sandbox Code Playgroud)
这就是Tomcat返回的内容:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: no-cache
Cache-Control: no-cache, max-age=0, must-revalidate
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Transfer-Encoding: chunked
Date: Sat, 23 Jul 2011 14:36:45 GMT
Run Code Online (Sandbox Code Playgroud) java ×3
actionmailer ×1
classloader ×1
glassfish-3 ×1
go ×1
gwt ×1
html ×1
java-2d ×1
java-ee ×1
jndi ×1
jodatime ×1
memory-leaks ×1
permgen ×1
pointers ×1
rgb ×1
ruby ×1
rubygems ×1
solr ×1
struct ×1
task-queue ×1
timezone ×1
tomcat ×1
utf-8 ×1
wicket ×1