小编zmb*_*zmb的帖子

在Go中模拟HTTPS响应

我正在尝试为一个向Web服务发出请求的包编写测试.我遇到的问题可能是由于我对TLS缺乏了解.

目前我的测试看起来像这样:

func TestSimple() {
    server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json")
        w.WriteHeader(200)
        fmt.Fprintf(w, `{ "fake" : "json data here" }`)
    }))
    transport := &http.Transport{
        Proxy: func(req *http.Request) (*url.URL, error) {
            return url.Parse(server.URL)
        },
    }
    // Client is the type in my package that makes requests
    client := Client{
        c: http.Client{Transport: transport},
    }

    client.DoRequest() // ...
}
Run Code Online (Sandbox Code Playgroud)

我的包有一个包变量(我希望它是一个常量..),用于查询的Web服务的基地址.这是一个https URL.我上面创建的测试服务器是纯HTTP,没有TLS.

默认情况下,我的测试失败并显示错误"tls:第一条记录看起来不像TLS握手".

为了使其工作,我的测试在进行查询之前将包变量更改为普通的http URL而不是https.

有没有办法解决?我可以将包变量设为常量(https),并设置http.Transport"降级"为未加密的HTTP,还是使用httptest.NewTLSServer()

(当我尝试使用时,NewTLSServer()我从127.0.0.1:45678获取"http:TLS握手错误:tls:收到长度超过20037的记录")

testing ssl go

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

你如何获得一个用于 Linux 字符设备的结构设备

我有一个实现字符设备驱动程序的 Linux 内核模块。我已经通读了Linux 设备驱动程序并遵循了几个教程。在这一点上,我有一个简单的模块,提供openrelease以及write文件操作。

我正在尝试使用通用 DMA 层来创建流式 DMA 映射。我对 LDD 的以下摘录感到困惑:

下面的许多功能都需要一个struct device. 此结构是 Linux 设备模型中设备的低级表示。驱动程序通常不需要直接使用它,但是在使用通用 DMA 层时确实需要它。通常,您可以在描述您的设备的特定总线中找到此结构。例如,它可以作为或 中的dev 字段找到。struct pci_devicestruct usb_device

我进一步阅读了 Linux 设备模型,遇到了以下问题:

在最底层,Linux 系统中的每个设备都由一个 struct device 实例表示。

我怎样才能获得struct device我的角色设备的?是否在幕后为我创建了一个,还是我需要创建它?

我尝试手动创建一个类,class_create()然后使用它来创建一个设备device_create(),但是当我使用该设备设置 DMA 映射时,我想我只是得到了一个虚假地址。这是正确的方法吗?

关于我的平台的更多信息,我在 Altera SoCFPGA 平台 (ARM) 上工作,所以我的设备不是像 USB 或 PCI 设备那样真正的硬件设备,而是在 FPGA 中实现的逻辑。

我在LDD 的第 14 章中发现了很多我认为可能相关的信息(总线、设备、驱动程序等),但我不确定何时或如何使用它。对我来说,这一章似乎讨论了所有设备和驱动程序都使用的许多数据结构,但我很困惑,因为我不必使用其中的任何一个。

linux-device-driver linux-kernel embedded-linux

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

特征值中最大系数的索引(按列)

在 Eigen 中,我可以进行行方向或列方向的“部分缩减”以获得最大系数。

例如这个程序:

#include <iostream>
#include <Eigen/Dense>

