小编Vas*_*huk的帖子

SQL Server查询以查找从城市A到城市B的所有路由以及传输

在面试开发人员职位时,我被问到这个问题.

任务:在SQL Server表写入查询中存储飞行路线,该查询将查找从城市A到城市B的所有路线,无需转移,只需一次或两次转移.例如,你有路线:

| From         | To
----------------------
Los Angeles     London   
Los Angeles     New York
New York        London
Los Angeles     Seattle
Seattle         Paris
Paris           London
Run Code Online (Sandbox Code Playgroud)

您需要找到所有从洛杉矶到伦敦的接送路线.结果应该是这样的

Route
------------------------
Los Angeles->London
Los Angeles->New York->London
Los Angeles->Seattle->Paris->London
Run Code Online (Sandbox Code Playgroud)

我的解决方案是这样

select [From] + '->' + [To] as [Route] from Routes where [From] = 'Los Angeles' and [To] = 'London'
union 
select r1.[From] + '->' + r1.[To] + '->' + r2.[To] as [Route] from Routes as r1 
join Routes as r2 on r1.[To] = …
Run Code Online (Sandbox Code Playgroud)

sql sql-server algorithm

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

实例构造函数中的lock()

我在实例构造函数中找到了一些代码锁语句.代码看起来像这样

public class MyClass
{
    private readonly object _syncRoot = new object();

    public MyClass(string parameter)
    {
        lock (_syncRoot)
        {
            // some code
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为锁在这里没用,因为这个代码不能在不同的线程中调用.每个线程都将创建自己的对象实例调用构造函数.但也许我错了,不知道什么.谢谢.

编辑: 在这个问题的第一个答案C#我正确使用锁定我找到了

最好在构造函数中围绕代码锁定,因为我相信在某些情况下可以在构造函数块执行完毕之前调用方法.

所以,这可能是一个答案.

c# multithreading constructor

13
推荐指数
2
解决办法
1331
查看次数

为什么.Net HashHelpers.IsPrime以这种方式实现?

看看.NET System.Collections.Generic.Dictionary<T,T>实现,我找到了一个方法HashHelpers.IsPrime(n),它检查数字是否为素数.我有点困惑为什么他们使用非常简单的优化技术测试从3开始的奇数.

(来源代码)

int limit = (int)Math.Sqrt (candidate);
for (int divisor = 3; divisor <= limit; divisor+=2)
{
     if ((candidate % divisor) == 0)
          return false;
     }
return true;
Run Code Online (Sandbox Code Playgroud)

因此,它们将检查从3减少到两次.但更优化的是根据维基百科减少测试3次测试数字6*k-1,6*k + 1 .而且我认为还有更优化和更快的素数测试解决方案.

我知道在特定的Dictionary<T,T>实现中它并不是那么重要,因为它仅在大小调整时被调用,并且在调整大小时非常罕见.但总的来说,它是一个框架,并且很受知名公司的欢迎.也许存在一些逻辑或我在这里看不到什么?谢谢.

.net c# algorithm primes

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

Azure 自动化是否支持写入信息?

我想将信息日志写入 Azure 自动化作业日志。我已经创建了简单的 PowerShell 运行手册

$InformationPreference = "Continue"
Write-Information "Hello info" 
Write-Verbose "Hello Verbose"
Write-Warning "Hello warning"
Write-Error "Hello error"
Run Code Online (Sandbox Code Playgroud)

在 Runbook 执行中所有日志我只看到详细、警告和错误日志

在此处输入图片说明

如果要禁用 Runbook Verbose 日志,我只会看到警告和错误。它在本地工作正常,但在 Azure 中则不行。我也试过Write-Information "Hello info" -InformationAction Continue- 没有帮助。

Write-Information出现在 PowerShell 5.0 中。我已经通过使用检查了 Azure 自动化沙箱机器中的 PS 版本$PSVersionTable- 它超过 5。所以,应该可以工作。

你知道他们支持不支持吗?

powershell logging azure azure-automation

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

从输出中删除log4net系统属性

我想使用LogicalThreadContext在我的WCF服务中传递一些上下文信息.我需要传递不同的属性.在C#中我有代码

LogicalThreadContext.Properties["MyProperty"] = 1;
Run Code Online (Sandbox Code Playgroud)

在log4net配置中我有

<log4net>
<appender name="RollingLogFileAppenderSize" type="log4net.Appender.RollingFileAppender">
  <file value="Logs\Log.log" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value="yyyyMMdd" />
  <maxSizeRollBackups value="3" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%2t] [%property] %level %m%n"  />
  </layout>
</appender>
<root>
  <level value="INFO" />
  <appender-ref ref="RollingLogFileAppenderSize" />
</root>
</log4net> 
Run Code Online (Sandbox Code Playgroud)

在日志里我得到了

2015-11-03 16:24:36,313 [10] [{MyProperty=1, log4net:Identity=, log4net:UserName=User, log4net:HostName=User}] INFO  - Info
Run Code Online (Sandbox Code Playgroud)

我不想在日志中拥有系统属性log4net:Identity,log4net:UserName和log4net:HostName.这该怎么做?我可以写这样的配置

conversionPattern value="%d [%2t] [%property{MyProperty}] %level %m%n" 
Run Code Online (Sandbox Code Playgroud)

但我在代码中有几个属性,我想只看到我添加的属性.码

LogicalThreadContext.Properties.Remove("log4net:UserName");
Run Code Online (Sandbox Code Playgroud)

不起作用.

c# log4net

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

具有特殊AssignableScopes的Azure自定义RM角色定义

我正在尝试创建一个自定义 Azure RM 角色定义,其范围适用于一个订阅内的某些资源组。我不想提供对所有订阅或仅一个资源组的访问,并且我可以指定资源组列表,因为其中一些资源组尚未创建。我只想提供订阅资源组的某些子集的访问权限。

\n\n

为此,我使用 PowerShell cmdlet

\n\n
New-AzureRmRoleDefinition -InputFile .\\new-role.json \n
Run Code Online (Sandbox Code Playgroud)\n\n

JSON 在哪里

\n\n
{\n  "Name": "RoleAssignmentsWriter",\n  "Description": "Allow to perform role assignment",\n  "Actions": [\n    "Microsoft.Authorization/roleAssignments/write"\n  ],\n  "AssignableScopes": [\n    "/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/prefix*"\n  ]\n} \n
Run Code Online (Sandbox Code Playgroud)\n\n

其中prefix是现有资源组名称和功能资源组名称的前缀。

\n\n

如果AssignableScopes: [\xe2\x80\x9c/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx\xe2\x80\x9d]\xe2\x80\x93 整个订阅或者如果AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/ResourceGroupName\xe2\x80\x9d]

\n\n

AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/prefix*"]但如果我指定或什至 则不\xe2\x80\x99 不起作用AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/*"]

\n\n

一件重要的事情是,我想为尚不存在的资源组创建角色定义,稍后将创建它们。

\n\n

问题是:是否可以AssignableScopes仅指定订阅资源组的某些子集?也许我可以在其中使用某种通配符AssignableScopes?简单的星号标记不起作用。\n或者也许我可以使用资源组标签或其他东西?

\n\n

预先非常感谢您。

\n

powershell rbac azure

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