小编Ale*_*lev的帖子

配置休眠(使用JPA)来存储类型为布尔值而不是0/1的Y/N.

我可以将JPA/hibernate设置为持久化Boolean类型Y/N吗?在数据库中(列定义为varchar2(1).它当前将它们存储为0/1.数据库是Oracle.

java hibernate jpa

76
推荐指数
4
解决办法
10万
查看次数

Java 8 Unsafe:xxxFence()指令

在Java 8中,三个内存屏障指令被添加到Unsafe类():

/**
 * Ensures lack of reordering of loads before the fence
 * with loads or stores after the fence.
 */
void loadFence();

/**
 * Ensures lack of reordering of stores before the fence
 * with loads or stores after the fence.
 */
void storeFence();

/**
 * Ensures lack of reordering of loads or stores before the fence
 * with loads or stores after the fence.
 */
void fullFence();
Run Code Online (Sandbox Code Playgroud)

如果我们用以下方式定义内存屏障(我认为或多或少容易理解):

考虑X和Y是要重新排序的操作类型/类,

X_YFence() 是一个内存屏障指令,它确保在屏障启动之后,在屏障完成任何操作之前,屏障之前的所有类型X操作都已完成.

我们现在可以将障碍名称"映射" Unsafe …

java concurrency unsafe memory-fences java-8

45
推荐指数
3
解决办法
5720
查看次数

Java中的内存屏障行为

在阅读了更多的博客/文章等之后,我现在对内存屏障之前/之后的加载/存储行为感到困惑.

以下是Doug Lea在他关于JMM的一篇澄清文章中的两个引用,它们都非常简单:

  1. 线程A在写入易失性字段f时可见的任何内容在读取f时都会对线程B可见.
  2. 请注意,两个线程都必须访问相同的volatile变量才能正确设置before-before关系.情况并非如此,线程A在写入易失性字段f时可见的所有内容在读取易失性字段g后变为线程B可见.

但是当我查看另一篇关于内存障碍的博客时,我得到了这些:

  1. 商店屏障,x86上的"sfence"指令强制屏障之前的所有存储指令发生在屏障之前,并将存储缓冲区刷新到缓存以供发布它的CPU.
  2. 负载屏障,在x86"lfence"指令,强制所有加载指令之后的阻隔后发生障碍,然后等待负载缓冲区对于CPU流失.

对我来说,Doug Lea的澄清比另一个更严格:基本上,这意味着如果负载屏障和存储屏障位于不同的监视器上,则无法保证数据的一致性.但后者意味着即使屏障位于不同的监视器上,数据的一致性也会得到保证.我不确定我是否正确理解这两个,而且我不确定它们中的哪一个是正确的.

考虑以下代码:

  public class MemoryBarrier {
    volatile int i = 1, j = 2;
    int x;

    public void write() {
      x = 14; //W01
      i = 3;  //W02
    }

    public void read1() {
      if (i == 3) {  //R11
        if (x == 14) //R12
          System.out.println("Foo");
        else
          System.out.println("Bar");
      }
    }

    public void read2() {
      if (j == 2) {  //R21
        if (x == 14) //R22
          System.out.println("Foo");
        else
          System.out.println("Bar"); …
Run Code Online (Sandbox Code Playgroud)

java multithreading java-memory-model memory-barriers

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

从Vimeo网址获取视频ID

我正在尝试找到最好的正则表达式来从URL获取vimeo视频ID.

示例网址:

https://vimeo.com/11111111
http://vimeo.com/11111111
https://www.vimeo.com/11111111
http://www.vimeo.com/11111111
https://vimeo.com/channels/11111111
http://vimeo.com/channels/11111111
https://vimeo.com/groups/name/videos/11111111
http://vimeo.com/groups/name/videos/11111111
https://vimeo.com/album/2222222/video/11111111
http://vimeo.com/album/2222222/video/11111111
https://vimeo.com/11111111?param=test
http://vimeo.com/11111111?param=test
Run Code Online (Sandbox Code Playgroud)

我当前的正则表达式不起作用:

/http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/
Run Code Online (Sandbox Code Playgroud)

游乐场和测试在这里: http ://jsbin.com/asuqic/1/edit?javascript,live

javascript regex vimeo

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

过度使用Oracle With子句?

我正在为当前雇主编写许多报告查询,利用Oracle的WITH子句允许自己创建简单的步骤,每个步骤都是一个面向数据的转换,它们相互构建以执行复杂的任务.

今天我注意到,过度使用该WITH条款可能会对Oracle服务器的资源产生负面影响.

任何人都可以解释为什么过度使用Oracle WITH子句可能导致服务器崩溃?或者指出一些我可以研究适当用例的文章?我开始WITH大量使用该子句来为我的代码添加结构并使其更容易理解.我希望在这里提供一些信息性的回复,我可以继续有效地使用它.

如果示例查询有用,我会尝试今天稍后发布.

谢谢!

sql oracle common-table-expression oracle11g

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

Java 8中的新java.security.AccessControlException

以前工作的网络代码正在投入java.security.AccessControlException 一个完全沙盒化的Java applet.

Can't get socket 2255: java.security.AccessControlException: access denied ("java.net.SocketPermission" "50.31.1.13:2255" "connect,resolve")
Run Code Online (Sandbox Code Playgroud)

Oracle改变了什么 - 必须跳出哪些新的安全环以保持套接字工作?

这在Java 1.7.0_55和所有以前版本的java中都有效.

java sockets security

7
推荐指数
2
解决办法
6436
查看次数

FTP客户端一直被拒绝服务器上传的权限

我正在尝试编写一个FTP客户端和服务器,它允许我通过匿名FTP将文件从客户端发送到服务器.但是,我一直在努力550 Permission Denied.我可以做其他事情,比如从服务器下载文件,或者获取目录中的文件列表,但每当我尝试下载时,它都会说550 Permission Denied.无论我是登录还是使用匿名FTP,结果都是一样的.

我没有看到我的代码有任何问题,但我尝试在不同的网络和计算机上运行它具有相同的结果.我看不到代码有问题,还是我必须对路由器/防火墙做些什么?

我用Java编写客户端和服务器并运行Windows.我正在使用的库是Apache Commons FTP ClientApache FTP Server.

这是客户.注释掉的代码用于上载和获取目录中的文件列表.

import org.apache.commons.net.ftp.*;
import java.io.*;
import java.net.*;

public class Client
{
    public Client()
    {
        // Do nothing
    }

    public void transferFile(String ipAddress)
    {
        // For uploading
        FileInputStream file = null;
        // For downloading
        // FileOutputStream file = null;

        try
        {
            InetAddress address = InetAddress.getByName(ipAddress);

            FTPClient ftpClient = new FTPClient();
            ftpClient.connect(address, 5000);
            ftpClient.login("anonymous", "");
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.enterLocalPassiveMode();

            // For uploading
            file = …
Run Code Online (Sandbox Code Playgroud)

java ftp ftp-client permission-denied ftp-server

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

作为django Web应用程序的Graphite为所有静态资源返回404

免责声明:我知道这里有很多404关于静态资源的问题django,但不幸的是它没有任何帮助:(

问题:正如标题中所述,我得到了404graphiteweb应用中所有静态资源的响应.

以下是一些相关的配置部分:

app_settings.py:

INSTALLED_APPS = (
  'graphite.metrics',
  'graphite.render',
  'graphite.browser',
  'graphite.composer',
  'graphite.account',
  'graphite.dashboard',
  'graphite.whitelist',
  'graphite.events',
  'graphite.url_shortener',
  'django.contrib.auth',
  'django.contrib.sessions',
  'django.contrib.admin',
  'django.contrib.contenttypes',
  'django.contrib.staticfiles',
  'tagging',
)
Run Code Online (Sandbox Code Playgroud)

settings.py:

# Defaults for these are set after local_settings is imported
STATIC_ROOT = ''
STATIC_URL = ''

...

## Load our local_settings
try:
  from graphite.local_settings import *  # noqa
except ImportError:
  print >> sys.stderr, "Could not import graphite.local_settings, using defaults!"

...

STATICFILES_DIRS = (
    join(WEBAPP_DIR, 'content'),
    "/opt/graphite/webapp/content/", …
Run Code Online (Sandbox Code Playgroud)

python django graphite

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

如何在Clojure中调用没有参数的Java静态方法?

我试图弄清楚如何static在Clojure中调用一个没有参数的方法.两个(坏的)例子是(sun.misc.Unsafe/getUnsafe)(Object/getClass),两者都抛出一个CompilerException由a引起的NoSuchFieldException.

是的,我知道有一种更简单的方法可以调用getClass,我根本不应该使用sun.misc.Unsafe- 只是想知道如何在Clojure中调用一个无参数的静态方法.

java clojure

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

使用Java AtomicStampedReference的算法可以被认为是非阻塞的吗?

我正在尝试使用Java实现此处所述的非阻塞二进制搜索树.该算法基于单世界CAS,但:

状态和信息字段一起存储在CAS对象中.因此,内部节点使用四个字的存储器.

我决定使用AtomicStampedReference来存储这些数据.问题在于它

通过创建表示"盒装"[引用,整数]对的内部对象来维护标记引用.

这种结构的内部实施:

public boolean compareAndSet(V   expectedReference,
                             V   newReference,
                             int expectedStamp,
                             int newStamp) {
    Pair<V> current = pair;
    return
        expectedReference == current.reference &&
        expectedStamp == current.stamp &&
        ((newReference == current.reference &&
          newStamp == current.stamp) ||
         casPair(current, Pair.of(newReference, newStamp)));
}
Run Code Online (Sandbox Code Playgroud)

对定义为:

private static class Pair<T> {
    final T reference;
    final int stamp;
    private Pair(T reference, int stamp) {
        this.reference = reference;
        this.stamp = stamp;
    }
    static <T> Pair<T> of(T reference, int stamp) { …
Run Code Online (Sandbox Code Playgroud)

java algorithm concurrency multithreading data-structures

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

在开关情况下不接受最终常数

我想知道方法add()中的2个声明之间的区别,如下所示.

final int c;
c = 20;
Run Code Online (Sandbox Code Playgroud)

final int c = 20;
Run Code Online (Sandbox Code Playgroud)

我认为两者都是最终变量,我无法重新分配任何新值.以下是以不同方式处理上述声明的方法.

void add() {
        final int a = 30;
        final int b = 10;
        final int c;
        c = 20;

        switch (a) {
        case b + c:
            System.out.println("In case b+c");
            break;

        default:
            break;
        }

    }
Run Code Online (Sandbox Code Playgroud)

抱怨,上面的方法根本没有编译

常数表达式需要案例b + c

如果声明变量c并在一行中初始化,例如final int c = 30;.有用.

java final switch-statement java-7

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

QHBoxLayout间距

我有一个QHBoxLayout包括两个QLabel小部件.我的左边QLabel比右边大得多QLabel,但是,QHBoxLayout将输出分成两半,因此布局的左侧太小而布局的右侧太大.如何修改QHBoxLayout为每个包含的小部件创建不等比例的空间?

c++ qt qwidget qlayout

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