在面试开发人员职位时,我被问到这个问题.
任务:在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) 我在实例构造函数中找到了一些代码锁语句.代码看起来像这样
public class MyClass
{
private readonly object _syncRoot = new object();
public MyClass(string parameter)
{
lock (_syncRoot)
{
// some code
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为锁在这里没用,因为这个代码不能在不同的线程中调用.每个线程都将创建自己的对象实例调用构造函数.但也许我错了,不知道什么.谢谢.
编辑: 在这个问题的第一个答案C#我正确使用锁定我找到了
最好在构造函数中围绕代码锁定,因为我相信在某些情况下可以在构造函数块执行完毕之前调用方法.
所以,这可能是一个答案.
看看.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>实现中它并不是那么重要,因为它仅在大小调整时被调用,并且在调整大小时非常罕见.但总的来说,它是一个框架,并且很受知名公司的欢迎.也许存在一些逻辑或我在这里看不到什么?谢谢.
我想将信息日志写入 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。所以,应该可以工作。
你知道他们支持不支持吗?
我想使用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)
不起作用.
我正在尝试创建一个自定义 Azure RM 角色定义,其范围适用于一个订阅内的某些资源组。我不想提供对所有订阅或仅一个资源组的访问,并且我可以指定资源组列表,因为其中一些资源组尚未创建。我只想提供订阅资源组的某些子集的访问权限。
\n\n为此,我使用 PowerShell cmdlet
\n\nNew-AzureRmRoleDefinition -InputFile .\\new-role.json \nRun Code Online (Sandbox Code Playgroud)\n\nJSON 在哪里
\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} \nRun 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]
AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/prefix*"]但如果我指定或什至 则不\xe2\x80\x99 不起作用AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/*"]。
一件重要的事情是,我想为尚不存在的资源组创建角色定义,稍后将创建它们。
\n\n问题是:是否可以AssignableScopes仅指定订阅资源组的某些子集?也许我可以在其中使用某种通配符AssignableScopes?简单的星号标记不起作用。\n或者也许我可以使用资源组标签或其他东西?
预先非常感谢您。
\nc# ×3
algorithm ×2
azure ×2
powershell ×2
.net ×1
constructor ×1
log4net ×1
logging ×1
primes ×1
rbac ×1
sql ×1
sql-server ×1