RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

全部问题

Martin Hope
Andrew_STOP_RU_AGRESSION_IN_UA
Asked: 2020-01-24 15:58:53 +0000 UTC

正确执行角色移动

  • 36
  • 即使我在两个对象上都有对撞机,为什么一个对象会穿过另一个对象?

  • 为什么我的角色在移动时会穿过另一个物体然后反弹回来?

  • 如何在 Unity3d 中正确实现角色移动?

  • 为什么经常使用 transform.position 移动,为什么它是错误的?

  • 如果 FPS 下降,为什么我的角色会以不同的速度移动?

  • 为什么分配中使用transform.position乘数Time.deltaTime?

  • 为什么通过 shift 移动角色是错误的transform.position?

  • 为什么使用Velocityor时.AddForce()不使用乘数Time.deltaTime?

  • 如何从地板上跳下来,但让角色无法无休止地起飞

  • 为什么当平台移动时,站在平台上的角色会留在原地?

  • 为什么子弹不总是造成伤害?

事实上,所有这些问题都是初学者中太常见的一个问题。

同时创建了一个标签unity3d-faq

c# unity3d
  • 1 个回答
  • 10 Views
Martin Hope
Viktor Tomilov
Asked: 2020-02-01 22:33:43 +0000 UTC

如何优化 MySQL 中的表/查询?

  • 35

人类基因组的基因表很小,只有 60434 个条目:

