小编Nic*_*ton的帖子

打破集中式数据库最具成本效益的方法是什么?

继这个问题......

......客户不情愿地要求我引用选项3(价格昂贵的选项),因此他们可以将价格与印度的公司进行比较.

所以,他们要我引用(嗯).为了让我尽可能准确,我需要决定我是如何做到的.这是3个场景......

方案

拆分数据库

我最初的想法(也许是最棘手的)将在网站和桌面应用程序上产生最佳速度.但是,它可能需要在两个数据库之间进行一些同步,因为两个"系统"如此密切相关.如果做得不好而且没有经过彻底的测试,我已经知道同步在地球上可能是地狱.

在最小的系统上实现缓存

为了支持同步选项(我不喜欢),我认为将整个中央数据库和Web服务移动到他们的办公室(即内部)可能会更高效(也更便宜),并且网站(仍在托管服务器上)从中心局下载数据并将其存储在一个小型数据库中(充当缓存)......

  1. 在客户办公室(内部)设置新服务器.
  2. 将中央数据库和Web服务移动到新的内部服务器.
  3. 将网站保留在托管服务器上,但更改Web服务URL以使其指向办公室服务器.
  4. 为图像和最常访问的数据(例如产品信息)实现简单的缓存系统.

......不利的一面是,当办公室的最终用户更新某些东西时,他们的客户将有效地从60KB/s的上传连接下载数据(尽管一次,因为它将被缓存).

此外,并非所有数据都可以缓存,例如,当客户更新其订单时.此外,连接冗余成为一个重要因素; 如果办公室连接离线怎么办?没什么可做的,只是向客户显示错误信息,这是令人讨厌的,但是必要的邪恶.

神秘选项3号

建议欢迎!

SQL复制

我曾考虑过MSSQL复制.但我没有经验,所以我担心如何处理冲突等等.这是一个选择吗?考虑到涉及物理文件,等等.另外,我认为我们需要从SQL Express升级到SQL非免费,并购买两个许可证.

技术

组件

  • ASP.Net网站
  • ASP.net网络服务
  • .Net桌面应用程序
  • MSSQL 2008表达数据库

连接

  • 办公室连接:8 mbit 向下和1 mbit 向上扩展线(50:1)
  • 托管虚拟服务器:具有10兆位线路的Windows 2008

.net c# sql-server asp.net

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

使用Microsoft.Web.Administration时,为什么我无法获取FTP站点的Site.State?

使用以下C#代码:

using System;
using Microsoft.Web.Administration;

