Найдено результатов: 38

Добавление функциональности сценариев в приложения .NET

У меня есть небольшая игра, написанная в C#., она использует базу данных в качестве бэк-энда. Это это была торговая карточная игра, и я хотел реализовать функцию карт в виде скрипта.

Я имею в виду, что у меня по существу есть интерфейс , ICard, который реализует класс карт ( public class Card056: ICard ) и который содержит функцию, вызываемую игрой.

Теперь, чтобы сделать вещь maintainable/moddable,, я хотел бы иметь класс для каждой карты в качестве исходного кода в базе данных и по существу скомпилировать его при первом использовании. Поэтому, когда мне нужно добавить/изменить карту, я просто добавлю ее в базу данных и скажу своему приложению обновить, не требуя никаких assembly deployment (тем более, что мы будем говорить о 1 assembly на карту, что означает сотни сборок).

Разве это возможно? Зарегистрируйте класс из исходного файла, а затем создайте его экземпляр и т. д.

ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);

Язык C#, но дополнительный бонус, если есть возможность написать сценарий на любом языке .NET.

c#   .net   scripting   compiler-construction    

593   9   16:03, 1st July, 2020


Какова наиболее эффективная графовая структура данных в Python?

Мне нужно уметь манипулировать большим (10^7 узлов) графом в python. Данные, соответствующие каждому узлу / ребру, минимальны, скажем, небольшое количество строк. Каков наиболее эффективный , с точки зрения памяти и скорости , способ сделать это?

Дикт диктов более гибок и прост в реализации, но я интуитивно ожидаю, что список списков будет быстрее. Опция списка также потребует, чтобы я хранил данные отдельно от структуры, в то время как дикты позволят сделать что-то подобное:

graph[I][J]["Property"]="value"

Что бы вы предложили?


Да, мне следовало бы немного прояснить, что я подразумеваю под эффективностью. В данном конкретном случае я имею в виду его в терминах произвольного поиска доступа.

Загрузка данных в память не является огромной проблемой. Это делается раз и навсегда. Трудоемкая часть-это посещение узлов, чтобы я мог извлечь информацию и измерить интересующие меня показатели.

Я не рассматривал возможность сделать каждый узел классом (свойства одинаковы для всех узлов), но похоже, что это добавит дополнительный уровень накладных расходов? Я надеялся, что у кого-то будет какой-то непосредственный опыт с подобным случаем, которым они могли бы поделиться. В конце концов, графики-это одна из самых распространенных абстракций в CS.

python   performance   data-structures   graph-theory    

448   0   16:03, 1st July, 2020


Учимся писать компилятор

Предпочтительные языки: C/C++, Java и Ruby.

Я ищу несколько полезных книг/учебных пособий о том, как написать свой собственный компилятор просто для образовательных целей. Я лучше всего знаком с C/C++, Java и Ruby, поэтому предпочитаю ресурсы, которые включают один из этих трех, но любой хороший ресурс приемлем.

compiler-construction   language-agnostic    

825   22   16:03, 1st July, 2020


Чтение двоичного файла в структуру

Я пытаюсь читать двоичные данные с помощью C#. у меня есть вся информация о расположении данных в файлах, которые я хочу прочитать. Я могу читать данные "кусок за куском", т. е. получать первые 40 байт данных, преобразовывая их в строку, получать следующие 40 байт.

Поскольку существует по крайней мере три слегка отличающихся версии данных, я хотел бы прочитать данные непосредственно в структуру. Это просто кажется гораздо более правильным, чем при чтении его "line by line".

Я попробовал следующий подход, но безрезультатно:

StructType aStruct;
int count = Marshal.SizeOf(typeof(StructType));
byte[] readBuffer = new byte[count];
BinaryReader reader = new BinaryReader(stream);
readBuffer = reader.ReadBytes(count);
GCHandle handle = GCHandle.Alloc(readBuffer, GCHandleType.Pinned);
aStruct = (StructType) Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(StructType));
handle.Free();

