小编0x9*_*x90的帖子

如何确定是否从Linux命令行打开LCD监视器

如何判断计算机的显示器是否在Linux中从命令行打开/关闭?我传统上认为监视器只是输出设备,但我注意到Gnome Monitor Preferences对话框有一个"detect monitor"功能.是否可以推广以确定显示器是否已实际关闭?

linux shell command-line

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

如何使用git log --graph --on - 只为我的本地分支?

我想看看我所有的本地分支机构,但没有远程跟踪参考 origin/master

这个命令向我展示了一个装饰着我所有本地和远程跟踪分支的漂亮图表:

git log --oneline --graph --decorate --all
Run Code Online (Sandbox Code Playgroud)

我应该在此命令中添加/删除哪个标志以仅显示本地分支?

git

21
推荐指数
2
解决办法
6105
查看次数

共享库(.so)如何调用在其加载程序中实现的函数?

我有一个我实现的共享库,并希望.so调用一个在加载库的主程序中实现的函数.

假设我有main.c(可执行文件),其中包含:

void inmain_function(void*);
dlopen("libmy.so");
Run Code Online (Sandbox Code Playgroud)

在my.c(libmy.so的代码)中我想调用inmain_function:

inmain_function(NULL);
Run Code Online (Sandbox Code Playgroud)

inmain_function无论inmain_function在主程序中定义了什么,共享库如何调用.

注意:我想从my.c中调用main.c中的符号而不是反之亦然,这是常见的用法.

c linux gcc shared-libraries

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

未排序数组中最长的连续序列

您将获得一个数字数组,它们是未分类/随机顺序.您应该在阵列中找到最长的连续数字序列.请注意,序列不需要在数组中按排序顺序排列.这是一个例子:

输入:

A[] = {10,21,45,22,7,2,67,19,13,45,12,11,18,16,17,100,201,20,101}  
Run Code Online (Sandbox Code Playgroud)

输出是:

{16,17,18,19,20,21,22}  
Run Code Online (Sandbox Code Playgroud)

解决方案需要具有O(n)复杂度.

我被告知解决方案涉及使用哈希表,我确实遇到了几个使用2个哈希表的实现.人们无法对此进行排序和解决,因为排序将需要O(nlgn),这不是所期望的.

c# python algorithm

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

awk脚本中的$ 0和$ 1(美元符号0或1)是多少?

awk:

 1  tolower($1) ~ /mary/ { print "CI Record: " $0; }
 2  $0 !~ /Mary/ { print "Not Mary: " $0; }
 3  $1 == "Mary" { print "Mary Record: " $0; }
Run Code Online (Sandbox Code Playgroud)

为什么13比较$1,并2使用$0

linux awk

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

为什么这段代码能让我检测调试器?

为什么以下汇编代码是反调试工具?

l1:
call l3
l2:
;some code
l3:
mov al, 0c3h
mov edi, offset l3
or ecx, -1
rep stosb
Run Code Online (Sandbox Code Playgroud)

我知道C3hRETN,我知道根据偏移量stobs将值al作为操作码写入,edi并且ecx因为时间而完成rep.

我也知道的事实,stobsstosw会如果他们是基于英特尔架构的预取为原来的形式进行.

如果我们以调试模式运行程序,预取是无关紧要的,并且l2标签将运行(因为它是单步)否则如果没有调试器它将在l1和l3之间打乒乓我对吗?

windows debugging x86 assembly reverse-engineering

16
推荐指数
1
解决办法
672
查看次数

为什么中位数算法算法被描述为使用O(1)辅助空间?

维基百科将中位数中值算法列为需要O(1)辅助空间.

但是,在算法的中间,我们对一个大小的子数组进行递归调用,n/5以找到中位数的中位数.当这个递归调用返回时,我们使用返回的中位数中值作为分区数组的轴.

此算法是否将O(lg n)激活记录作为递归的一部分推送到运行时堆栈?从我所看到的,这些递归调用以找到连续的中位数中位数不能被尾调用优化,因为我们在递归调用返回后做了额外的工作.因此,似乎这个算法需要O(lg n)辅助空间(就像Quicksort,O(lg n)由于运行时堆栈使用的空间,维基百科列为需要辅助空间).

我错过了什么,或维基百科文章错了吗?

(注意:我所指的递归调用是return select(list, left, left + ceil((right - left) / 5) - 1, left + (right - left)/10)在维基百科页面上.)

algorithm recursion space-complexity median-of-medians

16
推荐指数
1
解决办法
1827
查看次数

内核如何知道当前线程是什么?

有人可以解释一下这里从linux内核获取的这段代码吗?

/*
  * how to get the thread information struct from C
 */
 static inline struct thread_info *current_thread_info(void) __attribute_const__;

 static inline struct thread_info *current_thread_info(void)
 {
        register unsigned long sp asm ("sp");
        return (struct thread_info *)(sp & ~(THREAD_SIZE - 1));
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 是什么 __attribute_const__
  2. 这是做什么的 register unsigned long sp asm ("sp");
  3. 为什么(struct thread_info *)(sp & ~(THREAD_SIZE - 1));返回指向结构的指针?

c kernel arm linux-kernel

15
推荐指数
2
解决办法
4560
查看次数

如何以可读的方式重写excel公式?

我有这样一个公式的Excel文件:

=IF(OR(ISERROR(G16),ISERROR(G17)),X16,IF(OR(G16="xxx",G16="yyy",G16="zzz"),Y16,IF(G16="333","N\A",IF(G17="333",Z16,IF(D17="",IF((HEX2DEC(W$10)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)<0,0,(HEX2DEC(W$10)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)), IF((HEX2DEC(W17)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)<0,0,(HEX2DEC(W17)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)))))))

我想简化它们,以便以更易读的方式编写.

  • 我可以缩进的方式编辑/编写Excel公式吗?
  • 我可以做什么样的简化?
  • 我应该使用VBA脚本而不是Excel的公式吗?

excel vba excel-vba excel-formula

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

Linux内核 - 为什么System.map中的函数地址是实时看到的地址之前的一个字节?

在linux内核源代码中,在tasklet_action代码中添加了这一行:

printk("tasklet_action = %p\n" , *tasklet_action);
printk("tasklet_action = %p\n" , &tasklet_action);
printk("tasklet_action = %p\n" , tasklet_action);
Run Code Online (Sandbox Code Playgroud)

在输出中我得到:

tasklet_action = c03441a1
tasklet_action = c03441a1
tasklet_action = c03441a1
Run Code Online (Sandbox Code Playgroud)

但是当在system.map文件中搜索时,tasklet_action地址就是c03441a0这样,有一个1字节的偏移量.

  • 为什么我有这个偏移?
  • 它总是一个字节的偏移量?

c linux arm function-pointers linux-kernel

14
推荐指数
1
解决办法
1713
查看次数