我正在处理销售点项目,该项目由一家特殊的银行提供给我们公司.银行提供了一个DLL,它通过USB端口与POS交互.我添加了用.NET C#语言编写的DLL,所以没有存在互操作性问题.在DLL内部有一个方法叫做DebitAndShareTheAmount.这个方法有两个主要参数P1,P2.
P1是明文的金额,P2是应该从P1明文中再次减去的金额.所以,如果我打电话DebitAndShare(1000,10);//它实际上是银行信用我的帐户1000-10 = 990 $和商店使用我的应用程序10 $.
问题是,任何具有一些C#编程基础知识和访问该SHOP计算机的人都可以安装Visual Studio并使用该DLL并调用DebitAndShare方法并且您知道其余的.实际上我们的应用程序将充当服务提供者并且可用于在全国各地的特殊商店,商店的所有者将通过我们的应用程序向客户提供服务并支付他们的金额(10美元)来支付.我将与POS开发人员就我刚刚提到的安全问题进行会谈.
我已经阅读了MCTS书和本书的安全部分,我发现如果银行DLL PublisherIdentityPermission(SecurityAction.InheritanceDemand, CertFile=@"SomeCert.cer")在DebitAndShare方法之前使用属性并将此方法标记为受保护,那么我们可以有一个级别的安全性,是吗?你有什么建议.我也认为如果银行可以给我们加密算法方法,那么它也就足够了.
想象一下,我有一个包含10个方法的类,我需要从类中实例化10个对象.问题是:JVM是否会在对象创建时为10个实例分配10个不同的内存空间(我的意思是在我调用构造函数时,即新的MyClass();?或者它将在内存和每个实例中调用类定义一次这10个方法中的每一个,在运行时,JVM都会分配内存吗?
为了清除一些误解,我的问题是在创建对象时,我知道所有数据成员都分配在堆内存中,但我不确定尚未调用的方法是否在内存中为每个对象分配不同或者不?
我有以下方法:
@EnableAsync
@Service
Class MyService{
private String processRequest() {
log.info("Start processing request");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
log.info("Completed processing request");
return RESULT;
}
@Async
public CompletableFuture<String> getSupplyAsyncResult(){
CompletableFuture<String> future
= CompletableFuture.supplyAsync(this::processRequest);
return future;
}
@Async
public CompletableFuture<String> getCompletedFutureResult(){
CompletableFuture<String> future
= CompletableFuture.supplyAsync(this::processRequest);
return future;
}
Run Code Online (Sandbox Code Playgroud)
以及控制器中的以下端点:
@RequestMapping(path = "/asyncSupplyAsync", method = RequestMethod.GET)
public CompletableFuture<String> getValueAsyncUsingCompletableFuture() {
log.info("Request received");
CompletableFuture<String> completableFuture
= myService.getSupplyAsyncResult();
log.info("Servlet thread released");
return completableFuture;
}
Run Code Online (Sandbox Code Playgroud)
和
@RequestMapping(path = "/asyncCompletable", method …Run Code Online (Sandbox Code Playgroud) 嗨我有一个像下面这样的方法:
void Foo
{
MethodInvoker method=delegate{
frm2 frm=new frm2();
frm.show();
}
Run Code Online (Sandbox Code Playgroud)
我在这个表单中有一个datagridview控件,它从DB执行大量加载,并在frm2中的datagridview中加载数据.
问题是当数据附加到frm2中的datagridview时主线程(form1线程)被冻结.为什么会发生这种情况.
我创建了两个不同的项目,并在这两个项目中分离了frm2和form1,结果还可以,并且没有任何冻结发生.