小编Jon*_*art的帖子

是否在C#中继承了隐含/显式转换方法?

我不确定我在这里做错了什么.我有一个泛型类,它基本上是一个美化的整数,有一些方法可以进行某些字符串格式化,以及进入/来自string和int转换:

public class Base
{
    protected int m_value;
    ...
    // From int
    public static implicit operator Base(int Value)
    {
        return new Base(Value);
    }
    ...
    // To string
    public static explicit operator string(Base Value)
    {
        return String.Format("${0:X6}", (int)Value);
    }
}
Run Code Online (Sandbox Code Playgroud)

它运作良好.我可以成功使用隐式和显式转换:

Base b = 1;
Console.WriteLine((string)b);  // Outputs "$000001", as expected.
Run Code Online (Sandbox Code Playgroud)

然后我从这个类派生出不同的子类,它们打开/关闭m_value中的不同命名位.例如:

public class Derived : Base
{

}
Run Code Online (Sandbox Code Playgroud)

然后我不能使用我的隐式转/ int转换:

Derived d = 3;
// Cannot implicitly convert type 'int' to 'Derived'. An explicit conversion exists (are you missing a …
Run Code Online (Sandbox Code Playgroud)

c# inheritance

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

为什么在64位架构上对齐是16字节?

(gdb) disas foo
Dump of assembler code for function foo:
0x00000000004004a8 <foo+0>: push   %rbp
0x00000000004004a9 <foo+1>: mov    %rsp,%rbp
0x00000000004004ac <foo+4>: mov    0x13c(%rip),%eax        # 0x4005ee <__dso_handle+30>
0x00000000004004b2 <foo+10>:    mov    %eax,-0x10(%rbp)
0x00000000004004b5 <foo+13>:    lea    -0x10(%rbp),%rax
0x00000000004004b9 <foo+17>:    add    $0x18,%rax
0x00000000004004bd <foo+21>:    mov    %rax,%rdx
0x00000000004004c0 <foo+24>:    mov    $0x400498,%eax
0x00000000004004c5 <foo+29>:    mov    %eax,(%rdx)
0x00000000004004c7 <foo+31>:    leaveq 
0x00000000004004c8 <foo+32>:    retq   
(gdb) l foo
8   void foo() {
9       char overme[4] = "WOW";
10      *(int*)(overme+24) = (int)bad;
11  }
Run Code Online (Sandbox Code Playgroud)

为什么不只是8个字节?

c x86-64 alignment

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

使用Go Language Simple HTTP Server打印到日志

我正在尝试记录请求者的IP地址,他们正在使用什么方法以及他们请求的文件.但由于某种原因它只在终端上输出而不将其保存到logfile.txt ...

package main

import (
  "fmt"
  "net/http"
  "log"
  "encoding/json"
  "io/ioutil"
)

type Options struct {
  Path string
  Port string
}

func Log(handler http.Handler) http.Handler {
  return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    fmt.Printf("%s %s %s\n", r.RemoteAddr, r.Method, r.URL)
    handler.ServeHTTP(w, r)
  })
}

func main() {

  op := &Options{Path: "./", Port: "8001"}

  data, _ := ioutil.ReadFile("./config.json")

  json.Unmarshal(data, op)

  http.Handle("/", http.FileServer(http.Dir(op.Path)))
  err := http.ListenAndServe(":" + op.Port, Log(http.DefaultServeMux))
  if err != nil {
    log.Fatal("ListenAndServe: ", err)
  }
}
Run Code Online (Sandbox Code Playgroud)

go

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

使用 Python 编辑 MP4 元数据

我需要在 Linux 上的 python 代码中为文件提供属性(元数据),特别是 Ubuntu。

具体来说,我需要在 MP4 文件上设置作者、标题、专辑等。

python

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

在sqlite中存储GUID的正确方法

我希望使用C#和python客户端将GUID存储在我的SQLite数据库中.

创建数据库并插入行,将GUID存储为字符串:

conn = sqlite3.connect(filename)

c = conn.cursor()

# Create the table. Yes, I know GUID isn't a real SQLite datatype.
c.execute('CREATE TABLE test (guid GUID PRIMARY KEY, name text)')

u = uuid.uuid4()
print u
t = (str(u), 'foo')
c.execute('INSERT INTO test VALUES (?,?)', t)

conn.commit()
conn.close()
Run Code Online (Sandbox Code Playgroud)

取:

# ...
c.execute('SELECT * FROM test WHERE guid = "c1332103-6031-4ff7-b610-f8f3b940fa66"')
print c.fetchone()
Run Code Online (Sandbox Code Playgroud)

