小编Alv*_*vin的帖子

java的UUID.randomUUID有多好?

我知道随机UUID在理论上具有非常非常非常低的碰撞概率,但我想知道,在实践中,Java 5 randomUUID()在没有碰撞方面有多好?有没有人有经验可以分享?

java uuid

300
推荐指数
8
解决办法
16万
查看次数

Java ConcurrentHashMap实现

我只是看了Java的ConcurrentHashMap的源代码,发现了这行代码:

/*
 * The maximum number of times to tryLock in a prescan before possibly blocking on acquire in   
 * preparation for a locked segment operation. On multiprocessors, using a bounded number of  
 * retries maintains cache acquired while locating nodes.
 */
static final int MAX_SCAN_RETRIES =
              Runtime.getRuntime().availableProcessors() > 1 ? 64 : 1
Run Code Online (Sandbox Code Playgroud)

MAX_SCAN_RETRIES在查找条目在获取锁使用.我的问题是如何64确定多处理器机器的数量?谁知道数字背后的理论64

java

38
推荐指数
1
解决办法
989
查看次数

Java ConcurrentHashMap优于HashMap性能吗?

我刚刚阅读了"清洁代码"一书,并发现了这一说法:

当Java年轻的时候,Doug Lea写了一本开创性的书[8] Java中的Concurrent Programming.随着这本书,他开发了几个线程安全的集合,后来成为了JDK的 java.util.concurrent一部分.该软件包中的集合对于多线程情况是安全的,并且它们表现良好.事实上,ConcurrentHashMap 几乎所有情况下, 实现都比HashMap表现更好.它还允许同时并发读取和写入,并且它具有支持常见复合操作的方法,否则这些操作不是线程安全的.如果Java 5是部署环境,请从 ConcurrentHashMap

请注意,在上面的引用中,我使用了"[n]",其中n是某个数字,表示作者提供引用的地方,正如您所看到的,他没有为粗体部分提供任何参考.

并不是说我不相信这个陈述,但我很想知道这个陈述的支持证据.因此,没有人知道,显示了两种性能统计信息的任何资源ConcurrentHashMapHashMap?或者任何人都可以向我解释为什么ConcurrentHashMap比HashMap更快?

我可能会在休息时看看ConcurrentHashMap在工作中的实现,但是现在我想听听其他SOers的答案.

java concurrency performance hashmap data-structures

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

如何对视频流服务器进行压力测试?

有谁知道我可以用来在视频流服务器上进行压力测试的任何好工具?我需要测试我的服务器处理5,000多个连接的程度.

testing video streaming

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

如何在没有命名空间的情况下编组?

我有一个相当大的重复XML来使用JAXB创建.将整个对象存储在内存中然后进行编组会占用太多内存.基本上,我的XML看起来像这样:

<Store>
  <item />
  <item />
  <item />
.....
</Store>
Run Code Online (Sandbox Code Playgroud)

目前我对该问题的解决方案是将根标签"硬编码"到输出流,并逐个编组每个重复元素:

aOutputStream.write("<?xml version="1.0"?>")
aOutputStream.write("<Store>")

foreach items as item
  aMarshaller.marshall(item, aOutputStream)
end
aOutputStream.write("</Store>")
aOutputStream.close()
Run Code Online (Sandbox Code Playgroud)

不知何故,JAXB生成这样的XML

 <Store  xmlns="http://stackoverflow.com">
  <item xmlns="http://stackoverflow.com"/>
  <item xmlns="http://stackoverflow.com"/>
  <item xmlns="http://stackoverflow.com"/>
.....
</Store>
Run Code Online (Sandbox Code Playgroud)

虽然这是一个有效的XML,但它看起来很难看,所以我想知道有没有办法告诉编组人员不要为项目元素添加命名空间?或者是否有更好的方法使用JAXB按块序列化为XML块?

java xml jaxb

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

在MyBatis中处理大量数据

我的目标实际上是将数据库的所有数据转储到XML文件中.数据库不是很大,大约300MB.问题是我的内存限制只有256MB(在JVM中).所以显然我不能把所有内容都读到内存中.

我设法使用iBatis解决了这个问题(是的,我的意思是iBatis,而不是myBatis)通过getList(... int skip, int max)多次调用它来增加skip.这确实解决了我的记忆问题,但我并没有对速度印象深刻.变量名称表明该方法的作用是读取整个结果集跳过然后指定的记录.这听起来对我来说是多余的(我不是说这是方法正在做什么,我只是猜测基于变量名称).

