小编Meh*_*ANI的帖子

应用程序使用的DLL的热卸载/重新加载

我有一个应用程序加载DLL来执行特定的处理部分

Example : "Application.dll" loading "Process.dll" 
Run Code Online (Sandbox Code Playgroud)

Process.dll在运行时使用反射动态加载,而不是在应用程序中引用.

处理完成后,需要在服务器上重新编译DLL并稍后再次加载.
为了做到这一点,我需要释放它,否则我收到以下消息:"无法将文件"Process.dll"复制到"Process.dll".进程无法访问文件'Process.dll',因为它是被另一个进程使用."

所以问题是:如何Process.dll在重新加载之前以编程方式从我的应用程序中释放/释放/卸载.当然,重点是在停止应用程序的情况下执行此操作.

编辑1:

建议的解决方案是这样的:

AppDomain newDomain4Process = AppDomain.CreateDomain("newDomain4Process");
Assembly processLibrary = newDomain4Process.Load("Process.dll");
AppDomain.Unload(newDomain4Process);
Run Code Online (Sandbox Code Playgroud)

我仍然遇到的问题是,虽然我给出了正确的完整路径,但我得到了一个FileNotFound Exception.这篇文章的答案也没有预期的效果.

编辑2:

这篇文章救了我的命,这里是代码:

class ProxyDomain : MarshalByRefObject
    {
        public Assembly GetAssembly(string AssemblyPath)
        {
            try
            {
                return Assembly.LoadFrom(AssemblyPath);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

   ProxyDomain pd = new ProxyDomain();
   Assembly a = pd.GetAssembly(FullDLLPath);
Run Code Online (Sandbox Code Playgroud)

编辑3:
我没有访问AppDomain并使用之前的解决方案卸载它.当我使用经典的AppDomain创建方法时,我感觉到阿列克谢的警告:AppDomain.Unload"似乎"工作,但程序集仍然被加载(模块视图).所以我仍然以某种方式遇到问题,因为我无法真正有效地卸载DLL.

c#

32
推荐指数
3
解决办法
5万
查看次数

线程安全如何是NLog?

好,

我已经等了好几天才决定发布这个问题,因为我不知道如何说明这一点,重新进入一篇详细的帖子.但是,我认为在这一点上要求社区提供帮助是相关的.

基本上,我尝试使用NLog为数百个线程配置记录器.我认为这将非常简单,但我在几十秒后得到了这个异常:" InvalidOperationException:Collection被修改;枚举操作可能无法执行 "

这是代码.

//Launches threads that initiate loggers
class ThreadManager
{
    //(...)
    for (int i = 0; i<500; i++)
    {
        myWorker wk = new myWorker();
        wk.RunWorkerAsync();
    }

    internal class myWorker : : BackgroundWorker
    {             
       protected override void OnDoWork(DoWorkEventArgs e)
       {              
           // "Logging" is Not static - Just to eliminate this possibility 
           // as an error culprit
           Logging L = new Logging(); 
           //myRandomID is a random 12 characters sequence
           //iLog Method is detailed below
          Logger log = L.iLog(myRandomID); …
Run Code Online (Sandbox Code Playgroud)

c# logging multithreading nlog

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

是什么让Cassandra(以及NoSQL一般)成为RDBMS的更好解决方案?

好吧,NoSQL现在是一个流行语,所以我一直在研究它.我还没有理解ColumnFamilies和SuperColumns等...但我一直在研究数据是如何映射的.

看完这个文章,和其他人,似乎数据在像格式的JSON映射.

Users = {
    1: {
        username: "dave",
        password: "blahblah",
        dateReged: "1/1/1"
    },
    2: {
        username: "etc",
        password: "blahblah",
        dateReged: "2/1/1",
        comment: "this guy has a comment and dave doesns't"
    },
}
Run Code Online (Sandbox Code Playgroud)

RDBMS格式为:

Table name: "Users"

id | username | password | dateReged | comment
---+----------+----------+-----------+--------
 1 |  dave    | blahblah |  1/1/1    |
---+----------+----------+-----------+--------
 2 |  etc     | blahblah |  2/1/1    | this guy has a comment and dave doesn't
Run Code Online (Sandbox Code Playgroud)

假设我理解正确并且上面的示例是正确的,为什么我会选择RDBMS设计而不是NoSQL设计?就个人而言,我更愿意使用JSON结构......这是否意味着我应该选择NoSQL而不是MySQL?

我想我要问的是"我什么时候应该选择NoSQL over RDBMS?"

另外,正如我所说,我还没有完全理解如何实现Cassandra数据库.即,如何在新数据库中创建 …

sql database cassandra nosql

20
推荐指数
5
解决办法
2万
查看次数

Visual Studio解决方案资源管理器/导航器图标含义

我无法找到任何资源列出解决方案资源管理器和/或导航器解释其含义的所有图标.我的意思是,对于那些不熟悉的人来说,在文件旁边看到一个正方形,一个问号或一个无条目符号是非常模糊的.

任何帮助非常感谢

visual-studio-2010 visual-studio

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

在.Net中实现并行任务队列

一个图像说的不仅仅是文字,所以这里基本上就是我想要实现的目标:(
为了简洁起见,我还使用了水果类比)
在此输入图像描述

我过去很多次使用不同的.Net类之王(BackGroundWOrkers,ThreadPool,Self Made Stuff ......)做过这种事情.

我在这里要求提供建议并获得有关如何有效地做到这一点的新想法.
这是一个高计算程序,因此我收到数百万(结构相似但内容不相似)的数据,这些数据必须排队才能根据其内容类型进行处理.因此,我想避免为每个要处理的单个数据创建并行任务(这会使CPU过载并且设计不佳恕我直言).这就是为什么我想到只有一个线程为EACH数据TYPE运行,专门用于处理它(知道"Press Juice"方法是通用的并且独立于要按下的水果)

欢迎任何想法和实施建议.
我可以自由地提供任何进一步的细节.

.net c# multithreading task-parallel-library

18
推荐指数
2
解决办法
7109
查看次数

EJB和JPA如何相关?

我正在阅读动态书中的EJB 3,我有以下问题:
您是否使用@Entity编写和注释POJO,以及EJB实体类型?

我不明白JPA与EJB有什么关系.JPA现在不是一个自己的规范吗?实体也包含在自己的持久性容器中.他们谈论EJB 3 Java Persistence API等,但我不明白实体与EJB有什么关系.

java jpa java-ee ejb-3.0

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

Hbase客户端无法与远程Hbase服务器连接

我为远程服务器编写了以下hbase客户端类:

System.out.println("Hbase Demo Application ");

            // CONFIGURATION

                // ENSURE RUNNING
            try {
                HBaseConfiguration config = new HBaseConfiguration();
                config.clear();
                config.set("hbase.zookeeper.quorum", "192.168.15.20");
                config.set("hbase.zookeeper.property.clientPort","2181");
                config.set("hbase.master", "192.168.15.20:60000");
                //HBaseConfiguration config = HBaseConfiguration.create();
    //config.set("hbase.zookeeper.quorum", "localhost");  // Here we are running zookeeper locally
                HBaseAdmin.checkHBaseAvailable(config);


                System.out.println("HBase is running!");
            //  createTable(config);    
                //creating a new table
                HTable table = new HTable(config, "mytable");
                System.out.println("Table mytable obtained ");  
                addData(table);
            } catch (MasterNotRunningException e) {
                System.out.println("HBase is not running!");
                System.exit(1);
            }catch (Exception ce){ ce.printStackTrace();
Run Code Online (Sandbox Code Playgroud)

它抛出一些例外:

Oct 17, 2011 1:43:54 PM org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation getMaster
INFO: …
Run Code Online (Sandbox Code Playgroud)

java hadoop hbase

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

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

批量请求在elasticsearch 6.1.1中抛出错误

我最近升级到elasticsearch版本6.1.1,现在我无法批量索引json文件中的文档.我内联它,它工作正常.以下是该文件的内容:

{"index" : {}}
{"name": "Carlson Barnes", "age": 34}
{"index":{}}
{"name": "Sheppard Stein","age": 39}
{"index":{}}
{"name": "Nixon Singleton","age": 36}
{"index":{}}
{"name": "Sharron Sosa","age": 33}
{"index":{}}
{"name": "Kendra Cabrera","age": 24}
{"index":{}}
{"name": "Young Robinson","age": 20}
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,

curl -XPUT 'localhost:9200/subscribers/ppl/_bulk?pretty' -H 'Content-Type: application/json' -d @customers_full.json
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

"error" : {
    "root_cause" : [
      {
        "type" : "illegal_argument_exception",
        "reason" : "The bulk request must be terminated by a newline [\n]"
      }
    ],
    "type" : "illegal_argument_exception",
    "reason" : "The bulk request must be terminated by …
Run Code Online (Sandbox Code Playgroud)

json bulk-load elasticsearch elasticsearch-5

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

极端内存条件测试:如何使RAM饱和?

我想写一小段程序启动线程,以线性方式消耗可用的RAM内存,直到某个级别,并停止(理想情况下,暂停直到"足够"的内存被释放并继续创建线程之后,等等上.)

我尝试了以下,但list.Add(new byte[])需要连续的RAM空间并丢弃OutOfMemoryException,这不是我想要模拟的.

编辑:
我有一个多线程内存饥饿的应用程序,吃了一大堆RAM GB.我想要的是在"实验室条件"中隔离/重现这种情况来解决它,即编写自适应mem监视/线程限制器草案.我正在使用x64 OS和x64平台.为了说清楚:我想看到的结果是任务管理器内存监视器由于程序而直接上升.

    static void Main(string[] args)
    {            
        ComputerInfo ci = new ComputerInfo();
        D("TOTAL PHYSICAL MEMORY : " + Math.Round(ci.TotalPhysicalMemory / Math.Pow(10,9),3) +" GB");

        //########### Fill Memory ###############
        var list = new List<byte[]>();

        Thread FillMem= new Thread(delegate()
        {
            while (Process.GetCurrentProcess().PrivateMemorySize64 < MAX_MEM_LEVEL)
            {
                list.Add(new byte[1024 * 10000]); //<- I Need to change this
                Thread.Sleep(100); 
            }
        });

        FillMem.Start();

        //########### Show used Memory ###############
        Thread MonitorMem = new Thread(delegate()
        {
            while (true)
            {
                D("PROCESS …
Run Code Online (Sandbox Code Playgroud)

c# performance

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