小编Jon*_*Jon的帖子

trigraph ??/ignored,使用-trigraphs启用

我的编译器(gcc)给了我这个警告.请帮我理解它的含义:

警告:trigraph ??/ignored,使用-trigraphs启用

c gcc

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

PHP的mt_rand如何播种?

我知道PHP mt_rand()不应该用于安全目的,因为它的结果不是加密强.然而,许多PHP代码就是这样做的,或者如果没有更好的随机源,则将其用作后备.

那有多糟糕呢?哪些随机源mt_rand用于播种?mt_rand加密应用程序是否存在其他安全问题?

php security random mersenne-twister

13
推荐指数
1
解决办法
5040
查看次数

无效的强制转换异常泛型

我遇到了这个问题,我正在使用反射从类中提取属性,但问题是反射将它们作为对象返回,我无法将其转换为实际类型.

例如,如果这是班级:

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)

但是,当我尝试从它objectRow<object>它似乎忽略我的显式运算符并抛出System.InvalidCastException:

var c = (object) a; // Simulate getting from reflection

var …
Run Code Online (Sandbox Code Playgroud)

c#

13
推荐指数
2
解决办法
1163
查看次数

实现地理坐标类:相等比较

我正在将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)

在这一点上,我停下来,并认为我正在比较浮点变量的相等性,这通常是禁忌.我的思考过程大致如下:

  1. 我只能设想一次设置LatitudeLongitude属性,这意味着不会累积任何错误来搞砸我的比较.

  2. 另一方面,写(尽管没有意义)是可能的

    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应该能够处理它.

  3. 使用difference < …

c# geocoding equality

11
推荐指数
2
解决办法
2912
查看次数

C++ STL sort()函数,二元谓词

我有一段令我困惑的代码:

   sort(data, data+count, greater<int>() );
Run Code Online (Sandbox Code Playgroud)

它是C标准库中的排序函数.我无法弄清楚第三个论点的含义.我已经读过它被称为二元谓词.这意味着什么?我如何制作自己的谓词?

c++ sorting stl

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

Socket.Receive什么时候返回数据?

初学者问题:不久前我问过的一个问题的跟进.

我试图理解这个同步套接字教程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)

c# sockets

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

如何创建流畅的查询界面?

我知道如何链接类方法(使用"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个方法如何添加/影响查询语句!

php oop fluent-interface

11
推荐指数
1
解决办法
4363
查看次数

如何为bool []中的值实现INotifyPropertyChanged功能?

我有一个大小为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)

每次更换一个单元格时,如何引发事件?

wpf binding inotifypropertychanged

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

结束if ... else语句的最佳做法,不带条件

在没有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语句,如果我们不想包含任何错误消息或有任何其他条件,那么最佳做法是什么?

提前致谢.

php if-statement coding-style

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

有什么方法可以访问类的私有成员变量吗?

有什么方法可以访问类的私有成员变量吗?

编辑:不是来自成员函数或朋友函数,而是来自实例.

c++

9
推荐指数
4
解决办法
1800
查看次数