小编wes*_*ton的帖子

反序列化xml,包括命名空间

我试图反序列化一些XML,我无法获得命名空间/ xsi:type="Model"工作.如果xsi:type="Model"它不在XML中,它可以工作,但它必须在那里.如果我将命名空间从模型中删除,我会收到错误,如果我重命名它,我会得到一个空列表.

XML

<Vehicles xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Vehicle xsi:type="Model">
        <Id>238614402</Id>
    </Vehicle>
    <Vehicle xsi:type="Model">
        <Id>238614805</Id>
    </Vehicle>
</Vehicles>
Run Code Online (Sandbox Code Playgroud)

模型

[XmlRootAttribute("Vehicles")]
public class Vehicles
{
    public Vehicles() 
    {
        Vehicle = new List<Vehicle>();
    }

    [XmlElement(ElementName = "Vehicle", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
    public List<Vehicle> Vehicle { get; set; }
}


public class Vehicle
{
    [XmlElement("Id")]
    public int Id { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

反序列化

XmlSerializer serializer = new XmlSerializer(typeof(Vehicles));
string carXML = "<Vehicles xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Vehicle  xsi:type=\"Model\"> <Id>238614402</Id> </Vehicle><Vehicle  xsi:type=\"Model\"> <Id>238614805</Id> </Vehicle></Vehicles>";

var cars = …
Run Code Online (Sandbox Code Playgroud)

c# xml xml-deserialization deserialization

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

如何从json树反序列化?

假设我已经阅读了json树.

是否可以从中反序列化(不转换回字符串)?

public class TryDeserializeNode {

   public static class MyClass {

      private int x = 11, y = 12;

      public int getX() {
         return x;
      }

      public void setX(int x) {
         this.x = x;
      }

      public int getY() {
         return y;
      }

      public void setY(int y) {
         this.y = y;
      }
   }

   public static void main(String[] args) throws IOException {

      ObjectMapper mapper = new ObjectMapper();

      MyClass myClass = new MyClass();
      String string = mapper.writeValueAsString(myClass);

      JsonNode tree = mapper.readTree(string);

      // how …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

算法将数字转换为String

我需要设计一种算法,其中每个数字都被编码为字母表,例如:

1 = A,2 = B,3 = C ... 26 = Z

给定一组数字,我必须将它们转换为字符串组合.例如:

123可以被翻译为 - ABC(123),AW(1 23)和LC(12 3)

编写算法以查找数字组合 - 123123123.

现在这就是我写的内容,因为有多个"for"循环,我发现它效率低下.有没有更好的方法可以重写这个算法?

public class ValidCombinations {
    Map<Integer, String> mapping = new HashMap<Integer, String>();

    public void run() {
            String s = "123123123";

            /*Convert String to int[]*/
            char[] cArray = s.toCharArray();
            int[] input = new int[cArray.length];

            for (int i=0; i<cArray.length; i++) {
                    input[i] = Character.getNumericValue(cArray[i]);
            }

            Set<String> output = new HashSet<String>();

            for (int i='A'; i<='Z'; i++) {
                    mapping.put(i - 'A' + 1, …
Run Code Online (Sandbox Code Playgroud)

java algorithm

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

创建单元测试以确保不变性

我设计了一个不可变类,因为我希望它具有值语义.我在课堂的评论部分写了一个提示

// "This class is immutable, don't change this when adding new features to it."

但我知道,有时这些评论会被其他团队成员忽略,所以我想创建一个单元测试作为额外的保护措施.知道怎么做到这一点?可以通过反射检查一个类,以确保只有构造函数改变它的内部状态吗?

(使用C#2.0和NUnit,如果这对任何人都很重要).

c# nunit unit-testing immutability

6
推荐指数
2
解决办法
1032
查看次数

什么优化是安全的,仍然允许-assumenosideeffects删除

我注意到,最近我创建的项目中有一种新的proguard方法,即使用预构建的脚本:

$ {} sdk.dir /tools/proguard/proguard-android.txt

这是没有优化,并附带评论:

默认情况下,优化已关闭.Dex不喜欢代码运行ProGuard优化和预验证步骤(并自行执行一些优化).

似乎遵循这一建议意味着assumenosideeffects没有效果.例如,这些常见任务:

#Remove logging
-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

#Remove asserts
-assumenosideeffects class junit.framework.Assert {
  public static *** assert*(...);
}
Run Code Online (Sandbox Code Playgroud)

证明它不起作用:

if (release)
{
    Assert.assertTrue("Proguard config error, Asserts have been left in", false);
}
Run Code Online (Sandbox Code Playgroud)

是否有一个安全的中间地带,我可以应用优化来修剪调整定义assumenosideeffects,但没有冒着与Dex和proguard优化相关的问题的风险?

android proguard

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

无法删除azure数据库

在sql server数据库列表中:

https://manage.windowsazure.com/#Workspaces/SqlAzureExtension/Databases
Run Code Online (Sandbox Code Playgroud)

我选择了一个数据库,底部是"删除".

我按下删除,然后处理一会儿,然后说:

无法删除数据库'system-50e5f905 -... etc'

我按照链接获取更多详细信息,它只是说:

错误的请求

额外信息

它们似乎并未在任何地方链接资源.

我已经能够创建和删除新数据库.

我也使用MS SQL服务器管理工​​作室连接,我只能看到两个命名数据库,没有名称格式system-guid为名称的数据库.

azure

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

读取字符串实习池的内容

我想枚举字符串实习池中字符串.

也就是说,我想所有的实例列表sstring这样:

string.IsInterned(s) != null
Run Code Online (Sandbox Code Playgroud)

有谁知道这是否可能?

.net c# appdomain string-interning

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

uglyfy顶级功能与gulp

将这个简单的gulp示例用于uglification:

gulp.task('scripts', function() {
  // Minify and copy all JavaScript (except vendor scripts)
  return gulp.src(paths.scripts)
    .pipe(uglify())
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));
});
Run Code Online (Sandbox Code Playgroud)

如果您有两个文件:

档案f1.js:

function f1(){
  var hello = 1;
  return hello;
}
Run Code Online (Sandbox Code Playgroud)

档案f2.js:

function f2(){
  return f1();
}
Run Code Online (Sandbox Code Playgroud)

任务的结果all.min.js是:

function f1(){var n=1;return n}
function f2(){return f1()}
Run Code Online (Sandbox Code Playgroud)

我怎样才能丑化到裂伤这些顶级函数名,即f1f2?我试过了:

额外的丑化

return gulp.src(paths.scripts)
    .pipe(uglify())
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'))
    .pipe(uglify());
Run Code Online (Sandbox Code Playgroud)

通过mangle选项

return gulp.src(paths.scripts)
    .pipe(uglify({mangle: true}))
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));
Run Code Online (Sandbox Code Playgroud)

通过顶级选项

return gulp.src(paths.scripts)
    .pipe(uglify({toplevel: true}))
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));
Run Code Online (Sandbox Code Playgroud)

但一切都没有效果.

javascript uglifyjs gulp

6
推荐指数
2
解决办法
4268
查看次数

Tuple.Equals没有检查确切类型的任何好理由?

未检查类型可能导致不对称的相等:

public sealed class MyClass : Tuple<string>
{
    private readonly int _b;

    public MyClass(string a, int b) : base(a)
    {
        _b = b;
    }

    public override bool Equals(object obj)
    {
        return Equals(obj as MyClass);
    }

    private bool Equals(MyClass obj)
    {
        if (obj == null) return false;
        return base.Equals(obj) && obj._b == _b;
    }
}

[Test]
public void Show_broken_symmetric_equality()
{
    Tuple<string> a = Tuple.Create("Test");
    var b = new MyClass("Test", 3);
    Assert.AreEqual(a, b);
    Assert.AreNotEqual(b, a);
}
Run Code Online (Sandbox Code Playgroud)

该测试通过,但它不应该,它表明实现良好的对称属性Equals被打破.

查看代码 …

c#

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

Mockito 验证参数包含另一个忽略大小写的字符串

我得到的是这一行:

verify( mockAppendable ).append( org.mockito.Mockito.contains( msg ) );
Run Code Online (Sandbox Code Playgroud)

...但我希望这个测试不分大小写。我该怎么做?

java mocking verify mockito

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