问题列表 - 第2016页

24
推荐指数
5
解决办法
5995
查看次数

.NET:如何检查泛型类中的类型?

如何获取类中泛型类的类型?

一个例子:

我构建了一个实现ICollection <T>的泛型类型集合.在我内部有类似的方法

    public void Add(T item){
        ...
    }

    public void Add(IEnumerable<T> enumItems){
        ...
    }
Run Code Online (Sandbox Code Playgroud)

如何在方法中询问给定类型T

我的问题的原因是:如果对象被用作T,则集合使用Add(对象项)而不是Add(IEnumerable <object> enumItems),即使参数是IEnumerable.因此,在第一种情况下,它会将整个可枚举集合添加为一个对象,而不是可枚举集合的多个对象.

所以我需要类似的东西

if (T is object) {
    // Check for IEnumerable
}
Run Code Online (Sandbox Code Playgroud)

但当然这在C#中无效.建议?

非常感谢你!

迈克尔

.net c# generics types

15
推荐指数
2
解决办法
8949
查看次数

如何在线程之间传播异常?

我们有一个单个线程调用的函数(我们将其命名为主线程).在函数体内,我们生成多个工作线程来进行CPU密集型工作,等待所有线程完成,然后在主线程上返回结果.

结果是调用者可以天真地使用该函数,并且在内部它将使用多个核心.

到目前为止都很好..

我们遇到的问题是处理异常.我们不希望工作线程上的异常使应用程序崩溃.我们希望函数的调用者能够在主线程上捕获它们.我们必须捕获工作线程上的异常,并将它们传播到主线程,让它们继续从那里展开.

我们应该怎么做?

我能想到的最好的是:

  1. 在我们的工作线程上捕获各种异常(std :: exception和我们自己的一些).
  2. 记录异常的类型和消息.
  3. 在主线程上有一个相应的switch语句,它重新抛出工作线程上记录的任何类型的异常.

这有一个明显的缺点,即只支持一组有限的异常类型,并且每当添加新的异常类型时都需要修改.

c++ multithreading exception

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

使用"NA"替换空逗号分隔字段的正则表达式

我有一个逗号分隔的字符串列表,如下所示.

a,b   ,c ,d, ,      , , ,e, f,g,h  .
Run Code Online (Sandbox Code Playgroud)

我想编写一个正则表达式来替换空值,即只包含空格的字符串为'NA'.所以结果应该是

a,b   ,c ,d,NA,NA,NA,NA,e, f,g,h  .
Run Code Online (Sandbox Code Playgroud)

我尝试使用",\ s +,"进行搜索,但它会跳过备用的空字符串并导致结果

a,b   ,c ,d,NA,      ,NA, ,e, f,g,h  .
Run Code Online (Sandbox Code Playgroud)

在这里使用正确的正则表达式是什么?

regex

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

Visual Studio 2008 - 在文件中查找:列出所有内容两次

在VS2008中,我有一个网站项目.当我在文件中使用find并搜索字符串时,查找结果窗口将列出每次出现两次.

可能是什么导致了这个?

[编辑]

下面是VS的屏幕截图.我正在我的网站项目中搜索CommissionBucketProductID的工作.请注意,每行返回两次.

屏幕截图

[EDIT2]

回答你的问题.我只是在项目内搜索,而不是整个解决方案.我目前在VSS下没有这些文件,尽管它们已经过去了.

visual-studio-2008 visual-studio

7
推荐指数
2
解决办法
5377
查看次数

通过指针算法访问数组值与使用C中的下标访问数组值

我继续读到,在C中,使用指针算法通常比下标数组访问更快.即使使用现代(据称是优化的)编译器,这是真的吗?

如果是这样,当我开始在Mac上学习C到Objective-C和Cocoa时,情况仍然如此吗?

在C和Objective-C中,哪种是数组访问的首选编码风格?被认为(由各自语言的专业人士)更清晰,更"正确"(缺乏更好的术语)?

