我有一个字符串
def data = "session=234567893egshdjchasd&userId=12345673456&timeOut=1800000"
Run Code Online (Sandbox Code Playgroud)
我想将它转换为地图
["session", 234567893egshdjchasd]
["userId", 12345673456]
["timeout", 1800000]
Run Code Online (Sandbox Code Playgroud)
这是我现在这样做的方式,
def map = [:]
data.splitEachLine("&"){
it.each{ x ->
def object = x.split("=")
map.put(object[0], object[1])
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,但是有更有效的方法吗?
我一直在寻找SO的开源克隆,
http://github.com/cnprog/CNPROG
我不知道Python/Django但我仍然可以阅读最新消息,
开发人员似乎只是通过cron工作授予徽章,奖项是通过方法给出的,是获得奖项必须满足的标准的"规则".
在这个文件中,这是Criteria,
然而,在回答最好的商店徽章标准时,它的说法不是像
"select count(*) from posts where user = :user"// for every post.
Run Code Online (Sandbox Code Playgroud)
这有点像CNPROG方法,而是相反
有一个简单的规则,监视每个帖子来,并"计算它们",将规则状态存储在用户配置文件中.
因此,通过"计算它们"这个词,这是否意味着将所有内容记录在一个表中会更好,比如
class UserStats
int voteUpCount
int voteDownCount
int score
int commentCount
int viewCount
int offensiveFlagCount
int imageCount
int feedbackCount
int commentEditCount
int commentDeleteCount
int questionCount
int questionEditCount
int questionDeleteCount
Run Code Online (Sandbox Code Playgroud)
然后使用此数据从中制定规则,只需if(commentCount > 10)...
对用户发布的每条注释进行简单处理,然后执行SQL查询
问:如果有人可以从问题的最佳方式到商店徽章标准进一步解释答案,但举一个"规则","标准"和数据库设计的例子
这些将与一些"每用户操作"和cron作业一起使用以提供徽章
Java 和 DB for DateTime 哪个最有利?(使用 JodaTime 作为日期)
(DateTime 对象 (Java) + TIMESTAMP (DB) ) VS (毫秒长 (Java) + BIGINT(DB)
用于在底层数据库支持的 Java Web 应用程序中使用日期时间信息
兴趣范围
例如,假设我有一个带有开始和结束日期时间的事件。在数据库中使用 BIGINT 搜索日期事件是否比 TIMESTAMPS 更快
当可扩展性和检索问题出现时,我可能会交换底层数据库。
将日期时间保存为 MySQL 数据库中的时间戳会在移植到其他数据库(如 Oracle)时导致问题吗?
我目前在java中使用Joda DateTime,然后存储该值的毫秒数。
检索它时,我将毫秒转换回 DateTime 对象并显示它。
我有一个这样的字符串:
http://www.example.com/value/1234/different-value
Run Code Online (Sandbox Code Playgroud)
我怎样才能提取1234
?
注意:末尾可能有斜线:
http://www.example.com/value/1234/different-value
http://www.example.com/value/1234/different-value/
Run Code Online (Sandbox Code Playgroud) 我正在尝试测试具有数据绑定的Command对象的Controller.
命令对象注入了一个服务.
但是当我尝试测试命令对象时,从未找到注入的服务方法,因为它从未被"注入"
有没有办法在命令对象中模拟服务?
测试方法
void testLoginPasswordInvalid() {
mockRequest.method = 'POST'
mockDomain(User, [new User(login:"freddy", password:"realpassword")])
mockLogging(UserService) // userService mocked
MockUtils.prepareForConstraintsTests(LoginCommand)
def userService = new UserService()
def user = userService.getUser("freddy")//Gets called and returns the mockDomain
assert userService.getUser("freddy")//Passes
def cmd = new LoginCommand(login:"freddy", password:"letmein")
cmd.validate() // Fails (userService is nevr injected)
controller.login(cmd)
assertTrue cmd.hasErrors()
assertEquals "user.password.invalid", cmd.errors.password
assertEquals "/store/index", renderArgs.view
}
Run Code Online (Sandbox Code Playgroud)
找不到userService的getUser()方法
Cannot invoke method getUser() on null object
java.lang.NullPointerException: Cannot invoke method getUser() on null object
Run Code Online (Sandbox Code Playgroud)
码
调用控制器的登录方法,
def login = …
Run Code Online (Sandbox Code Playgroud) 我想知道从数据库中的一行更新域类中的单个值的最有效方法是什么.可以说域类有20多个字段
def itemId = 1
def item = Item.get(itemId)
itemId.itemUsage += 1
Item.executeUpdate("update Item set itemUsage=(:itemUsage) where id =(:itemId)", [usageCount: itemId.itemUsage, itemId: itemId.id])
vs
def item = Item.get(itemId)
itemId.itemUsage += 1
itemId.save(flush:true)
Run Code Online (Sandbox Code Playgroud) 我正在使用Grails Webflow,我传递给视图的对象,它必须是序列化的.我的域模型"实现Serializable",因此它们可以工作.
问题是当我从WebService获得响应时.它是org.json.JSONArray类.
我只想将整个数组传递给视图,但它没有实现Serializable,所以它失败了,
关于如何通过这个或者我最好的选择的任何想法?
我可以只编辑org.json库的源代码并使每个类"imp Serializable"吗?
或者将结果处理为执行"imp Serializable"的Domain对象
当我发现特定对象隐私对当前用户来说是隐私时,我正试图从列表中删除对象
books.eachWithIndex{ obj, i ->
if((obj.book.private).equals(true)){
def status = bookService.getBookStatus(obj.book)
if(!status){
books.remove(i)
}
}
}
Run Code Online (Sandbox Code Playgroud)
尝试删除对象时抛出错误
ERROR errors.GrailsExceptionResolver - null java.util.ConcurrentModificationException
问:有没有办法从列表中删除对象本身,还是必须单独存储索引值并从每个循环外部删除对象?
我希望能够在Java中更改1970年到2008年的基本毫秒参考,这样我就可以节省数据库中的空间和唯一的ID.
最好是Joda-Time.
所谓的Java 7版本中即将推出的jsr-310实现了它.
在此链接的"离散时间轴"部分中,它指出毫秒的计数已从1970年改为2008年
http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html
我能看到的唯一其他选项是每次需要查找记录时以数学方式实现它.
例如
DateTime dt = new DateTime();
long now = dt.getMillis();
DateTime dt2 = new DateTime(2008, 1, 1, 0, 0, 0, 0);
long then = dt2.getMillis();
long smallerDate = now - then;
Run Code Online (Sandbox Code Playgroud)
较小的日期将存储在DB中
- 编辑 -
所以我误读了JSR-310,这是不可能的.
有更好的方法来节省空间,然后处理成千上万的请求计算多头的头痛.
我想将长记录为日期,因为我永远不会知道将数据库移动到哪里,也许MySQL => Oracle.
所以我不想要时间戳,我只想要BigInts.
在控制器中
params.max = Math.min(params?.max?.toInteger() ?: 10, 20)
params.offset = params?.offset?.toInteger() ?: 0
Run Code Online (Sandbox Code Playgroud)
如果您输入以下网址
/books?offset=10&max= //error
/books?offset=10&max=sdf //error
/books?offset=&max=10 //works
/books?offset=adsfa&max=10 //error
java.lang.NumberFormatException: For input string: "asdf"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.valueOf(Integer.java:554)
Run Code Online (Sandbox Code Playgroud)
是否有一行常规答案来检查url参数中的null / string字符?
尝试测试新的Open Graph Beta以发布新动作.
我正在关注官方教程
它说要发布你将使用此POST的动作
For example, sending a POST to:
https://graph.facebook.com/me/YOUR_NAMESPACE:cook
?recipe=OBJECT_URL&access_token=ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
但是在JS调用中.没有访问令牌
FB.api('/me/YOUR_NAMESPACE:cook' +
'?recipe=http://example.com/cookie.html','post',
function(response) {
..........
}
Run Code Online (Sandbox Code Playgroud)
当我尝试发布自己的操作时出错.我已publish_actions
通过该应用验证了该权限