Поток-это открытый FileStream, из которого я начал читать. Я получаю AccessViolationExceptio n при использовании Marshal.PtrToStructure .

Поток содержит больше информации, чем я пытаюсь прочитать, так как меня не интересуют данные в конце файла.

Структура определяется следующим образом:

[StructLayout(LayoutKind.Explicit)]
struct StructType
{
    [FieldOffset(0)]
    public string FileDate;
    [FieldOffset(8)]
    public string FileTime;
    [FieldOffset(16)]
    public int Id1;
    [FieldOffset(20)]
    public string Id2;
}

Код примеров изменен с оригинала, чтобы сделать этот вопрос короче.

Как бы я мог читать двоичные данные из файла в структуру?

c#   struct   io   binaryfiles    

458   7   16:03, 1st July, 2020


Ссылка на макет двоичного файла

Где находятся некоторые хорошие источники информации о структурах макета двоичных файлов?

Если бы я хотел вытащить файл индекса BTrieve , проанализировать заголовки MP3 и т. д. Где можно получить достоверную информацию?

language-agnostic   data-structures   file   binary    

439   2   16:03, 1st July, 2020


Лучшая самобалансировка BST для быстрого ввода большого количества узлов

Я смог найти подробности о нескольких самобалансирующихся BST через несколько источников, но я не нашел хороших описаний, детализирующих, какой из них лучше всего использовать в разных ситуациях (или если это действительно не имеет значения).

Я хочу BST , который является оптимальным для хранения более десяти миллионов узлов. Порядок вставки узлов в основном случайный, и мне никогда не нужно будет удалять узлы, поэтому время вставки-это единственное, что нужно будет оптимизировать.

Я намерен использовать его для хранения ранее посещенных игровых состояний в игре-головоломке, чтобы я мог быстро проверить, была ли уже обнаружена предыдущая конфигурация.

data-structures   language-agnostic   binary-search-tree    

516   3   16:03, 1st July, 2020


Чтение двоичного файла в структуру

Я пытаюсь читать двоичные данные с помощью C#. у меня есть вся информация о расположении данных в файлах, которые я хочу прочитать. Я могу читать данные "кусок за куском", т. е. получать первые 40 байт данных, преобразовывая их в строку, получать следующие 40 байт.

Поскольку существует по крайней мере три слегка отличающихся версии данных, я хотел бы прочитать данные непосредственно в структуру. Это просто кажется гораздо более правильным, чем при чтении его "line by line".

Я попробовал следующий подход, но безрезультатно:

StructType aStruct;
int count = Marshal.SizeOf(typeof(StructType));
byte[] readBuffer = new byte[count];
BinaryReader reader = new BinaryReader(stream);
readBuffer = reader.ReadBytes(count);
GCHandle handle = GCHandle.Alloc(readBuffer, GCHandleType.Pinned);
aStruct = (StructType) Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(StructType));
handle.Free();

Поток-это открытый FileStream, из которого я начал читать. Я получаю AccessViolationExceptio n при использовании Marshal.PtrToStructure .

Поток содержит больше информации, чем я пытаюсь прочитать, так как меня не интересуют данные в конце файла.

Структура определяется следующим образом:

[StructLayout(LayoutKind.Explicit)]
struct StructType
{
    [FieldOffset(0)]
    public string FileDate;
    [FieldOffset(8)]
    public string FileTime;
    [FieldOffset(16)]
    public int Id1;
    [FieldOffset(20)]
    public string Id2;
}

Код примеров изменен с оригинала, чтобы сделать этот вопрос короче.

Как бы я мог читать двоичные данные из файла в структуру?

c#   struct   io   binaryfiles    

523   7   16:03, 1st July, 2020


Ссылка на макет двоичного файла

Где находятся некоторые хорошие источники информации о структурах макета двоичных файлов?

Если бы я хотел вытащить файл индекса BTrieve , проанализировать заголовки MP3 и т. д. Где можно получить достоверную информацию?

