小编Hik*_*ari的帖子

C#.Net中的可选返回

Java 1.8正在接收Optional类,它允许我们明确说明方法何时可以返回空值并"强制"其使用者isPresent()在使用它之前验证它是否为null().

我看到C#有Nullable,它做了类似的事情,但有基本类型.它似乎用于数据库查询,以区分值何时存在,并且当它不存在时为0并且为空.

但似乎C#的Nullable不适用于对象,仅适用于基本类型,而Java的Optional仅适用于对象而不适用于基本类型.

在C#中是否有Nullable/Optional类,这迫使我们在提取和使用它之前测试对象是否存在?

.net c# nullable optional

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

org.hibernate.Session.save()到底做了什么?

我知道Session.save()持续存在瞬态对象.而且我看到它也有saveOrUpdate(),而且persist().

那我觉得那save()相当于SQL INCLUDE,是吗?

如果我有一个已存在于DB上的对象,save()那么它是否会包含另一行,是否会更新其字段,还是会被忽略而没有任何反应?

java hibernate

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

Postgres:左边加入订单依据和限制1

我有这样的情况:

Table1 has a list of companies.
Table2 has a list of addresses.
Table3 is a N relationship of Table1 and Table2, with fields 'begin' and 'end'.
Run Code Online (Sandbox Code Playgroud)

由于公司可能会随着时间的推移而移动,因此其中的LEFT JOIN会为每家公司带来多条记录.

beginend字段永远不会为NULL.找到最新地址的解决方案是使用a ORDER BY being DESC,并删除旧地址是一个LIMIT 1.

如果查询只能带来一家公司,那该工作正常.但我需要一个查询,它带来所有Table1记录,并与当前的Table2地址相连接.因此,必须在LEFT JOIN的ON子句中删除过时的数据(AFAIK).

知道如何构建条款不创建重复的Table1公司并带来最新地址吗?

postgresql sql-order-by left-join foreign-key-relationship duplicate-removal

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

如何查看PreparedStatement的SQL字符串?

当我们创建PreparedStatement时,我们使用'?' 然后用设置的参数替换字符.

在设置这些参数后,我们如何看到最终的SQL字符串?

java jdbc prepared-statement

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

重用SqlConnection的最佳实践

我来自Java经验,我试图从C#开始.我已经阅读了SqlConnection SqlCommand SqlDataReader IDisposable,我可以理解连接到数据库的最佳做法是包装SqlConnection,SqlCommandSqlDataReader在他们自己的using块中.

但在Java中,我们使用将连接封装到工厂方法中,只创建一次,并将其重用于所有查询,甚至是多线程查询.仅为每个查询创建语句和结果集,并尽快关闭.

是不是SqlConnection为每个查询创建一个新的有点矫枉过正?不能重复使用吗?

.net c# connection-pooling idisposable sqlconnection

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

Subversion存储库中的符号链接?

我正在开发一个PHP和Java的小应用程序.它有一些图片,CSS和JS,必须在两者中共享.

我不希望这些文件重复,JS和CSS在两者中都必须相同.所以我喜欢这样,当我在一个地方改变它时,改变将被复制到另一个地方.

在Unix中,我们有符号链接,因此相同的文件/文件夹可以"存在"在文件系统中的多个位置.在Subversion中我们有svn copy,但是一旦它被执行,两个副本就变得独立了.我希望将它们保持在一起,在一个副本中完成的提交也将应用于"其他".

知道怎么做吗?

svn symlink

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

PHP 5.5和MSSQL驱动程序:在Windows Server 2012 R2中安装ODBC驱动程序11

我有一个带有IIS 8.5的Windows Server 2012 R2和另一个带有MSSQL 2012的服务器.我必须在IIS中安装PHP并连接到MSSQL,我没有可用于Web PI的Internet.

我设法安装PHP 5.5,我能够运行phpinfo(),我也保证php.ini正在加载C:\php\php.ini.

我还能够加载sqlsrv驱动程序,它在示例中报告sqlsrv.ClientBufferMaxKBSize 10240 10240.

但是当我执行连接到DB的php文件时,我收到一条消息

此扩展需要SQL Server的ODBC驱动程序11.访问以下URL以下载适用于x86的SQL Server的ODBC驱动程序11:http://go.microsoft.com/fwlink/?LinkId = 163712

我去了那个网站,它说

