小编Jim*_*ans的帖子

EJB仍然有用吗?什么是Spring Framework替换EJB的方法?

我已经阅读了一段时间,EJB没有用或者很麻烦.但是有什么其他方式可以实现业务委托模式?

EJB与Spring推荐的方法有何不同?

此外,EJB的最新进展如何改变了您的观点.

java spring ejb java-ee

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

非Javascript应用程序中的JSON

我希望通过网络持久存储并检索大量的键值对类型数据.我是否适合将JSON用于此目的来对抗XML?

JSON是否用于非Javascript应用程序?

使用JSON是否有利于优质旧XML的优势?

.net c# architecture json

5
推荐指数
2
解决办法
703
查看次数

支持Oracle和MySQL:它们的SQL语法有多相似?

我们在一个项目中使用Oracle,并且也想支持MySQL.他们的SQL方言有多接近?

在没有太多体操的情况下,是否有可能为两者使用相同的SQL源?

细节:

  • 我们正在使用iBatis,一个将SQL语句干净地隔离到资源文件中的持久性管理器.但我们在SQL级别工作,这有其优点(和缺点).
  • 我们宁愿不转向像Hibernate这样的对象关系映射器,它可以完全保护我们免受方言差异的影响.
  • 我们已经努力保持Oracle SQL的通用子集.
  • 没有PL/SQL.
  • 我们不使用存储过程或触发器(但无论如何).
  • 我们使用检查约束,唯一约束和外键约束.
  • 我们使用ON DELETE CASCADE.
  • 我们使用交易(在iBatis API级别完成).
  • 我们在查询中调用了几个Oracle时间戳函数.
  • 我们将使用带有MySQL的InnoDB存储引擎(它支持事务和约束).

所以你的想法是什么?我们是否需要维护两组不同的iBatis SQL资源文件,每个方言一个,或者是否可以使用一组SQL支持MySQL和Oracle?

最后更新:感谢所有答案,特别是关于Troels Arvin关于差异的页面的指示.令人遗憾的是,标准并不是更好,标准.对我们来说,问题结果是MySQL自动增量与Oracle序列,MySQL LIMIT与Oracle Rowumber(),以及奇数函数或两个.大多数其他一切都应该很容易转移,模拟一些编辑,以确保我们使用SQL-92作为@mjv指出.更大的问题是某些查询可能需要在每个DBMS中进行不同的手动优化.

java mysql sql oracle ibatis

5
推荐指数
2
解决办法
9953
查看次数

超类中使用默认修饰符的Java反射访问方法

是否可以通过Java反射调用超类中的no修饰符方法?

java reflection

5
推荐指数
2
解决办法
4167
查看次数

在开发类似语言的小python时进行缩进控制

我正在使用flex,byacc(用于词法和解析)和C++开发一个类似语言的小python,但我有一些关于范围控制的问题.

就像python一样,它使用白色空格(或制表符)进行缩进,不仅如此,但我想实现索引破坏,例如,如果你在while循环中键入"break 2",那么在另一个while循环中它不仅会从最后一个,但也来自第一个循环(因此在休息后的数字2),依此类推.

例:

while 1
    while 1
        break 2
        'hello world'!! #will never reach this. "!!" outputs with a newline
    end
    'hello world again'!! #also will never reach this. again "!!" used for cout
end
#after break 2 it would jump right here
Run Code Online (Sandbox Code Playgroud)

但由于我没有"反"制表符来检查作用域何时结束(例如C,例如我只使用'}'字符)我想知道这种方法是否最好:

我将在我的yacc文件中定义一个全局变量,如"int tabIndex",我将使用extern在我的lex文件中访问.然后每当我在我的lex文件中找到一个制表符时,我会将该变量增加1.当我在yacc文件上解析时,如果我找到一个"break"关键字,我会减去它从tabIndex变量后面输入的数量,以及我编译后达到EOF并且我得到一个tabIndex!= 0我会输出编译错误.

现在的问题是,最好的方法是查看缩进是否减少,我应该从lex读取\ b(退格)字符然后减少tabIndex变量(当用户不使用break时)?

另一种实现这个的方法?

另外一个小问题,我希望每个可执行文件都有一个名为start()的函数的起点,我应该将其硬编码到我的yacc文件中吗?

对不起,长期以来,我们非常感谢任何帮助.如果有人可以为python提供yacc文件,那么作为指南很好(尝试在谷歌上看,没有运气).

提前致谢.

c c++ yacc lex compiler-theory

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

使用java泛型的责任链处理程序

我正在使用Java中的责任链设计模式.链作为一个整体代表对某些类型的对象的请求.链中的每个"处理程序"负责处理所请求的1种单位.所有请求都以基本相同的方式处理,因此我尝试使用"Handler"类通用.所以在Handle类中我需要一个像这样的方法(处理本身是简化的,因为它只会模糊我的问题):