language-agnostic   data-structures   file   binary    

431   2   16:03, 1st July, 2020


Лучшая самобалансировка BST для быстрого ввода большого количества узлов

Я смог найти подробности о нескольких самобалансирующихся BST через несколько источников, но я не нашел хороших описаний, детализирующих, какой из них лучше всего использовать в разных ситуациях (или если это действительно не имеет значения).

Я хочу BST , который является оптимальным для хранения более десяти миллионов узлов. Порядок вставки узлов в основном случайный, и мне никогда не нужно будет удалять узлы, поэтому время вставки-это единственное, что нужно будет оптимизировать.

Я намерен использовать его для хранения ранее посещенных игровых состояний в игре-головоломке, чтобы я мог быстро проверить, была ли уже обнаружена предыдущая конфигурация.

data-structures   language-agnostic   binary-search-tree    

433   3   16:03, 1st July, 2020


Хорошая STL-подобная библиотека для C

Что такое хорошие библиотеки для C с такими структурами данных, как векторы, деки, стеки, хэш-карты, древовидные карты, наборы и т. д.? Простой C, пожалуйста, и независимый от платформы.

c   architecture   data-structures    

470   5   16:03, 1st July, 2020


Чтение структуры данных C/C++ в C# из байтового массива

Как лучше всего заполнить структуру C# из массива byte[], где данные были получены из структуры C/C++? Структура C будет выглядеть примерно так (мой C очень ржавый):

typedef OldStuff {
    CHAR Name[8];
    UInt32 User;
    CHAR Location[8];
    UInt32 TimeStamp;
    UInt32 Sequence;
    CHAR Tracking[16];
    CHAR Filler[12];
}

И наполнил бы что-то вроде этого:

[StructLayout(LayoutKind.Explicit, Size = 56, Pack = 1)]
public struct NewStuff
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
    [FieldOffset(0)]
    public string Name;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(8)]
    public uint User;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
    [FieldOffset(12)]
    public string Location;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(20)]
    public uint TimeStamp;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(24)]
    public uint Sequence;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    [FieldOffset(28)]
    public string Tracking;
}

Что является лучшим способом, чтобы скопировать OldStuff до NewStuff , OldStuff , если передается массив byte[]?

В настоящее время я делаю что-то вроде следующего, но это кажется немного неуклюжим.

GCHandle handle;
NewStuff MyStuff;

int BufferSize = Marshal.SizeOf(typeof(NewStuff));
byte[] buff = new byte[BufferSize];

Array.Copy(SomeByteArray, 0, buff, 0, BufferSize);

handle = GCHandle.Alloc(buff, GCHandleType.Pinned);

MyStuff = (NewStuff)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(NewStuff));

handle.Free();

Есть ли лучший способ сделать это?


Может ли использование класса BinaryReader обеспечить какой-либо прирост производительности по сравнению с закреплением памяти и использованием Marshal.PtrStructure ?

c#   .net   data-structures   marshalling    

531   5   16:03, 1st July, 2020


Производительность Компиляции CSharpCodeProvider

Разве CompileAssemblyFromDom быстрее, чем CompileAssemblyFromSource ?

Он должен быть таким, как он предположительно обходит внешний интерфейс компилятора.

c#   performance   compiler-construction    

540   2   16:03, 1st July, 2020


C# логический порядок и поведение компилятора

В C#, (и не стесняйтесь отвечать за другие языки), в каком порядке среда выполнения оценивает логический оператор?

Пример:

DataTable myDt = new DataTable();
if (myDt != null && myDt.Rows.Count > 0)
{
    //do some stuff with myDt
}

Какое утверждение делает во время выполнения оценки первого -

myDt != null

или:

myDt.Rows.Count > 0
?

Есть ли время, когда компилятор будет когда-либо оценивать оператор назад? Возможно, когда задействован оператор "OR"?


& известен как логический побитовый оператор и всегда вычисляет все вложенные выражения

