小编Dax*_*xon的帖子

编写此代码的最佳方法是在Groovy中使用字符串映射转换

我有一个字符串

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)

它有效,但是有更有效的方法吗?

string groovy map

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

像SO这样的徽章成就系统:正在使用的数据+标准(即时授予和计算机工作)

我一直在寻找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作业一起使用以提供徽章


cron achievements

10
推荐指数
1
解决办法
992
查看次数

日期与毫秒 | 为了可扩展性,在 Java + MySQL(或其他数据库)中保存、搜索和获取时间

Java 和 DB for DateTime 哪个最有利?(使用 JodaTime 作为日期)

(DateTime 对象 (Java) + TIMESTAMP (DB) ) VS (毫秒长 (Java) + BIGINT(DB)

用于在底层数据库支持的 Java Web 应用程序中使用日期时间信息

兴趣范围

  • Java 中的操作、处理和内存使用
  • 节省使用 MySQL 数据库中的高效存储空间
  • 轻松将 BIGINT/TIMESTAMP 列移植到其他数据库
  • 轻松在数据库中搜索 BIGINT/TIMESTAMP 或在两个 BIGINT/TIMESTAMP 之间搜索

例如,假设我有一个带有开始和结束日期时间的事件。在数据库中使用 BIGINT 搜索日期事件是否比 TIMESTAMPS 更快

当可扩展性和检索问题出现时,我可能会交换底层数据库。

将日期时间保存为 MySQL 数据库中的时间戳会在移植到其他数据库(如 Oracle)时导致问题吗?


我目前在java中使用Joda DateTime,然后存储该值的毫秒数。

检索它时,我将毫秒转换回 DateTime 对象并显示它。

java database datetime jodatime

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

正则表达式:对 url 字符串的两个斜杠之间的倒数第二个值进行子串

我有一个这样的字符串:

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)

ruby regex url substring

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

Grails:如何使用注入的服务对命令对象进行单元测试

我正在尝试测试具有数据绑定的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)

service grails junit unit-testing command-objects

5
推荐指数
2
解决办法
4072
查看次数

Grails:更新域中的单个对象,".save"Vs".executeUpdate"

我想知道从数据库中的一行更新域类中的单个值的最有效方法是什么.可以说域类有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 hql save

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

"org.json.JSONArray实现了Serializable":实现这一目标的最佳选择是什么?

我正在使用Grails Webflow,我传递给视图的对象,它必须是序列化的.我的域模型"实现Serializable",因此它们可以工作.

问题是当我从WebService获得响应时.它是org.json.JSONArray类.

我只想将整个数组传递给视图,但它没有实现Serializable,所以它失败了,

关于如何通过这个或者我最好的选择的任何想法?

我可以只编辑org.json库的源代码并使每个类"imp Serializable"吗?

或者将结果处理为执行"imp Serializable"的Domain对象

java arrays grails serialization json

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

Groovy:从列表中删除和对象本身?

当我发现特定对象隐私对当前用户来说是隐私时,我正试图从列表中删除对象

     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

问:有没有办法从列表中删除对象本身,还是必须单独存储索引值并从每个循环外部删除对象?

arrays groovy list

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

是否有可能在Java中改变从1970年到2008年的基本毫秒参考时间(如JSR-310)

我希望能够在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.

java datetime jodatime java-7 jsr310

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

Grails / Groovy:URL参数(最大值,偏移量)空白/字符串时引发NumberFormatException

在控制器中

 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字符?

url grails groovy params parseint

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

Facebook Open Graph Beta:OAuthException

尝试测试新的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通过该应用验证了该权限

  • "OAuthException" - "发生意外错误.请稍后重试您的请求."

oauth facebook-graph-api

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