RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-237105

Bakuard's questions

Martin Hope
Bakuard
Asked: 2024-07-04 14:08:24 +0000 UTC

如何在 Helidon SE4 中存储每个 WebSocket 连接的用户数据

  • 5

任务:有一个使用 Helidon SE4 框架实现的服务器。与服务器的通信是使用WebSocket协议进行的。对于每个新连接,我需要保存用户 ID。当连接关闭时,您需要删除这些数据。

问题:在 Helidon SE4 中,我没有找到任何与 Jakarta WebSockets 中类似的机制。 WsSession 没有类似 的方法Session.getUserProperties(),并且实现类WsListener会被所有已建立的连接重用。

我如何尝试解决这个问题:但是对于每个 WebSocket 连接,都提供了自己独特的虚拟流。

  1. 我尝试用它ThreadLocal来存储用户数据。但这会导致内存泄漏,因为......客户端可以在不通知服务器的情况下关闭连接 -> 不会从正确的线程调用任何 WsListener 方法 -> 不可能ThreaLocal.remove()从正确的线程调用。
  2. 我也尝试使用ConcurrentHashMap.然而,这导致了性能问题,因为......所有负责连接的线程都被迫不断地相互等待。
java
  • 4 个回答
  • 87 Views
Martin Hope
Bakuard
Asked: 2023-07-13 20:34:28 +0000 UTC

通过 isDeepStrictEqual 进行比较时, StructuredClone 返回的副本不等于原始副本

  • 5

有如下代码:

const util = require('util');

function A() {}
let obj = {
    key: new A()
};
let copy = structuredClone(obj);
console.log(util.isDeepStrictEqual(obj, copy));

我希望在控制台中得到 true,但我得到 false。可能是什么原因?

javascript
  • 1 个回答
  • 13 Views
Martin Hope
Bakuard
Asked: 2022-07-14 14:08:29 +0000 UTC

组合由多个条件获得的行

  • 0

任务:数据库中有一些表MyTable。MyTable 中符合条件 a 的所有行形成行集合 A,所有符合条件 b 的行形成行集合 B。编写一个返回集合 A 和 B 的并集的查询,行按以下顺序显示:

  1. 首先,所有行仅匹配条件 a。
  2. 然后所有符合条件 a 和条件 b 的行。
  3. 最后,所有行仅匹配条件 b。标准 a 和 b 不是预先定义的,而是动态形成的。

这不起作用:

  1. 起初我想通过 OR 运算符将两个条件 a 和 b 结合起来,但是排序出现了问题。我想象如何按一个字段或多个字段参与的表达式对行进行排序。但是如何根据上面描述的标准来表达排序 - 我什至无法想象。
  2. 试图通过三个相应的请求来实现所描述的行为。但这种方法并不有效,尤其是在标准数量超过两个的情况下。
sql
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2021-11-21 18:12:49 +0000 UTC

使用 querySelector() 方法检索嵌套元素而不使用类

  • -1

从通过innerHTML添加到页面的元素,如下所示:

priceContainer.innerHTML = `
<div class="productPriceTagsContainer">
  <button>+</button>
  <div> 
    Мне нужен этот div
  </div>
</div>
<label class="productPriceLabel">Цена <input /></label>`;

您需要<div>使用querySelector()方法获取嵌套。

怎么做?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2021-10-21 17:35:32 +0000 UTC

如何计算无序有限集的 MD5 哈希和 SHA1 哈希

  • 0

再会。

任务:为一个 UNORDERED 有限集的类实现 hashMd5() 方法,使其返回 MD5 哈希。hashMd5() 方法对于 equals() 方法必须履行与 hashcode() 相同的合同。

难点是什么:当对于一些Java对象需要计算MD5哈希时,首先使用ObjectOutputStream将其转换为字节数组。然后这个字节数组被馈送到计算 MD5 散列的算法。但是,在为 UNORDERED 集实现 hashode() 时,这种方法不起作用,因为 (例如)对于两个相等的集合 A={1,2,3} 和 B={1,3,2} 将收到不同的字节数组,因此将计算不同的 MD5 哈希值。

