小编dot*_*hen的帖子

这种继承特性的用例是什么?

继承继承的类时,new/override行为不是我所期望的:

$ cat Program.cs
using System;

class A {
    public virtual void SayHi() {
        Console.WriteLine("From A");
    }
}
class B : A { 
    public new virtual void SayHi()  {
        Console.WriteLine("From B");
    }
}
class C : B { 
    public override void SayHi() {
        Console.WriteLine("From C");
    }
}

public class Program {
    public static void Main() {
        A p = new C();
        p.SayHi();
    }
}

$ ./Program.exe 
From A
Run Code Online (Sandbox Code Playgroud)

由于C类覆盖了sayHi()方法,我希望输出为From C.为什么B类的new修饰符优先于此?那是什么用例?特别是因为它打破了C真正覆盖A的明显用例.

请注意,上面的代码是在Debian派生的发行版上运行的Mono 2.10上运行的.但我已经使用MS Visual Studio中的C#编译器确认了相同的行为.

c# mono inheritance

18
推荐指数
3
解决办法
638
查看次数

VIM功能:何时使用"正常",何时使用"exec"以及何时何时使用?

在研究VIM函数以学习编写自己的函数时,我发现命令有时会normal写入关键字:

normal mz
Run Code Online (Sandbox Code Playgroud)

有时normal 包裹在exec:

exec "normal mk"
Run Code Online (Sandbox Code Playgroud)

或者有时单独上线 ;

0d
Run Code Online (Sandbox Code Playgroud)

在精细手册中的哪个地址?

vim function

16
推荐指数
2
解决办法
7439
查看次数

在MySQL CLI解释器中使用Grep

有没有办法grep MySQL解释器(CentOS 5.x)的输出?例如,我知道我需要一个表名为"user"的表.理想情况下,我会喜欢这样的事情:

DESCRIBE TABLES; | grep "user"
Run Code Online (Sandbox Code Playgroud)

我知道我可以退出MySQL,然后在bash中执行:

mysql -u me -p "USE someTable; DESCRIBE TABLES;" | grep "user"
Run Code Online (Sandbox Code Playgroud)

但我宁愿留在MySQL.谢谢.

mysql command-line-interface

15
推荐指数
1
解决办法
7977
查看次数

如何将gzip内容作为PHP响应发送

我的ajax响应非常大,实际上是900kb.所以我需要gzip来提高性能.

任何人都可以帮助我从我的PHP获取gziped内容.

提前致谢.

php

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

SQL Server:设置字符集(不是整理)

在SQL Server中创建表时如何设置字段的默认字符集?在MySQL中,我们这样做:

CREATE TABLE tableName (
    name VARCHAR(128) CHARACTER SET utf8
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)

请注意,我在这里设置了两次字符集.这是多余的,我添加了两种方式来演示.

我还设置了排序规则,以证明排序规则是不同的.我不是要求设置整理.大多数 关于SQL Server中的字符集和编码的问题都通过整理来回答,这不是一回事.

sql-server collation character-encoding character-set

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

创建存储过程:设置字符集和排序规则

在创建MySQL存储过程时,如何设置字符集和排序规则?在MySQL文档不提供任何实例和一般的语法有点不清楚.

mysql> show procedure status\G

*************************** 1. row ***************************
                  Db: MslLandingSequence
                Name: DeploySkycrane
                Type: PROCEDURE
             Definer: curiosity@localhost
            Modified: 2012-08-04 00:05:16
             Created: 2011-11-12 00:02:45
       Security_type: DEFINER
             Comment: 
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: latin1_swedish_ci
Run Code Online (Sandbox Code Playgroud)

最后三项应该是Unicode.谢谢.

mysql stored-procedures character-encoding

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

比较 componentDidUpdate 中的 PrevProps

我试图检测道具何时在已componentDidUpdate安装组件内发生变化。我有一个测试(refreshData在下面的代码中)工作正常。是否有可能以一种未被检测到的方式传递道具componentDidUpdate(prevProps)

在 component.js 中:

