Skip to content

Instantly share code, notes, and snippets.

@mouhong
mouhong / Program.cs
Created April 26, 2015 16:51
HtmlTagClosing
using System;
using System.Collections.Generic;
using System.Text;
namespace HtmlTagClosing
{
public static class StringExtensions
{
public static string CloseTags(this string html)
{
@mouhong
mouhong / Program.cs
Created July 22, 2014 02:35
快速问答第三期:如何保证两个缓冲之间的依赖关系?
// 1) 原代码问题
// firstBuffer.Flush() 后如果添加 Item 到两 Buffer,
// 再执行 secondBuffer.Flush() 时,会导致新添加的 Item 先执行 Second() 方法
//
// 2) 修复思路:
// 把两个 Buffer 连接起来,第一个 Buffer Flush 之后才将 Item 添加到第二个 Buffer,
// 这样第二个 Buffer 在Flush时始终都是 Flush 第一个 Buffer 已经 Flush 过的 Item
//
// NOTE: 代码中忽略方法参数验证
@mouhong
mouhong / Program.cs
Last active August 29, 2015 14:02
快速问答第二期:自定义值类型用作字典Key
// 1. 不管是否用作字典 Key, 结构体都应实现为不可变的;
// 2. 既然是用作字典 Key,则应重写 GetHashCode 以及 Equals;
// 3. 为防止哈希碰撞时判等操作的装箱性能损耗,应实现 IEquatable<T> (引用类型的 Key 没有这烦恼);
public class MyKey : IEquatable<MyKey>
{
private int _field1;
private int _field2;
public int Field1
{
@mouhong
mouhong / Program.cs
Created December 20, 2013 18:03
RavenDB build 2750 ignores OrderBy
public class TestItem
{
public string Id { get; set; }
public double Weight { get; set; }
}
public class TestItemIndex : AbstractIndexCreationTask<TestItem>
{
public TestItemIndex()
@mouhong
mouhong / Program.cs
Last active December 19, 2015 08:19
Lucene.Net.Linq Issue #31
using Lucene.Net.Linq;
using Lucene.Net.Store;
using System;
using System.Linq;
namespace ConsoleApp
{
public class Major
{
public string Code { get; set; }
@mouhong
mouhong / regexp-problem-fix.js
Created September 11, 2012 11:44
Javascript RegExp Problem
var reg1 = new RegExp('^http:\\/\\/abc\\.com\\/\\d+$');
var reg2 = /^http:\/\/abc\.com\/\d+$/;
var url = 'http://abc.com/1657706754';
// 期待输出: true, 实际输出: true
document.write(reg1.test(url));
document.write('<br/>');
// 期待输出: true, 实际输出: true
document.write(reg2.test(url));
@mouhong
mouhong / Snippet1.cs
Created September 2, 2012 08:04
NOT查询不返回任何结果
var query = new BooleanQuery();
query.Add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
 
var term = new Term("Name", "name1");
query.Add(new TermQuery(term), BooleanClause.Occur.MUST_NOT);
@mouhong
mouhong / Program.cs
Created September 2, 2012 07:31
连续创建的两个Random对象可能会生成一样的随机数
class Program
{
static void Main(string[] args)
{
// 连续调用两次
var code1 = RandomCodeGenerator.Generate();
var code2 = RandomCodeGenerator.Generate();
// 会输出True,即两次生成的随机数是一样的
Console.WriteLine(code1 == code2);
@mouhong
mouhong / Program.cs
Created July 15, 2012 05:59
RavenDB Build 960 LuceneQuery OrderBy not work for values that are greater than or equal to 100
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Raven.Client.Linq;
using Raven.Client.Indexes;
using Raven.Client;
using Raven.Client.Document;
@mouhong
mouhong / Database.cs
Created July 14, 2012 12:41
RavenDB build 960 range query not work
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Raven.Client;
using Raven.Client.Document;
using Raven.Client.Indexes;
namespace RavenTest
{