问题:实际上,如何解决这个问题?

java
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-09-19 23:08:37 +0000 UTC

从已排序的一组行中,从编号为 M 的行开始获取 N 行

  • 0

再会。

我有一个数据库,其中以下表以多对多关系链接

1.产品

CREATE TABLE Products (
    id INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    name VARCHAR(64) NOT NULL,
    UNIQUE(name)
);

2.产品标签

CREATE TABLE Tags (
    id INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    tagName VARCHAR(64) NOT NULL,
    tagValue VARCHAR(64) NOT NULL,
    UNIQUE(tagName, tagValue)
);

3.绑定表

CREATE TABLE ProductsTags (
    productId INT NOT NULL,
    tagId INT NOT NULL,
    FOREIGN KEY(productId) REFERENCES Products(id) ON DELETE CASCADE,
    FOREIGN KEY(tagId ) REFERENCES Tags(id) ON DELETE CASCADE
}

您需要从按名称排序的产品列表中获取 N 个产品的标签,从产品编号 M 开始。N 和 M 可以是任何东西(N 和 M 肯定会大于零)。

sql
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-08-18 20:48:32 +0000 UTC

保存应用程序数据的架构方法

  • 5

再会。

任务:有一个适用于桌面和安卓的应用程序。您需要定义一种将应用程序数据保存到永久内存的架构方法,同时考虑以下特性:

  1. 某种类型的对象的部分字段是其内部实现的一部分,必须对客户端代码完全隐藏,同时这些字段的值也必须保存。
  2. 存储对象的位置和方法可以在应用程序的移植和开发过程中更改和添加(因此可以使用 SAX 或 DOM 解析器 [Desctop 版本] 将对象保存在存储在用户机器上的 json 或 xml 文件中;保存在关系[SQLite, HyperSql, MySql] 通过 JDBC 或一些 ORM 连接;保存到服务器)。
  3. 某些类型的对象是不可变的。

我尝试了哪些方法:

  1. 为每个需要保存对象的类实现 save() 和 load() 方法。如果您需要以多种方式保存对象,那么对于每个方法,我们都会创建自己的一对方法(例如,saveToJson()、loadToJson() 等)

    我认为的优点:内部实现的字段对客户端代码完全隐藏,同时我们可以轻松保存/加载它们。

    我认为缺点:在我看来,单一责任原则被违反了。第二个缺点是这种方法不能应用于不可变字段(因此,不可变对象),因为它们的初始化只能在调用构造函数时执行(我想将所有应用程序对象保存在统一的方式)。

  2. 使用稍微修改的 Memento 模式(为了保存一个对象,我们获取它的存储对象并保存它。与该模式的经典实现不同,要恢复创建者对象,我们会将存储对象传递给构造函数,而不是特殊的方法)。

    我认为的优点:直接从对象本身读取/写入隐藏字段的值 - 它不起作用。第二个优点是负责保存的代码可以移动到单独的模块中并放在单独的包中。

    我认为缺点:保管人对象必须不仅为创建者对象开放对其状态的访问,而且还为将保存它的对象开放。原来,通过保管人对象,创建者对象间接揭示了它的整个状态。

  3. 在单独的模块中,为要保存的每种类型的对象声明一个 DAO 接口。如果一个类具有不希望提供对客户端代码的访问的字段,则 DAO 接口被实现为嵌套类。

    我认为的优点:由于嵌套类,内部实现的字段对客户端代码完全隐藏。

    我认为缺点:由于嵌套类,负责保存的代码不能完全分离到单独的模块中并放在单独的包中。因此,负责保存的代码被模块和包分开。

问题: 通常如何解决类似的问题?我应该选择我考虑的三个选项之一,如果是,为什么?如果您认为我在描述我考虑的一些解决方案的优缺点时犯了错误,请指出。

java
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-06-10 17:01:42 +0000 UTC

SQL。多对多的关系。查找具有相同链接的所有记录

  • 0

再会。