public class Handler<T>{
   int required;
   Handler<?> next;

   public void handle(Object O){
      if(o instanceof T){
         required --;
      }else{
         next.handle(o);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

问题是像这样的实例是不可能的.因为类型T在运行时没有明确存储(或者这是我在互联网研究中所理解的).所以我的问题是:什么是最好的选择?

java generics design-patterns

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

当Restlet返回400 Bad Request时,它是否返回415不支持的媒体类型?

我正在使用Restlet 2.1与jackson构建一个json REST api.

当我使用预期的内容类型但是格式错误的主体发出请求时,我会收到415"Unsuppored Media Type"状态代码.我认为正确的错误代码应为400"错误请求".

显然,当杰克逊尝试并且无法解码垃圾时,混合就会发生.

我将尝试用一些代码使案例更清晰:

// java method mapping
@Post("json")
public Project create(Project project) {
Run Code Online (Sandbox Code Playgroud)

curl的服务调用

$ curl -i -XPOST -H 'content-type: application/json' -d '{xgarbage}' http://localhost:8080/projects HTTP/1.1 415 Unsupported Media Type
Run Code Online (Sandbox Code Playgroud)

并且堆栈跟踪的碎片记录在日志中:

Nov 29, 2010 9:51:56 PM org.restlet.ext.jackson.JacksonRepresentation getObject
WARNING: Unable to parse the object with Jackson.
org.codehaus.jackson.JsonParseException: Unexpected character ('x' (code 120)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: java.io.ByteArrayInputStream@693e4a5a; line: 1, column: 2]
at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:929)
Run Code Online (Sandbox Code Playgroud)

该服务的实际实现从未被命中,因此某处决定将乱码内容映射到415.

现在,我的问题是:这是正确的吗?如果我正确地阅读了"RESTful …

java rest content-type jackson restlet-2.0

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

我可以在Google App Engine上构建邮件列表软件吗?

我试图搜索它是否合法或GAE将能够支持发送/接收电子邮件与邮件列表类型的操作 - 但到目前为止我找不到任何有用的东西.

你知道这是允许的还是可能的?甚至是个好主意?

我正在考虑为单个所有者提供简单的邮件列表软件.

google-app-engine

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

使用nginx和memcached优化网站有什么经验?

我们在Glassfish应用服务器集群上运行了一个基于Java EE的Web应用程序.传入流量主要是基于XML的应用程序资源表示的RESTful请求,但可能有5%的流量可能用于基于JSON或XHTML/CSS的表示.

我们现在正在研究负载平衡解决方案,以便在集群中的Glassfish实例之间分配传入流量.我们还研究了如何使用memcached卸载集群,memcached是一个内存中的分布式哈希映射,其键是REST资源名称(例如,"/ user/bob","/ group/jazzlovers"),其值为相应的XML表示.

一种听起来很有希望的方法是用一块石头杀死两只鸟并使用轻量级,快速的nginx HTTP服务器/反向代理.Nginx将通过首先在memcached中查找其URI来处理每个传入请求,以查看是否已存在未过期的XML表示.如果没有,nginx会将请求发送到其中一个Glassfish实例.nginx memcached模块在这篇简短的文章中有所描述.

nginx和memcached以这种方式使用你的整体印象是什么,你对它们有多开心?您认为哪些资源最有助于了解它们?如果你尝试了它们并且它们不适合你的目的,为什么不呢,你用了什么呢?

注意:这是一个相关的问题.

更新:我后来在ServerFault.com上问了同样的问题.那里的答案主要是建议nginx的替代品(有帮助,但间接).

java memcached glassfish nginx

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

Stax和DOM解析之间的性能差异

我已经使用DOM很长一段时间了,因此DOM解析性能非常好.即使在处理大约4-7 MB的XML时,解析速度也很快.我们面临的DOM问题是内存占用空间,一旦我们开始处理大型XML,就会变得非常庞大.

最近我尝试转移到Stax(用于XML的流解析器),它们被认为是第二代解析器(阅读Stax,它说它现在是最快的解析器).当我尝试用于大型XML的Stax解析器大约4MB时,内存占用量明显减少,但是解析整个XML并创建java对象的时间比DOM增加了近5倍.

我使用了stax的sjsxp.jar实现.

我可以在某种程度上从逻辑上推断,由于解析器的流性质但性能可能不是很好,但减少了5倍(例如,DOM为此XML构建对象需要大约8秒,而Stax解析平均需要大约40秒绝对不会被接受.

我完全错过了一些观点,因为我无法接受这些性能数字

java xml-parsing

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