我在Tomcat上使用Servlet API 2.5的Cookie类时遇到问题.我从HttpServletRequest对象中提取cookie列表并迭代它们,如下所示:
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies) {
System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain());
}
Run Code Online (Sandbox Code Playgroud)
但是,对于请求中的每个cookie,Domain为null.为什么是这样?我问的原因是因为我在两个不同的域中有一个同名的cookie,我希望能够根据域来区分它们.为了帮助澄清这种情况,我的同名cookie被设置在.anydomain.net和.subdomain.anydomain.net中.两者都在请求中发送,但域到达servlet时为null.servlet无法看到发送给它的cookie域的预期行为吗?
编辑:我在之前的servlet请求中设置了cookie以及域,过期和路径.使用这些cookie进入浏览器的下一个请求将域显示为null.我已经验证了Cookie是在浏览器中的正确域中设置的.
编辑2:我正在使用Tomcat 6
我需要对两个可能包含它们的Object []数组进行结构比较:
Object[] o1 = new Object[] { "A", null };
o1[1] = o1;
Object[] o2 = new Object[] { "A", null };
o2[1] = o2;
Arrays.deepEquals(o1, o2); // undefined behavior
Run Code Online (Sandbox Code Playgroud)
不幸的是,deepEquals在这种情况下不起作用.上面的例子应该是真的.
有算法可以可靠地计算出来吗?
我的想法大致如下:
List<Object> xs = new ArrayList<>();
List<Object> ys = new ArrayList<>();
boolean equal(Object[] o1, Object[] o2, List<Object> xs, List<Object> ys) {
xs.add(o1);
ys.add(o2);
boolean result = true;
for (int i = 0; i < o1.length; i++) {
if (o1[i] instanceof Object[]) {
int idx1 = …Run Code Online (Sandbox Code Playgroud) 我正在研究一个用Java编写的基于数据流的简单系统(想象它就像一个LabView编辑器/运行时).用户可以在编辑器中将块连接在一起,我需要类型推断以确保数据流图是正确的,但是,大多数类型推断示例都是用数学符号,ML,Scala,Perl等编写的,我不会"说" ".
我看了一下辛德米尔纳算法,发现这个文件有一个很好的例子,我可以实现.它适用于一组T1 = T2之类的约束.但是,我的数据流图转换为T1> = T2,就像约束一样(或T2延伸T1,或协方差,或T1 <:T2,正如我在各篇文章中看到的那样).没有lambdas只是类型变量(在通用函数中使用T merge(T in1, T in2))和具体类型.
回顾一下HM算法:
Type = {TypeVariable, ConcreteType}
TypeRelation = {LeftType, RightType}
Substitution = {OldType, NewType}
TypeRelations = set of TypeRelation
Substitutions = set of Substitution
1) Initialize TypeRelations to the constraints, Initialize Substitutions to empty
2) Take a TypeRelation
3) If LeftType and RightType are both TypeVariables or are concrete
types with LeftType <: RightType Then do nothing
4) If only LeftType is a TypeVariable Then …Run Code Online (Sandbox Code Playgroud) 我已经实现了一个小的IO类,它可以读取不同磁盘上的多个相同文件(例如,两个包含相同文件的硬盘).在连续的情况下,两个磁盘平均读取文件的速度为60MB/s,但是当我进行交错(例如4k磁盘1,4k磁盘2然后组合)时,有效读取速度降低到40MB/s而不是增加?
上下文:Win 7 + JDK 7b70,2GB RAM,2.2GB测试文件.基本上,我尝试以穷人的方式模仿Win7的ReadyBoost和RAID x.
在心脏中,当向类发出read()时,它会创建两个runnables,其中包含从特定位置和长度读取预打开的RandomAccessFile的指令.使用执行程序服务和Future.get()调用,当两者都完成时,数据读取将被复制到公共缓冲区并返回给调用者.
我的方法中是否存在概念错误?(例如,OS缓存机制将始终抵消?)
protected <T> List<T> waitForAll(List<Future<T>> futures)
throws MultiIOException {
MultiIOException mex = null;
int i = 0;
List<T> result = new ArrayList<T>(futures.size());
for (Future<T> f : futures) {
try {
result.add(f.get());
} catch (InterruptedException ex) {
if (mex == null) {
mex = new MultiIOException();
}
mex.exceptions.add(new ExceptionPair(metrics[i].file, ex));
} catch (ExecutionException ex) {
if (mex == null) {
mex = new MultiIOException();
}
mex.exceptions.add(new ExceptionPair(metrics[i].file, ex));
}
i++;
}
if …Run Code Online (Sandbox Code Playgroud) 我正在Java平台上开发一个实时策略游戏克隆,我有一些关于放置位置和如何管理游戏状态的概念性问题.游戏使用Swing/Java2D作为渲染.在当前的开发阶段,不存在模拟,也不存在AI,只有用户能够改变游戏的状态(例如,建造/拆除建筑物,添加 - 移除生产线,组装车队和设备).因此,可以在事件调度线程中执行游戏状态操作而无需任何渲染查找.游戏状态还用于向用户显示各种聚合信息.
但是,由于我需要引入模拟(例如,构建进度,人口变化,车队运动,制造过程等),在Timer和EDT中更改游戏状态肯定会降低渲染速度.
假设模拟/ AI操作每500毫秒执行一次,我使用SwingWorker计算长度约为250毫秒.如何确保模拟和可能的用户交互之间没有关于游戏状态读取的竞争条件?
我知道模拟的结果(少量数据)可以通过SwingUtilities.invokeLater()调用有效地移回EDT.
游戏状态模型似乎过于复杂,无法在任何地方使用不可变值类.
是否有相对正确的方法来消除这种阅读竞争条件?也许在每个计时器刻度上进行全部/部分游戏状态克隆或将游戏状态的生存空间从EDT改为其他线程?
更新:(根据我给出的评论)游戏使用13个AI控制的玩家,1个人类玩家,并拥有大约10000个游戏对象(行星,建筑物,设备,研究等).例如,游戏对象具有以下属性:
World (Planets, Players, Fleets, ...)
Planet (location, owner, population, type,
map, buildings, taxation, allocation, ...)
Building (location, enabled, energy, worker, health, ...)
在一个场景中,用户在这个星球上建造一座新建筑.这是在EDT中执行的,因为需要更改地图和建筑物集合.与此同时,每隔500毫秒进行一次模拟,以计算所有游戏行星上建筑物的能量分配,这需要遍历建筑物集合以进行统计收集.如果计算分配,则将其提交给EDT并且分配每个建筑物的能量场.
只有人类玩家互动具有此属性,因为AI计算的结果无论如何都应用于EDT中的结构.
通常,75%的对象属性是静态的,仅用于渲染.其余部分可通过用户交互或模拟/ AI决策进行更改.还确保,在前一个步骤写回所有更改之前,不会启动新的模拟/ AI步骤.
我的目标是:
选项:
所有这些都具有模型和游戏的优点,缺点和原因.
更新2:我在谈论这个游戏.我的克隆就在这里.屏幕截图可能有助于想象渲染和数据模型交互.
更新3:
我将尝试给出一个小代码示例以澄清我的问题,因为它似乎从评论中被误解:
List<GameObject> largeListOfGameObjects = ...
List<Building> preFilteredListOfBuildings = ...
// In EDT
public void onAddBuildingClicked() {
Building b = new Building(100 /* kW */);
largeListOfGameObjects.add(b); …Run Code Online (Sandbox Code Playgroud) 我需要我的端点以以下 json 格式返回数据:
{
"code": "SUCCESS",
"message": "SUCCESS",
"errors": null,
"data": []
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器代码:
@GetMapping(value = "/productSubcategories", produces = MediaType.APPLICATION_JSON_VALUE)
public Flux<MyDTO> getMyObjects() {
return myObjectService.getAll()
.map(myObject -> modelMapper.map(productSubcategory, MyObject.class));
}
Run Code Online (Sandbox Code Playgroud)
将所有 MyDTO 对象包装在 json 响应的“数据”部分中的最佳方法是什么?
我正在寻找组织良好的信息来源,关于如何使用即将推出的jsr166y(fork-join,fences)和extras166y(ParallelArray等) - 从教程到专家级别.
今天早上,在尝试使用Web应用程序诊断性能问题时,我和我的老板对此进行了长时间的讨论.我们并没有真正得出任何结论.
我认为我们认为Serializable非静态内部类有问题是正确的,但我们不确定究竟是什么问题或者究竟要避免什么(我们推断我们不能总是简单地避免它).任何人都可以建议任何没有遇到这个问题的指导方针吗?
我想在运行时使用反射来获取集合的泛型类型.
代码(JAVA):
Field collectionObject = object.getClass().getDeclaredField(
collectionField.getName());
//here I compare to see if a collection
if (Collection.class.isAssignableFrom(collectionObject.getType())) {
// here I have to use the generic type of the collection
// to see if it's from a specific type - in this case Persistable
if (Persistable.class.isAssignableFrom(GENERIC_TYPE_COLLECTION.class)) {
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在运行时在java中获取集合的泛型类型?在我的情况下,我需要集合的泛型类型.class.
提前致谢!
下面两个执行有什么不同?
Mono.justOrEmpty(someFunction())
.doOnNext(() -> doSomeTask()).subscribe();
Mono.fromCallable(() -> someFunction())
.doOnNext(() -> doSomeTask()).subscribe();
Run Code Online (Sandbox Code Playgroud) java ×9
algorithm ×2
arrays ×1
concurrency ×1
cookies ×1
file-io ×1
fork-join ×1
performance ×1
reflection ×1
servlets ×1
swing ×1
tomcat ×1