可能重复:
使用javascript super方法设置属性
我正在尝试用HTML5创建一个简单的游戏以获得乐趣.我有一个Entity类,它应该是Player类的超类.
function Entity(x, y) {
this.x = x;
this.y = y;
this.tick = function() {
//Do generic stuff
}
}
function Player(x, y) {
this.parent.constructor.call(this, x, y);
this.tick = function() {
//Do player-specific stuff
this.parent.tick.call(this);
}
}
Player.prototype = new Entity();
Player.prototype.constructor = Player;
Player.prototype.parent = Entity.prototype;
Run Code Online (Sandbox Code Playgroud)
问题出在这一行:
this.parent.tick.call(this);
Run Code Online (Sandbox Code Playgroud)
我在chrome的JavaScript控制台中显示错误:"Uncaught TypeError:无法调用未定义的方法'调用'".
我没有得到它,我花了很长时间试图找到类似问题的帖子.我对超类'构造函数的调用工作正常但是对超类'tick方法的调用不起作用.
我对制作游戏非常陌生,所以我不知道这是否是一个好的设置(从子类tick调用超类tick).如果有更好,更典型的方式供人们使用,请告诉我们.
谢谢.
所以我有一个程序,我需要向URL发送很多(如10,000+)GET请求,我需要它尽可能快.当我第一次创建程序时,我只是将连接放入for循环中,但它确实很慢,因为它必须等待每个连接完成才能继续.我想让它更快,所以我尝试使用线程,它使它更快,但我仍然不满意.
我猜测正确的方法是使用异步连接并连接到所有URL.这是正确的方法吗?
此外,我一直在努力了解线程以及它们是如何工作的,但我似乎无法理解它.我所使用的计算机配有Intel Core i7-3610QM四核处理器.根据英特尔网站上有关该处理器的规格,它有8个线程.这是否意味着我可以在Java应用程序中创建8个线程,它们将同时运行?超过8,没有速度增加?
"性能"选项卡下任务管理器中"线程"旁边的数字究竟代表什么?目前,我的任务管理器显示"线程"超过1,000.为什么这是这个数字,如果那是我的所有处理器支持,它怎么能超过8呢?我还注意到,当我尝试使用500个线程作为测试程序时,任务管理器中的数字增加了500但它的速度与我将其设置为使用8个线程相同.因此,如果数量根据我在Java应用程序中使用的线程数增加,那为什么速度相同呢?
另外,我尝试用Java中的线程做一个小测试,但输出对我来说没有意义.这是我的Test类:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
private static int numThreads = 3;
private static int numLoops = 100000;
private static SimpleDateFormat dateFormat = new SimpleDateFormat("[hh:mm:ss] ");
public static void main(String[] args) throws Exception {
for (int i=1; i<=numThreads; i++) {
final int threadNum = i;
new Thread(new Runnable() {
public void run() {
System.out.println(dateFormat.format(new Date()) + "Start of thread: " + threadNum);
for (int i=0; i<numLoops; i++)
for (int j=0; j<numLoops; …Run Code Online (Sandbox Code Playgroud) 我正在尝试导入一个由 mysqldump 为 InnoDB 表生成的大型 SQL 文件,但即使在调整 my.cnf 中的一些参数并禁用 AUTOCOMMIT(以及 FOREIGN_KEY_CHECKS 和 UNIQUE_CHECKS 但表确实没有任何外键或唯一键)。但我想知道是否因为表中有几个索引而需要这么长时间。
查看 SQL 文件,似乎索引是在插入所有数据之前在 CREATE TABLE 语句中创建的。根据我(有限的)研究和个人经验,我发现在插入所有数据后添加索引会更快。是否不必检查每个 INSERT 的索引?我知道 mysqldump 确实有一个--disable-keys选项可以做到这一点 - 在插入之前禁用键,但显然这只适用于 MyISAM 表而不适用于 InnoDB。
但是为什么 mysqldump 不能在 InnoDB 表的 CREATE TABLE 语句中不包含键,然后在插入所有数据后执行 ALTER TABLE?还是 InnoDB 的工作方式不同,没有速度差异?
谢谢!
我有时在编程时遇到这个问题.
想象一下,我有一个包含两列的数据表.第一列有字符串,第二列有整数.
我希望能够将表的每一行存储到动态数组中.因此,数组的每个元素都需要包含一个字符串和一个整数.
以前,我通过将表的每一列拆分为两个单独的ArrayLists来实现这一点,然后当我想添加一行时,我会在每个ArrayList上调用add()方法一次.要删除,我会在同一索引的每个ArrayList上调用remove(index)方法一次.
但是不是有更好的方法吗?我知道有类似HashMap的类,但它们不允许重复键.我正在寻找允许重复输入的东西.
我知道可以做这样的事情:
ArrayList<Object[]> myArray = new ArrayList<Object[]>();
myArray.add(new Object[]{"string", 123});
Run Code Online (Sandbox Code Playgroud)
每次我从数组中获取一个元素时,我真的不想要转换为String和Integer但是这可能是没有创建自己的唯一方法吗?这看起来更让我困惑,我更喜欢使用两个ArrayLists.
那么有没有像ArrayList这样的Java对象,它会像这样工作:
ArrayList<String, Integer> myArray = new ArrayList<String, Integer>();
myArray.add("string", 123);
Run Code Online (Sandbox Code Playgroud) 有什么方法可以检测小部件何时改变位置?比如键盘弹出,内容上移?我想在不依赖焦点事件或尝试检测键盘状态的情况下检测到这一点。
这是一个示例应用程序:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: MyTextField()
)
)
);
}
}
class MyTextField extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TextField();
}
}
Run Code Online (Sandbox Code Playgroud)
MyTextField当它聚焦时,如何检测它何时向上移动?
java ×2
arraylist ×1
arrays ×1
asynchronous ×1
canvas ×1
dart ×1
flutter ×1
inheritance ×1
innodb ×1
javascript ×1
mysql ×1
sql ×1
subclass ×1
superclass ×1