int main()
{
  Eigen::MatrixXf mat(2,4);
  mat << 1, 2, 6, 9,
         3, 1, 7, 2;

  std::cout << "Column's maximum: " << std::endl
   << mat.colwise().maxCoeff() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Column's maximum:
3 2 7 9
Run Code Online (Sandbox Code Playgroud)

我不想创建每列中具有最大系数的行向量,而是想构造一个具有每列最大系数的索引的行向量。

换句话说,我想修改程序,使输出变成:

Column's maximum:
1, 0, 1, 0
Run Code Online (Sandbox Code Playgroud)

我知道我可以一次获取一列索引,执行如下操作:

Eigen::MatrixXf::Index max_index;
mat.col(i).maxCoeff(&max_index);
Run Code Online (Sandbox Code Playgroud)

但我希望有一种更好的方法可以一步完成这一切,而不是手动循环每一列。这可能吗?(我使用的是 Eigen v3.2.7)

c++ eigen eigen3

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

在 VS Code 中输入 Unicode 符号

我在输入 ? Visual Studio Code 编辑器中的符号 (U+03A9)。

在我的 Mac 上,我通常可以用option+输入它,z但它似乎在代码中不起作用。

许多其他组合似乎工作得很好(例如, ? option+x正确输入)。

我想知道 VS Code 是否正在拦截其他键盘快捷键的option+ z。我搜索了键盘快捷键列表,但没有找到任何相关内容。

unicode macos visual-studio-code

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

在IntelliJ IDEA中运行Ant构建的烦恼

我正在使用IntelliJ IDEA v.12.1.4,社区版.

每次我从"Ant Build"菜单运行Ant构建时,IDE都会打开我的build.xml文件,窃取焦点并掩盖我正在处理的任何内容.这真让我抓狂.我小组中的其他开发人员没有遇到相同的行为.

在某处设置/禁用此设置是否有设置?

更新我注意到它发生在调用我的编译目标的任何命令上,它将焦点放在该javac行上.这是任务:

<target
        name="compile-source"
        depends="-init">
    <delete dir="${out.source.dir}"/>
    <mkdir dir="${out.source.dir}"/>
    <javac                                   
            destdir="${out.source.dir}"
            includeantruntime="false"
            debug="true">
        <compilerarg value="-Xlint:all"/>
        <src path="${in.source.dir}"/>
        <src path="${in.shared.source.dir}"/>
        <classpath refid="source.compile.classpath"/>
    </javac>
</target>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述

java ant intellij-idea

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

从 DataTemplate 设置的自定义 DependencyProperty

我正在使用具有多个用户定义的依赖属性的自定义控件。我遇到了这个问题中描述的相同问题。

我的控件正在其构造函数中设置自定义依赖项属性的默认值。当我在 a 中使用控件时DataTemplate,始终使用构造函数中设置的值,即使我尝试在 XAML 中设置它也是如此。

链接问题的答案解释了 C# 代码中设置的值具有更高的优先级,更好的方法是在依赖项属性的元数据中指定默认值。

就我而言,我无法指定默认值,因为依赖项属性没有适用于所有情况的单个默认值。默认值取决于另一个属性,因此我必须在创建控件时而不是在注册属性时查找它们。

这是一些代码来帮助说明我的问题:

public partial class MyControl : UserControl
{
    public static readonly DependencyProperty MyProperty = 
            DependencyProperty.Register(
                "MyProperty",
                typeof(int),
                typeof(MyControl),
                new FrameworkPropertyMetadata(
                    int.MinValue,
                    FrameworkPropertyMetadataOptions.None,
                    new PropertyChangedCallback("OnMyPropertyChanged")));

    public MyControl() : base()
    {
        InitializeComponent();
        this.MyProperty = GetDefaultPropertyValue();
    }

    public int MyProperty
    {
        get { return (int)GetValue(MyProperty); }
        set { SetValue(MyProperty, value); }
    }

    private int GetDefaultPropertyValue()
    {
        // look up the appropriate default based on some other criteria
        return 42; …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datatemplate

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

C不承认var - 我必须忽略一些简单的东西.

从错误中我认为print()中的代码没有看到for()中的计数器.nb代码用于Propeller微控制器.for()过去没有问题.非常感谢

#include "simpletools.h"  // for print on my microcontroller platform
void main(void) {
    for(int x = 1; x <= 20; x++); {
        // *** error next line> error: 'x' undeclared (first use in this function)
        print("x = %d\n", x);
        high(14);
        pause(500);
        low(14);
        pause(500);
    }
}
Run Code Online (Sandbox Code Playgroud)

c variables microcontroller for-loop

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

Golang和不工作的函数bytes.Contains()

我的功能有奇怪的问题bytes.Contains(b, subslice []byte) bool.它没有在函数中接收的字节数组中找到字符(c *IPConn) Read(b []byte) (int, error).应用程序是一个简单的服 所以我有字节数组,它通过服务器接收到变量buf

buf := make([]byte, 1024)
Len, err := c.conn.Read(buf)
// below received content in buf
//{"abc":[{"b":5,"bca":14,"xyz":0}]}{"abc":[{"b":7,"hjk":14,"qwe":0}]}
Run Code Online (Sandbox Code Playgroud)

现在我想使用下面的函数来查找} {数组buf中的字符

if bytes.Contains(buf, []byte(`}{`) != false {
    fmt.Printf("I got you")
}
Run Code Online (Sandbox Code Playgroud)

但是函数总是返回false.为什么?

我在我的程序中做了一些实验,如下所示:

worker := []byte('{"abc":[{"b":5,"bca":14,"xyz":0}]}{"abc":[{"b":7,"hjk":14,"qwe":0}]}')

// try find }{

if bytes.Contains(worker, []byte(`}{`) != false {
    fmt.Printf("I got you")
}
Run Code Online (Sandbox Code Playgroud)

是正确的 !!!我不明白这一点......因为它允许通过服务器接收的数据和通常在程序中附加的数据之间的内容必须不同.

go

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