小编Gle*_*den的帖子

java.io.IOException:找不到Hadoop二进制文件中的可执行文件null\bin\winutils.exe.在Windows 7上激发Eclipse

我无法sparkScala IDE(Maven spark project)上安装一个简单的工作Windows 7

已添加Spark核心依赖项.

val conf = new SparkConf().setAppName("DemoDF").setMaster("local")
val sc = new SparkContext(conf)
val logData = sc.textFile("File.txt")
logData.count()
Run Code Online (Sandbox Code Playgroud)

错误:

16/02/26 18:29:33 INFO SparkContext: Created broadcast 0 from textFile at FrameDemo.scala:13
16/02/26 18:29:34 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:362)
    at <br>org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
    at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
    at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)
    at …
Run Code Online (Sandbox Code Playgroud)

eclipse scala apache-spark

78
推荐指数
6
解决办法
9万
查看次数

WPF用户控件的加载事件不止一次触发

要在WPF中实现基于选项卡的环境,我们需要将表单转换为用户控件,但是在执行此操作时,将Loaded调用用户控件的事件两次.

在互联网上搜索时,其他人也指出了这个问题.我们怎样才能确保只调用一次加载的事件?因为当它被多次调用时,我们的控件的初始化会多次发生.

c# wpf user-controls

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

如何动态扩展内存映射文件

我已经使用C#来解决以下要求.. - 创建一个可以快速接收大量数据的应用程序 - 您必须能够分析收到的数据,同时传入更多数据. - 使用尽可能少的CPU和磁盘

我对算法的想法是......

SIZE = 10MB
Create a mmf with the size of SIZE
On data recived:
  if data can't fit mmf: increase mmf.size by SIZE
  write the data to mmf
Run Code Online (Sandbox Code Playgroud)

- >当使用前一个"房间/空间"时,光盘上的大小增加了10MB的块.

如何在C#中"通过SIZE增加mmf.size"?我已经找到了很多关于创建mmfs和视图的简单示例,但是我看到的唯一的地方(链接)实际上增加了mmfs区域的代码使用了无法编译的代码.任何帮助都将受到极大的关注.

编辑这会导致异常:

private void IncreaseFileSize()
{
    int theNewMax = this.currentMax + INCREMENT_SIZE;
    this.currentMax = theNewMax;

    this.mmf.Dispose();

    this.mmf = MemoryMappedFile.CreateFromFile(this.FileName, FileMode.Create, "MyMMF", theNewMax);
    this.view = mmf.CreateViewAccessor(0, theNewMax);            
}
Run Code Online (Sandbox Code Playgroud)

抛出此异常:进程无法访问文件'C:\ Users\moberg\Documents\data.bin',因为它正由另一个进程使用.

c# .net-4.0 memory-mapped-files

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

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

带有Nullable <T>的'=='的参数顺序

以下两个C#函数的区别仅在于将参数的左/右顺序交换为equals运算符==.(的类型IsInitializedbool).使用C#7.1.NET 4.7.

static void A(ISupportInitialize x)
{
    if ((x as ISupportInitializeNotification)?.IsInitialized == true)
        throw null;
}
Run Code Online (Sandbox Code Playgroud)

static void B(ISupportInitialize x)
{
    if (true == (x as ISupportInitializeNotification)?.IsInitialized)
        throw null;
}
Run Code Online (Sandbox Code Playgroud)

但是第二个的IL代码似乎要复杂得多.例如,B是:

  • 36个字节(IL代码);
  • 调用附加功能,包括newobjinitobj;
  • 声明四个本地人而不是一个.

IL用于功能'A'......

[0] bool flag
        nop
        ldarg.0
        isinst [System]ISupportInitializeNotification
        dup
        brtrue.s L_000e
        pop
        ldc.i4.0
        br.s L_0013
L_000e: callvirt instance bool [System]ISupportInitializeNotification::get_IsInitialized()
L_0013: stloc.0
        ldloc.0
        brfalse.s …
Run Code Online (Sandbox Code Playgroud)

c# nullable equals-operator commutativity

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

将Interlocked.CompareExchange与类一起使用

System.Threading.Interlocked.CompareExchange operator提供了Compare-And-Swap操作的原子(因此是线程安全的)C#实现.

例如,int i = 5; Interlocked.CompareExchange(ref i, 10, 5);在此命令之后,int i将具有值= 10.并且比较和交换以原子方式发生(单个操作).

当我尝试将其与类实例一起使用时,比较失败并且不交换值.

   public class X
   {
       public int y;
       public X(int val) { y = val; }
   }
Run Code Online (Sandbox Code Playgroud)

现在当我这样做

    X a = new X(1);
    X b = new X(1);
    X c = new X(2);
    Interlocked.CompareExchange<X>(ref a, c, b);