现在,我切换到myBatis 3以获取我的应用程序的下一个版本.我的问题是:有没有更好的方法来处理myBatis中的大块数据块?反正是为了让myBatis处理前N个记录,将它们返回给调用者,同时保持结果集连接打开,这样下次用户调用getList(...)时它将开始从N + 1记录中读取而不做任何记录"退出"?

java large-data mybatis

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

mongodb中_id的长度是否有限制

背景:我接管的应用程序(原工程师离开)充当的一些相对慢后端服务缓存层.因为它是RESTful样式的URL,所以每个URL都是唯一的.该应用程序使用MongoDb作为缓存的存储,并使用哈希值作为缓存.虽然哈希码应该是非常独特的,但它并不是唯一的.

问题:我被告知使用哈希码(而不是url)的原因是因为MongoDb的_id字段有长度限制,但我找不到任何文档.我在MongoDb文档中找到的只是"_id字段可以是除数组之外的任何内容,只要它是唯一的".MongoDb的_id字段是否有长度限制?如果是这样,限制尺寸是多少?

该应用程序是用Java编写的.哦,我是MongoDb的新手.

java mongodb

10
推荐指数
1
解决办法
5868
查看次数

JSONP响应http内容类型标头

如果邮件正文是JSONP,那么content-type http标头的值应该是多少.应用程序/ JavaScript的?

jsonp http

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

一个套接字,多个http请求,不同的主机头但服务器返回缓存的主机头

我正在使用供应商产品的自定义servlet引擎.我们的服务器由具有不同主机名的不同代理提供.假设主机名是host1.localhost.comhost2.localhost.com.

我们有以下servlet

public class MyServlet {

    public void doGet(...) {

             response.getOutputStream.write(request.getServerName().getBytes())
} }
Run Code Online (Sandbox Code Playgroud)

如果我们在响应中host1.localhost.com/my/servlet看到实际看到的请求,我们有时会遇到一个问题host2.localhost.com/my/servlet.

反编译供应商产品的代码显示,只要套接字保持活动状态,它们的servlet引擎就会缓存Host头.

为了重现这个问题,我写了一些低级套接字代码来发出HTTP请求:

Socket s = new Socket();
s.connect(new InetSocketAddress("host2.localhost.com", 8080));
OutputStream os = s.getOutputStream();

/*this thread keeps printing stuff in the input stream*/
Thread t = new ResponsePrintThread(s.getInputStream());
t.start()

os.write("GET /my/servlet/testservlet HTTP/1.1\r\n".getBytes());
os.write("Host: 12345\r\n".getBytes());
os.write("\r\n".getBytes());
os.flush();

os.write("GET /my/serlet/testservlet HTTP/1.1\r\n".getBytes());
os.write("Host: 7891011\r\n".getBytes());
os.write("\r\n".getBytes());
os.flush();
Run Code Online (Sandbox Code Playgroud)

以上将打印

12345
12345
Run Code Online (Sandbox Code Playgroud)

但我希望

12345
7891011
Run Code Online (Sandbox Code Playgroud)

我的问题是,servlet引擎是否通过缓存并为同一套接字连接返回相同的主机头来正确运行,还是应该重新解析HTTP头并更新缓存的主机头?我的想法是,由于HTTP假设是无状态的,因此HTTP请求中的任何信息都应该被重新解析和重新加载,甚至是主机头.

java servlets http

6
推荐指数
1
解决办法
1064
查看次数

在其他线程引用的已卸载的OSGi包中的对象会发生什么?

假设我有一个包含组件B的Bundle A,它不是Export-Package的一部分.该组件将安排自己在激活后定期运行.调度程序由另一个包提供.

我的问题是,如果我卸载Bundle A而组件B正由调度程序的线程池中的一个线程运行,那意味着什么呢?线程会继续运行吗?或者线程会抛出异常?

java osgi

3
推荐指数
1
解决办法
337
查看次数

如何监控ftp应用程序向ftp服务器发送的命令

F有没有办法监控FTP端口,以便我可以知道我的FTP应用程序发送到FTP服务器的命令?

我使用的是一个闭源FTP客户端应用程序,它不能与闭源FTP应用程序服务器一起使用.客户端和服务器之间没有很好的通信,我想找出原因.我希望对客户进行逆向工程,以了解客户端发送给服务器的信息.之前我使用了一个Web测试工具,允许我监视通过HTTP传输的内容,但我似乎无法找到这样的FTP工具.如果你能帮助我,我感激不尽,谢谢.

ftp monitoring

0
推荐指数
1
解决办法
1863
查看次数