我有一些使用 JDBC 访问 SQLite 数据库的代码。
我注意到,每次进行查询时,内存使用量都会增加 - 即使在连接关闭后,内存使用量也不会下降。
这就是我正在做的:
1) 关闭PreparedStatement
2) 关闭ResultSet
3)关闭连接
这是堆转储分析的屏幕截图:
它展示了很多java.lang.ref.Finalizer很多的PreparedStatement物体ResultSet。
这是代码(它是用 scala 编写的,但应该很容易与 java 进行比较):
val conn: Connection = DriverManager.getConnection(url)
// Gets strings by a query like SELECT .. WHERE foo = ?
def getStringsByQuery(query: String, param: String, field: String):Seq[String] = {
val st = conn.prepareStatement(query)
st.setString(1, param) //value of foo = ?
st.setFetchSize(Integer.MAX_VALUE)
st.setMaxRows(Integer.MAX_VALUE)
//Holder of results
var results = collection.mutable.Seq.empty[String]
val rs: ResultSet = …Run Code Online (Sandbox Code Playgroud) 假设我有这张地图: Map[String, Int]
为了迭代它的值,我必须这样做:
myMap.foreach(t => {
val word = t._1
val number = t._2
//do stuff with word and number here
})
Run Code Online (Sandbox Code Playgroud)
有没有办法做这样的事情:
myMap.foreach( (word, number) => {
//do stuff with word and number here
})
Run Code Online (Sandbox Code Playgroud)
使用 Scala 2.13.2 atm
dictionary functional-programming scala pattern-matching scala-collections
假设您有一个如下所示的表格布局:
couses:
id (INT),
courseName (VARCHAR)
Run Code Online (Sandbox Code Playgroud)
导师:
id (INT),
courseId(INT),
instructor(VARCHAR)
Run Code Online (Sandbox Code Playgroud)
创建一个将打印所有课程的查询,如果有一个教师,则显示他们的名字,如果有两个教师,则按排序顺序在行上打印他们的名字,如果有两个以上的教师而不是教师姓名显示"委员会".
例如,您的输出看起来像这样
courseId instructor1 instructor2
0 Edward Yourdon
1 Edward Dijkstra Nicholas Wirth
2 Comittee
注:摘自TheDailyWtf的调查问卷.不是作业问题.
在<head>我的页面中,我这样做:
<script type="text/javascript" src="js/foo.js"></script>
<script type="text/javascript">
console.log(foo.bar);
</script>
Run Code Online (Sandbox Code Playgroud)
代码foo.js:
var foo = function()
{
this.bar = function()
{
console.log('here');
}
}
Run Code Online (Sandbox Code Playgroud)
稍后在html文档中:
<a href="#" onclick="foo.bar();">Test</a>
Run Code Online (Sandbox Code Playgroud)
但是,如果我单击上面的链接,即使已包含foo.js,也表示函数未定义.此外,如果我这样做console.log(foo)只显示'function()'并console.log(foo.bar)显示undefined.为什么这样,为什么我不能访问该功能?
我有一些代码,如果用户推荐了X个人,他将获得X个学分.
例如,引用2人= 1个学分.4人= 2学分,依此类推.
然而,这变得棘手的是,数字可以改变,因此他每人获得1个学分,或每3个人获得1个学分,5个人获得1个学分,等等.
如果他获得3个人的1个学分,并且他已经推荐了5个人,那么我希望他获得1个学分,并且存储它仍然有2个人,他没有得到任何学分.因此,下次他引用某人时,它是2 + 1 = 3,并且他获得了信用.
我的问题是,
给定X =他需要提交1个学分的人数,Y =用户提到的人数,
(所以X可能是3,如每个学分3个人,Y可能是6,在这种情况下他应该获得2个学分)
1)什么是X和Y的直接公式或函数,并返回应给予该人的学分数,以及
2)其中还将提供无法授予的学分的余数.例如,如果X是3而Y是5,则信用将是1,剩余部分将是2,因此下一个引用者Y将再次变为3并且用户将获得1个信用额度?
scala ×2
algorithm ×1
database ×1
dictionary ×1
java ×1
javascript ×1
jdbc ×1
math ×1
memory-leaks ×1
mysql ×1
php ×1
sql ×1
sqlite ×1