问题列表 - 第12414页

lucene.net结合了多个过滤器,没有搜索条件

如何在Lucene.Net中的多个字段中进行过滤?在一个领域,我只是做:

TermQuery tool = new TermQuery(new Term("Tool", "Nail"));
Filter f = new QueryFilter(tool);
Run Code Online (Sandbox Code Playgroud)

如果我现在想在过滤器上添加钉子长度,我该怎么办呢?

此外,我希望用户能够在没有搜索词的情况下进行搜索(即只选择一个类别)我该怎么做?

lucene lucene.net full-text-search

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

如何提高您对代码的阅读和理解?

在过去5年左右的时间里,我一直在使用截然不同的项目和系统.这些项目的代码在质量,风格,规模方面存在显着差异.我看到了两个例子:干净,令人厌恶的1000行函数以及条件代码.

我仍然不能很好地阅读其他人的代码,理解系统的内部等.

我想了解一下您使用哪些技术来提高阅读和理解其他人的代码的技巧,如何快速掌握,常用的工具,方法等.

我举这个答案,许多只会枪吧:你可以提高阅读技能的代码通过阅读代码

有一篇相关的帖子可以提高编程技巧,这可能很有用,并与这篇文章相提并论:你为提高编程技巧做了哪些最有效的工作?

language-agnostic

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

视图层的“getter 和 setter 是邪恶的”是否失败?

很多人都知道这篇文章:更多关于 getter 和 setter。我认为它在描绘 getter/setter 的邪恶方面做得很有说服力。我还通过尝试将现有项目(未完成)转换为没有 getter/setter 的代码来测试它。有效。代码可读性大大提高,代码更少,我什至设法摆脱了最初认为它们确实有必要的 getter/setter。除了一处。

让模型进入视图部分是我认为这种方法没有抓住要点的地方。在文章中作者使用构建器导出模型。问题是:对放入构建器的内容的控制与使用 getter 获得的内容一样多。是的,它隐藏了实现,即它在模型中的表示方式。但是 getter 并没有从模型中取出与放入其中的非常不同的东西。如果您创建一个通过构造函数传递 '5' 的 Money 对象,money.getAmount() 将不会将此转换为其他货币或作为其中包含一个元素 '5' 的数组返回。

你设置什么就得到什么。通过视图,我们设置了值,以及当我们从一个应该保存我们首先设置的对象的对象中询问(获取)这些值时我们期望的值。导出这些的构建器只是期望相同。

这个问题有点长。但我想在我的观点上受到挑战。将模型数据传输到视图层的 getter 和 setter 是否邪恶?

有很多人认为 getter/setter 根本不是邪恶的。这也不是我想听到的辩护,因为我认为他们在我提到的其他地方确实是邪恶的。

oop model-view-controller getter setter encapsulation

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

在C#中查看生成的源(在AJAX/JavaScript之后)

有没有办法从C#应用程序查看生成的网页源(所有AJAX调用和JavaScript DOM操作之后的代码),而无需从代码中打开浏览器?

使用WebRequestWebClient对象查看初始页面工作正常,但如果页面大量使用JavaScript来更改页面加载时的DOM,则这些页面无法准确显示页面.

我尝试过使用SeleniumWatin UI测试框架,它们完美地工作,提供所有JavaScript操作完成后出现的生成源.不幸的是,他们通过打开一个非常慢的实际Web浏览器来实现这一点.我已经实现了一个selenium服务器,它将这项工作卸载到另一台机器上,但仍有很大的延迟.

是否有.Net库可以加载和解析页面(如浏览器)并吐出生成的代码?显然,谷歌和雅虎并没有为他们想要蜘蛛的每个页面开放浏览器(当然,他们可能拥有比我更多的资源......).

除非我愿意剖析开源浏览器的源代码,否则是否有这样的库或我运气不好?

好的,谢谢大家的帮助.我有一个比Selenium快10倍的工作解决方案.呜!

感谢来自beansoftware的这篇旧文章,我能够使用System.Windows.Forms.WebBrowser控件下载页面并解析它,然后给em生成源代码.即使控件在Windows.Forms中,你仍然可以从Asp.Net运行它(这就是我正在做的),只需记住将System.Window.Forms添加到项目引用中.

关于代码有两个值得注意的事情.首先,在新线程中调用WebBrowser控件.这是因为它必须在单线程公寓上运行.

其次,GeneratedSource变量设置在两个地方.这不是由于智能设计决定:)我还在努力,并在我完成后更新这个答案.多次调用wb_DocumentCompleted().首先下载初始HTML,然后在第一轮JavaScript完成时再次下载.不幸的是,我正在抓的网站有3个不同的加载阶段.1)加载初始HTML 2)执行第一轮JavaScript DOM操作3)暂停半秒然后进行第二轮JS DOM操作.