Каков хороший пример использования побитового оператора вместо "короткого замыкания логического"?

c#   language-agnostic   compiler-construction   logic    

551   18   16:03, 1st July, 2020


Как создать структуру данных связанного списка в Java?

Как лучше всего сделать связанный список в Java?

java   data-structures   linked-list    

503   6   17:51, 15th August, 2020


Проверка содержимого строки? длина строки Против пустой строки

Что более эффективно для компилятора и как лучше всего проверить, является ли строка пустой?

  1. Проверка, соответствует ли длина строки = = 0
  2. Проверка пустоты строки (strVar == "")

Кроме того, зависит ли ответ от языка?

string   optimization   language-agnostic   compiler-construction    

531   13   21:06, 1st October, 2020


Вызов базового конструктора в C#

Если я наследую от базового класса и хочу передать что-то из конструктора унаследованного класса конструктору базового класса, как это сделать?

Например,

Если я унаследовал от класса исключений я хочу сделать что-то вроде этого:

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo)
     {
         //This is where it's all falling apart
         base(message);
     }
}

В основном я хочу иметь возможность передать строковое сообщение в базовый класс исключений.

c#   inheritance   constructor    

497   10   00:00, 3rd August, 2020


В чем разница между struct и class в .NET?

В чем разница между struct и class in?NET?

.net   class   struct   value-type   reference-type    

503   4   18:33, 24th August, 2020


В чем разница между struct и class в .NET?

В чем разница между struct и class in?NET?

.net   class   struct   value-type   reference-type    

567   4   11:22, 21st August, 2020


Bootstrapping все еще требует внешней поддержки

Я слышал об идее bootstrapping языка, то есть написания компилятора/интерпретатора для самого языка. Мне было интересно, как это можно сделать, и я немного огляделся, и увидел, что кто-то сказал, что это может быть сделано только одним из них

  • написание исходного компилятора на другом языке.
  • ручное кодирование исходного компилятора в Assembly, что выглядит как частный случай первого

Мне кажется, что ни то, ни другое на самом деле не является языком в том смысле, что они оба нуждаются в поддержке извне. Есть ли способ на самом деле написать компилятор на своем собственном языке?

compiler-construction   bootstrapping    

728   11   14:14, 29th August, 2020


Mixed C++ / CLI TypeLoadException внутреннее ограничение: слишком много полей

Стремясь перенести некоторые новые UI в Managed/C# земли, я недавно включил поддержку Common Language Runtime Support (/clr) в большом устаревшем проекте, который использует MFC в общем DLL и опирается на около десятка других проектов в рамках нашего общего решения. Этот проект является ядром нашего приложения и будет управлять любым управляемым кодом UI, который создается (следовательно, необходимо включить поддержку clr для interop).

После исправления тонны мелких мелких ошибок и предупреждений мне наконец удалось заставить приложение компилироваться.. Однако запуск приложения вызывает EETypeLoadException и оставляет меня неспособным выполнить отладку...

Немного покопавшись, я обнаружил, что причина была "System.TypeLoadException: внутреннее ограничение: слишком много полей.- что происходит прямо в конце компиляции. Затем я нашел эту ссылку , которая предлагает разбить assembly на две или более библиотек DLL. Однако в моем случае это невозможно, поскольку ограничение, которое я имею, заключается в том, что унаследованный код в основном остается нетронутым.

Может ли кто-нибудь предложить другие возможные решения? Я действительно в тупике здесь.

compiler-construction   c++-cli   clr    

636   3   01:22, 20th August, 2020


Можно ли использовать новое размещение для массивов переносным способом?

Можно ли на самом деле использовать размещение нового в переносимом коде при использовании его для массивов?

Похоже, что указатель, который вы получаете от new[], не всегда совпадает с адресом, который вы передаете (5.3.4, Примечание 12 в стандарте, кажется, подтверждает, что это правильно), но я не вижу, как вы можете выделить буфер для массива, чтобы войти в него, если это так.

