小编Jon*_*gel的帖子

解释或调查基于人工智能(AI)的麻将游戏方法/策略的资源

虽然麻将(实际游戏,而不是麻将solitare)在基本规则和游戏玩法方面相当简单,但设定AI过渡目标以达到某些最终游戏目标似乎相当复杂.

是否有人知道与此主题相关的任何论文,研究或其他材料?

artificial-intelligence mahjong

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

你使用哪些C++逻辑运算符:和,或者不是和类型的运算符?为什么?

标题中隐含的休闲/好奇心问题.

我个人更喜欢新操作符,以便在我看来使代码更具可读性.

哪些人自己使用?你选择一个而不是另一个的原因是什么?

此外,Emacs以不同的方式突出显示这些运算符,以便在查看屏幕时获得更多视觉反馈.我知道旧操作符也可以突出显示,但ISO646默认突出显示

c++ survey operators

7
推荐指数
3
解决办法
2584
查看次数

捍卫'WAITFOR DELAY'sql注入攻击?

问题

我们需要在我们的java应用程序中防御'WAITFOR DELAY'sql注入攻击.

背景

[这很长.跳到'解决方案?' 以下部分,如果你匆忙]

我们的应用程序主要使用预准备语句和可调用语句(存储过程)来访问数据库.

在一些地方,我们动态构建并执行查询以供选择.在此范例中,我们使用条件对象根据用户输入条件构建查询.例如,如果用户为first_name和last_name指定了值,则查询结果总是如下所示:

SELECT first_name,last_name FROM MEMBER WHERE first_name ='joe' AND last_name='frazier'
Run Code Online (Sandbox Code Playgroud)

