问题列表 - 第19764页

如何找到增加扭曲服务器内存使用量的来源?

我有一个用Python编写并基于Twisted的音频广播服务器.它工作正常,但当服务器上有更多用户时,其内存使用量会增加,但当这些用户下线时,内存使用量不会下降.如下图所示: alt text http://static.ez2learn.com/temp/mem_figure3.svg

你可以看到内存使用曲线在听众/收音机的曲线上升的地方上升,但是在收听者/收音机的峰值之后,内存使用量仍然很高,永远不会下降.

我试过以下方法来解决这个问题:

  1. 升级扭曲从8.2到9.0
  2. 使用孔雀鱼转储堆积,但根本没有帮助
  3. 将选择器反应器切换到epoll反应器,同样的问题.
  4. 使用objgraph绘制对象关系图,但我无法从中看到点.

这是我用来运行我的扭曲服务器的环境:

  • Python:2.5.4 r254:67916
  • 操作系统:Linux版本2.6.18-164.9.1.el5PAE(mockbuild@builder16.centos.org)(gcc版本4.1.2 20080704(Red Hat 4.1.2-46))
  • 扭曲:9.0(在virtualenv下)

孔雀鱼转储:

Partition of a set of 116280 objects. Total size = 9552004 bytes.
 Index  Count   %     Size   % Cumulative  % Type
  0  52874  45  4505404  47   4505404  47 str
  1   5927   5  2231096  23   6736500  71 dict
  2  29215  25  1099676  12   7836176  82 tuple
  3   7503   6   510204   5   8346380  87 types.CodeType
  4   7625   7   427000   4   8773380  92 function
  5 …
Run Code Online (Sandbox Code Playgroud)

python memory-leaks memory-management twisted

17
推荐指数
1
解决办法
2446
查看次数

如果我不使用MySQL,我应该担心PHP注入吗?

我使用一个简单的PHP脚本来运行在线漫画,它基本上使用GET取整数值n并为n .jpg 插入img标签.除了确保存在n .jpg 之外,它不会进行任何消毒或错误检查.与脚本的唯一用户交互是通过此GET进行的,另一个用字符串执行相同操作以手动显示不同的模板以进行测试.

我的问题是,我是否应该担心注射?如果是这样,我应该怎么做才能防止它呢?到目前为止我发现的所有内容都只涉及MySQL注入,在这种情况下不适用.

php

7
推荐指数
1
解决办法
263
查看次数

在Java中以不同的线程运行后台进程

我正在编写一个应用程序,用户可以添加和删除其他用户作为朋友.我的页面有一个不同用户列表,每个用户都有一个按钮,可以将它们添加到好友列表中.我正在向Java servlet发送一个AJAX请求,以将所选用户添加为朋友.我在UI上显示警告消息以显示进程的结果.

我的问题是当用户被添加为朋友时我必须发送邮件这个代码是用servlet中的相同方法编写的.

由于这段代码我的警报信息来得很晚.

我需要运行一个单独的pthread来运行这个发送邮件功能,这样一旦添加了用户,我将得到结果,邮件将在单独的进程中发送.

我在Servlet中的代码是

private void sendMail(long inviteeID) {
    User inviteeUser = null;
    try {
        inviteeUser = userHandler.getUser(inviteeID);
    } catch (DataException e) {
        sLog.error("User does not exist.", e);
    } catch (UserNotFoundException e) {
        sLog.error("User does not exist.", e);
    }
    MailUtility.send(inviteeUser.getUserEmailAddress().trim(),
            "vagarwal@q3tech.com", "add friend message", Utility
                    .getAddFriendMessageBody(LoginHelper
                            .getLoggedInUserEmail()), false);
}