CREATE TABLE `genes-g38-201505` (
  `chr` varchar(2) NOT NULL,
  `left` bigint(20) NOT NULL,
  `right` int(11) NOT NULL,
  `Complement` int(11) NOT NULL,
  `Name` tinytext NOT NULL,
  `source` tinytext NOT NULL,
  `ENSEMBL` tinytext NOT NULL,
  `gene_version` tinytext NOT NULL,
  `gene_name` tinytext NOT NULL,
  `gene_source` tinytext NOT NULL,
  `gene_biotypeid` tinytext NOT NULL,
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=MyISAM;

人类基因组的重复表,已经更糟了——超过 550 万个条目:

CREATE TABLE `repeats-g38-201505` (
  `id` int(11) NOT NULL,
  `chr` varchar(2) DEFAULT NULL,
  `left` int(11) DEFAULT NULL,
  `right` int(11) DEFAULT NULL,
  `name` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

这是两个服务表。其中,总的来说,只有 chr 对我们很重要 - 染色体的名称,左右 - 整个基因/重复或其部分的左右坐标(可能有几个部分,在这种情况下是几组{chr, left, right 对应一个名称}) 和名称是基因/重复的名称。

表的所​​有数据。

现在是癌症患者组织的实验数据。表格格式为:

CREATE TABLE `51k-80-80-ignore-random-noreverse` (
  `chr` varchar(2) NOT NULL,
  `left` bigint(20) NOT NULL,
  `right` bigint(20) NOT NULL,
  `count` int(11) NOT NULL,
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  UNIQUE KEY `chr_left_right` (`chr`,`left`,`right`),
  `id` bigint(20) NOT NULL AUTO_INCREMENT
) ENGINE=MyISAM;

每个实验都是一样的。每个条目描述了属于 chr 染色体的 DNA 模式,带有左右坐标,计数。记录的数量是不同的,每个实验从 4 到 7 个半百万。每个条目都是一组唯一的坐标 {chr, left, right}

最后一张表,您需要从 4 个实验中收集数据:

CREATE TABLE `pk47-pk51-gene-repeat` (
  `chr` varchar(2) NOT NULL,
  `left` bigint(20) NOT NULL,
  `right` bigint(20) NOT NULL,
  `count_k51` int(11) DEFAULT '0',
  `count_p51` int(11) DEFAULT '0',
  `count_p47` int(11) DEFAULT '0',
  `count_k47` int(11) DEFAULT '0',
  `name_left` varchar(29) NOT NULL,
  `name_right` varchar(17) NOT NULL,
  UNIQUE KEY `pos_name` (`chr`,`left`,`right`,`name_left`,`name_right`)
) ENGINE=MyISAM;

事实上,一切都很简单:您只需要找到落在基因左侧和右侧的那些模式 - 在重复上,计算它们的数量并将它们显示在数据透视表中。查询似乎没有问题,我重复这样的查询 4 ​​次,只将 count_k51 更改为 count_p51 和源表本身:

INSERT INTO `pk47-pk51-gene-repeat` (
      `chr`,`left`, `right`,`count_k51`,`name_left`, `name_right`
)
SELECT 
     a.`chr`, a.`left`, a.`right`, a.`count` as `count_k51`,
     g.`name` as `name_left`, 
     r.`name` as `name_right` 
FROM `
     51k-80-80-ignore-random-noreverse` a, 
     `genes-g38-201505` g,
     `repeats-g38-201505` r 
WHERE
     a.`chr`=g.`chr` and a.`chr`=r.`chr` and 
     a.`left` < g.`right` and a.`left` > g.`left` and 
     a.`right` < r.`right` and a.`right` > r.`left` 
     on duplicate key 
     update 
       `pk47-pk51-gene-repeat`.`count_k51`=a.`count`;

在第一次运行时,可以省略重复键。可能可以进行单个查询而不是 4x,但这会非常麻烦,现在我决定尝试一下。

当然,请求没有执行,由于超时而下降,我已经增加了很多。limit 0,1000; limit 1001,2000依此类推,据我了解,使用它是没用的,因为服务器的每个下一个阶段仍然会经历前一个阶段。
我决定通过 迭代请求id,对请求添加限制20000*i< a.id <20000*(i+1),但情况并没有改善,显然需要重新定义 id,或者应该强制服务器先执行此检查。

因此,我们需要有关如何优化查询、重建表或更改解决此问题的方法的想法(不一定是纯 SQL 查询,我可以使用编程语言中的数据库)。还要感谢您对服务器物理加速的建议:机器上有32GB内存,服务器使用很少,也许调整一些变量?

更新 1.以下是查询的 EXPLAIN 结果:

初始状态:

# id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
'1', 'SIMPLE', 'g', 'ALL', NULL, NULL, NULL, NULL, '60433', NULL
'1', 'SIMPLE', 'a', 'ref', 'chr_left_right', 'chr_left_right', '4', 'dna_homo_pairs.g.chr', '47216', 'Using index condition'
'1', 'SIMPLE', 'r', 'ALL', NULL, NULL, NULL, NULL, '5317291', 'Using where; Using join buffer (Block Nested Loop)'

按照@Mike 的建议添加了索引(chr、left、right):

# id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
'1', 'SIMPLE', 'a', 'ALL', 'chr_left_right', NULL, NULL, NULL, '4721638', NULL
'1', 'SIMPLE', 'g', 'ref', 'chr_left_right', 'chr_left_right', '4', 'methyl_base.a.chr', '604', 'Using index condition'
'1', 'SIMPLE', 'r', 'ref', 'chr_left_right', 'chr_left_right', '5', 'methyl_base.a.chr', '53172', 'Using index condition'

更新 2。使 mysqld 在多个线程中运行。

在查询期间查看了 CPU 使用率。由于我目前在独占模式下工作,因此我是唯一访问本地服务器的人。是否有可能以某种方式强制 mysqld 在多个线程中处理一个查询?然后他可以使用 8 核 / 16 线程,但他只使用了一个。

顺便说一句,将不同的表分散到不同物理硬盘驱动器上的文件夹中,虽然很小,但可以加速工作。

更新 3目前,我根据哪个染色体和脚本(更准确地说,一系列也以编程方式调用的脚本)以编程方式拆分所有源表,现在看起来像这样(假设正在处理第 7 条染色体):

INSERT INTO `pk47-pk51-gene-repeat` (
      `chr`,`left`, `right`,`count_k51`,`name_left`, `name_right`
)
SELECT 
     "7", a.`left`, a.`right`, a.`count` as `count_k51`,
     g.`name` as `name_left`, 
     r.`name` as `name_right` 
FROM `
     51k-80-80-ignore-random-noreverse-chr7` a, 
     `genes-g38-201505-chr7` g,
     `repeats-g38-201505-chr7` r 
WHERE
     a.`left` < g.`right` and a.`left` > g.`left` and 
     a.`right` < r.`right` and a.`right` > r.`left` 
     on duplicate key 
     update 
       `pk47-pk51-gene-repeat`.`count_k51`=a.`count`;

但我没有看到太大的进展。

mysql
  • 4 个回答
  • 10 Views
Martin Hope
Алексей Шиманский
Asked: 2020-12-14 21:29:51 +0000 UTC

如何使用图层蒙版(layermask)以及为什么要写1 << layer?

  • 36

再会!

我了解Unity的工作原理,我观看教程和一些脚本,有时我会遇到类似这样的结构1 << layer,其中layer是一个整数。我经常在与物理相关的方法中看到这一点,例如Raycast:

public int groundLayer = 5; 

void SomeMethod() {
    // do smth...
    if (Physics.RaycastAll(transform.position, transform.forward, 100.0f, 1 << groundLayer).Length > 0) { 
        ...
    }
    // do smth...
}

不仅限于物理学:

LayerMask Collisionmask;
int layer = 5;

void SomeMethod() {
    // do smth...
    if ((Collisionmask.value & (1 << layer)) == 0) {
        ...
    }
    // do smth...
}

我读到这些是某种面具。他们指向图层。但是不明白这些mask是什么,怎么用,和layers有什么关系?什么是1 << layer,例如?

有人可以详细解释吗?谢谢你。

c#
  • 1 个回答
  • 10 Views
Martin Hope
pegoopik
Asked: 2020-12-08 12:54:43 +0000 UTC

嵌套很大时避免 NullPointerException 的最佳方法是什么?

  • 35

大嵌套是指以下形式的代码:

param = foo.getSomthing1().getSomthig2().getSomthing3() ...

从而在每次通话中都能起飞NullPointerException。一个很好的例子是从 XSD 架构生成的类。我需要拉出并分配一些值,如果null途中至少有一个缺失节点(在 Java 中),我需要分配null.

一种选择是以下if形式:

if (foo != null && foo.getSomthing1() != null && ....) {
    param = foo.getSomthing1().getSomthig2().getSomthing3() ...
}

这使得代码不可读。将根据 XSD 类模式生成的对象简单地转换为平面 Java 结构看起来很糟糕。

有一个选项可以放入try catch:) 但它看起来会更糟,更不用说性能了。

我听说过运算符?., ?:, ?[],但我无法让它们在本地工作,否则这将是一个有趣的解决方案:

param = foo?.getSomthing1()?.getSomthig2()?.getSomthing3() ...

UPD:选项 c?.取自非权威来源。我的意思可能是 C#。

告诉我,还有什么办法?

java
  • 8 个回答
  • 10 Views
Martin Hope
Даниил Колесниченко
Asked: 2020-08-06 02:43:10 +0000 UTC

CPython 字节码文件的结构是什么?

  • 35

我试图了解编译后的 CPython 字节码的结构。
假设我有一个包含foo.py以下内容的文件:

def hello(name):
    print("Hello, %s" % name)

编译__pycache__\foo.cpython-35.pyc看起来像这样:

字节码

接下来我明白了什么:

  • 16 0d 0d 0a是神奇的数字
  • 06 e2 7f 57- 最后修改日期
  • 31 00 00 00- 文件大小(应该是 - 虽然文件中有 216 字节,所以我不知道实际大小是多少)
  • 接下来的 22 个字节 ( e3 00 00 00 ... 00 00 00 73) - 不知道为什么
  • 10 00 00 00- 显然是模块代码的大小(但后来发现前一个字符必须是一个类型,而这73是一个字符串类型的代码)
  • 64 00 00, 64 01 00- LOAD_CONST(0); LOAD_CONST(1),其中常量 0 -code object函数,常量 1 - 它的名称 ( "hello")
  • 84 00 00- MAKE_FUNCTION(0),但我仍然不明白为什么需要这个操作码的参数
  • 5a 00 00- STORE_NAME(0),其中名称 0 - 函数名称 ( "hello")
  • 64 02 00 53- LOAD_CONST(2); RETURN_VALUE,其中常量为 2 - None(尽管还不完全清楚为什么模块应该返回一些东西)
  • 29 03- 模块常量元组:(<code object hello>, "hello", None)
  • 接下来的 18 个字节 ( 74 00 00 64 ... 64 00 00 53) - 功能代码hello(那个hello.__code__.co_code)
  • 29 02- 函数常量元组:(None, "Hello, %s")
  • 4e- 常量类型NONE
  • 7a 09- 字符串常量类型 ( SHORT_ASCII) 和字符串长度"Hello, %s"(9 个字符)
  • 48 65 6c 6c 6f 2c 20 25 73- 线"Hello, %s"
  • 29 01- 函数名称元组:("print",)
  • da 05- 这里似乎应该有一种字符串类型,但取而代之的是一种不存在的类型da;05- 字符串长度
  • 70 72 69 6e 74- 函数名称print
  • 29 01- 局部变量名称的元组:("name",)
  • da 04- 再次未知类型da和字符串长度04
  • 6e 61 6d 65- 变量的名称name
  • a9 00 72 03 00 00 00- 没听懂
  • fa 06- 另一个晦涩的类型fa和字符串长度06
  • 66 6f 6f 2e 70 79- 模块文件名 ( foo.py)
  • da 05- 难以理解da的字符串类型和长度05
  • 68 65 6c 6c 6f- 函数的名称hello(尽管没有声明模块名称的元组或类似的东西)
  • 接下来的 17 个字节 ( 01 00 00 00 ... 00 00 00 4e) - 没看懂
  • 29 01- 一些长度为一个元素的元组
  • 72 ...- 类型常量ref(这是什么类型?)
  • da 08- 同样是神秘类型da和字符串长度 08
  • 3c 6d 6f 64 75 6c 65 3e- 线"<module>"(为什么?)
  • 01 ...- 我不知道接下来会发生什么

帮助填补空白。如果我只需要找出某个常数的值,那么我就已经拥有足够的知识了。但是我正在尝试编写一个 Python 字节码解释器,所以我需要完全理解.pyc-file 结构。

python
  • 1 个回答
  • 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