小编Mik*_*ain的帖子

比较两个因子而不计算

有没有办法比较两个数字中哪个阶乘数更大而不计算?
场景是我正在创建ac#console应用程序,它需要两个因子输入

123!!!!!!
456!!!  
Run Code Online (Sandbox Code Playgroud)

我想要做的就是比较哪个阶乘值大于其他因素,我所做的代码片段

try
{
    string st = Console.ReadLine();
    Int64 factCount = 0;
    while (st.Contains('!'))
    {
       factCount = st.Where(w => w == '!').Count();
       st = st.Replace('!', ' ');

    };
    decimal result = 1 ;
    for (Int64 j = 0; j < factCount; j++)
    {
        UInt64 num = Convert.ToUInt64(st.Trim());
        for (UInt64 x = num; x > 0; x--)
        {
            result = result * x;
        }
    }
    if (factCount == 0)
    {
        result = Convert.ToUInt64(st.Trim());
    }


    string st2 = Console.ReadLine(); …
Run Code Online (Sandbox Code Playgroud)

.net c# decimal factorial

37
推荐指数
4
解决办法
2916
查看次数

防止实体框架中if-exists-update-else-insert的竞争条件

我一直在阅读有关如何在EF中实现if-exists-insert-else-update语义的其他问题,但要么我不理解答案如何工作,要么他们实际上没有解决问题.提供的常见解决方案是将工作包装在事务范围内(例如:使用没有竞争条件的实体框架实现if-not-exists-insert):

using (var scope = new TransactionScope()) // default isolation level is serializable
using(var context = new MyEntities())
{
    var user = context.Users.SingleOrDefault(u => u.Id == userId); // *
    if (user != null)
    {
        // update the user
        user.property = newProperty;
        context.SaveChanges();
    }
    else
    {
        user = new User
        {
             // etc
        };
        context.Users.AddObject(user);
        context.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

但我没有看到它如何解决任何问题,因为这个工作,我上面已经加星号的行应该阻止第二个线程是否尝试访问相同的用户ID,仅在第一个线程完成其工作时解除阻塞.但是,使用事务不会导致这种情况,并且由于第二个线程尝试第二次创建同一用户时发生的密钥违规,我们将抛出一个UpdateException.

而不是捕捉由竞争条件引起的异常,最好是防止竞争条件首先发生.执行此操作的一种方法是使星号行在数据库行上取出与其条件匹配的独占锁,这意味着在此块的上下文中,一次只有一个线程可以与用户一起使用.

对于EF的用户来说,这似乎是一个常见的问题,所以我正在寻找一个可以随处使用的干净,通用的解决方案.

我真的很想避免使用存储过程来创建我的用户.

有任何想法吗?

编辑:我尝试使用相同的用户ID在两个不同的线程上同时执行上述代码,尽管取出了可序列化的事务,但它们都能够同时进入临界区(*).这导致在第二个线程尝试插入与第一个刚刚插入的用户ID相同的用户ID时抛出UpdateException.这是因为,正如下面Ladislav所指出的,可序列化事务只有在开始修改数据而不是读取数据之后才会进行独占锁定.

.net entity-framework transactions race-condition

29
推荐指数
2
解决办法
7506
查看次数

在Python中使用csvreader对gzip文件

我有一堆gzip压缩文件,我想用Python的内置CSV阅读器打开检查.我想在没有先将它们手动解压缩到磁盘的情况下执行此操作.我想我想以某种方式获得未压缩数据的流,并将其传递给CSV阅读器.这在Python中可行吗?

python csv gzip

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

laravel中的全局变量

在PHP中,我曾经在我的内容中定义了一些变量并在我的header.php所有页面中使用它们.我怎么能在Laravel中有这样的东西?

我不是在谈论 View::share('xx', 'xx' );

假设我想要一个包含数字的变量,我需要在我的所有控制器中使用这个数字来计算某些东西.

php global-variables laravel laravel-4

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

如何在firefox和其他不支持html5标签选项的浏览器中获取占位符文本?

这适用于Chrome和支持HTML5中占位符文本的任何其他浏览器

<input id="name" name="name"  type="text" placeholder="Please enter your name..." required /> <br />
Run Code Online (Sandbox Code Playgroud)

但是,它不适用于3.5及更早版本的Firefox,显然是IE8,可能还有其他浏览器.

如何实现相同的功能(最好是在HTML/CSS中 - 如果不是我愿意接受建议),以支持所有旧版浏览器?如果不是每一个浏览器,至少Firefox和IE.

Safari和Chrome已经支持它(或者最新版本).

谢谢.

html css firefox internet-explorer-8

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

URL上的HTML <script>片段是否可以用于纯客户端应用程序中的XSS?

背景

说我有以下网页:

<html>
  <script>
    document.write('querystring=' + location.search.substr(1));
  </script>
<html>
Run Code Online (Sandbox Code Playgroud)

我在这样的URL打开它:

http://completely-secure-site/?<script>alert('fsecurity')</script>
Run Code Online (Sandbox Code Playgroud)

在所有尝试的浏览器(Chrome 57,Firefox 52和Safari 10)中,结果是:

查询字符串=%3Cscript%3Ealert(%27fsecurity%27)%3C /脚本%3E

因为尖括号<>无效的URL字符,他们似乎得到自动的方式浏览器中编码,才可以拿到附近的JS运行时的任何地方.

我的假设

这让我相信简单地在客户端上直接渲染查询字符串document.write总是安全的,而不是可能的XSS向量.(我意识到当然还有许多其他方式可以让应用程序容易受到攻击,但让我们坚持这里描述的精确案例.)

我的问题

我在这个假设中是否正确?

  • 在所有合理的浏览器中标准化/强制规定的URL中的不安全字符的入站编码是什么?(没有可能的XSS)
  • 或者,这只是我不应该全球依赖的某些(现代?)客户的精确/实施细节?(上面描述的XSS理论上是可行的)

与问题无关,但有趣的是一边.如果我首先解码URI,那么浏览器的行为是不同的:document.write(decodeURI(location.search.substr(1)));.Chrome和Safari中的XSS Auditor会阻止该页面,而Firefox会显示警报.

html javascript security xss http

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

在Postgresql中等效FOUND_ROWS()函数

我正在我的应用程序中进行一些分页,使用PostgreSQL的标准OFFSET和LIMIT关键字一次从数据库返回20行.例如,要获取第1页页面:

SELECT stuff FROM table WHERE condition ORDER BY stuff OFFSET 0 LIMIT 20
Run Code Online (Sandbox Code Playgroud)

我们还向用户显示记录总数,这是应用程序的要求.所以,显然,我可以通过发出一个单独的查询来获得总数:

SELECT COUNT(*) FROM table WHERE condition
Run Code Online (Sandbox Code Playgroud)

但是如果存在大量行,那么这不是最佳解决方案.我注意到MySQL有一个非常有用的函数FOUND_ROWS(),它正是我正在寻找的:

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function%5Ffound-rows

PostgreSQL中有相同的东西吗?

postgresql paging count

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

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

VS 2012中的C#文件没有语法突出显示或智能感知

我刚从MSDN(11.0.50727.1)安装了VS2012 Premium的RTM版本.我创建了一个C#ASP.NET MVC 4应用程序和一个C#控制台应用程序,但是它们都没有为我提供以下文件类型的语法高亮或Intellisense:

  • CS
  • CSHTML

但是所有其他文件类型似乎都运行正常,包括:

  • HTML
  • JS
  • XML
  • CSS
  • 配置

我在Mac OSX Lion上运行Windows 7,在VMWare Fusion 5中进行虚拟化.我也在同一个虚拟机中安装了VS 2010,它已经运行良好.

我试过运行devenv.exe/setup但没有成功.

我尝试过工具>导入和导出设置>重置但没有成功.

任何人有任何想法如何使这工作?

c# visual-studio visual-studio-2012

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

$ injector.instantiate在angularjs中VS $ injector.get VS $ injector.invoke

之间有什么区别$injector.instantiate,$injector.get并且$injector.invoke在AngularJS?

angularjs

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