小编Han*_*ank的帖子

C如何计算sin()和其他数学函数?

我一直在研究.NET反汇编和GCC源代码,但似乎无法找到实际实现sin()和其他数学函数的任何地方......它们似乎总是引用其他东西.

谁能帮我找到它们?我觉得C运行的所有硬件都不太可能支持硬件中的触发功能,因此某处必须有软件算法,对吧?


我知道有几种方法可以计算函数,并编写了我自己的例程来计算函数使用泰勒系列来获得乐趣.我很好奇真正的生产语言是如何做到的,因为我的所有实现总是慢几个数量级,即使我认为我的算法非常聪明(显然它们不是).

c math trigonometry

236
推荐指数
15
解决办法
15万
查看次数

WPF TextBox不会填写StackPanel

我有一个TextBox控件在StackPanelOrientation设置为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 wpf

85
推荐指数
3
解决办法
5万
查看次数

.NET Task实例在运行期间是否超出范围?

如果我在方法中使用以下代码块(使用.NET 4和任务并行库):

var task = new Task(() => DoSomethingLongRunning());
task.Start();
Run Code Online (Sandbox Code Playgroud)

并且该方法返回,该任务是否超出范围并被垃圾收集,或者它将运行完成?我没有注意到GCing的任何问题,但是我想确保我没有为GC设置竞争条件.

.net c# garbage-collection task task-parallel-library

42
推荐指数
2
解决办法
8587
查看次数

具有PNG后备的浏览器中的图像的SVG

我想在网站上使用公司徽标的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的首选方法是什么?

html asp.net svg

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

.NET"默认行终止符"?

有没有办法弄清楚.NET正在使用什么作为其"默认行终止符"?例如,StringBuilder.AppendLine(String)的文档说它"附加指定字符串的副本,后跟默认行终止符......"..NET中的几个与文本相关的类引用了相同的概念.

有没有办法以编程方式找出什么是用作行终止符(在运行时)?或者可以安全地假设Windows机器始终是"\ r \n"?如果我可以避免它,我宁愿不将该值硬编码到我的代码中.

.net text newline

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

颠覆后的空存储库 - > mercurial转换

我已经使用'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呢?

svn mercurial

23
推荐指数
1
解决办法
1381
查看次数

缩放整个WPF窗口

我有一个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的"分辨率独立",高科技文本渲染,矢量图形等.

(我知道我可以使用屏幕缩放工具,但这很蹩脚,因为它会使一切变得模糊,并且当演示者在屏幕周围平移时总是让我晕眩.)

.net wpf resolution-independence

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

Enumerable.Sum()溢出

嘿,我正在使用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)

根据这个反编译,我希望它可以溢出或不取决于调用代码的上下文.为什么它会溢出,我怎么能让它停止?

.net c# linq decompiling

12
推荐指数
2
解决办法
2307
查看次数

Gmail正在将我的网络应用的电子邮件过滤为垃圾邮件

我们有一个商业网络应用程序,定期发送电子邮件作为提醒,客户数据链接等.我们公司使用Google Apps为我们的电子邮件提供商(使用我们自己的域名),并且Web应用程序通过Google使用SMTP发送电子邮件.

问题是Google Apps/Gmail会将邮件标记为垃圾邮件,即使是我们域名中的收件箱也是如此.没有其他电子邮件提供商似乎将其标记为垃圾邮件(但我们当然没有对它们进行全部测试......).

我们已经尝试了各种身体测试的配方:即包括更多的上下文信息,通过名称解决接收者,但到目前为止没有明显的变化.这让我觉得可能是我们的电子邮件发送过程,而不是电子邮件的内容,导致电子邮件被标记为垃圾邮件.

我们尝试但没有解决问题的事情:

  • "来自"地址有效且不受欺骗
  • SPF记录是正确的,并在电子邮件标题中显示为"通过"
  • 由于我们连接到Google的SMTP服务器以发送电子邮件,因此列入黑名单的IP地址不是问题(但是,我们的网站有一个未列入黑名单的静态IP地址).
  • 电子邮件不是垃圾邮件:我已经检查了几个在线垃圾邮件过滤器测试,并且电子邮件正文总是显示为极不可能被过滤.
  • HTML正文与纯文本正文似乎没有区别.
  • 我们发送了一小部分电子邮件:每天可能发送0到10封电子邮件,所以我看不出这会让这种情况变得多可疑.
  • 每当我们访问收件箱(即它属于我们公司的员工)时,我们一直将电子邮件标记为"非垃圾邮件",因为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域来重现它.此外,我相信我已经涵盖了该问题的所有建议解决方案.

.net asp.net email spam

10
推荐指数
2
解决办法
5732
查看次数

GetHashCode()仅来自布尔值

我有一个不可变类,其唯一的字段是bool[](在运行时确定的大小).

如何计算此类的良好哈希码?通常我会调用GetHashCode()每个字段,并将它们与这些运算符中的一个结合起来:+ | &但是因为唯一可能的哈希码是0for false1for true,所以这并不能让我到处都是.我的实现只需要使用bools,并且必须适用于任意大小的数组.

(可能并不重要,但我在C#/ .NET编码.)

.net c# boolean hashcode

10
推荐指数
1
解决办法
1882
查看次数