小编JBe*_*ert的帖子

为什么我们可以在没有它的情况下加入主要外键关系?

如果我们可以从两个表中获取数据而没有主键和外键关系,那么为什么我们需要这个规则呢?你能用合适的例子清楚地解释我吗?这是一个测试数据库,不介意坏结构.

表的结构:

**

table - 'test1'
columns - id,lname,fname,dob
no primary and foreign key and also not unique(without any constraints)
Run Code Online (Sandbox Code Playgroud)

**

**table - 'test2'
columns- id,native_city
again, no relations and no constraints** 
Run Code Online (Sandbox Code Playgroud)

我仍然可以使用相同的列'id'连接这些表,所以如果没有主外键,那么它的用途是什么?

sql database

43
推荐指数
4
解决办法
10万
查看次数

Shiro过期的会话处理

我的独立应用程序使用Shiro进行安全管理.我遇到了过期会话的问题.如果用户会话过期,当我尝试将用户重新登录时,我会收到以下异常.有人可以帮忙吗?

org.apache.shiro.session.UnknownSessionException: There is no session with id [d32af383-5f26-463f-a2f0-58a0e82c7890]
 at org.apache.shiro.session.mgt.eis.AbstractSessionDAO.readSession(AbstractSessionDAO.java:170)
 at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSessionFromDataSource(DefaultSessionManager.java:236)
 at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSession(DefaultSessionManager.java:222)
 at org.apache.shiro.session.mgt.AbstractValidatingSessionManager.doGetSession(AbstractValidatingSessionManager.java:118)
 at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupSession(AbstractNativeSessionManager.java:105)
 at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupRequiredSession(AbstractNativeSessionManager.java:109)
 at org.apache.shiro.session.mgt.AbstractNativeSessionManager.stop(AbstractNativeSessionManager.java:238)
 at org.apache.shiro.session.mgt.DelegatingSession.stop(DelegatingSession.java:127)
 at org.apache.shiro.session.ProxiedSession.stop(ProxiedSession.java:107)
 at org.apache.shiro.subject.support.DelegatingSubject$StoppingAwareProxiedSession.stop(DelegatingSubject.java:419)
 at org.apache.shiro.session.ProxiedSession.stop(ProxiedSession.java:107)
 at org.apache.shiro.subject.support.DelegatingSubject$StoppingAwareProxiedSession.stop(DelegatingSubject.java:419)

我用spring配置shiro

<bean id="securityManager" class="org.apache.shiro.mgt.DefaultSecurityManager"> 
    <property name="realm" ref="myRealm"/>
    <property name="sessionManager.globalSessionTimeout" value="3600000" />
</bean> 
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> 
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">  
    <property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/> 
    <property name="arguments" ref="securityManager"/> 
</bean> 
Run Code Online (Sandbox Code Playgroud)

session-timeout shiro

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

使用BouncyCastle签名消息摘要

目前在C#中,我正在签署这样的挑战:

RSACryptoServiceProvider rsa;
RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(rsa);
RSAFormatter.SetHashAlgorithm("SHA1");
byte[] SignedHash = RSAFormatter.CreateSignature(paramDataToSign);
Run Code Online (Sandbox Code Playgroud)

然后我将其SignedHash交给Windows,它接受它,一切都OK。但是我需要将这部分移到Android上,这是一个问题,就是我无法获得相同的带符号哈希值。

在Android中,我尝试制作带符号的哈希,但它们不同于C#中生成的哈希。

Signature signer = Signature.getInstance("SHA1withRSA", "BC");
signer.initSign(privateKey);
signer.update(paramDataToSign);
signer.sign();
Run Code Online (Sandbox Code Playgroud)

在C#中-使用以下代码-我得到的结果与Android中的结果相同,但这不是可选项,因为Windows不接受签名的哈希。

ISigner signer = SignerUtilities.GetSigner("SHA1withRSA");
signer.Init(true, privateKey);
signer.BlockUpdate(paramDataToSign, 0, paramDataToSign.Length);
signer.GenerateSignature();
Run Code Online (Sandbox Code Playgroud)

此处写道,C#PKCS1SignatureFormatter和Java Signature应该给出相同的结果,但事实却并非如此。http://www.jensign.com/JavaScience/dotnet/VerifySig/

可能是什么问题呢?


这是我得到的基本64(WebSafe)值:

Challenge = zHyz12Tk4m151nssYIBWqBCAxhQ

