小编mor*_*s05的帖子

什么是CoroutineScope背后的概念?

在阅读了CoroutineScope的介绍和javadoc后,我仍然有点混淆了背后的想法CoroutineScope是什么.

文档的第一句"定义新协程的范围".我不清楚:为什么我的协同程序需要一个范围?

另外,为什么单独的协同构建器被弃用?为什么这样做更好:

fun CoroutineScope.produceSquares(): ReceiveChannel<Int> = produce {
    for (x in 1..5) send(x * x)
}
Run Code Online (Sandbox Code Playgroud)

代替

fun produceSquares(): ReceiveChannel<Int> = produce { //no longer an extension function
    for (x in 1..5) send(x * x)
}
Run Code Online (Sandbox Code Playgroud)

kotlin kotlinx.coroutines

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

Java 7 - > Java 8:AES导致异常:"BadPaddingException:给定最终块未正确填充"与BufferedReader和ZipStreams一起使用

我们使用以下语句实例化密码:

Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec key = new SecretKeySpec(cipherKey, "AES");
Run Code Online (Sandbox Code Playgroud)

这适用于java 7(1.7_45),但不再适用于Java 8(1.8_25).我们传递cipher给a CipherInputStream并使用流来读/写数据.实际的异常发生在close.

编辑:

快速浏览一下JDK代码就会发现BadPaddingException被重新抛出,并且在7中它被忽略了:

JDK 7:CipherInputStream.close:

 try {
  this.cipher.doFinal();
} catch (BadPaddingException var2) {
  ;
} catch (IllegalBlockSizeException var3) {
  ;
}
Run Code Online (Sandbox Code Playgroud)

JDK 8:CipherInputStream.close:

try {
    if(!this.done) {
      this.cipher.doFinal();
    }
  } catch (IllegalBlockSizeException | BadPaddingException var2) {
    if(this.read) {
      throw new IOException(var2);
    }
  }
Run Code Online (Sandbox Code Playgroud)

问题是如何首先避免BadPaddingException?

编辑2:

在做了一些研究和实验后,我们进入了以下测试程序:

public final class CipherSpike2 {