В следующем примере показана проблема. Скомпилированный с помощью Visual Studio, этот пример приводит к повреждению памяти:

#include <new>
#include <stdio.h>

class A
{
    public:

    A() : data(0) {}
    virtual ~A() {}
    int data;
};

int main()
{
    const int NUMELEMENTS=20;

    char *pBuffer = new char[NUMELEMENTS*sizeof(A)];
    A *pA = new(pBuffer) A[NUMELEMENTS];

    // With VC++, pA will be four bytes higher than pBuffer
    printf("Buffer address: %x, Array address: %x\n", pBuffer, pA);

    // Debug runtime will assert here due to heap corruption
    delete[] pBuffer;

    return 0;
}

Глядя на память, компилятор, похоже, использует первые четыре байта буфера для хранения подсчета количества элементов в нем. Это означает, что поскольку буфер имеет только sizeof(A)*NUMELEMENTS размер, последний элемент массива записывается в нераспределенную кучу.

Итак, вопрос в том, Можете ли вы узнать, сколько дополнительных накладных расходов требуется вашей реализации для безопасного использования placement new[]? В идеале мне нужна техника, переносимая между разными компиляторами. Обратите внимание, что, по крайней мере, в случае VC, накладные расходы, похоже, отличаются для разных классов. Например, если я удаляю виртуальный деструктор в Примере, то адрес, возвращаемый из new[], совпадает с адресом, который я передаю.

c++   arrays   compiler-construction   portability   overhead    

389   7   18:10, 18th August, 2020


Структура данных старения в C#

Мне нужна структура данных, которая позволит запрашивать, сколько элементов за последние X минут . Элемент может быть просто простым идентификатором или более сложной структурой данных, предпочтительно timestamp элемента будет находиться в элементе, а не храниться снаружи (как hash или аналогичный, не хотелось бы иметь проблемы с несколькими элементами, имеющими одинаковый timestamp).

До сих пор кажется, что с LINQ я мог бы легко фильтровать элементы с timestamp больше, чем заданное время и агрегировать количество. Хотя я не решаюсь попробовать работать .NET 3.5 конкретных вещей в моей производственной среде пока нет. Есть ли другие предложения для подобной структуры данных?

Другая часть, которая меня интересует, - это устаревание старых данных, если я буду запрашивать количество элементов менее 6 часов назад, я бы хотел, чтобы что-то более старое было удалено из моей структуры данных, потому что это может быть длительная программа.

c#   linq   .net-3.5   data-structures    

435   3   12:46, 23rd August, 2020


Какие инструменты (бесплатные или другие) вы находите полезными для разработки и отладки C#/C++?

Вот некоторые из них, которые я использую (все они находятся в свободном доступе):

Hex Редактор: Hexplorer
Отладчик: WinDbg
Компилятор Документации: SandCastle
Автоматическая Сборка: Круиз Control.Net

c#   c++   debugging   compiler-construction   hex-editors    

492   8   12:39, 11th August, 2020


Алгебраические типы данных Haskell

Я пытаюсь полностью понять все концепции Haskell.

В чем алгебраические типы данных похожи на универсальные типы, например, в C# и Java? И чем же они отличаются? И вообще, что в них такого особенного?

Я знаком с универсальной алгеброй и ее кольцами и полями, но у меня есть только смутное представление о том, как работают типы Haskell.

data-structures   haskell   types   functional-programming   algebraic-data-types    

445   0   23:21, 7th August, 2020


Структура проектов в системе управления версиями

Я знаю, что есть по крайней мере 10 различных способов структурировать проект в системе управления версиями. Мне интересно, какие методы используются и какие из них работают для вас. Я работал с SVN, TFS и в настоящее время/к сожалению VSS. Я видел, что управление версиями реализовано очень плохо и просто OK, но никогда не было большим.

Просто для того, чтобы заставить мяч катиться, вот обзор того, что я видел.

