小编kre*_*jer的帖子

Java检测丢失的连接

当我使用例如PuTTY并且我的连接丢失时(或者当我ipconfig /release在Windows上执行手册时),它会直接响应并通知我的连接丢失.

我想创建一个Java程序来监视我的Internet连接(到一些可靠的服务器),以记录我的Internet失败时的日期/时间.

我尝试使用该Socket.isConnected()方法,但这将永远返回"真".我怎么能用Java做到这一点?

java connection tcp

26
推荐指数
4
解决办法
5万
查看次数

Java JDBC忽略setFetchSize?

我正在使用以下代码

 st = connection.createStatement(
            ResultSet.CONCUR_READ_ONLY,
            ResultSet.FETCH_FORWARD,
            ResultSet.TYPE_FORWARD_ONLY
             );
 st.setFetchSize(1000);
 System.out.println("start query ");
 rs = st.executeQuery(queryString);
 System.out.println("done query");
Run Code Online (Sandbox Code Playgroud)

查询返回大量(800k)行,并且在打印"开始查询"和"完成查询"之间需要很长时间(~2m).当我在查询中手动设置"限制10000"时,"开始"和"完成"之间没有时间.处理结果需要花费时间,所以我想如果它只是从数据库中获取1k行,处理这些行,并且当它用尽行时它可以在后台获得新行,则总体上更快.

结果集.CONCUR_READ_ONLY等我最后猜测的地方; 我错过了什么吗?

(这是一个postgresql 8.3服务器)

java postgresql jdbc cursor

12
推荐指数
2
解决办法
2万
查看次数

jdbc +大的postgresql查询给出内存不足

我正在尝试执行一个返回大结果的postgresql查询:

connection.setAutoCommit(false);
st = connection.createStatement(
  ResultSet.CONCUR_READ_ONLY,
  ResultSet.TYPE_FORWARD_ONLY
);
st.setFetchSize(100);
logMemory();
System.out.println("start query ");
rs = st.executeQuery(queryString);
System.out.println("done query ");
logMemory();
Run Code Online (Sandbox Code Playgroud)

但这会占用大量内存:

Free memory; 4094347680  (= 3905 mb).
start query 
done query
Free memory; 2051038576  (= 1956 mb).
Run Code Online (Sandbox Code Playgroud)

(使用Runtime.getRuntime()打印.freeMemory())

到目前为止,它的工作原理,但数据库将会更大.我不需要记忆中的整个结果; 我只需要处理每一行,将结果写入磁盘并转到下一行.

我知道'setFetchSize'只是一个提示,但是如果postgresql/jdbc会忽略它,我会觉得很奇怪,因为它已经存在了很长时间.

有办法解决这个问题吗?到目前为止,我唯一的想法是创建一个批处理脚本,将查询结果流式传输到磁盘,然后从Java解析文件...

java jdbc

10
推荐指数
2
解决办法
5876
查看次数

捕获没有焦点的击键

例如,使用winamp(至少在Windows上),您可以在后台使用winamp全屏播放游戏,并使用媒体按钮*来控制声音.Winamp不需要获得焦点,允许游戏继续全屏.

我更喜欢用Java编写它,但这可能不会起作用(在Java afaik中捕获没有焦点的键击已经很困难了),所以任何C#解决方案都没问题.

所以基本的问题是:如何在没有焦点的情况下捕获击键?

*)我相信'后退/前进/停止/邮件/搜索/收藏夹/网络/主页'按钮被称为媒体按钮,但欢迎更好的名称:).

c# java keyboard

9
推荐指数
1
解决办法
1万
查看次数

序列化一个非常大的列表

我从数据库查询中获取大量数据,并且我正在制作它们的对象.我终于有了这些对象的列表(大约1M对象),我想将其序列化到磁盘供以后使用.问题是它几乎不适合在内存中,并且将来不适合,所以我需要一些序列化系统说第一个100k,下一个100k等; 并以100k为增量读回数据.

我可以制作一些明显的代码,检查列表是否变得太大,然后将其设置为'list1',然后'list2'等,但也许有更好的方法来处理它?

java serialization

5
推荐指数
1
解决办法
2760
查看次数

标签 统计

java ×5

jdbc ×2

c# ×1

connection ×1

cursor ×1

keyboard ×1

postgresql ×1

serialization ×1

tcp ×1