小编mkr*_*er1的帖子

VHDL 中的随机值生成器每次返回相同的值

我正在尝试为 VHDL 测试平台生成一些随机值(仅 1 和 0)。我尝试过以下代码:

impure function rand_int(min_val, max_val : integer) return integer is
  variable r : real;
  variable seed1, seed2 : integer := 999;
begin
  uniform(seed1, seed2, r);
  return integer(round(r * real(max_val - min_val + 1) + real(min_val) - 0.5));
end function;
Run Code Online (Sandbox Code Playgroud)

但它似乎只给出 1,而不是 0。我哪里做错了?

random function vhdl

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

状态机生锈了?

在 C 系列语言中,我通常将状态机实现为一系列 if else 语句和枚举,其中 if 语句检查机器处于哪个状态,并且主体执行状态转换,例如:

if(current_left_state == GLFW_PRESS && !left_pressed)
{
    left_pressed = true;
    return MouseInputState::LEFT_DOWN;
}
if(current_left_state == GLFW_PRESS && left_pressed)
{
    left_pressed = true;
    return MouseInputState::LEFT_DRAG;
}
if(current_left_state == GLFW_RELEASE && left_pressed)
{
    left_pressed = false;
    return MouseInputState::LEFT_UP;
}
if(current_right_state == GLFW_PRESS && !right_pressed)
{
    right_pressed = true;
    return MouseInputState::RIGHT_DOWN;
}
Run Code Online (Sandbox Code Playgroud)

Rust 有很多惯用的糖,这很好,我想知道是否有一种方法可以使用 Rust 的语法糖来制作更干净的状态机。

就像,一定有比这更好的方法:

MouseState::NoAction =>
{
    if *button == glfw::MouseButtonLeft && *action == glfw::Action::Press
    {
        return MouseState::LeftDown;
    }
    if *button == glfw::MouseButtonRight …
Run Code Online (Sandbox Code Playgroud)

syntax state-machine rust

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

嵌套理解:列表列表到单元素字典

我有一个清单。我正在尝试将其转换为字典,其中键是子列表的 n 元素,值是列表的第一个元素。我能够使用循环实现预期结果,但我正在寻找一种更优雅的方式来编写它,例如使用列表理解

array = [
    [1, 2, 3],
    [5, 4, 8]
]

out = {}
for x in array:
    y = x[0]
    z = x[1:]
    for k in z:
        out[k] = y 
Run Code Online (Sandbox Code Playgroud)

结果:

out = {
   2 : 1,
   3 : 1,
   4 : 5,
   8 : 5
}
Run Code Online (Sandbox Code Playgroud)

python dictionary list-comprehension

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

(root) 不允许附加属性应用程序

这是docker-compose.yml,直到今天我才收到此错误。我没有触及 .yml,当我从 Docker 应用程序运行它时,服务器照常运行。

app:
  build: .
  command: python -u app.py
  ports:
    - "5000:5000"
  volumes:
    - .:/app
  links:
    - db
db:
  image: mongo:latest
  hostname: dsairline_mongodb
  environment:
    - MONGO_INITDB_DATABASE=ds_airline_db
    - MONGO_INITDB_ROOT_USERNAME=root
    - MONGO_INITDB_ROOT_PASSWORD=pass
  volumes:
    - ./init-db.js:/docker-entrypoint-initdb.d/init-db.js:ro
  ports:
    - 27017:27017
Run Code Online (Sandbox Code Playgroud)

python flask docker

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

为什么两个不同创建但相等的列表在 sys.getsizeof 中存在差异?

我定义了两个列表,如下所示:

import sys
lst = list(range(1, 10, 1))
llst = ([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(sys.getsizeof(llst), sys.getsizeof(lst))
Run Code Online (Sandbox Code Playgroud)

这是我看到的输出:

152 128

当两个列表看起来具有相同数量的元素时,为什么它们的大小存在差异?

我在 Windows 11 上使用 Python 3.10.5。

python list python-3.x

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

用 C++ 安全地写入文件

假设您有一个 txt 文件,它当前包含重要的内容。目前内容是这样的

"I like blue cats and yellow dogs."
Run Code Online (Sandbox Code Playgroud)

但你想更新上述内容。

std::ofstream myFile;
myFile.open("file.txt");
myFile << "I like " << catColorStr << " cats and " << dogColorStr << " dogs.";
myFile.close();
Run Code Online (Sandbox Code Playgroud)

但是,假设由于某种原因,您的程序在第二行和第三行之间崩溃,或者可能是用户断电,或者他们在 Windows 任务管理器中使用了结束进程等。那么您刚刚删除了 file.txt 的全部内容。您通常如何考虑这一点?

处理此问题的典型方法是将其以只读方式打开,将内容复制到您的程序中。然后将其复制到新的临时文件或其他文件中。然后写入您的实际文件,如果成功删除您的临时文件,否则在启动时您会说您的实际文件=您的临时文件?

c++ file-handling

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

数组 B 是数组 B 函数的反转版本吗

我需要指导来理解我的逻辑在哪里不起作用。我需要编写一个递归函数,从用户输入接收数组 A 和数组 B。该函数正在检查数组是否颠倒。例如:A = {1, 4, 6, 7, 5, 3, 2},B = {2, 3, 5, 7, 6, 4, 1} 该函数将返回 1。如果它们不颠倒,该函数将返回 0。数组的大小无关紧要,因为 A 和 B 都相同。当我运行程序时,无论输入是什么,结果都是 0,即使输入正确(B 是相反的) A)。

int areReversed(int* A, int* B, int n)
{
    if (n <= 0) return 1; // all elements have been compared and are equal

    // Compare first element of array A and last element of array B
    if (A[0] != B[n - 1])
        return 0; // elements are not …
Run Code Online (Sandbox Code Playgroud)

c arrays recursion function

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

“放弃所有更改”和“隐藏所有更改”之间有什么区别?

我想撤消该命令npm create vite@latest。我想恢复我的更改,但它们不会出现在 git log 中或被保存。

在 Visual Studio Code 的“源代码管理”选项卡中,未暂存的更改顶部有两个按钮,当您将鼠标悬停在它们上方时会出现这些按钮:

在此输入图像描述

悬停时有人说:

在此输入图像描述

另一则写道:

在此输入图像描述

它们之间有什么区别?

如何使用 Git CLI 复制他们的行为?

git command-line-interface visual-studio-code

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

我可以用“match”的结果设置一个变量吗?

使用 a 设置变量match可以像这样简单地完成:

Mode = 'fast'
puts = ''
match Mode:
    case "slow":
        puts = 'v2 k5'
    case "balanced":
        puts = 'v3 k5'
    case "fast":
        puts = 'v3 k7'
Run Code Online (Sandbox Code Playgroud)

但你能做这样的事情吗?

Mode = 'fast'
puts = match Mode:
    case "slow": 'v2 k5'
    case "balanced": 'v3 k5'
    case "fast": 'v3 k7'
Run Code Online (Sandbox Code Playgroud)

目前它会导致语法错误。

python

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

如何减少 PIC 单片机 C 代码中的代码重复?

我正在使用 PIC 微控制器进行串行通信项目。我使用CCS C For PIC作为编程软件。该代码现在运行良好,但我想提高我的编程技能(我是初学者)。尤其是这些if言论让我感到困扰。因为它们的数量太多了。我该如何改进这个?

#define bt1 pin_a0
#define bt2 pin_a1
#define bt3 pin_a2
#define bt4 pin_a3
#define bt5 pin_a4
#define bt6 pin_c0
#define bt7 pin_c1
#define bt8 pin_c2
#define bt9 pin_c3
#define bt10 pin_c4
#define bt11 pin_d0
#define bt12 pin_d1
#define bt13 pin_d2
#define bt14 pin_d3
#define bt15 pin_d4
#define enable pin_c5
#define tx pin_c6
#define rx pin_c7

#int_rda
void rda_isr(void)
{
  disable_interrupts(int_rda);
  output_high(pin_d7);
}

void main()
{
  set_tris_a(0xFF);
  set_tris_b(0x00);
  set_tris_c(0xFF);
  set_tris_d(0xFF);
  set_tris_e(0x00);

  output_high(tx); …
Run Code Online (Sandbox Code Playgroud)

c microcontroller pic

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