这是我的主控制器:
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) 我已经阅读了在线 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) 我需要找出什么时候我真的很接近,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的语句,那么我冲洗所以我不冒任何风险.
我有一个包含许多XML文件的文件夹,我想要一个简单的XSLT转换,它可以将所有这些文件合并为一个,并将所有数据放在一个名为的节点下<files>...</files>
.我不在乎订单.
PS我没有索引文件,其中包含所有文件的名称.我在谷歌搜索"XSLT连接XML文件"但结果总是谈到使用该document()
函数并从索引文件中获取文件的名称.collection()
如果可能的话,我想看看使用该功能的问题的解决方案.
我试图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 中方法的错误?
在页面的最后,有人试图解释贪婪,不情愿和占有欲量词如何工作: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之间的确切区别是什么?