问题列表 - 第11571页

POSIX AIO库和回调处理程序

根据aio_read/write上的文档,AIO库基本上有两种方式可以通知您的应用程序异步文件I/O操作已完成.要么1)你可以使用信号,2)你可以使用回调函数

我认为回调函数比信号更受欢迎,并且可能更容易集成到更高级别的多线程库中.不幸的是,至少可以说这个功能的文档很乱.某些源(例如sigevent结构手册页)指示您需要将sigevent结构中的sigev_notify数据成员设置为SIGEV_CALLBACK,然后提供函数处理程序.据推测,处理程序在同一个线程中调用.其他文档表明您需要将sigev_notify设置为SIGEV_THREAD,它将在新创建的线程中调用回调处理程序.

在任何情况下,在我的Linux系统(带有2.6.28内核的Ubuntu)上,SIGEV_CALLBACK似乎没有在任何地方定义,但SIGEV_THREAD的工作方式与广告一样.不幸的是,创建一个新线程来调用回调处理程序似乎效率很低,特别是如果你需要调用许多处理程序.最好使用现有的线程池,类似于大多数网络I/O事件多路分解器的工作方式.有些版本的UNIX,如QNX,包括SIGEV_SIGNAL_THREAD标志,它可以让您调用使用指定的现有线程处理器,但是这似乎并没有提供在Linux上,也不显得甚至是POSIX的一部分标准.

那么,是否可以以在预先分配的后台线程/线程池中调用用户处理程序的方式使用POSIX AIO库,而不是每次调用处理程序时创建/销毁新线程?

linux posix aio

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

你在哪里储存盐串?

在散列数据库存储密码时,我总是使用正确的每个条目的盐字符串.根据我的需要,将盐存储在哈希密码旁边的数据库中一直运行正常.

但是,有些人建议将盐与数据库分开存储.他们的论点是,如果数据库受到攻击,攻击者仍然可以构建一个彩虹表,将一个特定的盐字符串考虑在内,以便一次破解一个帐户.如果此帐户具有管理员权限,那么他甚至可能不需要破解任何其他帐户.

从安全角度来看,将盐储存在不同的地方是否值得?考虑在同一台机器上具有服务器代码和DB的Web应用程序.如果盐存储在该机器上的平面文件中,则很可能如果数据库受到损害,则salt文件也是如此.

有什么建议的解决方案吗?

security authentication hash cryptography salt

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

为多人JavaScript游戏实现后端服务器的最简单方法?(COMET/longpolling)

我一直在用JavaScript编写游戏,现在是时候让它成为多人游戏了.我想使用AJAX长轮询来获得当前的游戏状态,以及实现大厅.

服务器只需要执行基本功能,比如将游戏状态存储在mysql数据库中,检索游戏状态,并格式化记分板.

我认为用PHP编写它是最简单的,但由于它会产生的apache进程数量,这将是一个坏主意.

您有什么推荐的吗?我正在寻找最直接的方法.

编辑:StreamHub似乎很好,但社区版只允许10个并发用户.

comet web-frameworks long-polling

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

MySQL与where子句连接

我有两张桌子想加入.

我想要类别表中的所有类别以及category_subscriptions表中用户订阅的所有类别.

基本上这是我目前的查询:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions 
     ON user_category_subscriptions.category_id = categories.category_id
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想在查询的末尾添加一个where子句,然后基本上使它成为内部/ equi连接.

   SELECT *
    FROM categories
    LEFT JOIN user_category_subscriptions 
         ON user_category_subscriptions.category_id = categories.category_id 
   WHERE user_category_subscriptions.user_id = 1
Run Code Online (Sandbox Code Playgroud)

如何仅使用一个查询获取特定用户订阅的所有类别以及所有类别?

category_id是类别表和user_category_subscriptions中的键.user_id驻留在user_category_subscriptions表中.

谢谢

mysql join where-clause

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

正则表达式删除撇号

我输入的文字包含'喜欢这篇文章'弗兰克的卷轴电影评论"

我怎么摆脱''

我试过了

