小编Meh*_*taş的帖子

使用带有robovm后端的libgdx检测ios的版本

根据这个答案,我们需要知道ios的版本.如何使用libgdx的robovm后端实现它?

java ios libgdx robovm

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

如何使用 libgdx/robovm 获取应用程序版本

我对获取在 libgdx 之上开发的应用程序版本(以及在 ios 的 robovm 上)有一些疑问

我想获取版本信息

  1. 这是在Android 的android:versionName标签中声明的AndroidManifest.xml
  2. 这是在IOSapp.version的 key中声明的。robovm.properties(我相信,它最终会被替换为CFBundleShortVersionStringkey in的值Info.plist.xml

我的第一个问题是,libgdx 是否提供了一种独立于平台的方法来获取应用程序版本?(我找不到任何)

如果没有,我找到了在 Android 上获取应用程序版本的答案,那没关系。为 IOS找到了相同的答案,但以本机方式。我如何使用 robovm 后端做同样的事情?

java android ios libgdx robovm

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

Reflection.Emit如何分配不兼容的类型?

我有两个简单的课程.

public class A { }
public class B { }
Run Code Online (Sandbox Code Playgroud)

C像下面一样构建和实例化类.

var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("Some.Namespace"), AssemblyBuilderAccess.Run);
var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyBuilder.GetName().Name);

// public class C
var typeBuilder = moduleBuilder.DefineType("C", TypeAttributes.Public | TypeAttributes.Class, typeof(object));

// public A A;
var aField = typeBuilder.DefineField("A", typeof(A), FieldAttributes.Public);

// public C() { this.A = new B(); } !!!!
var ctorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.HasThis, Type.EmptyTypes);
var ctorIL = ctorBuilder.GetILGenerator();
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Newobj, typeof(B).GetConstructor(Type.EmptyTypes));
ctorIL.Emit(OpCodes.Stfld, aField);
ctorIL.Emit(OpCodes.Ret);

// return new C();
var type = typeBuilder.CreateType(); …
Run Code Online (Sandbox Code Playgroud)

c# reflection reflection.emit

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

在运行时创建数组类型

我想在运行时获得一个类型的"数组类型".我不需要数组的实例,只需要Type.我目前使用以下方法.

    private Type GetArrayType(Type elementType)
    {
        return Array.CreateInstance(elementType, 0).GetType();
    }
Run Code Online (Sandbox Code Playgroud)

没有创建数组实例有没有更好的解决方案?

注意:我无法使用,Type.GetType(elementType.FullName + "[]")因为我在运行时创建了元素类型Reflection.Emit.根据MSDN,它需要将动态组件保存在磁盘上,我不想这样做.

c# arrays reflection types reflection.emit

4
推荐指数
1
解决办法
1372
查看次数

SQL Server按脚本管理列描述

有没有办法通过脚本更改/更新和删除/删除列描述?

sp_addextendedproperty用来添加描述,但它不允许更新.当我尝试使用相同的sp来更新现有的描述值时,它会说"描述属性已经存在"

改变或删除/创建类似的解决方案对我来说都是好的.

在有用的答案和评论之后,您可以在下面看到我的最终解决方案 可以帮助别人.

create procedure sp_set_column_description (
    @schema varchar(256),
    @table varchar(256),
    @column varchar(256),
    @description varchar(256))
    as
begin
    if exists (
        select p.* 
        from
            sys.extended_properties p, 
            sys.columns c, 
            sys.tables t, 
            sys.schemas s
        where
            t.schema_id = s.schema_id and
            c.object_id = t.object_id and
            p.major_id = t.object_id and
            p.minor_id = c.column_id and
            p.name = N'MS_Description' and 
            s.name = @schema and
            t.name = @table and
            c.name = @column
    )
        exec sys.sp_updateextendedproperty 
            @level0type=N'SCHEMA', @level0name=@schema,
            @level1type=N'TABLE', @level1name=@table,
            @level2type=N'COLUMN', @level2name=@column,
            @name=N'MS_Description', @value=@description
    else …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

为什么这个Cypher查询需要花费太多时间?

我有

  • 50K Post节点
  • 40K标记节点
  • 125K TAGGED关系(意味着每个帖子平均2,5个标签)

