小编Its*_*mmy的帖子

处理由C FFI强制执行的有问题的父子关系

我有一个C库,其接口类似于:(我已经在Rust中代表了C API,因此这个问题中的所有代码都可以在一个.rs文件中连接并轻松测试)

// Opaque handles to C structs
struct c_A {}
struct c_B {}

// These 2 `create` functions allocate some heap memory and other 
// resources, so I have represented this using Boxes.
extern "C" fn create_a() -> *mut c_A {
    let a = Box::new(c_A {});
    Box::into_raw(a)
}

// This C FFI function frees some memory and other resources, 
// so I have emulated that here.
extern "C" fn destroy_a(a: *mut c_A) {
    let _a: Box<c_A> = …
Run Code Online (Sandbox Code Playgroud)

ffi lifetime rust

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

C等效于Java静态块(启动时运行一次)

我在C++中找到了很多关于这个问题的答案,但我对C非常感兴趣.

我在C中有一个循环链表,我想在第一次访问它之前用虚拟标头节点初始化它.虚头节点是静态分配的全局变量.这是我目前的解决方案:

static once = 1;
if(once){
    once = 0;
    // Setup code
}
Run Code Online (Sandbox Code Playgroud)

这有效,但我必须将它放在使用此链表的每个函数中.(当然,我可以将这段代码放在自己的函数中,所以我只需要在其他所有函数中调用该函数,但这不是更好)有没有更好的方法?例如,如果我有以下结构:

struct node {
    int value;
    struct node *next;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法初始化其中一个结构作为文字,这样它的next价值指向自己?

通过"初始化为文字",我的意思是:(请原谅我可能不正确的术语)

struct test {
    int i;
    double d;
};

struct test magic = {1, 2.3}; // This can just be done at the top of the c file, outside of any functions

int someFunction(){...}
Run Code Online (Sandbox Code Playgroud)

c static

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

洗牌清单,但只是轻微一点

在Python中,我希望以一种方式对列表进行洗牌,使得每个元素最终不会超过N它开始的元素,其中N是一个常量.另外,我希望这是公平的.也就是说,满足此约束的每个排列应该是同等可能的(在随机数生成器的实际限制内).

例如,如果N是3,输入是[1, 2, 3, 4, 5, 6],那么结果[2, 1, 3, 6, 4, 5]将是有效的,但[6, 4, 1, 3, 5, 2]不会,因为6和2离它们的起始位置太远.

有没有一种简单的方法在Python中执行此操作?如果没有,是否有一些现有算法可以做到这一点?伪代码很好,如果需要我可以在Python中实现它.

运行时并不是非常重要,因为我每隔几分钟就会在~100k元素上运行一次这样的shuffle,所以如果有必要,我可以等待几秒钟让它运行.

python random algorithm shuffle list

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

CSS将圆角设为半径为百分比的圆

我想为我的图像添加圆角.它们是Bootstrap 4响应式图像(有了这个类img-fluid),所以我不想使用类似的东西border-radius=15px,因为如果图像变得非常小(在一个小视口上),圆角会占据大部分图像,当图像非常大时,四舍五入几乎不可能.

我可以使用border-radius=15%;,但如果我的图像不是正方形,圆角是椭圆形而不是圆形.我可以解决这个问题border-radius=15%/10%;,但是我必须调整这个比例以匹配每个单独图像的宽高比.

有没有办法绕过Bootstrap 4响应图像的角落,这样圆角总是圆形的,并且无论图像的纵横比如何,图像宽度或高度的比例总是相同的?

我更喜欢用CSS做这件事.我可以使用Javascript来完成它,但是在这个应用程序中我只会有三种不同的图像宽高比,所以创建三个不同的类会更容易.

css css3 twitter-bootstrap bootstrap-4

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

如果前32个中断是为异常保留的,定时器中断怎么能是0x08?

我正在为intel i386开发一个嵌入式程序,我正在试图弄清楚如何使用硬件计时器.我在这里(以及其他地方)读过定时器中断是0x08,但是这个页面(和其他各种来源)说前32个中断是为异常保留的,而中断0x08特别是用于双重故障​​.这是真的吗?如何在没有操作系统调用的情况下使用程序集或非常低级别的C设置定时器中断处理程序?

我正在开发一个简单的操作系统来学习操作系统开发,所以我无法访问任何类似Linux或系统调用的内容(除非我自己实现系统调用.但是创建一个完全符合POSIX的操作系统远远超出了范围这个项目,所以我宁愿坚持简单,如果有点hacky,解决方案).

如果重要的话,我在QEMU上运行它,而不是实际的物理i386.

assembly operating-system interrupt i386

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

supertrait 的默认实现

我有一个特征 ,MyGoodTrait具有函数label(&self) -> &str。我希望 的每个实现者MyGoodTrait也实现DisplayFromStr。然而,我并不一定需要DisplayFromStr成为 的超特质MyGoodTrait。我宁愿以某种方式拥有Displayand的默认实现FromStr,它将在内部使用label来自 的函数MyGoodTrait。这样,每个实现者都MyGoodTrait将“免费”获得DisplayFromStr就好像这些特征有一个默认实现一样。

这是一个与我想要做的类似的示例,但它无法编译:

use std::str::FromStr;

pub trait MyGoodTrait {
    fn new() -> Self;

    fn label(&self) -> &'static str;
}

impl FromStr for dyn MyGoodTrait {
    type Err = String;

    fn from_str(s: &str) -> Result<Self, Self::Err> {
        Ok(Self::new())
    }
}

pub struct A {}

impl MyGoodTrait …
Run Code Online (Sandbox Code Playgroud)

traits rust

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

在Tensorflow中为两个张量中的每对元素应用函数

Tensor在第二维上有两个rank-2 ,大小相等,但在第一维上不相等。例如,张量A形状的[a, n]和张量B形状的[b, n]。可以将它们视为包含length矢量的两个数组n

我有一个函数f,需要两个输入,每个输入为shape的张量[n],并返回一个标量。我想在此函数应用到每个对矢量AB与所述结果是一个张量C形状的[a, b],使得对于每个位置(i, j)CC[i, j] = f(A[i], B[j])

如果这些只是常规的Numpy数组,我可以使用以下代码完成此操作:

# Assume a, b, and n are integers, and A and B are Numpy arrays
C = numpy.zeros((a, b))
for i in range(0, a):
    for j in range(0, b):
        C[i, j] = f(A[i], B[j])
return C
Run Code Online (Sandbox Code Playgroud)

如果这可以通过f …

python linear-algebra tensorflow

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

Flutter:按下系统后退按钮时将结果添加到导航器

在我下面的示例应用程序中,我有两条路线:HomeRouteOtherRoute. OtherRoute当它从导航器中弹出时,我想总是返回结果。在本例中,它RaisedButtonOtherRoute按下in时执行此操作。但是,我也希望它在按下后退按钮时返回结果。我知道我可以覆盖 上的后退按钮AppBar,但我也想覆盖 Android 上“系统”后退按钮的行为。

我知道我可以WillPopScope用来防止系统后退按钮弹出当前路线,但我不想要这个。如果可能,我希望系统后退按钮仍然能够弹出当前路线,只包含一个结果。这可能吗?

这是我的示例应用程序:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Test',
      home: Scaffold(
        appBar: AppBar(title: Text("Home"),),
        body: HomeRoute(),
      ),
    );
  }
}

class HomeRoute extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return RaisedButton(onPressed: (){
      Navigator.push(context, MaterialPageRoute(builder: (context){
        return OtherRoute();
      })).then((result){
        // I …
Run Code Online (Sandbox Code Playgroud)

android dart flutter

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