小编ard*_*srk的帖子

C中的状态机

在C中编写状态机的最佳方法是什么?
我通常在for(;;)中编写一个大的switch-case语句,并在外部操作完成时使用回调来重新进入状态机.
你知道更有效的方式吗?

c state-machine

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

帮我理解这个"编程珍珠"bitort程序

Jon Bentley在其编程珍珠的第1栏中介绍了一种使用位向量对非零正整数序列进行排序的技术.

我从这里获取了programort.c程序并粘贴在下面:

/* Copyright (C) 1999 Lucent Technologies */
/* From 'Programming Pearls' by Jon Bentley */

/* bitsort.c -- bitmap sort from Column 1
 *   Sort distinct integers in the range [0..N-1]
 */

#include <stdio.h>

#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000

int a[1 + N/BITSPERWORD];

void set(int i) 
{
    int sh = i>>SHIFT;
    a[i>>SHIFT] |=  (1<<(i & MASK)); 
}
void clr(int i) { a[i>>SHIFT] &= ~(1<<(i & MASK)); }
int …
Run Code Online (Sandbox Code Playgroud)

c 32-bit programming-pearls

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

从Android中的本地资产加载jQuery以获取远程html页面

我正在尝试从Android webview中读取存储在资产中的本地javascript文件(jQuery).我不想加载base-url,因为我的图像和html是远程提供的.

总结: - 在Android webview中将本地jQuery(在assets文件夹中)加载到远程加载的页面中.

经过长时间的浏览徒劳无功,我决定在这里提出这个问题.请帮忙.

谢谢!

jquery android webview android-webview

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

什么是统一更新模型?

GitHub上的这个Clojure代码指的是统一更新模型.

你能解释一下该fixing功能如何与统一更新模型配合良好吗?

(defn fixing
  "A version of fix that fits better with the unified update model: instead of multiple clauses,
   additional args to the transform function are permitted. For example,
   (swap! my-atom fixing map? update-in [k] inc)"
  [x pred transform & args]
  (if ((as-fn pred) x)
    (apply (as-fn transform) x args)
    x))
Run Code Online (Sandbox Code Playgroud)

functional-programming clojure

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

Python和文本操作

我想学习一种文本操作语言,我已经把它归结为Python.除文本操作外,Python还用于数字应用程序,机器学习,AI等.

我的问题是如何学习Python语言,以便我能够快速编写复杂的文本操作实用程序.除了"文本操作"上下文中的正则表达式之外,哪些语言特征比其他语言特征更重要,哪些模块是有用的等等.

python text

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

预处理程序指令的替代方案

我正致力于在Symbian平台上开发C++手机应用程序.其中一个要求是它必须在所有Symbian手机上工作,从第2版手机到第5版手机.现在,跨版本的Symbian SDK存在差异.我必须使用预处理程序指令来有条件地编译与构建应用程序的SDK相关的代码,如下所示:

#ifdef S60_2nd_ED
  Code
#elif S60_3rd_ED
  Code
#else
  Code
Run Code Online (Sandbox Code Playgroud)

现在,由于我正在开发的应用程序并不简单,它很快就会增长到成千上万行代码,并且像上面那样的预处理程序指令将遍布各地.我想知道有没有替代方案,或者在这种情况下使用这些预处理器指令可能是更好的方法.

请帮忙.

c++ c-preprocessor

6
推荐指数
3
解决办法
2162
查看次数

使用nasm和ld汇编/链接问题

我有一个用nasm编译的示例程序集文件:

nasm -f elf syscall.asm 
Run Code Online (Sandbox Code Playgroud)

这会生成一个syscall.o文件.我尝试将它与ld链接:

ld -o syscall syscall.o
Run Code Online (Sandbox Code Playgroud)

ld命令失败,并显示以下错误:

ld: i386 architecture of input file `syscall.o' is incompatible with i386:x86-64 output
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做

ld -o syscall syscall.o -melf_i386
Run Code Online (Sandbox Code Playgroud)

命令成功,我得到一个系统调用可执行文件.

弄清楚nasm没有生成x86-64格式的目标代码我在syscall.asm文件的开头添加了"BITS 64"指令.

然后尝试使用nasm组装syscall.asm会出现以下错误:

error: elf output format does not support 64-bit code
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,因为在我的终端上执行"file/usr/bin/nasm"会给出:

/usr/bin/nasm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
Run Code Online (Sandbox Code Playgroud)

我的64位Fedora Core 11安装了最新版本的nasm,我的CPU是Intel Core 2 Duo E7200.

[编辑]

我的问题是如何让nasm发出与i386兼容的目标文件:x86-64.

linux assembly linker x86-64 nasm

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

Ruby Eventmachine排队问题

我有一个用Ruby编写的Http客户端,可以对URL进行同步请求.但是,为了快速执行多个请求,我决定使用Eventmachine.我们的想法是将所有请求排队并使用eventmachine执行它们.

class EventMachineBackend
  ...
  ...
  def execute(request)
    $q ||= EM.Queue.new
    $q.push(request)
    $q.pop {|request| request.invoke}
    EM.run{EM.next_tick {EM.stop}}
  end
  ...
end
Run Code Online (Sandbox Code Playgroud)

原谅我使用全局队列变量.我稍后会重构它.我正在以EventMachineBackend#execute正确的方式使用Eventmachine队列吗?

我在实现中看到的一个问题是它本质上是同步的.我推送一个请求,弹出并执行请求并等待它完成.

任何人都可以建议更好的实施.

ruby queue eventmachine

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

XML解析问题

我有一个XML解析器崩溃不完整的XML数据.因此,提供给它的XML数据可能是以下之一:

<one><two>twocontent</two</one>

<a/><b/> ( the parser treats it as two root elements )
Run Code Online (Sandbox Code Playgroud)

元素属性也被处理(虽然上面没有显示).

现在,问题是当我从套接字I中读取数据时,我会在片段中获取数据.例如:

<one>one

content</two>

</one>
Run Code Online (Sandbox Code Playgroud)

因此,在将XML发送到解析器之前,我必须构造一个有效的XML并发送它.什么编程构造(如迭代,递归等)最适合这种情况.

我用C++编程.

请帮忙.

c++ xml

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

破坏后C++的行为

我有一个从套接字读取的对象,如下所示:

void CSocketReader::ReadComplete ( )
{
 messageProcessor->ResponseReceived ( response );
 read ();
}

void CSocketReader::read()
{
 socket.read(response);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,根据响应和我正在执行的协议,ResponseReceived方法可能导致删除CSocketReader对象.当ResponseReceived方法返回该指针所指向的对象时,该指针将被删除(但由于某些原因我不知道这个指针即使被删除后也不是NULL!).接下来执行read方法,程序在读取内崩溃.如何可靠地检测到已删除对象上正在执行的方法.

请帮忙.

c++

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