一切都很完美.使用__str__UUID 的默认Python 表示效果很好.

C:\Users\Jonathon>makedb.py test.db
c1332103-6031-4ff7-b610-f8f3b940fa66

C:\Users\Jonathon>opendb.py test.db
(u'c1332103-6031-4ff7-b610-f8f3b940fa66', u'foo')
Run Code Online (Sandbox Code Playgroud)

我怀疑使用SQLite Expert.似乎SQLite Expert对我的GUID数据类型声明感到满意:

在此输入图像描述

但是,如果我编辑一行:

在此输入图像描述

它似乎改变了数据类型!我SELECT …

python sqlite

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

'int'对象在python中不是可调用的错误

我收到这个错误:

Traceback (most recent call last):
  File "C:\Users\George\Desktop\ex3.py", line 15, in <module>
    s=s+d*2(-1/6.)*(u-1)*(u-2)*(u+2)*(u-4)
TypeError: 'int' object is not callable
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

x=input()
z=input()
n=input()
while x>=z:
    x=input()
    z=input()
while n<0:
    n=input()
while n>0:
    d=(z-x)/1.*n
    k=1
    s=(d/2.)*((-1/6.)*(x-1)*(x-2)*(x+2)*(x-4)+(-1/6.)*(z-1)*(z-2)*(z+2)*(z-4))
    while k<=n-1:
        u=x+k*d
        s=s+d*2(-1/6.)*(u-1)*(u-2)*(u+2)*(u-4)
        k=k+1
        print "%.3f" %s
        x=input()
        z=input()
        n=input()
        if n>0:
            while x>=z:
                x=input()
                z=input()
Run Code Online (Sandbox Code Playgroud)

python int callable

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

如何创建TI-BASIC(TI-84 +)输入表格?

在TI-BASIC编程语言(特别是TI-84 +)中,如何创建输入表单,例如TI-84 +上默认应用程序中包含的表单.

这里包含的图像显示了我正在尝试创建的示例:您可以在执行函数之前滚动并自由输入多个变量的菜单

此外,是否可以在输入变量时动态更新此菜单?

basic ti-basic

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

为什么glibc的fork实现没有使用sys_fork?

在eglibc中nptl/sysdeps/unix/sysv/linux/i386/fork.c有一个定义:

#define ARCH_FORK() \
  INLINE_SYSCALL (clone, 5,                           \
          CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, 0,     \
          NULL, NULL, &THREAD_SELF->tid)
Run Code Online (Sandbox Code Playgroud)

它在实际中__libc_fork()用作实现的核心.但是,例如在Linux中arch/x86/entry/syscalls/syscall_32.tbl存在一个sys_fork条目,以及在syscalls_64.tbl.显然Linux确实有其特殊的系统调用fork.

所以,我现在想知道:为什么glibc的实现fork()来讲clone,如果内核已经提供了fork系统调用?

c linux fork glibc

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

在@ KafkaListener-method中确认没有"丢失"消息

我们目前基本上通过以下简化机制确认消息:

  @KafkaListener(topics = "someTopic")
  public void listen(final String message, final Acknowledgment ack) {
    try {
        processMessage(message);
        ack.acknowledge();
    } catch (final IOException e) {
        // do not acknowledge here since we can temporarily not process the message
    } 
Run Code Online (Sandbox Code Playgroud)

基本上,每当我们暂时无法处理消息时(在IOExceptions的情况下),我们希望以后再次接收它.

但这不起作用,因为确认假定同一分区中的所有先前消息都已成功处理.在我们的IOException情况下,将跳过失败的消息,但可能会被同一分区上具有更高索引的其他消息确认.

我们有一些想法如何解决这个问题,但这将意味着一些讨厌的解决方法,以避免直接在KafkaListener方法中调用确认.我们的用例是非常具体的,还是更像是春天kafka用户会假设的"默认"行为?

是否有针对此类问题的spring-kafka解决方案?或者你有想法"正确"解决这个问题吗?

spring apache-kafka spring-kafka

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

"MEIPASS"代表什么?

PyInstaller设置sys._MEIPASS属性以让应用程序知道在哪里找到它的捆绑资源.来源:这个答案.

我知道是什么_MEIPASS呢.这个名字_MEIPASS是什么意思?它代表什么?

  • 这是从2.0版中MEIPASS2环境变量更改的.
  • 官方文档中没有任何内容甚至暗示了这个变量的词源.
  • 它似乎自PyInstaller开始以来一直存在.

python pyinstaller

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