我一直在研究.NET反汇编和GCC源代码,但似乎无法找到实际实现sin()
和其他数学函数的任何地方......它们似乎总是引用其他东西.
谁能帮我找到它们?我觉得C运行的所有硬件都不太可能支持硬件中的触发功能,因此某处必须有软件算法,对吧?
我知道有几种方法可以计算函数,并编写了我自己的例程来计算函数使用泰勒系列来获得乐趣.我很好奇真正的生产语言是如何做到的,因为我的所有实现总是慢几个数量级,即使我认为我的算法非常聪明(显然它们不是).
我有一个TextBox
控件在StackPanel
其Orientation
设置为Horizontal
,但无法让TextBox填充剩余的StackPanel空间.
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="180" Width="324">
<StackPanel Background="Orange" Orientation="Horizontal" >
<TextBlock Text="a label" Margin="5" VerticalAlignment="Center"/>
<TextBox Height="25" HorizontalAlignment="Stretch" Width="Auto"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
这就是它的样子:
为什么TextBox没有填充StackPanel?
我知道通过使用Grid
控件可以获得更多控制权,我只是对布局感到困惑.
如果我在方法中使用以下代码块(使用.NET 4和任务并行库):
var task = new Task(() => DoSomethingLongRunning());
task.Start();
Run Code Online (Sandbox Code Playgroud)
并且该方法返回,该任务是否超出范围并被垃圾收集,或者它将运行完成?我没有注意到GCing的任何问题,但是我想确保我没有为GC设置竞争条件.
我想在网站上使用公司徽标的SVG版本.目前,主流浏览器的所有当前版本(IE,Safari,Chrome,Firefox,Opera)都支持SVG,所以这看起来并不疯狂.但是,旧的浏览器仍然存在,所以我需要回到PNG支持.
显而易见的解决方案是将SVG内容放在这样的object
标签中(原谅内联样式......):
<object data='logo.svg' style='height:3em' >
<img src='logo.png' style='height:3em' />
</object>
Run Code Online (Sandbox Code Playgroud)
理论上应该在object
可能的情况下渲染,或者渲染img
.但是,Chrome不喜欢这样并且将height
样式应用于对象本身而不是SVG,因此我最终得到了一个带有滚动条的iframe类似框,显示了一个巨大的徽标.
另一个解决方案是使用PNG作为img
源,然后在渲染时将其与带有javascript的SVG源交换出来,如果我认为我在支持SVG的浏览器上运行的话.这并不理想,因为PNG仍然会被下载,而且我不是知己,我可以正确检测SVG支持.不幸的是,jQuery似乎没有SVG检测功能.
最后,由于我的网站使用ASP.NET部署,我可以在提供页面之前检查用户代理字符串,并img
根据我是否认为它将支持SVG来指定源.但这也有潜在的问题,我不是知己,我可以做出正确的决定.
为图像做SVG的首选方法是什么?
有没有办法弄清楚.NET正在使用什么作为其"默认行终止符"?例如,StringBuilder.AppendLine(String)的文档说它"附加指定字符串的副本,后跟默认行终止符......"..NET中的几个与文本相关的类引用了相同的概念.
有没有办法以编程方式找出什么是用作行终止符(在运行时)?或者可以安全地假设Windows机器始终是"\ r \n"?如果我可以避免它,我宁愿不将该值硬编码到我的代码中.
我已经使用'hg convert'命令尝试将我的SVN存储库移动到hg,它似乎工作(需要一段时间并打印出所有提交消息),但最后生成的Mercurial目录是空.它有.hg隐藏的子目录,它大约200 MB所以SOMETHING发生了,但没有任何文件存在.
有什么想法吗?
我唯一可以想到的是,我们有很多项目,每个项目都有自己的主干,分支,标签,而不是拥有顶级主干,分支机构,标签目录.
svn-repository/
Project1/
trunk/
branches/
tags/
Project2/
trunk/
branches/
tags/
Run Code Online (Sandbox Code Playgroud)
等等...
这会导致问题吗?我的理解是SVN并不真正关心你如何组织存储库,但Mercurial呢?
我有一个WPF应用程序,我将在大型高分辨率投影仪上向观众演示,我担心应用程序太小而无法远远看到.
是否有一种简单的方法可以使整个ENTIRE应用程序更大(比如WPF设计器中的缩放滑块,可以放大?)我尝试在XAML中向窗口添加布局转换,如下所示:
<Window.LayoutTransform>
<ScaleTransform ScaleX="1.5" ScaleY="1.5" CenterX=".5" CenterY=".5" />
</Window.LayoutTransform>
Run Code Online (Sandbox Code Playgroud)
这使得窗口在设计器中看起来更大,但似乎对正在运行的应用程序没有影响.
我认为这应该是简单的WPF的"分辨率独立",高科技文本渲染,矢量图形等.
(我知道我可以使用屏幕缩放工具,但这很蹩脚,因为它会使一切变得模糊,并且当演示者在屏幕周围平移时总是让我晕眩.)
嘿,我正在使用Enumerable.Sum()
LINQ 的扩展方法来计算哈希码,并且OverflowExceptions
在代码变大时遇到问题.我尝试将电话放在一个unchecked
区块中,但这似乎没有帮助.
该方法的MSDN文档说,如果值太大,它将抛出,但我检查了反射器,这就是:
public static int Sum(this IEnumerable<int> source) {
if (source == null) {
throw Error.ArgumentNull("source");
}
int num = 0;
foreach (int num2 in source) {
num += num2;
}
return num;
}
Run Code Online (Sandbox Code Playgroud)
根据这个反编译,我希望它可以溢出或不取决于调用代码的上下文.为什么它会溢出,我怎么能让它停止?
我们有一个商业网络应用程序,定期发送电子邮件作为提醒,客户数据链接等.我们公司使用Google Apps为我们的电子邮件提供商(使用我们自己的域名),并且Web应用程序通过Google使用SMTP发送电子邮件.
问题是Google Apps/Gmail会将邮件标记为垃圾邮件,即使是我们域名中的收件箱也是如此.没有其他电子邮件提供商似乎将其标记为垃圾邮件(但我们当然没有对它们进行全部测试......).
我们已经尝试了各种身体测试的配方:即包括更多的上下文信息,通过名称解决接收者,但到目前为止没有明显的变化.这让我觉得可能是我们的电子邮件发送过程,而不是电子邮件的内容,导致电子邮件被标记为垃圾邮件.
我们尝试但没有解决问题的事情:
我们还能尝试什么?
如果它有所不同,我们将使用运行.NET 3.5的ASP.NET站点发送电子邮件.典型的电子邮件发送方式如下:
var message = new MailMessage(new MailAddress(from), new MailAddress(to)) {
Subject = subject,
Body = body
IsBodyHtml = true
};
// SMTP details stored in web.config
new SmtpClient { EnableSsl = true }.SendAsync(message, null);
Run Code Online (Sandbox Code Playgroud)
编辑: 我已经看到了类似的问题:如何阻止Gmail将我的网络应用程序发送的邮件标记为垃圾邮件?,但情况略有不同,因为我们可以通过发送和接收来自相同的Google Apps域来重现它.此外,我相信我已经涵盖了该问题的所有建议解决方案.
我有一个不可变类,其唯一的字段是bool[]
(在运行时确定的大小).
如何计算此类的良好哈希码?通常我会调用GetHashCode()
每个字段,并将它们与这些运算符中的一个结合起来:+ | &
但是因为唯一可能的哈希码是0
for false
和1
for true
,所以这并不能让我到处都是.我的实现只需要使用bools
,并且必须适用于任意大小的数组.
(可能并不重要,但我在C#/ .NET编码.)