如何通过Javascript检测对WebP的支持?如果可能的话,我想使用特征检测而不是浏览器检测,但我找不到这样做的方法.Modernizr(www.modernizr.com)没有检查它.
有时我想从论坛测试新代码,或者我需要帮助我的朋友解决特定的C#问题.问题是我不想每次只在Visual Studio中编写/运行这个小代码时在Visual Studio中创建新的"项目".
Java和Eclipse IDE提供了"Scrapbook"功能,允许执行任意Java表达式.C#程序员有哪些选择?
注意:请不要将此解释为"作业问题".这只是我很想知道的事情:)
中值为5有时用作算法设计中的练习,并且已知仅使用6次比较可计算.
在C#中实现"使用6次比较的五个中位数"的最佳方法是什么?我的所有尝试似乎都导致了尴尬的代码:(我需要漂亮可读的代码,同时仍然只使用6次比较.
public double medianOfFive(double a, double b, double c, double d, double e){
//
// return median
//
return c;
}
Run Code Online (Sandbox Code Playgroud)
注意:我想我也应该提供"算法":
我发现自己无法像Azereal在论坛帖子中那样清楚地解释算法.所以我会在这里引用他的帖子.来自http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_cs;action=display;num=1061827085
好吧,我在我的一个任务中提出了这个问题,我转向这个论坛寻求帮助,但没有帮助.我终于找到了如何做到这一点.
使用前4个元素启动mergesort并订购每对(2个比较)
比较每对中的两个较低的一个并从可能性中消除最低的一个(3个比较)
在没有配对的情况下添加第5个号码并比较两个(4个比较)
比较两个新对中的两个最低对并消除较低对(5个比较)
比较一个单独和最后一对中的较低者,较低的数字是中位数
可能的中位数在肠胃外
(54321)
5:4 3:2 2比较
(4 <5 2 <3 1)
4:2 3比较
2(4 <5 3 1)
1:3 4比较
2(4 <5 1 <3)
4:1 5比较
1,2(4 <5 3)
4:3 6比较
1,2(3)4,5-
三是中位数
编辑:作为您的请求,并防止自己得到更多的downvotes,这是我写的C++代码,找到五个中位数.不要介意它的尴尬:
double StageGenerator::MedianOfFive(double n1, double n2, …
Run Code Online (Sandbox Code Playgroud) W3的EXI(高效XML交换)将标准化.它声称是"最后的二进制标准".
它是存储针对处理和存储而优化的XML数据的标准,与XML模式捆绑在一起(使数据具有强类型和强结构).嗯,有很多声称的优点.处理和内存效率测量给我留下了深刻的印象.
我问自己,所有已建立的XML API会发生什么?
这段与我的问题有关:
4.2现有的XML处理API
由于EXI是XML Infoset的编码,EXI实现可以支持任何常用的XML API进行XML处理,因此EXI对现有的XML API没有直接影响.但是,使用现有的XML API还要求将EXI文档中出现的所有名称和文本转换为字符串.将来,如果较高层可以直接将这些数据用作EXI文档中出现的类型值,则可以实现更高的效率.例如,如果较高层需要类型化数据,则通过其字符串形式会产生性能损失,因此直接支持类型化数据的扩展API可以在与EXI一起使用时提高性能.
我理解如下:"将EXI与现有API一起使用?没有性能提升!(除非你全部重写)"
我们以Java生态系统为例:
我们有大量的XML API的最新的JDK 6(每个主要JDK版本中,越来越多的人加入.)据我判断,大部分(如果不是全部),他们使用的是内存中的DOM树,或序列化("文本")表示来转换/处理/验证/ ... XML数据.
你们怎么想?这些API会在引入EXI后发生什么?
谢谢大家的意见.
对于那些不了解EXI的人:http://www.w3.org/XML/EXI/
我这里有一个非常简单的C++代码:
char *s = new char[100];
strcpy(s, "HELLO");
delete [] s;
int n = strlen(s);
Run Code Online (Sandbox Code Playgroud)
如果我通过按F5(开始调试)从Visual C++ 2008运行此代码,这总是导致崩溃(访问冲突.)但是,在IDE外部启动此可执行文件,或使用IDE的Ctrl + F5(启动而不调试)不会'导致任何崩溃.有什么区别?
我还想知道是否可以稳定地重现因访问已删除区域而导致的访问冲突崩溃?现实生活中这种崩溃难得一见吗?
到目前为止,我已经了解了分别使用jstack
和和生成线程转储和堆转储jmap
.
但是,jstack
线程转储仅包含描述每个线程上的堆栈的文本.使用Java VisualVM打开堆转储(.hprof文件)只显示堆中分配的对象.
我真正想要的是能够看到堆栈,切换到特定的堆栈帧,并观察局部变量.这种事后调试可以通过WinDbg,gdb和核心文件(用于本机C++程序)等工具正常完成.
我想知道Java中是否存在这样的'核心'文件(允许我在非实时环境中调试)?
有没有人尝试过带有技术文档的电子墨水PDF阅读器?
由于这些设备,如Kindle DX或SONY Reader,开始支持原生PDF文件,我想只需要阅读技术文档.通过技术文档,我的意思是有很多源代码列表和图表.它们通常是编程书籍/用户手册.
我有许多内部文件,没有硬拷贝.长时间在液晶显示器上阅读它们会让我感到痛苦.因此,我认为电子墨水阅读器可能是一个不错的选择.
选择这些设备有什么顾虑?你在用一个吗?如果是这样你使用的是哪种型号,到目前为止你是否满意?
我是COM的新手,试图理解STA和MTA之间的区别.我试图创建一个示例,该示例将显示COM可以管理在STA中创建的对象的调用,该对象不是线程安全的.
MyCalcServer
这里的类是使用ATL Simple Object创建的.使用的设置与本文中的相同:
MyCalcServer
COM对象用于另一个C#项目,它是:
class Program
{
[STAThread]
static void Main(string[] args)
{
MyCOMLib.MyCalcServer instance = new MyCOMLib.MyCalcServer();
string output1;
instance.ChangeValue("Gant", out output1);
Console.WriteLine(output1);
Thread t1 = new Thread(() =>
{
while (true)
{
string output;
instance.ChangeValue("Gant", out output);
Console.WriteLine(output);
}
});
t1.SetApartmentState(ApartmentState.STA);
t1.Start();
// :
// also has t2 and t3 here with similar code
// :
t1.Join(); t2.Join(); t3.Join();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这总是导致在InvalidCastException
t1的代码中引发(E_NOINTERFACE).我也尝试将ApartmentState更改为MTA但没有成功.
无法将"MyCOMLib.MyCalcServerClass"类型的COM对象强制转换为接口类型"MyCOMLib.IMyCalcServer".此操作失败,因为由于以下错误,对IID为"{B005DB8C-7B21-4898-9DEC-CBEBE175BB21}"的接口的COM组件的QueryInterface调用失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) .
有人可以解释我在这里做错了吗?
我正在使用System.Windows.Forms.DataVisualization.Charting.Chart控件,并让ChartArea的AxisX和Y都将Zoomable设置为true.当图表放大时,我会看到滚动条,但无法拖动它.是否可以拖动滚动条,并在拖动滚动条按钮时让图表显示移动?我希望为用户提供直观和互动的功能.谢谢!
我正在使用来自.NET的COM对象使用互操作.该对象基本上从socket获取数据并触发一些事件以供.NET层处理.但是,过了一段时间后,COM对象会停止触发事件,这些事件后来显示是因为它是由GC收集的.
源代码的结构类似于下面这个:
static void Main(string[] args)
{
MyEventGen gen = new MyEventGen();
WeakReference wr = new WeakReference(gen);
gen.ReceiveDataArray +=
new _IMyEventGenEvents_ReceiveDataArrayEventHandler(gen_ReceiveDataArray);
while (true)
{
Thread.Sleep(1000);
Console.WriteLine(wr.IsAlive);
}
}
static void gen_ReceiveDataArray(ref Array indices, ref Array values)
{
// do nothing
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我所知道的:
据我所知,对象gen
不应该以任何方式进行垃圾收集.由于对象在Main
范围内仍处于活动状态.但到目前为止的结果表明该对象是由GC收集的.
该对象仅在构建为Release时进行垃圾收集,并且无需调试即可运行.在调试器下运行Debug构建/运行两种模式都可以.
该程序将在第一代Gen#0 Collection之后精确打印第一个"False" .
通过访问while
循环中的对象,例如Console.WriteLine(gen.ToString())
,防止它被GC'd!
通过添加另一个Program
类的静态字段来保持其引用也阻止它来自GC'd.
尝试使用不同的数据负载,我发现GC只在Private Bytes达到~3X MB的阈值时收集对象.
使用CLRProfiler进行检查时,提到的对象被GC'd怀疑.
我是否错过了一些重要的.NET GC概念?是否有可能获得对象GC'd的原因?这可能是一个已知的GC错误吗?
我正在使用VS 2008 + .NET 3.5 …