小编Lar*_*sen的帖子

为什么要推迟回滚?

我已经开始将 Go 用于 Web 服务并进行了一些数据库交互(惊喜!!!),我找到了这个例子:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}
defer tx.Rollback()
stmt, err := tx.Prepare("INSERT INTO foo VALUES (?)")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close() // danger!
for i := 0; i < 10; i++ {
    _, err = stmt.Exec(i)
    if err != nil {
        log.Fatal(err)
    }
}
err = tx.Commit()
if err != nil {
    log.Fatal(err)
}
// stmt.Close() runs here!
Run Code Online (Sandbox Code Playgroud)

来自http://go-database-sql.org/prepared.html

该示例制定得很好,易于理解。然而,这给我留下了一个悬而未决的问题。为什么defer事务回滚调用?

为什么不做以下事情:

err := …
Run Code Online (Sandbox Code Playgroud)

transactions go

11
推荐指数
2
解决办法
4279
查看次数

编译时如何禁用部分代码

场景如下,我有10多个不同的项目,都使用日志记录框架,并且对于台式机系统和研究项目,日志记录框架实际记录日志是一个要求。但是,我们希望在嵌入式设备中部署相同的代码而不进行日志记录,因为这是不必要的,并且确实会影响性能(许多日志语句)。

我该如何说针对桌面编译=启用日志记录或针对嵌入式编译=禁用日志记录?

我已经看过了,ifdef但不确定那是最好的方法

我使用waf作为构建系统,如果有帮助,我们使用C ++ 17。

c++

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

我应该教 C89、C18 还是别的什么?

我是一门课程的助教,我不得不用 C 语言进行速成课程,我的一个学生问,为什么我们仍然将其-ansi用作编译命令的一部分,因为它已经很老了。

现在,当我在 10 多年前学习 C 时,有人告诉我这是因为它是最广泛采用和使用的 C 标准,而且开发人员实际上并没有从 ANSI/C89 转移。我在讲座之前看过它,我能找到的所有使用方面的提及都是 2007 年或更早。但我也找不到任何更新的建议。我查看了 GitHub 上的 50 多个开源 C 项目,并且所有这些项目也在其 Make/CMAKE/WAF 配置中使用了 ANSI,所以我认为这仍然是常见的做法。 但是是吗?

我可以看到 ANSI(组织)官员在 C18。那么教学生这个更合适还是我们应该坚持使用C89?我找不到任何关于当今常见做法的文档或描述,而且我主要在使用 89 或 90 的“遗留”系统中工作。

c

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

在 MySQL 中将 BigInt 转换为时间戳

我有一个表,在这个表中我有一列当前存储一个类型的值BigInt,我想改变这个列以包含“时间戳”值。

我怎样才能做到这一点。我试过了:

ALTER TABLE t
MODIFY c TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)

我得到:

#1292 - Incorrect datetime value: '1524120113' for column 'created_temp' at row 1
Run Code Online (Sandbox Code Playgroud)

ALTER TABLE share ADD created_temp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
UPDATE share SET created_temp = UNIX_TIMESTAMP(created);
Run Code Online (Sandbox Code Playgroud)

我得到: #1292 - Incorrect datetime value: '1524120113'

的内容created是使用创建的UNIX_TIMESTAMP()

mysql

6
推荐指数
2
解决办法
6378
查看次数

为什么 UINT32_MAX + 1 = 0?

考虑以下代码片段:

#include <cstdint>
#include <limits>
#include <iostream>

int main(void) 
{
    uint64_t a = UINT32_MAX;
    std::cout << "a: " << a << std::endl;
    ++a;
    std::cout << "a: " << a << std::endl;
    uint64_t b = (UINT32_MAX) + 1;
    std::cout << "b: " << b << std::endl;

    uint64_t c = std::numeric_limits<uint32_t>::max();

    std::cout << "c: " << c << std::endl;

    uint64_t d = std::numeric_limits<uint32_t>::max() + 1; 
    std::cout << "d: " << d << std::endl;
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出:

#include <cstdint>
#include <limits>
#include …
Run Code Online (Sandbox Code Playgroud)

c++

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

将图像从Assets加载到NSImage时继续出现错误,期望出现NSImage.Name

我试图从文件加载xcassetsNSImage,这里的资产名称是标志。

我尝试了这个:

let logoIcon = NSImage(named: "logo")
Run Code Online (Sandbox Code Playgroud)

但我不断收到此错误:

无法将“字符串”类型的值转换为预期的参数类型“ NSImage.Name”

我查看了Apple Dev文档,据我所知这是正确的。但是由于某种原因,我一直收到错误消息。

我试图在macOS上做到这一点

编辑:

所以我试图做一个顶级菜单栏应用程序。

我已经调整了代码,以便将图标加载到其中,logoIcon但是未在顶部菜单栏中设置图标。

import Cocoa

extension NSImage.Name {
    static let logo = NSImage.Name("Logo")

}


@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!
    @IBOutlet weak var statusMenu: NSMenu!

    let statusItem = NSStatusBar.system.statusItem(withLength: -1)


    func applicationDidFinishLaunching(_ aNotification: Notification) {

        // statusItem.title  = "SECRET"

        let logoIcon = NSImage(named: .logo)

        // icon?.isTemplate = true
        statusItem.image = logoIcon
        statusItem.menu = statusMenu

    }

    func …
Run Code Online (Sandbox Code Playgroud)

nsimage swift

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

如何将互斥锁用作成员变量?如果没有复制,“ simple_encoder”的构造函数将被隐式删除

您好,我正在尝试创建一个多线程编码器,它需要一个互斥锁,并且我希望该互斥锁成为该类的成员。但是,我不断得到:copy constructor of 'simple_encoder' is implicitly deleted because field 'm_mutex' has an inaccessible copy constructor编译时出现错误消息。经过一个小时的搜索,我找不到我的错误。

请为喜欢的东西提供帮助,我的构造函数和成员如下所示:

namespace master_thesis
{
class simple_encoder
{
public:

    simple_encoder(uint32_t symbols, uint32_t symbol_size, fifi::api::field field,
                   std::vector<uint8_t> data) :
        m_symbols(symbols), m_symbol_size(symbol_size),
        m_completed(0), m_field(field), m_data(data)
    {

    }
...
private:

    uint32_t m_symbols;
    uint32_t m_symbol_size;
    uint32_t m_completed; 

    fifi::api::field m_field;

    std::mutex m_mutex;

    std::vector<uint8_t> m_data;
    std::vector<std::vector<uint8_t>> m_result;

    std::vector<std::shared_ptr<kodo_rlnc::full_vector_encoder>> m_encoders;
};
}
Run Code Online (Sandbox Code Playgroud)

c++ mutex

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

如何在 swift4 中避免 URL.absoluteString 中的 file://

我有一个应用程序,我需要在其中保留目录中文件的索引,并且我需要能够访问这些文件。但是,当我有一个URL对象并调用absoluteString以获取文件夹或文件的路径时,它会在字符串前面加上file://. 首先我不确定它为什么这样做,其次,如何在不使用字符串操作的情况下避免这种情况。

/拉斯

swift

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

标签 统计

c++ ×3

swift ×2

c ×1

go ×1

mutex ×1

mysql ×1

nsimage ×1

transactions ×1