Этот пример основан на SVN, но применим к большинству VCS (не столько к распределенному управлению версиями).

  1. ветвление отдельных проектов, входящих в состав сайта /division/web/projectName/vb/src/[ствол / ветви / метки]

  2. ветвление всего сайта, в случае, который я видел, весь сайт, за исключением основных компонентов, был разветвлен. / подразделение/[ствол / ветви / метки] / web/projectName/vb/src/

  3. Используйте main-line по умолчанию, только ветвь, когда это необходимо для огромных изменений.

svn   version-control   tfs   branch   project-structure    

433   9   05:43, 10th August, 2020


В C#, нужно ли вызывать базовый конструктор?

В C#,, если у меня есть унаследованный класс с конструктором по умолчанию, должен ли я явно вызывать конструктор базового класса или он будет вызван неявно?

class BaseClass
{
    public BaseClass()
    {
        // ... some code
    }
}
class MyClass : BaseClass
{
    public MyClass() // Do I need to put ": base()" here or is it implied?
    {
        // ... some code
    }
}

c#   inheritance   constructor    

461   7   18:58, 19th August, 2020


Принудительное выполнение вызова требуемой функции

У меня есть класс "Status" в C#,, используемый следующим образом:

Status MyFunction()
{
   if(...) // something bad
     return new Status(false, "Something went wrong")
   else
     return new Status(true, "OK");
}

Вы поняли идею. Все абоненты MyFunction должны проверить возвращенный статус:

Status myStatus = MyFunction();
if ( ! myStatus.IsOK() )
   // handle it, show a message,...

Ленивые абоненты, однако, могут игнорировать статус.

MyFunction(); // call function and ignore returned Status

или

{
  Status myStatus = MyFunction(); 
} // lose all references to myStatus, without calling IsOK() on it

Можно ли сделать это невозможным? например, исключение броска

В общем : можно ли написать класс C#, на котором вы должны вызвать определенную функцию?

В версии C++ класса Status я могу написать тест на некотором частном bool bIsChecked в деструкторе и позвонить в некоторые колокола, когда кто-то не проверяет этот экземпляр.

Что такое эквивалентный вариант в C#? Я где-то читал, что " вам не нужен деструктор в вашем классе C#"

Является ли метод Dispose интерфейса IDisposable опцией?

В этом случае нет неуправляемых ресурсов для освобождения. Кроме того, не определено, когда GC будет утилизировать объект. Когда он в конечном итоге будет удален, все еще можно узнать, где и когда вы проигнорировали этот конкретный экземпляр состояния? Ключевое слово "using" действительно помогает, Но опять же, оно не требуется для ленивых абонентов.

c#   garbage-collection   dispose   destructor    

443   11   16:58, 10th August, 2020


В C#, нужно ли вызывать базовый конструктор?

В C#,, если у меня есть унаследованный класс с конструктором по умолчанию, должен ли я явно вызывать конструктор базового класса или он будет вызван неявно?

class BaseClass
{
    public BaseClass()
    {
        // ... some code
    }
}
class MyClass : BaseClass
{
    public MyClass() // Do I need to put ": base()" here or is it implied?
    {
        // ... some code
    }
}

c#   inheritance   constructor    

500   7   10:41, 3rd August, 2020


Как поддерживать рекурсивный инвариант в базе данных MySQL?

У меня есть дерево, закодированное в базе данных MySQL как ребра:

CREATE TABLE items (
    num INT,
    tot INT,
    PRIMARY KEY (num)
    );
CREATE TABLE tree (
    orig INT,
    term INT
    FOREIGN KEY (orig,term) REFERENCES items (num,num)
    )

Для каждого листа в дереве, items.tot устанавливается кем-то. Для внутренних узлов items.tot должен быть суммой его дочерних элементов. Повторное выполнение следующего запроса приведет к желаемому результату.

UPDATE items SET tot = (
    SELECT SUM(b.tot) FROM
        tree JOIN items AS b
        ON tree.term = b.num 
        WHERE tree.orig=items.num)
    WHERE EXISTS 
        (SELECT * FROM tree WHERE orig=items.num)