namespace getftpstate
{
  class Program
  {
    static void Main(string[] args)
    {
      ServerManager manager = new ServerManager();
      foreach (Site site in manager.Sites)
      {
        Console.WriteLine("name: " + site.Name);
        Console.WriteLine("state: " + site.State);
        Console.WriteLine("----");
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

C:\projects\testiisftp\getftpstate\getftpstate\bin\Debug>getftpstate.exe
name: Default Web Site
state: Stopped
----
name: Default FTP Site

Unhandled Exception: System.Runtime.InteropServices.COMException (0x800710D8): T
he object identifier does not represent a valid object. (Exception from HRESULT:
 0x800710D8)
   at Microsoft.Web.Administration.Interop.IAppHostProperty.get_Value()
   at Microsoft.Web.Administration.ConfigurationElement.GetPropertyValue(IAppHos
tProperty property)
   at Microsoft.Web.Administration.Site.get_State()
   at …
Run Code Online (Sandbox Code Playgroud)

c# iis

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

Qt是否有将字节转换为int的方法,反之亦然?

我正在尝试找到一个Qt函数,它可以将字节转换为int,具有与我在下面使用的相同的字节序.我觉得我肯定在这里重新发明轮子,并且Qt libs中必定有一些东西可以做到这一点.它存在吗?

// TODO: qt must have a built in way of converting bytes to int.
int IpcReader::bytesToInt(const char *buffer, int size)
{
    if (size == 2) {
        return
            (((unsigned char)buffer[0]) << 8) +
              (unsigned char)buffer[1];
    }
    else if (size == 4) {
        return
            (((unsigned char)buffer[0]) << 24) +
            (((unsigned char)buffer[1]) << 16) +
            (((unsigned char)buffer[2]) << 8) +
              (unsigned char)buffer[3];
    }
    else {
        // TODO: other sizes, if needed.
        return 0;
    }
}

// TODO: qt must have a …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

为什么我的图像旋转算法不起作用?

尝试 1 和 2:

注意:删除了减少问题大小的首次尝试。请参阅社区 wiki 了解之前的尝试。

尝试3:

根据 fuzzy-waffle 的示例,我已经实现了以下内容,但它似乎无法正常工作。有什么想法我可能做错了什么吗?

ImageMatrix ImageMatrix::GetRotatedCopy(VDouble angle)
{
    // Copy the specifications of the original.
    ImageMatrix &source = *this;
    ImageMatrix &target = CreateEmptyCopy();

    double centerX = ((double)(source.GetColumnCount()-1)) / 2;
    double centerY = ((double)(source.GetRowCount()-1)) / 2;

    // Remember: row = y, column = x
    for (VUInt32 y = 0; y < source.GetRowCount(); y++)
    {
        for (VUInt32 x = 0; x < source.GetColumnCount(); x++)
        {
            double dx = ((double)x) - centerX;
            double dy = …
Run Code Online (Sandbox Code Playgroud)

math image image-processing

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

如何在OpenGL中设置顶点的不透明度?

以下代码段绘制了一个灰色方块.

glColor3b(50, 50, 50);

glBegin(GL_QUADS);
glVertex3f(-1.0, +1.0, 0.0); // top left
glVertex3f(-1.0, -1.0, 0.0); // bottom left
glVertex3f(+1.0, -1.0, 0.0); // bottom right
glVertex3f(+1.0, +1.0, 0.0); // top right
glEnd();
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,这个单个方块后面有一个彩色立方体.

我应该使用什么函数来使正方形(并且只有这个正方形)不透明?

c++ opengl transparency opacity

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

当C++线程退出时,内存是否保持分配状态?

我在Linux上使用pthread库.

我在线程A中分配一个字符串,然后尝试在线程B中打印字符串.但是,字符串只打印出空(我已经验证它在线程A中有效).

注意:字符串驻留在一个对象内部,我怀疑它可能被清理或重新实例化为空...容器对象不会给我一个seg错误或任何东西,只是所有的值都是空的.

这是因为线程无法从其他线程访问内存,还是因为线程A停止后内存未被分配?或者它既不是; 它可能是我的代码中的一个错误,但我只想排除这个...

更新:

事实证明这是一个记忆问题.感谢您的回答,我也回答了这个问题,如果您同意/不同意,请对我的回答发表评论.

c++ multithreading pthreads

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

如何在OpenGL中使纹理透明?

我试图在谷歌上研究这个问题,但似乎没有任何连贯的简单答案.这是因为它不简单,还是因为我没有使用正确的关键字?

然而,这是我迄今取得的进步.

  1. 创建了8个顶点以形成2个正方形.
  2. 创建具有200位alpha值的纹理(因此,大约80%透明).
  3. 为每个正方形指定相同的纹理,正确显示.
  4. 注意到当我使用255 alpha的纹理时,它看起来更亮.

init类似于以下内容:

glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);

glEnable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1, textureIds);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

int i, j;
GLubyte pixel;
for (i = 0; i < TEXTURE_HEIGHT; i++)
{
    for (j = 0; j < TEXTURE_WIDTH; j++)
    {
        pixel = ((((i & 0x8) == 0) ^ ((j & 0x8) == 0)) * 255);
        texture[i][j][0] = pixel;
        texture[i][j][1] = pixel;
        texture[i][j][2] = pixel;
        texture[i][j][3] = 200;
    }
}

glBindTexture(GL_TEXTURE_2D, textureIds[0]);

glTexParameterf(GL_TEXTURE_2D, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl textures opacity

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

分配有新内存的内存是否自动释放?

我99%肯定的答案,这是一个致盲没有.请验证我的命题,即以下代码将产生内存泄漏.

Data &getData()
{
    Data *i = new Data();
    return *i;
}

void exampleFunc()
{
    Data d1 = getData();
    Data d2;

    /* d1 is not deallocated because it is on the heap, and d2 is
     * because it is on the stack. */
}
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个过于简单的例子,所以显然你不会真正使用上面的代码...所以不需要指出这一点谢谢.

更新1:

要添加到此,如果我将指针指定给引用怎么办?在这种情况下,我假设数据没有复制......

Data &getData()
{
    Data *i = new Data();
    return *i;
}

void exampleFunc()
{
    // Does copying occur here?
    Data &d1 = getData();

    // Does this deallocate the memory assigned to …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

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

其他开源项目如何花费捐款?

我是Synergy +项目的开发人员,今天我们收到了第一笔捐款!现在,我确实曾写过我们会把钱花在广告上,以便找到新的开发者 - 但我不确定如何去做,或者这是花钱捐赠的最佳方式.我们会把它花在托管上,只有我们只使用罐头托管我们的网站是免费的.也许将来我们会有一些托管服务,但我不知道是否有必要.

有没有人有处理最终用户捐款的经验?我想知道其他项目对此做了什么(例如Ubuntu).我们应该保存它以备不时之需吗?此外,我接受PayPal捐款到我的个人账户,我有点担心,因为该项目不属于我 - 它真的拥有集体所有权.让一个人担任财务主管是正常的吗?

更新1:

感谢您的意见!作为回应,我已经改变了关于如何花费捐款的声明.

"我们目前正在建立一个资金储备,以便我们可以聘请专业的开源开发人员来解决最关键的错误,并推动项目的进展.我们承诺非常谨慎地花费您的捐款,并讨论如何在两者之间花费资金.我们所有的重要项目成员.您的捐款不仅可以帮助我们的项目向前发展,还可以提升道德和社区精神 - 因为它表明我们所做的事情真的很重要!谢谢."

open-source donations

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

如何获取物理会话的当前用户令牌?

我有一些代码,我正在尝试获取当前会话用户令牌:

#include <Wtsapi32.h>

DWORD activeSessionId = WTSGetActiveConsoleSessionId();

HANDLE currentToken;
BOOL queryRet = WTSQueryUserToken(activeSessionId, &currentToken);

if (!queryRet) {
    DWORD err = GetLastError();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误的价值是1314.

更新1

到目前为止没有运气,试图授予当前进程SE_TCB_NAME - 但仍然从WTSQueryUserToken(1314)获得相同的错误.

HANDLE process = GetCurrentProcess();

HANDLE processToken;
BOOL openTokenRet = OpenProcessToken(
    process, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &processToken);

if (!openTokenRet)
{
    DWORD err = GetLastError();
    return 0;
}

TOKEN_PRIVILEGES tokenPrivs;
BOOL lookupRet = LookupPrivilegeValue(
    NULL, SE_TCB_NAME, &tokenPrivs.Privileges[0].Luid);

if (!lookupRet)
{
    DWORD err = GetLastError();
    return 0;
}

tokenPrivs.PrivilegeCount = 1;
tokenPrivs.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

BOOL …
Run Code Online (Sandbox Code Playgroud)

winapi wtsapi32

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