小编Pon*_*oni的帖子

MySQL集群问题

我已经阅读了很多MySQL Cluster文档和一些教程,但我仍然有一些不清楚的东西,现在主要的是:

  1. 当数据节点重新启动(崩溃并再次启动)时,它的数据是否仍然可用?更新/添加将照常工作?它会"同步"吗?
  2. 群集的工作速度是否比独立群集快?特别是,我多次更新行,但一次更新一行,这意味着网络延迟可能会对性能产生影响.我可以遵循哪些模式来加快速度,例如添加更多SQL节点或添加模式数据节点?

关于问题#2,行的更新采用以下语法:

UPDATE db_accounts.tbl_items SET items=items+%lld WHERE id_account=%u
Run Code Online (Sandbox Code Playgroud)

"id_account"是一个索引(唯一).

mysql cluster-computing

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

C++函数调用路由解析器

我正在寻找一种工具来告诉/解决每个函数的所有调用路径(称之为"路由").

例如:

void deeper(int *pNumber)
{
 *pNumber++;
}
void gateA(int *pNumber)
{
 deeper(pNumber);
}
void gateB(int *pNumber)
{
 gateA(pNumber);
}

void main()
{
 int x = 123;
 gateA(&x);
 gateB(&x);
}
Run Code Online (Sandbox Code Playgroud)

看到?我需要一个工具来告诉我更深层次的所有路线(),如果可能的话还有更多.

通过说"更多"我的意思是它会告诉我指针是否与提供给调用函数的指针相同.

这将大大节省我的时间.谢谢!

c++ windows code-analysis

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

内存碎片@ boost :: asio?

我几乎坚持一个我从来没有得到答案的问题,一个解决一个极其重要问题的问题; boost :: asio中的内存碎片.

在文档中也没有找到任何内容,也没有在SO

boost :: asio中的异步函数,例如async_write()和async_read_some()总是会分配一些东西.(在我的例子中,它分别是144和96字节,在VC9 Debug版本中).

我怎么知道呢?
我将客户端连接到此库提供的"echo server"示例.
我在"new.cpp"的代码"new new(size_t size)"处设置了一个断点.
然后我发送"123".断点被击中了!
现在使用堆栈跟踪我可以清楚地看到"新"调用的根来自我在函数处理程序中进行的async_write()和async_read_some()调用.

所以内存碎片迟早会出现,因此我不能使用ASIO,我希望我能!

我想要指出,我理解异步操作至少在IOCP上需要在操作期间使用分配的结构,直到完成(调用处理程序时).
例如,对于IOCP,每个操作(读/写)必须具有OVERLAPPED结构.
我怀疑这就是我有上述小额分配的原因,他让我担心内存碎片问题.
那么如何汇集这些课程呢?当然,平台无关.

任何的想法?任何有用的代码示例?我相信你们中的一些人已经解决了这个问题.

memory fragmentation boost-asio

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

mysqlclient.lib 的来源在哪里?

我有一个连接到 MySQL 服务器的 C++ 应用程序。
一切正常。

目前它使用 libmysql.dll。
在构建时,我链接到 libmysql.lib。

据我所知,我可以链接到 mysqlclient.lib 并摆脱对 libmysql.dll 的依赖,即将功能嵌入到我的 exe 中。

我的问题是:在哪里可以找到构建 mysqlclient.lib 的源代码

当调试应用程序时,它链接到 mysqlclient.lib 并进入 mysql_library_init() 例如调试器 (VC++ 2008) 要求文件“f:\build\mysql-5.0.67-winbuild\mysql-community-nt-5.0 .67-build\libmysql\libmysql.c”。

注意:安装 MySQL 时包含 libmysql.lib 和 mysqlclient.lib。

c mysql libmysql

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

选择受更新影响的行

如果我有一个包含此字段的表格:

int:id_account
int:session
string:password
Run Code Online (Sandbox Code Playgroud)

现在对于登录语句,我运行这个sql UPDATE命令:

UPDATE tbl_name
SET session = session + 1
WHERE id_account = 17 AND password = 'apple'
Run Code Online (Sandbox Code Playgroud)

然后我检查一行是否受到影响,如果确实受到了影响,我知道密码是正确的.