RSAPKCS1SignatureFormatter SignedHash = kmu39keplCAV4Qnu22wdprLz4nGSsrVtHbxQ5YMUG7p-0YwReCG4ROIlFvYs4CGfjCiAGFPw4PLrLx7mrlAA6iuhJMkgm_PMTW9alQYTH612hLEUP4EmK0M2kw8CveLcjI3HA08z8bByllIzRyAlM8bcR438vw2uhx_CbgvOOHn8vwBPnvWbFqpi2doYoq2xEuFBRe7eBPrxbMRqEd3ExdQ9c9rYT4ivOJ4pbioyi6D5i5_1crvGwM6nQanMZCmooRYJO65NP3B4wWnvQZpJLRD0U08wWcvyGBFWp188ZovDjnkTQZku6lzmwGXfqQwtBz9uNvLcTbp7cVyt5EyQxw

Signature and ISigner SignedHash = Vt-b5QfGPnSPpZuIB8-H4N1K5hQXpImS4e8k56_HruDSqy3DLsz96QKUrccshjr1z9nTK3Mwvd5yPdyTJOqSUcDQqxV46LPhWQNsubqKxAz97ePpeslIH1gHdnzkh46ixsWqgDrhR7egQtDkU8PPsph1qahCxaVkRYspQBV0jPZ-LK4EjoGGnuWTCihVKjruXJZ2VY8yZ9QRAsHVptr0Nv-mldO2MFK-oEVbtVbHqUPf5So8im3oRSm68OqY4g56bCdFNSbhcFBjrZ1QPjnxiIk43-_5tevafqoOB2D_E_mQHCJwmRg3MrNij6IdAdloCejnhCWzgMHdcG1Ug_Qmig
Run Code Online (Sandbox Code Playgroud)

编辑:

因此,最简单的解决方案是使用Bouncy Castle API:

AsymmetricBlockCipher rsaEngine = new PKCS1Encoding(new RSABlindedEngine());
rsaEngine.init(true, privateKey);

DigestInfo dInfo = new DigestInfo(new AlgorithmIdentifier(X509ObjectIdentifiers.id_SHA1, DERNull.INSTANCE), paramDataToSign);
byte[] digestInfo = dInfo.getEncoded(ASN1Encoding.DER);

rsaEngine.processBlock(digestInfo, 0, …
Run Code Online (Sandbox Code Playgroud)

c# java cryptography bouncycastle digital-signature

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

"无法在SQL Server 2008上指定十进制(5,2)数据类型(参数4)作为替换参数"错误

在SQL Server 2008中,我收到以下错误:

不能将decimal(5,2)数据类型(参数4)指定为替换参数.

只是看看桌面上的触发器,看起来问题与此有关 if

if @SumField7 <> 100
    begin
        rollback tran
        raiserror ('...%d...', 16, 1, @SumField7)
    end
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

4
推荐指数
2
解决办法
4830
查看次数

将Powershell中的命令输出捕获为字符串而不是字符串数组

我试图捕获运行外部命令的输出作为字符串,但Powershell返回的结果始终是一个字符串数组.据我所知,Powershell将输出拆分为换行符(Windows或Unix行结尾)并将结果存储在数组中,但我希望保留这些换行符,因为这是用于svn预提交钩子脚本来检测是否存在已提交的文件具有混合行结尾.

$output = svnlook cat -t $transId -r $repos $filename
Run Code Online (Sandbox Code Playgroud)

此时,行结束已被剥离,并且$output是一个字符串数组,每行输出一个.

重定向到文件似乎不起作用,因为这标准化了行结尾.你怎么告诉Powershell不分割命令的输出?

谢谢!

powershell

4
推荐指数
3
解决办法
7985
查看次数

Maven Javadoc - 无法生成Javadoc

我有以下依赖项并在我的pom文件中构建.我可以使用Maven命令手动创建javadoc.我也可以成功地执行构建.输出根本没有提到javadoc.我也试过省略输出目录路径.POM文件依赖部分:

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.8</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然后是构建部分:

<build>
    <finalName>D</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.8</version>
            <configuration> 
                <outputDirectory>${project.build.directory}/javadoc</outputDirectory>
                <reportOutputDirectory>${project.reporting.outputDirectory}/javadoc</reportOutputDirectory>
                <version>2.8</version>
            </configuration>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <goals>
                        <goal>aggregate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

plugins javadoc maven

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

未从脚本设置 Powershell 别名

我正在尝试使用 powershell 脚本创建工作环境(路径和别名)。

powershell.exe -Command c:\workspace\script\profile.ps1 -NoExit
Run Code Online (Sandbox Code Playgroud)

在脚本中,我设置了一个别名:

Set-Alias npp "C:\Program Files (x86)\Notepad++\notepad++.exe"
Run Code Online (Sandbox Code Playgroud)

然而,启动新终端(通过 ConEmu)后,未定义别名(环境等其他设置已正确设置)。

有关如何通过脚本设置别名的任何提示?

powershell

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