天道酬勤,学无止境

How to make the application run several processes, each of which used a separate XML settings file?

I made a conditional example.
There are:
- files with settings (file "Likewise"):
- .. \ 01 \ setting \ fold_1 \ settings_1.xml
.. \ 01 \ setting \ fold_2 \ settings_2.xml
.. \ 01 \ setting \ fold_3 \ settings_3.xml
- data files (used for example (file "Data")):
.. \ 01 \ data \ fol_data_1 \ fol_data_1.txt
.. \ 01 \ data \ fol_data_2 \ fol_data_2.txt
.. \ 01 \ data \ fol_data_3 \ fol_data_3.txt

The "Settings" files are displayed in the tree view. When you move the focus to the tree, all settings are displayed in the form fields depending on the file. The number of settings in the example is conventionally accepted. In fact, the example uses the "File data" setting "Data" (textBox4) ". Those. in each "settings_N.xml" the path to the corresponding "Data" file.

Scenario.

  1. The user. Selects one or more "Likewise" files in the tree;

    The choice is made by checking the CheckBox certificate to "true";

    1. The user. Click "Run" button (button3);
    2. The program. Creates a separate tab in the "tabControl" of each "Data" file; (in this example, "tabControl" is not used)

    3. The program. Creates tables DateTable for each file "Data";

    4. The program. Creates DateGrid for each "Data" file;
    5. The program. Parse data from the "Data" file;
    6. The program. Logs into DateTable;
    7. The program. Places in DataGrid;

Items 4 - 7 must be executed simultaneously for all selected "Nystroka" files. In this example, the "Run" button (button3) executes the script for only one "Data" file.

I suspect this should be done by means of "multithreading" (Thread), but I can not figure out how to approach it.

Or are there other ways?

Question.

  1. How to implement this scenario?
  2. How to organize classes?

Form1.cs
Code - link

Project - link

Pic_1
Pic_2

标签

评论

I would say use a BackgroundWorker ?!

Here is a link with a nice example, if needed I will provide a example myself. BackGroundWorkder Example

Edit:

This is a little example for you

private void MethodForWorker()
{
    BackgroundWorker worker = new BackgroundWorker();
    // This is where we create the event that will run on the background, not blocking the main thread
    worker.DoWork += this.Worker_DoWork;
    // This is where we create the event that will run after the backgroun as finished doing its work, this is not necessary per say, only if you need for it to run something after the background work is done
    worker.RunWorkerCompleted += this.Worker_RunWorkerCompleted;
    // To start the background work
    worker.RunWorkerAsync();
}

private void Worker_DoWork(object sender, DoWorkEventArgs e)
{
    // This is where you put the code that will run on the background
    // Remenber, to send stuff to the main thread you must use the invoke
    this.Invoke(new Action(() =>
    {
        // Code of what you need to pass to the main thread, for example to use a MessageBox or to update a label ? up to you if you need to do stuff on the main thread
    }));
}

