问题列表 - 第2572页

什么时候线程超出范围?

我编写了一个程序来计算文本中的行,单词和字符:它用线程来完成.它有时很好用,但其他时候却不那么好.最终发生的是指向单词数量的变量,计算的字符有时会变短,有时则不会.

在我看来,线程有时会在他们可以计算他们想要的所有单词或字符之前结束.是因为当while(true)循环中断时这些线程超出了范围吗?

我已经在下面的问题中包含了代码:

private void countText() {
  try {
    reader = new BufferedReader(new FileReader("this.txt"));
    while (true) {
      final String line = reader.readLine();
      if(line == null) {break;}
      lines++;
      new Thread(new Runnable() {public void run() {chars += characterCounter(line);}}).start();
      new Thread(new Runnable() {public void run() {words += wordCounter(line);}}).start();
      println(line);
    }

  } catch(IOException ex) {return;}

}
Run Code Online (Sandbox Code Playgroud)

(子问题:这是我第一次询问某些内容并发布代码.我不想使用StackOverflow代替谷歌和维基百科,我担心这不是一个合适的问题?我试图让问题更一般,所以我不只是要求我的代码帮助......但是,是否有另一个网站,这种问题可能更合适?)

java multithreading scope

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

在Mac OS X上获取当前堆栈跟踪

我正在尝试研究如何在Mac OS X上的C++应用程序中存储然后打印当前堆栈.主要问题似乎是在主要可执行文件中给出一个地址时让dladdr返回正确的符号.我怀疑这个问题实际上是一个编译选项,但我不确定.

我已经尝试过来自Darwin/Leopard的回溯代码,但它调用了dladdr并且与我自己的代码调用dladdr有相同的问题.

原帖:目前我用这段代码捕获堆栈:

int BackTrace(Addr *buffer, int max_frames)
{
    void **frame = (void **)__builtin_frame_address(0);
    void **bp = ( void **)(*frame);
    void *ip = frame[1];
    int i;

    for ( i = 0; bp && ip && i < max_frames; i++ )
    {
        *(buffer++) = ip;
        ip = bp[1];
        bp = (void**)(bp[0]);
    }

    return i;
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.然后打印堆栈我正在使用这样的dladdr:

Dl_info dli;
if (dladdr(Ip, &dli))
{
    ptrdiff_t       offset;
    int c = 0;

    if (dli.dli_fname && dli.dli_fbase)
    {
        offset = (ptrdiff_t)Ip - (ptrdiff_t)dli.dli_fbase;
        c …
Run Code Online (Sandbox Code Playgroud)

macos backtrace

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

为什么TList.Remove()会产生EAccessViolation错误?

为什么在执行下面的代码时会引发EAccessViolation?

uses
  Generics.Collections;
  ...

var
  list: TList<TNotifyEvent>;
  ...

begin
  list := TList<TNotifyEvent>.Create();
  try
    list.Add(myNotifyEvent);
    list.Remove(myNotifyEvent);  // EAccessViolation at address...
  finally
    FreeAndNil(list);
  end;
end;

procedure myNotifyEvent(Sender: TObject);
begin
  OutputDebugString('event');  // nebo cokoliv jineho
end;
Run Code Online (Sandbox Code Playgroud)

delphi generics delphi-2009 tlist

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

为什么aspnet_compiler.exe这么慢(可以更快)?

在我们的构建过程中,我们aspnet_compiler.exe针对我们的网站运行,以确保ASP.NET/MVC中所有后期绑定的内容实际构建(我对ASP.NET一无所知,但我确信这对于防止在运行时发现故障是必要的).

我们的网站规模相当大,有几百页/观看/控制/等.然而,在10-15分钟范围内所花费的时间似乎过多(作为参考,这比整个解决方案需要大约40个项目的编译时间更长,我们只是预编译了两个网站项目).

我怀疑硬件是问题,因为我运行的是最新的四核英特尔芯片,配备4GB内存和WD Velociraptor 10,000rpm硬盘.而奇怪的部分是EXE似乎没有使用太多的CPU(1-5%)并且似乎也没有做太多的I/O.

那么......这是一个众所周知的问题吗?为什么这么慢?有没有办法加快速度?

注意:为了澄清人们已经回答的一些事情,我不是在谈论Visual Studio中的代码编译.我们已经在使用Web应用程序项目了,编译速度不是问题.问题是在已经编译这些项目之后预先编译网站(有关详细信息,请参阅此MSDN页面)作为开发构建脚本的一部分.我们正在执行就地预编译,而不是将文件复制到目标目录.

asp.net aspnet-compiler pre-compilation

28
推荐指数
3
解决办法
5490
查看次数

使用简单的基于GUI的编辑器的非开发人员的宏/脚本语言

我们希望为人们提供能够为他们的帐户添加一些逻辑(比如,给出一些参数,如何计算特定结果).所以,基本上,这就等于编写简单的业务规则,并支持条件和表达式.然而,挑战在于为他们提供一个简单的在线编辑器,他们可以通过完全可视的方式创建逻辑(最好)(拖放Expr树节点可能 - 有点像Y!管道).

有没有人知道脚本/宏/特定于域的语言让人们这样做?挑战是可视化编辑器,因为我们不希望投资开发用于编辑的UI.基本要求是:
1.嵌入到另一种语言,或安全运行(否reboot -n<JUNK-DANGEROUS-COMMAND> >> ~/.bashrc)
2.无需编码背景的用户可轻松访问(无需任何高级功能)
3.最好有一个简单的基于GUI的编辑器来创建逻辑非开发人员可以访问的程序(有点像电子表格)
4.生成编译时警告(无效代码)的一些能力是好的(类型安全吗?)
5.能够在执行之前嵌入一些可用于解释器的数据(例如,name,birthday,amount)

有人试过做这样的事情并得到任何想法吗?我看了Lua,Io,Python,Ruby和其他许多人,但挑战本质上是我不认为非程序员能够理解这些代码.如果可以轻松开发编辑器,那么可以通过"元编程"添加的东西也可以说Ruby也很好!

macros scripting user-interface embedded-language

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

为什么这个联合的大小是2的位域?

我在Windows上的turbo C上工作,其中char占用一个字节.现在我的问题在于下面的联合.

union a
{
 unsigned char c:2;
}b;
void main()
{
printf("%d",sizeof(b));  \\or even sizeof(union a)
}
Run Code Online (Sandbox Code Playgroud)

该程序打印输出为2,其中union应该只占用1个字节.为什么会这样?

对于struct,它可以很好地给出1个字节但这个联合工作不正常.

还有一件事如何访问这些位字段.

scanf("%d",&b.c);  //even scanf("%x",b.c);
Run Code Online (Sandbox Code Playgroud)

没有用,因为我们不能有位的地址.所以我们必须使用下面的另一个变量

int x;
scanf("%d",&x);
b.c=x;
Run Code Online (Sandbox Code Playgroud)

我们不能避免吗?有没有其他方法???

c bit-manipulation structure unions

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

为MSVC预建的1.37升级

我找不到Boost 1.37.0的预构建的MSVC++库,只有源代码.我不明白他们奇怪的构建系统是如何工作的...有没有我可以找到下载Visual Studio项目的地方?

c++ boost bjam

6
推荐指数
2
解决办法
5870
查看次数

从 MySQL 执行 shell 命令

我知道我正在寻找的可能是一个安全漏洞,但由于我设法在 Oracle 和 SQL Server 中做到了这一点,所以我会尝试一下:

我正在寻找一种从 MySQL 上的 SQL 脚本执行 shell 命令的方法。如有必要,可以创建和使用新的存储过程。

注意:我不是在寻找 mysql 命令行工具提供的 SYSTEM 命令。相反,我正在寻找这样的东西:

开始 IF COND1... EXEC_OS cmd1; 否则 EXEC_OS cmd2; 结尾;

其中 EXEC_OS 是调用我的代码的方法。

mysql database stored-procedures

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

交互式统计分析工具

我正在寻找一种用于统计分析的基本软件.最重要的是简单直观的使用,开箱即用"开箱即用".至少基本操作应该是交互式的.免费将是一个奖金:)

目的是分析数据转储和各种进程的日志.

  • 导入逗号/制表符分隔的文件
  • 在条件上排序和过滤行
  • 基本总量:计数,平均值,偏差,回归,趋势
  • 可视化 - 绘制数据,bin分布等.

对于过滤和重新组合数据,Excel失败(至少对我来说),我想像"Excel with SQL"这样的东西会很好.我以前一直在使用MS Access + Excel并复制数据,但这很痛苦.

你有什么建议吗?

澄清我不是在寻找IIS/Web服务器日志的特定工具,而是查找具有制表符分隔值的各种数据结束事件日志(主要来自自定义应用程序).

statistics

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

"PDO :: lastInsertId"/"mysql_insert_id"的替代方案

我总是听说使用"lastInsertId"(或者如果你不使用PDO,则使用mysql_insert_id())是邪恶的.在触发器的情况下,它显然是,因为它可以返回一些完全不是INSERT创建的最后一个ID.

$DB->exec("INSERT INTO example (column1) VALUES ('test')");
// Usually returns your newly created ID.
// However when a TRIGGER inserts into another table with auto-increment:
// -> Returns newly created ID of trigger's INSERT
$id = $DB->lastInsertId();
Run Code Online (Sandbox Code Playgroud)

有什么选择?

php mysql auto-increment lastinsertid mysql-insert-id

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