由于某种原因,第二轮不是由wb_DocumentCompleted()函数引起的,但是当wb.ReadyState == Complete时它总是被捕获.那么为什么不从wb_DocumentCompleted()中删除它呢?我仍然不确定为什么它没有被抓到那里,这是珠宝软件文章推荐的地方.我要继续研究它.我只是想发布这个代码,所以任何有兴趣的人都可以使用它.请享用!

using System.Threading;
using System.Windows.Forms;

public class WebProcessor
{
    private string GeneratedSource{ get; set; }
    private string URL { get; set; }

    public string GetGeneratedHTML(string url)
    {
        URL = url;

        Thread t = new Thread(new ThreadStart(WebBrowserThread));
        t.SetApartmentState(ApartmentState.STA);
        t.Start();
        t.Join();

        return GeneratedSource;
    }

    private void WebBrowserThread()
    {
        WebBrowser wb = new …
Run Code Online (Sandbox Code Playgroud)

.net c# screen-scraping

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

StreamReader.EndOfStream缺少最后一行?

我试图使用代码(粘贴在下面)读取文本文件,但文件的最后一行不会被读取.我的逻辑是否正确?

        using (StreamReader reader = new StreamReader(stream))
        {
            try
            {
                string line = reader.ReadLine();
                string[] data = BreakLine(line);  


                while (!reader.EndOfStream)
                {
                    data = BreakLine(line);
                    DataRow dr = _DataTable.NewRow();
                    // protect against overflow
                    int maxColumns = Math.Min(_DataTable.Columns.Count, data.Length);
                    for (int i = 0; i < maxColumns; i++)
                    {
                        dr[i] = data[i];
                    }
                    _DataTable.Rows.Add(dr);
                    line = reader.ReadLine();
                }
                return _DataTable;
            }
            finally
            {
                reader.Close();
                reader.Dispose();
                stream.Close();
            }
        }
Run Code Online (Sandbox Code Playgroud)

.net c# file-io stream

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

如何在Web开发中提高自己?

我不是一个经验丰富的Web开发人员.我更有可能独立应用程序经验丰富的语言,如c,c ++,java,c#.我有很多关于web项目的想法与php和mysql的知识,但当我开始开发我当我来设计stage.ıt真的很沮丧,你有什么建议吗?

php mysql

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

试图理解排序方法.Java家庭作业

这是作业,但我需要"轻推".我找不到如何按名称排序.

我的问题:(请保持答案初学者友好)

  1. 到目前为止看起来是否合适?
  2. 怎么排序?
  3. 有没有人有优化/清洁这个建议?

这是作业:

第6周到期的库存计划第2部分检查点具有以下要求:

  1. 修改库存程序,以便应用程序可以处理多个项目.使用数组存储项目.

  2. 输出应一次显示一个产品的信息,包括产品编号,产品名称,库存单位数量,每个单位的价格以及该产品的库存价值.

  3. 此外,输出应显示整个库存的值.

  4. 创建一种方法来计算整个库存的价值.

  5. 创建另一种方法,按产品名称对数组项进行排序.

要满足这些要求,您需要将以下内容添加到Inventory类(而不是产品类):

1)声明一个Product类型的数组(一个私有实例变量)

2)在主while循环中,执行以下操作:

a. Instantiate a product object 
b. Populate the product object with the input from the console (like Inventory Part 1     does) 
c. Add the product object reference to the next element in your array 
d. Destroy the reference to the product object variable (note this object was added to your array so you can set the local variable that refers to the object to null) …
Run Code Online (Sandbox Code Playgroud)

java

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

转换运算符如何在C++中工作?

考虑这个简单的例子:

template <class Type>
class smartref {
public:
    smartref() : data(new Type) { }
    operator Type&(){ return *data; }
private:
    Type* data;
};

class person {
public:
    void think() { std::cout << "I am thinking"; }
};

int main() {
    smartref<person> p;
    p.think(); // why does not the compiler try substituting Type&?
}
Run Code Online (Sandbox Code Playgroud)

转换运算符如何在C++中工作?(即)编译器何时尝试替换转换运算符后定义的类型?

c++ conversion-operator

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

C#System.Windows.Forms.TreeView:双击停止自动展开/折叠(并执行另一个处理程序)

是否有一种简单的方法可以在双击时禁用TreeView节点的自动展开/折叠?如果当前系统时间与双击所预期的系统时间匹配,我一直无法找到这个问题的答案,如果没有检查BeforeExpand/BeforeCollapse,那么这个问题仍然有效 - 覆盖OnNodeMouseDoubleClick和/或OnDoubleClick似乎不够.

或者,检查系统时间,看它是否适合双击唯一的方法来做到这一点?

谢谢你的帮助,-Walt

c# windows treeview

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

奇怪的String.getByte(编码)

我在尝试这个:

byte[] b = String.getBytes("ASCII") and get an UnsupportedEncodingException Exception

String fName = new String(b,"ASCII");

- got the same when used

byte[] b = String.getByte("ISO8859_1");
String fName = new String(b,"ISO8859_1");
Run Code Online (Sandbox Code Playgroud)

编辑:getByte更改为getBytes

java string

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