小编Can*_*ral的帖子

如何在文件系统中存储图像

目前,我在InnoDB表中将图像(最大6MB)存储为BLOB.随着数据量的增长,夜间备份越来越慢,阻碍了正常的性能.

因此,二进制数据需要转到文件系统.(指向文件的指针将保存在数据库中.)

数据具有树关系:

- main site
  - user_0
    - album_0
    - album_1
    - album_n
  - user_1
  - user_n
etc...
Run Code Online (Sandbox Code Playgroud)

现在我希望数据通过目录结构均匀分布.我该怎么做到这一点?

我想我可以尝试MD5('userId, albumId, imageId');切片结果字符串以获取我的目录路径:

  /var/imageStorage/f/347e/013b/c042/51cf/985f7ad0daa987d.jpeg

这将允许我将第一个字符映射到服务器,并将目录结构均匀分布在多个服务器上.

然而,这不会保持每个用户组织的图像,可能将图像分散在多个服务器上的1个专辑中.

我的问题是:
在保持用户/专辑数据在一起的同时,以平衡的方式将图像数据存储在文件系统中的最佳方法是什么?

我在想正确的方向吗?或者这是完全做事的错误方式?

更新:
我将为md5(user_id)最高级别的拆分进行字符串切片.然后将所有用户数据放在同一个存储桶中.这将确保数据的均匀分布,同时保持用户数据紧密存储在一起.

  /var
   - imageStorage
     - f/347e/013b
       - f347e013bc04251cf985f7ad0daa987d
         - 0
           - album1_10
             - picture_1.jpeg
         - 1
           - album1_1
             - picture_2.jpeg
             - picture_3.jpeg
           - album1_11
             - picture_n.jpeg
         - n
           - album1_n

我想我会使用从后面拆分的albumId(我喜欢这个想法!),以保持每个目录的专辑数量更小(尽管大多数用户不需要).

谢谢!

database file-organization blob data-structures

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

使用 TextOut 函数打印新行

我正在尝试用函数打印一个新行TextOut

我试过

TextOut(hDC, 10, 20, "Hello\nWorld", strlen(text));
Run Code Online (Sandbox Code Playgroud)

但输出是“HelloWorld”。

如何使用 打印新行TextOut

c winapi

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

来自Goutte的Guzzle回应

我正在尝试从Goutte访问Guzzle Response对象.因为该对象具有我想要使用的好方法.以getEffectiveUrl为例.

据我所知,如果不破解代码,就无法做到这一点.

或者没有访问响应对象,有没有办法获取最后重定向的URL froum goutte?

php goutte guzzle

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

奇怪的strstr行为

我正在尝试在字符串中找到子字符串的位置.

#include <string.h>
#include <stdio.h>

void find_str(char const* str, char const* substr) 
{
    char* pos = strstr(str, substr);
    if(pos) {
        printf("found the string '%s' in '%s' at position: %d\n", substr, str, pos - str);
    } else {
        printf("the string '%s' was not found in '%s'\n", substr, str);
    }
}

int main(int argc, char* argv[]) 
{
    char* str = "gdeasegrfdtyguh?johh?hugfydsasdrfgthyjkjhghh";
    find_str(str, "hh");
    find_str("dhenhheme    kekekeke hhtttttttttttttttttttttttttttttttttttttttthhtttttttttttt", "hh");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

在'gdeasegrfdtyguhıjohhıhugfydsasdrfgthyjkjhghh'中找到了字符串'hh',位置:19

在'dhenhheme kekekeke hhttttttttttttttttttttttttttttttttttttttttttttttttthtttttttttttttt'中找到字符串'hh',位置:4

在第一个例子中,它表示它处于第19位.但是它不应该说是18吗?因为在第二个例子中它表示4.它从子串的开头开始.

我糊涂了.

c strstr

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

d3js箭头未显示

我有一个力向图的例子。而且我想显示箭头,但是无论我尝试了什么,我都看不到它们。

这是我的javascript

    var nodes = {};

    // Compute the distinct nodes from the links.
    links.forEach(function(link) {
        link.source = nodes[link.source] || (nodes[link.source] = {
            name: link.source
        });
        link.target = nodes[link.target] || (nodes[link.target] = {
            name: link.target
        });
    });

    var width = 960,
        height = 500;

    var force = d3.layout.force()
        .nodes(d3.values(nodes))
        .links(links)
        .size([width, height])
        .linkDistance(100)
        .charge(-300)
        .on("tick", tick)
        .start();

    var svg = d3.select("body").append("svg")
        .attr("width", width)
        .attr("height", height);

    svg.append("svg:defs").selectAll("marker")
        .data(["arrow"])
        .enter().append("svg:marker")
        .attr("id", "arrow")
        .attr("viewBox","0 0 10 10")
        .attr("refX","20")
        .attr("refY","5")
        .attr("markerUnits","strokeWidth")
        .attr("markerWidth","9")
        .attr("markerHeight","5")
        .attr("orient","auto") …
Run Code Online (Sandbox Code Playgroud)

javascript svg d3.js

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

按照Laravel 5.3中两列的差异排序

我有一个雄辩的查询,其中orderBy之一是两列的差异.

$mymodel = Level::where([['ColA', 5], ['ColB', 10], ['ColC', 7]])
                 ->orderBy('ColA', 'Desc')
                 ->orderBy('ColA' - 'ColB', 'Desc')
                 ->orderBy('ColC', 'Desc')
                 ->orderBy('ColD', 'Asc')
                 ->pluck('userId')->toArray();
Run Code Online (Sandbox Code Playgroud)

使用sqlite的localhost上完全相同的代码可以正常运行而不会出错.但在使用MySQL进行生产时出现以下错误

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'order clause' (SQL: select `userId` from `levels` where (`ColA` = 5 and `ColB` = 10 and `ColC` = 7) order by `ColA` desc, `0` desc, `ColC` desc, `ColD` asc)
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5 laravel-5.3

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