private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    // This is where you put the code that will run after the Worker_DoWork has finnish doing all is job
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在 Delphi 中创建类似 Chrome 的应用程序,它在一个窗口内运行多个进程?(How to create Chrome like application in Delphi which runs multiple processes inside one Window?)
    问题 是否可以创建一个“应用程序组”,它可以在一个窗口下运行,但在单独的进程中运行,例如在 Chrome 浏览器中? 我想把一个应用程序分成多个部分,这样一个崩溃或卡住的过程就不会影响其他的,但仍然保持尽可能接近原始系统的外观和感觉。 我知道 Chrome 源代码可用,但是有没有为 Delphi 准备好一半的东西? 回答1 我想基本上你会创建多个进程,每个进程创建一个窗口/表单。 其中一个进程具有主窗口,其中嵌入了每个子窗口。 这就像调用 SetParent 一样简单。 不同进程中的窗口将使用 IPC(进程间通信)机制(如命名管道或窗口消息)相互通信。 有关在 Delphi 中使用 SetParent 的嵌入示例,请参阅此问题。 有关在 Delphi 中使用命名管道的示例,请参阅此问题。 回答2 看看 HeidiSQL 的 Delphi 代码。 这是一个很好的开源 MySQL 客户端,实现了这种机制。 阅读 Chrome 发布时发布的这条新闻: “谷歌在追赶 HeidiSQL?” :-) (来源:heidisql.com) 回答3 Harriv,您可以使用基于插件的方案。 你有一个主应用程序,它动态加载新闻功能。 这里有几个可用的库,我留下了一些。 构架 TMS 插件框架 JVCL 的 TJvPluginManager Delphi 插件框架九头蛇 教程 为您的 Delphi
  • 您如何在PHP / MySQL应用程序中充分利用多核CPU?(How do you make good use of multicore CPUs in your PHP/MySQL applications?)
    问题 我维护一个定制的类似CMS的应用程序。 每当提交文档时,都会执行一些任务,这些任务可以大致分为以下几类: MySQL查询。 HTML内容解析。 搜索索引更新。 类别1包括对与文档内容有关的各种MySQL表的更新。 类别2包括对存储在MySQL LONGTEXT字段中的HTML内容的解析,以执行一些自动锚标记转换。 我怀疑在此任务上花费了大量的计算时间。 类别3仅使用与文档相对应的几个字段就对基于MySQL的简单搜索索引进行了更新。 所有这些任务都需要完成,才能将文档提交视为已完成。 承载此应用程序的计算机具有双四核Xeon处理器(总共8个内核)。 但是,无论何时提交文档,所有执行的PHP代码都被限制为在一个内核上运行的单个进程。 我的问题: 您使用什么方案(如果有)在多个CPU内核之间分配PHP / MySQL Web应用程序处理负载? 我理想的解决方案基本上是产生几个进程,让它们在几个内核上并行执行,然后阻塞直到所有进程完成。 相关问题: 您最喜欢的PHP性能分析工具是什么? 回答1 PHP并非完全面向多线程:正如您已经注意到的,每个页面都由一个PHP进程提供服务-一次只做一件事,包括在数据库服务器上执行SQL查询时仅“等待”。 不幸的是,您对此无能为力:这就是PHP的工作方式。 不过,这里有一些想法: 首先,您的服务器上可能一次拥有一个以上的用户
  • 什么样的应用程序需要多线程?(What kinds of applications need to be multi-threaded?)
    问题 有哪些应用程序需要多线程或不需要多线程的具体示例,但这样会更好? 如果以每个帖子一个应用程序的形式给出答案,那么最适用的将浮到顶部。 回答1 没有硬性和快速的答案,但大多数情况下,对于工作流程/计算是顺序的系统,您不会看到任何优势。 然而,如果可以将问题分解为可以并行运行的任务(或者问题本身是大规模并行的 [如某些数学或分析问题]),您就会看到很大的改进。 如果您的目标硬件是单处理器/内核,则您不太可能看到多线程解决方案的任何改进(因为无论如何一次只能运行一个线程!) 编写多线程代码通常更难,因为您可能需要投入时间来创建线程管理逻辑。 一些例子 图像处理通常可以并行完成(例如,将图像分成 4 个并在 1/4 的时间内完成工作),但这取决于正在运行的算法以查看是否有意义。 动画的渲染(来自 3DMax 等)是大规模并行的,因为每一帧都可以独立地渲染到其他帧——这意味着可以将 10 或 100 台计算机链接在一起以提供帮助。 GUI编程通常有助于在做一些缓慢的事情时至少有两个线程,例如处理大量文件 - 这允许界面在工作人员完成艰苦工作时保持响应(在 C# 中,BackgroundWorker 就是这样的一个例子) GUI 是一个有趣的领域,因为如果工作算法通过给它时间来保持主 GUI“活着”,则可以在没有多线程的情况下保持界面的“响应性”,在 Windows API 术语中(在
  • 几个 AppDomains 和本机代码(Several AppDomains and native code)
    问题 我的 C# 应用程序使用的本机代码不是线程安全的。 我可以运行该本机代码的多个进程,使用进程间通信来实现并发。 我的问题是,我是否可以改用 App Domains,以便多个托管线程(每个位于不同的 App Domain)调用本机代码并且它们不会相互干扰? 主要目标是防止进程分离。 回答1 是的,这是可以做到的,但您应该认真衡量努力是否以福利来回报。 Windows 不会加载非托管DLL 的多个副本,并且非托管 DLL 是按进程加载的(不是每个AppDomain )。 您可以做的是创建同一 DLL 的多个临时副本,然后使用LoadLibrary()加载它们。 每个进程都会加载每个进程,但它们会彼此分离(因此它们将是线程安全的)。 所有这些东西都可以绑定在一个包含非托管调用( LoadLibrary 、 FreeLibrary 、 GetProcAddress和调用本身)的类中。 它将使用更少的资源,并且比多个进程更快,但您必须放弃DllImport使用。 我看到的唯一好处是,如果您重用保留缓存的实例(保留进程缓存比保留对象缓存更难),这将比多个进程更好地扩展(因为它使用更少的资源)。 回答2 不,AppDomains 是一个纯托管代码概念。 它通过将托管对象根分开来实现隔离。 一个 AppDomain 无法看到另一个 AppDomain 的对象
  • 加载共享库两次(Loading shared library twice)
    问题 我试图在 C 中加载一个共享库两次: lib1 = dlopen("mylib.so", RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND); lib2 = dlopen("mylib.so", RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND); 我想要的是 lib1 和 lib2 具有单独的地址空间,以便它们可以做不同的事情。 目前,我可以实现这一点的唯一方法是复制 mylib 使代码如下所示: lib1 = dlopen("mylib.so", RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND); lib2 = dlopen("mylib2.so", RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND); 在有限的范围内,这对我来说很好用。 但是,我有一个应用程序,它使用库的次数一般,这使得复制库很麻烦。 每次加载库时,有没有更好的方法来拥有单独的地址空间? 编辑: 我想多次加载库,因为我的应用程序正在处理一种消息队列。 消息队列中的项引用共享库(例如 mylib)的名称,并包含一组应由库处理的数据。 我想在多线程环境中处理 MQ,在自己的线程中运行对库方法的每次调用。 只要 MQ 只包含一次对库的调用,一切都会按预期进行。 但是,当我有两个项目使用同一个库时
  • 什么是N层架构?(What is N-Tier architecture?)
    问题 我最近看过很多开发人员职位,其中包含这样的句子:“必须具有N-Tier架构的经验”或“必须能够开发N-Tier的应用程序”。 这使我问,什么是N-Tier体系结构? 一个人如何获得经验? 回答1 维基百科: 在软件工程中,多层体系结构(通常称为n层体系结构)是一种客户端-服务器体系结构,其中表示,应用程序处理和数据管理在逻辑上是独立的过程。 例如,使用中间件为用户和数据库之间的数据请求提供服务的应用程序采用多层体系结构。 “多层体系结构”的最广泛使用是指三层体系结构。 所谓的“层级”是有争议的,但是在我看来,它至少需要跨越过程边界。 否则,它称为图层。 但是,它不必在物理上不同的机器中。 尽管我不建议这样做,但是您可以在同一盒子上托管逻辑层和数据库。 编辑:一个含义是,表示层和逻辑层(有时称为业务逻辑层)有时需要跨越不可靠,缓慢和/或不安全的网络“跨线”跨越机器边界。 这与简单的桌面应用程序有很大的不同,在简单的桌面应用程序中,数据与文件位于同一计算机上,在Web应用程序中可以直接访问数据库。 对于n层编程,您需要以某种称为“数据集”的可移植形式打包数据,然后通过网络进行传输。 .NET的DataSet类或诸如SOAP之类的Web服务协议很少是通过电线飞行对象的此类尝试。 回答2 它基于您如何将表示层与核心业务逻辑和数据访问分开(维基百科) 3层表示表示层+组件层+数据访问层
  • Rails是无共享的,还是单独的请求可以访问相同的运行时变量?(Is Rails shared-nothing or can separate requests access the same runtime variables?)
    问题 PHP在无共享环境中运行,在这种情况下,这意味着每个Web请求都在干净的环境中运行。 您只能通过单独的持久层(文件系统,数据库等)访问其他请求的数据。 Ruby on Rails呢? 我刚刚读了一篇博客文章,指出单独的请求可能会访问相同的类变量。 我想到这可能取决于Web服务器。 Mongrel的常见问题解答指出,Mongrel每个请求使用一个线程-表示无共享环境。 FAQ继续指出RoR不是线程安全的,这进一步表明RoR不会存在于共享环境中,除非新请求重用了从先前请求创建的内存对象。 显然,这具有巨大的安全后果。 所以我有两个问题: RoR环境是无共享的吗? 如果RoR在共享环境中运行(或可能在某些情况下运行),那么我应该对哪些变量和其他数据存储抱有幻想? 更新:我将进一步澄清。 在Java Servlet容器中,您可以具有可在多个请求之间保留的对象。 通常,这是为了缓存多个用户可以访问的数据,数据库连接等。在PHP中,这不能在应用程序层完成,必须在单独的持久性层(如Memcached)中完成。 因此有两个问题:RoR是哪种情况(PHP或Java),如果是Java,则哪种数据类型在多个请求之间仍然存在? 回答1 简而言之: 不,Rails永远不会在没有共享的环境中运行。 对类变量和类实例变量抱有偏执。 较长的版本: Rails流程通过加载框架和应用程序来开始其生命周期。
  • 什么是 IIS 应用程序池?(What is an IIS application pool?)
    问题 究竟什么是应用程序池? 它的目的是什么? 回答1 应用程序池允许您将应用程序彼此隔离,即使它们运行在同一台服务器上。 这样,如果一个应用程序出现错误,它就不会关闭其他应用程序。 此外,应用程序池允许您将需要不同安全级别的不同应用程序分开。 这是一个很好的资源:IIS 和 ASP.NET:应用程序池 回答2 我支持投票最高的答案,但如果有人觉得它有用,我想在这里添加更多细节。 精简版: IIS 运行您在名为 w3wp.exe 的进程中配置的任何网站。 IIS 应用程序池是 IIS 中的一项功能,它允许每个网站或其一部分在相应的 w3wp.exe 进程下运行。 因此,您可以在一个 w3wp.exe 或 100 个不同的 w3wp.exe 中运行 100 个网站。 例如,在同一个应用程序池(同一个 w3wp.exe)中运行 3 个网站以节省内存使用量。 , 在两个不同的应用程序池中运行 2 个不同的网站,以便每个网站都可以在单独的用户帐户下运行(称为应用程序池标识)。 在一个应用程序池中运行一个网站,在不同的应用程序池下运行一个子站点“网站/应用程序”。 更长的版本: 每个网站或网站的一部分,您都可以在一个应用程序池下运行。您可以使用应用程序池来控制网站的一些基本设置。 您希望该网站在不同的 w3wp.exe 进程下运行。然后创建一个新的应用程序池并将其分配给该网站。
  • 为什么每个应用程序只有一个JVM?(Why have one JVM per application?)
    问题 我读到每个应用程序都在自己的JVM中运行。 为什么会这样呢? 他们为什么不让一个JVM运行2个或更多应用程序? 我读了一篇SO帖子,但是在那里找不到答案。 每个Java应用程序有一个JVM吗? 我说的是通过公共静态void main(String [])方法启动的应用程序...) 回答1 (我假设您正在谈论通过public static void main(String[])方法启动的应用程序...) 从理论上讲,您可以在JVM中运行多个应用程序。 实际上,它们可以以各种方式相互干扰。 例如: JVM具有一组System.in/out/err,一种缺省编码,一种缺省语言环境,一组系统属性,等等。 如果一个应用程序更改了这些设置,它将影响所有应用程序。 任何调用System.exit()的应用程序都会杀死所有应用程序。 如果一个应用程序线程失效,并且消耗过多的CPU或内存,也会影响其他应用程序。 简而言之,有很多问题。 人们已经尽力使这项工作成功,但是他们从未真正成功。 一个示例是Echidna库,尽管该项目已经安静了大约10年。 JNode是另一个示例,尽管它们(实际上是我们)是通过入侵核心Java类(例如java.lang.System)来“欺骗”的,从而使每个应用程序看上去都是System.in/out/err的独立版本,即系统属性依此类推1 。 1-此(“小程序”
  • 具有不同部署标识但应用程序标识相同的多个 ClickOnce 安装(Multiple ClickOnce installations with different Deployment Identity, but same Application Identity)
    问题 对于不同的环境,我们有多个具有不同配置文件的相同程序集的部署。 我们将这些打包成具有不同部署标识(Program_ENV1、Program_ENV2 等)的单独 ClickOnce 部署。 应用程序标识是 Program.exe,因为我们有一个第三方组件,要求使用它的可执行文件与编译时具有相同的名称。 当我们想要在同一台机器上多次安装相同版本号(用于测试)时,我们会在安装时收到一个错误,即已经存在具有相同应用程序标识的东西。 我们不想为每个部署使用新版本号进行单独的构建(QA 签署了版本 XXX45 程序集,而不是版本 XXX46)。 有没有其他方法可以解决这个问题? 回答1 要运行 ClickOnce 应用程序的并发版本,您必须更改 AssemblyName,并且建议您还更改发布属性中的 ProductName,以便您可以在开始菜单中判断哪个是哪个。 单击此处查看如何同时安装多个版本 回答2 我最终使用-u -Update选项为基于生产的 QA 创建新部署。 以下是我为测试验证所做的步骤 创建一个简单的 WPF 应用程序将 mage.exe 复制到项目中,因为 Visual Studio 无法在构建时解析它将以下文本添加到项目的后期构建中 cd "$(TargetDir)" "$(ProjectDir)mage.exe" -New Application -Name $
  • 使用JavaCompiler和ClassLoader编译和运行用户代码(compiling and running user code with JavaCompiler and ClassLoader)
    问题 我正在编写用于Java学习的Web应用程序。 使用哪些用户可以在我的服务器上编译其代码+运行该代码。 使用JavaCompiler可以很容易地进行编译: JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>(); CompilationTask task = compiler.getTask(null, null, diagnostics, null, null, prepareFile(nazwa, content)); task.call(); List<String> returnErrors = new ArrayList<String>(); String tmp = new String(); for (Diagnostic diagnostic : diagnostics.getDiagnostics()) { tmp = String.valueOf(diagnostic.getLineNumber()); tmp += " msg: " + diagnostic.getMessage(null)
  • 不同的进程是否有共享静态变量或公共副本的单独副本?(Does different process has seperate copy of Shared Static variable or common copy?)
    问题 我试图了解共享内存概念的基础。 我试图创建一个具有一个函数和一个 STATIC 数组变量的共享库。 我想通过该共享库的函数访问静态数组变量。 这是我的共享库 //foo.c #include <stdio.h> static int DATA[1024]={1 ,2 ,3 ,...., 1024}; inline void foo(void) { int j, k=0; for(j=0;j<1024;j++) { k=DATA[j]; } k+=0; } 我按照共享库中的说明创建了共享库对象 (libfoo.so) 现在我的问题是 1> 如果我从两个不同的程序(程序 1 和程序 2)访问 foo(),程序 1 和程序 2 是否会有 foo() 函数的单独副本? 2> 程序 1 和程序 2 是否会有单独的静态数据数组副本? 3> 它们会加载到相同的物理内存位置吗? 如果静态 DATA 数组是单独加载的,有没有办法强制/使其加载到相同的内存位置? 4> 有没有办法找到程序1 和程序2 的静态数据数组的存储位置? 我在linux下使用gcc。 任何帮助将不胜感激。提前致谢。 回答1 只有一种定义明确的进程间共享内存的方式:共享内存。 从不同的进程访问这个内存需要适当地同步对该区域的访问(由进程本身)。 如果不同步访问,它会导致像 UNIX/Linux/Windows
  • 多线程:多于核心的线程有什么意义?(Multithreading: What is the point of more threads than cores?)
    问题 我认为多核计算机的要点是它可以同时运行多个线程。 在这种情况下,如果您有一台四核计算机,那么一次运行四个以上的线程又有什么意义呢? 他们会不会只是在互相浪费时间(CPU资源)? 回答1 答案围绕着线程的目的,即并行性:一次运行多条独立的执行线。 在“理想”的系统中,每个内核将有一个线程执行:没有中断。 实际上并非如此。 即使您有四个核心和四个工作线程,您的进程及其线程也将不断被其他进程和线程切换出。 如果您正在运行任何现代OS,则每个进程至少都有一个线程,而许多进程都有更多线程。 所有这些过程都同时运行。 您现在可能已经在计算机上运行了数百个线程。 如果没有时间从线程中“偷走”线程,您将永远不会遇到这样的情况。 (好吧,如果它是实时运行的,或者正在使用实时操作系统,或者甚至在Windows上,也可以使用实时线程优先级。但这很少见。) 以此为背景,答案是:是的,在一台真正的四核计算机上,四个以上的线程可能会给您带来“彼此窃取时间”的情况,但前提是每个单独的线程都需要100%CPU 。 如果某个线程无法100%正常工作(例如UI线程可能无法正常工作,或者某个线程正在做少量工作或正在等待其他事情),那么安排另一个线程实际上是一个很好的情况。 实际上比这更复杂: 如果您需要同时完成五项工作,该怎么办? 一次运行它们,而不是先运行四个,然后再运行第五个,则更有意义。 线程真正需要100
  • 同时运行两个线程(Running two threads at the same time)
    问题 我想知道一个程序是否可以同时运行两个线程(这基本上是正确的方法吗?)。 但是,如果我要在运行在线程A上的一个函数中进行系统调用,而又要在运行在线程B上的另一个函数中运行其他任务,那么它们都可以同时运行还是我第二个可以运行?功能等到系统调用完成? 附加到我的原始问题:现在,在进行系统调用时,此过程是否仍将是不间断的过程? 我说的是在UNIX / LINUX上使用任何系统调用。 回答1 多线程和并行处理是两个完全不同的主题,每个主题都值得进行自己的交谈,但是为了介绍起见... 穿线: 当您启动可执行文件时,它正在进程中的线程中运行。 当您启动另一个线程时,将其称为线程2,您现在在同一进程中有2个单独运行的执行链(线程)。 在单核微处理器(uP)上,可以运行多个线程,但不能并行运行。 尽管从概念上讲线程通常被说成是在同一时间运行,但实际上它们实际上是在操作系统分配和控制的时间片中连续运行的。 这些切片彼此交错。 因此,线程1的执行步骤实际上不会与线程2的执行步骤同时发生。这些行为通常会扩展到您创建的尽可能多的线程,即,执行链的数据包都在同一进程中工作并共享时间。切片由操作系统分发出去。 因此,在您的系统调用示例中,它实际上取决于系统调用是否结束才能允许另一个线程的执行步骤继续执行。 有几种因素会影响到发生的情况:这是阻塞呼叫吗? 一个线程是否比另一个线程具有更高的优先级。
  • 一个简单的 Python 部署问题——一个痛苦的世界(A simple Python deployment problem - a whole world of pain)
    问题 我们有几个在 Linux 上运行的 Python 2.6 应用程序。 其中一些是 Pylons Web 应用程序,其他只是我们使用nohup从命令行运行的长时间运行的进程。 我们还在开发和生产中使用virtualenv 。 将这些应用程序部署到生产服务器的最佳方式是什么? 在开发中,我们只需将源代码树放入任何目录,设置一个 virtualenv 并运行 - 非常简单。 我们可以在生产中做同样的事情,也许这确实是最实用的解决方案,但在生产中运行svn update感觉有点错误。 我们也尝试过fab ,但它只是第一次不起作用。 对于每个应用程序,其他地方都会出错。 考虑到我们要实现的目标基本上非常简单,我觉得整个过程太难了。 这是我们希望从部署过程中得到的。 我们应该能够运行一个简单的命令来部署应用程序的更新版本。 (如果初始部署涉及一些额外的复杂性,那很好。) 当我们运行这个命令时,它应该将某些文件从 Subversion 存储库或本地工作副本复制到服务器上的指定“环境”,这可能意味着不同的 virtualenv。 我们在同一台服务器上同时拥有应用程序的临时版本和生产版本,因此需要以某种方式将它们分开。 如果它安装到站点包中,那也没关系,只要它可以工作。 我们在服务器上有一些应该保留的配置文件(即不会被部署过程覆盖或删除)。 其中一些应用程序从其他应用程序导入模块
  • 使用 gunicorn 和 nginx 部署 Django(Deploying Django with gunicorn and nginx)
    问题 这是一个广泛的问题,但我想得到一个规范的答案。 我一直在尝试在Django 中使用gunicorn和nginx部署一个站点。 在阅读了大量教程后,我已经成功了,但我不能确定我遵循的步骤是否足以运行一个网站而不会出现问题,或者可能有更好的方法来做到这一点。 这种不确定性很烦人。 这就是为什么我正在为新手寻找一个非常详细且解释清楚的答案。 我不想解释太多我知道的和我不知道的,因为这可能会使答案有些偏差,而其他人可能会在较小程度上从您的答案中受益。 但是,我希望看到的一些内容是: 您认为哪种“设置”效果最好? 我使用了virtualenv并将我的Django项目移到了这个环境中,但是我看到了另一个设置,其中有一个用于虚拟环境和其他用于项目的文件夹。 如何以允许在单个服务器中托管多个站点的方式进行设置? 为什么有些人建议使用gunicorn_django -b 0.0.0.0:8000而其他人建议使用gunicorn_django -b 127.0.0.1:8000 ? 我在 Amazon EC2 实例中测试了后者,但它没有工作,而前者工作没有问题。 nginx的配置文件背后的逻辑是什么? 有太多使用截然不同的配置文件的教程,我对哪一个更好感到困惑。 例如,有些人使用alias /path/to/static/folder而其他人使用root /path/to/static
  • ExpressJS Server-如何处理多个域(ExpressJS Server - How to handle multiple domains)
    问题 我在用Express鬼混,我想知道“最正确”的方法是处理链接到同一服务器的多个域的方法。 假设我们有 foo.com bar.net baz.com 所有这些都指向111.222.333.444 。 那台机器正在运行带有Express的NodeJS。 我当前的解决方案如下所示: var express = require( 'express' ), app = module.exports = express.createServer(), // ... more lines ... app.get( '/', routes.index.bind( app ) ); 到目前为止,这非常简单。 到目前为止,唯一的例外是在我的app.configure调用中,我没有对.use( express.static() )进行调用。 那是因为.routes.index()方法现在看起来像这样: var fs = require( 'fs' ), // ... more lines ... exports.index = function( req, res ) { var host = /(\w+\.)?(.*)\.\w+/.exec( req.header( 'host' ) ), app = this; switch( host[ 2 ] ) { case 'foo': app
  • 如何在单独的控制台上使用一种配置启动多个 Java 程序(使用 Eclipse)(How to launch multiple Java programs with one configuration on separate consoles (with Eclipse))
    问题 我正在使用具有多个组件的 Java 程序(目前使用 Eclipse 和 Ant)。 有没有办法用一个启动配置启动多个程序? 我有一个 Ant 目标可以完成这项工作(启动多个程序),但我想做一些事情: 我想用 Eclipse 调试程序,因此需要启动 Eclipse。 我想在单独的控制台上查看程序的输出。 使用单独的控制台和/或调试“一键”启动多个 Java 程序的其他方法也可以。 回答1 ['多次发射部分':] 如果您有一个 ant 启动配置可以执行您想要的操作,您可以随时将其转换为调用 ant 的 java 启动器。 Main Class: org.apache.tools.ant.Main -Dant.home=${resource_loc:/myPath/apache_ant} -f ${resource_loc:/myProject/config/myFile-ant.xml} 然后,您可以将这个 ant 会话作为常规 Java 应用程序启动,并使用所有 Eclipse 调试工具。 在 User Entries 部分添加到您的类路径(在您的项目和默认路径之前): 蚂蚁罐子 ant-launcher.jar [多控制台部分] 可能的解决方案是确保您的 ant 启动器实际在其自己的 JVM 进程中启动不同的应用程序(每个应用程序一个 javaw.exe) 这样
  • 分布式系统笔记(一)
    文章目录 分布式系统什么是分布式系统?两个重要的含义集中式系统分布式系统的主要特点分布式系统的主要目标 为什么用分布式系统**分布式系统挑战**异构性缺乏全球时钟一致性普遍的节点故障不可靠的网络/容错性故障的独立性并发透明性开放性安全性不确定性可扩展性 分布式系统的历史1.单应用架构2.应用服务器和数据库服务器分离3.应用服务器集群4.数据库服务器读写分离5.使用搜索引擎,缓解数据库读库压力6.引入缓存机制7.数据库的水平/垂直拆分8.应用的拆分 分布式系统设计分布式结构体系1.基于对象的体系结构2.面向服务的架构3.REST风格的架构4.微服务架构(MSA)5.容器技术6.Servlet架构 主要的分布式技术消息传递(Message Passing)远程过程调用(Remote Procedure Call)远程求值客户机/服务器模式(Client/Server,C/S)代码点用(Code-on-demand) 分布式系统 什么是分布式系统? 计算机节点组成的系统,这些节点通过网络进行通信、为了完成共同的任务而协调工作。 分布式系统时若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。 分布式系统是由使用分布式中间件连接的自治计算机组成的任何网络结构。分布式系统有助于共享不同的资源和功能,从而为用户提供单个集成的一致网络。 分布式系统的对立面是集中式系统
  • 应用程序池和工作进程线程之间是什么关系?(What is the relationship between Application Pools and worker process threads?)
    问题 我正在对ASP.NET应用程序中的重新启动进行故障排除。 该应用每天大约重新启动20次。 我们强烈怀疑应用程序的一部分,因为重新启动是在该特定功能投入生产时开始的。 我已经使用log4net库在这些页面上添加了一些日志记录,但是在解释日志时遇到了麻烦。 当ASP.NET应用程序在应用程序池中运行时,仅运行该应用程序的单个实例,还是运行该应用程序的多个实例? 我知道将产生几个工作进程线程。 工作进程线程与在应用程序池中运行的应用程序有什么关系? 我想如果有多个应用程序登录到同一日志,则可能无法正确解释结果。 如果一个重新启动,但另一个没有重新启动,则日志并没有真正告诉我很多有关重新启动时发生的情况。 更新1 查看此页面,我发现以下信息: 应用程序池定义一组由一个或多个工作进程组成的组,这些进程配置有通用设置,这些设置可为分配给该应用程序池的一个或多个应用程序提供请求。 因为应用程序池允许一组Web应用程序共享一个或多个配置类似的工作进程,所以它们提供了一种方便的方法来将一组Web应用程序与服务器计算机上的其他Web应用程序隔离。 进程边界将每个工作进程分开; 因此,一个应用程序池中的应用程序问题不会影响其他应用程序池中的网站或应用程序。 但是我仍然很困惑。 我从经验中知道,我可以分配两个完全不同的应用程序来使用同一应用程序池。 这是否意味着恰好会产生两个工作进程?