有两个表:TableA 和 TableB。这些表之间存在多对多的关系(这种关系存储在 TableAtoB(idA, idB) 表中)。如何在 TableB 中找到与 TableA 中的给定记录相关但与 TableA 中的任何其他记录无关的所有记录?TableA 中的一条记录由 id 指定。

sql
  • 4 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-03-30 14:33:18 +0000 UTC

Fail-Fast 迭代器的概念

  • 0

再会。

如果我理解正确,Fail-Fast 迭代器将立即失败(通常通过抛出异常),如果它们检测到它们正在迭代的数据集自迭代开始(或自创建迭代器以来)发生了变化。

问题:为什么在迭代器的情况下,“只要没有人更改任何内容,我就可以阅读”的方法优于“我只能在没有人阅读任何内容时进行更改”的方法?

concurrency
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-11-17 14:30:55 +0000 UTC

在 UPDATE 中使用 IFNULL 函数

  • 3

再会。

任务:有一张桌子DISHES:

CREATE TABLE DISHES (
   id INT AUTO_INCREMENT PRIMARY KEY, 
   dish_name VARCHAR_IGNORECASE(256) NOT NULL, 
   picture_name VARCHAR(256), 
   unit VARCHAR(256), 
   price DECIMAL(64,32) DEFAULT 0 CHECK(price >= 0), 
   calories DECIMAL(64,32) DEFAULT 0 CHECK(calories >= 0), 
   UNIQUE(dish_name)
);

和观点DISH_PRICE_CALORIES:

CREATE VIEW DISH_PRICE_CALORIES 
    (dish_id, price, calories) AS 
    SELECT 
    DISH_TO_PRODUCTS_COMPOSITION.dish_id, 
    SUM(PRODUCTS.price * DISH_TO_PRODUCTS_COMPOSITION.amount_product),
    SUM(PRODUCTS.calories * DISH_TO_PRODUCTS_COMPOSITION.amount_product)
    FROM 
    DISH_TO_PRODUCTS_COMPOSITION, PRODUCTS 
    WHERE DISH_TO_PRODUCTS_COMPOSITION.product_id = PRODUCTS.id 
    GROUP BY DISH_TO_PRODUCTS_COMPOSITION.dish_id;

您需要使用视图中的数据来更新列price和calories表DISHES中的菜品。id应该考虑到当视图DISH_PRICE_CALORIES不包含具有给定id.

我如何尝试解决问题:我尝试了以下查询:

UPDATE DISHES 
    SET(price, calories) = 
       (SELECT IFNULL(DISH_PRICE_CALORIES.price,0), 
               IFNULL(DISH_PRICE_CALORIES.calories,0)  
        FROM DISH_PRICE_CALORIES 
        WHERE DISH_PRICE_CALORIES.dish_id = DISHES.id) 
    WHERE DISHES.id = 115;
UPDATE DISHES 
   SET(price, calories) = 
       CASEWHEN( 
          EXISTS(
             SELECT DISH_PRICE_CALORIES.price, DISH_PRICE_CALORIES.calories 
             FROM DISH_PRICE_CALORIES 
             WHERE DISH_PRICE_CALORIES.dish_id = DISHES.id 
          ), 
          (SELECT DISH_PRICE_CALORIES.price, DISH_PRICE_CALORIES.calories 
           FROM DISH_PRICE_CALORIES 
           WHERE DISH_PRICE_CALORIES.dish_id = DISHES.id), 
           0 
       )
    WHERE DISHES.id = 115;
UPDATE DISHES 
   SET(price, calories) = 
       IFNULL((SELECT DISH_PRICE_CALORIES.price,
                      DISH_PRICE_CALORIES.calories  
               FROM DISH_PRICE_CALORIES 
               WHERE DISH_PRICE_CALORIES.dish_id = DISHES.id),0) 
    WHERE DISHES.id = 115;

(115我在这里给出的数字只是一个例子。数字可以是任何东西。)

它们中的每一个都被执行,但列price和calories表DISHES仍然包含值NULL。

问题:如果视图中没有具有给定 ID 的菜的行,我如何0在列price和calories表中输入值?DISHESDISH_PRICE_CALORIES

