小编use*_*ser的帖子

在C#中使用AppDomain

App #mains在C#中最重要的用途是什么?

c# remoting appdomain

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

有没有办法弄清楚什么是使用Linux内核模块?

如果我加载内核模块并列出已加载的模块lsmod,我可以得到模块的"使用计数"(其他模块的数量与模块的引用).有没有办法弄清楚什么是使用模块?

问题是我正在开发的模块坚持它的使用计数为1,因此我不能用rmmod它来卸载它,但它的"by"列是空的.这意味着每次我想重新编译和重新加载模块时,我都必须重启机器(或者,至少,我无法找出任何其他方法来卸载它).

linux kernel kernel-module

69
推荐指数
3
解决办法
5万
查看次数

如何制作进程守护进程

我试图理解如何使我的程序成为守护进程.所以我遇到的一些事情通常,程序执行以下步骤来成为守护进程:

  1. 打电话fork( ).
  2. 在父母中,打电话exit( ).这可以确保原始父级(守护程序的祖父级)满足其子级终止,守护程序的父级不再运行,并且守护程序不是进程组领导者.最后一点是成功完成下一步的要求.

  3. 调用setsid( ),为守护进程提供一个新的进程组和会话,两者都将其作为领导者.这也确保了进程没有关联的控制终端(因为进程刚刚创建了一个新会话,并且不会分配一个).

  4. 通过将工作目录更改为根目录chdir( ).这样做是因为继承的工作目录可以在文件系统上的任何位置.守护进程倾向于在系统正常运行时间内运行,并且您不希望保持一些随机目录打开,从而阻止管理员卸载包含该目录的文件系统.

  5. 关闭所有文件描述符.

  6. 打开文件描述符0,1和2(标准输入,标准输出和标准错误)并将其重定向到/dev/null.
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/fs.h>

int main (void)
{
    pid_t pid;
    int i;

    /* create new process */
    pid = fork ( );  
    if (pid == -1)  
        return -1;  
    else if (pid != 0)  
        exit (EXIT_SUCCESS);  

    /* create new session and process group */  
    if (setsid ( ) == -1) …
Run Code Online (Sandbox Code Playgroud)

c linux daemon systems-programming

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

找到表示行方式排序矩阵中最小整数的行

在最近的Java电话采访中我被问到这个问题:

您将获得具有以下属性的NxN二进制(0-1)矩阵:

  • 每行都排序(序列为0,后跟1的序列)
  • 每行代表一个无符号整数(通过读取位)
  • 每行都是独一无二的

例:

0 1 1
1 1 1
0 0 1
Run Code Online (Sandbox Code Playgroud)

每行中的位值被排序,行表示整数3,7和1.

找到表示最小整数的行.在上面的示例中,答案是第3行,它表示整数1.

我从二次复杂的蛮力开始.采访者回答说我没有利用排序的财产.

在思考了很多之后,我在每一行都使用了二元搜索,然后它来到了O(nlogn).他问我是否可以进一步改进.我想了很多但没有改进.

如果有人能提出任何关于改进它的指示,我将不胜感激.

另一个例子:

0 1 1 1
0 0 0 1
0 0 0 0
1 1 1 1
Run Code Online (Sandbox Code Playgroud)

答案是第3行,代表整数0.

language-agnostic arrays algorithm matrix

65
推荐指数
5
解决办法
4859
查看次数

C++中的64位ntohl()?

手册页htonl()似乎暗示您只能将其用于最多32位值.(实际上,ntohl()定义为无符号长整数,在我的平台上是32位.我想如果无符号长整数是8个字节,它将适用于64位整数).

我的问题是我需要将64位整数(在我的例子中,这是一个无符号长long)从big endian转换为little endian.现在,我需要进行特定的转换.但ntohl()如果目标平台WAS大端,如果函数(如)不会转换我的64位值,它会更好.(我宁愿避免添加我自己的预处理器魔法来做到这一点).

我可以用什么?如果它存在,我想要标准的东西,但我愿意接受实施建议.我在过去使用过工会看过这种类型的转换.我想我可以拥有一个带有unsigned long long和char [8]的联合.然后相应地交换字节.(显然会在大端的平台上破解).

c++ linux 64-bit endianness

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

F#开源项目

我正在寻找一些可供学习的开源F#项目.有些东西不是片段,而是完整的项目,它们是F#特征的良好代表(即模式匹配,有区别的联合等).

我的目标主要是看看所有功能如何组合在一起,项目如何组织以及如何从功能角度解决问题.

f# open-source

56
推荐指数
3
解决办法
9921
查看次数

事件不是字段 - 我不明白

C#深度(迄今为止一本优秀的书)中,Skeet解释事件不是字段.我多次阅读本节,我不明白为什么这种区别有所不同.

我是那些混淆事件和委托实例的开发人员之一.在我看来,它们是一样的.这两种都不是间接的形式吗?我们可以组播两者.事件被设置为字段作为简写...确定.但是,我们正在添加或删除处理程序.将它们堆叠起来以便在事件触发时调用.我们不要对委托做同样的事情,叠加它们并调用invoke吗?

c# events field

52
推荐指数
4
解决办法
3459
查看次数

为什么浮点变量在C#中停止递增到16777216?

float a = 0;
while (true)
{
    a++;
    if (a > 16777216)
        break; // Will never break... a stops at 16777216
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么浮点值在此代码中停止递增16777216?

编辑:

或者更简单:

float a = 16777217; // a becomes 16777216
Run Code Online (Sandbox Code Playgroud)

c# floating-point

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

Waitpid相当于超时?

想象一下,我有一个启动多个子进程的进程.父母需要知道孩子什么时候退出.

我可以使用waitpid,但是如果/当父需要退出时,我无法告诉阻塞的线程waitpid优雅地退出并加入它.让事情自己清理是件好事,但这可能不是什么大不了的事.

我可以用waitpidWNOHANG,然后睡了一段任意时间,以防止忙等待.然而,我只能知道一个孩子是否经常退出.在我的情况下,我知道孩子何时立即离开可能不是超级关键,但我想尽快知道...

我可以使用信号处理程序SIGCHLD,并在信号处理程序中执行当子项退出时要执行的任何操作,或者将消息发送到其他线程以执行某些操作.但是使用信号处理程序会稍微混淆代码流.

我真正想做的是使用waitpid一些超时,比如5秒.由于退出进程不是一个时间关键的操作,我可以懒惰地发出线程信号退出,同时仍然在waitpid其余时间阻塞它,随时准备做出反应.在linux中有这样的调用吗?在替代方案中,哪一个最好?


编辑:

基于回复的另一种方法是SIGCHLDpthread\ 来阻塞所有线程_sigmask().然后在一个线程中,sigtimedwait()一边寻找一边打电话SIGCHLD.这意味着我可以超时调用并检查线程是否应该退出,如果没有,则保持阻塞状态等待信号.一旦a SIGCHLD被传递到这个线程,我们可以立即对它做出反应,并且在等待线程的行中,不使用信号处理程序.

c c++ linux

47
推荐指数
5
解决办法
3万
查看次数

我什么时候应该在C#中使用属性?

我看到了一些有用属性的例子,例如(作为动态工厂的地图) http://msdn.microsoft.com/en-us/magazine/cc164170.aspx

只是想知道使用属性有什么好处?我可以在http://msdn.microsoft.com/en-gb/z0w1kczw(VS.80).aspx上找到参考资料 但是,我不知道何时以及为什么要尝试使用它.

c# attributes

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