小编Hom*_*er6的帖子

Redis使用的基础数据结构是什么?

我想在一个明确的清单中回答两个问题:

  1. Redis使用的基础数据结构是什么?
  2. 每种类型的主要优点/缺点/用例有哪些?

所以,我读过Redis列表实际上是用链表实现的.但对于其他类型,我无法挖掘任何信息.此外,如果有人偶然发现了这个问题并且没有对修改或访问不同数据结构的优缺点进行高级概述,那么他们就会有一个完整的列表,列出何时最好地使用特定类型来引用.

具体来说,我想概述所有类型:字符串,列表,集,zset和哈希.

哦,到目前为止,我已经看过这些文章,其中包括:

algorithm redis data-structures

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

Redis比mongoDB快多少?

人们普遍提到Redis是"Blazing Fast",mongoDB也很快.但是,我很难找到比较两者结果的实际数字.鉴于类似的配置,功能和操作(并且可能显示因子如何随着不同的配置和操作而变化)等,Redis速度提高了10倍,速度提高了2倍,速度提高了5倍?

我只谈到性能.据我所知,mongoDB是一个不同的工具,具有更丰富的功能集.这不是"mongoDB 比Redis 更好 "的辩论.我问,Redis比mongoDB好多少?

在这一点上,即使是便宜的基准也比没有基准更好.

benchmarking mongodb redis

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

关于仅使用标头的c ++库的使用量化指标(基准)

我试图用SO找到答案.有许多问题列出了在c ++中构建一个只有头文件库的各种优缺点,但是我无法找到一个以可量化的术语来构建这样的库.

因此,在可量化的术语中,使用传统上分离的c ++标头和实现文件与仅标头之间有什么不同?

为简单起见,我假设不使用模板(因为它们只需要标题).

详细说明,我列出了我从文章中看到的优点和缺点.显然,有些不容易量化(例如易用性),因此无法用于量化比较.我会用可量化的方式标记那些我期望可量化的指标.

仅限标题的优点

  1. 由于您不需要在构建系统中指定链接器选项,因此更容易包含.
  2. 您始终使用与代码的其余部分相同的编译器(选项)编译所有库代码,因为库的函数在代码中内联.
  3. 它可能要快得多.(定量的)
  4. 可以为编译器/链接器提供更好的优化机会(如果可能,可以解释/量化)
  5. 如果你仍然使用模板是必需的.

仅限标题的缺点

  1. 它使代码膨胀.(可量化的)(这会如何影响执行时间和内存占用)
  2. 编译时间更长.(定量的)
  3. 失去接口和实现的分离.
  4. 有时会导致难以解决的循环依赖关系.
  5. 防止共享库/ DLL的二进制兼容性.
  6. 它可能会加剧那些喜欢使用C++的传统方式的同事.

您可以从较大的开源项目(比较类似大小的代码库)中使用的任何示例都非常感激.或者,如果您知道可以在仅标题版本和分离版本之间切换的项目(使用包含两者的第三个文件),那将是理想的.轶事数字也很有用,因为它们给了我一个可以获得一些洞察力的球场.

利弊来源:

提前致谢...

更新:

对于可能稍后阅读并且有兴趣获得关于链接和编译的一些背景信息的任何人,我发现这些资源很有用:

更新:(回应下面的评论)

仅仅因为答案可能不同,并不意味着测量是无用的.你必须开始测量一些点.您拥有的测量值越多,图像就越清晰.我在这个问题上要求的不是整个故事,而是对图片的一瞥.当然,如果他们想要不道德地宣传他们的偏见,任何人都可以使用数字来扭曲争论.但是,如果有人对两个选项之间的差异感到好奇并发布这些结果,我认为这些信息很有用.

没有人对这个话题感到好奇,足以衡量它吗?

我喜欢枪战项目.我们可以从删除大部分变量开始.只在一个版本的linux上使用一个版本的gcc.仅对所有基准测试使用相同的硬件.不要使用多个线程进行编译.

然后,我们可以测量:

  • 可执行大小
  • 运行
  • 内存占用
  • 编译时间(对于整个项目和更改一个文件)
  • 链接时间

c++ benchmarking header-only

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

我应该如何组织通用编程库的目录结构?

我已经编写了我自己的通用PHP库一段时间了,我正在考虑如何组织目录结构,但我想在我正式化库的目录结构之前得到人们的想法.

这是我到目前为止:https: //github.com/homer6/altumo/tree/master/source/php

我以为我可以"按主题"或"按类别"进行.到目前为止,我只能想到一个我喜欢"按类别"的例子:Boost http://www.boost.org/doc/libs/1_46_1/?view=categorized