private String inviteAsFriend(long inviteeID) {

    boolean result = false;

    if (LoginHelper.isUserLoggedIn()) {
        try {
            User user = userHandler.findUserByEmail(LoginHelper
                    .getLoggedInUserEmail());

            if (userHandler.isUserFriend(user.getUserId(), inviteeID)) {

                if (userHandler.addFriend(user, inviteeID)) {

                    result = …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

在Windows上安装瘦身的问题

我正在尝试在Windows上安装Thin(ruby 1.8.6(2007-09-24 patchlevel 111)[i386-mswin32])但是收到错误消息:

C:> gem install thin构建原生扩展.这可能需要一段时间...错误:安装瘦时出错:错误:无法构建gem本机扩展.

C:/rails/ruby/bin/ruby.exe extconf.rb检查c.lib中的main()...没有创建Makefile

NMAKE

Microsoft(R)程序维护实用程序版本1.50版权所有(c)Microsoft Corp 1988-94.版权所有.

    cl -nologo -I. -I. -IC:/rails/ruby/lib/ruby/1.8/i386-mswin32
Run Code Online (Sandbox Code Playgroud)

-一世.-MD -Zi -O2b2xg- -G6 -c -Tcparser.c'cl'未被识别为内部或外部命令,可操作程序或批处理文件.NMAKE:致命错误U1077:'C:\ WINDOWS\system32\cmd.exe':返回代码'0x1'停止.

Gem文件将保留在C:/rails/ruby/lib/ruby/gems/1.8/gems/thin-1.2.5中进行检查.结果记录到C:/rails/ruby/lib/ruby/gems/1.8/gems/thin-1.2.5/ext/thin_parser/gem_make.out

谷歌似乎没有帮助我.有人知道发生了什么事吗?

谢谢

ruby windows rubygems thin

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

在sql server 2005中连接三个表

海家伙,我到目前为止已经使用了两个表连接,但现在我想加入三个表,如下图所示

alt text http://i.msdn.microsoft.com/ms152507.75c9e4c3-260d-4b8d-8a27-b720d8f4470e%28en-US,SQL.90%29.gif

我试过加入两张桌子,

SELECT O.OrderID,O.CustID,O.OrderTotal,C.Name from Orders
as O inner join Customers as C on O.CustID=C.CustID 
Run Code Online (Sandbox Code Playgroud)

如何加入第三个表....任何建议......

join sql-server-2005

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

nhibernate:实现平等的最佳做法是什么?

我认为实体应该通过主键比较实现相等作为默认值,但是nhibernate文档建议使用业务标识:

最明显的方法是通过比较两个对象的标识符值来实现Equals()/ GetHashCode().如果值相同,则两者必须是相同的数据库行,因此它们是相等的(如果两者都添加到ISet,我们在ISet中只有一个元素).不幸的是,我们不能使用这种方法.NHibernate只会将标识符值分配给持久化的对象,新创建的实例将不具有任何标识符值!我们建议使用Business key equality实现Equals()和GetHashCode().

业务键平等意味着Equals()方法仅比较构成业务键的属性,这是一个在现实世界中标识我们实例的键(自然候选键)

和示例(也来自文档):

public override bool Equals(object other)
{
    if (this == other) return true;

    Cat cat = other as Cat;
    if (cat == null) return false; // null or not a cat

    if (Name != cat.Name) return false;
    if (!Birthday.Equals(cat.Birthday)) return false;

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

这让我头晕目眩,因为业务标识的概念(根据示例)与通过语法进行比较相同,这基本上是我与ValueObjects相关联的语义类型.不使用数据库主键作为比较值的原因是,如果未在客户端生成主键(对于ex incremental),则会更改对象的哈希码,并且您使用某种哈希表集合(例如ISet)用于存储您的实体.

我怎样才能创建一个良好的相等实现,它不会破坏相等/ hashcode的一般规则(http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx)并且也符合nhibernate规则?

nhibernate equality

7
推荐指数
1
解决办法
2135
查看次数

Visual Studio代码片段Cursor

在Visual Studio中插入代码段并完成插入文字时,光标会跳转到代码段的开头.

现在我想告诉visual studio之后光标应该去哪里.我在网上搜索过,实际上对这一点没什么希望.

为了说明,假设我有这个片段:

<Code Language="csharp" Kind="method body" Delimiter="$"><![CDATA[this.SyncThreadRunInvoke(() =>
            {

            });]]>
    </Code>
Run Code Online (Sandbox Code Playgroud)

插入后:

this.SyncThreadRunInvoke(() =>
            {
            []<- I want the cursor here
            });
Run Code Online (Sandbox Code Playgroud)

visual-studio code-snippets

52
推荐指数
1
解决办法
9293
查看次数

Flex的简单计算问题

我在弹性计算方面遇到了麻烦,我试图将像素值转换为mm并将其反转.

从69.8开始:

Calculating MM to pixel from: 69.8 mm
69.8*300 = 20940
20940 / 2.54 = 8244.094488188975
8244.094488188975 / 10 = 824.4094488188975
Run Code Online (Sandbox Code Playgroud)

并计算回来:

Calculating pixel to MM from: 824.4094488188975
824.4094488188975/300 = 2.7480314960629917
2.7480314960629917 * 2.54 = 6.979999999999999
6.979999999999999 * 10 = 69.79999999999998
Run Code Online (Sandbox Code Playgroud)

我们想要69.8,但结果是69.79999999999998.我使用简单的窗口计算跟踪过程,第一个错误的位置是20940/2.54 = 8244.094488188975,应该是8244,094488188976.

Anny对此的帮助会很棒.

apache-flex math floating-point

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

C++ STL容器和就地构造

请考虑以下事项:

class CMyClass
{
public:
  CMyClass()
  {
    printf( "Constructor\n" );
  }
  CMyClass( const CMyClass& )
  {
    printf( "Copy constructor\n" );
  }
};

int main()
{
  std::list<CMyClass> listMyClass;

  listMyClass.resize( 1 );

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

它产生以下输出:

构造函数

复制构造函数

现在我的问题是:我如何避免复制构造函数?或者换一种方式:如何在没有不必要的复制操作的情况下在STL容器内创建对象.有没有办法使用默认构造函数进行"就地"构造?


更新 - 答案到目前为止:

  1. 它无法完成
  2. 请改用指针或智能指针.

智能指针对我的应用来说太过分了.但我真的很想知道为什么不能这样做.这似乎是一件显而易见的事情.还有其他想法吗?如果它有效,我甚至会接受一个讨厌的黑客......


我想我刚从这里提出的所有评论和答案中找到了我的问题的解决方案.解决方案是构造一个空对象并将其保留,以便以后使用它来制作干净的副本.然后,您可以使用其中一个引用方法(如push_back或insert).这仍然为每个插入的新对象调用复制构造函数,但至少它不是默认构造函数和复制构造函数:

int main()
{
  CMyClass Empty;

  std::list<CMyClass> listMyClass;

  for ( int c=0; c<10; ++c )
  {
    listMyClass.push_back( Empty );
  }

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

c++ stl

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

为什么不经常使用运算符过载?

在许多情况下,操作员超载允许您更好地表达自己.为什么它们几乎不用于C#?

c# operator-overloading

3
推荐指数
2
解决办法
409
查看次数