小编Seb*_*ino的帖子

C++ shared_mutex实现

boost::shared_mutexstd::shared_mutex(C++ 17)可用于单个写入器,多个读取器访问.作为一项教育练习,我将一个使用自旋锁的简单实现放在一起并具有其他限制(例如公平策略),但显然不打算在实际应用中使用.

我们的想法是,如果没有线程持有锁,则互斥锁保持引用计数为零.如果> 0,则该值表示有权访问的读者数.如果为-1,则单个编写者可以访问.

这是一个没有数据竞争的正确实现(特别是使用的,最小的内存排序)吗?

#include <atomic>

class my_shared_mutex {
    std::atomic<int> refcount{0};
public:

    void lock() // write lock
    {
        int val;
        do {
            val = 0; // Can only take a write lock when refcount == 0

        } while (!refcount.compare_exchange_weak(val, -1, std::memory_order_acquire));
        // can memory_order_relaxed be used if only a single thread takes write locks ?
    }

    void unlock() // write unlock
    {
        refcount.store(0, std::memory_order_release);
    }

    void lock_shared() // read lock
    {
        int val;
        do {
            do …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading mutex c++11 stdatomic

11
推荐指数
1
解决办法
1407
查看次数

Laravel登录Heroku没有出现

我按照官方指南为heroku部署了一个Laravel应用程序.它说要改变APP_LOG=errorlog,我已经完成了.

我也尝试了两种不同的版本,注释行是变体.

$this->app->configureMonologUsing(function($monolog){
    // $monolog->pushHandler(new \Monolog\Handler\SyslogHandler('papertrail')); 
    $monolog->pushHandler(new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::WARNING));
});
Run Code Online (Sandbox Code Playgroud)

如果我使用Log :: error('something')我什么都没看到.我正在查看papertrail和CLI命令heroku logs --tail --app {appname}

heroku laravel laravel-5 papertrail-app laravel-5.4

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

将double转换为Char Array C++

我试图将一个double转换(和舍入)到一个char数组,而不是先在double上转换为std :: to_string.但是,我正在接收随机内存文本.我究竟做错了什么?

这是我的代码:

double d = 1.0929998; 
d = std::round(d * 100) / 100;

char s[sizeof(d)];
std::memcpy(s,&d,sizeof(d));
Run Code Online (Sandbox Code Playgroud)

结果:

s: q =×£pñ?

预期价值:

s: 1.09

c++ string double c-strings

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

使用stream().sorted()在Collection.sort()上有什么好处吗?

我曾经使用以下行来在Java中出现流之前对元素进行排序:

Collections.sort(collection, new CustomComparator());
Run Code Online (Sandbox Code Playgroud)

现在我发现我可以通过以下方式获得相同的结果:

collection.stream().sorted(new CustomComparator());
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都使用一个列表和一个实现的自定义比较器Comparator(我需要这个并且不能在类本身上实现它).

我没有找到任何表明它们在任何方面都不同的东西,除了流解决方案看起来更好的事实.

使用流版本有什么好处吗?我的意思是......性能更高吗?有什么区别吗?

java sorting collections java-stream

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

C++ - 从另一个类构造函数调用类构造函数

所以我正在学习 C++ 课程,在一次练习中,我需要在名为“Character”的类的构造函数中使用名为“Weapon”的类的构造函数,但是每次我尝试编译代码时,它都会给我这个错误:

Character.cpp|13|error: no match for call to `(Weapon) (int&,std::__cxx11::string&)’|
Run Code Online (Sandbox Code Playgroud)

即使我在 Weapon.h 中声明了这个确切的构造函数:

#ifndef WEAPON_H
#define WEAPON_H

#include <string>

class Weapon
{
public:
    Weapon();
    Weapon(int damage, std::string name);
    virtual ~Weapon();

    int GetDamage() { return m_damage; }
    void SetDamage(int val) { m_damage = val; }
    std::string GetName() { return m_name; }
    void SetName(std::string val) { m_name = val; }

private:
    int m_damage;
    std::string m_name;
};

#endif // WEAPON_H
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我是法国人,这是我第一次发帖,但我尽力将源代码翻译成英文,如果某些行后面有任何错误或意外含义,请见谅。这是我的 Character.cpp / Weapon.cpp / Character.h 文件。

#include "Character.h"
#include "Weapon.h"

Character::Character() …
Run Code Online (Sandbox Code Playgroud)

c++ oop constructor encapsulation c++14

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

JUnit 测试用例失败:java.lang.AssertionError:预期为空,但为:&lt;空&gt;

我正在使用 JUnit 4.12 和 Jackson

@Test
public void testFailToGetDataAsString() {
    Receipt receipt = new Receipt(null);

    assertNull(receipt.getDataAsString());
}
Run Code Online (Sandbox Code Playgroud)

我正在测试的方法如下(this.data 只是一个空映射):

public String getDataAsString() {
    try {
        return new ObjectMapper().writeValueAsString(this.data);
    } catch (Exception e) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后我运行测试并检查“null”是否不是“<null>”。

java junit jackson

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

如何在 freemarker 中包含 CSS 文件

我正在使用 spring-boot 和 spring-security 制作一个网站,它更喜欢提供 freemarker 作为视图。我对ftl不太了解,现在我需要在我的ftl中使用 adminLTE 的 CSS 和 JS 文件,但是如何呢?

<html lang="en">
<#assign basePath=request.contextPath>
<#macro head>
    ...
    <script src="${basePath}WEB-INF/AdminLTE/dist/js/adminlte.min.js"></script>
    <link src="${basePath}WEB-INF/AdminLTE/plugins/iCheck/line/line.css" rel="stylesheet"></link>
    <script src="${basePath}WEB-INF/AdminLTE/plugins/iCheck/icheck.js"></script>
    ...
<#macro>
Run Code Online (Sandbox Code Playgroud)

html css freemarker

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