驱动程序3.1版支持的操作系统包括Windows Server 2012 R2`.

它说

版本3.1要求SQL Server的Microsoft ODBC驱动程序11(或更高版本)and points tohttp://www.microsoft.com/en-us/download/details.aspx?id= 36434`.

在该页面的"系统要求"中,未列出WinServer 2012 R2.当我尝试安装时,msodbcsql.msi我收到消息

安装此产品失败,因为此操作系统不支持此产品.有关支持的配置的信息,请参阅产品文档

好吧,我现在卡住了.我需要在WinServer 2012 R2和IIS 8.5连接到MSSQL 2012的PHP.但它的驱动程序需要ODBC 11,它似乎不支持最新的WinServer.

有没有希望,还是我需要等待微软在自己的驱动程序中支持自己的操作系统?

odbc sql-server-2012 windows-server-2012 iis-8.5 php-5.5

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

递归检索上一条记录的LAG()值

我进行了涉及LAG()的以下计算:

(lag(fValue,1,fValue) OVER (PARTITION BY Cluster ORDER BY iSequence) + fValue) / 2 as fValueAjusted

它取前一个(基于iSequence)记录的fValue,与当前记录之和,然后除以2。

但是,必须使用先前记录的fValueAjusted来执行此操作,而不是使用fValue。

这意味着第一条记录的fValueAjusted将是其自己的fValue。第二条记录的fValueAjusted将基于第一条记录的fValue。并且,从第三条记录开始,将基于前一条记录的fValueAjusted进行计算。

我需要对上一条记录的fValueAjusted进行递归计算的fValueAjusted。我不知道该怎么做。

更新1:这是源数据的示例。实际表具有数百条记录和80个群集。

CREATE TABLE dbo.example (
    iUnity      int NOT NULL,
    Cluster     char(2) NOT NULL,
    fValue      float NOT NULL
)

15  A1      150
17  A1      170
21  B2      210
23  B2      230
71  C3      710
Run Code Online (Sandbox Code Playgroud)

这是计算顺序的CTE:

WITH cteSequencing AS (
    SELECT
        iUnity,Cluster
        ,fValue as fValueOriginal
        ,row_number() OVER (PARTITION BY Cluster ORDER BY fValueOriginal) as iSequence
    FROM dbo.example
)
Run Code Online (Sandbox Code Playgroud)

如果将基于fValueOriginal计算fValueAjusted,则查询将类似于:

SELECT
    iUnity,Cluster,fValueOriginal
    ,(
        lag(fValue,1,fValue) …
Run Code Online (Sandbox Code Playgroud)

sql-server recursion lag sql-server-2012

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

pg_prepare:不能在准备好的语句中插入多个命令

我有 2 个表,TableA 和 TableB。TableB 有一个指向 TableA 的 fk 字段。

我需要对 TableA 使用 DELETE 语句,当其中的一条记录被删除时,我需要删除 TableB 中与 TableA 中该记录相关的所有记录。很基本。

begin;

DELETE FROM TableB
WHERE nu_fornecedor = $1;

DELETE FROM TableA
WHERE nu_fornecedor = $1;

commit;
Run Code Online (Sandbox Code Playgroud)

此字符串传递给 pg_prepare(),但随后出现错误 ERROR: cannot insert multiple commands into a prepared statement

好的,但是我需要在同一个事务中运行这两个命令,我不能执行 2 个分开的语句。我尝试在没有开始提交的情况下使用 with 并得到同样的错误。

知道怎么做吗?

php postgresql transactions prepared-statement

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

Tomcat无法使用spnego进行身份验证,“无法找到默认领域”

我正在使用http://spnego.sourceforge.net/spnego_tomcat.html教程尝试将Tomcat配置为使用spnego。

Hello_KDC.java工作正常,并且能够进行身份验证。如果我使用了错误的密码,则会收到错误Exception,因此它可以正常工作。

但是,当我尝试将该教程用于Tomcat时,它就坏了。Tomcat ROOT / index.jsp变为空白,并且在监视时我看到它返回404。log \ host-manager.2013-02-22.log具有以下内容:

Fev 22, 2013 1:39:03 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter SpnegoHttpFilter
javax.servlet.ServletException: javax.security.auth.login.LoginException: Cannot locate default realm
    at net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:198)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: javax.security.auth.login.LoginException: Cannot locate default realm
    at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

tomcat kerberos spnego jgss

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