小编ocp*_*000的帖子

在文本文件中搜索字符串的更快捷方式

我需要使用C#在一组文本文件中搜索大约13个字符的字符串.文本文件的数量正在变化,范围在100-1000之间.文件大小可以在1KB到10MB之间.

我尝试了打开每个文件的天真方式,逐行读取并查看字符串是否存在(使用index.of),但这太慢了.我也试过使用Boyer-Moore算法,它确实提高了时间,持续5秒,但这仍然感觉很慢.

有关如何加快搜索速度的想法吗?

c# string search full-text-search

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

使用命令行中的完整路径和参数运行 powershell 命令

我有一个位于Program Files文件夹中并接受参数的脚本:verbose从其restart 文件夹运行它效果很好:

powershell ./<file.ps1> -verbose:$True -restart
Run Code Online (Sandbox Code Playgroud)

尝试使用完整路径运行它是我遇到问题的地方:

powershell & "C:\Program Files\Folder\<file.ps1> -verbose:$True -restart"
Run Code Online (Sandbox Code Playgroud)

上面的命令不运行脚本;相反,它会打开 PS 命令提示符,退出时会在记事本中打开脚本。
我还尝试将每个变量放在单独的引号中,但这效果不佳。

我找到了使用progra~1代替的解决方法Program Files,但我想以正确的方式解决问题。

我缺少什么?

powershell command-line command-prompt

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

使用生产者读取大量文件会导致CPU使用率达到100%

我写了一个简单的消费者 - 生产者模式来帮助我完成以下任务:

  1. 从包含~500,000个TSV(制表符分隔)文件的目录中读取文件.
  2. 将每个文件操作为数据结构并将其放入阻塞队列.
  3. 使用使用者和查询DB消耗队列.
  4. 比较两个哈希映射,如果存在差异,则将差异打印到文件.

当我运行程序时,即使有5个线程,我的CPU消耗也会猛增到100%.这可能是因为我使用单个制作人来阅读文件吗?

文件示例(制表符分隔)

Column1   Column2   Column3   Column 4   Column5
A         1         *         -          -
B         1         *         -          -
C         1         %         -          -
Run Code Online (Sandbox Code Playgroud)

制片人

public class Producer implements Runnable{
private BlockingQueue<Map<String, Map<String, String>>> m_Queue;
private String m_Directory;

public Producer(BlockingQueue<Map<String, Map<String, String>>> i_Queue, String i_Directory)
{
    m_Queue = i_Queue;
    m_Directory = i_Directory;
}

@Override
public void run()
{
    if (Files.exists(Paths.get(m_Directory)))
    {
        File[] files = new File(m_Directory).listFiles();

        if (files != null)
        {
            for (File file …
Run Code Online (Sandbox Code Playgroud)

java multithreading file cpu-usage producer-consumer

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