componentDidUpdate(prevProps){

    //works fine
    if ( this.props.refreshData !== prevProps.refreshData ) {
        if ( this.props.refreshData )
            this.refreshData();
    }

    //these two arent calling
    if ( this.props.selectedCountries !== prevProps.selectedCountries ) {
        if ( this.props.selectedCountries )
            console.log('updated selected countries');
    }

    if ( this.props.selectedLocations !== prevProps.selectedLocations ) {
        console.log('updated selected locations');
    }

}
Run Code Online (Sandbox Code Playgroud)

并在 App.js 中传递如下道具:

selectLocation = (id, type, lng, lat, polydata, name, clear = false) => {

  //console.log(type);
  //console.log(lng);
  //console.log(lat);
  //console.log(polydata);

  let selectedType = …
Run Code Online (Sandbox Code Playgroud)

reactjs react-props

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

如何将函数声明移动到另一个文件但仍保留Git历史记录?

我正在重构一个单文件PHP脚本,以在单独的文件中声明函数和类.如何将一个代码块从一个文件移动到另一个文件,同时保留每个单独行的Git历史记录?我希望能够至少git blame使用代码.与旧版本相比也会有所帮助.

请注意,我对"解决方法"解决方案不感兴趣,这些解决方案需要--follow在代码上使用其他命令或标志(例如)来查看其"旧"历史记录,查看历史记录的人必须知道该文件需要特殊处理.我要寻找其写入必要的元数据的解决方案,使得普通的Git命令,例如blame,log,diff,和这样的"只是工作",而不呈现给他们的其他标志或参数.

我已经阅读了不少 帖子,寻找类似问题的解决方案,但没有解决git blame个别问题的问题.我认为可以解决的一个解决方案是复制文件及其整个历史记录,然后解决这个问题.但是,这个问题仍然没有令人满意的答案.

git refactoring

12
推荐指数
1
解决办法
963
查看次数

快递js身体解析器不工作?

我在使用express的节点服务器中有以下内容(截断到重要部分):

var app = express.createServer();

app.all(/test/,function(req,res){
    console.log(req.headers);
    console.log(req.body);
    res.send("");
});

function appStart(cobrands){
    app.configure(function(){
        app.use(express.bodyParser());
        app.use(express.cookieParser());

        app.use('/min',express.static('../min'));
        app.use('/js',express.static('../js'));
        app.use('/css',express.static('../css'));
        app.use('/img',express.static('../img'));
    });
    app.listen(8080);
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个简单的形式,调用localhost:8080像这样:

<form action="http://localhost:8080/test" method="post">
    <input type="hidden" name="test" value="testing"/>
    <input type="submit" name="submit" value="to node"/>
</form>
Run Code Online (Sandbox Code Playgroud)

但是express.bodyParser似乎没有做任何事情,并且req.body是未定义的.这是console.logs 的输出:

// req.headers
{ host: 'localhost:8080',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.3',
  'content-length': '27',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  origin: 'file://',
  'content-type': 'application/x-www-form-urlencoded',
  'accept-language': 'en-us',
  'accept-encoding': 'gzip, deflate',
  cookie: '',
  connection: 'keep-alive' }
// req.body
undefined …
Run Code Online (Sandbox Code Playgroud)

forms connect node.js express

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

PHP:具有全局命名空间的单个文件中的命名空间

我有一个需要()'sa命名空间的文件,如下:

<?php
require_once('Beer.php');   // This file contains the Beer namespace

$foo = new Beer\Carlsburg();
?>
Run Code Online (Sandbox Code Playgroud)

我想将Beer命名空间直接放在同一个文件中,就像这个(unworking)示例:

<?php
namespace Beer {
    class Carlsburg {}
}

$foo = new Beer\Carlsburg();
?>
Run Code Online (Sandbox Code Playgroud)

但是,PHP解释器抱怨说 No code may exist outside of namespace.因此我可以$foo在一个命名空间中包装声明,但是我还必须在该命名空间中包装Beer来访问它!这是我试图避免的一个工作示例:

<?php
namespace Main\Beer {
    class Carlsburg {}
}

namespace Main {
    $foo = new Beer\Carlsburg();
}
?>
Run Code Online (Sandbox Code Playgroud)

有没有办法Beer在文件中包含命名空间的代码,但是没有$foo声明包装在自己的命名空间中(将其保留在全局命名空间中)?

谢谢.

php namespaces

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