我需要将用户输入的更改存储到特定表中,但在管理用户查看和批准之前不会显示这些更改.虽然这些更改仍处于暂挂状态,但我仍会显示旧版本的数据.存储这些变更等待批准的最佳方法是什么?
我想过几种方法,但无法弄清楚什么是最好的方法.这是一个非常小的网络应用程序.一种方法是使PendingChanges表模仿其他表的模式,然后一旦批准更改,我就可以用信息更新真实表.另一种方法是进行某种记录版本控制,其中我在表中存储多个版本的数据,然后始终使用已标记为已批准的最高版本号来提取记录.这将限制额外表的数量(我需要为多个表执行此操作),但每次我提取一组记录以确保获得正确的记录时,我需要进行额外的处理.
这些方法或其他可能有用的个人经历?
更新:只是为了澄清,在这种特殊情况下,我对历史数据不感兴趣.我只需要某种方式来批准用户在网站上发布之前所做的任何更改.因此,用户将编辑他们的"配置文件",然后管理员将查看该修改并批准它.一旦获得批准,这将成为显示的值,并且不需要保留旧版本.
是否有人尝试过以下解决方案,您可以在任何需要在特殊PendingChanges表中将其作为XML跟踪的表中存储挂起的更改?每个记录都有一个列,表示更改所针对的表,可能存储将要更改的记录的id的列(如果是新记录则为null),更改时存储的日期时间列,以及用于存储已更改记录的xml的列(可以序列化我的数据对象).由于我不需要历史记录,因此在批准更改后,将更新真实表并删除PendingChange记录.
有关该方法的任何想法?
我发现在某些情况下我可以在调试时编辑源代码,使用Visual Studio内置的Web服务器而不是IIS中的虚拟目录有什么其他优点吗?
我在我的开发环境中使用Windows XP,以及IIS 5的本地实例.我在几个项目上工作,因此我使用多个虚拟目录来管理所有不同的站点.
有什么缺点吗?
操作系统:Windows XP
有没有人知道限制可用内存的工具(最好是免费的)以及其他Windows资源(句柄等)?我想测试一个低内存的应用程序,以确保它的行为正常,如果已经有工具做这种事情,我宁愿不写我自己的.
顺便说一句,我确实为此寻找其他Q&A线程,但没有发现任何问题.如果这是一个骗局,我道歉.请告诉我,我会关闭它.
鉴于以下内容:
declare @a table
(
pkid int,
value int
)
declare @b table
(
otherID int,
value int
)
insert into @a values (1, 1000)
insert into @a values (1, 1001)
insert into @a values (2, 1000)
insert into @a values (2, 1001)
insert into @a values (2, 1002)
insert into @b values (-1, 1000)
insert into @b values (-1, 1001)
insert into @b values (-1, 1002)
Run Code Online (Sandbox Code Playgroud)
如何查询@a中与@b完全匹配的所有值?
{@a.pkid = 1, @b.otherID = -1}
不会被退回(3个值中只有2个匹配)
{@a.pkid = 2, @b.otherID = …
列表对我的理解似乎就像正则表达式适合我的花岗岩的不透明块.我需要指针.
说,我有一个2D列表:
li = [[0,1,2],[3,4,5],[6,7,8]]
Run Code Online (Sandbox Code Playgroud)
我想把它合并成一个长列表
li2 = [0,1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
或者带分隔符的字符串:
s = "0,1,2,3,4,5,6,7,8"
Run Code Online (Sandbox Code Playgroud)
真的,我想知道如何做到这两点.
我很想知道其他Java程序员认为他们最喜欢的语言是什么,为什么他们有这种感觉,以及为什么其他程序员也应该想要了解它.我正在寻找简单,性能等原因.谢谢.
Authorize.net为其自动重复计费提供"无声POST"功能.它应该将数据发布到您选择的网址,告诉您他们是否能够向客户收费,多少等等.问题是,它没有很好的记录.
x_first_name
,x_amount
- 我已经看到使用这些值的代码 - 但由于我实际上无法让它发送响应,我不确定.我一直在对我们的宠物项目之一进行代码审查(主要使用像FindBugs这样的工具),FindBugs将以下代码标记为错误(伪代码):
Connection conn = dataSource.getConnection();
try{
PreparedStatement stmt = conn.prepareStatement();
//initialize the statement
stmt.execute();
ResultSet rs = stmt.getResultSet();
//get data
}finally{
conn.close();
}
Run Code Online (Sandbox Code Playgroud)
错误是此代码可能不会释放资源.我发现ResultSet和Statement没有关闭,所以我最后关闭了它们:
finally{
try{
rs.close()
}catch(SqlException se){
//log it
}
try{
stmt.close();
}catch(SqlException se){
//log it
}
conn.close();
}
Run Code Online (Sandbox Code Playgroud)
但是我在很多项目中遇到过上述模式(来自不少公司),没有人关闭ResultSet或Statements.
在Connection关闭时,您是否遇到没有关闭ResultSet和Statements的麻烦?
我发现只有这个,它指的是Oracle在关闭Connections时关闭ResultSet的问题(我们使用Oracle db,因此我的更正).java.sql.api在Connection.close()javadoc中什么也没说.
我需要在C中实现内存中的字符串元组匹配功能.将有大量的元组列表与不同的操作相关联,并且要与列表匹配大量事件.
元组列表:
("one", "four")
("one")
("three")
("four", "five")
("six")
Run Code Online (Sandbox Code Playgroud)
事件("一","二","三","四")应匹配列表项("一","四")和("一")和("三")但不匹配("四", "五"而不是("六")
我当前的方法使用所有元组字段值的映射作为使用该值的每个元组的列表的键.有很多冗余哈希和列表插入.
有没有正确或经典的方法来做到这一点?
我想在VC6监视窗口中获取char []变量的完整值,但它只显示截断的版本.我可以从调试内存窗口复制该值,但包含十六进制和字符串值的混合行.当然还有更好的方法吗?
java ×2
algorithm ×1
asp.net ×1
c ×1
c++ ×1
cassini ×1
collections ×1
debugging ×1
devtools ×1
e-commerce ×1
findbugs ×1
iis ×1
jdbc ×1
memory ×1
python ×1
qa ×1
reflection ×1
silent-post ×1
sql-server ×1
t-sql ×1
visual-c++-6 ×1