(обратите внимание, что это на самом деле не работает, но это к делу не относится)

Предположим, что база данных существует и инвариант уже удовлетворен.

Вопрос в том:

Каков наиболее практичный способ обновления DB при сохранении этого требования? Обновления могут перемещать узлы вокруг или изменять значение tot на конечных узлах. Можно предположить, что листовые узлы останутся листовыми узлами, внутренние узлы останутся внутренними узлами, и все это останется как правильное дерево.

Некоторые мысли у меня были:

  • Полное аннулирование, после любого обновления, пересчитать все (ум... Нет)
  • Установите триггер в таблице элементы для обновления родительского элемента любой обновляемой строки
    • Это было бы рекурсивно (обновления запускают обновления, запускают обновления,...)
    • Не работает, MySQL не может обновить таблицу, которая запустила триггер
  • Установите триггер для планирования обновления родительского элемента любой обновляемой строки
    • Это было бы итеративно (получить элемент из расписания, обработка его планирует больше элементов)
    • Что же это такое? Доверяйте клиентскому коду, чтобы получить его правильно?
    • Преимущество заключается в том, что если обновления упорядочены правильно, то меньше сумм должно быть вычислено. Но этот порядок сам по себе является осложнением.

Идеальное решение было бы обобщить на другие "aggregating invariants"

FWIW я знаю, что это "немного за бортом", но я делаю это для удовольствия (Fun: verb, находя невозможное, делая это. :-)

mysql   algorithm   data-structures   invariants    

448   2   12:03, 15th August, 2020


В C++ конструктор и деструктор могут быть встроенными функциями?

VC++ делает функции, которые реализуются в рамках объявления класса встроенными функциями.

Если я объявляю класс Foo следующим образом, то являются ли CONSTRUCTOR и DESTRUCTOR встроенными функциями?

class Foo 
{
    int* p;
public:
    Foo() { p = new char[0x00100000]; }
    ~Foo() { delete [] p; }
};

{
    Foo f;
    (f);
}

c++   constructor   destructor    

349   5   17:03, 13th August, 2020


Имеет ли PHP встроенные структуры данных?

Я смотрю на руководство PHP, и я не вижу раздела о структурах данных, которые есть в большинстве языков, таких как списки и наборы. Я просто слепой или у PHP нет ничего подобного встроенного?

php   data-structures    

547   13   15:46, 4th August, 2020


Как найти иголку в стоге сена?

При реализации объектно-ориентированного поиска иголки в стоге сена у вас, по существу, есть три альтернативы:

1. needle.find(haystack)

2. haystack.find(needle)

3. searcher.find(needle, haystack)

Что вы предпочитаете и почему?

Я знаю, что некоторые люди предпочитают второй вариант, потому что он позволяет избежать введения третьего объекта. Однако я не могу избавиться от ощущения, что третий подход более концептуально "correct", по крайней мере, если ваша цель-моделировать "the real world".

В каких случаях, по вашему мнению, целесообразно вводить вспомогательные объекты, такие как поисковик в данном примере, и когда их следует избегать?

oop   class-design   program-structure    

742   25   02:43, 23rd August, 2020


Когда в классе PHP5 вызывается частный конструктор?

Допустим, я пишу класс PHP (>= 5.0), который должен быть singleton. Все документы, которые я читал, говорят о том, чтобы сделать конструктор класса закрытым, чтобы класс не мог быть непосредственно создан.

Так что если у меня есть что-то вроде этого:

class SillyDB
{
  private function __construct()
  {

  }

  public static function getConnection()
  {

  }
}

Есть ли случаи, когда __construct() вызывается иначе, чем если я делаю a

new SillyDB() 

позвонить внутрь самого класса?

И почему мне вообще позволено создавать экземпляр SillyDB изнутри самого себя?

php   oop   constructor    

508   5   17:17, 18th August, 2020


asp.net mvc-подпапки

Как новая реализация Microsoft asp.net mvc обрабатывает секционирование вашего приложения - например:

--index.aspx
--about.aspx
--contact.aspx
--/feature1
--/feature1/subfeature/action
--/feature2/subfeature/action

Я думаю, что я пытаюсь сказать, что, кажется, все должно идти в корень папок views/controllers, которые могут стать громоздкими при работе над проектом, который, если он построен с помощью веб-форм, может иметь много-много папок и подпапок для разделения приложения.

Я думаю, что получаю модель MVC, и мне нравится ее внешний вид по сравнению с веб-формами, но все же я понимаю, как вы будете строить большой проект на практике.

asp.net-mvc   directory-structure    

518   4   07:17, 19th August, 2020


Как можно требовать конструктор без параметров для типов, реализующих интерфейс?

Есть ли какой-то выход?

Мне нужно, чтобы все типы, реализующие определенный интерфейс, имели конструктор без параметров, можно ли это сделать?

Я разрабатываю базовый код для других разработчиков в моей компании, чтобы использовать его в конкретном проекте.

Существует процесс, который будет создавать экземпляры типов (в разных потоках), выполняющих определенные задачи, и мне нужно, чтобы эти типы следовали определенному контракту (ergo, интерфейс).

Интерфейс будет внутренним для assembly

Если у вас есть предложение для этого сценария без интерфейсов, я с удовольствием приму его во внимание...

c#   .net   constructor   interface   oop    

531   10   13:34, 27th August, 2020


Что такое модели для хранения древовидных структур и каковы их характеристики?

До сих пор я сталкивался со списком смежности, вложенными наборами и вложенными интервалами в качестве моделей для хранения древовидных структур в базе данных. Я знаю их достаточно хорошо и перекочевал с одного дерева на другое.

Каковы другие популярные модели? Каковы их характеристики? Каковы хорошие ресурсы (книги, интернет и т. д.) По этой теме?

Я не только ищу хранилище БД, но и хотел бы расширить свои знания о деревьях в целом. Например, я понимаю, что вложенные наборы / интервалы особенно благоприятны для хранения реляционных баз данных, и спросил себя, действительно ли они являются плохим выбором в других контекстах?

data-structures   modeling    

392   3   17:34, 12th August, 2020


C в Visual Studio

Я пытаюсь выучить C. Как разработчик C#, мой IDE-это Visual Studio. Я слышал, что это хорошая среда для развития C/C++. Однако, кажется, независимо от того, что я пытаюсь сделать, интуиция меня подводит. Может ли кто-то дать хорошие ресурсы для того, чтобы либо:

  • изучите входы и выходы из C в Visual Studio
  • рекомендую лучший компилятор C IDE +

Правка: Смотрите также: https://stackoverflow.com/questions/951516/a-good-c-ide

c++   c   ide   compiler-construction    

448   15   16:16, 21st August, 2020


Компилятор .NET -- DEBUG против RELEASE

В течение многих лет я использую константу компилятора DEBUG в VB.NET для записи сообщений в консоль. Я также использовал System.Diagnostics.Debug.Write подобным образом. Я всегда понимал, что когда RELEASE использовался в качестве опции сборки, все эти операторы были опущены компилятором, освобождая ваш производственный код от накладных расходов отладочных операторов. Недавно, работая с Silverlight 2 Beta 2, я заметил, что Visual Studio на самом деле подключается к сборке RELEASE, которую я запускал с общедоступного веб-сайта, и отображает DEBUG инструкции, которые, как я предполагал, даже не были скомпилированы! Итак, моя первая склонность заключается в предположении, что с моим окружением что-то не так, но я также хочу спросить любого, кто обладает глубокими знаниями о System.Diagnostics.Debug и DEBUG build option в целом, что я могу здесь неправильно понять.

.net   compiler-construction   debugging    

481   7   03:12, 24th August, 2020