Run Code Online (Sandbox Code Playgroud)

比较和Exchange操作失败.所以,我将X类的Equals和==运算符重写为

    public override bool Equals(object obj) { return y == ((X) obj).y; }
Run Code Online (Sandbox Code Playgroud)

所以,现在我得到Interlocked.Equals(a,b)true,但CompareExchange操作仍然失败.

有没有办法做到这一点?我想比较两个类实例,并根据比较为其中一个指定一个值.

.net c# multithreading interlocked

12
推荐指数
3
解决办法
9450
查看次数

如何使.NET COM对象成为单元线程?

默认情况下,.NET对象是自由线程的.如果通过COM封送到另一个线程,它们总是被封送到自己,无论创建者线程是否是STA,并且无论其ThreadingModel注册表值如何.我怀疑,他们聚合了Free Threaded Marshaler(有关COM线程的更多细节可以在这里找到).

我想让我的.NET COM对象在封送到另一个线程时使用标准的COM marshaller代理.问题:

using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Threading;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var apt1 = new WpfApartment();
            var apt2 = new WpfApartment();

            apt1.Invoke(() =>
            {
                var comObj = new ComObject();
                comObj.Test();

                IntPtr pStm;
                NativeMethods.CoMarshalInterThreadInterfaceInStream(NativeMethods.IID_IUnknown, comObj, out pStm);

                apt2.Invoke(() =>
                {
                    object unk;
                    NativeMethods.CoGetInterfaceAndReleaseStream(pStm, NativeMethods.IID_IUnknown, out unk);

                    Console.WriteLine(new { equal = Object.ReferenceEquals(comObj, unk) });

                    var marshaledComObj = (IComObject)unk;
                    marshaledComObj.Test();
                }); …
Run Code Online (Sandbox Code Playgroud)

.net c# com multithreading com-interop

12
推荐指数
2
解决办法
1900
查看次数

当用作函数的返回值时,C#结构是否曾被装箱?

一个简单的问题,但我还没有找到Stack Overflow的明确答案.

    struct foo { int x; int y; int z; }

    foo Func()
    {
        return new foo();
    }
    void Func2()
    {
        foo f = Func();     // did boxing and unboxing occur?
    }
Run Code Online (Sandbox Code Playgroud)

从函数返回时,C#struct(值类型)是否始终复制到堆栈中,无论它有多大?我不确定的原因是,对于除MSIL之外的一些指令集(例如x86),返回值通常需要适合处理器寄存器,并且不直接涉及堆栈.

如果是这样,那么调用站点是否为CLR堆栈预先分配了(预期)值返回类型的空间?

[编辑:回复摘要:]对于原始问题的意图,答案是否定的; CLR永远不会(默默地)将结构化为仅仅为了将其作为返回值发送.

c# struct boxing return-value value-type

8
推荐指数
2
解决办法
2018
查看次数

ClassCastException:javax.naming.Reference无法强制转换为javax.jms.ConnectionFactory

我写了一个Java程序来连接到Websphere MQ来发布消息.我在Websphere MQ Explore中创建了JNDI名称空间,连接工厂,目标和队列管理器.当我运行我的程序时,它显示ClassCastException从类型转换stringConnectionFactory.

这是我的代码.任何人都可以帮助解决此问题.

JNDIUtil.java

package com.tradefinance.jms.util;

//JMS classes
import javax.jms.JMSException;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;

//JNDI classes
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.NamingException;

//Standard Java classes
import java.util.Hashtable;
import java.util.Properties;

/**
* 
* A wrapper class for JNDI calls
*
*/
public class JNDIUtil
{
    private Context context;

    public JNDIUtil(String icf, String url) throws JMSException, NamingException
    {
        Hashtable environment = new Hashtable();

        environment.put(Context.INITIAL_CONTEXT_FACTORY, icf ); 
        environment.put(Context.PROVIDER_URL, url);

     context= new InitialContext( environment );

    } …
Run Code Online (Sandbox Code Playgroud)

jms ibm-mq

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

检查每个列表项的语句

我有一个const experience值,person对象,列表skill和方法(不能修改它)hasSkill(skill,person,experience)返回布尔值.我想检查person列表中的所有技能.

我的代码是:

int experience = 5;

private hasAllSkills(person){
return skillList.stream().filter(s -> hasSingleSkill(s,person)).collect(Collectors.toList()).size() == skillList.size() ? true : false;
}

private boolean hasSingleSkill(Skill s, Person p){
return hasSkill(s,p,experience);
}
Run Code Online (Sandbox Code Playgroud)

我很确定有更好的解决方案但找不到它; 我该怎么做来修复我的代码?

java java-8 java-stream

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