我正在使用JDBC模板,并希望使用预准备语句从数据库中读取.我在.csv文件中迭代多行,并在每一行上执行一些带有相应值的SQL select查询.
我想加快我对数据库的阅读速度,但我不知道如何让JDBC模板与预处理语句一起工作.
有PreparedStatementCreator和PreparedStatementSetter.在本示例中,它们都是使用匿名内部类创建的.但是在PreparedStatementSetter类中,我无法访问我想在预准备语句中设置的值.
因为我正在迭代.csv文件,所以我不能将它们硬编码为String,因为我不知道它们.我也无法将它们传递给PreparedStatementSetter,因为构造函数没有参数.将我的价值观设定为最终值也是愚蠢的.
我习惯于创建准备好的语句非常简单.就像是
PreparedStatement updateSales = con.prepareStatement(
"UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate():
Run Code Online (Sandbox Code Playgroud)
就像在这个Java教程中一样.
我正在使用Python/numpy/scipy编写一个小型光线跟踪器.曲面被建模为二维函数,其高度高于法线平面.我减少了找到光线和曲面之间的交点以找到具有一个变量的函数的根的问题.功能是连续的,可连续区分的.
有没有办法比使用scipy根查找器(并且可能使用多个进程)简单地循环遍历所有函数更有效地执行此操作?
编辑:函数是表示光线的线性函数和表面函数之间的差异,约束到交叉平面.
什么是打开和关闭装饰器的最佳方法,而不是实际去每个装饰并将其评论出来?假设您有一个基准测试装饰器:
# deco.py
def benchmark(func):
def decorator():
# fancy benchmarking
return decorator
Run Code Online (Sandbox Code Playgroud)
在你的模块中,例如:
# mymodule.py
from deco import benchmark
class foo(object):
@benchmark
def f():
# code
@benchmark
def g():
# more code
Run Code Online (Sandbox Code Playgroud)
这很好,但有时你不关心基准测试,也不想要开销.我一直在做以下事情.添加另一个装饰者:
# anothermodule.py
def noop(func):
# do nothing, just return the original function
return func
Run Code Online (Sandbox Code Playgroud)
然后注释掉导入行并添加另一行:
# mymodule.py
#from deco import benchmark
from anothermodule import noop as benchmark
Run Code Online (Sandbox Code Playgroud)
现在,基于每个文件切换基准测试,只需要更改相关模块中的import语句.可以独立控制各个装饰器.
有一个更好的方法吗?最好不要编辑源文件,并指定在其他地方使用哪些文件的装饰器.
python ×2
decorator ×1
java ×1
jdbc ×1
jdbctemplate ×1
numpy ×1
raytracing ×1
scipy ×1
spring ×1