问题列表 - 第34722页

java动态代理与常规代理的有用性

我需要一些建议,动态代理比常规代理更有用.

我已经投入了大量精力来学习如何有效地使用动态代理.在这个问题中,抛开像AspectJ这样的框架基本上可以执行我们尝试使用动态代理实现的所有内容,或者例如CGLIB可以用来解决动态代理的一些缺点.

用例

  • 装饰器 - 例如,执行方法调用的日志记录,或缓存复杂操作的返回值
  • 坚持合同 - 即确保参数在可接受的范围内,并且返回类型符合可接受的值.
  • 适配器 - 在某个地方看到一些巧妙的文章,描述它是如何有用的.我很少遇到这种设计模式.

是其他人吗?

动态代理优势

  • 装饰器:记录所有方法调用,例如,

public Object invoke(Object target, Method method, Object[] arguments) {
         System.out.println("before method " + method.getName());
         return method.invoke(obj, args);
     }
}
Run Code Online (Sandbox Code Playgroud)

装饰器模式肯定是有用的,因为它允许所有代理方法的副作用(尽管这种行为是书籍 - 使用方面的例子..).

  • 合同:与常规代理相比,我们不需要实现完整的接口.例如,

public Object invoke(Object target, Method method, Object[] arguments) {
     if ("getValues".equals(method.getName()) {
         // check or transform parameters and/or return types, e.g., 
         return RangeUtils.validateResponse( method.invoke(obj, args) );
     }

     if ("getVersion".equals(method.getName()) {
         // another example with no delegation
         return 3;
     }
} 
Run Code Online (Sandbox Code Playgroud)

另一方面,合同只能避免实现完整接口的需要.然后,重构代理方法将无声地使动态代理无效.

结论 …

java proxy design-patterns use-case dynamic-proxy

14
推荐指数
2
解决办法
4568
查看次数

html元素属性中的Razor语法(ASP MVC 3)

我有一个重复客户行的表,我想将客户ID添加到我的表行的ID属性,如下所示:

<tr id="row<customer id>"></tr>
Run Code Online (Sandbox Code Playgroud)

我尝试添加此代码:

@foreach(var c in Model) {
   <tr id="row@c.id"></tr>
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

<tr id="row@c.id"></tr>
<tr id="row@c.id"></tr>
Run Code Online (Sandbox Code Playgroud)

等等

但我希望它是:

<tr id="row1"></tr>
<tr id="row2"></tr>
Run Code Online (Sandbox Code Playgroud)

等等

我也尝试添加,<tr>row@{c.id}</tr>但它没有工作..

asp.net-mvc razor asp.net-mvc-3

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

如何在Windows中杀死Java进程而不杀死javaw.exe?

我有一个外部Windows .exe实际上是Java应用程序:运行.exe启动javaw.exe,后者又运行该Java应用程序.

我没有编写该应用程序,也无法通过API访问它.但是,我需要能够杀死它.所以现在我只是杀死了Windows进程javaw.exe,这对于只运行该Java应用程序的测试机很好,但如果我需要更精细的粒度,我目前无法这样做.

我的搜索产生了诸如Sysinternal的Process Explorer或JDK中的jps命令之类的建议,但在我打算提供脚本的目标系统中,JDK和Sysinternal的Process Explorer都无法运行.

有没有其他方法不需要外部工具?javaw.exe是否有一个列出Java进程的开关或命令行选项?是否有JRE版本的jps?

谢谢.

java kill process javaw

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

检查我是否可以使用Python将文件写入目录

我需要检查是否可以将文件写入用户指向Python的目录.

有没有办法提前检查?我可能正在使用try .. catch这个目的,但我期待更好的东西,我可以提前检查.

python exception file-access

11
推荐指数
1
解决办法
6027
查看次数

如何安排我的Android应用程序每小时做一些事情

我希望我的应用程序每小时访问数据库并从表中读取下一条记录,然后更新desctop小部件并发送通知.我知道我可以使用AlarmManager来注册我的Intents,但是当手机关闭或重启时它们会被删除.

是否有任何其他Android类/服务,即使我重新启动手机,我会不断更新我的应用程序?

谢谢,

java android schedule alarm alarmmanager

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

SWIG - 命名空间问题

我无法使用以下简单示例来使用SWIG 1.3.40(我也尝试过1.3.31).只要我不将它包装在命名空间中,Foo结构就会作为Python模块出现,但是一旦我这样做,我就会在生成的test_wrap.c中收到编译错误.

test.h:

#ifndef __TEST_H__
#define __TEST_H__

#define USE_NS 1

#if USE_NS
namespace ns {
#endif

struct Foo {
  float a;
  float b;
  float func();
};

#if USE_NS
}
#endif

#endif
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

#include "test.h"

#if USE_NS
namespace ns {
#endif

float Foo::func()
{
  return a;
}

#if USE_NS
}
#endif
Run Code Online (Sandbox Code Playgroud)

test.i

%module test
%{
#include "test.h"
%}

%include "test.h"
Run Code Online (Sandbox Code Playgroud)

我在OSX 10.6.3上运行以下命令来构建一个bundle:

swig -python test.i
g++ -c -m64 -fPIC test.cpp
g++ -c -m64 -fPIC -I/usr/local/include -I/opt/local/include -I/opt/local/Library/Frameworks/Python.framework/Headers test_wrap.c
g++ …
Run Code Online (Sandbox Code Playgroud)

c++ python macos swig namespaces

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

在iOS 4.1 SDK中破坏了单元测试?

升级到4.1 iOS SDK后,我的单元测试包总是返回以下两个错误和一个警告:

An internal error occurred when handling command output: -[XCBuildLogCommandInvocationSection setTestsPassedString:]: unrecognized selector sent to instance
An internal error occurred when handling command output: -[XCBuildLogCommandInvocationSectionRecorder endmarker:]: unrecognized selector sent to instance
Run unit tests for architecture 'i386' (GC OFF) did not finish
Run Code Online (Sandbox Code Playgroud)

尽管它报告X测试中的所有X都通过了,但我得到了这些错误.我读到了旧版XCode中的一个类似的错误,它也是在它发布之后立即发生的(关于时间正则表达式中的错误)可以通过将你的时区设置为太平洋时间来缓解,但我不能肯定地说,这是一个回归到那里.

还有其他人有这个问题吗?

iphone unit-testing ocunit ios4

11
推荐指数
1
解决办法
2605
查看次数

DirectX 的 C# 自动化框架

我应该使用什么来从 C# 代码自动化 DirectX 应用程序?我想从 C# 应用程序中向 DirectX 游戏发送键和鼠标消息。我试过 pInvoke 解决方案无济于事,代码如下

INPUT[] InputData = new INPUT[1];

InputData[0].type = (UInt32)InputType.KEYBOARD;
InputData[0].ki.wScan = (ushort)0x041e;
InputData[0].ki.dwFlags = (uint)KeyboardFlag.SCANCODE;
InputData[0].ki.time = 0;
InputData[0].ki.dwExtraInfo = 0;
SendInput(1, ref InputData[0], Marshal.SizeOf(InputData[0]));




INPUT[] InputData1 = new INPUT[1];

InputData1[0].type = (UInt32)InputType.KEYBOARD;
InputData1[0].ki.wScan = (ushort)0x041e;
InputData1[0].ki.dwFlags = (uint)KeyboardFlag.KEYUP | (uint)KeyboardFlag.SCANCODE;
InputData1[0].ki.time = 0;
InputData1[0].ki.dwExtraInfo = 0;
SendInput(1, ref InputData1[0], Marshal.SizeOf(InputData1[0]));
Run Code Online (Sandbox Code Playgroud)

与标准桌面应用程序一起运行良好,但在 DirectX 应用程序中无法执行任何操作。请告诉我我还应该尝试什么;我发现并测试了几个可从 C# 使用的自动化库,结果同样糟糕——它们在 GDI+ 应用程序中都表现良好,但在 DirectX 应用程序中无法实现结果。是否有任何专门针对 DirectX 应用程序的自动化框架,我可以在我的 C# 代码中链接到它?

c# directx automation

5
推荐指数
0
解决办法
577
查看次数

TableModel与ColumnModel:谁拥有列值?

JTable.getModel().getColumnName()和之间有什么区别JTable.getColumnModel().getColumn(index).getHeaderValue()?这两个似乎没有共享任何数据.我的猜测是TableModel.getColumnName()指示列的文本表示,TableColumn.getHeaderValue()TableColumn.getHeaderRenderer()确定列的外观(它不需要是纯文本).

什么保证两者保持同步?如果两者发生冲突会怎样?

java swing jtable

17
推荐指数
1
解决办法
8001
查看次数

我可以将两个方法绑定到WPF控件吗?

我有这个组合框

    <ComboBox Height="23"
              SelectionChanged="comboBox1_SelectionChanged">
        <ComboBoxItem Content="Opt1"/>
        <ComboBoxItem Content="Opt2"/>
    </ComboBox>
Run Code Online (Sandbox Code Playgroud)

基本上我需要的是运行两个方法,一个已经绑定的方法(combobox1_SelectionChanged)和另一个我创建的方法.这可能吗?

wpf

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