我的编译器(gcc)给了我这个警告.请帮我理解它的含义:
警告:trigraph ??/ignored,使用-trigraphs启用
我知道PHP mt_rand()不应该用于安全目的,因为它的结果不是加密强.然而,许多PHP代码就是这样做的,或者如果没有更好的随机源,则将其用作后备.
那有多糟糕呢?哪些随机源mt_rand用于播种?mt_rand加密应用程序是否存在其他安全问题?
我遇到了这个问题,我正在使用反射从类中提取属性,但问题是反射将它们作为对象返回,我无法将其转换为实际类型.
例如,如果这是班级:
public class Row<T>
{
public static explicit operator Row<object>(Row<T> o)
{
return new Row<object>
{
Name = o.Name,
Value = o.Value
};
}
public string Name { get; set; }
public T Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
从一个铸造说Row<bool>给Row<object>作品:
var a = new Row<bool>
{
Name = "Foo",
Value = true
};
var b = (Row<object>)a; // Works
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从它object到Row<object>它似乎忽略我的显式运算符并抛出System.InvalidCastException:
var c = (object) a; // Simulate getting from reflection
var …Run Code Online (Sandbox Code Playgroud) 我正在将CodePlex的地理坐标类集成到我的个人"工具箱"库中.此类使用float字段来存储纬度和经度.
自从类GeoCoordinate实现以来IEquatable<GeoCoordinate>,我习惯性地编写了Equals这样的方法:
public bool Equals(GeoCoordinate other)
{
if (other == null) {
return false;
}
return this.latitude == other.latitude && this.longitude == other.longitude;
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,我停下来,并认为我正在比较浮点变量的相等性,这通常是禁忌.我的思考过程大致如下:
我只能设想一次设置Latitude和Longitude属性,这意味着不会累积任何错误来搞砸我的比较.
另一方面,写(尽管没有意义)是可能的
var geo1 = new GeoCoordinate(1.2, 1.2);
var geo2 = new GeoCoordinate(1.2, 1.2);
// geo1.Equals(geo2) will definitely be true, BUT:
geo2.Latitude *= 10;
geo2.Latitude /= 10;
// I would think that now all bets are off
Run Code Online (Sandbox Code Playgroud)
当然,这不是我能想象到的,但如果类的公共接口允许它,那么它Equals应该能够处理它.
使用difference < …
我有一段令我困惑的代码:
sort(data, data+count, greater<int>() );
Run Code Online (Sandbox Code Playgroud)
它是C标准库中的排序函数.我无法弄清楚第三个论点的含义.我已经读过它被称为二元谓词.这意味着什么?我如何制作自己的谓词?
初学者问题:不久前我问过的一个问题的跟进.
我试图理解这个同步套接字教程http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx,特别是下面代码中的一行.
问题: 我想确保我正确理解程序流程.当确实handler.Receive(字节)的回报?当它"溢出"并且收到的字节超过1024字节时,它是否返回并存储在int bytesRec**中接收的字节数?**如果是这样,这可能听起来很愚蠢,如果更多字节到达会发生什么,因为它在*data*变量中存储了1024个字节而没有监听可能在那时到达的更多字节?或者我不应该担心它并让.net处理这个问题?
Socket handler = listener.Accept();
data = null;
// An incoming connection needs to be processed.
while (true) {
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
// My question is WHEN does the following line
// get to be executed
data += Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("<EOF>") > -1) {
break;
}
}
Run Code Online (Sandbox Code Playgroud) 我知道如何链接类方法(使用"return $ this"和all),但我想要做的是以聪明的方式链接它们,看看这个:
$albums = $db->select('albums')->where('x', '>', '20')->limit(2)->order('desc');
Run Code Online (Sandbox Code Playgroud)
我从这个代码示例中可以理解的是,前3个方法(select,where,limit)构建将要执行的查询语句,最后一个(order)来完成语句然后执行它并返回结果吧?
但是,事实并非如此,因为我可以轻松地删除任何这些方法(当然除了"选择")或者 - 更重要的是 - 改变他们的顺序,什么都不会出错!! 这意味着方法"选择"处理工作,对吗?那么在调用方法"select"之后,其他3个方法如何添加/影响查询语句!
我有一个大小为4的bool数组,我想将每个单元格绑定到不同的控件.此bool数组表示4个状态(false =失败,true =成功).这个bool数组是一个类:
class foo : INotifyPropertyChanged {
...
private bool[] _Statuses;
public bool[] Statuses
{
get {return Statuses;}
set {
Statuses = value;
OnPropertyChanged("Statuses");
}
}
Run Code Online (Sandbox Code Playgroud)
在XAML中有4个控件,每个控件绑定到数组的一个单元:
... Text="{Binding Path=Statuses[0]}" ...
... Text="{Binding Path=Statuses[1]}" ...
... Text="{Binding Path=Statuses[2]}" ...
... Text="{Binding Path=Statuses[3]}" ...
Run Code Online (Sandbox Code Playgroud)
问题是只有当我更改数组本身时才会引发notify事件,而当我在数组中更改一个值时不会引发通知事件,即下一个代码行引发事件:
Statuses = new bool[4];
Run Code Online (Sandbox Code Playgroud)
但下一行不会引发事件:
Statuses [0] = true;
Run Code Online (Sandbox Code Playgroud)
每次更换一个单元格时,如何引发事件?
在没有else条件的情况下结束if ... else语句的最佳做法是什么?请考虑以下代码:
$direction = $_POST['direction']; //Up or down
if ($direction == "up") {
code goes here...
}
elseif ($direction == "down") {
code goes here...
}
else {
//do nothing?
}
Run Code Online (Sandbox Code Playgroud)
如你所见,只有两个条件; 向上或向下并且else语句实际上没有用处,除非您希望它显示错误消息.
大多数时候,我看到程序员只是将else条件放在那里但插入注释而不是像这样的任何工作代码.
else {
//error messages goes here...
}
Run Code Online (Sandbox Code Playgroud)
或者只是假设它不是"向上",那么其他一切都应该"向下",因为只有2个条件.如果用户输入"左"或"右",它仍将被视为"向下".我认为这有点不合适.
if ($direction == 'up') {
code goes here...
}
else {
code goes here...
}
Run Code Online (Sandbox Code Playgroud)
我知道如果我们在没有其他条件的情况下放置PHP,PHP仍然可以工作.但是如果有一个elseif条件怎么办?在这样的情况下,如果我们想要保留严格的if ... else语句,如果我们不想包含任何错误消息或有任何其他条件,那么最佳做法是什么?
提前致谢.