接下来我要做的是检索这个受影响的行的所有信息,这样我就可以获得其余的字段信息.
我可以使用一个简单的SELECT语句,但我确定我在这里缺少一些东西,你必须有一个更好的方式,你们大佬知道,并告诉我(:
自从我写的第一次登录sql语句以来,它一直困扰着我.

如果UPDATE确实更新了一行,是否有任何性能方法将SELECT组合成UPDATE?
或者我最好将两个陈述简单地留下来?不需要原子性,所以我最好远离表锁,例如,不是吗?

mysql sql

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

nodejs/express/ejs render() 同步

res.render("index.ejs", {});
Run Code Online (Sandbox Code Playgroud)

对于简单的情况,上面的内容就可以了。

如何让 EJS 返回处理后的字符串作为函数的返回值?让它像这样工作:

res.send(ejs.render("index.ejs", {}));
Run Code Online (Sandbox Code Playgroud)

换句话说 -我想嵌套/链接一些 render() 调用,而不是异步调用。

Express 似乎本身并不支持此功能,是吗?
如果没有,那我如何直接通过EJS实现呢?

如果您想知道为什么我更喜欢“坏”方式(同步),那么我有一件事要说:缓存。
无论如何,模板都会被缓存,所以我不介意模板的第一次加载速度较慢(无论如何只有几毫秒)。
与必须处理对 render() 的嵌套异步调用相比,时间分数的单次延迟成本是没有成本的。

javascript ejs node.js express

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

boost :: asio是否会产生过多的小堆分配,还是我错了?

#include <cstdlib>
#include <iostream>
#include <boost/bind.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

class session
{
public:
    session(boost::asio::io_service& io_service)
        : socket_(io_service)
    {
    }

    tcp::socket& socket()
    {
        return socket_;
    }

    void start()
    {
        socket_.async_read_some(boost::asio::buffer(data_, max_length - 1),
            boost::bind(&session::handle_read, this,
            boost::asio::placeholders::error,
            boost::asio::placeholders::bytes_transferred));
    }

    void handle_read(const boost::system::error_code& error,
        size_t bytes_transferred)
    {
        if (!error)
        {
            data_[bytes_transferred] = '\0';
            if(NULL != strstr(data_, "quit"))
            {
                this->socket().shutdown(boost::asio::ip::tcp::socket::shutdown_both);
                this->socket().close(); // how to make this dispatch "handle_read()" with a "disconnected" flag?
            }
            else
            {
                boost::asio::async_write(socket_,
                    boost::asio::buffer(data_, bytes_transferred),
                    boost::bind(&session::handle_write, this,
                    boost::asio::placeholders::error));

                socket_.async_read_some(boost::asio::buffer(data_, max_length …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management boost-asio

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

为锦标赛系统分配奖品

我正在寻找一种将数字分布到 x 个单位的方法。我什至不知道如何表达这个词,所以我举个例子:

有一场锦标赛,总奖金为 1000 美元。我希望前 20 名获胜者/参赛者能够从中赢得一些东西。
我需要一个数学算法/公式,将其分配给这些玩家,并让我有能力控制分配的某些其他因素。

例如,我希望排名第一的获胜者能够获得 300 美元。排名第二的获胜者将获得较小的比例。总分配必须给每个人一些东西,直到前 20 名获胜者(最后一名)将获得至少 X 美元。
X$ 是我想要控制的另一个因素。

任何想法?这个问题有名字吗(这个名字是什么)?有代码示例吗?

编辑 #1 - 我的第一个提案

#include <conio.h>
#include <vector>

#define TOTAL                       100
#define WINNERS                     15
#define FIRST_WINNER_PERCENTAGE     0.30

void distribute_1(::std::vector<double> * const prizes)
{
    prizes->clear();

    double total = TOTAL;
    double winning_percentage = FIRST_WINNER_PERCENTAGE;
    double slope = 0.5;
    int winners = WINNERS;

    double winning = 0;
    for(int i = 0; i < winners; i++, total -= winning, winning_percentage /= 2)
    {
        winning …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm math

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

老虎机支付计算

我想创建一个5卷轴老虎机计算系统,我不知道采取什么方法.

我知道其中有很多数学,特别是如果我希望机器对玩家来说是愉快的.

那有什么提示/链接吗?在网上寻找信息,但他们从玩家的角度讨论它,而不是开发人员的观点,在我发现的所有情况下.

只是为了说清楚; 我不是在用户界面之后,而是在内部机器的支付计算之后,这将确保房子在保持良好可玩性的同时获得收入.

编程语言将是C++,但我对其他人很好.

c++ algorithm gambling

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

qooxdoo vs骨干

我使用过Backbone.js并且喜欢它.

最近我偶然遇到了qooxdoo?它似乎更好(对于OOP代码设计)!
完全OOP支持(喜欢继承[ this.base],命名空间等').
我还没有深入研究它,所以我在寻找与Backbone.js的比较而没有任何成功.

所以,如果你使用过两者 - 关于Backbone.js你能说些什么关于qooxdoo?

我不是在谈论Backbone中的"模型持久化"(保存/删除ajax调用)以及qooxdoo(qx.ui.form.Button)中的UI等功能,而是编码结构和可维护性.

javascript oop javascript-framework qooxdoo backbone.js

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