此外,Qt是按模块组织的,但我认为它有点乱,因为所有内容都有点填入QtCore http://qt-project.org/doc/qt-5/qtmodules.html

有任何想法吗?

提前致谢.

更新:我发现了一本非常好的书,它向我展示了许多伟大的图书馆设计惯例:http://www.apibook.com/blog/

更新:我发现了一篇有趣的文章提到了代码组织(http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html).在底部,它说:"你的代码树会是什么样子?他希望用这些词来形容它:简单,实用,优雅,正交,可组合.这是理想的,现实有点不同."

php organization

34
推荐指数
3
解决办法
4273
查看次数

我如何保护Socket.IO?

我已经和Socket.IO一起工作了几天,这既令人兴奋又令人沮丧.缺乏当前的文档/教程使学习变得非常困难.我终于设法创建了一个基本的聊天系统,但有一个明显的问题.我该如何保护它?

是什么阻止恶意用户复制(或编辑)我的代码并连接到我的服务器?我可以从我的PHP脚本中获取用户名并将其提交给Socket.IO,这样我就可以将它们识别为该用户(当然PHP具有安全性),但是什么阻止某人提交未注册的用户名?

如何确保提交的事件是真实的并且没有被篡改?

我的基本socket.io聊天参考.

服务器:

var io = require('socket.io').listen(8080);
var connectCounter = 0;
io.sockets.on('connection', function (socket) {
connectCounter++;
 console.log('People online: ', connectCounter);

socket.on('set username', function(username) {
socket.set('username', username, function() {
console.log('Connect', username);

    });
});
socket.on('emit_msg', function (msg) {
    // Get the variable 'username'

socket.get('username', function (err, username) {
      console.log('Chat message by', username);
      io.sockets.volatile.emit( 'broadcast_msg' , username + ': ' + msg );
    });

  });

socket.on('disconnect', function() { connectCounter--; });
});
Run Code Online (Sandbox Code Playgroud)

客户:

    <?php session_start() ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta …
Run Code Online (Sandbox Code Playgroud)

javascript security node.js socket.io

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

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

如何将Kindle用作源代码阅读工具?

我是程序员.我想成为一名更好的程序员.我想阅读其他人编写的更多源代码(特别是开源项目).此外,我希望能够对所有源代码进行现有的可搜索引用,以便我可以提取对结构和片段的引用.

有谁知道使用Kindle的方法吗?有人试过吗?你的发现是什么?

另外,有没有人知道一个索引所有开源源代码的网站?

github kindle ipad

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

HTTP客户端指示HTTP服务器禁用gzip响应的规范方法是什么?

我认为这是一个简单的谷歌搜索,但显然我错了.

我见过你应该提供:

Accept-Encoding: gzip;q=0,deflate;q=0
Run Code Online (Sandbox Code Playgroud)

在请求标头中.但是,建议它的文章也指出代理通常会忽略该标头.此外,当我将它提供给nginx时,它仍然压缩了响应消息体.

http://forgetmenotes.blogspot.ca/2009/05/how-to-disable-gzip-compression-in.html

那么,如何告诉Web服务器在响应消息体上禁用压缩?

compression gzip http http-accept-encoding

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

使用Poco C++库,如何将数据传递给线程?

所以我的问题实际上有几个部分:

使用Poco线程库:

  1. 将数据传递给线程的所有可能方法是什么(在线程调用和已经运行的线程中).
  2. 您最喜欢哪种方法?为什么?您能否提供有关使用这些方法的经验的任何其他信息?
  3. Applied Informatics(Poco的作者)推荐哪些方法?Applied Informatics是否提供了其他文档,概述了将参数传递给线程?

我已经看过这里了:

提前致谢...

c++ multithreading argument-passing poco-libraries

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

为什么MongoDB在负载测试期间没有响应?

我有一个问题,MongoDB无法响应并拒绝生产中的连接.

在测试中,我能够通过向我的应用程序发送大量请求来一致地重现"锁定".

以下是mongostat的示例输出:

     0      0      0      0       0       1       0   1.3g   1.8g   177m      0        0          0       0|0     0|0    62b     1k    18   19:40:11
     0      0      0      0       0       1       0   1.3g   1.8g   177m      0        0          0       0|0     0|0    62b     1k    18   19:40:12
--------------LOAD TEST BEGINS-----------------------   
     1     56      0      0       1      58       0   1.3g  1.81g   177m      0        0          0       0|0     0|0    10k   302k    18   19:40:13
    10    116      0      0       2     127       0   1.3g  1.81g   177m      0        0          0       0|0     1|0    32k   263k …
Run Code Online (Sandbox Code Playgroud)

mongodb

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