这是一个设计问题.我正在尝试在两个实现之间做出决定.
为了正确解释这个,我需要一个例子.因此,为了举例:
我有一个班级可以生成一份报告,比如某个特定日子的某些股票市场价值.我创建了一个StockMarketReportGenerator
对象,将其传递给今天的日期,并根据当前的市场价值生成报告.
在StockMarketReportGenerator
"有" StockMarketData
的对象.该StockMarketData
对象的目的是包含存储在数据库中的表(可能称为StockMarket :))中的所有股票市场值,以及根据表数据计算的一些其他值.它具有与数据库连接的私有方法,检索数据,进行必要的计算,并将最终值存储在对象的成员变量中.(然后它有getter方法来公开这些值,但没有setter方法.)StockMarketData
该类基本上是股票市场数据值的"持有者".我有一个称为" calculateStockMarketData()
"的中心函数,它调用所有这些私有帮助器方法并设置对象.(我知道所有这些处理都可以通过Hibernate这样的框架更容易处理;但是决定手动执行它,因为它是一个非常小的,有点临时的项目,不值得设置.)
我的问题是这个 - 从我的ReportGenerator
班级,我只需要StockMarketData
对象来访问它的属性/成员变量 - 后处理和后期计算.这意味着,我真的希望得到预先填充数据的对象.所以我将calculateStockMarketData
方法保密,并从StockMarketData
构造函数中自动调用它.但是我对在构造函数中进行所有处理然后没有任何公共方法感到有些不安.这是一个设计缺陷吗?或者这是最合乎逻辑的方式吗?基本上,以下哪两个实现更好?
1)(我当前的实现)将中心calculateStockMarketData()
方法设为私有并从StockMarketData
方法构造函数(通过今天的日期)调用它,这样无论什么时候有一个StockMarketData
对象,它都已填充.因此,ReportGenerator
在开始使用对象属性之前,我需要的所有内容都是行:
StockMarketData myData = new StockMarketData(someDate);
Run Code Online (Sandbox Code Playgroud)
2)使中心calculateStockMarketData()
方法公开,以便为了设置StockMarketData
对象,您需要显式调用该方法.所以从ReportGenerator
课上我会编码:
StockMarketData myData = new StockMarketData(someDate);
myData.calculateStockMarketData();
Run Code Online (Sandbox Code Playgroud)
第一个对我来说是更好的设计,特别是因为在初始化之前不可能使用对象属性.但是我也不确定从构造函数执行大量代码的标准......我应该选择哪个?
我正在尝试为SQL Server表编写一个insert语句,将值1插入到十进制字段中.该字段的类型为十进制(10,10),据我所知,这意味着它最多可以有10位数字,最多10位数字可以在小数点后面.但是,当我尝试运行insert语句时,我收到以下错误:
Arithmetic overflow error converting int to data type numeric.
Run Code Online (Sandbox Code Playgroud)
如果我将字段的数据类型更改为十进制(11,10),它会突然起作用.我在这里不理解什么?我究竟做错了什么?
我在使用基本的PHP while循环时遇到了一些麻烦,每次我在浏览器中启动test_post.php文件时,我都会得到一个永无止境的循环,我不知道我错过了什么!
这是我的PHP代码:
<?php
mysql_connect('localhost', 'admin', '1234') or die(mysql_error());
mysql_select_db('json');
$test = mysql_query('SELECT user,pass FROM login WHERE user="john"');
$row = mysql_fetch_array($test, true);
while($row) {
echo "Username: ".$row['user']." Password: ".$row['pass']."<br />";
};
?>
Run Code Online (Sandbox Code Playgroud)
我的mySQL数据库中有三个符合该条件的条目,但它会无限循环遍历第一个条目!
我试图从数据库中获取一个数组,然后将其转换为一个JSON对象,可以传回以填充下拉列表.
我还尝试使用PHP的count函数来获取数组中的条目数量,以限制while循环执行的次数,但即使这样也会导致永不停止的循环.
我的数据库结构由一个名为login的表组成,该表包含3列,即id,user和pass,其中我有3个条目,其'user'值为'john'.
关于什么可能出错的任何想法?
PS:由于某些原因,我无法将代码格式应用到我的帖子,工具栏已经不见了!
我有一个像这样的查询(不,我的表和字段不是由这些名称调用,但结构是相同的) -
SELECT table1.id, table2.id, table1.phone1
FROM table1 LEFT OUTER JOIN
table3 ON table3.id = table1.id LEFT OUTER JOIN
table2 ON table3.id2 = table2.id
WHERE table1.phone1 IS NOT NULL AND LTRIM(RTRIM(table1.phone1)) <> ''
UNION
SELECT table1.id, table2.id, table1.phone2
FROM table1 LEFT OUTER JOIN
table3 ON table3.id = table1.id LEFT OUTER JOIN
table2 ON table3.id2 = table2.id
WHERE table1.phone2 IS NOT NULL AND LTRIM(RTRIM(table1.phone2)) <> ''
UNION
SELECT table1.id, table2.id, table2.phone
FROM table1 LEFT OUTER JOIN
table3 ON table3.id = table1.id …
Run Code Online (Sandbox Code Playgroud) 不是非常显著...但我已经得到了一个有点好奇:什么是正确的术语自连接-你加入一个表上本身,或加入一个表到自己?
我有一个coldfusion网站,有一次我们输入了一个日志 - 每当运行某种类型的代码时,就会记录该代码.现在我们想把它拿出来,但仍然可以选择将它重新放入,所以我们计划每次都(有可能有数百个)查找这些代码,并注释掉日志代码.这对我来说似乎很乏味,我想知道是否有某种方法将代码标记为测试并通过在一个地方更改设置自动启用/禁用它......我想我已经在其他语言中看到过这样的功能.这在ColdFusion中可行吗?
我可以在sql server中的id字段上设置一个自动增量,它会使每行的id加倍吗?
我正在使用cfspreadsheet生成excel电子表格.我一个接一个地添加行.我添加行后,我想立即格式化它.像这样的东西:
<cfset SpreadsheetAddRow(mySpreadsheet, "hi,this,is,a,test") />
<cfset SpreadsheetFormatRow(mySpreadsheet,
{
fgcolor:red;
}) />
Run Code Online (Sandbox Code Playgroud)
但是,对于formatrow函数,您必须提供行号.有没有办法格式化我刚刚添加的行而不保持我正在运行的行的运行计数器?
我刚刚看到以下代码:
for(Iterator<String> iterator = stuff.iterator(); iterator.hasNext();) {
...
}
Run Code Online (Sandbox Code Playgroud)
这让我感到有点误用for
......这段代码不会更好:
Iterator<String> iterator = stuff.iterator();
while(iterator.hasNext()) {
...
}
Run Code Online (Sandbox Code Playgroud)
?
任何人都可以想到使用的具体原因for
?哪种方法更好?
当谈到正则表达式时,我真的是初学者,我不确定从哪里开始.我从网页上抓取了一些HTML代码并存储在变量中,它看起来像这样:
<thead><tr>
<th></th>
<th>GENERAL INFORMATION</th>
<th></th>
<th>DETAILED DATA</th>
</tr></thead>
<tbody><tr>
<th>ID</th>
<td>123456789ABCD</td>
<th>Field1</th>
<td>6 = (Some-Specification (3 or more details))</td>
</tr></tbody>
<tbody><tr>
<th>AGL</th>
<td>1 - United States ; TH - Some Data</td>
<th>Field2</th>
<td>7 = (Option/Other Option)</td>
</tr></tbody>
<tbody><tr>
<th>MANUFACTURER</th>
<td>2010 SPECIFICATION (ADSD: HMKC)</td>
<th>Field3</th>
<td>8 = (My Type)</td>
</tr></tbody>
<tbody><tr>
<th>MODEL</th>
<td>6X4 MY-MODEL/SOME_SPECS LONG SPECIFICATION, BLAH</td>
<th>Field4</th>
<td>9 = (STUFF/OTHER STUFF)</td>
</tr></tbody>
<tbody>
Run Code Online (Sandbox Code Playgroud)
然后有更多相同的...我想将这些单元格中的数据解析为变量.(如解析"123456789ABCD"为ID变量),我在工作的ColdFusion并在考虑使用类似的方法的REFindNoCase
,REReplaceNoCase
,SpanExcluding
...任何想法,我怎么能做到这一点?或者,如果您不熟悉ColdFusion,即使只是解析此数据所需的正则表达式也非常有用.
我正在使用coldfusion将struct(键值对)的内容插入到数据库表中.这是我的代码:
<cfloop collection="#results#" item="ID" >
<cfquery name="insertStuff" datasource="myDataSource">
INSERT INTO web..Stuff (ID, Name)
VALUES (#ID#, #results[ID]#)
</cfquery>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
这看起来很简单......但我收到以下错误:
Incorrect syntax near 'VA'.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
假设我有一个看起来像这样的简单cfform:
<cfform id="fruitForm" method="post" action="">
<cfinput type="radio" name="fruit" id="fruit_apple" value="Apple" /><label for="fruit_apple">Apple</label><br />
<cfinput type="radio" name="fruit" id="fruit_orange" value="Orange" /><label for="fruit_orange">Orange</label><br />
<cfinput type="radio" name="fruit" id="fruit_pear" value="Pear" /><label for="fruit_pear">Pear</label><br />
<cfinput type="submit" name="submitFruit" id="submitFruit" value="Submit" />
</cfform>
Run Code Online (Sandbox Code Playgroud)
如何使用内置的cfform验证来确保选择此组中的至少一个单选按钮?我尝试在每个单选按钮上添加一个validate ="required"但它不起作用.有没有简单的方法来"要求"使用cfform验证选择其中一个按钮?
ColdFusion评论有一个额外的破折号 - 所以:
<!--- Comment here --->
Run Code Online (Sandbox Code Playgroud)
而不是普通的HTML:
<!-- Comment here -->
Run Code Online (Sandbox Code Playgroud)
我们有一小部分网站由非ColdFusion开发人员使用模板设置,他在所有模板文件中使用html注释而不是CF注释.将它们留作普通的HTML注释是一个问题吗?(如果我们应该将它们全部转换为cf注释 - 我可以使用什么正则表达式找到/替换?:))
coldfusion ×5
java ×2
regex ×2
sql ×2
sql-server ×2
casting ×1
cfform ×1
cfquery ×1
comments ×1
decimal ×1
double ×1
excel ×1
format ×1
html ×1
insert ×1
integer ×1
json ×1
loops ×1
mysql ×1
nested-query ×1
parsing ×1
php ×1
radio-button ×1
select ×1
self-join ×1
terminology ×1
testing ×1
validation ×1