普通文本
孙存周,讳焕文,号二可,1893年出生在河北完县东任家疃。父亲是武学大宗师、时誉“虎头少保天下第一手”的孙禄堂。1909年开始正式随父习武,苦修三年,日以继夜,得孙氏形意、八卦大要。遂访京津及燕赵等地名家切磋技艺,名声鹊起。1912年,孙存周19岁时与钱氏完婚,不久只身南下,游历各地,遍访名师、高手,比较武艺,难遇其匹。在沪宁杭一带负有盛誉,武林中之奇人异士如秦鹤歧、管子彰等皆与孙存周交厚,盛赞有加。
1918年,孙存周返回北京,对父亲谈及其游历见闻,孙禄堂先生训曰:“凡求道艺者务要虚心 虚心则心明,心明则性真。有若无,实若虚,远浮名。凡遇有一技之长者,无论其功夫高低皆要拜为师友,虚心求教,海纳百川,故其深不可测。艺无止境,岂有至高至妙之说?”在父亲的教诲下,孙存周的拳术境界又上了一层。通过每日与父亲试手,更知自己的功夫仍旧相差甚远,遂留在北京年余继续深造家学。1919年父亲入住总统府后,孙存周再次返回南方,时其三弟务滋也已在太仓中学任教。这样兄弟二人每月相会一次,共同研究孙氏拳学。相互启发,技艺更加精纯。
代码高亮
[code=c#]using System;
using System.Threading;
using System.Collections;
using Bullseye.Interface;
using System.Configuration;
using Microsoft.ApplicationBlocks.Data;
using System.Data;
using System.Data.SqlClient;
using Bullseye.Logging;
namespace Bullseye.Plugin.BadWordsCheck
{
///
/// Summary description for BadWordsChecker.
///
public class BadWordsChecker: IBadWordsCheck
{
public BadWordsChecker()
{
//
// TODO: Add constructor logic here
//
}
private static readonly string sp_LoadAllCellPhoneDomain = "LoadAllCellPhoneDomain";
private static readonly string sp_LoadAllBannedPhones = "LoadAllBannedPhones";
private static readonly string sp_LoadAllBannedEmailUsers = "LoadAllBannedEmailUsers";
private static readonly string sp_LoadAllBannedEmails = "LoadAllBannedEmails";
private static readonly string sp_LoadAllBadWords = "LoadAllBadWords";
private static readonly string sp_LoadAllApprovedWords = "LoadAllApprovedWords";
private static string ConnectionString
{
get
{
return ConfigurationSettings.AppSettings["MemberFilteringDBConnectionString"];
}
}
static ArrayList BadWords = new ArrayList();
static Hashtable ApprovedWords = new Hashtable();
static Hashtable BannedEmails = new Hashtable();
static Hashtable BannedEmailUsers = new Hashtable();
static Hashtable BannedCellPhoneDomains = new Hashtable();
static Hashtable BannedPhones = new Hashtable();
static ReaderWriterLock rwl = new ReaderWriterLock();
static DateTime LastLoadTime = DateTime.MinValue;
static bool Loaded = false;
///
/// Reload the lists every 30 minutes
///
static void Load()
{
if(DateTime.Now - LastLoadTime > new TimeSpan(0, 0, 30, 0, 0) || !Loaded)
{
try
{
rwl.AcquireWriterLock(3000);
if(DateTime.Now - LastLoadTime <= new TimeSpan(0, 0, 30, 0, 0) && Loaded) return;
try
{
using(SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
ArrayList al = new ArrayList();
SqlDataReader sdr = SqlHelper.ExecuteReader(conn,
CommandType.StoredProcedure,
sp_LoadAllBadWords);
while(sdr.Read())
{
al.Add(sdr.GetString(0).Trim().ToLower());
}
sdr.Close();
BadWords = al;
Hashtable ht = new Hashtable();
sdr = SqlHelper.ExecuteReader(conn,
CommandType.StoredProcedure,
sp_LoadAllApprovedWords);
while(sdr.Read())
{
ht[sdr.GetString(0).Trim().ToLower()] = 0;
}
sdr.Close();
ApprovedWords = ht;
ht = new Hashtable();
sdr = SqlHelper.ExecuteReader(conn,
CommandType.StoredProcedure,
sp_LoadAllBannedEmails);
while(sdr.Read())
{
ht[sdr.GetString(0).Trim().ToLower()] = 0;
}
sdr.Close();
BannedEmails = ht;
ht = new Hashtable();
sdr = SqlHelper.ExecuteReader(conn,
CommandType.StoredProcedure,
sp_LoadAllBannedEmailUsers);
while(sdr.Read())
{
ht[sdr.GetString(0).Trim().ToLower()] = 0;
}
sdr.Close();
BannedEmailUsers = ht;
ht = new Hashtable();
sdr = SqlHelper.ExecuteReader(conn,
CommandType.StoredProcedure,
sp_LoadAllCellPhoneDomain);
while(sdr.Read())
{
ht[sdr.GetString(0).Trim().ToLower()] = 0;
}
sdr.Close();
BannedCellPhoneDomains = ht;
ht = new Hashtable();
sdr = SqlHelper.ExecuteReader(conn,
CommandType.StoredProcedure,
sp_LoadAllBannedPhones);
while(sdr.Read())
{
ht[sdr.GetString(0).Trim().ToLower()] = 0;
}
sdr.Close();
BannedPhones = ht;
LastLoadTime = DateTime.Now;
Loaded = true;
conn.Close();
}
}
catch(SqlException se)
{
MemberFilteringInitException ex = new MemberFilteringInitException(se.Message);
}
finally
{
rwl.ReleaseWriterLock();
}
}
catch(ApplicationException)
{
return;
}
}
}
#region IBadWordsCheck Members
///
/// Check for bad words in the provided arguments.
///
///
The first name
///
The last name
///
Address
///
The email address
///
Phone number
///
True if there is a bad word match, false if no bad word match
public bool CheckBadWords(string firstname, string lastname, string address1, string email, string phone)
{
Load();
// SystemFX.TextLogger.WriteLog(String.Format("Testing bad words: {0}, {1}, {2}, {3}, {4}", firstname, lastname, address1, email, phone));
try
{
rwl.AcquireReaderLock(100);
try
{
if(CheckBadWords(firstname.Trim().ToLower(), lastname.Trim().ToLower(), address1.Trim().ToLower()))
{
return true;
}
if(CheckBadEmail(email.Trim().ToLower()))
{
return true;
}
if(CheckBannedPhone(phone.Trim().ToLower()))
{
return true;
}
return false;
}
finally
{
rwl.ReleaseReaderLock();
}
}
catch(ApplicationException)
{
return false;
}
}
#endregion
private bool CheckBadWords(string firstname, string lastname, string address1)
{
return CheckBadWord(firstname) || CheckBadWord(lastname) || CheckBadWord(address1);
}
private bool CheckBadWord(string word)
{
if(word == "") return false;
if(ApprovedWords.ContainsKey(word)) return false;
foreach(string s in BadWords)
{
if(word.IndexOf(s) >= 0)
{
return true;
}
}
return false;
}
private bool CheckBadEmail(string email)
{
if(email == null || email == string.Empty) return false;
if(BannedEmails.ContainsKey(email)) return true;
int index = email.IndexOf("@");
if(index <= 0) return true;
string emailDomain = email.Substring(index + 1, email.Length - index - 1);
if(BannedCellPhoneDomains.ContainsKey(emailDomain)) return true;
string emailuser = email.Substring(0, index);
if(BannedEmailUsers.ContainsKey(emailuser + "@") || BannedEmailUsers.ContainsKey(emailuser)) return true;
return false;
}
private bool CheckBannedPhone(string phone)
{
return BannedPhones.ContainsKey(phone);
}
}
}
[/code]
夫习拳艺者,对已者十之七八,对人者,仅十之二三耳。拳艺之道,深无止境。得其浅者,一人敌,得其深者,何尝不万人敌耶!
我的Google Picasa相册
我的新BLOG