小编lyn*_*nks的帖子

在Ruby中覆盖==运算符

根据文档,Array.include?在对象上使用==比较.我来自Java,其中(通常)使用.equals()完成这些事情,这很容易覆盖特定对象.

如何在Ruby中覆盖==以允许我指定Array.include的行为对于我的特定对象?

非常感谢.

ruby overriding equality

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

OpenGL有多少VAO

我正在编写一个OpenGL3 +应用程序,并且对VAO的使用感到困惑.现在我只有一个VAO,一个围绕原点的标准化四边形集.这个单一的VAO包含3个VBO; 一个用于位置,一个用于表面法线,一个GL_ELEMENT_ARRAY_BUFFER用于索引(因此我只能存储4个顶点,而不是6个).

我已经设置了一些辅助方法来将对象绘制到场景中,例如drawCube()获取位置和旋转值并遵循该过程;

  • 绑定四核VAO.
  • 每立方体面:
    • 创建表示此面的模型矩阵.
    • 将模型矩阵上载到uniform mat4 model顶点着色器变量.
    • 调用glDrawElements()将四边形绘制到此面部的位置.

我刚刚开始添加每个立方体颜色的任务,并意识到我不能将我的颜色VBO添加到单个VAO中,因为它会随着每个立方体而改变,这感觉不对.

我刚读过这个问题; OpenGL VAO最佳实践,告诉我我的方法是错误的,并且我应该使用更多的VAO来保存每次设置整个场景的工作.

应该使用多少个VAO?显然,如果场景中的每个静态表面都有VAO,那么我的1的方法并不是最优的吗?移动的是什么?

我正在为每个顶点写一个统一变量,这是正确的吗?我读到uniform着色器变量不应该改变中间帧,如果我能够为我的uniform变量写入不同的值,那么制服与in顶点着色器中的简单变量有何不同?

opengl vao

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

JDBC事务与连接澄清

我正在使用JDBC与我的Postgres数据库交谈.如果我的整个应用程序都运行一个连接,即只有一个呼叫;

DriverManager.getConnection("jdbc:postgresql://host:5432/database", user, pass);
Run Code Online (Sandbox Code Playgroud)

但是这个Connection对象在Java中的多个线程之间共享,我是否正确地假设任何使用SQL事务(BEGINCOMMIT样式)的尝试只会非常混乱和破坏,因为Java线程可能会交错?请问Connection对象"知道"哪些Java线程使用它来进行查询?

我应该Connection每个Java线程有一个对象并以这种方式使用SQL事务吗?或者我应该在Java中执行所有事务隔离synchronized吗?

java sql postgresql multithreading transactions

12
推荐指数
2
解决办法
5568
查看次数

C将指针指定为NULL

我误解了关于C中指针的一些基本信息,这应该很简单,但搜索没有任何结果.我不明白以下代码的行为;

#include <stdlib.h>
#include <stdio.h>

void my_function(char *);

int main(int argc, char *argv[]) {
    char *ptr;
    ptr = malloc(10);

    if(ptr != NULL) printf("FIRST TEST: ptr is not null\n");
    else printf("FIRST TEST: ptr is null\n");

    my_function(ptr);

    if(ptr != NULL) printf("SECOND TEST: ptr is not null\n");
    else printf("SECOND TEST: ptr is null\n");
}

void my_function(char *a) {
    a = NULL;
}
Run Code Online (Sandbox Code Playgroud)

哪些产出;

FIRST TEST: ptr is not null
SECOND TEST: ptr is not null
Run Code Online (Sandbox Code Playgroud)

为什么第二个测试仍然看到指针不是NULL?我试图使用NULL指针赋值作为一种'返回标志'来指示函数的某个失败.但是在之后测试指针时,它似乎不是NULL.

c pointers function

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

Ruby on Rails:没有View的动作

我认为这是一个非常简单的问题.我来自PhP背景,并且一直都是这样做的,所以我可能会以错误的方式看待这个.

我想在RoR中创建一个ajax处理程序.当用户单击按钮时,javascript将触发POST,并使用jQuery的ajax函数的"success:"参数向用户提供反馈.

问题是,当我真的需要控制器中的几行来完成数据库工作时,RoR正在尝试加载ajax处理程序的视图,并回显出将由用户的javascript解释的状态代码.

