问题列表 - 第3544页

我如何在C#中获取调用方法

可能重复:
如何找到调用当前方法的方法?

我需要一种方法来了解C#中调用方法的名称.

例如:

private void doSomething()
{
// I need to know who is calling me? (method1 or method2).

// do something pursuant to who is calling you?
} 

private void method1()
{
 doSomething();
}

private void method2()
{
 doSomething();
}
Run Code Online (Sandbox Code Playgroud)

c# reflection

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

SQL内部连接语法

下面的两个SQL得到相同的结果

SELECT c.name, o.product  
FROM customer c, order o  
WHERE c.id = o.cust_id  
AND o.value = 150  

SELECT c.name, o.product  
FROM customer c  
INNER JOIN order o on c.id = o.cust_id  
WHERE o.value = 150
Run Code Online (Sandbox Code Playgroud)

我已经看到这两种风格在不同的公司都被用作标准.从我所看到的,第二个是大多数人在网上推荐的.除了风格之外,还有其他真正的理由吗?使用内部联接有时会有更好的表现吗?

我注意到Ingres和Oracle开发人员倾向于使用第一种风格,而Microsoft SQL Server用户倾向于使用第二种风格,但这可能只是巧合.

感谢您的任何见解,我一直想知道这一点.

编辑:当我使用不正确的terminlogy时,我已经从"SQL内部连接与笛卡尔产品"中更改了标题.感谢到目前为止的所有回复.

sql

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

使用"Uncopyable"类时,会消除GCC警告

我有几个我不想复制的类,其中一些类有指针数据成员.为了使这些类不可复制,我私下继承了以下类模板:

template <class T>
class Uncopyable
{
  protected:
    Uncopyable() {}
    virtual ~Uncopyable() {}
  private:
    Uncopyable(const Uncopyable &);
    T & operator=(const T&);
};
Run Code Online (Sandbox Code Playgroud)

我这样使用的是:

class Entity : private Uncopyable<Entity> { }
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是当我使用-Weffc ++编译时,我仍然收到以下警告:

class Entity has pointer data members
but does not override Entity(const Entity&)
or operator=(const Entity&)
Run Code Online (Sandbox Code Playgroud)

为什么它仍然给我这个警告?

c++ effective-c++

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

Java中的MVC

这是关于学校作业的,所以我试图通过这本书来做事.我觉得我已经掌握了Java,但良好的编程习惯,设计模式等对我来说都是新的.

我已经制作了我的模型并且工作正常.它包含一个学生班级,其中包含许多带有学生信息的字段(显然).现在我希望这些信息显示在几个JLabel中.最简单的方法是将整个学生对象传递给GUI并多次使用JLabel.settext.getname()等,毫无疑问这将完美地运行.但是我觉得学生对象是模型的一部分,并且通过将它传递给GUI我不再使用MVC模式了.我在这儿吗?

我确实创建了一个控制器对象,用于将数据传入和传出模型和GUI,但是为了只传递字符串到标签或通过控制器设置JLabel文本,我需要GUI中的很多setter,或者我必须使所有JLabels全局字段也感觉不舒服.

有什么建议吗?

java model-view-controller

8
推荐指数
1
解决办法
755
查看次数

为什么我的Perl curses窗口不起作用?

我对Curses的理解可能比使用Perl更有问题,但请帮帮我.我正在使用Curses.pm,除非我尝试创建一个curses"窗口",否则它的效果非常好.示例代码:

use Curses;
initscr;
$w=newwin(1,1,40,40);
$w->addstr(20,20,"Hello");
$w->refresh;
refresh;
endwin;
Run Code Online (Sandbox Code Playgroud)

没有输出.不使用窗口工作正常:

use Curses;
initscr; 
$w=newwin(1,1,40,40); 
addstr(20,20,"Hello"); 
refresh; 
endwin; 
Run Code Online (Sandbox Code Playgroud)

curses perl window

4
推荐指数
1
解决办法
2408
查看次数

ASCII艺术图像转换算法如何工作?

有一些很好的免费"图像到ASCII艺术"转换网站,如下所示:ASCII-art.org

