想了解在SQL中拥有“重复字段”的最佳方法是什么?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于sql有重复的键的相关问题,此外,我们还将为您介绍关于.net–在SQLServer中存储W
想了解在SQL中拥有“重复字段”的最佳方法是什么?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于sql有重复的键的相关问题,此外,我们还将为您介绍关于.net – 在SQL Server中存储WMD输入/标记的最佳方法是什么?、c# – 在SQL Server上执行分页的最佳方法是什么?、java – 从实例方法“findbugs”警告中修改“写入静态字段”的最佳方法是什么?、Java – 在字符串中查找第一个重复字符的最佳方法是什么的新知识。
本文目录一览:- 在SQL中拥有“重复字段”的最佳方法是什么?(sql有重复的键)
- .net – 在SQL Server中存储WMD输入/标记的最佳方法是什么?
- c# – 在SQL Server上执行分页的最佳方法是什么?
- java – 从实例方法“findbugs”警告中修改“写入静态字段”的最佳方法是什么?
- Java – 在字符串中查找第一个重复字符的最佳方法是什么
在SQL中拥有“重复字段”的最佳方法是什么?(sql有重复的键)
我正在尝试建立一个表,该表链接来自不同表的两个记录。这些链接本身需要与另一个表相关。因此,目前,我的表格如下所示:
link_id (primary key)
item_id_1 (foreign key)
item_id_2 (foreign key)
link_type (metadata)
但是,项目之间的链接不是定向的(即,项目是链接中列出的第一项还是第二项都没有关系)。理想情况下,我希望item_id字段只出现两次;因为它是我必须要小心,始终检查是否有重复项,以确保如果已经存在14到12,则永远不会创建将12到14链接的记录。
是否有一个优雅的数据库设计解决方案,还是我应该采用一个约定(例如id_1始终是较小的id编号)并在应用程序内进行重复检查?
提前致谢!
.net – 在SQL Server中存储WMD输入/标记的最佳方法是什么?
如果我的研究是正确的,这里是我应该做的.
>我应该存储编辑器数据两次(一次为HTML,一次为Markdown)
>在存储之前,我应该通过Whitelist运行HTML.
>我应该通过AntixSS来运行HTML(在显示之前)
>我应该使用Markdown数据来重新填充Markdown进行编辑.
任何人都可以确认或否认是否正确,还可以添加任何有用的投入?
参考
Reformat my code: Sanitize Html
StackOverflow: how do you store the markdown using wmd in asp net
StackOverflow: sanitize html before storing in the db or before rendering antixss library
StackOverflow: store html entities in database or convert when retrieved
解决方法
我非常类似于Stack Overflow团队的做法:
>我使用wmd.js作为客户端编辑器.
>我使用MarkdownSharp服务器端处理.
>我用Jeff Atwood’s Sanitize HTML来处理HTML.
这里有一些关于Markdown的资源:
> Introducing MarkdownSharp
> Three Markdown Gotchas
> Markdown,One Year Later
> Reverse Engineering the Markdown Editor
> WMD Edtior Reverse Engineered
底线:
>我以提交的形式存放帖子;它使用MarkdownSharp显示.>我使用Jeff Atwood的方法(On输出,而不是输入)来清理HTML.>我利用ASP.NET MVC的最佳实践(一个高度主观的术语)来处理XSS和XSRF.
c# – 在SQL Server上执行分页的最佳方法是什么?
我已经尝试使用ROW_NUMBER(),但这样将会选择所有的200万条记录,然后只得到10条记录.我也尝试使用TOP 10,但我必须保存第一个和最后一个id来控制页面.我读过,使用DataAdapter.Fill()将选择所有的内容,然后得到我需要的10条记录.
哪个是最好的方法?我应该使用DataAdapter.Fill()吗?还是使用sql Server的函数ROW_NUMBER()?或尝试使用TOP 10?
解决方法
ALTER PROCEDURE [dbo].[SP_tblTest_SelectSpecificRecordsWithCTE] @Fromrow int = 1000000,@PgSize int = 10 AS BEGIN ;WITH RecordsRN AS ( select ID,colValue,ROW_NUMBER() over(order by colvalue) as Num from tblTest ) SELECT ID Value,colValue Text FROM RecordsRN WHERE Num between @Fromrow AND (@Fromrow+@PgSize-1) END
这是我用于分页的查询.使用它,你会得到你需要10个记录4-5秒.我在3秒内获得10条记录,我的数据库中的总记录是1000万,不要使用前10名,每次只能带来相同的10条记录.在我的情况下,我在会话中维护页面大小和起始行号(@Fromrow),并将这两个值传递给下面给出的存储过程并获取结果.
更进一步如果您使用sql 2012,您可能需要使用OFFSET和Fetch接下来的10行的事情.在google上搜索关于OFFSET关键字,您将在上面看到您想要的结果.
谢谢
java – 从实例方法“findbugs”警告中修改“写入静态字段”的最佳方法是什么?
>这个问题最好的解决办法是什么?
会把staticField放在atomicreference中吗?
public class Something { private static SomeClass staticField = null; private AnotherClass aClass; public Something() { } public void initialize() { //must be ctor'd in initialize aClass = new AnotherClass(); staticField = new SomeClass( aClass ); } public void killStaticField() { staticField = null; } public static void getStaticField() { return staticField; } }
解决方法
public class Something { private static volatile SomeClass staticField = null; public Something() { } public static void getStaticField() { if(Something.staticField == null) Something.staticField = new SomeClass();; return Something.staticField; } }
通过类名参考你的静态变量,这将删除findbugz警告.
将静态变量标记为volatile,这将使多参数环境中的引用更加安全.
更好的是:
public class Something { private static final SomeClass staticField = new SomeClass(); public Something() { } public static void getStaticField() { return Something.staticField; } }
Java – 在字符串中查找第一个重复字符的最佳方法是什么
public static int detectDuplicate(String source) { boolean found = false; int index = -1; final long start = System.currentTimeMillis(); final int length = source.length(); for(int outerIndex = 0; outerIndex < length && !found; outerIndex++) { boolean shiftPointer = false; for(int innerIndex = outerIndex + 1; innerIndex < length && !shiftPointer; innerIndex++ ) { if ( source.charat(outerIndex) == source.charat(innerIndex)) { found = true; index = outerIndex; } else { shiftPointer = true; } } } System.out.println("Time taken --> " + (System.currentTimeMillis() - start) + " ms. for string of length --> " + source.length()); return index; }
我需要两件事的帮助:
>此算法的最坏情况复杂度是多少? – 我的理解是O(n).
>这是最好的方法吗?有人可以提供更好的解决方案(如果有的话)吗?
谢谢,
NN
解决方法
public static int findDuplicate(String s) { char[] chars = s.tochararray(); Set<Character> uniqueChars = new HashSet<Character> (chars.length,1); for (int i = 0; i < chars.length; i++) { if (!uniqueChars.add(chars[i])) return i; } return -1; }
注意:这将返回第一个副本的索引(即与前一个字符重复的第一个字符的索引).要返回该字符首次出现的索引,您需要将索引存储在Map< Character,Integer>中. (在这种情况下,Map#put也是O(1)):
public static int findDuplicate(String s) { char[] chars = s.tochararray(); Map<Character,Integer> uniqueChars = new HashMap<Character,Integer> (chars.length,1); for (int i = 0; i < chars.length; i++) { Integer prevIoUsIndex = uniqueChars.put(chars[i],i); if (prevIoUsIndex != null) { return prevIoUsIndex; } } return -1; }
关于在SQL中拥有“重复字段”的最佳方法是什么?和sql有重复的键的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.net – 在SQL Server中存储WMD输入/标记的最佳方法是什么?、c# – 在SQL Server上执行分页的最佳方法是什么?、java – 从实例方法“findbugs”警告中修改“写入静态字段”的最佳方法是什么?、Java – 在字符串中查找第一个重复字符的最佳方法是什么的相关知识,请在本站寻找。
本文标签: