小编Nat*_*ate的帖子

Go中的"未知转义序列"错误

我在Go中编写了以下函数.想法是函数有一个传递给它的字符串并返回找到的第一个IPv4 IP地址.如果未找到IP地址,则返回空字符串.

func parseIp(checkIpBody string) string {
    reg, err := regexp.Compile("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
    if err == nil {
        return ""
    }   
    return reg.FindString(checkIpBody)
}
Run Code Online (Sandbox Code Playgroud)

我得到的编译时错误是

未知逃脱序列:.

我怎么能告诉Go这'.'是我正在寻找的实际角色?我认为逃避它会做到这一点,但显然我错了.

regex syntax go

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

如何保持长时间运行的Go程序,运行?

我用Go编写了一个长期运行的服务器.Main触发了程序逻辑执行的几个goroutine.之后主要没有任何用处.一旦主要退出,程序将退出.我现在用来保持程序运行的方法只是对fmt.Scanln()的简单调用.我想知道别人如何保持主力退出.以下是一个基本的例子.这里可以使用哪些想法或最佳实践?

我考虑通过在所述频道上接收来创建一个频道并延迟主要的退出,但我认为如果我的所有goroutine在某些时候变得不活跃,那么这可能会有问题.

旁注:在我的服务器(不是示例)中,程序实际上并没有连接到shell,因此无论如何与控制台交互都没有意义.现在它可行,但我正在寻找"正确"的方式,假设有一个.

package main

import (
    "fmt"
    "time"
)

func main() {
    go forever()
    //Keep this goroutine from exiting
    //so that the program doesn't end.
    //This is the focus of my question.
    fmt.Scanln()
}

func forever() {
    for ; ; {
    //An example goroutine that might run
    //indefinitely. In actual implementation
    //it might block on a chanel receive instead
    //of time.Sleep for example.
        fmt.Printf("%v+\n", time.Now())
        time.Sleep(time.Second)
    }
}
Run Code Online (Sandbox Code Playgroud)

daemon go goroutine

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

在C#中,结构体真的不能为空吗?

下面是一些代码,演示了我无法将结构类型声明和初始化为null.该可空类型是一个结构,所以为什么我可以将它设置为空?

Nullable<bool> b = null;
if (b.HasValue)
{
    Console.WriteLine("HasValue == true");
}

//Does not compile...
Foo f = null;
if (f.HasValue)
{
    Console.WriteLine("HasValue == true");
}
Run Code Online (Sandbox Code Playgroud)

在哪里Foo定义为

public struct Foo
{
    private bool _hasValue;
    private string _value;

    public Foo(string value)
    {
        _hasValue = true;
        _value = value;
    }

    public bool HasValue
    {
        get { return _hasValue; }
    }

    public string Value
    {
        get { return _value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题已得到解答(见下文).为了澄清我会发布一个例子.C#代码:

using System;

class Program
{
    static …
Run Code Online (Sandbox Code Playgroud)

c# struct nullable

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

将映射键/值存储在持久性文件中

我将创建一个或多或少形式的结构:

type FileState struct {
    LastModified int64
    Hash string
    Path string
}
Run Code Online (Sandbox Code Playgroud)

我想将这些值写入文件并在后续调用中读取它们.我最初的计划是使用密钥(Path)将它们读入地图并查找值(Hash和LastModified).在Go中有这样一种光滑的方式吗?

如果没有,您可以推荐哪种文件格式?我在以前的项目中读过并试验过一些键/值文件存储,但没有使用Go.现在,我的要求可能相当简单,因此大型数据库服务器系统会过度.我只想要一些我可以快速,轻松,便携地阅读和阅读的内容(Windows,Mac,Linux).因为我必须在多个平台上部署,所以我试图将我的非依赖性依赖性保持在最低限度.

我考虑过XML,CSV,JSON.我简单地看了Go中的gob包并注意到Go包仪表板上有一个BSON包,但我不确定是否适用.

我的主要目标是快速启动和运行,这意味着我需要编写的代码量最少,易于部署.

dictionary map go gob

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

如何在Go中使用与包名相同的变量名?

文件或目录的通用变量名称是"path".不幸的是,这也是Go中包的名称.此外,在DoIt中将路径更改为参数名称,如何编译此代码?

package main

import (
    "path"
    "os"
)

func main() {
    DoIt("file.txt")
}

func DoIt(path string) {
    path.Join(os.TempDir(), path)
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

$6g pathvar.go 
pathvar.go:4: imported and not used: path
pathvar.go:13: path.Join undefined (type string has no field or method Join)
Run Code Online (Sandbox Code Playgroud)

variable-names package go

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

.NET Windows Forms设计时间规则

我有一个对象启动一个线程,打开一个文件,并等待来自其他类的输入.当它接收输入时,它会将其写入磁盘.基本上,它是一个线程安全的数据记录类...

这是奇怪的部分.当我在设计器(Visual Studio 2008)中打开一个使用该对象的表单时,将创建该文件.它显然是在设计时vhost进程下运行的......

奇怪的是我无法在另一个项目中重现这个问题.我不确定在设计器中执行的代码和没有执行的代码的规则是什么.例如,在Windows窗体构造函数中创建文件实际上并不是在设计时创建文件...

解释是什么?有参考吗?

.net c# design-time winforms

10
推荐指数
2
解决办法
7381
查看次数

行高设置为"自动"的WPF网格布局面板

我希望网格顶部和底部有一行,其中包含标签或按钮.在中间我打算使用ListBox.我希望ListBox扩展以使用所有可用空间.不硬编码其他两行的高度会很好.我的XAML在下面.如何让中间部分自动展开?谢谢.

<UserControl x:Class="WpfApplication1.UserControl1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Label Grid.Row="0"
           Grid.ColumnSpan="3"
           Content="Top Row" />

    <ListBox Grid.Row="1"
             Grid.ColumnSpan="3" />

    <Label Grid.Row="2"
           Grid.ColumnSpan="3"
           Content="Bottom Row" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

wpf grid layout

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

从Windows C#Canon SDK与PTP或MTP对齐图片

我希望得到一些关于实现看似简单目标的一般指导.我有一个数码单反相机(佳能EOS 50D),需要编写一个应用程序,告诉相机拍照.我还需要将图片传输到计算机,并可能将其从相机的存储中删除.奖励将是在我的应用程序中从相机获得实时预览.我的环境将是Windows(XP Pro或Vista Enterprise)和.Net 3.5(C#).

我做了一些研究,发现了几个选择.我知道一个会工作,但限制我将来只使用佳能相机.我找到并从佳能下载了一个SDK,它提供了很多这方面的功能.我查看了SDK,虽然它很广泛并且用C语言编写,但它确实有C#包装器,可以加快开发速度.

我发现的另一个选项叫做Windows便携设备.显然,它是一个API,可以与实现PTP和MTP标准的设备进行通信.它是基于COM的,据我所知,它没有.Net包装器.然而,这不是一个节目塞子.我可以P/Invoke我需要的功能或编写托管C++ DLL在我的应用程序中使用与摄像头通信.

我正在寻找有WPD经验的人给我指点.我仔细阅读了文档并看到了传输图像和删除图像的参考.但是,我没有看到提取照片,获取预览图像或说焦点/自动对焦的命令.

c# camera automation wpd

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

自动增加Visual Studio安装程序项目版本号

我使用Visual Studio安装项目为我的.Net应用程序创建MSI.如果我可以自动增加版本号,那就太好了.更好的方法是将安装程序版本设置为等于主输出exe的AssemblyVersion.

windows-installer setup-project visual-studio

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

我想要一个ORM吗?

我们在三个应用程序中使用了一个对象模型.两个程序收集数据,另一个程序读取数据并生成报告.系统非常断开连接,因此我们不能让所有程序都与单个数据库通信.

现在,程序只使用公共库来填充对象模型并序列化/反序列化到磁盘.具体来说,我们正在使用XML序列化.

这个模型有几个问题.1)XML可能被认为是浪费.文件可能变得庞大而且难以处理.老实说,文件大小现在不是一个大问题.2)我最关心的是记忆足印.将整个文件加载到对象模型中,对其进行操作,然后保存.

希望我已经表达了我的担心,在某些时候,我们将在运行时遇到此应用程序的内存问题.足够的数据将被收集到一个"数据库"(xml文件)中,无法一次性加载到内存中.

我想要的是访问由文件存储而不是内存支持的对象模型.我希望对象模型的更改最小化.访问对象时,它来自磁盘,当它被设置时,它被保存(如果可能的话,自动保存).

我们已经使用SQLite,SQL Compact 4.0和EF 4以及LINQ to XML(简要地)研究了NHibernate.我过去也使用db4o将对象缓存到磁盘,但这是一个不相关的项目.

在我潜入并花时间学习其中一个之前,我想知道我的想法是否有意义.我是否可以拥有一个"神奇地"缓存到存储介质的对象模型,而不是无限地膨胀我的内存占用?即使它不是最优雅的,最简单的方法是什么?

还有其他技术可以帮助我吗?内存映射文件,linq-to-sql,Lazy(T)(仅用于在需要时从文件中获取对象).

我意识到这是一个开放式的问题.我正在寻找一个大图片响应和细节,如果有人有真实的世界经验这样做.链接会有所帮助......

谢谢.

c# nhibernate orm linq-to-xml sql-server-ce

7
推荐指数
2
解决办法
364
查看次数