小编Shy*_*hyJ的帖子

在配置文件处于非活动状态时包含bean定义

在我的应用程序中,我使用了几个配置文件来使某些bean符合自动装配的条件.我缺少的是当某个配置文件不活动时,可以使豆符合自动装配的条件.

我想到的最好的方法是这样的:

  1. 假设我们有一个所有可能的配置文件列表,例如{A,B,C,D}.
  2. 对特定执行有效的配置文件是{A,C}.
  3. 我所做的是为所有可能无效的配置文件创建人工配置文件.在示例中,我将创建{not_B,not_D}个人资料.
  4. 我希望基于非活动配置文件激活的bean我X为配置文件激活not_X.在我的情况下,如果我想要一个bean在配置文件B不活动时有资格进行自动装配,我会注释它们@Profile("not_B")

然而,该解决方案需要关于所有可能的配置文件的前期知识.

你能想到更好的解决方案吗?

java spring negation spring-profiles

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

检查字段是否为数字,然后仅对一个语句中的那些字段执行比较?

这可能很简单,但我不是SQL高手,所以我迷路了.我知道sql接受你的查询并按特定顺序执行它,我相信这个查询不起作用的原因:

select * from purchaseorders
where IsNumeric(purchase_order_number) = 1
and cast(purchase_order_number as int) >= 7
Run Code Online (Sandbox Code Playgroud)

最大的purchar_order_number字段是数字,但我们最近引入了字母数字字段.我想要获得的数据是查看"7"是否大于最高数字purchase_order_number.

Numeric()函数可以很好地过滤掉字母数字字段,但是进行后续的强制转换比较会抛出此错误:

Conversion failed when converting the nvarchar value '124-4356AB' to data type int.
Run Code Online (Sandbox Code Playgroud)

我不是在问这个错误意味着什么,这很明显.我问是否有办法在单个查询中完成我想要的,最好是因为ORM约束而在where子句中.

sql t-sql comparison sql-server-2008

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

字节码指令与处理器操作之间的关系

Java规范保证原始变量赋值总是原子的(期望long和双精度)types.

相反,对应于着名的增量操作的获取和添加操作i++将是非原子的,因为导致读 - 修改 - 写操作.

假设这段代码:

public void assign(int b) {
    int a = b;
}
Run Code Online (Sandbox Code Playgroud)

生成的字节码是:

public void assign(int);
    Code:
       0: iload_1       
       1: istore_2      
       2: return 
Run Code Online (Sandbox Code Playgroud)

因此,我们看到赋值由两个步骤组成(加载和存储).

假设这段代码:

public void assign(int b) {
        int i = b++;
}
Run Code Online (Sandbox Code Playgroud)

字节码:

public void assign(int);
    Code:
       0: iload_1       
       1: iinc          1, 1    //extra step here regarding the previous sample
       4: istore_2      
       5: return 
Run Code Online (Sandbox Code Playgroud)

知道X86处理器可以(至少是现代处理器)以原子方式操作增量操作,如上所述:

在计算机科学中,fetch-and-add CPU指令是一种特殊指令,它以原子方式修改存储器位置的内容.它用于在多处理器系统中实现互斥和并发算法,信号量的泛化.

因此,第一个问题:尽管字节码需要两个步骤(加载和存储),但是Java依赖于这样的事实:赋值操作是一个操作,无论处理器的体系结构如何都始终以原子方式执行,因此可以确保永久原子性(对于原始赋值) )在其规格?

第二个问题:用非常现代的X86处理器确认并且不跨不同架构共享编译代码是不对的,根本不需要同步 …

java x86 bytecode processor atomicity

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

无效的条目压缩大小

我正在使用一个称为ASM的字节码库来改变类文件,然后我想将每个类文件写回一个jar文件而不是一个充满类文件的文件夹.我这样做是通过运行此代码:

当ZipException因为不是预期的大小而抛出时,我的问题就出现了

java.util.zip.ZipException: invalid entry compressed size (expected 695 but got 693 bytes)
    at java.util.zip.ZipOutputStream.closeEntry(Unknown Source)
    at org.steinburg.client.accessor.Accessor.accessJar(Accessor.java:64)
    at org.steinburg.client.accessor.Accessor.<init>(Accessor.java:41)
    at Loader.main(Loader.java:5)


package org.steinburg.client.accessor;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;

import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;

public class Accessor {

private String input;
private File inFile;
private JarEntry jarEntry;
private JarFile jarFile;
private Enumeration<JarEntry> entries;
private InputStream is;

private String out;
private File outFile;
private FileOutputStream fos;
private JarOutputStream jos;

private byte[] …
Run Code Online (Sandbox Code Playgroud)

java jar exception java-bytecode-asm

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