我知道我可以在 Groovy 中使用注释来注释我的类,但是我可以在 Groovy 中编写注释本身吗(而不是仅使用用 Java 编写的注释)?如果有,从什么版本开始?
我有基于Java servlet的Web应用程序.我想以异步方式实现一些操作,例如写入日志.
我想避免JMS开销并做一些简单的事情.
自己管理线程在服务器环境中似乎不是一个好主意,您可能需要使用服务器线程池等.简单异步操作的最佳替代方法是什么?
编辑:
只是为了澄清,因为许多建议使用log4j或其他日志库,写入日志操作更多的是一个例子.我感兴趣的是如何异步执行任何不需要按顺序执行的操作.想法是立即回复用户并继续在另一个线程中处理昂贵的操作.
关于日志问题,我们实施了一个审计日志,用于将大量数据写入数据库,并在审计操作和帮助台中由用户使用.向DB写入大量信息可能非常昂贵.我们确实使用log4j作为系统日志,因为appender是文件追加器,我们的系统日志没有性能问题.
首先,我对SAP非常了解。据我了解,它们提供了许多行业特定的解决方案。这个概念似乎很有趣,我正在从事银行业的类似工作。我们面临的最大挑战是如何使我们的产品适应不同的客户。在整个企业中,许多概念非常相似,但是总有一些特定于客户端的需求必须通过配置和定制来解决。通常,这需要重新实现和开发客户特定的功能。
我想知道从这个意义上说,SAP产品的效率如何。为了适应产品以满足特定客户需求需要花费多少精力?使用了哪些机制(配置,编程等)?与从头开始开发定制解决方案相比,这会有什么不同?他们有能力利用和推广最佳实践吗?
看来org.hibernate.cfg.Configuration对象可以通过调用validateSchema方法以编程方式执行验证.但是,此方法需要dialect和databaseMetadata对象.我正在使用Spring,我可以从spring上下文中获取AnnotationSessionFactoryBean对象.到目前为止,我有以下代码:
AnnotationSessionFactoryBean factory = null;
factory = (AnnotationSessionFactoryBean) context.getBean("AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
//the following line does not work, ConnectionHelper hierarchy is not visible outside the package
ConnectionHelper connectionHelper =
new ManagedConnectionProviderConnectionHelper(factory.getHibernateProperties());
Dialect dialect = Dialect.getDialect(factory.getHibernateProperties());
Connection connection = null;
DatabaseMetadata databaseMetadata = null;
try {
databaseMetadata = new DatabaseMetadata(connection, dialect);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
configuration.validateSchema(dialect, databaseMetadata);
Run Code Online (Sandbox Code Playgroud)
我是在正确的轨道上吗?ConnectionHelper层次结构在包外不可见,因此我无法以这种方式获取连接对象,以构建databaseMetadata.我该如何实现呢?
编辑:我想我已经取得了一些进展.有一个SchemaValidator类.代码现在看起来像这样:
AnnotationSessionFactoryBean factory = context.getBean("&AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
SchemaValidator validator = new SchemaValidator(configuration); …Run Code Online (Sandbox Code Playgroud) 当您有一个简单的方法(例如sum(int x,int y))时,编写单元测试很容易。您可以检查该方法是否正确求和两个样本整数,例如2 + 3应该返回5,然后您将检查某些“非常规”数字是否相同,例如负值和零。这些每个都应该是单独的单元测试,因为单个单元测试应该包含单个断言。
当您有复杂的输入输出时,该怎么办?以Xml解析器为例。您可以使用单个方法parse(String xml)来接收String并返回一个Dom对象。您可以编写单独的测试,以检查某些文本节点是否正确解析,属性是否正确解析,该子节点属于父级等。对于所有这些,我都可以编写一个简单的输入,例如
<root><child/></root>
Run Code Online (Sandbox Code Playgroud)
它将用于检查节点之间的父子关系,以此类推。
现在,看看以下Xml:
<root>
<child1 attribute11="attribute 11 value" attribute12="attribute 12 value">Text 1</child1>
<child2 attribute21="attribute 21 value" attribute22="attribute 22 value">Text 2</child2>
</root>
Run Code Online (Sandbox Code Playgroud)
为了检查该方法是否正常工作,我需要检查许多复杂的条件,例如attribute11和attribute12属于element1,Text 1属于child1等。我不想在单元测试中放置多个断言。我该怎么做?
我做了一些分析,并使用了许多工具来捕获需求:用户创建的故事板,用例,GUI绘图,GUI原型,可用作验收标准的用户故事和场景等.
虽然每个都有或多或少的优点,但我认为有一个重要的缺失.这些方法可以准确地捕获用户与您的应用程序交互的方式,但是程序员需要创建和开发应该反映在代码中的"模型".
我最近一直在阅读Evan的DDD,他提出了不同的建议.您需要与域专家一起创建域模型并与他共享.为了与用户交流想法,他在书中经常使用ad-hoc UML启发的绘图.
我想知道这是否是与领域专家讨论该模型的最佳方式.除了UML图之外,还有其他任何工具可用于捕获领域知识并在您与域专家讨论域时使用它吗?
我想使用我发现的这个库,它是zeromq的纯java端口(不是包装器).我正在尝试测试它,虽然它声称有一些好的数字,我正在执行的测试结果相当差,它甚至在本地执行(客户端和服务在同一台机器上).我确定这是我做错了.需要约.5秒执行此10.000消息循环.
我所做的只是采用Hello world示例并删除了暂停和sysouts.这是代码:
服务器:
package guide;
import org.jeromq.ZMQ;
public class hwserver{
public static void main(String[] args) throws Exception{
// Prepare our context and socket
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket socket = context.socket(ZMQ.REP);
System.out.println("Binding hello world server");
socket.bind ("tcp://*:5555");
while (true) {
byte[] reply = socket.recv(0);
String requestString = "Hello" ;
byte[] request = requestString.getBytes();
socket.send(request, 0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
客户端:
package guide;
import org.jeromq.ZMQ;
public class hwclient{
public static void main(String[] args){
ZMQ.Context context = ZMQ.context(1); …Run Code Online (Sandbox Code Playgroud) 您是否可以重新编写一本关于C#的单元测试和TDD的书籍,至少对Mock Objects有一些处理?
我已经看到了这个问题,但它似乎没有提到嘲笑.
我使用绑定到Category表的System.Windows.Forms.Combobox作为搜索条件.当用户不想使用此条件时,我需要有一个值"All"或空字符串.由于组合被绑定,因此每次单击时,combo1.Text ="All"的值都将被删除.显然,我不能将"All"类别添加到数据库中.完成此任务的最佳方法是什么?
我想在Groovy中覆盖> =运算符,找到了这个页面,但我仍然不知道该怎么做.我有一个带有属性序列和金额的班级钞票,我希望在金额属性上实施比较基础.
.net ×3
groovy ×2
java ×2
tdd ×2
annotations ×1
asynchronous ×1
benchmarking ×1
c# ×1
combobox ×1
data-binding ×1
grails ×1
hibernate ×1
jeromq ×1
messaging ×1
mocking ×1
modeling ×1
sap ×1
spring ×1
uml ×1
unit-testing ×1
zeromq ×1