有一个WCF自托管服务,必须在99%的时间内工作.有时候我们会遇到这样的内存麻烦:

但是在这个问题之后,服务正常.我们如何管理这个?任何提示和要点,以提供强大的服务,将在不同的情况下生存,非常受欢迎.
我正在进行测试,但如果失败,我不知道为什么:
Proj.Tests.StatTests.GetResults_RegularPage_ReturnListOfResults:
Expected and actual are both <System.Collections.Generic.List`1[Proj.Classes.StatResult]> with 50 elements
Values differ at index [0]
Expected: <test;98318>
But was: <test;98318>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,值是相同的.这是一些代码:
public class StatResult
{
public string word { get; set; }
public UInt64 views { get; set; }
public override string ToString()
{
return String.Format("{0};{1}", word, views);
}
}
[Test]
public void GetResults_RegularPage_ReturnListOfResults()
{
// Arrange
WordStat instance = new WordStat(Constants.WordStatRegularPage);
// Act
List<StatResult> results = instance.GetResults();
// Assert
Assert.AreEqual(results, new List<StatResult>
{
new WordStatResult { word ="test", …Run Code Online (Sandbox Code Playgroud) 应用程序本身在我之前的问题中描述.在DAL方面我使用
Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342
Run Code Online (Sandbox Code Playgroud)
这是连接字符串:
User id=usr;Password=pwd;Data Source=database1;Validate connection=True;Connection timeout=8;Pooling=false
Run Code Online (Sandbox Code Playgroud)
问题是有时ODP会在异常后引发:
Oracle.ManagedDataAccess.Client.OracleException (0xFFFFFC18): Connection request timed out
in OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd, String instanceName)
in OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
in OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
in OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
in Oracle.ManagedDataAccess.Client.OracleConnection.Open()
in MySyncApp.DBRepository.GetChangedDataDB(DateTime startPeriod) in D:\MySyncApp\MySyncApp\DB.cs:line 23
in MySyncApp.Program.<>c__DisplayClass30.<>c__DisplayClass32.<Synchronize>b__2f(ID id) in D:\MySyncApp\MySyncApp\Program.cs:line 441
Run Code Online (Sandbox Code Playgroud)
但是在这个异常之后,当我查看Oracle中的会话时,我发现实际上连接正在存在并且只是标记为INACTIVE!因此,此类连接将继续挂在服务器端,逐渐耗尽可用会话的数量.
我的代码没有什么特别的,只是
public List<DataObj> …Run Code Online (Sandbox Code Playgroud) 由于我在PL/SQL的DB-server-side中有很多程序逻辑,我想知道TDD是否适用于PL/SQL.如果你指出一些有样本和详细描述的信息资源,那就更上帝了.提前致谢!
UPD:我只需要在我的机器上存储和运行测试,不会影响其他团队成员.那可能吗?
如何TTimer在保持间隔的情况下暂停Delphi?所以,举例来说,我TTimer有间隔10秒,当我设定的计时暂停前7秒钟后工作的,它会保存其状态,然后当我重启定时器,将剩下的3秒后开火.
非常感谢!
我用的时候
SelectSingleNode("//meta[@name='keywords']")
Run Code Online (Sandbox Code Playgroud)
它不起作用,但当我使用原始文档中使用的相同案例时,它工作得很好:
SelectSingleNode("//meta[@name='Keywords']")
Run Code Online (Sandbox Code Playgroud)
所以问题是如何设置案例忽略?
好的,伙计们,比如我有这个表格,我在DockPanel中只有一个DockContent之前告诉过你
自那时起我编写的一个编辑是当用户点击左窗格中的某个项目时每个项目中的单词.我轻松地为左窗格创建了一个三元组.
它有项目主持人,项目视图,项目模型.这是每个东西的接口:
interface IProjectsModel
{
void AttachPresenter(IProjectsModelObserver observer);
System.Collections.Generic.List<Project> projects { get; }
Project selectedProject { get; set; }
}
public interface IProjectsViewObserver
{
void UserChangedSelectedProject(Project project);
}
public interface IProjectsModelObserver
{
void SelectedProjectChanged(Project project);
}
public interface IProjectsView : IView
{
List<Project> projects { set; }
Project project { set; }
void AttachPresenter(IProjectsViewObserver presenter);
}
Run Code Online (Sandbox Code Playgroud)
所以目前我正在考虑为右窗格创建一个全新的另一个MVP三元组.但这不是主要问题.我跑的主要问题是如何在上面告诉你的MVP三元组之间建立沟通过程?
我在网上看过一些文章,告诉我们在这种情况下有必要为项目引入一些模型协调员吗?
所以我的问题是:
非常感谢,伙计们!感谢您的关注和时间!
我可以在更改或添加表中的某些行时设置挂钩,并在此类事件被调整时得到通知吗?我发现网络,只是卡在管道上.但是在发送时无法立即获取管道消息.只有期刊才会收到.
我正在开发一个复杂的分布式服务,它可以实现迭代同步过程.它在不同的信息系统中每10秒同步一次业务实体.一次迭代由一堆3d派对服务调用组成,用于检索业务对象的当前状态(客户数量,商品数量,某些客户和商品详细信息等),查询本地数据库然后获取它们之间的差异并平滑,同步差异.
有不同类型的迭代.它们很快(只有对象集的变化)和缓慢的迭代(完整的数据审查).快速是每10秒,慢速是每天一次.
那么,如何使用NLog记录此进程?我正在使用SQLite来存储数据.但是我坚持使用DB设计日志.
所以我想记录每次迭代的流程:1.请求当前状态的对象到3d派对服务2.查询本地数据库以获取对象的当前状态3.获取差异列表4.调用外部服务以提交不足的数据5.更新本地数据库,数据不足
但是有很多种信息需要记录,所以我不能把它放在一个TEXT字段中.
目前我正在使用这种结构的日志:
CREATE TABLE [Log] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[ts] TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
[iteration_id] varchar,
[request_response_pair] varchar,
[type] VARCHAR NOT NULL,
[level] TEXT NOT NULL,
[server_id] VARCHAR,
[server_alias] VARCHAR,
[description] TEXT,
[error] Text);
Run Code Online (Sandbox Code Playgroud)
因此,每个服务请求和响应都会将每个响应链接到每个请求,description并且request_response_pair是关键.
这是我的NLog配置:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="D:\nlog.txt" internalLogLevel="Trace">
<targets>
<target name="Database" xsi:type="Database" keepConnection="false"
useTransactions="false"
dbProvider="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.82.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
connectionString="Data Source=${basedir}\SyncLog.db;Version=3;"
commandText="INSERT into Log(iteration_id, request_response_pair, type, level, server_id, …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用TPL Dataflow实现了生产者/消费者模式.我有大数据流网格,其中有大约40个块.网格中有两个主要功能部分:生产者部分和消费者部分.生产者应该继续为消费者提供大量工作,而消费者有时会缓慢地处理传入的工作.当消费者忙于一些指定数量的工作项时,我想暂停生产者.否则,该应用程序会占用大量内存/ CPU,并且行为不可持续.
我制作了演示应用程序以演示此问题:
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;
namespace DataflowTest
{
class Program
{
static void Main(string[] args)
{
var options = new ExecutionDataflowBlockOptions
{
MaxDegreeOfParallelism = 4,
EnsureOrdered = false
};
var boundedOptions = new ExecutionDataflowBlockOptions
{
MaxDegreeOfParallelism = 4,
EnsureOrdered = false,
BoundedCapacity = 5
};
var bufferBlock = new BufferBlock<int>(boundedOptions);
var producerBlock = new TransformBlock<int, int>(x => x + 1, options);
var broadcastBlock = new BroadcastBlock<int>(x => x, options);
var consumerBlock = new …Run Code Online (Sandbox Code Playgroud)