小编Ari*_*iel的帖子

为什么在Spring Security中对'anonymousUser'进行身份验证?

这是我的主控制器:

package org.demian.demibox.controllers;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MainController {
    private String getUsername() {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth.isAuthenticated())
            return auth.getName();
        else
            return null;
    }
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String showHome() {
        String username = getUsername();
        System.out.println(username);
        if (username == null || username.length() == 0)
            return "welcome";
        return "index";
    }
}
Run Code Online (Sandbox Code Playgroud)

即使我没有登录,也auth.isAuthenticated()总是返回true.这是为什么?何时会auth.isAuthenticated()返回虚假?经过身份验证的用户的名称是,anonymousUser如果我没有登录,并且如果我已登录,则使用用户名.

编辑

这是我的security-context.xml档案:

<?xml version="1.0" encoding="UTF-8"?>
<beans …
Run Code Online (Sandbox Code Playgroud)

authentication spring spring-security java-ee

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

mysqli::commit 和 mysqli::rollback 是如何工作的?

我已经阅读了在线 php 手册,但我仍然不确定这两个函数的工作方式:mysqli::commit 和 mysqli::rollback。

我要做的第一件事是:

$mysqli->autocommit(FALSE);
Run Code Online (Sandbox Code Playgroud)

然后我提出一些疑问:

$mysqli->query("...");
$mysqli->query("...");
$mysqli->query("...");
Run Code Online (Sandbox Code Playgroud)

然后我通过执行以下操作提交由这 3 个查询组成的事务:

$mysqli->commit();
Run Code Online (Sandbox Code Playgroud)

但是,在这些查询之一不起作用的不幸情况下,所有 3 个查询都被取消还是我必须自己调用回滚?我希望所有 3 个查询都是原子的,并且只被视为一个查询。如果一个查询失败,那么所有 3 个查询都应该失败并且没有任何效果。

我问这个是因为在我在手册页上看到的评论中:http : //php.net/manual/en/mysqli.commit.php 如果其中一个查询失败,用户 Lorenzo 会调用回滚。

如果 3 个查询是原子的,回滚有什么好处?我不明白。

编辑:这是我怀疑的代码示例:

<?php 
$all_query_ok=true; // our control variable 
$mysqli->autocommit(false);
//we make 4 inserts, the last one generates an error 
//if at least one query returns an error we change our control variable 
$mysqli->query("INSERT INTO myCity (id) VALUES (100)") ? null : $all_query_ok=false; 
$mysqli->query("INSERT INTO myCity (id) VALUES (200)") ? …
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli commit rollback

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

当我接近OutOfMemoryError时如何在java中确定?

我需要找出什么时候我真的很接近,OutOfMemoryError所以我可以将结果刷新到文件和调用runtime.gc();.我的代码是这样的:

Runtime runtime = Runtime.getRuntime();
...
if ((1.0 * runtime.totalMemory() / runtime.maxMemory()) > 0.9) {
... flush results to file ...
  runtime.gc();
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?有人可以帮我一把吗?

编辑

我明白我这样玩火,所以我推理一种更加坚实而简单的方法来确定我什么时候吃饱了.我目前正在使用Jena模型,所以我做了一个简单的检查:如果模型有超过550k的语句,那么我冲洗所以我不冒任何风险.

java runtime out-of-memory heap-size

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

如何用XSLT连接很多XML文件?

我有一个包含许多XML文件的文件夹,我想要一个简单的XSLT转换,它可以将所有这些文件合并为一个,并将所有数据放在一个名为的节点下<files>...</files>.我不在乎订单.

PS我没有索引文件,其中包含所有文件的名称.我在谷歌搜索"XSLT连接XML文件"但结果总是谈到使用该document()函数并从索引文件中获取文件的名称.collection()如果可能的话,我想看看使用该功能的问题的解决方案.

xml xslt file concatenation

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

为什么在 XSSFRow 中使用 copyRowFrom(...) 时出现 IllegalArgumentException?

我试图copyRowFrom(...);将电子表格的第一行复制到新 XSSFSheet 的第一行,但有些东西无法正常工作。您可以在此处找到 XSSFRow 类和方法: https://github.com/apache/poi/blob/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java#L581

IllegalArgumentException("amountToMove must not be zero")从 FormulaShifter.java 获取: https://github.com/apache/poi/blob/trunk/src/java/org/apache/poi/ss/formula/FormulaShifter.java#L80

问题似乎出在 XSSFRow 的第 623 行,其中FormulaShifter.createForRowCopy(...)使用参数调用rowDifference = 0,因为源行为 0,目标行为 0: https: //github.com/apache/poi/blob/trunk/src/ooxml/java/org /apache/poi/xssf/usermodel/XSSFRow.java#L623

我不知道,也许这是一个错误,但是当到达 FormulaShifter.java 中的第 80 行时,参数 rowDifference 对应的 amountToMove 为 0,因此它抛出 IllegalArgumentException。

copyRowFrom(...);我是否遗漏了某些内容,或者这是XSSFRow 中方法的错误?

java apache-poi apache-poi-4

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

占有量词如何运作?

在页面的最后,有人试图解释贪婪,不情愿和占有欲量词如何工作:http://docs.oracle.com/javase/tutorial/essential/regex/quant.html

然而,我尝试了一个例子,我似乎并没有完全理解它.

我会直接粘贴我的结果:

Enter your regex: .*+foo
Enter input string to search: xfooxxxxxxfoo
No match found.

Enter your regex: (.*)+foo
Enter input string to search: xfooxxxxxxfoo
I found the text "xfooxxxxxxfoo" starting at index 0 and ending at index 13.
Run Code Online (Sandbox Code Playgroud)

为什么第一个reg.exp.找不到匹配,第二个呢?这两个reg.exp之间的确切区别是什么?

java regex greedy quantifiers

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