我的PHP库中有几个静态工厂模式.但是,内存占用空间不大,我们希望减少执行期间所需的文件数量.以下是我们今天的例子:
require_once('Car.php');
require_once('Truck.php');
abstract class Auto
{
// ... some stuff ...
public static function Create($type)
{
switch ($type) {
case 'Truck':
return new Truck();
break;
case 'Car':
default:
return new Car();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是不可取的,因为即使只需要一个或另一个,也需要包含Car.php和Truck.php.据我所知,require/include和他们的......一旦变化包括与调用相同范围的库.这是真的?
如果是这样,我相信这会导致内存泄漏:
abstract class Auto
{
// ... some stuff ...
public static function Create($type)
{
switch ($type) {
case 'Truck':
require_once('Truck.php');
return new Truck();
break;
case 'Car':
default:
require_once('Car.php');
return new Car();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,在第二个例子中,即使使用了require_once风格,多次调用Create()也会因为调用范围而导致多个需求.
这是真的?在这样的示例中,在php中动态包含库的最佳方法是什么?
谢谢!
我正试图在我的SSIS进度日志中删除一些虚假警告.我在使用原始SQL来完成工作的任务中收到一堆关于未使用列的警告.我有一个数据流负责在加载新数据之前将数据存档到临时表中.数据流如下所示:
+--------------------+
| OLEDB Source task: |
| read staging table |
+--------------------+
|
|
+---------------------------+
| OLEDB Command task: |
| upsert into history table |
+---------------------------+
|
|
+---------------------------+
| OLEDB Command task: |
| delete from staging table |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)
我的'upsert'任务是这样的:
--------------------------------------
-- update existing rows first...
update history
set field1 = s.field1
...
from history h
inner join staging s
on h.id = s.id
where h.last_edit_date <> s.last_edit_date -- only update changed records
-- ... then …Run Code Online (Sandbox Code Playgroud) 是否有任何性能原因在Java中声明方法参数final?
如:
public void foo(int bar) { ... }
Run Code Online (Sandbox Code Playgroud)
与:
public void foo(final int bar) { ... }
Run Code Online (Sandbox Code Playgroud)
假设bar只读取并且从未修改过foo().
我需要查看字符串值是否与对象值匹配,但为什么这不起作用?
public int countPacks(String flavour) {
int counter = 0;
for(int index = 0; index < packets.size(); index++) {
if (packets.equals(flavour)) {
counter ++;
}
else {
System.out.println("You have not entered a correct flavour");
}
}
return counter;
}
Run Code Online (Sandbox Code Playgroud) 在Rails中向整数类添加方法的最佳位置在哪里?我想添加一个to_meters和to_miles方法.
我想用H:MM:SS这样的模式格式化持续时间(以秒为单位).java中的当前实用程序旨在格式化时间而不是持续时间.
我经常在C++中遇到大型的非模板类,其中简单的方法直接在头文件的类体中定义,而不是在实现文件中单独定义.例如:
class Foo {
int getBar() const { return bar; }
...
};
Run Code Online (Sandbox Code Playgroud)
为什么这样?好像有缺点.实现不是应该隐藏的,代码不太可读,如果类的头文件包含在许多不同的地方,编译器的负担也会增加.
我的猜测是人们打算在其他模块中内联这些功能,这可以显着提高性能.但是,我听说较新的编译器可以跨模块在链接时进行内联(和其他过程间优化).对这种链接时优化的支持有多广泛,它是否真的不需要这些定义?这些定义还有其他充分的理由吗?
我正在写一个Rails插件,其中包含一些部分内容.我想测试部分内容,但是我很难设置一个可以渲染它们的测试.没有相关的控制器,所以我只假装一个:
require 'action_controller'
require 'active_support'
require 'action_pack'
require 'action_view'
class MyTest < Test::Unit::TestCase
def setup
@renderer = ActionController::Base.new
@renderer.append_view_path File.expand_path(File.join(File.dirname(__FILE__), '..', 'views'))
end
def test_renders_link
result = @renderer.render(:partial => '/something')
assert ...
end
end
Run Code Online (Sandbox Code Playgroud)
但那个:render电话总是爆炸.我尝试使用的是一个ActionView::Base而不是一个ActionController::Base,但这种情况甚至更少.
有人有成功吗?
我正在阅读C++编程语言.Stroustrup在其中陈述sizeof(char) == 1和1 <= sizeof(bool).具体取决于实施.为什么像布尔这样的简单值与char相同?
我有一个非常具体的html表构造,似乎揭示了一个Gecko错误.
这是问题的提炼版本.在基于gecko的浏览器(例如FF)中观察下表:(您必须将其复制并粘贴到新文件中)
<style>
table.example{
border-collapse:collapse;
}
table.example td {
border:1px solid red;
}
</style>
<table class="example">
<thead>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td rowspan="3">3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>1</td>
<td rowspan="2">2</td>
</tr>
<tr>
<td>1</td>
<td>3</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
右下角单元格中的"3"上缺少一条线 - 在任何其他浏览器中查看该线条,该线条将按预期显示.有趣的是,抛弃桌子的thead部分,看看我们得到了什么:
<style>
table.example{
border-collapse:collapse;
}
table.example td {
border:1px solid red;
}
</style>
<table class="example">
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td rowspan="3">3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>1</td>
<td rowspan="2">2</td>
</tr>
<tr>
<td>1</td> …Run Code Online (Sandbox Code Playgroud) java ×3
c++ ×2
ruby ×2
actionview ×1
arrays ×1
boolean ×1
border ×1
css ×1
duration ×1
final ×1
firefox ×1
gecko ×1
html-table ×1
include ×1
logging ×1
optimization ×1
performance ×1
php ×1
plugins ×1
polymorphism ×1
require ×1
require-once ×1
ssis ×1
string ×1
testing ×1