我过去几年一直在使用数据库,我想我已经相当有能力使用它们了.然而,我最近在阅读Joel的Leaky Abstractions法则,我意识到即使我可以编写一个查询来获取我想要的任何数据库,我也不知道数据库是如何实际解释查询的.有没有人知道任何解释数据库如何在内部工作的好文章或书籍?
我感兴趣的一些具体事情是:
我可能会遗漏一些明显的东西,但是有一个关于.NET中的函数抛出什么异常以及为什么抛出异常的参考?
作为一个例子,我最近在Visual C#2008中尝试了Linq,我正在将XML文件加载到XDocument中.只是通过测试我才意识到,如果你尝试加载一个不存在的文件,它将抛出一个FileNotFound异常,但如果你试图加载一个目录而不是一个文件,你将得到一个UnauthorizedAccessException.另外通过System.IO命名空间查看我可以看到像FileLoad异常和PathTooLongException之类的东西,我可以猜测它们什么时候可能被抛出但是可能会有其他人在某些情况下可能会抛出我还没有想到的.
我现在唯一的解决方案就是抓住我所知道的那些然后捕获Exception类型,但我宁愿能够确切地知道我最有可能遇到哪些类型的异常以及为什么.我原本以为MSDN库会有这种类型的信息,但我无法在任何地方找到它.我只是瞎了吗?这个信息在其他地方吗?
编辑:一些更具体的,现在我正在寻找可能由XDocument.Load(字符串)函数抛出的异常.看起来在线文档或对象浏览器中没有任何相关内容.我现在必须运行一些测试,看看我跑进去了吗?
我在某些C++代码中遇到了一个棘手的问题,最容易用代码描述.我的课程类似于:
class MyVarBase
{
}
class MyVar : public MyVarBase
{
int Foo();
}
class MyBase
{
public:
MyBase(MyVarBase* v) : m_var(v) {}
virtual MyVarBase* GetVar() { return m_var; }
private:
MyVarBase* m_var;
}
Run Code Online (Sandbox Code Playgroud)
我还有一个MyBase的子类需要有一个MyVar类型的成员,因为它需要调用Foo.将Foo函数移动到MyVarBase不是一种选择.这样做是否有意义:
class MyClass : public MyBase
{
public:
MyClass(MyVar* v) : MyBase(v), m_var(v) {}
MyVar* GetVar() { return m_var; }
private:
MyVar* m_var;
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作,但看起来非常糟糕,我不确定它是否会导致内存泄漏或打破复制构造函数.我的其他选择可能是在MyClass中将MyVar变量命名为其他东西,但是它等于基础中的m_var指针,或者在MyVar类型上对MyBase进行临时处理.
所有这些选项似乎并不理想,所以我想知道是否有其他人遇到过这样的情况,以及是否有一个很好的方法让它工作.
我们正在开发一个聊天系统,用户可以在其中多个聊天室,我希望能够首先显示最近的频道。
这可以是发送最后一条消息的时间,也可以是未读消息的数量,只要有一定的顺序并且我不需要浏览频道的所有页面并获取额外的元数据来对其进行排序手动。
我在文档中看不到任何选项,即使响应元数据的“键”设置为“通道”,我也无法找出可以更改它的查询参数。
似乎频道总是按随机唯一的频道 ID 排序返回,因此对于几乎每个用例,您都需要获取所有频道并手动排序。是这样还是我错过了什么?
我正在尝试使用Django编写一个浏览器游戏,但我对如何存储游戏设置有点困惑.例如,游戏是基于刻度的,我想存储当前的刻度.我已经决定每个数据库只需要一个游戏来避免内置用户授权系统的问题(例如,我不想说用户名X不可用,因为它已经在不同的游戏中使用).据我所知,我仍然需要将这些信息存储在数据库表中,但我不知道如何做到最好.我似乎有两个选择:
A)将游戏作为其他表格引用的普通模型(例如我的用户个人资料),并忽略可能存在多个游戏的可能性.这意味着在技术上可以有2个游戏行,但如果有的话会很容易破坏.
B)我有一个模型,我总是假设有一个且只有一行存储游戏的所有配置数据.此模型仅包含静态方法,其他模型都没有引用它.例如:
class Game(models.Model):
current_slot = models.PositiveIntegerField(default=0)
@staticmethod
def slots_per_day(self):
Genre.objects.get(id=1).current_slot
Run Code Online (Sandbox Code Playgroud)
这些选项对我来说似乎都不对,但任何人都可以告诉我一个人是否比另一个更好?或者,如果还有其他选项,我还没有看到呢?
我是WPF和数据绑定的新手,所以希望我可以用足够的细节解释我遇到的问题以获得一些帮助.
我有一个绑定到窗口的数据对象列表.让我们说一下食谱清单.我设法让应用程序在列表框中显示每个配方的一些细节,并在各种文本框中显示所选配方的一些更多细节.我的问题是,当我选择食谱时,我想在每个食谱中列出一些成分,我想在另一个列表框中显示,但我无法弄清楚如何使数据绑定起作用.
我的数据类看起来像:
public class Recipes : ObservableCollection<RecipeDetails>
{
}
public class RecipeDetails
{
public string Name { get; set; }
public string Description { get; set; }
public List<RecipeIngredient> Ingredients;
}
public class RecipeIngredient
{
public string IngredientName { get; set; }
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
m_recipes = new Recipes();
// m_recipes initialisation
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DataContext = m_recipes;
}
private Recipes m_recipes;
}
Run Code Online (Sandbox Code Playgroud)
我的数据绑定尝试(在XAML中)看起来像:
<Window …Run Code Online (Sandbox Code Playgroud)