小编Sib*_*bbo的帖子

为什么在这种情况下ActualWidth和ActualHeight为0.0?

我有一个Grid内部Canvas定义如下:

<Canvas x:Name="outerCanvas">
    <Grid Grid.Row="1" Name="cGrid" ShowGridLines="True" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition  />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Rectangle Name="rectangle1" Stroke="Black" Fill="AntiqueWhite" />
        <Rectangle Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle2" Stroke="Black" Fill="AliceBlue" />
        <Rectangle Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle3" Stroke="Black" Fill="Aqua" />
        <Rectangle Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="1" Name="rectangle4" Stroke="Black" Fill="DarkViolet" />
    </Grid>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

我的问题是,在窗口的构造,后InitializeComponents()两种Grid.ColumnDefinitions[0].ActualWidth或"任何矩形".ActualWidth都被设置为0.0(高度相同).我不知道如何获取这些信息.有帮助吗?

观察:

  1. 我没有定义外部画布的宽度和高度,但如果我这样做,它并不能解决我的问题.
  2. 在运行时我可以看到它Canvas/Grid占据整个窗口空间,因此其中的每个矩形都有ActualWidth …

wpf grid xaml actualwidth actualheight

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

Java SSLHandshakeException"没有共同的密码套件"

我正在使用SSLServerSocket接受我的openSUSE服务器上的客户端连接,但它们都不能连接.我总是得到一个SSLHandshakeException说no cipher suites in common.我已经激活了所有可能的套件,启用了多个协议,尝试使用最新的oracle JRE和openjdk.我还在论坛和东西上关注了其他几个帖子并"解锁"了oracle jre中的所有密码套件,我改变了openjdk jre的设置,如下所示:

已禁用:已#security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg 启用:security.provider.9=sun.security.ec.SunEC

这是我初始化SSLServerSocket的方式:

    System.setProperty("javax.net.ssl.keyStore", "./keystore");
    System.setProperty("javax.net.ssl.keyStorePassword", "nopassword");
    java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");

// Create a trust manager that does not validate certificate chains
    TrustManager[] trustAllCerts = new TrustManager[] {
            new X509TrustManager() {
                public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                }

                public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                }

                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
            }
    };

    // Install the all-trusting trust manager
    SSLContext sc = SSLContext.getInstance("TLSv1.2");
    sc.init(null, trustAllCerts, new …
Run Code Online (Sandbox Code Playgroud)

java ssl sslhandshakeexception

43
推荐指数
4
解决办法
11万
查看次数

没有堆栈的Java"Thread-2"会阻止终止

我有一个非常复杂的java程序,它不会终止.eclipse调试器显示一个可以挂起但没有堆栈跟踪的线程.它被称为"线程-2".

jstack -l线程的输出是:

"Thread-2" #17 prio=5 os_prio=0 tid=0x00007f1268002800 nid=0x3342 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None
Run Code Online (Sandbox Code Playgroud)

我在Thread.start()中添加了一个断点,但我找不到一个名为"Thread-2"的线程.线程刚出现在创建两个"AWT-Event-Queue"线程之后.我不在我的程序中手动创建任何线程.

在主线程和所有其他线程退出并释放JFrame之后,以下线程仍然存在:

Thread [AWT-EventQueue-0] (Running) 
Thread [Thread-2] (Running) 
Thread [DestroyJavaVM] (Running)    
Run Code Online (Sandbox Code Playgroud)

挂起VM时,存在以下线程:

Daemon System Thread [Signal Dispatcher] (Suspended)    
Daemon System Thread [Finalizer] (Suspended)    
Daemon System Thread [Reference Handler] (Suspended)    
Daemon System Thread [Java2D Disposer] (Suspended)  
Daemon System Thread [AWT-XAWT] (Suspended) 
Thread [AWT-EventQueue-0] (Suspended)   
Thread [Thread-2] (Suspended)   
Thread [DestroyJavaVM] (Suspended)  
Run Code Online (Sandbox Code Playgroud)

如何获取有关此线程的更多信息,或允许它终止?

编辑1:

根据Dependency Hierarchyeclipse pom.xml视图,我使用以下第三方库:

guava 17.0 [compile] …
Run Code Online (Sandbox Code Playgroud)

java eclipse debugging multithreading stack-trace

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

Blob和存储要求

我要求将用户上传的文件存储到数据库中(文件系统不是一个选项).

上传的文件是不同的类型(例如PDF,EXCEL等).

我在决定是否使用MEDIUMBLOB类型将这些文件存储为二进制数据时遇到问题.

由于这些文件的大小差别很大,因此产生了混淆.像一些文件是几百KiloBytes(例如114 KB),但其他一些文件是高达1.5 MegaBytes.

所以我真的需要MEDIUMBLOB用作列类型.但我没有什么困惑,因为实际占用的内存取决于上传文件本身的大小文件大小本身被忽略,内存只是根据数据类型分配.这非常重要,因为每天上传的大部分文件(很多都是)的大小非常小,磁盘中可用的内存(空间)也是有限的.

当我阅读MySql doc的以下部分时:

10.5.数据类型存储要求

L表示给定字符串值的实际长度(以字节为单位).

Data type                  Storage Required
========================================================
TINYBLOB, TINYTEXT  L + 1 bytes, where L < 2 ^ 8
BLOB, TEXT           L + 2 bytes, where L < 2 ^ 16
MEDIUMBLOB, MEDIUMTEXT  L + 3 bytes, where L < 2 ^ 24
LONGBLOB, LONGTEXT  L + 4 bytes, where L < 2 ^ 32
Run Code Online (Sandbox Code Playgroud)

我认为使用的内存取决于上传的实际文件的大小.即如果我有列类型MEDIUMBLOB,如果我上传的文件大小为114 KB,那么将使用唯一114 KBytes + …

mysql database storage blob

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

如何在log4j1.6中的log4j.properties中配置monitorInterval

我需要有一个log4j配置monitorInterval.怎么办log4j.properties呢?

log4j.xml它可以配置如下:

<Configuration monitorInterval="5">
Run Code Online (Sandbox Code Playgroud)

相当于log4j.properties什么?

java configuration logging log4j

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

有在线编程圣经吗?

我对编程尤其感兴趣Java.是否有一个页面,它解释了Java中的不同信息学主题或所有OOP语言的通用主题?我的意思是维基百科风格,但更容易理解,仅适用于编程/信息学.

也许是练习,但基本上它应该解释信息学的不同问题.

java language-agnostic wiki

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

如何添加全局动作事件监听器?

如何添加全局动作事件监听器?我试过了

Toolkit.getDefaultToolkit ().addAWTEventListener (this, AWTEvent.ACTION_EVENT_MASK); 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

java events

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

我在哪里可以找到com.ibm.websphere.asynchbeans.Work的相关.jar文件?

即使我的IDE(Eclipse)配置为使用Websphere 7 JVM,我也无法导入上面命名的包.包裹有变化吗?有什么想法吗?

谢谢.

java-ee websphere-7

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

建立套接字连接时出错

我正在尝试运行下面的程序,但我收到此错误:

Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at com.rabbitmq.client.ConnectionFactory.createFrameHandler(ConnectionFactory.java:445)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:504)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:533)
    at Recieve.main(Recieve.java:14)
