有条件的春豆创作

我有一个关于Spring注释配置的问题。 我有一个豆子: @Bean public ObservationWebSocketClient observationWebSocketClient(){ log.info(“creating web socket connection…”); return new ObservationWebSocketClient(); } 我有一个属性文件: @Autowired Environment env; 在属性文件中,我想要一个特殊的布尔属性 createWebsocket=true/false 这标志是否应该创建bean ObservationWebSocketClient。 如果属性值为false,我根本不想建立Web套接字连接。 是否有任何技术可能性来实现这一点?

Byte数组到String并返回..问题-127

在下面的: scala> (new String(Array[Byte](1, 2, 3, -1, -2, -127))).getBytes res12: Array[Byte] = Array(1, 2, 3, -1, -2, 63) 为什么-127转换为63? 以及如何将其恢复为-127 [编辑:]下面的Java版本(以显示它不仅仅是“Scala问题”) c:\tmp>type Main.java public class Main { public static void main(String [] args) { byte [] b = {1, 2, 3, -1, -2, -127}; byte [] c = new String(b).getBytes(); for (int i = 0; […]

Java属性:.properties文件vs xml?

在涉及属性时,我是新手,我读到XML是存储这些的首选方式。 然而,我注意到,编写一个常规.properties文件的风格 foo=bar fu=baz 也有效。 这意味着更少的打字(也许更容易阅读和更高效)。 那么使用XML文件有什么好处?

玩! 框架:在模板中定义变量?

我将模板传递给Event对象,我需要做的是检查@event.getSeverity值。 如果值为正,我想以绿色为特定的 着色。 如果值为负,我想用红色为特定的 着色。 我找不到定义变量的方法。 可能吗? 应该是我想的。 无论如何,实现这一目标的最简单方法是什么? 谢谢

使用lambdas和generics时,对方法的引用是不明确的

我收到以下代码的错误,我认为不应该存在…使用JDK 8u40编译此代码。 public class Ambiguous { public static void main(String[] args) { consumerIntFunctionTest(data -> { Arrays.sort(data); }, int[]::new); consumerIntFunctionTest(Arrays::sort, int[]::new); } private static void consumerIntFunctionTest(final Consumer consumer, final IntFunction generator) { } private static void consumerIntFunctionTest(final Function consumer, final IntFunction generator) { } } 错误如下: 错误:(17,9)java:对consumerIntFunctionTest的引用与net.tuis.ubench.Ambiguous中的方法consumerIntFunctionTest(java.util.function.Consumer,java.util.function.IntFunction)和方法consumerIntFunctionTest(java.util。)都不明确。 net.tuis.ubench.Ambiguous匹配中的function.Function,java.util.function.IntFunction) 错误发生在以下行: consumerIntFunctionTest(Arrays::sort, int[]::new); 我相信应该没有错误,因为所有Arrays::sort引用都是void类型,并且它们都没有返回值。 正如您所看到的,当我明确扩展Consumer lambda时,它确实有效。 这真的是javac中的错误,还是JLS声明lambda在这种情况下无法自动扩展? 如果是后者,我仍然认为这很奇怪,因为带有第一个参数Function […]

下载图像时,FileOutputStream因“打开失败:EISDIR(是一个目录)”错误而崩溃

我正在尝试从互联网上下载iamge,这是代码: try { String imgURL = c.imgURL; String imgPATH = c.imgPATH; URL url = new URL(imgURL); URLConnection conexion = url.openConnection(); conexion.connect(); int lenghtOfFile = conexion.getContentLength(); try { File f = new File(imgPATH); f.mkdirs(); BufferedInputStream input = new BufferedInputStream(url.openStream()); BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(imgPATH), 8192); // CRASH HERE byte data[] = new byte[8192]; long total […]

在Hadoop Map Reduce中重命名部件文件

我已尝试按照页面http://hadoop.apache.org/docs/mapreduce/r0.21.0/api/index.html?org/apache/hadoop/mapreduce/lib/output/中的示例使用MultipleOutputs类MultipleOutputs.html 驱动程序代码 Configuration conf = new Configuration(); Job job = new Job(conf, “Wordcount”); job.setJarByClass(WordCount.class); job.setInputFormatClass(TextInputFormat.class); job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); MultipleOutputs.addNamedOutput(job, “text”, TextOutputFormat.class, Text.class, IntWritable.class); System.exit(job.waitForCompletion(true) ? 0 : 1); 减速机代码 public class WordCountReducer extends Reducer { private IntWritable result = new IntWritable(); private MultipleOutputs mos; public void […]

从文件创建BufferedImage并使其成为TYPE_INT_ARGB

我有一个透明的PNG文件加载并存储在BufferedImage 。 我需要这个BufferedImage是TYPE_INT_ARGB 。 但是,当我使用getType() ,返回的值为0( TYPE_CUSTOM )而不是2( TYPE_INT_ARGB )。 这是我加载.png : public File img = new File(“imagen.png”); public BufferedImage buffImg = new BufferedImage(240, 240, BufferedImage.TYPE_INT_ARGB); try { buffImg = ImageIO.read(img ); } catch (IOException e) { } System.out.Println(buffImg.getType()); //Prints 0 instead of 2 如何加载.png,保存在BufferedImage并使其成为TYPE_INT_ARGB ?

multithreading可以在Java中看到直接映射的ByteBuffer上的写入吗?

我正在开发一些使用ByteBuffers的东西,它使用内存映射文件(通过FileChannel.map() )以及内存中的直接ByteBuffers构建。 我试图了解并发和内存模型约束。 我已经阅读了FileChannel,ByteBuffer,MappedByteBuffer等所有相关的Javadoc(和源代码)。很明显,特定的ByteBuffer(和相关的子类)有一堆字段,并且状态不受内存模型的保护观点看法。 因此,如果跨线程使用该缓冲区,则必须在修改特定ByteBuffer的状态时进行同步。 常见的技巧包括使用ThreadLocal包装ByteBuffer,复制(同步)以获取指向相同映射字节的新实例等。 鉴于这种情况: manager有一个映射的字节缓冲区B_all用于整个文件(比如它<2gb) 管理器调用B_all上的duplicate(),position(),limit()和slice()来创建一个新的较小的ByteBuffer B_1 ,该文件的一大块并将其提供给线程T1 manager执行所有相同的操作来创建指向相同映射字节的ByteBuffer B_2并将其提供给线程T2 我的问题是:T1能否同时写入B_1和T2写入B_2并保证看到彼此的变化? T3是否可以使用B_all读取这些字节并保证看到T1和T2的变化? 我知道,除非您使用force()指示操作系统将页面写入磁盘,否则不一定会在进程中看到映射文件中的写入。 我不在乎。 假设这个问题,这个JVM是编写单个映射文件的唯一进程。 注意:我不是在寻找猜测(我可以自己做得很好)。 我想引用一些关于内存映射直接缓冲区保证(或不保证)的内容。 或者,如果您有实际经验或负面测试用例,那么这也可以作为充分的证据。 更新:我已经完成了一些测试,让多个线程并行写入同一个文件,到目前为止,这些写入似乎可以从其他线程立即看到。 我不确定我是否可以依赖它。

Spring安全“forward:”指令无法转发到登录表单

用户创建帐户后,我想自动登录该用户。 我有标准表单登录由/postloginfilter/postlogin 。 如果我去http://localhost/postlogin它会尝试登录我(失败因为我没有包含post参数),但是做了正确的尝试。 但是如果我想以编程方式登录用户并尝试从控制器返回:“forward:/ postlogin”我得到了404。 我假设forward:指令没有通过filter,因此不会被UsernamePasswordAuthenticationFilter处理。 如何以编程方式手动引导登录? 我希望在用户创建新帐户后执行此操作(他们应在完成注册后立即登录该帐户)。