小编smw*_*dia的帖子

如何在单独的AppDomain中运行方法?

在我的场景中,我想在单独的AppDomain中执行一个方法.可以采取多少种不同的方法来实现这一目标?

特别是,我有以下问题:

  • 我可以将程序集加载到AppDomain A并在AppDomain B中执行其方法吗?
  • 我似乎用AppDomain.DoCallBack方法CrossAppDomainDelegate实现了这一点.我无法弄清楚如何在不同的AppDomain中使用程序集和方法是有意义的.为了执行该方法,是否同样可以再次加载到其他AppDomain中?

.net c#

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

全局变量是如何存储的?

AFAIK,有两种类型的全局变量,初始化初始化.它们是如何存储的?它们都存储在可执行文件中吗?我可以想到初始化的全局变量的初始值存储在可执行文件中.但是对于未初始化的人需要存储什么?

我目前的理解是这样的:

可执行文件被组织为多个部分,例如.text,.data和.bss.代码存储在.text部分中,初始化的全局或静态数据存储在.data部分中,未初始化的全局或静态数据存储在.bss部分中.

感谢您抽出宝贵时间查看我的问题.

更新1 - 9:56 AM 11/3/2010

我在这里找到一个很好的参考:

汇编语言源中的段 - 使用.text,.data和.bss指令构建文本和数据段

更新2 - 2010年11月10日上午10:09

@迈克尔

  1. 我在汇编代码中定义了一个100字节的未初始化数据区域,这个100字节没有存储在我的可执行文件中,因为它未初始化.

  2. 谁将在RAM中分配100字节的未初始化内存空间?该程序加载器

假设我得到以下代码:

int global[100];

void main(void)
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

全局[100]未初始化.如何在我的可执行文件中重新编码全局[100]?谁会在什么时候分配它?如果它被初始化怎么办?

c c++ assembly

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

有没有办法知道另一个抛出异常的进程中的线程ID?

我想使用MiniDumpWriteDump()API从另一个进程A.我这样做是因为转储崩溃的进程B MSDN这样说:

如果可能的话,应该从单独的进程调用MiniDumpWriteDump,而不是从被转储的目标进程中调用.

MiniDumpWriteDump()定义如下:

BOOL WINAPI MiniDumpWriteDump(
  __in  HANDLE hProcess,
  __in  DWORD ProcessId,
  __in  HANDLE hFile,
  __in  MINIDUMP_TYPE DumpType,
  __in  PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
  __in  PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
  __in  PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);
Run Code Online (Sandbox Code Playgroud)

特别是,ExceptionParam的类型为PMINIDUMP_EXCEPTION_INFORMATION,其定义如下:

typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
  DWORD               ThreadId;
  PEXCEPTION_POINTERS ExceptionPointers;
  BOOL                ClientPointers;
} MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
Run Code Online (Sandbox Code Playgroud)

现在我想知道如何准备以下2个参数:

ThreadId 抛出异常的线程的标识符.

ExceptionPointers 一个指向EXCEPTION_POINTERS结构指明该异常的计算机独立描述,并在异常时的处理器的上下文.

在进程A中运行时,如何在进程B中获取错误的线程id和异常指针?

谢谢.

debugging minidump dump crash-dumps

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

Process ID和Process句柄之间的区别是什么

进程ID是唯一标识进程的编号.进程句柄也是唯一标识进程内核对象的数字.

为什么我们都需要它们,因为它们中的任何一个都可以识别过程.

我认为答案可能在于进程和进程内核对象之间的映射关系.是否可以将多个进程内核对象映射到单个进程?每个进程内核对象都有自己的进程句柄.这样每个进程内核对象都可以表示不同的访问模式或类似的东西.

当我使用MiniDumpWriteDump()函数时,这个问题出现了,它被声明为:

BOOL WINAPI MiniDumpWriteDump(
  __in  HANDLE hProcess,
  __in  DWORD ProcessId,
  __in  HANDLE hFile,
  __in  MINIDUMP_TYPE DumpType,
  __in  PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
  __in  PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
  __in  PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);
Run Code Online (Sandbox Code Playgroud)

所以它的参数包括进程ID和进程句柄.我只是不知道为什么有必要让他们两个.

非常感谢您的见解.

windows process

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

关于数据库事务日志的问题

我读了以下声明:

SQL Server不会立即将数据写入磁盘.它保存在缓冲区缓存中,直到此缓存已满或直到SQL Server发出检查点,然后写出数据.如果在缓存仍在填满时发生电源故障,则该数据将丢失.但是,一旦电源恢复,SQL Server将从其上一个检查点状态开始,并且将在事务日志中执行作为成功事务记录的最后一个检查点之后的任何更新.

并出现了几个问题:

  1. 如果 SQL Server发出检查点之后和缓冲区高速缓存被执行写入磁盘之前发生电源故障怎么办?缓冲区缓存中的内容是否永久丢失?

  2. 事务日志也存储为磁盘文件,与实际数据库文件没有区别.那么我们怎样才能保证日志文件的完整性呢?

那么,真的没有真正的交易存在吗?这只是概率问题.

database sql-server

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

sql server报告服务虚拟文件夹托管在哪里?

我安装了SSRS 2012并尝试访问 http://mybox.org/Reports,但收到错误消息:

用户'mybox\xxx'没有所需的权限.验证是否已授予足够的权限并已解决Windows用户帐户控制(UAC)限制

所以我试着检查IIS设置.但令人惊讶的是,在我的IIS 8管理控制台中,没有Reports网站或虚拟文件夹.那么,报告在哪里托管?以及如何解决此权限错误?

reporting-services ssrs-2012

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

netty如何确定读取何时完成?

下面是一个ChannelHandlerecho服务器.

在此输入图像描述

Netty框架将调用channelReadComplete()方法来通知处理程序最后一次调用channelRead()是当前批处理中的最后一条消息.

我的问题是,由于数据是通过中继线传输的,Netty怎么知道什么时候a batch of message完成?

java networking nio netty

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

如何配备Java应用程序?

我在下面的书中读到了<Core Java vol.1>:

每个Java应用程序都以在主线程中运行的main方法开始.在Swing程序中,主线程是短暂的.它在事件调度线程中调度用户界面的构造,然后退出... 其他线程(例如将事件发布到事件队列中的线程)在后台运行,但这些线程对于应用程序程序员是不可见的.

它让我觉得JVM使用一组标准线程来容纳每个Java程序.我认为它们包括:

  • 主线程
  • 事件派发线程

我想这些线程就像JVM授予每个Java应用程序的堆空间,堆栈等其他资源一样.客户应该在不同的线程中正确地完成不同的工作.比如只在事件派发线程中做与Swing相关的事情.

我对此是否正确?我在哪里可以找到一些权威参考?JVM规范似乎没有这个.

如果我从不使用事件调度线程,例如在控制台应用程序中,我可以禁用它来节省一些CPU周期吗?

加1

下面的链接解释了有关Swing框架如何使用线程的详细信息.

Swing中的并发性 http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html

java jvm

6
推荐指数
3
解决办法
484
查看次数

如何在Visual C++ 2013项目中使用外部构建系统?

是否可以使用external build systemfor VC++ 2013?我希望Visual Studio不做任何事情,只需通过调用我的构建工具来构建.

我在考虑这样的事情:

  • 将所有构建命令分批放入.
  • 通过右键单击项目并选择构建来调用项目级构建批处理.
  • 通过右键单击解决方案并选择构建来调用解决方案级别的构建批处理.

    有一些演练教程吗?我搜索了很多但没有运气.

添加1 - 一些进展......

在简要介绍了这个MSBuild过程后,我尝试了如下.

首先,我编辑*.vcxproj项目文件.我改变DefaultTargetsBuildMyTarget.

<Project DefaultTargets="MyTarget" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Run Code Online (Sandbox Code Playgroud)

然后我添加一个名为的新目标MyTarget:

  <Target Name="MyTarget">
    <Message Text="Hello, Bitch!" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

我希望这可以绕过VS2013内置的构建过程,只执行我自己的批处理.

它在命令提示符下运行良好:

在此输入图像描述

但是在Visual Studio中,当我右键单击项目并选择build命令时,它会给我带来很多链接错误.

如何避免这些链接错误?由于我的批处理可以处理所有构建过程,因此我不需要Visual Studio为我做链接.

添加2

似乎这些链接错误显示出来,因为我包含*.c带有ClCompile标记的文件如下所示.

<ItemGroup>
   <ClCompile Include="z:\MyProject1\source1.c" />
<ItemGroup>
Run Code Online (Sandbox Code Playgroud)

由于我不希望VS2013调用编译器,我将其更改为<ClInclude>标记,链接错误消失,但符号解析不起作用......似乎我不应该更改标记.

添加3

这是另一种无需链接编译的方法.

Visual Studio C++是否可以在没有链接的情况下编译对象

似乎它没有符号解析问题.但我仍然无法通过点击调用外部批次build/rebuild/clean.

custom-build visual-studio visual-c++ visual-studio-2013

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

maven 如何处理多个 &lt;repository&gt; 配置?

我对 maven 越来越习惯了。但是还是有些问题。

我有多个<repository>在我的pom.xml

  • 下载工件时,Maven 将如何处理这些存储库?会按申报顺序搜索吗​​?

  • 除了明确声明的之外,maven 还会检查默认的centralrepohttp://repo.maven.apache.org/maven2/吗?

  • 如果在 中找不到某些东西explicitly configured repo,maven 会回退到默认的中央仓库吗?

  • 使用多个 repos 好不好?我有点担心不一致。

以下是<repositories>我的部分pom.xml

<repositories>
    <repository>
        <id>ibiblio-central-repo</id>
        <layout>default</layout>
        <name>ibiblio-central-repo</name>
        <releases>
            <checksumPolicy>warn</checksumPolicy>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <url>http://maven.ibiblio.org/maven2/</url>
    </repository>

    <repository>
        <id>oschina-central-repo</id>
        <layout>default</layout>
        <name>oschina-central-repo</name>
        <releases>
            <checksumPolicy>warn</checksumPolicy>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <url>http://maven.oschina.net/content/groups/public/</url>
    </repository>

    <repository>
        <id>oschina-central-repo-3rd-party</id>
        <layout>default</layout>
        <name>oschina-central-repo-3rd-party</name>
        <releases>
            <checksumPolicy>warn</checksumPolicy>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

maven-3 maven

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