sql
  • 2 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-11-07 22:22:24 +0000 UTC

使用另一个表中的值更新一个表

  • 0

再会。

任务:我使用 DBMS H2。有两个表(项目中有更多的表,但我们只会考虑这些):

CREATE TABLE DISHES (
       id INT AUTO_INCREMENT PRIMARY KEY,
       dish_name VARCHAR_IGNORECASE(256) NOT NULL,
       picture_name VARCHAR(256),
       unit VARCHAR(256),
       price DECIMAL(64,32) DEFAULT 0 CHECK(price >= 0),
       calories DECIMAL(64,32) DEFAULT 0 CHECK(calories >= 0),
       UNIQUE(dish_name)
);

CREATE TABLE DISH_TO_PRODUCTS_COMPOSITION (
       product_id INT NOT NULL,
       dish_id INT NOT NULL,
       amount_product DECIMAL(64,32) DEFAULT 1 CHECK(amount_product > 0),
       FOREIGN KEY (product_id) REFERENCES PRODUCTS(id) ON DELETE CASCADE,
       FOREIGN KEY (dish_id) REFERENCES DISHES(id) ON DELETE CASCADE,
       PRIMARY KEY(product_id, dish_id)
);

和一种观点:

CREATE VIEW DISH_PRICE_CALORIES 
       (dish_id, price, calories) AS 
       SELECT 
       DISH_TO_PRODUCTS_COMPOSITION.dish_id, 
       SUM(PRODUCTS.price * DISH_TO_PRODUCTS_COMPOSITION.amount_product),
       SUM(PRODUCTS.calories * DISH_TO_PRODUCTS_COMPOSITION.amount_product)
       FROM
       DISH_TO_PRODUCTS_COMPOSITION, PRODUCTS 
       WHERE DISH_TO_PRODUCTS_COMPOSITION.product_id = PRODUCTS.id 
       GROUP BY DISH_TO_PRODUCTS_COMPOSITION.dish_id;

需要更新DISHES表,即用DISH_PRICE_CALORIES表中同名列的值更新价格和卡路里列。您需要更新包含具有特定 ID 的产品的菜肴。

我如何尝试解决问题:我创建了一个请求

UPDATE DISHES 
       SET price = DISH_PRICE_CALORIES.price, calories = DISH_PRICE_CALORIES.calories 
       WHERE DISHES.id = DISH_TO_PRODUCTS_COMPOSITION.dish_id AND 
       DISH_PRICE_CALORIES.dish_id = DISH_TO_PRODUCTS_COMPOSITION.dish_id AND 
       DISH_TO_PRODUCTS_COMPOSITION.product_id = ?;

查询本身被创建为 PreparedStatement 对象。

我收到一个文本错误: org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到列“DISH_TO_PRODUCTS_COMPOSITION.DISH_ID”。

问题:如何使用另一张表中的值更新H2数据库中的一张表?我在哪里做错了?

sql
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-11-03 12:34:48 +0000 UTC

根据间接相关的另一张表的数据分解一张表的数据

  • 0

再会。

任务:有一个数据库,结构如下 数据库结构 - “电源模式”

需要将每餐(Meals 表)按产品(Products 表)分解,同时标明该餐中所含产品的总量、其总成本和卡路里含量。有必要找到一个不依赖于特定 DBMS 的通用解决方案。

我是如何尝试解决问题的:由于经常需要这些信息,我决定创建一个视图

