小编phi*_*ilo的帖子

Dagger @Reusable范围vs @Singleton

用户指南:

有时您希望限制实例化@Inject构造的类或调用@Provides方法的次数,但您不需要保证在任何特定组件或子组件的生命周期中使用完全相同的实例.

我为什么要用它而不是@Singleton

dependency-injection dagger-2

38
推荐指数
1
解决办法
7640
查看次数

python线程:内存模型和可见性

python线程是否像Java那样暴露了内存可见性和语句重新排序的问题?由于我找不到任何对"Python内存模型"或类似内容的引用,尽管很多人都在编写多线程Python代码,但我猜这些问题在这里并不存在.例如,没有volatile关键字.但似乎没有明确说明任何地方,例如,一个线程中的变量的更改立即对所有其他线程可见.

也许这些东西对于Python程序员来说都是非常明显的,但作为一个可怕的Java程序员,我需要一点额外的保证:)

python multithreading memory-model

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

试图了解<select>元素上的点击事件

当在select元素上注册click事件处理程序时,我发现跨浏览器的行为非常不一致.我设置了一个jsfiddle演示.这是我看到的:

  • OS X上的Firefox 12(10.7 Lion):单击元素时会触发事件.下拉菜单暂时打开,不会保持打开状态.键盘操作不会生成单击操作.
  • Linux上的Firefox 12(Ubuntu Lucid):同样的
  • OS X上的Chome 19:没有鼠标或键盘交互触发click事件.
  • Linux上的Chrome 19:首先单击鼠标选项,然后单击仍然存在的选项或选项,触发单击事件.
  • OS X上的Safari 5.1.6:与Linux上的Chrome类似,首先点击展开选项,然后点击选项触发点击事件(与Chrome不同,Safari会在显示选项时隐藏选择元素).
  • Android浏览器(在冰淇淋三明治上):初始点击触发事件.事件后选项保持可见,可以单击.单击选项不会触发另一个事件.
  • 适用于Android的Chrome测试版(冰淇淋三明治):与Android浏览器相同.

如果有人能告诉我或指出我的标准,我会很高兴,但我想这并不是那么有用,因为我直接观察到没有人跟随它.我怀疑的是,这是一个不常见的尝试,也许更常见的是听取改变事件.真的吗?听点击选项怎么样?我无法让它工作,但它可能是一个愚蠢的错误.

(为了给出更多的上下文,我正在替换基于Google Closure构建的select元素,goog.ui.Select因为该组件很好地模仿了一些桌面select渲染,尤其是Chrome,但无法对移动浏览器上看到的扩展选项进行全屏渲染并且该应用程序之前已经收听了该组件的goog.ui.Component.EventType.ACTION事件,该事件在任何地方都没有明确的模拟,所以我只是想找到一致的替代品.)

javascript dom cross-browser

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

java:为什么不允许这个转义构造函数?

在JCIP的第3.2.1节"安全构造函数实践"中,有一个警告,防止this从构造函数泄漏到另一个线程,"即使发布是构造函数中的最后一个语句." 最后一部分对我来说似乎太强大了,并没有任何理由.施工后发生了什么,我必须小心避免?有例外吗?我很感兴趣,因为我最近提交了一些代码,其中我做了这件事,我想决定是否有理由重新审视和重构.

java concurrency

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

在Mac OS X上的showkey是否等效?

我正在调试Mac上的emacs键盘绑定(如果有好奇,可以使用C- /撤消),并且在EmacsWiki上遇到了一条建议,我可以使用“ showkey”查找扫描代码。但这看起来只像GNU / Linux一样。在MacPorts上找不到它。任何人都知道替代品或我缺少的东西吗?

macos emacs terminal macports

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

java.util.Map.put(key,value) - 如果value等于现有值,该怎么办?

从规范:"如果地图以前包含键的映射,旧值将替换为指定的值." 我想知道value.equals(旧值)但值!=旧值的情况.我对规范的解读是旧的价值仍然必须被替换.是对的吗?

java collections map

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

脚本捕获EXIT时docker挂在SIGINT上

当我在Docker容器中运行脚本并且脚本捕获EXIT并发送Ctrl+时C,Docker无法停止容器。

Docker文件

FROM alpine
RUN apk add --no-cache bash
COPY script.sh /
CMD ./script.sh
Run Code Online (Sandbox Code Playgroud)

script.sh

#!/bin/bash
func() {
  echo "exit script"
}
trap func EXIT
echo "script"
sleep 30
Run Code Online (Sandbox Code Playgroud)

跑步

$ docker build -t traps .
$ docker run -it traps
Run Code Online (Sandbox Code Playgroud)

看到“脚本”回显后,按Ctrl+ C

预期:打印“退出脚本”,然后容器退出,将控制权返回到我的终端,就像没有退出陷阱一样。

实际:已打印“退出脚本”,但容器仍在运行并保持在我的终端上。

使问题复杂化的是,如果添加SIGINT陷阱,事情将完全按照我的预期进行。命中Ctrl+时C,将首先触发SIGINT陷阱,然后触发EXIT陷阱,然后退出容器。

这是怎么回事?还有什么方法可以使工作正常而无需添加虚拟SIGINT陷阱?

(首先使用的原因-t是启用Ctrl+ C。)

bash docker

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

AppRun 文件格式?

我正在创建一个 AppImage,遵循项目 Wiki 中的创建 AppImages 。我应该创建一个 AppRun 文件,但我没有看到任何有关该文件格式或如何创建它的文档。我的项目是一个 Python 应用程序,而 apt-appdir 不是一个选项,因为这是我团队的软件,在任何存储库中都不可用。

appimage

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

使用bash的$(())运算符进行算术运算时出现意外的变量更新

我正在尝试从文件中修剪几行.我确切地知道要移除多少行(比如从顶部开始的2行),但不知道文件中有多少行.所以我尝试了这个直截了当的解决方案:

$ wc -l $FILENAME
119559 my_filename.txt
$ LINES=$(wc -l $FILENAME | awk '{print $1}')
$ tail -n $(($LINES - 2)) $FILENAME > $OUTPUT_FILE
Run Code Online (Sandbox Code Playgroud)

输出很好,但LINES发生了什么?

$ wc -l $OUTPUT_FILE
119557 my_output_file.txt
$ echo $LINES
107
Run Code Online (Sandbox Code Playgroud)

希望有人能帮我理解发生了什么.

bash shell environment-variables

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