Run Code Online (Sandbox Code Playgroud)

我试图运行的程序是:

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Send {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws java.io.IOException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello World!"; …
Run Code Online (Sandbox Code Playgroud)

java rabbitmq

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

使用太多Threads基准程序的问题

我用Java编写了一个(非常简单的)基准测试程序.它只是将double值增加到指定值并占用时间.

当我在我的6核桌面上使用这个单线程或少量线程(最多100个)时,基准测试会返回合理且可重复的结果.

但是当我使用例如1200个线程时,平均多核持续时间明显低于单个核心持续时间(大约10倍或更多).无论我使用了多少线程,我都确保增量的总量是相同的.

为什么性能会随着线程的增加而下降呢?有没有办法解决这个问题?

我发布了我的来源,但我认为没有问题.

Benchmark.java:

package sibbo.benchmark;

import java.text.DecimalFormat;
import java.util.LinkedList;
import java.util.List;

public class Benchmark implements TestFinishedListener {
            private static final double TARGET = 1e10;
    private static final int THREAD_MULTIPLICATOR = 2;

    public static void main(String[] args) throws InterruptedException {
        Benchmark b = new Benchmark(TARGET);
        b.start();
    }

    private int coreCount;
    private List<Worker> workers = new LinkedList<>();
    private List<Worker> finishedWorkers = new LinkedList<>();
    private double target;

    public Benchmark(double target) {
        this.target = target;
        getSystemInfos();
        printInfos();
    }

    private void getSystemInfos() …
Run Code Online (Sandbox Code Playgroud)

java benchmarking multithreading multicore

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

尝试捕获继续执行异常

这个问题在接受采访时被问到我.在下面的代码段中,异常发生在try块的第三行.问题是如何使第4行执行.第三行应该在catch块本身.他们给了我一个"使用投掷和投掷"的提示.

    public void testCase() throws NullPointerException{
        try{
            System.out.println("Start");
            String out = null;
            out.toString();
            System.out.println("Stop");

        }catch(NullPointerException e){
            System.out.println("Exception");
        }
    }
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙.提前致谢.

java exception-handling exception

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