小编Sea*_*lsh的帖子

我是否需要填写主题才能进行垃圾回收?

我遵循Angular组件中的清理模式,如下所示:

class SomeComponent implements OnInit, OnDestroy {
    private destroy$ = new Subject();

    ngOnInit() {
        service.someStream().takeUntil(this.destroy$).subscribe(doSomething);
    }

    ngOnDestroy() {
        this.destroy$.next(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

这具有在组件被销毁时自动取消订阅的好处.

我的问题是:是否引用destroy$无限期地粘贴,因为我没有调用this.destroy$.complete(),或者在收集父类时是否会获得GC?

rxjs angular

15
推荐指数
1
解决办法
3644
查看次数

如何让setHeader覆盖现有标头?

我正在使用ChromeLogger扩展程序(无耻插件)的CF接口,它使用HTTP标头将数据从服务器端语言记录到Chrome控制台.

在请求过程中,log()可以多次调用该方法.对于每次通话,我都会以ChromeLogger正确显示数据所需的格式编写标题.在CF10中,这很好 - 每次后续调用都会setHeader()覆盖以前设置的标题,并使用相同的名称.但是,在CF9中,我看到多个具有相同名称的标头.

此示例代码演示了此问题:

<cfscript>
pc = getPageContext().getResponse();
pc.setHeader( "test-header", "value 1" );
pc.setHeader( "test-header", "value 2" );
pc.setHeader( "test-header", "value 3" );
</cfscript>
Run Code Online (Sandbox Code Playgroud)

在CF9中,我看到三个名为"test-header"的标题,每个标题都有自己的值.在CF10中,我看到一个名为"test-header"的标题,其值为"value 3".根据这个方法的Java文档,后者是正确的(强调我的):

设置具有给定名称和值的响应标头.如果已设置标头,则新值将覆盖前一个标头.containsHeader方法可用于在设置其值之前测试标头的存在.

使用cfheader标签具有相同的结果,大概是因为它只是包装了setHeader()方法.

我知道我可以在请求过程中构建标题,然后setHeader()在最后通过一次调用onRequestEnd(),但我希望这个组件尽可能自包含 - 最终用户越少修改他们的代码来实现它,越多越好.

CF9中有没有其他方法可以覆盖现有的标题?

coldfusion coldfusion-9 chromelogger

8
推荐指数
1
解决办法
1901
查看次数

我该如何构造这个类继承呢?

我正在开发一个应用程序,用于将用户上传的图像/文档的数据库和目录从我们的生产服务器传输到开发服务器.该应用程序是用Coldfusion编写的,但我不认为该语言与这个问题相关 - 它更多的是结构/架构问题,而不是语言特有的问题.

我将为我的示例编写伪代码,所以请不要选择语法.

当我看到类继承演示时,它通常很简单class Student extends Person() {}.显然,学生是一个更专业的人,所以这是有道理的.

在我的应用程序中,我有一个类Site(),其中包含相关信息,如DSN,文件上载目录等.我在一个类中执行我的SQL导出,我的文件上载导出在另一个类中,这两个类都是从站点类中调用的(伪代码):

class Site {
    public function exportSql() {
        sqlExport = new sqlExport(this.dsn);
        sqlExport.createDumpAndZipItAndStuff();
    }
    public function exportUploads() {
        uploadsExport = new uploadsExport(this.uploadDirectory);
        uploadsExport.copyAndZipFilesAndStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

除了控制从应用程序前端请求的流量流之外,Site类不会执行任何操作,其他所有内容都将传递到其中一个导出类.

这对我来说很好,但我想正确地构建它.现在,我必须将Site的属性传递给导出类的构造函数,然后使用这些参数设置导出类的属性.这会导致大量重复.

让我的导出类继承Site类以便我可以直接访问属性是否合适?导出类不是更专业的站点,就像我之前给出的Person/Student示例一样.相反,他们只是为Site类执行繁重的工作.

如果这不是适合继承的情况,我应该如何构建应用程序?正如我之前所说,我现在正在做的方式有效,但我想借此机会更多地了解设计模式,并以有意义的方式编写代码.

oop coldfusion inheritance

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

无法理解Javascript Koans中的反射测试

已经有一个答案发布到测试本身,可以在这里找到,但我似乎无法弄清楚为什么答案是正确的.

给我带来麻烦的部分测试是:

var keys = [];
var fruits =  ['apple', 'orange'];
for(propertyName in fruits) {
    keys.push(propertyName);
}
ok(keys.equalTo(['__', '__', '__']), 'what are the properties of the array?');
Run Code Online (Sandbox Code Playgroud)

如上所述的那个(显然)正确的答案是

ok(keys.equalTo(['0', '1', 'fruits.prototype'), 'what are the properties of the array?');
Run Code Online (Sandbox Code Playgroud)

我尝试插入答案 - 修复了语法错误 - 我的测试仍然失败.

在同一个测试文件中,另一个测试几乎相同,答案是我所期望的:

test("property enumeration", function() {
    var keys = [];
    var values = [];
    var person = {name: 'Amory Blaine', age: 102, unemployed: true};
    for(propertyName in person) {
        keys.push(propertyName);
        values.push(person[propertyName]);
    }
    ok(keys.equalTo(['name','age','unemployed']), …
Run Code Online (Sandbox Code Playgroud)

javascript reflection

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

mysql创建多个表

我正在开发一个项目,我需要在一个查询中创建两个表.

我写的是这样的:

DROP TABLE Employee;

CREATE TABLE Employee(
Employee_Id CHAR(12)NOT NULL PRIMARY KEY,
First_name CHAR(30),
Last_name CHAR(30),
Address VARCHAR(50),
City CHAR,
State CHAR,
Salary INT,
Gender CHAR,
Age INT
);

DROP TABLE Job;

CREATE TABLE job(
Exempt_Non_Exempt_Status tinyint(1) NOT NULL PRIMARY KEY,
Job_title CHAR,
Job_description CHAR
); 
Run Code Online (Sandbox Code Playgroud)

但即使我没有创建它,也会出现"未知表'作业'"之类的错误.

mysql sql

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

为什么MySQL在寻找具有值插入名称的列

在对MySQL进行cfquery时,MYSQL在以下代码中给出了'字段列表'中的错误未知列'问题':

<cfquery name="qUpdateTheQuestion" datasource="testmaster">
INSERT INTO ETrueFalseQuestions
VALUES (<cfoutput>#newTypeID#</cfoutput>, `<cfoutput>#FORM.Question#</cfoutput>`, <cfoutput>#FORM.truefalse#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

我尝试了所有我想到的尝试来解决这个问题,以及我在尝试搜索解决方案时发现的一些建议,例如使用反引号而不是单引号.

我也不明白为什么它会搜索名为Question的列,因为这是FORM.Question的值,并根据输入到表单中的内容而更改.任何建议将不胜感激.

mysql coldfusion cfquery

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

Groovy each()方法没有正确迭代

尝试此代码时,我遇到了each()方法的奇怪行为:

def xml = new XmlSlurper().parseText('''
<list>
    <item a="1">a</item>
    <item a="2">b</item>
    <item a="1">c</item>
</list>
''')

def i = 0
xml.'**'.findAll { it.@a=='1' }.each {
    println "hi" + i
}  
Run Code Online (Sandbox Code Playgroud)

结果只是hi0,但我希望如此hi0hi1.这种行为是错误还是每种语言设计?第二个结果只有在我写println "hi" + i++而不是当前的闭包体时才提供,所以当每个项目的内容不同时......

each groovy

-1
推荐指数
1
解决办法
113
查看次数