"CREATE VIEW MEAL_TO_PRODUCTS_STATISTICS " +
                    "(meal_id, product_id, amount_product, total_price, total_calories) AS " +
                    "SELECT " +
                    "MEAL_TO_DISHES_COMPOSITION.meal_id, " +
                    "DISH_TO_PRODUCTS_COMPOSITION.product_id, " +
                    "SUM(MEAL_TO_DISHES_COMPOSITION.amount_dish * DISH_TO_PRODUCTS_COMPOSITION.amount_product), " +
                    "SUM(MEAL_TO_DISHES_COMPOSITION.amount_dish * DISH_TO_PRODUCTS_COMPOSITION.amount_product * PRODUCTS.price), " +
                    "SUM(MEAL_TO_DISHES_COMPOSITION.amount_dish * DISH_TO_PRODUCTS_COMPOSITION.amount_product * PRODUCTS.calories) " +
                    "FROM " +
                    "MEAL_TO_DISHES_COMPOSITION, DISH_TO_PRODUCTS_COMPOSITION, PRODUCTS " +
                    "WHERE MEAL_TO_DISHES_COMPOSITION.dish_id = DISH_TO_PRODUCTS_COMPOSITION.dish_id AND " +
                    "DISH_TO_PRODUCTS_COMPOSITION.product_id = PRODUCTS.id " +
                    "GROUP BY MEAL_TO_DISHES_COMPOSITION.meal_id, DISH_TO_PRODUCTS_COMPOSITION.product_id;"

我在简单的数据集上对其进行了测试。但是我没有考虑到某些事情的感觉并没有离开我,并且在某些情况下这个“请求”返回了不正确的数据。也许它可以更容易完成(我是 sql 新手)。

问题:这个“请求”中是否有任何错误?如果有,它们是什么?可以优化解决方案吗?

sql
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-10-28 23:41:50 +0000 UTC

扩展欧几里得算法

  • 2

再会。

任务:实现一个函数,该函数找到与数 A 模 N 成反比的数 X(即 (X*A)%N==1)。数字 A 和 N 是已知的。

我是如何解决这个问题的:据我所知,这个问题通过扩展的欧几里得算法得到了很好的解决。所以我实现了以下功能:

private Triple getExtendGCD(long a, long n) {
    long s1 = 1, s2 = 0;
    long t1 = 0, t2 = 1;
    while(n != 0) {
        long quotient = a / n;
        long r = a % n;
        a = n;
        n = r;
        long tempS = s1 - s2 * quotient;
        s1 = s2;
        s2 = tempS;
        long tempR = t1 - t2 * quotient;
        t1 = t2;
        t2 = tempR;
    }
    return new Triple(a, s1, t1);
}

private final class Triple {

    final long GCD, A, B;

    private Triple(long gcd, long a, long b) {
        GCD = gcd;
        A = a;
        B = b;
    }

}

但是,它在以下测试用例中给出了不正确的答案:A = 2,N = 31(它给出 -15,但预期为 16);A = 2,N = 101(产生 -50,预期为 51)。

问题:请告诉我执行中的错误在哪里。

java
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-08-05 16:32:12 +0000 UTC

计算 BigDecimal 的 hashCode 而不考虑比例

  • 0

再会。

任务:有以下类

public class Products {

public final Product PRODUCT;
public final double AMOUNT;
public final BigDecimal PRICE;
public final BigDecimal CALORIES;

    public Products(Product product, 
                    double amount, 
                    BigDecimal price, 
                    BigDecimal calories) {
        PRODUCT = product;
        AMOUNT = amount;
        PRICE = price;
        CALORIES = calories;
    }
}

必须重写此类的 equals() 和 hashCode() 方法。所有字段都必须参与覆盖的方法。最重要的是,在比较 PRICE 和 CALORIES 字段时,有必要只比较值而不考虑比例,即 比较两个 BigDecimal 值 12 和 12.000000 应该返回 true。


我如何尝试解决问题:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Products that = (Products) o;
    return Double.compare(that.AMOUNT, AMOUNT) == 0 &&
            Objects.equals(PRODUCT, that.PRODUCT) &&
            PRICE.compareTo(that.PRICE) == 0 &&
            CALORIES.compareTo(that.CALORIES) == 0;
}

@Override
public int hashCode() {
    int result = 17;
    result = result * 31 + PRODUCT.hashCode();
    result = result * 31 + Double.hashCode(AMOUNT);
    result = result * 31 + PRICE.hashCode();
    result = result * 31 + CALORIES.hashCode();
    return result;
}




问题出在哪里:equals() 方法比较 BigDecimal 不考虑比例,而 hashCode() 使用 BigDecimal::hashCode() 计算值是有比例的。