(在这个例子中,用户会指定"joe"和"frazier"作为他/她的输入值.如果用户有更多或更少的批评,我们会有更长或更短的查询.我们发现这种方法比使用准备更容易声明,比存储过程更快/更高效.

攻击

漏洞审计报告了sql注入失败.攻击者为'last_name'参数注入'frazier WAITFOR DELAY '00:00:20'值,导致这个sql:

   SELECT first_name,last_name FROM MEMBER WHERE first_name ='joe' AND last_name='frazier' WAITFOR DELAY '00:00:20'
Run Code Online (Sandbox Code Playgroud)

结果:查询成功执行,但执行时间为20秒.攻击者可以占用数据库池中的所有数据库连接,并有效地关闭您的站点.

关于这种'WAITFOR DELAY'攻击的一些观察

  • 我曾经想过,因为我们使用了Statement executeQuery(String),所以我们可以安全地从sql注入.executeQuery(String)不会执行DML或DDL(删除或删除).并且在分号上执行Query(String)choke,因此'Bobby Tables'范例将失败(即用户输入'frazier; DROP TABLE成员'作为参数.参见http://xkcd.com/327/)

  • "WAITFOR"攻击在一个重要方面有所不同:WAITFOR修改现有的"SELECT"命令,而不是单独的命令.

  • 攻击仅适用于生成的查询中的"最后一个参数".即'WAITFOR'必须出现在sql语句的最后

解决方案,廉价黑客还是两者

最明显的解决方案是简单地将"AND 1 = 1"添加到where子句中.

生成的sql立即失败并阻止攻击者:

   SELECT first_name,last_name FROM MEMBER WHERE first_name ='joe' AND last_name='frazier' WAITFOR DELAY '00:00:20' AND 1=1
Run Code Online (Sandbox Code Playgroud)

问题

  • 这是WAITFOR攻击的可行解决方案吗?
  • 它是否可以抵御其他类似的漏洞?
  • 我认为最好的选择是使用准备好的陈述.更多的工作,但不那么脆弱.

sql-server sql-injection jdbc

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

如何找出哪个线程在java中锁定文件?

我正在尝试删除我的程序中的另一个线程之前使用过的文件.

我无法删除该文件,但我不知道如何确定哪个线程可能正在使用该文件.

那么如何找出哪个线程在java中锁定文件?

java multithreading file-locking

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

git适合没有服务器的一个开发人员

我是一个单独的开发人员,没有另一台计算机来备份我的项目.我正在寻找源控件,我遇到了git,但所有设置教程都是针对外部服务器的.我曾经使用SourceGear Vault,但是看到git受到了很多关注,我不妨熟悉它.我并不总是有互联网接入.

Git适合我吗?我可以指出正确的方向进行设置吗?

  1. Visual Studio 2008.
  2. Windows 7的.

git version-control visual-studio-2008 windows-7

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

Visual Studio 2008:调试时不要部署SQL Server Compact 3.5

我正在使用VS2008为Windows CE 5.0设备(Datalogic Kyman)创建Compact Framework应用程序.我在我的应用程序中使用SQL Server Compact 3.5.但是,我正在调试仍然安装了Windows CE 4.2的Kyman(通过USB使用移动设备中心连接).我的问题:

VS2008无法识别设备上已安装SQL Server Compact并要求我每次从IDE运行应用程序时安装SQL Server Compact .安装程序向我显示有关SQL Server Compact CAB文件不适用于此设备的警告,但安装工作没有错误,应用程序也正常工作.

我已经取消选中"始终部署最新的.NET版本"这个框(不知道它的英文名称是什么,使用德语VS2008),但这没有用.

如何在每次启动应用程序之前告诉Visual Studio 不要安装SQL Server?

windows-ce visual-studio-2008 sql-server-ce

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

ASP.MVC路由没有Details操作

我希望网址比/ {Controller}/{Action}/{Id}更短.

例如,我想{Controller}/{Id},其中{Id}是一个字符串.

这将允许简单的路径,例如用户/用户名,页面/页面名称,新闻/新闻名称.我比在URL(用户/详细信息/用户名)中要求/ Details操作更好,这对最终用户来说不那么优雅.

我可以通过为任何我想要这种简单程度的控制器设置自定义路由来轻松完成这项工作.但是,这会导致实现其他操作时出现麻烦,例如{Controller}/{Action},其中{Action} ='Create',因为在这种情况下,字符串{Action}与字符串{Id}冲突.

我的问题:我怎么能有'保留'字样,所以如果URL是/ News/Create,它被视为一个动作,但如果URL是其他任何东西,例如/ News/A-gorilla-ate-my-论文,然后它被视为Id.

我希望在设置路线时可以定义这个?

更新:

使用Ben Griswold的答案,我已将默认的ASP.NET MVC路由更新为:

    routes.MapRoute(
    "CreateRoute",                                            // route name
    "{controller}/Create",                                    // url with parameters
    new { action = "Create" }                                 // parameter defaults
);

routes.MapRoute(
    "DetailsRoute",                                           // route name
    "{controller}/{id}",                                      // url with parameters
    new { action = "Details" }                                // parameter defaults
);

routes.MapRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc-routing asp.net-mvc-2

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

副作用陷入python/numpy?想要恐怖故事和狭隘逃脱

我正在考虑从Matlab转到Python/numpy进行数据分析和数值模拟.我已经使用Matlab(和SML-NJ)多年了,并且在功能环境中非常舒适而没有副作用(除了I/O),但我对Python中的副作用有点不情愿.人们可以分享他们最喜欢的关于副作用的问题,如果可能的话,他们如何绕过它们?作为一个例子,当我在Python中尝试以下代码时,我有点惊讶:

lofls = [[]] * 4    #an accident waiting to happen!
lofls[0].append(7)  #not what I was expecting...
print lofls         #gives [[7], [7], [7], [7]]
#instead, I should have done this (I think)
lofls = [[] for x in range(4)]
lofls[0].append(7)  #only appends to the first list
print lofls         #gives [[7], [], [], []]
Run Code Online (Sandbox Code Playgroud)

提前致谢

python matlab functional-programming side-effects

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

scriptblock上的新闭包

考虑以下代码:

PS> $timer = New-Object Timers.Timer
PS> $timer.Interval = 1000
PS> $i = 1;
PS> Register-ObjectEvent $timer Elapsed -Action { write-host 'i: ' $i }.GetNewClosure()
PS> $timer.Enabled = 1
i:  1
i:  1
i:  1
 ...
# wait a couple of seconds and change $i
PS> $i = 2
i:  2
i:  2
i:  2
Run Code Online (Sandbox Code Playgroud)

我假设当我创建新的closure({ write-host 'i: ' $i }.GetNewClosure())值时$i将绑定到此闭包.但不是在这种情况下.我改变了值,write-host取新值.

另一方面,这有效:

PS> $i = 1;
PS> $action = { write-host 'i: ' $i …
Run Code Online (Sandbox Code Playgroud)

powershell events closures

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

避免在SSIS中完全编写SQL查询

在数据仓库项目上工作,给我们教程的人建议我们坚持使用SQL查询来定义大量的数据流转换,引用它会在ETL盒子上消耗大量内存,所以我们而是将处理留给DB框.这真的可取吗?依赖GUI工具而不是在Integration包上执行一堆SQL脚本之间的平衡点在哪里?

老实说,我想尽可能避免编写SQL查询.(但那不是重点.我真的很想客观地看待这一点.)

ssis data-warehouse

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