这只是一个mailchimp订阅控件页面,所以我只使用'home'控制器.

我的路线;

map.root :controller => 'home'
map.connect '/mcsubscribe', :controller => 'home', :action => 'mcsubscribe'
Run Code Online (Sandbox Code Playgroud)

我的家庭控制器;

class HomeController < ApplicationController
  def index
    # no content
  end
  def mcsubscribe
    print params[:email]
  end
end
Run Code Online (Sandbox Code Playgroud)

我的测试javascript,只是让你了解正在发生的事情;

function mcSubscribe() {
    var email = jQuery("#signup_input_email").val();
    jQuery.ajax({
        type: "POST",
        url: "http://domain.com/mcsubscribe",
        data: "email=" + email,
        cache: false,
        success: function(result) {
            alert(result);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我认为这将是一个常见的问题,但我已经搜索过,只是设法找到重定向的建议,因为用户永远不会访问/ mcsubscribe页面,这似乎不合适.

ruby-on-rails

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

使用java中的参数执行shell脚本

我一直在谷歌搜索,每个人似乎有一个不同的解决方案,似乎没有一个对我有用.

我曾经尝试都ProcessBuilderRuntime.两者都.sh直接调用文件并将其提供给/bin/bash.没有运气.

回到基础,我目前的代码如下;

String cmd[] = { "~/path/to/shellscript.sh", "foo", "bar" };
Process p = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)

No such file or directory即使手动运行,也会出错;

~/path/to/shellscript.sh foo bar
Run Code Online (Sandbox Code Playgroud)

从bash完美运作.

我需要保留,~因为这个shellcript以三种不同用户的略有不同的形式存在.

java bash runtime

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

Java静态字段初始化

我刚刚用了半个小时来解决这个问题,我已经设法修复了我的代码,但是我并不完全理解发生了什么,并且想知道是否有人可以对它进行说明.

我有一个utils类型类,它包含一些静态字段(例如数据库连接端点),这些字段由各种其他程序使用,具体取决于手头的任务.基本上是一个图书馆.

这就是它之前的样子(虽然仍然破碎);

//DBUtils.java
public final class DBUtils {

    private static DBConnection myDBConnection = spawnDBConnection();
    private static DBIndex myDBIndex = null;

    private static DBConnection spawnDBConnection() {
        //connect to the database
        //assign a value to myDBIndex (by calling a method on the DBConnection object) <- IMPORTANT
        //myDbIndex NOT NULL HERE
        System.out.println("database connection completed");
        //return the DBConnection object
    }

    public static searchDB(String name) {
        //use the myDBIndex to find a row and return it
    }
}
Run Code Online (Sandbox Code Playgroud)

简而言之,我使用静态spawnDBConnection()方法为myDBConnectionmyDBIndex …

java static-methods initialization

7
推荐指数
2
解决办法
7918
查看次数

Linux系统调用和内核模式

我知道存在系统调用以提供对用户空间中不允许的功能的访问,例如使用read()系统调用访问HDD .我也理解这些是以库调用的形式由用户模式层抽象出来的,例如fread(),以提供跨硬件的兼容性.

所以从应用程序开发人员的角度来看,我们有类似的东西 ;

//library    //syscall   //k_driver    //device_driver
fread()  ->  read()  ->  k_read()  ->  d_read()
Run Code Online (Sandbox Code Playgroud)

我的问题是; 是什么阻止我内联的所有指令fread()read()功能直接进入我的程序?说明是一样的,所以CPU应该以相同的方式运行?我没有尝试过,但我认为这是因为某些原因我失踪了.否则任何应用程序都可以获得任意内核模式操

TL; DR:什么允许系统调用"进入"应用程序无法复制的内核模式?

security system-calls

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

带有昂贵参数的Java同步方法

我有一个似乎 "使用"同步的同步方法比它应该显着更长.它看起来像;

public static synchronized void myMethod(MyParameter p) {
    //body (not expensive)
}
Run Code Online (Sandbox Code Playgroud)

电话看起来像;

myMethod(generateParameter());
Run Code Online (Sandbox Code Playgroud)

generateParameter()被称为是一个非常昂贵(需要很长的时间)调用.我的想法是,myMethod在执行过程中类上的互斥锁被阻塞了,generateParameter()这是怎么回事?我发现它是一个不同的调试问题,但这似乎正在发生.

java synchronization

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

Java IEEE 64位754双,值避免

我的情况表现非常重要.在我的算法的核心有一个方法,它使用两个double基元进行一些基本计算.每次运行该算法时,该方法被调用超过一千万次.

代码看起来像这样;

public int compare(double xA, double xB, double yA, double yB);

    double x = xA * xB;
    double y = yA * yB;

    double diff = x - y;

    return (diff < 0.0 ? -1 : (diff > 0.0 ? 1 : 0));

}
Run Code Online (Sandbox Code Playgroud)

参数xAyA从集合中获取它们的值.这个集合可以在代码中调整.我看到很大(大约两倍)性能差异取决于我放入集合的值.似乎如果集合包含a 0.1或a 0.3,性能会受到很大影响.将设置保持为倍数0.5可以获得最佳性能.

是编译器优化x * 0.5x >> 1等?或者这是因为0.1无法用二进制定义?

我想更好地了解这种情况,以便我可以优化它.我想这可能是一个非常难的问题,除非有人确切地知道javac和jvm(在我们的例子中是热点)如何处理双倍乘法.

java floating-point double performance

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

使用HashMap计算实例

我有以下代码来计算数组中不同字符串的实例;

String words[] = {"the","cat","in","the","hat"};
HashMap<String,Integer> wordCounts = new HashMap<String,Integer>(50,10);
for(String w : words) {
    Integer i = wordCounts.get(w);
    if(i == null) wordCounts.put(w, 1);
    else wordCounts.put(w, i + 1);
}
Run Code Online (Sandbox Code Playgroud)

这是一种正确的做法吗?对于一项简单的任务来说似乎有点啰嗦.的HashMap,因为我会被串编入索引的结果对我有用.

我很担心这条线

else wordCounts.put(w, i + 1);
Run Code Online (Sandbox Code Playgroud)

key-value由于这个事实,可能会插入第二对

new Integer(i).equals(new Integer(i + 1));
Run Code Online (Sandbox Code Playgroud)

会是假的,所以两个Integers人最终会在同一个String钥匙桶下面,对吧?或者我只是过度思考自己陷入困境?

java equals hashmap hashcode

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

PostgreSQL - 替换HTML实体

我刚刚开始从我们的数据库中删除HTML实体的任务,因为我们做了大量的爬行,并且一些爬虫在输入时没有这样做:(

所以我开始编写一堆看起来像的查询;

UPDATE nodes SET name=regexp_replace(name, '&#xe0;', 'à', 'g') WHERE name LIKE '%#xe0%';
UPDATE nodes SET name=regexp_replace(name, '&#xe1;', 'á', 'g') WHERE name LIKE '%#xe1%';
UPDATE nodes SET name=regexp_replace(name, '&#xe2;', 'â', 'g') WHERE name LIKE '%#xe2%';
Run Code Online (Sandbox Code Playgroud)

这显然是一种非常天真的方法.我一直试图弄清楚我能用解码功能做些什么聪明的事情; 也许通过正则表达式像抓住了HTML实体/&#x(..);/,然后通过刚刚%1部分到ASCII解码器,以及重建串...或东西...

我应该继续查询吗?可能只有40左右.

regex sql postgresql replace

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

Postgres中的多表计数()

我有一个表,events其中有idvenue列.

events.venue列与列匹配venues.id,这是一个相当典型且简单的设置.

一些场地被"打破",因为它们缺少重要的信息,例如geo_lat.我正在尝试创建一个破坏场地的优先级列表,其中最重要的是在顶部venue托管events,以便我们知道哪些venues是最重要的修复.

Myquery到目前为止看起来像;

select x.venue_id as id, count(x.venue_id) as events 
from (
    select * 
    from events e, venues v 
    where e.venue=v.id and v.geo_lat is null 
    group by e.venue
) as x order by events desc
Run Code Online (Sandbox Code Playgroud)

哪个给出错误: ERROR:列"e.id"必须出现在GROUP BY子句中或用于聚合函数

我试图实现的输出看起来像;

venue.id | events
---------|-------
      12 |    219
     214 |    141
      36 |     41
    1834 |     22
     931 |      4
Run Code Online (Sandbox Code Playgroud)

只包含破碎的场地.这样,我知道固定场地 …

sql postgresql group-by count

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