小编Bla*_*ain的帖子

使用struct epoll_event处理内存

我正在使用epoll库在C中开发一个服务器,我对如何处理内存有疑问struct epoll_event.我在一些在线示例中注意到,在进行epoll_ctl调用时,events参数在堆栈上分配,然后传递指针,如下所示:

struct epoll_event ev;
ev.events = EPOLLIN;
epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &ev);
Run Code Online (Sandbox Code Playgroud)

现在我们都知道ev函数返回时会发生什么.我的问题是:epoll库是否在内部复制这些值,还是依赖于您传递给堆分配的结构?上面的例子会完全破坏我的反应堆实现吗?如果是这样,跟踪堆分配epoll_event结构的最佳方法是什么?

谢谢你的时间.

c linux epoll

10
推荐指数
3
解决办法
2391
查看次数

Netty 4.0.19.Fone Memory Leak with io.netty.channel.ChannelOutboundBuffer $ Entry

我似乎遇到了Netty 4的重复内存问题.我的应用程序查询Minecraft服务器以获取信息并使用该信息更新数据库.目前,它每10秒创建300个连接请求,并在成功完成这些连接后发送数据包.

我的查询应用程序的上一次迭代使用了Netty 3.2.5,它在不间断运行了几个月,没有任何问题.然而,对于Netty 4,它只耗尽了几个小时才耗尽所有可用资源.以下是通过JMX连接进行内存采样的屏幕截图.

记忆采样结果

我们可以看到,io.netty.channel.ChannelOutboundBuffer$Entry正在耗尽大量内存.知道怎么去解决这个问题吗?如果你们需要,我可以提供代码.谢谢!

Stephen C:这不是"如何找到Java内存泄漏"的副本.这与Netty有关,我并不想知道如何发现内存泄漏 - 我已经发现了一个Netty.我重新发布了我的问题,以便我有机会得到答案.

java memory-leaks netty

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

C中两个整数的快速双向散列

我正在编写一个Linux内核模块,我需要提出一个哈希函数,它需要两个整数来输入.因为代码在内核空间中运行,所以我没有可用的标准库.

基本上,我需要一个散列函数,其中:

hash(a, b) = c
hash(b, a) = c
Run Code Online (Sandbox Code Playgroud)

其中a和b的可接受输入是无符号32位整数.散列函数应返回无符号的64位整数.碰撞(即散列(a,b)= c和散列(d,f)= c)也是不可取的,因为这些值将用于二叉搜索树.搜索的结果是可能结果的链表,然后在实际比较a和b的地方迭代.因此,一些碰撞是可以接受的,但碰撞越少,所需的迭代越少,运行的速度就越快.

性能也非常重要,当我编写防火墙应用程序时,这种查找将用于系统中接收的每个数据包(整数实际上是数据包源和目标地址).此函数用于查找现有网络会话.

感谢您的时间.

c linux kernel module

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

三星Galaxy S3的Linux开发/部署

我正在使用Linux系统(Xubuntu)来开发Android应用程序.我正在使用Eclipse来开发这个应用程序.我希望能够在我的三星Galaxy S3上进行测试,但Eclipse似乎无法找到我的设备."选择正在运行的Android设备"部分下没有列出任何内容.

我搜索了三星的网站上的USB驱动程序到Galaxy S3,但我没有找到Linux - 只有Windows和Mac.Linux用户对我们的爱好在哪里?似乎很荒谬的是Linux系统没有USB驱动程序可以与基于Linux的设备通信.我有可以使用的驱动程序吗?

java eclipse linux android

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

ActiveRecord has_and_belongs_to_many:查找包含所有给定元素的模型

我正在实现一个使用名称,标签和位置的搜索系统.和has_and_belongs_to_many之间有关系.这是我的搜索方法目前的样子:ServerTag

def self.search(params)
  @servers = Server.all

  if params[:name]
    @servers = @servers.where "name ILIKE ?", "%#{params[:name]}%"
  end

  if params[:tags]
    @tags = Tag.find params[:tags].split(",")
    # How do I eliminate servers that do not have these tags?
  end

  # TODO: Eliminate those that do not have the location specified in params.
end
Run Code Online (Sandbox Code Playgroud)

tags参数只是以逗号分隔的ID列表.我的问题在if params[:tags]条件块的注释中说明.如何消除没有指定标签的服务器?

奖金问题:有什么方法可以加快速度吗?所有字段都是可选字段,我只使用Postgres.

编辑

我找到了一种方法来做到这一点,但我有理由相信它的运行速度会非常慢.有什么方法比我做的更快?也许是一种让数据库完成工作的方法?

tags = Tag.find tokens
servers = servers.reject do |server|
    missing_a_tag = false

    tags.each do |tag|
        if server.tags.find_by_id(tag.id).nil?
            missing_a_tag = true …
Run Code Online (Sandbox Code Playgroud)

postgresql activerecord ruby-on-rails

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