在我的图形和下面的查询中导致"Java堆空间"错误.

match (p1:Post)-[r1:TAGGED]->(t:Tag)<-[r2:TAGGED]-(p2:Post)
return p1.Title, count(r1), p2.Title, count(r2)
limit 10
Run Code Online (Sandbox Code Playgroud)

根据共享标签的数量,我期望的是一些重复的行.我不确定如何limit工作(在前10个帖子或标签后停止).但是,因为我limit 10没有想到这个查询遍历所有图形.看起来确实如此.

更新1

通过一些更改,Christophe Willemsen的查询在15秒内返回10行.

// I need label for the otherPost because Users are also TAGGED
MATCH (post:Post)-[:TAGGED]->(t)<-[:TAGGED]-(otherPost:Post) 
RETURN post.Title, count(t) as cnt, otherPost.Title
// ORDER BY cnt DESC // for now I do not need this
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我认为"ORDER BY"子句可能会导致遍历所有可能的路径,因此我删除了该子句但它仍然是15秒.这也是15秒.当我在没有排序的情况下使限值1或1000.

我对Neo4j的期望是:"从任何Post节点开始,然后跳转到其标签,找到标记有相同标签的其他邮件.当有10个发现停止遍历并返回结果时." 我很确定它没有这样做.

为了明确我的期望,假设图表很小,我们Limit 3在cypher查询中使用.

p1 - [t1, t2, t3] // Post1 is tagged with …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

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

为什么String.endsWith和String.startWith不一致?

我有以下测试用例,只有第一个断言通过.为什么?

@Test
public void test() {
    String i1 = "i";
    String i2 = "?".toLowerCase();

    System.out.println((int)i1.charAt(0)); // 105
    System.out.println((int)i2.charAt(0)); // 105

    assertTrue(i2.startsWith(i1));

    assertTrue(i2.endsWith(i1));
    assertTrue(i1.endsWith(i2));
    assertTrue(i1.startsWith(i2));
}
Run Code Online (Sandbox Code Playgroud)

回复后更新

我正在尝试使用startsWithendsWith以不区分大小写的方式使得下面的表达式应该返回true.

"AL?".toLowerCase().endsWith("i");
Run Code Online (Sandbox Code Playgroud)

我想C#Java有所不同.

java string locale character-encoding

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

在Entity Framework中保存实体的通用方法

我正在尝试编写一个GenericEFRepository,它将被其他存储库使用.我有一个Save方法如下.

public virtual void Save(T entity) // where T : class, IEntity, new() And IEntity enforces long Id { get; set; }
{
    var entry = _dbContext.Entry(entity);

    if (entry.State != EntityState.Detached)
        return; // context already knows about entity, don't do anything

    if (entity.Id < 1)
    {
        _dbSet.Add(entity);
        return;
    }

    var attachedEntity = _dbSet.Local.SingleOrDefault(e => e.Id == entity.Id);
    if (attachedEntity != null)
        _dbContext.Entry(attachedEntity).State = EntityState.Detached;
    entry.State = EntityState.Modified;
}
Run Code Online (Sandbox Code Playgroud)

您可以在以下代码的评论中找到问题

 using (var uow = ObjectFactory.GetInstance<IUnitOfWork>()) // uow is implemented like EFUnitOfWork …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework repository-pattern

2
推荐指数
1
解决办法
7235
查看次数

'foreach循环中使用未分配的局部变量'错误,产量返回

下面的方法编译很好.

string DoSomething(int x) {
    string s;
    if(x < 0)
        s = "-";
    else if(x > 0)
        s = "+";
    else
        return "0";

    return DoAnotherThing(s);
}
Run Code Online (Sandbox Code Playgroud)

但是当我在foreach循环中编写相同的代码并使用yield return而不是return我得到Use of unassigned local variable 's'编译错误.

// Causes compile error
IEnumerable<string> DoSomethingWithList(IEnumerable<int> xList) {
    foreach(var x in xList) {
        string s;

        if(x < 0)
            s = "-";
        else if(x > 0)
            s = "+";
        else
            yield return "0";

        // COMPILE ERROR: Use of unassigned local …
Run Code Online (Sandbox Code Playgroud)

c# yield-return

2
推荐指数
1
解决办法
870
查看次数