.replace (/\'/ig, '');
.replace ('\'', '');
Run Code Online (Sandbox Code Playgroud)

但似乎'现在想删除...

我在想'可能编码的utf-8或其他东西

有任何想法吗

regex

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

新手问题:OSX上的GTK#(Mono)

我在Mono for OSX上的GTK#中迈出了我的第一步(或许我的最后一步).我写了一个.cs文件,然后尝试用mono编译:

gmcs -pkg:gtk-sharp-2.0 one.cs
Run Code Online (Sandbox Code Playgroud)

这导致了这条消息

error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs gtk-sharp-2.0', CurrentDirectory=''
Run Code Online (Sandbox Code Playgroud)

显然,这会要求我知道我在做什么.我知道

Mono的MacOS X安装程序附带Gtk +和Gtk#,因此您可以开始构建和运行包含OSX的跨平台GUI Gtk#应用程序."

所以没有什么可以安装的.

我在这里找到了GTK2

/opt/local/var/macports/sources/rsync.macports.org/release/ports/x11/gtk2/
Run Code Online (Sandbox Code Playgroud)

这是Mono安装肯定安装的.

Gmcs版本是2.4.2.2.

编辑:米格尔说我的道路上有一些奇怪的东西.

我按照Macports说明移除了所有Macport.我从.dmg重新安装了Mono.这是我目前的路径

export PATH=/opt/subversion:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin
Run Code Online (Sandbox Code Playgroud)

但即使只使用/ usr/bin,它仍然无法避免错误.

所有单声道的东西都应该是它应有的地方,包括所有的东西/Library/Frameworks/Mono.framework/Versions/Current.但是:很奇怪

/Library/Frameworks/Mono.framework/Versions/2.4.2.2/lib/gtk-sharp-2.0/ 
Run Code Online (Sandbox Code Playgroud)

是空的.但MonoDevelop运行,但不知道Gtk(我已经包含了它知道的所有引用)...

macos mono gtk#

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

中文编码怎么样?

他们用拉丁语编码吗?
他们有自己的编程语言吗?

我只是好奇.

culture

29
推荐指数
4
解决办法
3万
查看次数

在函数参数中使用联合

我最近发现有些东西编译(不确定它是否合法).我需要这样的事情:我的项目输出选定拱门的机器代码(可能与运行程序的拱门相同或不同).所以,我想最多支持64位架构现在(同时也支持现有的32个和16位archs.)我目前的解决方案是NEW_STATE的"基地"以只是一个uint64_t中,并手动铸造16位和32位的需要.虽然,我发现你可以在函数参数中编译联合.所以这个函数编译:

int pcg_new_state(pcg_state *s,int arch,void *mem,int sz,
             union{
    uint16_t b16;
    uint32_t b32;
    uint64_t b64;
}base ,int self_running);
Run Code Online (Sandbox Code Playgroud)

虽然这种事情是"合法的"或者是否受到任何其他编译器的支持?而且,我无法弄清楚如何在不创建联合的情况下调用此函数,然后将此联合传递给new_state.

c parameters types function unions

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

Win32API - 如何从进程句柄获取进程的文件名?

如何从进程句柄获取进程的文件名?我正在使用Win32 C++(Visual C++ Express Edition).

谢谢.

c++ winapi process

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

密码盐:其他最佳实践

像大多数程序员一样,我不是密码学方面的专家,但我理解基础知识.然而,正如Jeff的博客文章所述,一点点知识可能是一件危险的事情.考虑到这一点,我理解盐值的目的但我需要一些帮助来理解如何使用盐值.

我已经阅读过关于这个主题的其他帖子,最好使用随机盐值来加密每个密码.如果是这种情况,当我尝试对用户进行身份验证时,如何重现该随机盐值?在这种情况下,我会加密用户提供的明文密码,对其进行加密,并将其与存储在数据库中的密码进行比较.在创建密码时,是否将随机盐值与加密密码一起存储在用户记录中?如果黑客拥有完整的用户记录,这会使盐值无用吗?

cryptography salt

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