我有一个树(嵌套类别)存储如下:
CREATE TABLE `category` (
`category_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`category_name` varchar(100) NOT NULL,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`category_id`),
UNIQUE KEY `category_name_UNIQUE` (`category_name`,`parent_id`),
KEY `fk_category_category1` (`parent_id`,`category_id`),
CONSTRAINT `fk_category_category1` FOREIGN KEY (`parent_id`) REFERENCES `category` (`category_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci
Run Code Online (Sandbox Code Playgroud)
我需要用节点信息(子+父)提供我的客户端语言(PHP),以便它可以在内存中构建树.我可以调整我的PHP代码,但我认为如果我能按照所有父母在他们的孩子面前的顺序检索行,那么操作会更简单.如果我知道每个节点的级别,我就可以这样做:
SELECT category_id, category_name, parent_id
FROM category
ORDER BY level -- No `level` column so far :(
Run Code Online (Sandbox Code Playgroud)
你能想出一种方法(视图,存储例程或其他......)来计算节点级别吗?我想如果它不是实时的,我可以在节点修改时重新计算它.
我根据Amarghosh的反馈写了这些触发器:
DROP TRIGGER IF EXISTS `category_before_insert`;
DELIMITER //
CREATE TRIGGER `category_before_insert` …Run Code Online (Sandbox Code Playgroud) 我正在使用EasyMock(版本2.4)和TestNG来编写UnitTest.
我有一个以下场景,我不能改变定义类层次结构的方式.
我正在测试扩展ClassA的ClassB.
ClassB看起来像这样
public class ClassB extends ClassA {
public ClassB()
{
super("title");
}
@Override
public String getDisplayName()
{
return ClientMessages.getMessages("ClassB.title");
}
}
Run Code Online (Sandbox Code Playgroud)
ClassA代码
public abstract class ClassA {
private String title;
public ClassA(String title)
{
this.title = ClientMessages.getMessages(title);
}
public String getDisplayName()
{
return this.title;
}
}
Run Code Online (Sandbox Code Playgroud)
ClientMessages类代码
public class ClientMessages {
private static MessageResourse messageResourse;
public ClientMessages(MessageResourse messageResourse)
{
this.messageResourse = messageResourse;
}
public static String getMessages(String code)
{
return messageResourse.getMessage(code);
}
}
Run Code Online (Sandbox Code Playgroud)
MessageResourse类代码
public class MessageResourse …Run Code Online (Sandbox Code Playgroud) 想象一下,你有一个这样的课:
class Foo {
string key;
int value;
}
Run Code Online (Sandbox Code Playgroud)
你如何选择具有最高价值的Foo IEnumeralbe<Foo>?
一个基本问题是保持迭代次数较低(即1),但这会影响可读性.毕竟,我能找到的最好的东西是这样的:
IEnumerable<Foo> list;
Foo max = list.Aggregate ((l, r) => l.value > r.value ? l : r);
Run Code Online (Sandbox Code Playgroud)
你能想到一个更好的方法吗?
编辑:list.OrderByDescending(l => l.value).First();是我的首选,但它不是O(n).
对于Visual Studio 2010基于Web的应用程序,我们具有Config Transformation功能,通过该功能,我们可以为不同的环境维护多个配置文件.但是,对于Windows Services/WinForms或控制台应用程序,App.Config文件无法使用相同的功能.
这里提供了一种解决方法:将XDT魔术应用于App.Config.
然而,它并不简单,需要许多步骤.有没有更简单的方法来实现相同的app.config文件?
app-config .net-4.0 visual-studio web-config-transform slowcheetah
我正在使用ASP.NET会话状态来跟踪我的网站上登录的用户.
但是,我遇到的一个问题是,默认情况下,ASP.NET会话cookie在浏览器关闭时设置为过期.
我已经尝试使用类似于以下代码的东西设置我自己的ASP.NET_SessionId cookie并修改cookie的到期时间:
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(1);
Run Code Online (Sandbox Code Playgroud)
这些方法都不起作用,它们都设置了具有相同名称的第二个cookie.
有没有办法改变会话cookie的到期日期?
我目前正在使用ANT在Windows XP机器上构建我的Java项目.在我的build.xml文件中,我已经定义了3个任务,我希望在失败的情况下,在关闭构建和退出之前执行默认任务(如恢复过程).我想知道是否有可能.
谢谢
当我运行gcov foo.cpp时,它不仅为foo.cpp生成代码覆盖率报告,而且为foo.cpp使用的所有STL头生成.
有办法防止这种情况吗?它似乎忽略了标准的库标题<ctime>.
编辑
刚刚在gcc邮件列表上看过这篇文章:
任何人都可以阐明为什么逆变不适用于C#值类型?
以下不起作用
private delegate Asset AssetDelegate(int m);
internal string DoMe()
{
AssetDelegate aw = new AssetDelegate(DelegateMethod);
aw(32);
return "Class1";
}
private static House DelegateMethod(object m)
{
return null;
}
Run Code Online (Sandbox Code Playgroud) 我们在检查"DBNull"的输出参数时遇到问题.Oracle存储过程或函数返回的"DBNull"值被oracle 11g客户端/ ODP.Net提供程序视为"null"字符串.这适用于oracle 10g客户端,因为它返回"DBNull".因此,我们所有的"DBNull"检查都失败了