小编Beg*_*moT的帖子

在1.7中的javax.sql.CommonDataSource中添加了新方法

尝试针对java 1.7编译我的应用程序我发现在javax.sql.CommonDataSource中添加了一个新方法(在jsDataSource中也是如此) - .getParentLogger().您可以将CommonDataSource:1.7CommonDataSource进行比较:1.6

对我来说,这种变化肯定会破坏向后兼容 例如,我的应用程序(包含DataSource的实现)甚至不会在没有代码更改的情况下针对1.7进行编译.

根据我的观点,这应该是非常有力的理由 - 但我不能google甚至一个.有人可以解释这种变化背后的原因吗?应该如何处理它 - 对我而言,这是我第一次遇到与java的向后不兼容,所以我这里没有任何"最佳实践"......

java datasource

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

AtomicXXX.lazySet(...)在边缘之前发生

AtomicXXX.lazySet(value)方法在大多数JMM推理中使用的前沿边缘是什么意思?javadocs是纯粹的,Sun bug 6275329声明:

语义是保证写入不会与任何先前的写入重新排序,但可以与后续操作重新排序(或者等效地,可能对其他线程不可见),直到发生一些其他易失性写入或同步动作).

但这不是关于HB边缘的推理,所以它让我感到困惑.这是否意味着什么lazySet()语义不能用HB边缘表示?

更新:我会尝试将我的问题具体化.我可以在以下场景中使用普通的volatile字段:

//thread 1: producer
...fill some data structure
myVolatileFlag = 1;

//thread 2: consumer
while(myVolatileFlag!=1){
   //spin-wait
}
...use data structure...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在消费者中使用"数据结构"是正确的,因为易失性标志写入读取使得HB边缘,从而保证生产者对"数据结构"的所有写入都将完成,并且消费者可以看到.但是如果我在这种情况下使用AtomicInteger.lazySet/get而不是volatile写/读怎么办?

//thread 1: producer
...fill some data structure
myAtomicFlag.lazySet(1);

//thread 2: consumer
while(myAtomicFlag.get()!=1){
   //spin-wait
}
...use data structure...
Run Code Online (Sandbox Code Playgroud)

它仍然是正确的吗?消费者线程中的"数据结构"值可见性真的可以吗?

它不是"来自空中"的问题 - 我在LMAX Disruptor代码中看到了这种方法正好在这种情况下,我不明白如何证明它是正确的......

java concurrency atomic

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

如何始终显示内嵌图像?

我正在尝试使用内嵌图像(例如通过 gnuplot 绘制数据),但遇到了问题:默认情况下,图像始终作为链接插入。我需要做一些按键来“强制”emacs 显示实际图像内联,而不仅仅是文件链接。

例如,我从 gnuplot 代码开始:

#+BEGIN_SRC gnuplot :file plot.png
plot sin(x)
#+END_SRC
Run Code Online (Sandbox Code Playgroud)

当我按下C-c C-c此代码块时,它会运行,并将结果显示为图像文件的链接:

#+RESULTS:
[[file:plot.png]]
Run Code Online (Sandbox Code Playgroud)
  • 如果我按C-c C-x C-v(org-toggle-inline-images) 两次 - 链接确实替换为内联图像
  • 如果我M-x org-redisplay-inline-images再次运行- 链接确实替换为图像
  • 如果我(org-display-inline-images t t)再次运行- 会显示图像

等等(这些选项取自Emacs org-display-inline-imagesInline images in org-mode questions)

但我不想按任何特别的东西:我希望图像默认内联显示。我发现并尝试了以下变量:

  • (setq org-startup-with-inline-images t).emacs配置中
  • #+STARTUP: inlineimages 标题
  • (setq org-display-inline-images t)

但两者都没有让我得到我想要的行为。我很困惑——我想要这么不自然的东西吗?

PS Im' 在 MacOS X 上使用 GNU Emacs v26.1,组织模式 v9.1.9-65,如果重要的话

PPS 虽然它看起来像是我的 emacs/orgmode 版本中的一个错误,我还没有报告它,但同时我发现了以下技巧:( …

emacs image org-mode

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

IDEA运行/调试配置中的系统属性的空值

我希望IntellJ IDEA中的"运行"配置具有预定义的一些Java系统属性(普通且简单的任务).但由于某些原因,我需要设置一些属性来清空字符串 - 这在IDEA中并不那么容易:

-Dmy-property=abd
-Dmy-property2=
-Dmy-property3=afd
Run Code Online (Sandbox Code Playgroud)

如果我在"系统属性"输入中输入它,它将被转换为

-Dmy-property=abd
-Dmy-property2=-Dmy-property3=afd
Run Code Online (Sandbox Code Playgroud)

IDEA删除了"未使用"的空格.这是不可取的.目前我只能通过将空属性移动到列表的末尾来解决这个问题.有没有其他方法可以输入emtpy属性值?

intellij-idea

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

标签 统计

java ×2

atomic ×1

concurrency ×1

datasource ×1

emacs ×1

image ×1

intellij-idea ×1

org-mode ×1