小编Emi*_*ier的帖子

现代Linux发行版中共享库真正节省了多少磁盘空间?

在静态与共享库的争论中,我经常听说共享库消除了重复并减少了整体磁盘空间.但是现代Linux发行版中共享库真正节省了多少磁盘空间?如果使用静态库编译所有程序,还需要多少空间?有没有人为像Ubuntu这样的典型桌面Linux发行版碾压数字?有统计数据吗?

附录:

所有的答案都提供了丰富的信息并且受到了赞赏,但他们似乎都在抨击我的问题而不是试图回答它.Kaleb走在了正确的轨道上,但他选择了内存空间而不是磁盘空间的数字(我的问题是磁盘空间).

因为程序只为他们使用的静态库部分"付费",所以几乎不可能定量地知道所有静态与所有共享的磁盘空间差异.

我觉得现在我的问题很糟糕,我意识到这几乎是不可能回答的.但我会留在这里以保留信息丰富的答案.

所以SO停止唠叨我选择一个答案,我将选择最受欢迎的一个(即使它回避问题).

linux shared-libraries static-libraries

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

将空范围(相同的迭代器)传递给STL算法会导致定义的行为吗?

考虑以下:

std::vector<int> vec(1); // vector has one element
std::fill(vec.begin(), vec.begin(), 42);
std::fill(vec.begin()+1, vec.end(), 43);
std::fill(vec.end(), vec.end(), 44);
Run Code Online (Sandbox Code Playgroud)

std::fill上面的所有用法都会导致定义的行为吗?我保证vec将保持不变吗?我倾向于认为"是",但我想确保标准允许这样的使用.

c++ iterator stl

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

在Qt Creator中切换.ui和.cpp

在Qt Creator中,有一种简单的方法可以直接在Design视图和与表单关联的.cpp文件之间切换(反之亦然)?

当我从设计模式进入编辑模式(Ctrl-2)时,它烦人地向我显示.ui文件的XML代码,因此我必须手动选择.cpp文件.

当我在表单的.cpp文件中时,设计模式图标和快捷方式(Ctrl-3)被禁用,因此我必须手动选择.ui文件.

必须有一种更好的方法来切换ui < - > cpp.

ide qt qt-creator

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

我应该如何在自己的函数中传递boost :: asio :: yield_context?

我正在编写一个使用Boost.Asio的C++ 11网络库.我想公开一个允许用户使用堆栈协程的API.我应该如何接受boost::asio::yield_contextAPI函数中的参数?按价值?引用?通过const引用?我不知道这些yield_context对象要复制多贵.

例如:

Result remoteProcedureCall(Args args, boost::asio::yieldcontext yield)
//                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ How to pass?
Run Code Online (Sandbox Code Playgroud)

我知道我可以采用通用参考并完成转发:

template <typename TYield>
Result remoteProcedureCall(Args args, TYield&& yield)
{
    //...
    boost::asio::async_write(socket_, buffer, std::forward<TYield>(yield));
    //...
}
Run Code Online (Sandbox Code Playgroud)

但我希望我的API函数不是模板化的,因此我可以实现Pimpl习语.

c++ boost coroutine boost-asio c++11

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

在stl中acos,atan函数是否使用了大量的cpu周期

我想计算两个向量之间的角度,但我已经看到这些反向触发操作,如acos和atan使用了大量的cpu周期.有没有办法在不使用这些功能的情况下完成计算?此外,当您进行优化时,这些真的会让您感到震惊吗?

c++ math optimization

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

自定义STL序列的最小嵌套typedef集合?

什么是应该在符合Sequence概念的自定义STL类中定义的最小嵌套typedef集?自定义序列应与以下内容兼容:

  1. 的std :: back_insert_iterator
  2. BOOST_FOREACH
  3. 提升范围的概念.

c++ boost stl

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

在ARC下使用IBOutlet属性的用处?

在ARC下,让每个IBOutlet成为财产的重点是什么?对于仅在视图控制器内部使用的IBOutlet使用ivars会有什么缺点?

iphone objective-c ios automatic-ref-counting

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

std :: function typedef中的参数名称

我知道我可以std::function这样输入:

typedef std::function<void (const std::string&)> TextChangedHandler
Run Code Online (Sandbox Code Playgroud)

