在PHP中,SPLFileObject允许将文件视为迭代器.
然而,有一种我不理解的行为.当您在对象上调用next()时,它会增加key()的值,但不会使文件中的行前进,除非您在每次迭代时调用current().SPL文档声明key()返回当前行号.
代码重现:
的test.txt
0
1
2
3
Run Code Online (Sandbox Code Playgroud)
iterator.php
<?php
$fi = new SPLFileObject('test.txt');
echo $fi->current() . "\n"; // prints 0
echo $fi->key() . "\n"; //prints 0
$fi->next();
$fi->next();
$fi->next();
echo $fi->current() . "\n"; // prints 1, expecting 3
echo $fi->key() . "\n"; //prints 3
Run Code Online (Sandbox Code Playgroud)
从我所看到的,下一个不是在这个部分工作.如果我这样使用它会提前:
iterator_fix.php
<?php
$fi = new SPLFileObject('test.txt');
echo $fi->current() . "\n"; // prints 0
echo $fi->key() . "\n"; //prints 0
$fi->next();
$fi->current();
$fi->next();
$fi->current();
$fi->next();
echo $fi->current() . "\n"; // prints 3 as expected
echo …Run Code Online (Sandbox Code Playgroud) 我想加入表并获得以下输出
表格1
TestId1
----------
one
two
three
four
five
six
seven
eight
Run Code Online (Sandbox Code Playgroud)
表2
TestId2
----------
fiftythree
fiftyfour
fiftytwo
fiftyfive
fiftyone
Run Code Online (Sandbox Code Playgroud)
我希望Table3作为我的输出,包含table1中的所有行和table2中的第一行,直到没有剩下的行,然后它们应该开始重复.
作为替代答案,它们也可以随机分配.
TestId1 TestId2
---------- ----------
one fiftythree
two fiftyfour
three fiftytwo
four fiftyfive
five fiftyone
six fiftythree
seven fiftyfour
eight fiftytwo
Run Code Online (Sandbox Code Playgroud) 我可以遍历php脚本中的所有行并执行
UPDATE mytable SET title = "'.trim($row['title']).'" where id = "'.$row['id'].'";
和修剪可以删除\n
但我只是想知道在一个查询中是否可以做同样的事情?
update mytable SET title = TRIM(title, '\n') where 1=1
Run Code Online (Sandbox Code Playgroud)
它会起作用吗?然后我可以执行此查询而无需循环!
谢谢
(PS:我可以测试它,但是表格非常大,不想弄乱数据,所以只是想想你以前是否测试过这样的东西)
之间有什么区别:
SELECT * FROM users WHERE username="davyjones"
Run Code Online (Sandbox Code Playgroud)
和
SELECT * FROM users WHERE username LIKE "davyjones"
Run Code Online (Sandbox Code Playgroud)
(我想我已经搞砸了语法......原谅我,
我主要是桌面应用程序开发人员)
我真正想要的是一个带有泛型构造函数的类,当调用子类的相同构造函数时,子类可以访问相同的字段.这是我想做的一个例子:
public abstract class Command{
private Mediator m
public Command(Mediator med){
m = med;
}
abstract void exec();
}
public class FoobarCommand extends Command{
public FoobarCommand(Mediator med){
super(med);
}
public void exec(){
med.doAFoobar()
}
}
public static void main(String[] args){
Mediator m = new Mediator();
Command c = new FoobarCommand(m);
c.exec();
}
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,因为FoobarCommand没有直接访问Mediator med.那么你将如何访问med领域?我不希望除了子类之外的任何人都可以访问它,并且"protected"不是一个选项,因为我希望人们能够创建自己的命令(显然这些命令在包之外).
我们的应用程序中的数据访问层将使用Oracle的UDT功能.我们只会将UDT对象传入和传出数据库.
目前,我们使用ODP.NET提供的函数生成自定义类(它创建了一个我们在代码库中真正不需要的真正可怕的类).
然后,我们使用单独的映射类将自定义类映射到我们的一个业务对象(并在保存时返回).
我想找到一个更好的方法来做到这一点.
我想我只是去处理生成的类,然后编写一个实现了IOracleCustomType的映射类.然后,From/ToCustomObject方法将从我的UDT映射到我的业务对象.但是,当我尝试它时,这会给我带来问题 - 我收到错误"对象属性未映射到自定义类型成员".看来这两个方法,我也需要我的映射类中的属性 - UDT中每个项目的一个属性.
例如,工作流UDT包含三个项目 - 状态,创建时间和创建时间.我的UDT很简单:
TYPE workflow_type AS OBJECT
(status VARCHAR2(8)
,created_by VARCHAR2(30)
,created_datetime DATE
);
Run Code Online (Sandbox Code Playgroud)
我希望它最终成为业务对象:
public class Workflow
{
/// <summary>
/// Gets the status of the workflow.
/// </summary>
/// <value>The status.</value>
public string Status { get; private set; }
/// <summary>
/// Gets the Windows Logon Id of the user performing the action
/// </summary>
public string CreatedBy{ get; private set; }
/// <summary>
/// Gets the time of …Run Code Online (Sandbox Code Playgroud) 我在网上看到过提供特定Linux设置图像的人,他们将其作为VMDK/VMX文件或ISO文件提供.现在ISO似乎可以与VirtualBox一起使用,因为我可以告诉它安装CD/DVD驱动器并使用ISO而不是物理驱动器,但VMDK和VMX文件总是被列为与VMWare/VirtualBox一起使用.
那么如何在VirtualBox中使用这些文件呢?当我尝试设备导入向导时,它告诉我它只处理OVF文件.
(我正在使用Sun VirtualBox 3.0.4)
我想创建一个空的测试表.使用来自digitalsandwich的示例,我想要类似于:
require_once 'PHPUnit/Extensions/Database/TestCase.php';
class BankAccountDBTest extends PHPUnit_Extensions_Database_TestCase
{
protected $pdo;
public function __construct()
{
$this->pdo = new PDO('sqlite::memory:');
BankAccount::createTable($this->pdo);
}
protected function getConnection()
{
return $this->createDefaultDBConnection($this->pdo, 'sqlite');
}
protected function getDataSet()
{
return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/empty-seed.xml');
}
public function testEmptyTableBehavior()
{
// test stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我应该使用与createFlatXMLDataSet()不同的方法吗?要么???
我想在过去5分钟内得到平均负荷的四舍五入.所以这是我的命令:
uptime | awk -F, '{print $5}'|printf "%.0f\n"
Run Code Online (Sandbox Code Playgroud)
它似乎不正确,因为它总是给我0.
如果我试图在awk和printf之间使用变量作为中间,那么它是正确的
avgload=$(uptime | awk -F, '{print $5}')
printf "%.0f\n" $avgload
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试有什么不对吗?
感谢致敬!
更新:
只是为了获得过去5分钟的平均负载,这是我的linux服务器(Kubuntu)的正常运行时间输出
$ uptime
13:52:19 up 29 days, 18 min, 15 users, load average: 10.02, 10.04, 9.58
在我的笔记本电脑(Ubuntu)上它是相似的
`$正常运行时间
13:53:58上3天,12:02,8个用户,平均负载:0.29,0.48,0.60`
这就是我参加第五场比赛的原因.
有人请告诉我通过WAN的TFS与SVN的性能.我有一个场景,我们有多个团队建立在地理位置.有人可以帮我决定使用什么?
我想知道更多关于TFS 2008性能的信息.从在互联网上阅读,我明白TFS 2005在WAN上真的很糟糕.但是想知道是否有人看到过TFS 2008性能的任何重大改进?