小编J.A*_*.L.的帖子

不推荐使用AmazonS3Client(凭据)

我正在尝试阅读Amazon S3上可用的文件,因为问题解释了问题.我找不到已弃用的构造函数的替代调用.

这是代码:

private String AccessKeyID = "xxxxxxxxxxxxxxxxxxxx";
private String SecretAccessKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
private static String bucketName     = "documentcontainer";
private static String keyName     = "test";
//private static String uploadFileName    = "/PATH TO FILE WHICH WANT TO UPLOAD/abc.txt";

AWSCredentials credentials = new BasicAWSCredentials(AccessKeyID, SecretAccessKey);

void downloadfile() throws IOException
{

    // Problem lies here - AmazonS3Client is deprecated
    AmazonS3 s3client = new AmazonS3Client(credentials);
        try {
        System.out.println("Downloading an object...");
        S3Object s3object = s3client.getObject(new GetObjectRequest(
                bucketName, keyName));
        System.out.println("Content-Type: "  +
                s3object.getObjectMetadata().getContentType());
        InputStream input = …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 deprecated amazon-web-services aws-sdk

50
推荐指数
3
解决办法
4万
查看次数

JSP页面中的UTF-8编码

我有一个JSP页面编码的页面ISO-8859-1.这个JSP页面有一个问题答案博客.我希望在Q/A发布期间包含特殊字符.

问题是JSP不支持UTF-8编码,即使我已将其更改ISO-8859-1UTF-8.这些字符(~,%,&,+)正在问题.当我单独或使用任何字符的组合发布这些字符时,它null在数据库中是storinh ,当我在发布应用程序时删除这些字符时它工作正常.

任何人都能提出一些解决方案吗

java jsp utf-8

32
推荐指数
9
解决办法
14万
查看次数

当集合中的元素太多时抛出哪个异常

我希望我班上的收藏限制为最多6个元素:

public class Foo
{
  private ICollection bars;

  public ICollection Bars
  {
    get { return this.bars; }
    set 
    {
      if (value != null && value.Count > 6)
      {
        throw new Exception("A Foo can only have up to 6 Bars."); // Which exception to throw?
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

抛出这种情况的正当例外是什么?

根据文件,ArgumentException应抛出:

当提供给方法的其中一个参数无效时.

但这不是一种方法.

ArgumentOutOfRange 应抛出:

当参数的值超出被调用方法定义的允许值范围时.

这意味着访问集合大小之外的元素,而不是集合太大时.

还有其他例外情况适合这种情况吗?

c# collections exception

10
推荐指数
2
解决办法
2993
查看次数

我怎么知道是否加载了Google Visualization

我在一些网页上显示谷歌的图表.但我无法保证我的客户可以通过网络访问Google:客户端计算机将与我的网络服务器(可以访问Google)位于同一个局域网中,但我不保证所有客户端都可以访问局域网以外的地址.

我想使用Google Charts向可以访问它的客户端显示数据,并向那些不能访问它的人显示纯HTML表格.

我尝试将变量设置为false,并在加载Google Visualization API时调用的方法中将其更改为true:

var canAccessGoogleVisualizationVar = false;
google.load('visualization', '1', {packages: ['corechart'], callback: canAccessGoogleVisualization});
function canAccessGoogleVisualization() 
{
    canAccessGoogleVisualizationVar = true;
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.

如何从客户端了解Google Visualization是否可访问?


更新:上面的代码不起作用,因为下面的代码(我之前没有发布,因为我认为没有意义):

google.setOnLoadCallback(drawVisualization);

function drawVisualization() 
{
    // Check if Google Visualization is loaded
    if (!canAccessGoogleVisualizationVar) {
        alert('Can't access Google Visualization');
    }

    // The following code can be any of the samples from Google (see http://code.google.com/apis/ajax/playground/?type=visualization#pie_chart).
    var data = new google.visualization.DataTable();
    // Add columns and values to data
    ...
    // Call new google.visualization.AnyChartBuilderFromTheAPI(<element>).draw(data);
}
Run Code Online (Sandbox Code Playgroud)

我发现我的代码没有工作,因为,如果canAccessGoogleVisualizationVar …

javascript google-visualization

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

为通用分配默认值

我通过反射调用方法,其返回类型是通用的.我不希望返回值为null,所以在这种情况下,我想分配该泛型类型的默认值.

也就是说,通过反射调用方法之后,我想执行这样的事情:

T resultNotNull = (T) reflectionMethodThatCanReturnNull.invoke(anObject);
// If it's null, let's assign something assignable.
if (resultNotNull == null) {
    if (resultNotNull.getClass().isAssignableFrom(Long.class)) {
        resultNotNull = (T) Long.valueOf(-1);
    } else if (resultNotNull.getClass().isAssignableFrom(String.class)) {
        resultNotNull = (T) "NOTHING";
    } 
}
Run Code Online (Sandbox Code Playgroud)

但是,当然,如果'resultNotNull == null',我们不能在没有异常的情况下调用'resultNotNull.getClass()'.

有关如何根据泛型类型分配默认值的任何想法?

整个代码将是这样的:

public class ReflectionTest {
    public class Class1ok {
        public Long method () { return Long.valueOf(1); }
    }   
    public class Class1null {
        public Long method () { return null; } // It …
Run Code Online (Sandbox Code Playgroud)

java generics reflection default-value

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

修改私有静态只读字段

我有一个大型应用程序从配置文件中读取一些参数.

我正在为一个类编写单元测试,该类在使用参数和从配置文件读取的值执行某些操作后生成结果:

internal static class Password
{
    private static readonly byte PASSWORD_PRIVATE_KEY
        = ConfigFile.ReadByte("PASSWORD_PRIVATE_KEY");

    public static byte Generate(byte passwordPublicKey);
}
Run Code Online (Sandbox Code Playgroud)

在我的单元测试,我知道该值Password.Generate()方法应该返回给定PASSWORD_PRIVATE_KEYPASSWORD_PUBLIC_KEY.但是我喜欢PASSWORD_PRIVATE_KEY在单元测试类中定义值,而不是在配置文件中:

[TestMethod]
public void PasswordGenerate_CalculatedProperly()
{
    byte passwordPublicKey = 0x22;
    Password_Accessor.PASSWORD_PRIVATE_KEY = 0xF0;
    byte expectedGenerated = 0xAA;

    byte generated = Password_Accessor.Generate(passwordPublicKey);

    Assert.AreEqual(expectedGenerated, generated);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以编写private static readonly直通代码,所以我不必依赖任何配置文件进行测试?

c# unit-testing

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

隐式vs显式转换运算符最佳实践

我最近在C#中发现了铸造操作员.现在我知道我可以覆盖运算符以允许:

byte b1 = new Foo();
byte b2 = (byte) new Foo();
Run Code Online (Sandbox Code Playgroud)

但是从Foo消费者的角度来看,我不知道哪种更容易理解可以进行转换.我特别考虑过将要/将来必须维护我的代码的初级程序员(或者如果我几天前看到这个,我会想到的).

一方面隐式投射看起来有点奇怪.它看起来像分配不同的,不兼容的类型.并且IDE的intellisense不会告诉你有一种方法可以在没有编译器抱怨的情况下做到这一点.

另一方面,显式转换看起来像强制转换.好吧,这是告诉编译器的一种方式"我知道我在做什么,不要发牢骚".但是,如果程序员无法访问Foo代码(或者不知道C#中存在转换操作符),那么如何执行转换并执行某些操作?

哪种类型的铸件在哪种情况下是首选的?还有第三种方式吗?

c# casting

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

通过Java中的反射从调用的方法调用返回方法

好的,我确实理解Java Reflection的工作原理.但我正在做的事情与反思教程中显示的有点不同.现在我想要的是调用一个方法,该方法通过使用反射调用方法返回.

   class Foo{
          private String str = "";

          public Foo(String str){
              str = this.str;
          }

          public void goo(){
            System.out.println(this.str);
          }
    }

    class Bar{
         public Foo met(String str){
              return new Foo(str); 
         }
    }

    class Hee{
         public static void main(String [] args) throws Exception{
                Class cls = Class.forName("Bar");
                Object obj = cls.newInstance();

                Class [] types = {String.class};
                String [] arr = {"hello"};
                Method method = cls.getMethod("met",types);

        Object target = method.invoke(obj, arr);

                target.goo(); //here where the error occurs
                // 123456
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java reflection

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