是否允许在typedef中指定参数名称,以使其更加自我记录?例如:

typedef std::function<void (const std::string& text)> TextChangedHandler
Run Code Online (Sandbox Code Playgroud)

我可以添加参数名称,它在Visual C++ 2010上编译得很好,但我想确保它是C++ 03/C++ 11标准所允许的.

c++ boost boost-function c++11 std-function

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

如何使用两个具有高速公路应用程序的线程创建一个python应用程序

我没有为我的问题找到任何解决方案.我需要创建一个带有两个线程的python应用程序,每个线程使用autobahn库连接到WAMP路由器.

跟着我写下我的实验代码:

wampAddress = 'ws://172.17.3.139:8181/ws'
wampRealm = 's4t'

from threading import Thread
from autobahn.twisted.wamp import ApplicationRunner
from autobahn.twisted.wamp import ApplicationSession
from twisted.internet.defer import inlineCallbacks


class AutobahnMRS(ApplicationSession):
    @inlineCallbacks
    def onJoin(self, details):
        print("Sessio attached [Connect to WAMP Router]")

        def onMessage(*args):
            print args
        try:
            yield self.subscribe(onMessage, 'test')
            print ("Subscribed to topic: test")

        except Exception as e:
            print("Exception:" +e)

class AutobahnIM(ApplicationSession):
    @inlineCallbacks
    def onJoin(self, details):
        print("Sessio attached [Connect to WAMP Router]")

        try:
            yield self.publish('test','YOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO')
            print ("Subscribed to topic: test")

        except Exception as e:
            print("Exception:" …
Run Code Online (Sandbox Code Playgroud)

python twisted websocket autobahn wamp-protocol

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

如何安全地clock_cast天?

我正在使用HowardHinnant/date来代替 Clang/GCC 中尚不可用的新 C++20 日历/时区设施。我的问题同样适用于两种实现:我如何安全地clock_cast time_point拥有days持续时间?

当我尝试:

using namespace date; // or using std::chrono in C++20
tai_time<days> tai{days{42}};
sys_days sys = clock_cast<std::chrono::system_clock>(tai);
Run Code Online (Sandbox Code Playgroud)

我收到最后一条语句的“无可行转换”错误。事实证明,结果使用的持续时间为common_type<days, seconds>,该持续时间来自utc_clock::to_sys()转换中使用的持续时间。常见的持续时间类型是std::chrono::seconds,所以不能直接转换为days持续时间是正常的。

如果我使用显式,我可以让它编译duration_cast

using namespace date; // or using std::chrono in C++20
tai_time<days> tai{days{42}};
auto casted = clock_cast<std::chrono::system_clock>(tai);
sys_days sys{std::chrono::duration_cast<days>(casted.time_since_epoch())};
Run Code Online (Sandbox Code Playgroud)

...但我担心由于截断(特别是对于纪元之前的日期),结果可能会延迟一天。这是做我想做的事情的正确方法吗?我应该使用floor而不是duration_cast吗?

为什么还有一个std::common_type_t<Duration, std::chrono::seconds>inutc_clock::to_sys()呢?它不应该简单地返回相同的持续时间类型吗?

c++ c++-chrono c++20

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

通常使重量级课程不可复制是一种好习惯吗?

我有一个包含潜在的顶点的Shape类,我正在考虑将copy-constructor/copy-assignment设为私有,以防止意外不必要地复制我的重量级类(例如,通过值而不是通过引用传递).

要制作Shape的副本,必须故意调用"克隆"或"复制"方法.

这是好习惯吗?我想知道为什么STL容器不使用这种方法,因为我很少想通过值传递它们.

c++ noncopyable

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

为什么不鼓励包含 features.h?

我正在阅读 linux功能测试宏页面,并在注释部分指出:

<features.h> 是 Linux/glibc 特定的头文件。其他系统也有类似的文件,但通常具有不同的名称。该头文件会根据需要自动包含在其他头文件中:无需显式包含它即可使用功能测试宏。

我知道其他系统不会具有与 features.h 相同的文件名,因此您不应直接包含它。但是,如果不包含头文件,如何知道是否可以使用功能测试宏?

c linux macros c99 header-files

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