小编The*_*boy的帖子

mgo - 查询性能似乎一直很慢(500-650ms)

我的数据层使用了相当数量的Mongo聚合,平均而言,查询需要500-650毫秒才能返回.我在用mgo.

下面显示了一个示例查询函数,它表示我的大多数查询的外观.

func (r userRepo) GetUserByID(id string) (User, error) {
    info, err := db.Info()
    if err != nil {
        log.Fatal(err)
    }

    session, err := mgo.Dial(info.ConnectionString())
    if err != nil {
        log.Fatal(err)
    }
    defer session.Close()

    var user User
    c := session.DB(info.Db()).C("users")
    o1 := bson.M{"$match": bson.M{"_id": id}}
    o2 := bson.M{"$project": bson.M{
        "first":           "$first",
        "last":            "$last",
        "email":           "$email",
        "fb_id":           "$fb_id",
        "groups":          "$groups",
        "fulfillments":    "$fulfillments",
        "denied_requests": "$denied_requests",
        "invites":         "$invites",
        "requests": bson.M{
            "$filter": bson.M{
                "input": "$requests",
                "as":    "item",
                "cond": bson.M{
                    "$eq": []interface{}{"$$item.active", true}, …
Run Code Online (Sandbox Code Playgroud)

performance go mongodb mgo

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

Docker Compose w/Gulp - 未找到本地 gulp

我正在尝试在 Docker 容器中使用 gulp。

我有以下内容Dockerfile

FROM golang:alpine
RUN apk --update add --no-cache git nodejs
RUN npm install --global gulp
ENV GOPATH=/go PATH=$PATH:/go/bin
VOLUME ["/go/src/github.com/me/sandbox", "/go/pkg","/go/bin"]
WORKDIR /go/src/github.com/me/sandbox
CMD ["gulp"]
Run Code Online (Sandbox Code Playgroud)

我有以下内容docker-compose.yml

version: '2'
services:
service:
    build: ./service
    volumes:
        - ./service/src/:/go/src/github.com/me/sandbox
Run Code Online (Sandbox Code Playgroud)

docker-compose build构建成功,但是当我运行时docker-compose up,我收到以下错误消息

Recreating sandbox_service_1
Attaching to sandbox_service_1
service_1  | [22:03:40] Local gulp not found in /go/src/github.com/me/sandbox
service_1  | [22:03:40] Try running: npm install gulp
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的方法来尝试修复它。

  • 还尝试过gulp-cli全局和本地安装
  • gulp尝试在本地安装npm install gulp
  • 尝试移动npm …

node.js docker gulp docker-compose

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

Native SQL(使用MySQL)与使用Hibernate ORM的性能差异?

我使用Spring MVC作为一个应用程序,涉及管理的多级后端和客户/成员前端.该项目最初启动时没有框架和简单的本机JDBC调用来进行数据库访问.

随着项目的显着增长(一如既往),我进行了更为重要的数据库调用,有时会查询大量的选择.

我正在尽我所能来处理我的db调用以密切模拟对象关系映射最佳实践,但我仍然只是使用JDBC.我一直在考虑是否应该过渡到冬眠,但不确定它是否值得.如果值得获得性能,我愿意这样做.

使用Hibernate(甚至只是对象关系映射)比使用JDBC的本机SQL有任何性能提升吗?

java mysql orm hibernate jdbc

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

WPF网格无法正常拖放

我正在使用一个使用网格拖放操作的应用程序.应用程序由对象列表支持.删除网格时,网格的子项(我的数据)将添加到列表中.所以基本上它是一个List,但这并不是那么重要.

每个网格包含两个内部网格.第一个网格包含一个标签,第二个网格包含一个组件,如TextBox或DropDown框.(它是一个用于构建HTML表单的拖放编辑器).

我的工作更容易让用户看到,当他们拖过网格,如果他们要通过检查鼠标,而他们正在拖在网格元素的位置的上方下降,低于或元素.

我遇到的问题是当我拖过网格的子元素时,DragOver,DragDrop等只会触发.我试图从冒泡到隧道,反之亦然,但我无法弄明白.

我需要在Grid Element上设置一些允许整个Grid接受丢弃的内容吗?

c# wpf drag

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

Math.Round() - LINQ查询

我正在运行LINQ查询,该查询使用本地"let"变量来计算本地值,以与传递给查询的参数进行比较.

我有以下查询:

Items = from lead in Items
        let total = lead.NurtureActions.Count(q => !q.Deleted)
        let completed = lead.NurtureActions.Count(nurtureAction => nurtureAction.Completed && !nurtureAction.Deleted)
        let percentage = Math.Round((Double)((completed/total)*100),0,MidpointRounding.ToEven)
        where 
            total>0 && 
            percentage == progress
        select lead;
Run Code Online (Sandbox Code Playgroud)

上面非常重要的部分是以下行:

let percentage = Math.Round((Double)((completed/total)*100),0,MidpointRounding.ToEven)
Run Code Online (Sandbox Code Playgroud)

正如您在我的查询中看到的那样,我将该查询的结果与progress传递给我的函数进行比较.

例如:我可能会传入值8,因此progress会有值8.但计算的percentage最初可能是8.223,但我需要将其舍入到8.

我相信我这样做是正确的,但由于某种原因,某些东西不能正常工作.

什么可能会抛出四舍五入的想法?我也尝试了AwayFromZero舍入选项,但这也不起作用.

编辑对于那些要求更多信息的人,我不确定它的计算价值.我没有调试LINQ查询的经验,也不知道从哪里开始查找该值是什么.如果我知道如何获得它,我会提供它.

.net c# linq math

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

MVC 3中的byte []到文件类型

在我的MVC应用程序中,我最近配置了一个页面,允许上传任意文件类型(某些限制不适用于此问题).

我将文件作为数据类型byte []存储在数据库中,存储的文件类型基于文件扩展名(请不要试图给我一个更好的选项来存储这些文件,我很清楚存储文件在数据库不是一个好习惯,但我们有一个约束,要求我们使用SQL Server持久保存这些文件.)

正如我所说,为了使这更糟糕,我将文件的byte []数组存储在数据库类型为text的列中.这只是这样做,所以我不必担心varbinary类型的限制.

我想知道的是,当请求文件时,MVC将这些文件返回给具有指定文件扩展名的用户的最佳方法是什么?

我之前已经能够使用excel文件和AJAX调用我的控制器上的"GET"操作,但我想知道是否有更好的方法来执行此操作.

有什么建议?

示例:如果我有以下代码

string fileExtension = /*Some File Extension*/
byte[] data = MyDataContext.DocumentTable.First(p => p.DocumentUID == id);
Run Code Online (Sandbox Code Playgroud)

然后,我如何使用最初保留的fileExtension以指定的文件格式将此数据返回给用户.

编辑我猜测FileResult将是实现这一目标的最简单方法之一.

c# asp.net-mvc asp.net-mvc-3

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

Elmah没有使用gmail for MVC 3

我使用ELMAH作为我的MVC 3应用程序与Gmail.我已经使用了几个关于如何执行此操作的参考,包括此StackOverflow问题,该问题涉及多个修复程序

我仍然无法确定为什么我没有收到来自elmah的电子邮件.我试图通过在我调用的代码中抛出NullReferenceException来测试它.

我的web.config如下所示:

     <configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
    <sectionGroup name="elmah">
      <section name="errorMail" requirePermission="false"  type="Elmah.ErrorMailSectionHandler, Elmah"/>
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" /> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc elmah web-config

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

带有Dictionary参数的WCF HTTP POST Rest服务

我正在开发一个WCF休息服务,需要接受一组NAme值的值.这些值尚不清楚,因此我们需要使用名称值对的通用列表.

我尝试了多种方法,但我不确定最好的方法是什么.我想我可以访问HttpContext并从请求体中提取值,但我无法做到这一点.

使用带有名称值列表对的HTTP Post的WCF操作的最佳方法是什么,以便在操作中读取它们类似于将其从Request ["Key"]中拉出来的操作?

rest wcf post

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

Task.WaitAll - 不等待?

我试图在任务并行库中找到Task.WaitAll(..).

我正在使用以下代码运行测试以尝试模拟两个任务,一个将比指定的等待时间(10秒)运行更长时间(10秒),一个运行时间少于指定的时间(3秒)等待的时间.指定的时间是5秒.我使用的代码如下:

Task<int>[] tasks = new Task<int>[]
{
    Task.Factory.StartNew<int>(()=>
        {
            Thread.Sleep(10000);
            return 1;
        }),
    Task.Factory.StartNew<int>(()=>
        {
            Thread.Sleep(3000);
            return 2;
        })
};

TimeSpan timeSpan = new TimeSpan(0, 0, 5);
Task.WaitAll(tasks,timeSpan);

int[] results = new int[tasks.Length];
for(int i = 0; i < tasks.Length;i++)
{
    Console.WriteLine(tasks[i].Result);
}
Run Code Online (Sandbox Code Playgroud)

至于timeSpan,我也尝试直接传入5000而不是timeSpan变量,但它不起作用.我得到以下输出:

1
2
Run Code Online (Sandbox Code Playgroud)

我希望只得到以下输出,因为另一个线程的执行时间超过了预期的等待时间.

1
Run Code Online (Sandbox Code Playgroud)

我误解了这个,还是做错了?

c# parallel-processing multithreading task-parallel-library

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

正则表达式是匹配和替换文本的最佳方式吗?

我很清楚正则表达式是什么,所以请避免给我定义.我只是在寻找意见,甚至可能是一些建议.我很快就读毕业了,获得了计算机科学学位,到目前为止,我接受过正规表达的唯一教育是通过PL设计和开发课程.我们从未接受过关于它在我们编写的程序中的实际应用和使用的教育,只是使用Regex来实际使用编程语言.

我的问题是,我是否正确地假设正则表达式是匹配和处理文本的最强大的工具?如果我错了,还有什么我应该自学(而不是变成正则表达式)?另外,有没有人知道Eclipse IDE的任何好的正则表达式插件(最好是Galileo).我正在寻找能够让我测试文档的东西,并且可能会突出显示正在做的事情.谢谢

regex eclipse eclipse-plugin

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