我一直在使用一个公司的代码库,该公司的策略是编写大量的跟踪日志记录.因此,几乎每个方法都有一段代码,如下所示:
String LOG_METHOD = "nameOfMethod(String,List<Long>):void";
if(logger.isTraceEnabled()) {
Object[] params = new Object[] { string, list };
logger.trace(CompanyMessages.newMethodInstanceMessage(this, LOG_METHOD, params));
}
Run Code Online (Sandbox Code Playgroud)
并以此结束(在finally-clause中或在方法的最后:
if(logger.isTraceEnabled()) {
logger.trace(CompanyMessages.leaveMethodInstanceMessage(this, LOG_METHOD));
}
Run Code Online (Sandbox Code Playgroud)
实际上有更多的代码,但这是基本的想法.这使得代码变得混乱,其他编码人员不断地使用他们自己的解释来搞乱它,这些解释不使用CompanyMessages格式化监视工具要读取的消息所需的特定类.所以我正在寻找一种方法来摆脱上面的所有代码,并提供所有需要跟踪记录的方法,注释如下:@LogBefore('logLevel')&@LogAfter('logLevel').
我选择这个解决方案的原因是为了使其他开发人员不必学习任何新东西,而是使用注释而不是代码.我在一个服务器环境中工作,我们部署了数百个Web应用程序和数十个开发人员.所以我一直在寻找一种在Web应用程序中实现它的方法,而无需额外的编码或额外的大型库.这意味着我正在寻找一个小的,稳定的AOP实现,使用类似于我提出的注释,在每个Web应用程序中易于配置.表现也很重要.用AOP实现这个的最简单的例子是什么?
编辑:我确实找到了与我正在寻找的非常类似的东西,但这有几个问题.必须配置所有需要日志记录的类,这比仅使用注释更耗费资源.弹簧配置会<aop:aspectj-autoproxy/>修复吗?
对于项目,我将在Google App Engine上创建一个应用程序,其中:
我不希望讨论领导者拥有Google帐户或OpenID帐户以注册该应用程序,并且所有用户的其他帐户必须由讨论负责人生成.
但Google App Engine似乎只支持Google帐户和OpenID帐户.我该怎么做?是否存在用于在Google App Engine中创建领导者帐户和生成用户帐户的现有模式,该模式仍然支持GAE用户API?
我正在尝试使用 Apple 算法eciesEncryptionCofactorVariableIVX963SHA256AESGCM加密 Java ( BouncyCastle ) 和 iOS 之间的通信。
苹果的算法没有很好的文档记录,但我发现这篇文章很有帮助。
我还在BouncyCastle 文档中找到了以下算法,它似乎与我正在寻找的内容很接近:
ECCDHwithSHA256KDF它使用 X9.63 KDF 和 SHA256 作为 PRF 来表示 EC 辅因子 DHpackage com.example.ios.encryption;
import org.bouncycastle.jce.ECNamedCurveTable;
import org.bouncycastle.jce.ECPointUtil;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.spec.ECNamedCurveSpec;
import org.bouncycastle.jce.spec.ECParameterSpec;
import org.bouncycastle.util.encoders.Base64;
import java.math.BigInteger;
import java.security.*;
import java.security.spec.ECPoint;
import java.security.spec.ECPrivateKeySpec;
import java.security.spec.ECPublicKeySpec;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.KeyAgreement;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class IOSEncryptionECwithAES {
public void testDecrypt() {
// Receiver EC Public Key
String …Run Code Online (Sandbox Code Playgroud)