小编Oli*_*rth的帖子

通过一次遍历获取单向链表中的随机元素

我有一个方向链表而不知道它的大小.

我想在这个列表中得到一个随机元素,我只有一次机会遍历列表.(我不允许遍历两次或更多次)

这个问题的算法是什么?谢谢!

random algorithm traversal

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

使用salt的Java AES加密

好吧,原来我在加密/解密时很糟糕.我只是不明白.我怎样才能使Java加密String message1 = "hello world";String salt = "mySalt";使用AES加密?加密后如何解密?

如果你有时间提供最基本的代码,它会对我有很大的帮助.

另外一个关于AES加密的一般问题,使用相同的盐,同一条消息总是会有相同的加密吗?

提前致谢.

java encryption aes salt

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

C++ typedef枚举,只是枚举

究竟有什么区别:

typedef enum {
  something1,
  something2,
  .....
  somethingN
} myEnum;
Run Code Online (Sandbox Code Playgroud)

结束了

enum myEnum{
  something1,
  something2,
  .....
  somethingN
};
Run Code Online (Sandbox Code Playgroud)

我知道在第一种情况下我有typedefed未命名的枚举,当然,只是想知道哪种方法更好,为什么?

c++ typedef

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

链接器脚本中的Make或Shell变量

链接器脚本是否可以访问makefile/shell变量并根据所述变量做出决定?

例如,假设我想在不使用不同的链接描述文件的情况下更改下面RAM区域的开头,是否可以使用make变量来执行此操作?

MEMORY
{
ifeq ($(SOME_VAR),0)
RAM (wx) : ORIGIN = 0x100000, LENGTH = 128K
else
RAM (wx) : ORIGIN = 0x200000, LENGTH = 128K
endif
}
Run Code Online (Sandbox Code Playgroud)

linker makefile

9
推荐指数
2
解决办法
1746
查看次数

将终端光标返回到启动包装的行首

我正在编写一个过滤器(在一个用于终端输出的管道中),有时需要"覆盖"刚刚发生的一行.它的工作原理是将stdin逐个字符传递给stdout直到\n达到a,然后调用特殊行为.我的问题是如何回到行的开头.

我想到的第一件事是使用一个\r或ANSI序列\033[1G.但是,如果该行足够长以包裹在终端上(因此导致它滚动),这些只会将光标移回当前物理行.

我的第二个想法是跟踪线的长度(自上一次以来传递的字符数\n),然后\b多次回显.但是,如果该行包含控制字符或转义序列(可能还有Unicode?),则会出错.

如果没有搜索所有特殊序列并使用它来调整我的字符数,是否有一种简单的方法可以实现这一目标?

c linux terminal pipe c89

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

如果成员函数影响逻辑状态,而不是按位状态,那么它们应该是"const"吗?

我正在编写一个包含控制硬件设备的传统C API的类.在一个简化的例子中,我可能有类似的东西:

class device
{
public:
    void set_request(int data) { legacy_set_req(p_device, data); }
    int get_response() const   { return legacy_get_rsp(p_device); }
private:
    device_handle_t *const p_device;
};
Run Code Online (Sandbox Code Playgroud)

这个类本身没有按位状态; 因此,我可以选择声明set_request()const,编译器会对此感到满意.但是,从语义的角度来看,这是否是正确的方法,因为它会影响对象的可观察行为?(即,包封的硬件设备非常确实有状态).

c++ const

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

用ISBN查找书名

有没有使用其ISBN号查找书名称的免费方式?我知道有isbndb.com,但他们限制你每天500次仰视.另外我注意到有Google Books API,谷歌图书有限制吗?

lookup title isbn

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

如果未初始化的变量的值不应该影响表达式的值,它仍然是UB吗?

这是讨论的后续内容,我认为这应该是一个自己的问题.

基本上,这是未定义的结果吗?

int x;
int y = 1 || x;
Run Code Online (Sandbox Code Playgroud)

这里有两个"常识"论点:

  1. 从数学上讲,无论价值是多少x,价值都y应该是1.
  2. 由于短路,x无论如何都从未进行过评估.

但反驳的是,我们有一个表达涉及一个未初始化的变量,所以所有的赌注都是关闭的(理论上).

更一般地说,如果未初始化变量的值不可能影响表达式的结果,那么它是否"安全"?例如:

int x;
int y = x - x;
Run Code Online (Sandbox Code Playgroud)

通常的免责声明:当然,我不是在提倡编写这样的代码.

c initialization undefined-behavior

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

如何为内核模块makefile添加包含路径

如何为内核模块makefile添加包含路径?我想在test_module.c中包含"test_kernel.h"."test_kernel.h"驻留在其他目录"inc"中我在Makefile中的以下解决方案中尝试但是它不起作用:

obj-m += test_module.o

test_module:
    $(MAKE) -C "$(LINUX_DIR)" -Iinc $(MAKE_OPTS) modules
Run Code Online (Sandbox Code Playgroud)

c makefile linux-kernel

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

为什么密码哈希对于具有相同密码的2个用户是不同的?

我正在使用rails,我注意到我的password_digest对于2个用户而言是不同的,除了密码摘要之外的所有其他字段都不同.但我使用相同的密码"abcd"两个..
它最终生成这两个不同的哈希

  1. $2a$10$QyrjMQfjgGIb4ymtdKQXI.WObnWK0/CzR6yfb6tlGJy0CsVWY0GzO
  2. $2a$10$dQSPyeQmZCzVUOXQ3rGtZONX6pwvnKSBRmsLnq1t1CsvdOTAMQlem

我以为bcrypt gem只根据密码字段生成哈希!我错了吗?谢谢 :)

bcrypt ruby-on-rails-3.1

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