我试图反序列化一些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) 假设我已经阅读了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) 我需要设计一种算法,其中每个数字都被编码为字母表,例如:
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) 我设计了一个不可变类,因为我希望它具有值语义.我在课堂的评论部分写了一个提示
// "This class is immutable, don't change this when adding new features to it."
但我知道,有时这些评论会被其他团队成员忽略,所以我想创建一个单元测试作为额外的保护措施.知道怎么做到这一点?可以通过反射检查一个类,以确保只有构造函数改变它的内部状态吗?
(使用C#2.0和NUnit,如果这对任何人都很重要).
我注意到,最近我创建的项目中有一种新的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优化相关的问题的风险?
在sql server数据库列表中:
https://manage.windowsazure.com/#Workspaces/SqlAzureExtension/Databases
Run Code Online (Sandbox Code Playgroud)
我选择了一个数据库,底部是"删除".
我按下删除,然后处理一会儿,然后说:
无法删除数据库'system-50e5f905 -... etc'
我按照链接获取更多详细信息,它只是说:
错误的请求
额外信息
它们似乎并未在任何地方链接资源.
我已经能够创建和删除新数据库.
我也使用MS SQL服务器管理工作室连接,我只能看到两个命名数据库,没有名称格式system-guid为名称的数据库.
我想枚举字符串实习池中的字符串.
也就是说,我想所有的实例列表s的string这样:
string.IsInterned(s) != null
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否可能?
将这个简单的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)
我怎样才能丑化到裂伤这些顶级函数名,即f1和f2?我试过了:
额外的丑化
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)
但一切都没有效果.
未检查类型可能导致不对称的相等:
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被打破.
查看代码 …
我得到的是这一行:
verify( mockAppendable ).append( org.mockito.Mockito.contains( msg ) );
Run Code Online (Sandbox Code Playgroud)
...但我希望这个测试不分大小写。我该怎么做?