将StringBuilder转储到文本文件的最有效/最优雅的方法是什么?
你可以做:
outputStream.write(stringBuilder.toString().getBytes());
Run Code Online (Sandbox Code Playgroud)
但这对于一个很长的文件有效吗?
有没有更好的办法?
我有:
public enum MyEnum{
One, Two, Three
}
Run Code Online (Sandbox Code Playgroud)
从控制器,我输入模型:
HashMap<MyEnum, Long> map = new HashMap<MyEnum, Long>();
map.put(MyEnum.One, 1L);
mav.addObject( "map", map);
Run Code Online (Sandbox Code Playgroud)
我如何在我的JSTL中以一种巧妙的方式访问地图中的关键枚举MyEnum.One对象?
${map['One']} //does not seem to work...
Run Code Online (Sandbox Code Playgroud)
也没有
${map[MyEnum.One]}
Run Code Online (Sandbox Code Playgroud) 我有一个apache 2.2服务器面前的tomcat 6服务器.在apache上使用mod_proxy_ajp来代理对tomcat的请求.相当标准的设置.
如果我需要为浏览器禁用keep-alive连接,我该怎么做?
我需要禁用保持活动的http请求,因为我怀疑我的一些用户的防火墙可能会丢弃一个随机导致问题的非活动保持连接.
apache和tomcat上有各种"keep alive"位和配置.
httpd.conf有"KeepAlive Off"(在我的情况下似乎没有什么区别)
你也可以在httpd.conf中设置ProxyPass,你可以有一个参数"keepalive",但是如果我的apache和tomcat之间有代理/防火墙,这只会有所帮助,这在我的情况下不存在并且不是问题.
Tomcat本身,http连接器具有"keepAliveTimeout"和"maxKeepAliveRequests",但这仅适用于http连接器.
tomcat ajp连接器也有一个"keepAliveTimeout",但是这是来自apache的ajp请求,不确定这是否应该/流向从浏览器到apache的真实HTTP请求.
最重要的是,还有HTTP1.0与HTTP1.1的区别.
所以它让人感到困惑....有人可以解释一下吗?
无法查询App Engine数据存储区以获得聚合结果.
示例:我有一个名为"Post"的实体,其中包含以下字段:
密钥ID,字符串昵称,字符串postText,int得分
我的数据存储区中每个昵称都有许多不同的昵称和许多帖子.
如果我想要一个总分十大昵称的排行榜,我通常会有如下的sql:
select nickname, sum(score) as sumscore
from Post
group by nickname
order by sumscore
limit 10
Run Code Online (Sandbox Code Playgroud)
在Google App引擎数据存储区java api(jdo或jpa)中无法进行此类查询.
我可以用什么替代策略来获得类似的结果?
粗暴地,我可以加载每个Post实体并在我的应用程序代码中完全计算聚合.这在大型数据集上显然效率不高.
我可以采用哪些其他策略?
我在app engine java jdo中有一个跨组事务.
它在本地dev应用程序引擎服务器上运行良好.
但是,从单元测试中,我得到了一个java.lang.IllegalArgumentException: transactions on multiple entity groups only allowed in High Replication applications.
是否可以使用LocalServiceTestHelper模拟高复制应用程序?
我使用的是1.6.6.
这是我的课程,您可以按原样运行它来重现:
public class Ds2Test {
private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
private static final PersistenceManagerFactory pmfXgInstance =
JDOHelper.getPersistenceManagerFactory("xg-transactions");
@Before
public void setUp() {
helper.setUp();
}
@After
public void tearDown() {
helper.tearDown();
}
@Test
public void testXgTransaction() throws Exception {
PersistenceManager xgPm = pmfXgInstance.getPersistenceManager();
Transaction xgTx = xgPm.currentTransaction();
xgTx.begin();
xgTx.commit();
xgPm.close();
}
}
Run Code Online (Sandbox Code Playgroud)
这是jdoconfig.xml中的配置:
<persistence-manager-factory name="xg-transactions">
<property name="javax.jdo.PersistenceManagerFactoryClass" …Run Code Online (Sandbox Code Playgroud) 我在我的gae数据存储区中有一个类型的现有实体,我想要添加一个原始类型为"long"的新原始属性:
@Persistent private long bests = 0;
Run Code Online (Sandbox Code Playgroud)
当我这样做,当我尝试加载显然没有设置此属性的现有实体时,我得到:
java.lang.NullPointerException:具有类型Player和密钥播放器("patrick")的数据存储区实体具有名为bests的null属性.此属性映射到model.Player.bests,它不能接受空值.
我该怎么做才能避免这个问题?像字段不存在时默认为零的方法?我想避免使用类Long,并坚持使用原始long.
我正在开发一个简单的applet,它有一个simpe登录界面.
为了简洁起见,我有两个用于用户名和密码的JTextFields,我也用它作为标签.即,首先,用户名JTextField将预填充灰色文本"username"和密码JTextField预填充"简单密码".
然后,只要JTextField获得焦点,我就会清除预填充文本并将文本颜色设置为黑色.类似于stackoverflow的搜索框,但是在摇摆中.
现在为了安全起见,我想在密码JTextField获得焦点时屏蔽密码字段(但当然仍然可以使用预先填写的文本清晰可读).JPasswordField不允许切换掩码/取消掩码.
有关在我的简单applet中获得此功能的简单方法的任何想法?
java ×6
jdo ×3
ajp ×1
apache ×1
applet ×1
enums ×1
file ×1
jsp ×1
jstl ×1
keep-alive ×1
sql ×1
swing ×1
tomcat ×1
transactions ×1
unit-testing ×1