小编Ted*_*ddy的帖子

什么决定了同时连接的数量

在Java servlet环境中,有哪些因素是同时用户数量的瓶颈.

  1. 服务器可以允许每个端口的HTTP连接数
  2. 服务器可以跨多个端口允许的HTTP连接数(我可以在多个HTTP端口上拥有多个WAS配置文件)
  3. 池中的servlet数
  4. 为WAS配置用于服务连接的线程数
  5. RAM可用于服务器(假设应用程序中存在0内存泄漏,服务线程数之间是否有任何相关性)

还有其他因素吗?

编辑:为了使业务逻辑脱离图片,假设只有一个servlet在Log4j上打印一行.

  • 我的Tomcat服务器可以同时处理6000个HTTP连接吗?为什么不(文件处理?每个请求的CPU时间?)?
  • 我可以将线程池​​大小设置为5000(空闲线程是否占用CPU/RAM)?
  • 我可以将oracle连接池大小设置为500个连接(空闲连接是否需要CPU/RAM)?

每个连接生成的垃圾量是否会产生影响?例如,如果对于每个HTTP连接,由Tomcat创建并留下20KB的对象,则在处理2500个请求时将使用100MB堆,这可能会触发300毫秒的GC暂停.

我们可以这样说:如果Tomcat使用0.2秒的CPU时间来处理单个HTTP请求,那么它将能够在一秒钟内处理大约500个http连接.因此,6000个连接需要5秒.

java performance multithreading servlets

20
推荐指数
3
解决办法
6167
查看次数

Java应用程序中每个类的成本 - 较少的大类或几个较小的类

对于添加到Java应用程序的每个新类,内存成本是多少?

  • 拥有超过5000行的类或几个500-1000行类(如果所有这些都是加载的话)是否更好?
  • 每次实例化Object时,唯一的额外内存使用是针对实例变量引用的
  • 对于没有实例变量的5000行类,加载类时的成本比例是多少?类文件的大小是粗略的近似值?
  • jar文件的大小是否表示类将占用的内存的常规或最大大小?

在cruftex的回答后编辑:这是我对课堂分裂的理解:

  • 拆分成逻辑块可以很好地改善代码重用并减少行数
  • 它还使得理解和维护代码变得更容易

这是我对类加载的理解:

  • 首次使用Class加载到内存中(使用的内存大致是类文件的大小)
  • 如果使用JIT,JIT编译器会创建一些额外的机器友好二进制版本,它使用更多的内存
  • 如果使用Hotspot,则只使用机器友好版本优化一些常用类(以平衡内存和速度)
  • 一旦加载了一个类,创建其他实例的开销可以忽略不计(大约50-100个字节?)(假设没有实例变量)
  • 加载类后,类本身永远不会被垃圾回收

这是大致如何运作?

java memory performance java-ee

6
推荐指数
2
解决办法
2212
查看次数

如何避免Swift中的内存碎片

GC的压缩,扫描和标记可以避免堆内存碎片.那么Swift中如何避免内存碎片?

这些陈述是否正确?

  1. 每次引用计数变为零时,分配的空间将添加到"可用"列表中.
  2. 对于下一个分配,使用可以适合该大小的最前面的内存块.
  3. 以前用完的内存的块将再次被最佳使用

"可用列表"是否按地址位置或大小排序?

活体物体会被移动以获得更好的压实吗?

garbage-collection automatic-ref-counting swift

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

使用令牌(Java)保护REST Web服务

这个问题在某种程度上与以下相关问题有关.但是,我需要更清楚一些方面和一些其他信息.请参阅: REST Web服务身份验证令牌实现

背景:

  • 我需要使用令牌为REST Web服务实现安全性
  • Web服务旨在与Java客户端一起使用.因此,凭据的表单身份验证和弹出窗口无用.
  • 我是REST安全和加密的新手

这是我迄今所理解的:

第一次请求:

  1. 用户建立https连接(或容器使用301确保https)
  2. 用户POST用户名和密码登录服务
  3. 如果凭证有效,我们:
    • 生成随机临时令牌
    • 将随机令牌存储在服务器上,将其映射到实际用户名
    • 使用仅为服务器所知的对称密钥加密令牌
    • 哈希加密的令牌
    • 将加密的令牌和哈希发送到客户端

对于后续请求:

  1. 客户端发送此加密令牌和哈希组合(使用基本的用户名字段?)
  2. 我们确保加密的令牌不会被哈希篡改,然后解密
  3. 我们检查session-tracking-table中的解密令牌是否有未过期的条目,并获取实际的用户名(到期时间由代码管理?)
  4. 如果找到用户名,则根据允许的角色配置允许的操作

更多细节:

  1. 由于客户端是java客户端,因此第一个请求可以是包含凭据的POST.但是,这似乎可能会在https建立之前公开凭据.因此,是否应该对安全资源进行虚拟GET,以便首先建立https?
  2. 假设上面是必需的,第二个请求是带有凭据的LoginAction POST.此请求是手动处理的(不使用容器的授权).这是正确的吗?
  3. 上面的LoginAction返回用户加密令牌+哈希的组合
  4. 用户将其设置为BASIC身份验证机制使用的标头(字段用户名)
  5. 我们实现了一个JAASRealm来解密和验证令牌,并找到允许的角色
  6. 其余的授权过程由具有web.xml中定义的WebResourceCollection的容器负责

这是正确的方法吗?

java security encryption rest web-services

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

将长值作为日期并在Thymeleaf中进行格式化

我的Thymeleaf模板中有这一行.

<td th:text="${activity.loggedTimestamp}"></td>
Run Code Online (Sandbox Code Playgroud)

我希望在格式化之前将此长值转换为日期.如果已经是约会,我会这样做:

<td th:text="${#dates.format(activity.loggedTimestamp)}"></td>
Run Code Online (Sandbox Code Playgroud)

但是,由于其价值很高,我想先把它作为约会.

我在文档中找到了一些相关的方法.但是,不符合我的要求.

/*
 * Create date (java.util.Date) objects from its components
 */
${#dates.create(year,month,day)}
${#dates.create(year,month,day,hour,minute)}
${#dates.create(year,month,day,hour,minute,second)}
${#dates.create(year,month,day,hour,minute,second,millisecond)}

/*
 * Create a date (java.util.Date) object for the current date and time
 */
${#dates.createNow()}

/*
 * Create a date (java.util.Date) object for the current date (time set to 00:00)
 */
${#dates.createToday()}
Run Code Online (Sandbox Code Playgroud)

java date thymeleaf

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

JSON.parse不适用于有效的json

我在Javascript中使用以下行来解析json字符串.

var obj = JSON.parse('{"respDataMap":{"userMessages":{"lbSearchHint":"Enteravalueandpress\"Enter\"orclickon\"Search\"#"}},"respErrorCode":"","respErrorMessage":""}');
Run Code Online (Sandbox Code Playgroud)

字符串中的转义双引号字符导致json解析失败.但是,在线JSON验证器中粘贴的相同字符串被认证为有效.我该如何解决?

javascript parsing json

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