c arrays pointers objective-c pointer-arithmetic

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

在Clojure中进行GUI的最佳方法是什么?

Clojure中进行GUI的最佳方法是什么?

有一些功能性SwingSWT包装器的例子吗?或者与JavaFX声明性GUI描述的某些集成,可以使用一些宏观程序轻松地包装到s表达式

任何教程?

lisp java user-interface clojure

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

Eclipse:将git repo从项目重新定位到工作区

我已经在Eclipse插件项目上工作了一段时间,而且我遇到了需要将项目拆分为从插件包中分离测试用例的情况.我正在使用git作为版本控制.

简单地描述一下,我正在对这个旧项目进行版本化:

workspace/
  |
  +-- myplugin/
         |
         +-- .git/ <-- Here be the git repository
         |
         +-- /* Source code, project stuff, etc. */
Run Code Online (Sandbox Code Playgroud)

...我正处于需要在单独的项目中处理插件测试的情况下(因此不需要jUnit作为插件的必需包).我希望存储库能够对工作区中的所有内容进行版本控制.像这样:

workspace/
  |
  +-- .git/ <-- The repository should be relocated here instead…
  |
  +-- myplugin/
  |      |
  |      +-- /* Source code, project stuff, etc. */
  |
  +-- myplugin-test/
         |
         +-- /* Unit tests and stuff… */
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点而不会丢失旧项目的历史?

eclipse git version-control refactoring relocation

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

检测"隐形"网络爬虫

有哪些选项可以检测不希望被检测到的网页抓取工具?

(我知道列表检测技术将允许智能隐形爬虫程序员制作出更好的蜘蛛,但我认为无论如何我们都无法阻止智能隐形爬行器,只会犯错误.)

我不是在谈论像googlebot和Yahoo!这样的好爬虫.啜食.我认为机器人很好,如果它:

  1. 将自己标识为用户代理字符串中的bot
  2. 读robots.txt(并服从它)

我正在谈论坏的爬虫,躲在普通用户代理后面,使用我的带宽,从不给我任何回报.

有一些陷阱可以构建更新列表(谢谢Chris,gs):

  1. 添加仅在robots.txt中列出(标记为禁止)的目录,
  2. 添加不可见的链接(可能标记为rel ="nofollow"?),
    • style ="display:none;" 在链接或父容器上
    • 放在另一个具有更高z-index的元素下面
  3. 检测谁不懂大写,
  4. 检测谁试图发布回复但总是失败的验证码.
  5. 检测对仅POST资源的GET请求
  6. 检测请求之间的间隔
  7. 检测请求的页面顺序
  8. 检测谁(一致地)通过http请求https资源
  9. 检测谁没有请求图像文件(这与已知图像功能的浏览器的用户代理列表组合工作惊人的好)

一些陷阱将由"好"和"坏"机器人触发.你可以把它们与白名单结合起来:

  1. 它触发陷阱
  2. 它要求robots.txt
  3. 它不会触发另一个陷阱因为它服从了 robots.txt

另一个重要的事情是:
请考虑盲人使用屏幕阅读器:给人们一种联系方式,或解决(非图像)Captcha继续浏览.

有哪些方法可以自动检测试图将自己屏蔽为正常人类访问者的网络爬虫.

更新
问题不是:我如何捕获每个爬虫.问题是:如何最大限度地发现爬虫的机会.

有些蜘蛛真的很好,实际上解析和理解html,xhtml,css javascript,VB脚本等......
我没有幻想:我无法击败它们.

然而,你会惊讶于一些爬虫是多么愚蠢.愚蠢的最好例子(在我看来)是:在请求之前将所有URL强制转换为小写.

然后有一大堆爬虫只是"不够好",以避免各种陷门.

web-crawler

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

总是尝试捕获外部资源调用?

我应该总是在try-catch中包装外部资源调用吗?(即调用数据库或文件系统)调用外部资源时是否有最佳的错误处理方法?

c# exception external

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