  private static final byte[] SECRET_KEY = new byte[]{1, 2, 3, …
Run Code Online (Sandbox Code Playgroud)

java encryption aes java-8

9
推荐指数
2
解决办法
4652
查看次数

我什么时候必须将两种颜色相加?

我已经实现了一个具有以下属性的简单着色器: - 材质(环境,漫反射和高光) - 定义对象颜色的基色 - 浅色

片段着色器:(vColor是对象的基色)

  vec3 lightDir = normalize(vec3($uLightPos.xyz - vPosInEye.xyz));
  vec3 viewerPos = normalize(vec3(-vPosInEye.xyz));
  vec3 specularReflection = normalize(-reflect(lightDir, vNormal));

  float diffFactor = max(dot(vNormal, lightDir), 0.0);
  vec4 Id = $uIdColor * diffFactor * vColor ;
  vec4 Ia = $uIaColor * vColor;
  vec4 Is = clamp($uIsColor * pow(max(dot(specularReflection, viewerPos), 0.0), $uIsShininess), 0.0, 1.0);

  gl_FragColor = (Id + Ia + Is) + $uLightColor;
Run Code Online (Sandbox Code Playgroud)

如您所见,我将材质的环境颜色乘以对象的基色.这似乎是正确的,因为我想将这些颜色混合在一起.

在"Open GL ES 2.0编程指南"一书中,这是以相同的方式实现的.在最后一行,我添加了灯光的颜色.
我试图先增加颜色然后我得到奇怪的结果:黄色*蓝色导致黑色(这是明确的,因为黄色是(1.0,1.0,0)和蓝色(0.0,0.0,1.0)所以我用+替换*这似乎产生了正确的颜色(白色).

所以我的问题是:当我必须将两种颜色相乘以及何时添加它们时,是否有经验法则?

opengl shader lighting

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

JCombobox禁用项目选择(make readboly)

我想创建一个只读组合框.用户不应该从弹出列表中选择另一个项目.这意味着弹出列表不应该打开或应该为空.

我看到以下解决方案:

  • 设置仅包含一个项目(当前所选项目)的ComboBox模型,因此当用户单击箭头按钮时,将显示一个空列表.

  • 添加一个PopupMenuListenerpopupMenuWillBecomeVisible隐藏菜单.这是有问题的:我们必须combo.hidePopup();从内部打电话SwingUtilities.invokeLater()

空模型方法看起来有点笨重.第二种方法显示弹出列表只有几分之一秒,足够短以至于被注意到.这非常难看.

有第三种解决方案吗?

编辑:已实施的解决方案:

我从splungebob实现了建议的方法,这是我的代码供将来参考:

private void makeComboReadonly() {
  Component editorComponent = box.getEditor().getEditorComponent();
  if (editorComponent instanceof JTextField) {
    ((JTextField) editorComponent).setEditable(false);
  }

  for (Component childComponent : box.getComponents()) {
    if (childComponent instanceof AbstractButton) {
      childComponent.setEnabled(false);
      final MouseListener[] listeners = childComponent.getListeners(MouseListener.class);
      for (MouseListener listener : listeners) {
        childComponent.removeMouseListener(listener);
      }
    }
  }

  final MouseListener[] mouseListeners = box.getListeners(MouseListener.class);
  for (MouseListener listener : mouseListeners) {
    box.removeMouseListener(listener);
  }

  final KeyListener[] keyListeners = box.getListeners(KeyListener.class);
  for (KeyListener …
Run Code Online (Sandbox Code Playgroud)

java swing selection jcombobox

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

Kotlin maven插件编译顺序

我有一个关于kotlin-maven插件的问题:如何确定编译顺序?我的意思是:kotlin编译器必须先来吗?它能理解java代码吗?java编译器不理解kotlin代码,所以我猜它会检查字节代码,但为此,必须存在kotlin的字节码,因此有人必须确定kotline编译器必须在javac之前编译其代码.

示例:我有依赖于Kotlin B类的Java A类,B也依赖于A.

我是否必须在maven插件中通过在java maven编译器之前声明它来手动执行某些操作?

maven kotlin

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

移动 Chrome:使用“高度”属性时“字体大小”错误

通过在父容器 'foo' 上设置 css 'height' 属性,计算出的内部元素的 'font-size' 会发生错误的变化。这只发生在 Chrome 移动设备上。

要对此进行测试,请尝试在 Chrome 下运行以下代码并在开发者控制台中选择任何移动设备:

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Test</title>
    <style>

        .foo {
            height: 600px;
            color: white;
            background: teal;
        }
    </style>
</head>
<body>
        <section>
            <h2>Header in first section</h2>
            <p>Text with a normal size. Text with a normal size.</p>
        </section>
        <section class="foo">
            <h2>Header in second section</h2>
            <p>This text changes size when commenting out 'foo's height property in the Chrome developer console and mobile mode (e.g Galaxy S5) - but why?</p>
        </section>
</body> …
Run Code Online (Sandbox Code Playgroud)

css mobile google-chrome

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

libgdx桌面记录到文件

我想在我的程序的桌面版本中将异常记录到文件中.为此,我在main-Method中注册了一个uncaughtExceptionHandler.但是现在应该将异常记录到文件中 - 这是可能的还是我必须更改System.out?这有效吗?

java libgdx

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

Intellij结构替换更改方法签名

我想用某个签名更改方法:

public OldReturnType get.*(Params) {
  //lots of code
}
Run Code Online (Sandbox Code Playgroud)

对此:

public NewReturnTyp get.*(Params) {
  //lots of code
}
Run Code Online (Sandbox Code Playgroud)

- >我想替换返回类型.我用SSR试过这个:

  • 复制现有模板"类的方法".这会产生模板:

    class $ Class $ {$ ReturnType $ $ MethodName $($ ParameterType $ $ Parameter $); }

我首先尝试分别替换$ ReturnType $ OldType和NewType:

搜索模板:

class $Class$ { 
  OldType $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

替换模板:

class $Class$ { 
  NewType $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

这给了我所有的方法,但如果我替换它,该方法将被删除.

然后我尝试通过以下方式更改模式:

搜索模板:

class $Class$ { 
  $OldType$ $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

并且指定$ OldType $应该是搜索的目标.我还为此变量指定了一个RegEx模式:OldType.

替换模板:

class $Class$ { 
  NewType $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

这也找到了所有方法,但是如果我替换它们就会被删除.我尝试了非常不同,总是有相同的结果:如果我替换匹配,该方法将被删除.如何指定搜索/替换模板以在签名中将OldType替换为NewType.

intellij-idea structural-search

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

对象成员的位置

可能重复:
数据成员是否与C++中的对象分配在相同的内存空间中?

如果我声明一个这样的对象:

void main() {
  MyClass class;
}
Run Code Online (Sandbox Code Playgroud)

它将在堆栈上自动创建.

如果我这样做会发生什么:

class MySecondClass {
  private:
    MyClass class;
}
Run Code Online (Sandbox Code Playgroud)

会员是否会在堆栈上创建?如果是这样,如果MySecondClass是通过创建会发生什么new?这个成员还会在堆叠中吗?

c++

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