use strict;
use warnings;
package LineSegment;
sub new
{
my $class = shift;
my ($ax, $ay, $bx, $by) = @_;
my $self = {"ax"=>$ax,
"ay"=>$ay,
"bx"=>$bx,
"by"=>$by,
};
bless ($self, $class);
return $self;
}
sub getA{
#Issue on get A
my $self = shift;
return ($self->{ax}, $self->{ay});
}
sub getB{
#Issue on get B
my $self = @_;
return ($self->{bx}, $self->{by});
}
sub setA{
#Can print correct value. Is the return statement where it goes wrong?
my($self, $ax, $ay) = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 JDBC 并且制作了一个存储过程。我想调用存储过程,然后使用Java中的输出数据System.out.println。我怎么做?
下面是我原来的存储过程。我想让这个工作,但从阅读中我不知道这是否可能
DELIMITER $$
CREATE
PROCEDURE CountMembers()
BEGIN
SELECT COUNT(MEMBER_ID) FROM Members;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
这是我将其更改为的内容,因为它似乎得到了输出,这可能是必须要做的。
DELIMITER $$
CREATE
PROCEDURE CountMembers(OUT m_count VARCHAR(30))
BEGIN
SELECT COUNT(MEMBER_ID) INTO m_count FROM Members;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
我知道要运行它,我必须创建一个可调用的语句,然后我知道在哪里String userCount = callableStatement.getString(1);可以获得输出。基本上我已经阅读了很多信息,但我很难将它们整合在一起。
我的一个组件中存在更改检测运行过于频繁的问题,因此我尝试使用该指令trackBy的选项ngFor。
通过阅读,我了解到 Angular 将在下次运行更改检测时使用从函数返回的值作为trackyBydiff。为了看看它是否符合我的需求,并尝试更好地理解它,我建立了一个游乐场。使用的时候我把trackyBy我用的函数的返回值设置为return undefined,结果还是得到了我想要的结果。
TS:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
styleUrls: ['./app.component.scss'],
templateUrl: './app.component.html',
})
export class AppComponent {
collection;
constructor() {
this.collection = [{id: 1, value: 0}, {id: 2, value: 0}, {id: 3, value: 0}];
}
getItems() {
this.collection = this.getItemsFromServer();
}
getItemsFromServer() {
return [{id: 5, value: 0}, {id: 2, value: 0}, {id: 3, value: 3}, {id: 4, value: 4}];
}
trackByFn(index, item) {
return …Run Code Online (Sandbox Code Playgroud) setTimeout下面是同步代码之后执行的例子
console.log('hello');
setTimeout(() => console.log('timeout'), 0);
console.log('end');
Run Code Online (Sandbox Code Playgroud)
控制台输出:hello end timeout
异步:
function asyncForEach(array, callBack) {
array.forEach(x => setTimeout(callBack(x), 0));
}
asyncForEach([1,2,3,4], (i) => console.log(i));
console.log('end');
Run Code Online (Sandbox Code Playgroud)
控制台输出:
1
2
3
4
end
Run Code Online (Sandbox Code Playgroud)
同步:
[1,2,3,4].forEach(x => console.log(x));
console.log('end');
Run Code Online (Sandbox Code Playgroud)
控制台输出:
1
2
3
4
end
Run Code Online (Sandbox Code Playgroud)
我试图更好地理解event loop和task queue,并且在观看了一个很好的推荐视频(https://www.youtube.com/watch?v=8aGhZQkoFbQ)后,遇到了以下半声明:“回调可以是同步和异步的”。演讲者继续演示同步方式如何最终不会通过task queue,因此不会通过event loop,因此所有内容都保留在stack. 但是,异步方式会导致task queue用 的最终返回填充setTimeout callback,这将使任何同步的下面代码可执行,因为event loop必须等待一个空stack来插入返回的callback.
运行上面的代码时(我从他那里偷来的东西也编辑过,所以这可能是我的错误添加),异步方式产生与同步方式相同的结果。
有人可以帮助解释为什么异步方式不作为第一个setTimeout示例和/或提供解释如何不将常规回调(例如数组帮助程序方法)插入task …
angular ×1
event-loop ×1
java ×1
javascript ×1
jdbc ×1
mysql ×1
ngfor ×1
perl ×1
task-queue ×1
typescript ×1