小编Mil*_*hen的帖子

为什么.NET4.0无法捕获AccessViolationException

非常有趣的是,以下C#代码将在.NET4.0上崩溃,但在.NET2.0上运行良好.

C#代码

class Program
{
    static void Main(string[] args)
    {
        try
        {
            ExceptionTest();
            Console.WriteLine("Done!");
        }
        catch (Exception e)
        {
            Console.WriteLine("Error !!!");
            Console.WriteLine(e.Message);
        }
    }

    [DllImport("badapp")]
    private static extern int ExceptionTest();
}
Run Code Online (Sandbox Code Playgroud)

C++代码

extern "C" __declspec(dllexport) int ExceptionTest()
{
    IUnknown* pUnk = NULL;
    pUnk->AddRef();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果针对.NET2.0编译上面的C#代码,一切正常.只针对.NET4.0进行编译会使其在运行时崩溃.

我怀疑自.NET4.0以来系统异常捕获机制已经改变.有任何想法吗?

c# c++ access-violation

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

如何在C/C++中完成此功能

我需要一个宏来帮助输出给定参数的名称和值.它类似于以下代码.

#define AA "Hello"
#define BB "World"
#define PRINT(input_param) printf("input_param: %s\n", (input_param))
void main()
{
  PRINT(AA);
  PRINT(BB);
}
Run Code Online (Sandbox Code Playgroud)

我期待结果: AA: Hello\n BB: World\n

但显然不是.有人可以纠正我吗?谢谢.

c c++ macros

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

Java中的Lambda表达式?

我需要将部分项目从C#切换到Java.但在此之前,我想仔细和完整地比较两种语言.

关于lambda表达式,我可以通过C#编写非常优雅的代码,问题是如何在Java中优雅地实现相同的功能?提前致谢!

class Program
{
    enum Gender
    {
        Male,
        Female
    }
    class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public Gender Gender { get; set; }
        public override string ToString()
        {
            return string.Format("Id: {0}, Name: {1}, Age: {2}, Gender: {3}", Id, Name, Age, Gender);
        }
    }

    static void Main(string[] args)
    {
        var students = new[] { 
            new Student { Id = 1, Name = …
Run Code Online (Sandbox Code Playgroud)

c# java lambda closures

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

如何恢复HDFS日志节点?

我配置了 3 个日志节点,比如说 JN1、JN2、JN3。他们每个人都将编辑日志保存在 /tmp/hadoop/journalnode/mycluster...

在此基础上,我启动了我的名称节点、辅助名称节点和一堆数据节点。系统运行良好,直到有一天JN2JN3死掉了。此外,磁盘已损坏。

然后我购买了新磁盘并重新启动了JN2和JN3。糟糕的是它不再起作用了。

它不断地抱怨

org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal Storage Directory /tmp/hadoop/dfs/journalnode/mycluster not formatted
        at org.apache.hadoop.hdfs.qjournal.server.Journal.checkFormatted(Journal.java:457)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.getEditLogManifest(Journal.java:640)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getEditLogManifest(JournalNodeRpcServer.java:185)
        at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.getEditLogManifest(QJournalProtocolServerSideTranslatorPB.java:224)
        at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:25431)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)
Run Code Online (Sandbox Code Playgroud)

有没有办法从唯一活着的 JN1 中恢复 JN2 和 JN3?

非常感谢所有可能的解决方案!

谢谢,迈尔斯

hdfs

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

是否可以设置'expect'的退出代码

以下bash脚本不起作用,因为命令'expect'始终返回0,无论远程脚本/tmp/my.sh返回哪个退出代码.

任何让它成功的想法?谢谢.

#!/usr/bash

user=root
passwd=123456abcd
host=10.58.33.21
expect -c "
  spawn ssh -o StrictHostKeyChecking=no -l $user $host bash -x /tmp/my.sh
  expect {
    \"assword:\" {send \"$passwd\r\"}
    eof          {exit $?}
  }
"
case "$?" in
  0) echo "Password successfully changed on $host by $user" ;;
  1) echo "Failure, password unchanged" ;;
  2) echo "Failure, new and old passwords are too similar" ;;
  3) echo "Failure, password must be longer" ;;
  *) echo "Password failed to change on $host" ;;
esac
Run Code Online (Sandbox Code Playgroud)

编辑于2013年11月27日上午10:23

感谢您的评论.让我再次强调这个问题,

主脚本应该在Linux服务器A运行 …

linux ssh expect

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

热来处理c ++ 11 lambda,同时捕获此指针并调用约定

使用VC2012时,编译器将在没有捕获列表的情况下使用lambda函数时自动处理调用约定.例如

EnumWindows([](HWND, LPARAM){ return TRUE; }, 0); // compile with no problem
Run Code Online (Sandbox Code Playgroud)

但是当我将this指针放到捕获列表中时,它无法编译.例如

EnumWindows([this](HWND, LPARAM){ return my_class_member_function(); }, 0); // error
Run Code Online (Sandbox Code Playgroud)

如果有办法在lambda函数中调用成员函数,有人可以告诉我吗?

谢谢,迈尔斯

c++ lambda c++11

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

标签 统计

c++ ×3

c# ×2

lambda ×2

access-violation ×1

c ×1

c++11 ×1

closures ×1

expect ×1

hdfs ×1

java ×1

linux ×1

macros ×1

ssh ×1