这种图像转换算法如何工作?

                         ,                     
                     .   W    ,                
                     W   W    @                
                     W  ,W    W                
                  ,  W, :W*  .W  .             
                  #  WW @WW  WW  #             
                  W  WW.WWW  WW: W             
                  W. WW*WWW# WW@ W             
               * :WW.WWWWWWW@WWW@W  #          
              +* #WW#WWWWWWWWWWWWW# W          
              W# @WWWWWWWWWWWWWWWWW W          
              WW WWWWWWWWWWWWWWWWWW W          
              WW WWWWWWWWWWWWWWWWWW@W#         
             ,WW.WWWWWWWWWWWWWWWWWWWWW         
              WW@WWWWWWWWWWWWWWWWWWWWW         
            : WWWWWWWWWWWWWWWWWWWWWWWW :       
            @ WWWWWWWW@WWWWWWW@@WWWWWW.        
            W*WWWWWW::::@WWW:::::#WWWWW        
            WWWWWW@::   :+*:.   ::@WWWW        
            WWWWW@:*:.::     .,.:.:WWWW        
            @WWWW#:.:::.     .:: #:@WWW        
            :WWW@:#. ::     :WWWW:@WWWW        
             WWW#*:W@*@W     .   W:#WWW        
            #WWWW:@      ::   ::  *WWWW        
            W@WW*W  .::,.::::,:+  @@WW#,       
            WWWW## ,,.: .:::.: .  .WWW:,       
            @WWW@: …

algorithm ascii-art

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

Python线程stack_size和segfaults

一个Web爬虫脚本,最多可生成500个线程,每个线程基本上都会请求从远程服务器提供的某些数据,每个服务器的回复在内容和大小上与其他服务器不同.

我正在为线程设置stack_size为756K

threading.stack_size(756*1024)
Run Code Online (Sandbox Code Playgroud)

这使我能够拥有足够数量的线程并完成大部分工作和请求.但是由于某些服务器的响应比其他服务器更大,并且当线程得到那种响应时,脚本会死于SIGSEGV.

stack_sizes超过756K使得无法同时拥有所需数量的线程.

关于如何在没有崩溃的情况下继续使用给定的stack_size的任何建议?以及如何获得任何给定线程的当前使用的stack_size?

python multithreading segmentation-fault stack-size

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

在.NET中进行双重检查锁定

我在本文中讨论了为什么在Java中打破了双重检查锁定范例的原因.如果声明变量,范例是否对.NET(特别是C#)有效volatile

.net paradigms multithreading double-checked-locking

52
推荐指数
4
解决办法
5万
查看次数

如何为线程安全编写自动化测试

我有一个非线程安全的类:

class Foo { 
    /* Abstract base class, code which is not thread safe */ 
};
Run Code Online (Sandbox Code Playgroud)

此外,如果你有foo1和foo2对象,你不能调用foo1-> someFunc()直到foo2-> anotherFunc()返回(这可能发生在两个线程).这是情况,它无法更改(Foo子类实际上是python脚本的包装器).

为了防止不必要的电话,我创建了以下内容 -

class FooWrapper {
public:
    FooWrapper(Foo* foo, FooWrappersMutex* mutex);
    /* Wrapped functions from Foo */
};
Run Code Online (Sandbox Code Playgroud)

在内部,FooWrapper使用共享互斥锁包装对Foo函数的调用.

我想测试FooWrapper的线程安全性.我最大的问题是线程是由操作系统管理的,这意味着我对执行的控制较少.我想测试的是以下场景:

  • 线程1在函数内部调用fooWrapper1-> someFunc()并阻塞
  • 线程2调用fooWrapper2-> anotherFunc()并立即返回(因为someFunc()仍在执行)
  • 线程1完成执行

什么是最简单的自动测试这样的场景?

我在Win32上使用QT,虽然我更喜欢QT至少是跨平台的解决方案.

c++ testing multithreading unit-testing

8
推荐指数
2
解决办法
4839
查看次数

在Expression Trees中调用实例方法的最佳方法?

在表达式树中调用实例方法的最佳方法是什么?我目前的解决方案是接口IColumn的接口方法"对象GetRowValue(rowIndex)".

public static Expression CreateGetRowValueExpression(
    IColumn column, 
    ParameterExpression rowIndex)
        {
            MethodInfo methodInfo = column.GetType().GetMethod(
                "GetRowValue",
                BindingFlags.Instance | BindingFlags.Public,
                null,
                CallingConventions.Any,
                new[] { typeof(int) },
                null);
            var instance = Expression.Constant(column);
            return Expression.Call(instance, methodInfo, rowIndex);            
        }
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?是否可以创建表达式而无需将方法名称作为字符串传递(对于重构不好)?

c# linq expression-trees

4
推荐指数
1
解决办法
4981
查看次数