问题:如何计算没有比​​例的 BigDecimal 的 hashCode?

java
  • 2 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-07-28 14:36:22 +0000 UTC

关于C++中指针的几个问题

  • 0

With ++ 中有一些与原始指针相关的问题。考虑以下代码

#include <stdio.h>

struct Point {
    double x, y;
};

int main(void) {
    Point* p = new Point;
    delete p;

    /* 
    * Далее выполняется очень большое кол-во разных
    * действий связанных с созданием разных объектов,
    * включая Point, а также их удалением.
    */

    printf("address = %d, x = %f", p, p->x); //строчка X.

    return 0;
}

问题:

  1. 对于正在创建的下一个对象Point,只分配了指针指向的内存区域p。这样的巧合可能吗?如果是这样,第 X 行会成功吗?

  2. 对于下一个创建的NOT TYPE POINT对象,已经分配了一个内存区域,它的开头只是由指针指向的p。该对象由具有三个字段的结构表示double。可能吗?如果是这样,第 X 行会成功吗?

  3. 对象释放后为其分配的内存区域Point被转移到操作系统,然后成为另一个进程的一部分。这种情况可能吗?如果是 - 纯粹从理论上讲,是否可以通过 p 指针引用另一个进程的数据?

c++
  • 2 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-06-05 14:02:42 +0000 UTC

使用比例检查两个 3D 矢量的共线性

  • 2

问题:我想找到一种方法来检查两个 3 维向量的共线性,这比检查向量的叉积需要更少的计算。

我如何尝试解决这个问题:我的推理如下 - 如果两个向量 A 和 B 共线,那么它们是线性相关的。这意味着通过将向量 A 乘以某个数字 Q,我将得到向量 B。在坐标形式中,它看起来像这样 - A = (Bx*Q, By*Q, Bz*Q)。从这里我们得到比例 - Ax/Bx = Ay/By = Az/Bz。我们将所有东西都向一个方向转移,得到 Ax / Bx - Ay / By - Az / Bz = 0。除法不好,因为 可能会发生除以零,所以我们通过将等式两边都乘以 来消除它Bx*By*Bz。我们得到最终公式 - Ax*By*Bz - Ay*Bx*Bz - Az*Bx*By = 0。

问题是什么:不起作用)例如对于情况 A(100, 0, 100) 和 B(0, 100, 0)。请告诉我我在哪里犯了错误以及它是什么。

математика
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-06-03 21:45:54 +0000 UTC

android.support.v7 库的相关性

  • 1

再会。

在您的项目中使用 android.support.v7 库的相关性如何?我应该尝试使用它还是它是过去的遗物?应该放弃 android.support.v7 以支持 AndroidX,还是其中一个会干扰另一个?

android
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-05-28 14:34:33 +0000 UTC

着色器实验室。尝试将颜色添加到属性时出现编译器错误

  • 1

再会。

我正在为 Unity 编写一个简单的着色器:

Shader "MyShaders/boring_shader" {
    Properties {
        _MainTex("Texture", 2D) = "white"
        _MyColor("Color", Color) = (1,1,1,1)
    }
    SubShader {
        Tags { 
            "PreviewType"="Plane" 
            "Queue" = "Transparent"
        } 
        Pass {
            Blend SrcAlpha OneMinusSrcAlpha

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            float4 _MyColor;

            struct ModelVertex {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct V2f {
                float4 vertex : SV_POSITION;
                float2 uv : TEXCOORD0;
            };

            V2f vert(ModelVertex v) {
                V2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            float4 frag(V2f i) : SV_Target {
                float4 color = tex2D(_MainTex, i.uv);
                color.r = i.uv.x;
                color.g = i.uv.y;
                return color;
            }

            ENDCG
        }
    }
}

添加行后_MyColor("Color", Color) = (1,1,1,1),float4 _MyColor;我在“boring_shader2”中得到错误着色器错误:解析错误:语法错误,第 4 行的意外 TVAL_ID。我不知道发生了什么。

请解释什么是错的。

unity3d
  • 1 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-05-14 02:28:10 +0000 UTC

在给定平面中旋转 3D 矢量

  • 0

再会。

任务:给定两个三维向量 - A 和 B。这些向量相互正交且长度等于 1。编写一个方法,在由向量 A 和 B 定义的平面中旋转向量 A。从向量 A 到向量 B 的旋转被认为是正的。该方法适用于度数,而不是弧度。y 轴指向上方。

我如何尝试解决问题:我创建了一个 Vector3D 类并在其中包含以下方法

void Vector3D::rotate(Vector3D* b, double angle) {
    // Находим координаты вектора, в локальной системе координат задаваемой векторами a и b.
    double localX = cos(degreeToRadian(angle));
    double localY = sin(degreeToRadian(angle));

    // умножаем векторы а и b на скаляры - длины компонентов результатирующего вектора
    double newXA = x * localX;
    double newYA = y * localX;
    double newZA = z * localX;
    double newXB = b->x * localY;
    double newYB = b->y * localY;
    double newZB = b->z * localY;

    // складываем полученные векторы
    x = newXA + newXB;
    y = newYA + newYB;
    z = newZA + newZB;
}

在条件向量 A 上调用此向量。条件向量 B 和旋转角度作为参数传递。

什么不起作用: 测试

void print(Vector3D* vector) {
    printf("vector(x=%f;y=%f;z=%f)\n", vector->getX(), vector->getY(), vector->getZ());
}

int main(void) {
    Vector3D a(-1,1,-1);
    a.setLength(1);
    Vector3D b(1,1,1);
    b.setLength(1);

    a.rotate(&b, 45);
    print(&a);

    system("pause");
    return 0;
}

期望:向量(x=-0.000000;y=1.000000;z=-0.000000)

我得到:向量(x=-0.000000;y=0.816497;z=-0.000000)

由于某种原因,矢量的长度在旋转后会发生变化。请告诉我错误在哪里。

c++
  • 2 个回答
  • 10 Views
Martin Hope
Bakuard
Asked: 2020-04-29 13:51:39 +0000 UTC

判断变量的类型是否为指针

  • 0

任务:实现一个表示安全数组的类。它应该:存储有关元素数量的信息,在超出范围的情况下抛出异常,并在创建时使用默认值初始化所有元素。

做了什么:我实现了这样的数组类:

#if !defined(ARRAY_WRAPPER_H)
#define ARRAY_WRAPPER_H

#include <stdlib.h>
#include <string>

using namespace std;

template<class T> class ArrayWrapper {

    private:
        T* array;
        int size;

    public:
        ArrayWrapper(int size): size(size) {
            array = new T[size];
            for(int i = 0; i < size; i++) array[i] = 0;
        }

        ~ArrayWrapper() {
            delete [] array;
        }

        T get(int index) {
            if(index < 0 || index >= size) throw IndexOutOfBoundsException(index, size);
            return array[index];
        }

        void set(int index, T value) {
            if(index < 0 || index >= size) throw IndexOutOfBoundsException(index, size);
            array[index] = value;
        }

        int getSize() {
            return size;
        }

        class IndexOutOfBoundsException {
            private:
                string message;
            public:
                IndexOutOfBoundsException(int outIndex, int size) {
                    this->message = "Size array = " + to_string(size) + ". Your index = ";
                    this->message += to_string(outIndex);
                }

                string getMessage() {
                    return message;
                }
        };

};

#endif

什么不起作用:最后一个要求出现了问题 - 使用默认值初始化数组。如果您将指向某种类型或原语之一(例如 ArrayWrapper<int>, ArrayWrapper<MyClass*>)的指针作为模板参数传递,则没有问题。对于这些情况,默认初始化是这样的:

for(int i = 0; i < size; i++) array[i] = 0;

作品。但是对于这样的情况 -ArrayWrapper<string>我自然会得到一个编译错误。

问:怎么画线

for(int i = 0; i < size; i++) array[i] = 0;

在像 ArrayWrapper 这样的情况下没有实现(或根本不存在)。如果我没记错的话,这应该使用宏来完成,但我不知道具体是怎么做的。请帮助解决问题。

c++
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5