小编Xåp*_* -的帖子

为什么更高像素密度的设备具有更少的屏幕空间?(Eclipse AVD)

在Eclipse的AVD中,我创建了两个除密度值之外相同的设备.装置1具有abstracted LCD density240; 设备2具有160.两者的分辨率为480x800.

有人可以向我解释为什么设备1屏幕上的元素看起来"更大"吗?由于它们具有相同的分辨率,它们不应该显示相同数量的像素吗?如果有的话,因为设备1具有更高的密度,不应该显示更多的细节/屏幕空间?

设备1

Device_1_Screenshot

设备2

Device_2_Screenshot

Screeshots - (点击查看大图)

如上所示,我在两个设备上的随机屏幕位置绘制一个半径为15dp的圆.设备2上的圆圈肯定更小,操作栏也是如此.为什么是这样?

android resolution dpi pixels android-virtual-device

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

值比较和值赋值之间是否存在性能差异?

请考虑以下两个代码示例:

例1.

public void setValue(int value)
{
    mValue = value;
}
Run Code Online (Sandbox Code Playgroud)

例2.

public void setValue(int value)
{
    if (mValue != value)
    {
        mValue = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

假装您的任务是将一些Java代码优化到绝对最大值,超出所有常识.

第二个代码示例是第一个的优化吗?我的意思是,在最低级别的Java或JVM中if条件检查和int赋值之间是否存在任何差异(无论多么微小)?

java optimization performance jvm atomic

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

在类中嵌套自定义异常类?(蟒蛇)

我想在我自己的类中嵌套一个Exception子类,如下所示:

class Foo(object):

    def bar(self):
        #does something that raises MyException

    class MyException(Exception):
        pass
Run Code Online (Sandbox Code Playgroud)

这样,我只需要从另一个模块调用bar()时导入Foo(而不是MyException).但是我在下面的内容不起作用:

from foo_module import Foo

foo = Foo()

try:
    foo.bar()
except Foo.MyException as e:
    print e
Run Code Online (Sandbox Code Playgroud)

Python给出了这个错误:

类型对象'Foo'没有属性'MyException'

有没有办法做到这一点?

python scope nested class nested-class

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

Java中的多个对象锁?

锁定私有字段变量(而不是使用锁定对象)是安全/可接受的做法吗?这样,我可以有不同的锁用于不同的目的.示例如下:

class Test {
  private Integer x = 0;
  private Integer y = 0;

  public void incrementX() {
    synchronized(x) {
      x++;
    }
  }

  public void decrementX() {
    synchronized(x) {
      x++;
    }
  }

  public void incrementY() {
    synchronized(y) {
      y++;
    }
  }

  public void decrementY() {
    synchronized(y) {
      y++;
    }
  }
Run Code Online (Sandbox Code Playgroud)

或者我应该为每个想要锁定的私人会员拥有一个锁定对象?例:

class Test {
  private final Object xLock = new Object();
  private final Object yLock = new Object();
  private Integer x = 0;
  private Integer y = 0;

...

} …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading locking synchronized

3
推荐指数
2
解决办法
3074
查看次数

对象锁定私有类成员 - 最佳实践?(JAVA)

前几天我问了一个类似的问题,但对回复不满意,主要是因为我提供的代码有一些人们关注的问题.

基本上,在Java中锁定私有成员的最佳做法是什么?假设每个私有字段只能单独操作而不能一起操作(比如下面我的Test类示例),你应该直接锁定每个私有字段(例1),还是应该使用每个私有字段的一般锁定对象来锁定(例2)?

示例1:直接锁定私有字段

class Test {
  private final List<Object> xList = new ArrayList<Object>();
  private final List<Object> yList = new ArrayList<Object>();

  /* xList methods */ 

  public void addToX(Object o) {
    synchronized(xList) {
      xList.add(o);
    }
  }

  public void removeFromX(Object o) {
    synchronized(xList) {
      xList.remove(o);
    }
  }

  /* yList methods */ 

  public void addToY(Object o) {
    synchronized(yList) {
      yList.add(o);
    }
  }

  public void removeFromY(Object o) {
    synchronized(yList) {
      yList.remove(o);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

示例2:每个私有字段使用锁定对象

class Test {
  private final Object xLock = …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading deadlock locking

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

有什么方法可以绑定事件处理程序并同时调用它吗?

我有一些代码如下:

var f = function() {...};

$(window).resize(f);

f();
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我希望f每次调整窗口大小时f都会调用它,并且在将其设置为resize事件处理程序之后也要调用一次.

有什么方法可以让这段代码更短/更简洁吗?理想情况下,我想消除f变量的需要,只是让它成为一个匿名函数(即$(window).resize(function() {...}),但我需要一些方法来调用函数一次...

javascript jquery

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

三个JS从matrixWorld获得(世界)轮换

如何在three.js中获取Object3D的世界轮换?我知道如何从中获取Object3D的世界位置object.matrixWorld,但是如何获得对象的世界旋转?

我需要这个以解决以下问题:我有一个像这样的分层对象结构:

var obj1 = new THREE.Object3D();
obj1.x = 200;
obj1.rotation.x = 0.1;
scene.add(obj1);

var obj2 = new THREE.Object3D();
obj2.y = -400;
obj2.rotation.y = 0.21;
obj1.add(obj2);

var obj3 = new THREE.Object3D();
obj3.z = -200;
obj3.rotation.x = 0.1;
obj3.rotation.y = -0.1;
obj2.add(obj3);
Run Code Online (Sandbox Code Playgroud)

现在我想让我的相机在一定距离内正确地观察obj3.当我的对象不旋转时,其工作方式如下:

var relativeCameraOffset = new THREE.Vector3(0, 0, 500); // 500 is z-distance from my object
var cameraOffset = relativeCameraOffset.applyMatrix4(obj3.matrixWorld);
camera.position = cameraOffset;
Run Code Online (Sandbox Code Playgroud)

当我的最后一个孩子被旋转时,我得到了我想要的东西,当我添加这一行

camera.rotation = obj3.rotation;
Run Code Online (Sandbox Code Playgroud)

但是当旋转所有父元素时,这不起作用.所以我正在寻找一种方法让我的3D对象的世界"方向".谢谢.

javascript position rotation three.js

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

如何为传递给gulp.src的globs添加路径前缀?

考虑以下两个文件:

config.json

{
  "vendorFiles": [
    "vendor/angular/angular.js",
    "vendor/angular-ui-router/release/angular-ui-router.js",
    "vendor/angular-ui-utils/modules/utils.js"
  ]
}
Run Code Online (Sandbox Code Playgroud)

gulpfile.js

var gulp = require("gulp"),
    concat = require("gulp-concat"),
    config = require("./config");

gulp.task("build-vendor", function() {
    gulp.src(config.vendorFiles)
        .pipe(concat("vendor.js"))
        .pipe(gulp.dest("build"));
});
Run Code Online (Sandbox Code Playgroud)

如何消除vendor/为config.json中的每个文件指定的需要?该文件是由其他开发人员手动编辑的文件,因此我希望尽可能轻松地对其进行编辑.

理想情况下,我希望我的gulpfile.js负责添加该前缀(不知何故),并且我的config.json看起来像这样:

{
  "vendorFiles": [
    "angular/angular.js",
    "angular-ui-router/release/angular-ui-router.js",
    "angular-ui-utils/modules/utils.js"
  ]
}
Run Code Online (Sandbox Code Playgroud)

javascript json glob node.js gulp

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

URL"以"开头"使用正则表达式?

说我有以下网址:

http://example.com/api

如何创建一个匹配任何上面的url段开头的 url的正则表达式?

例如:

http://example.com/api/auth(应该匹配)

http://example.com/api/orders(应该匹配)

http://example.com/api/products(应该匹配)

http://example.com/auth(不应该匹配)

http://examples.com/api/auth(不应该匹配)

https://example.com/api/auth(不应该匹配)

是的,显然我可以打电话string.indexOf(url) == 0来做一个"开始"检查,但我特别需要一个正则表达式,因为我必须提供一个到第三方库.

javascript regex string contains startswith

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

将数组参数类型映射到数组返回类型?

我有一个枚举来描述“字段”,以及每个字段到类型的映射:

enum Field {
  Id,
  Position,
  Name,
  Enabled,
}

interface FieldTypes extends Record<Field, any> {
  [Field.Id]: number;
  [Field.Position]: number;
  [Field.Name]: string;
  [Field.Enabled]: boolean;
}
Run Code Online (Sandbox Code Playgroud)

我编写了一个函数来从某些字段中提取给定的字段data(我在这里将其定义为unknown类型,因为它对于这个问题并不重要):

declare function getField<F extends Field>(
  data: unknown,
  field: F
): FieldTypes[F];

const position: number = getField({}, Field.Position);
const name: string = getField({}, Field.Name);
Run Code Online (Sandbox Code Playgroud)

这编译没有错误。getField确实返回一个numberforposition和一个stringfor name

现在我想编写一个按顺序getFields提取多个字段的函数data,但我很难定义它。我期望它的工作方式如下:

const fields: [boolean, number, number] = getFields({}, [
  Field.Enabled,
  Field.Id, …
Run Code Online (Sandbox Code Playgroud)

typescript

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