从我在博客上看到和阅读的内容来看,PyPy是一个非常雄心勃勃的项目.它将为其兄弟姐妹(CPython,Jython和IronPython)带来哪些优势?它是速度,跨平台兼容性(包括移动平台),在没有GIL的情况下使用c扩展的能力,还是更多关于可以做什么的技术练习?
在为我正在处理的项目设置一些引用类型属性时,我遇到了一些需要正确初始化才能使用的属性,并且永远不应为null.我已经看到了一些方法来处理这个问题,并且无法确定我看到处理这个问题的主要方法是否存在任何重大缺陷.我想得到社群对处理这个问题的最佳方法的看法,以及每种方法可能存在的缺点.
给定一个简单的类,我已经看到了几种方法来确保属性永远不会在属性中具有此类的null版本
public class MyClass
{
//Some collection of code
}
Run Code Online (Sandbox Code Playgroud)
选项1 - 初始化后备存储
public class OtherClass1
{
private MyClass _mC = new MyClass();
public MyClass MC
{
get { return _mC; }
set { _mC = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
选项2 - 在构造函数中初始化属性
public class OtherClass2
{
public MyClass MC { get; set; }
public OtherClass2()
{
MC = new MyClass();
}
}
Run Code Online (Sandbox Code Playgroud)
选项3 - 根据需要处理Getter中的初始化
public class OtherClass3
{
private MyClass _mC;
public MyClass MC
{
get
{ …Run Code Online (Sandbox Code Playgroud) 我有一个Web内容表单,需要访问内容面板中的控件.我知道有两种访问控件的方法:
TextBox txt = (TextBox)Page.Controls[0].Controls[3].Controls[48].Controls[6]还有其他更简单的方法,因为Page.FindControl在这种情况下不起作用.我问的原因是我感觉像Page对象或Content Panel对象应该有一个方法来查找子控件,但找不到类似的东西.
我不想在这里问这个问题,但很多关于stackoverflow的人都谈到了Das.
我希望得到带有打印键的版本 - 由于他们不销售已经为Dvorak设置的打印密钥版本,我希望自己重新排列密钥.
好的,我知道我可以,但......
我的dell sk-8115键盘没有优雅地管理从qwerty到dvorak的转换,因为不同行上的键是不同的形状/高度/角度.
不幸的是,我找不到任何信息告诉我,如果关键块在不同行上的形状不同 - 并且das键盘支持还没有与我联系.
是否有可能创建宏来替换operator new包含额外args的所有形式的重载...说__FILE__和__LINE__?
麻烦似乎operator new可以用括号括或不用括号编码,因此:
类似对象的宏:
#define new new(__FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)
将取代声明,如:
A* a = new A();
Run Code Online (Sandbox Code Playgroud)和类似函数的宏:
#define new(A) new (A, __FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)
将取代声明,如:
A* a = new(std::nothrow) A();
Run Code Online (Sandbox Code Playgroud)不幸的是,尝试使用相同的标识符声明两个宏是错误的,即使它们的类型不同,因此以下操作失败:
#define new new(__FILE__, __LINE__)
#define new(A) new (A, __FILE__, __LINE__) // Error: "new" already defined
Run Code Online (Sandbox Code Playgroud)
由于我正在使用g ++,我希望使用它们的可变参数宏的语法会产生成功,但遗憾的是没有.下列:
#define new(...) new(__FILE__, __LINE__, ## __VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
只匹配new(xyx) A(),而不是new A().
什么是注册表更改,告诉Visual Studio始终将当前文档放在左侧窗口中.
默认实现是这样的,如果您打开了10个文档并且您正在编辑第5个文档,则它的选项卡将是该组中的第5个选项卡.当您单击第5个文档的选项卡时更改注册表,它将成为第1个选项卡.
<a href="" id="someId" onclick="SomeMethod(self);"></a>
Run Code Online (Sandbox Code Playgroud)
SomeMethod可能有的地方:
function SomeMethod(item)
{
item.setAttribute('name', item.id);
}
Run Code Online (Sandbox Code Playgroud)
代替:
function SomeMethod(itemId)
{
var someItem;
someItem = document.getElementById(itemId);
someItem .setAttribute('name', someItem .id);
}
Run Code Online (Sandbox Code Playgroud)
愚蠢的例子,但想法不是发送id本身,而是实际控制调用方法.我发誓这可以做,但没有运气搜索...部分是因为我甚至不确定要搜索什么.
我认为这是自我,但当我运行的剧本时,自我似乎不是我想要的.
为什么X下面的方法没有被调用?!
static class Program
{
private static void Main()
{
X((IEnumerable<int>)null);
}
public static IEnumerable<T> X<T>(IEnumerable<T> e)
{
if (e == null)
throw new ArgumentNullException();
yield break;
}
}
Run Code Online (Sandbox Code Playgroud)
我试着踩到调试器但它没有进入X!yield break关键字是否会引起一些我不知道的副作用?
如果值得,我将使用Visual Studio 2008 Express和.NET 3.5 SP1.
这是我的log4net配置文件
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %5rms [%-17.17t] %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender name="SmtpAppender" type="MySmtpClientSmtpAppender">
<to value="a@a.com" />
<from value="admin@x.com" />
<subject value="Game Server Monitoring Failed!" />
<smtpHost value="smtp.x.com" />
<username value="admin" />
<password value="x" />
<bufferSize value="256" />
<lossy value="true" />
<evaluator type="log4net.spi.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d [ThreadId: %t] Class:%c{1} …Run Code Online (Sandbox Code Playgroud) 我制作了一个Unix命令macmac2unix,它将Mac的Word文件转换为Unix平台.
我想以命令运行命令
$macmac2unix file1 file2 file3 ...
Run Code Online (Sandbox Code Playgroud)
问题: 如何在每个路径中运行此命令?
我将以下内容添加到.bashrc失败了
CDPATH=:/Users/Sam/Documents/Unix
Run Code Online (Sandbox Code Playgroud)