我经常使用看起来像这样的模式.我想知道这是否正常,或者是否有最佳实践我不在这里申请.
具体来说,我在想; 在抛出异常的情况下,我在finally块中的代码足以确保连接被正确关闭?
public class SomeDataClass : IDisposable
{
private SqlConnection _conn;
//constructors and methods
private DoSomethingWithTheSqlConnection()
{
//some code excluded for brevity
try
{
using (SqlCommand cmd = new SqlCommand(SqlQuery.CountSomething, _SqlConnection))
{
_SqlConnection.Open();
countOfSomething = Convert.ToInt32(cmd.ExecuteScalar());
}
}
finally
{
//is this the best way?
if (_SqlConnection.State == ConnectionState.Closed)
_SqlConnection.Close();
}
//some code excluded for brevity
}
public Dispose()
{
_conn.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个带有相当大的Oracle数据库的项目(尽管我的问题同样适用于其他数据库).我们有一个Web界面,允许用户搜索几乎任何可能的字段组合.
为了使这些搜索更快,我们将索引添加到我们认为用户通常会搜索的字段和字段组合.但是,由于我们并不真正了解客户将如何使用此软件,因此很难确定要创建哪些索引.
空间不是一个问题; 我们有一个4 TB的RAID驱动器,我们只使用了一小部分.但是,我担心索引太多会导致性能损失.因为每次添加,删除或修改行时都需要更新这些索引,我想在单个表上有几十个索引是个坏主意.
那么有多少指数被认为太多了?10?25?50?或者我应该只是覆盖真正的,非常常见和明显的案例而忽略其他一切?
您如何调整MATLAB环境以更好地满足您的需求?每个答案一个调整.
我下载了Hex Workshop,我被告知要读取.dbc文件.
如果读取偏移量0x04和0x05,它应该包含28,315
我不确定该怎么做?0x04是什么意思?
我重构了一个从另一家公司继承的应用程序的缓慢部分,以使用内部连接而不是子查询
WHERE id IN (SELECT id FROM ...)
Run Code Online (Sandbox Code Playgroud)
重构的查询运行速度提高了约100倍.(约50秒到约0.3)我预计会有所改善,但任何人都可以解释为什么它如此激烈?where子句中使用的列都已编入索引.SQL是否每行执行一次where子句中的查询?
更新 - 解释结果:
不同之处在于"where in in()"查询的第二部分 -
2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where
Run Code Online (Sandbox Code Playgroud)
vs 1带连接的索引行:
SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index
Run Code Online (Sandbox Code Playgroud) 在Java中设计并发线程时使用Runnable和Callable接口有什么区别,为什么要选择一个而不是另一个呢?
是否可以在不使用MXML的情况下使用Flex Framework和组件?我非常了解ActionScript,并且不想乱用一些新的XML语言只是为了获得一些简单的UI.任何人都可以提供一个包含.as文件的例子,该文件可以编译(理想情况下通过FlashDevelop,虽然只是告诉如何使用Flex SDK也可以)并使用Flex Framework?例如,只显示弹出打开警报的Flex按钮将是完美的.
如果不可能,有人可以提供一个最小的MXML文件,它将引导一个自定义AS类,然后可以访问Flex SDK吗?
我希望能够只列出某个文件夹中的目录.这意味着我不希望列出文件名,也不想要其他子文件夹.
让我们看一个例子是否有帮助.在当前目录中,我们有:
>>> os.listdir(os.getcwd())
['cx_Oracle-doc', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'mod_p
ython-wininst.log', 'NEWS.txt', 'pymssql-wininst.log', 'python.exe', 'pythonw.ex
e', 'README.txt', 'Removemod_python.exe', 'Removepymssql.exe', 'Scripts', 'tcl',
'Tools', 'w9xpopen.exe']
Run Code Online (Sandbox Code Playgroud)
但是,我不希望列出文件名.我也不想要像\ Lib\curses这样的子文件夹.基本上我想要的是以下内容:
>>> for root, dirnames, filenames in os.walk('.'):
... print dirnames
... break
...
['cx_Oracle-doc', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'Scripts', 'tcl', 'Tools']
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有更简单的方法来实现相同的结果.我得到的印象是,使用os.walk只返回顶级效率低效/太多.
有没有办法检查Delphi中的ReWrite是否已打开文件?
代码将是这样的:
AssignFile(textfile, 'somefile.txt');
if not textFile.IsOpen then
Rewrite(textFile);
Run Code Online (Sandbox Code Playgroud) java ×2
sql ×2
.net ×1
apache-flex ×1
c# ×1
callable ×1
database ×1
delphi ×1
file-io ×1
filesystems ×1
flashdevelop ×1
hex ×1
hex-editors ×1
interface ×1
join ×1
matlab ×1
mxml ×1
mysql ×1
oracle ×1
performance ×1
python ×1
runnable ×1
syntax ×1