小编Par*_*bay的帖子

是否可以创建具有自动应用于客户端项目中的类的方面的JAR?

我想要一个具有拦截所有方法调用的方面的JAR,例如

@Aspect
public class CoolAspect {
    @Pointcut("execution(public * *(..))")
    public void anyPublicMethod() { }

    @Before("anyPublicMethod()")
    public void advice(JoinPoint point) {
       System.out.println("sign:\t" + point.getSignature());
    }
}
Run Code Online (Sandbox Code Playgroud)

假设以上是我拥有并希望客户使用的方面。我将其编译为JAR并提供给Maven。

现在,客户端将使用此jar作为依赖项,例如

    <dependency>
        <groupId>cool-group</groupId>
        <artifactId>cool-artifact</artifactId>
        <version>1.0.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

该工件(JAR)具有上述方面。

现在可以通过仅声明Maven依赖项来进行方面工作

几件重要的事情:

  1. 我计划使用AspectJ(如有必要,也许使用Spring AOP),
  2. 客户端可能是正常的Web应用程序web.xml
  3. 客户端是使用Maven构建的
  4. 我希望客户端尽可能地易于配置-在我最初的想法中,Maven依赖就足够了。
  5. “注释JAR”将包含一个Web片段,因此可以在其中声明一些自定义ServletContextListener

有任何想法吗?

java servlets aspectj spring-aop aspect

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

组织D项目中的模块

我来自Java背景,包装问题如下:

比方说,我可以在同一个包下面有很多文件com.parobay.io.然后我可以将其作为库分发,用户将使用它:

import com.parobay.io.Input;
import com.parobay.io.Output;
Run Code Online (Sandbox Code Playgroud)

要么

import com.parobay.io.*; // to import everything
Run Code Online (Sandbox Code Playgroud)

所以我可以com.parobay.io在多个文件中定义一个"module()和类".

那么如何在D中实现同样的目标呢?我是否必须创建一个目录,com\parobay\io并且有两个文件被调用Input.d,Output.d或者是否有更聪明的方法?

在Java中,规则非常严格,因此很难弄错.在D中有很多可能性.那么有没有任何约定,比如每个文件一个类,或者文件名等于类的名称?

coding-style module d naming-conventions

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

确定动态库是否存在的多平台方法

我需要检查是否存在动态库,以便以后可以安全地调用使用该库的函数。

有没有多平台的方式来检查这一点?我的目标是MS Windows 7(VC ++ 11)和Linux(g ++)。

c++ g++ visual-c++ dynamic-library

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

在单行中缓存中间变量

我可以以某种方式缓存i.toString这个简单的函数定义吗?

def palindrome(i: Int) = i.toString == i.toString.reverse
Run Code Online (Sandbox Code Playgroud)

我想保持这个功能简单,没有经典的多线,支撑功能..

scala

5
推荐指数
3
解决办法
524
查看次数

从数据库中检索一行作为Hibernate中的Map

Players:

ID | name  | email | age | ...
1  | 'bob' | null  | 23  | ...
Run Code Online (Sandbox Code Playgroud)

此表是Player持久化类的实例的位置(每个实例一行,没有组合等).

有了Hibernate Session,我如何获得行(比如id - PK - 等于1)作为Java Map(key =列名,值=单元格值)?

用法示例:

Map<String,String> row = getPlayerByIdAsMap(1);
Run Code Online (Sandbox Code Playgroud)

java database hibernate jpa

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

Groovy 2.0中的小端到大端?

什么是将小端数转换为大端数的最佳方法?

def i = 0x12345678;
def j = 0x78563412;
assert i == convert(j) // ?
Run Code Online (Sandbox Code Playgroud)

我知道我可以掩盖字节并重新排序它们但是什么是更加时髦的方式?

groovy bit-manipulation

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

使用PowerMock和TestNG模拟一个静态方法

class StaticClass {
  public static String a(){ return "a"; }
  public static String ab(){ return a()+"b"; }
}
Run Code Online (Sandbox Code Playgroud)

我想模仿,StaticClass::a以便它返回"x"并调用StaticClass.ab()结果"xb"...

我觉得PowerMock和TestNG很难......


我正在测试的确切代码:

class StaticClass {
    public static String A() {
        System.out.println("Called A");
        throw new IllegalStateException("SHOULD BE MOCKED AWAY!");
    }

    public static String B() {
        System.out.println("Called B");
        return A() + "B";
    }
}

@PrepareForTest({StaticClass.class})
public class StaticClassTest extends PowerMockTestCase {

    @Test
    public void testAB() throws Exception {
        PowerMockito.spy(StaticClass.class);
        BDDMockito.given(StaticClass.A()).willReturn("A");
        assertEquals("AB", StaticClass.B()); // IllegalStateEx is …
Run Code Online (Sandbox Code Playgroud)

java testng mocking powermock

4
推荐指数
2
解决办法
9515
查看次数

Haskell的绑定函数的类型是什么?

一个非常受欢迎的monad解释如下:

http://blog.sigfpe.com/2007/04/trivial-monad.html

除了这部分我得到的一切:

bind :: (a -> W b) -> (W a -> W b)
bind f (W x) = f x
Run Code Online (Sandbox Code Playgroud)

我有Haskell的基本知识(很长一段时间没用过它),但这个签名看起来不对.

我安装了GHC并检查了它的想法 - 结果它认为我做了什么,即:

:t bind
bind :: (t1 -> t) -> W t1 -> t
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

monads haskell ghc

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

反序列化 GSON 中的递归多态类

class Complex implements Recursive {
  Map<String, Recursive> map;
  ...
}

class Simple implements Recursive { ... }
Run Code Online (Sandbox Code Playgroud)

我如何反序列化这个 json:

{
  "type" : "complex",
  "map" : {
     "a" : {
        "type" : "simple"
     },
     "b" : {
        "type" : "complex",
        "map" : {
            "ba" : {
                "type" : "simple"
        } 
     } 
  }
}
Run Code Online (Sandbox Code Playgroud)

使用谷歌 GSON?

java json gson deserialization

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

为D中的const和非const结构提供@property

我用这种方式定义一个简单的结构:

struct Person{
    private string _name;

    @property ref string name() { return _name; }
}
Run Code Online (Sandbox Code Playgroud)

@property注释是真的很酷,但我不知道我应该如何使用它正确.

以上是相当不错的,但我无法传递Person给需要in Person例如的函数:

void fun(in Person p) { ... } 
Run Code Online (Sandbox Code Playgroud)

为避免复制,Person我必须声明参数ref,但我不修改它.

那么如何将属性语法与const-correctness结合起来呢?


编辑:要跟进,可以同样适用于循环吗?

void fun(in Person[] people) {
    foreach(Person p; people) { ... }
}
Run Code Online (Sandbox Code Playgroud)

现在我不想复制人,但我不能使用,ref Person因为它是常量.所以我必须ref const(Person) p在循环中写入成为loong.

d const properties

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