我在C#中使用此函数将一个小端字节数组转换为整数:
int LE2INT(byte[] data)
{
return (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0];
}
Run Code Online (Sandbox Code Playgroud)
现在我想把它转换回小端..有点像
byte[] INT2LE(int data)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?
谢谢.
我知道异步编程多年来已经发生了很多变化.我有点尴尬,我让自己在34岁时就生锈了,但我依靠StackOverflow让我加快速度.
我想要做的是在一个单独的线程上管理一个"工作"队列,但是这样一次只能处理一个项目.我想在这个线程上发布工作,它不需要将任何内容传递给调用者.当然,我可以简单地旋转一个新Thread对象并让它在一个共享Queue对象上循环,使用睡眠,中断,等待句柄等.但是我知道事情从那以后变得更好.我们有BlockingCollection,Task,async/ await,更不用提的NuGet包,可能抽象了很多的.
我知道"什么是最好的..."这些问题通常是不受欢迎的,所以我会通过说"目前推荐的是什么......"的方式来改进它,最好使用内置的.NET机制来完成这样的事情.但是如果第三方NuGet包简化了一堆东西,它也是如此.
我认为一个TaskScheduler固定最大并发度为1 的实例,但似乎现在可能没那么笨重的方法了.
背景
具体来说,我在这种情况下尝试做的是在Web请求期间排队IP地理定位任务.相同的IP可能会多次排队等待地理定位,但是任务将知道如何检测并尽快跳过,如果它已经解决了.但请求处理程序只是将这些() => LocateAddress(context.Request.UserHostAddress)调用抛入队列,让该LocateAddress方法处理重复的工作检测.我正在使用的地理位置API不喜欢被请求轰炸,这就是我想一次将它限制为单个并发任务的原因.但是,如果允许通过简单的参数更改轻松扩展到更多并发任务,那将是很好的.
我需要创建一个触发器,当MouseEnter发生时,它将更改Border背景属性.我做了以下事情:
<Border Width="20" Height="30" Focusable="True">
<Border.Background>
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<GradientStop Color="Aquamarine" Offset="0"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Border.Background>
<Border.Style>
<Style TargetType="{x:Type Border}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<GradientStop Color="Aquamarine" Offset="0"/>
<GradientStop Color="Beige" Offset="0.2"/>
<GradientStop Color="Firebrick" Offset="0.5"/>
<GradientStop Color="DarkMagenta" Offset="0.9"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.谢谢.
PowerShell模块清单文件格式(.psd1)本质上是一个具有预期某些键的Hashtable文字.这是PowerShell脚本的配置文件的理想选择.我最终想要做的是读取包含一组特定于脚本的键的.psd1文件.
例如(MyScriptConfig.psd1):
@{
FTPHost = "ftp.blah.com"
FTPUserName = "blah"
FTPPassword = "blah"
}
Run Code Online (Sandbox Code Playgroud)
没有理由我不能使用XML,INI,JSON或其他任何信息,但我宁愿使用与PowerShell的模块清单相同的基本数据格式.
显然,最简单的方法是读取文本并将其传递给Invoke-Expression返回Hashtable 的文本,然后它会调用文件中的任何内容,这很容易出错并且可能不安全.
我以为我召回了一个用于使用PowerShell cmdlet的"安全"子集读取此数据的cmdlet,但我正在考虑ConvertFrom-StringData和DATA部分,这些都不允许我读取包含Hashtable文字的任意文件.
PowerShell中是否有内置功能可以让我这样做?如果没有内置任何东西,那么我可能会使用JSON或Key = Value的路径ConvertFrom-StringData.
我有一个旋转矩形的问题,并以某种方式将其放在画布上.这是我试图实现的目标:
旋转矩形http://www.freeimagehosting.net/uploads/79844652d2.jpg
图片中的大矩形是我的画布.较小的矩形是我要旋转的矩形.当我旋转矩形(虚线矩形)时,它当然会被剪裁.为了避免这种情况,我想重新定位矩形,如右图所示.
这是我到目前为止尝试的方式:
Rectangle rect = new Rectangle();
rect.Width = 100;
rect.Height = 50;
int angle = 30;
rect.RenderTransform = new RotateTransform(angle, rect.Width/2, rect.Height/2);
canvas.Children.Add(rect);
double x = Math.Cos(30) * (rect.Width / 2) + Math.Sin(30) * (rect.Height / 2) - rect.Width / 2;
double y = Math.Sin(30) * (-rect.Width / 2) + Math.Cos(30) * (rect.Height / 2) - rect.Height / 2;
Canvas.SetLeft(rect, x);
Canvas.SetTop(rect, y);
Run Code Online (Sandbox Code Playgroud)
我认为要做到这一点的最好办法是计算偏移x,y和矩形定位Canvas.SetLeft和Canvas.SetTop.但我在弄清楚如何进行数学运算时遇到了问题.(y计算似乎有效).
实际上我想在画布上随机放置几个矩形.旋转角度可以是-45度到45度之间的值,矩形尺寸也可以是随机值.但是矩形应该总是在画布中完全可见,所以我需要知道位置坐标边界的偏移.(矩形可以重叠.)
我希望你理解我的问题.如果你可以帮助我,那将是件好事.
对我来说似乎没什么好事.我听过很多关于人们在UPDATE或DELETE中忘记WHERE子句并且废弃整个表的故事.我知道粗心的人不应该直接发出查询而且所有这些...并且存在您希望影响所有行的合法情况,但是默认情况下有一个选项需要这样的查询才有意义写得像:
UPDATE MyTable SET MyColumn = 0 WHERE *
Run Code Online (Sandbox Code Playgroud)
或者不改变语言,
UPDATE MyTable SET MyColumn = 0 WHERE 1 = 1 -- tacky, I know
Run Code Online (Sandbox Code Playgroud) 我知道,我在挑剔.但是当在仅包含布尔值(因此只有两个状态)的结构上实现IConvertible接口时,建议的返回值是IConvertible.GetTypeCode()多少?该结构是可隐式转换的,与布尔值相当,除了字符串和XML表示之外几乎所有方面,它实际上都是一个布尔值.
如果我回来的话,我觉得我对框架撒谎,TypeCode.Boolean但TypeCode.Object似乎不必要地含糊不清.在您自己的结构中实现此方法有任何实际后果吗?
事件也"做"类似方法,但它们没有返回类型和空洞?
我很想知道,为什么会这样?他们为什么不返回类型?
试图在php中运行以下命令来运行powershell命令...
以下作品:
$output = shell_exec(escapeshellcmd('powershell get-service | group-object'));
Run Code Online (Sandbox Code Playgroud)
我无法像这样运行它:
$output = shell_exec('powershell get-service | group-object');
Run Code Online (Sandbox Code Playgroud)
它不会通过管道 字符
但如果我试图运行:
$output = shell_exec(escapeshellcmd('powershell get-service | where-object {$_.status -eq "Running"}'));
Run Code Online (Sandbox Code Playgroud)
我没有输出.
下列:
$cmd = escapeshellcmd('powershell get-service | where-object {$_.status -eq "Running"}');
Run Code Online (Sandbox Code Playgroud)
收益:
powershell get-service ^| where-object ^{^$_.status -eq ^"Running^"^}
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况以及如何解决此问题的任何建议?
编辑:我也可以将其作为.ps1脚本运行,但我希望能够将$ var传递给它.
例如,(虽然它不是接口).NET中的Stream类有一个由Stream.Null提供的实现,它只是丢弃数据.PowerShell有Out-Null.
在我开发的应用程序中,我经常发现使用默认实现NullFoo或类似的实现接口IFoo很有用,因为它最好有一个无用的实现,而不是根本不传递一个对象.
我的问题是如何在记录或解释架构时参考这种做法?是否有公认的名称或GoF/Fowler设计模式?
.net ×3
c# ×2
powershell ×2
wpf ×2
asynchronous ×1
background ×1
concurrency ×1
events ×1
interface ×1
php ×1
sql ×1
sql-server ×1
t-sql ×1
triggers ×1