我需要对下面的关键代码进行同行评审.
此类维护一个可运行的objets队列,并确保它们按顺序执行,即在前一个完成后启动一个新的,直到队列中没有其他任务为止.
我很确定它确实如此,但我必须绝对确定它的行为是有意的.
非常感谢 !
public final class RunnableQueue {
private final ExecutorService m_executorService;
private final Queue<Runnable> m_runnables;
private final Runnable m_loop;
public RunnableQueue(ExecutorService executorService) {
m_executorService = executorService;
m_runnables = new LinkedList<Runnable>();
m_loop = new Runnable() {
public void run() {
Runnable l_runnable = current();
while(l_runnable != null) {
l_runnable.run();
l_runnable = next();
}
}
};
}
private Runnable current() {
synchronized (m_runnables) {
return m_runnables.peek();
}
}
private Runnable next() {
synchronized (m_runnables) {
m_runnables.remove();
return m_runnables.peek();
} …Run Code Online (Sandbox Code Playgroud) 我在C中有一个双重链接列表,我对如何释放它感到困惑.我知道我必须遍历列表释放每个节点.混淆的地方在于我的每个节点都有一个指向其他数据的指针,我不确定如何释放它.
我的双重链表看起来像这样:
typedef struct Node_ Node;
typedef struct List_ List;
struct Node_ {
void *data;
Node *next;
Node *prev;
};
struct List_ {
Node *firstNode;
Node *lastNode;
};
Run Code Online (Sandbox Code Playgroud)
为了释放列表,我创建了一个名为List_free()的函数,该函数遍历列表,使用Node_free()释放每个节点.这些函数看起来像这样:
void *List_free(List *list)
{
Node *next = list->firstNode;
while(next)
{
Node *node = next;
next = node->next;
Node_free(node);
}
free(list);
}
void Node_free(Node *node)
{
free(node->data);
free(node);
}
Run Code Online (Sandbox Code Playgroud)
这将导致其失败的地方是node-> data是指向另一个结构的指针,该结构本身包含指针.在我的例子中,我使用相同的列表代码来存储两个不同的结构.
我看到它的方式我有以下选择:
我是在思考正确的方向还是错过了一些明显的东西?这是我第一次尝试C,所以如果这完全错了,我不会感到惊讶.
在Visual Studio 2010中,您可以获得有关扩展更新的自动通知.我不想被通知.有没有办法禁用该功能?
我们有一个包含很长字符串的变量的单元测试.
问题是如何在代码中编写它,没有换行问题或代码难以阅读.
在VB中有一个行继续字符,在C#中是否存在等价物?
我有以下代码用于检查我的应用程序上的互联网连接wifi/EDGE/GPRS/3G.
代码是
public static boolean checkConn(Context ctx) {
ConnectivityManager conMgr = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) {
return true;
} else if (conMgr.getNetworkInfo(0).getState()==NetworkInfo.State.DISCONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED){
return false;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我打电话给它如下:
if (CheckInternet.checkConn(introPage.this) == true) {
Intent toMainPage = new Intent(introPage.this, mainPage.class);
System.gc();
startActivity(toMainPage);
} else if (CheckInternet.checkConn(getApplicationContext()) == false) {
Toast.makeText(getApplicationContext(),
"Sorry, No internet connectivity found", Toast.LENGTH_SHORT)
.show();
}
Run Code Online (Sandbox Code Playgroud)
但我有一个问题,那就是如果我连接到wifi,我打开应用程序,它工作正常,但如果我关闭应用程序并关闭wifi并重新打开应用程序,它不会通过错误"没有连接",我需要关闭我的设备,然后打开它,同样的情况是如果wifi关闭,我打开应用程序,它会抛出"无连接"的错误,如果我打开它,仍然它抛出"无连接"的相同错误,除非我关闭并打开设备.
我必须将一个Django应用程序部署到SuSE Linux Enterprise 11系统上.公司规则说我只需要使用RPM进行部署.虽然我可以使用./setup.py bdist_rpm每个依赖项,但它并不是真正理智,因为RPM还没有记录所有依赖项.因此,我没有使用RPM的真正优势,手动管理依赖项有点麻烦,我想避免它.
现在我有了以下想法:在构建软件包时,我可以创建一个virtualenv,通过pip那里安装所有依赖项,然后将其余的代码打包到一个固态RPM中.
这种方法有多明智?
我将开发一个Android应用程序,通过WiFi传输音乐文件,联系人交换,语音聊天,文本聊天等.哪种协议适合我的应用程序UDP或TCP.因为这两个协议都有一些优点和缺点.你能给我一些建议吗,这对我有帮助..
提前致谢
我有代码在文件中找到特定的文本出现并给我一个偏移量,所以我知道这个出现的结果.现在我想从该偏移量到文件末尾读取文件.该文件包含二进制数据和文本.我如何在Erlang中执行此操作?
我的项目安装完全正常,直到昨天,但今天我的安装卡在以下,
Apache Maven 2.2.1(r801777; 2009-08-06 20:16:01 + 0100)
Java版本:1.6.0_20
[INFO] Surefire report directory: C:\Perforce\project-name\target\surefire-reports
基本上在此行之后,安装根本不进行.有什么想法吗?
我是一个非常有经验的Ruby,Objective C和Java程序员,我正在观看关于emacs的视频(因为我一直在使用Vi),并注意到它也是一个LISP解释器.这激起了我的兴趣,并提出了一个有趣的问题:对于那些了解现代高级语言(如Ruby,Java和Objective C)的人来说,学习LISP有什么实际好处吗?我是否可以通过留出一些时间学习LISP来获得任何收益?我想听听你们有什么要说的.谢谢.
android ×2
java ×2
c ×1
c# ×1
connection ×1
deployment ×1
django ×1
erlang ×1
free ×1
lisp ×1
maven-2 ×1
memory ×1
pip ×1
rpm ×1
virtualenv ×1