2018年5月12日

三种方式构建C#单例模式

摘要: 1 /// 2 /// 双检锁实现单例 3 /// 4 public sealed class SingletonDoubleCheck 5 { 6 //s_lock对象是实现线程安全所需要的,定义这个对象时,我们假设创建单例对象的代价高于创建一个System.Object对象 7 //并假设... 阅读全文

posted @ 2018-05-12 11:25 庭前花满留晚照 阅读(940) 评论(0) 推荐(0)

使用Barrier分三步将大象放入冰箱

摘要: 1 class Program 2 { 3 //构造大象和冰箱 4 private static ElephantsAndFridges elephantsAndFridges = new ElephantsAndFridges(); 5 6 static void Main(string[] args) ... 阅读全文

posted @ 2018-05-12 11:25 庭前花满留晚照 阅读(289) 评论(0) 推荐(0)

条件变量模式-让线程根据条件执行

摘要: 1 /// 2 /// 条件变量模式 3 /// 让线程根据条件执行 4 /// 5 public sealed class ConditionVariablePattern 6 { 7 //两个线程使用同一个锁 8 private readonly object m_lock = new obj... 阅读全文

posted @ 2018-05-12 11:24 庭前花满留晚照 阅读(466) 评论(0) 推荐(0)

C#的Lazy与LazyInitializer

摘要: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //初始化 Lazy 类的新实例 6 //当延迟初始化发生时,将使用指定的初始化函数和初始化模式 7 // 参数: 8 ... 阅读全文

posted @ 2018-05-12 11:24 庭前花满留晚照 阅读(1426) 评论(0) 推荐(3)

构建线程安全队列示例

摘要: 1 /// 2 /// 线程安全的队列 3 /// 允许多个线程对队列入队出队 4 /// 注意:除非有一个可供处理的数据项,否则试图出队一个数据项的线程会一直阻塞 5 /// 6 /// 7 internal sealed class SynchronizedQueue 8 { 9 //进出... 阅读全文

posted @ 2018-05-12 11:24 庭前花满留晚照 阅读(255) 评论(0) 推荐(0)

ReaderWriterLockSlim使用示例

摘要: 1.一个线程向数据写入时,请求访问的其它所有线程都被阻塞。 2.一个线程从数据读取时,请求读取的其它所有线程允许继续执行,但请求写入的所有线程仍被阻塞。 3.向数据写入的线程结束后,要么解除一个写入线程的阻塞,使它能向数据写入,要么解除所有读取线程的阻塞,使他们能并发读取数据。如果没有线程被阻塞,锁 阅读全文

posted @ 2018-05-12 11:23 庭前花满留晚照 阅读(275) 评论(0) 推荐(0)

异步函数Demo

摘要: 1 private static async Task IssueClientRequestAsync(string serverName, string message) 2 { 3 Console.WriteLine("进入IssueClientRequestAsync"); 4 //NamedPipeC... 阅读全文

posted @ 2018-05-12 11:22 庭前花满留晚照 阅读(429) 评论(0) 推荐(0)

Task扩展方法取消操作

摘要: 1 /// 2 /// 任务扩展,传入取消操作 3 /// 4 public static class TaskExtensionDemo 5 { 6 //因为没有非泛型的TaskCompleteSource类 7 private struct Void { } 8 9 public ... 阅读全文

posted @ 2018-05-12 11:22 庭前花满留晚照 阅读(795) 评论(0) 推荐(1)

自旋和线程所有权及递归构成混合锁

摘要: 1 /// 2 /// 自旋、线程所有权、递归 3 /// 构成混合锁 4 /// 5 internal sealed class AnotherHybridLock : IDisposable 6 { 7 //基元用户模式构造(Interlocked的方法)使用 8 privat... 阅读全文

posted @ 2018-05-12 11:22 庭前花满留晚照 阅读(273) 评论(0) 推荐(0)

任务工厂

摘要: 1 private static void TaskFactoryDemo() 2 { 3 Task taskParent = new Task(() => 4 { 5 //向应该被取消的 System.Threading.CancellationToken 发送信号。 6... 阅读全文

posted @ 2018-05-12 11:21 庭前花满留晚照 阅读(306) 评论(1) 推荐(0)

使用Parallel计算目录中的文件字节长度

摘要: 1 /// 2 /// 根据通配符和搜索条件计算给定目录中的文件字节长度 3 /// 4 /// 要搜索的目录的相对或绝对路径。 此字符串不区分大小写。 5 /// 要与 path 中的文件名匹配的搜索字符串。 此参数可以包含有效的文本路径和通配符(* 和 ?) 字符(参见“备注”)的组合,但不支持正... 阅读全文

posted @ 2018-05-12 11:21 庭前花满留晚照 阅读(308) 评论(0) 推荐(0)

定时计算

摘要: 1 internal static class TimerDemo 2 { 3 //提供以指定的时间间隔对线程池线程执行方法的机制 4 private static Timer timer; 5 6 //这个方法签名必须和TimerCallback委托匹配 7 private static void ... 阅读全文

posted @ 2018-05-12 11:21 庭前花满留晚照 阅读(189) 评论(0) 推荐(0)

使用Task的Wait和Result时注意

摘要: 如果计算限制的任务抛出未处理的异常,该异常会被“吞噬”并存储到一个集合中,而线程池线程可以返回到线程池中。调用Wait方法或者Result属性时,这些成员会抛出一个System.AggregateException对象。 如果一直不调用Wait或Result,或者一直不查询Task的Exceptio 阅读全文

posted @ 2018-05-12 11:20 庭前花满留晚照 阅读(5097) 评论(0) 推荐(1)

取消任务(Task)

摘要: 1 private static void TaskCancelDemo() 2 { 3 //向应该被取消的 System.Threading.CancellationToken 发送信号 4 CancellationTokenSource cancellationTokenSource = new Canc... 阅读全文

posted @ 2018-05-12 11:20 庭前花满留晚照 阅读(3425) 评论(0) 推荐(0)

启动新任务和子任务

摘要: 1 private static void StartNewTask() 2 { 3 //创建并启动一个Task 4 Task task = Task.Run(() => TaskTest("TaskTest1")); 5 6 //继续另一个任务 7 /... 阅读全文

posted @ 2018-05-12 11:20 庭前花满留晚照 阅读(429) 评论(0) 推荐(0)

协作式取消和超时

摘要: 1 internal static class CancellationDemo 2 { 3 public static void Go() 4 { 5 //向应该被取消的CancellationToken发送信号 6 CancellationTokenSource cancellatio... 阅读全文

posted @ 2018-05-12 11:19 庭前花满留晚照 阅读(215) 评论(0) 推荐(0)

阻止线程上下文流动

摘要: 1 /// 2 /// 阻止执行上下文流动来影响线程逻辑调用上下文数据 3 /// 4 public static void FlowDataContext() 5 { 6 //将数据放到FlowDataContext线程的逻辑调用上下文 7 Call... 阅读全文

posted @ 2018-05-12 11:19 庭前花满留晚照 阅读(226) 评论(0) 推荐(0)

为线程安全集合提供阻塞和限制功能

摘要: 1 class Program 2 { 3 //为线程安全集合提供阻塞和限制功能 4 private static BlockingCollection blockingCollection = new BlockingCollection(new ConcurrentQueue()); 5 6 static void... 阅读全文

posted @ 2018-05-12 11:18 庭前花满留晚照 阅读(264) 评论(0) 推荐(0)

简单混合锁(HybridLock)

摘要: 1 internal sealed class SimpleHybridLock : IDisposable 2 { 3 //基元用户模式构造使用 4 private int m_waiters = 0; 5 6 //基元内核模式构造 7 private AutoResetEvent m_waiter... 阅读全文

posted @ 2018-05-12 11:18 庭前花满留晚照 阅读(1039) 评论(0) 推荐(0)

内核模式构造-Semaphore构造(WaitLock)

摘要: 1 internal sealed class SimpleWaitLock : IDisposable 2 { 3 //(信号量)允许多个线程并发访问一个资源 4 //如果所有线程以只读方式访问资源则是安全的 5 private Semaphore m_Semaphore; 6 7 public SimpleWaitLock(int maxCon... 阅读全文

posted @ 2018-05-12 11:17 庭前花满留晚照 阅读(424) 评论(0) 推荐(0)

内核模式构造-Mutex构造(RecursiveAutoResetEvent)

摘要: 1 internal sealed class RecursiveAutoResetEvent : IDisposable 2 { 3 private AutoResetEvent m_lock = new AutoResetEvent(true); 4 5 //拥有锁的线程ID 6 private int m_own... 阅读全文

posted @ 2018-05-12 11:17 庭前花满留晚照 阅读(255) 评论(0) 推荐(0)

内核模式构造-Event构造(WaitLock)

摘要: 1 internal sealed class SimpleWaitLock:IDisposable 2 { 3 //Enter()和Leave()中使用m_AutoResetEvent都将迫使调用线程做用户模式和内核模式间的转换,这点十分影响性能 4 //存在竞争时,输掉的线程会被内核阻止,内核阻止的特点是线程不会“自旋”,从而节省了CP... 阅读全文

posted @ 2018-05-12 11:16 庭前花满留晚照 阅读(360) 评论(0) 推荐(0)

用户模式构造-易变构造

摘要: 1 /// 2 /// 调用Volatile.Write来写入最后一个值 3 /// 调用Volatile.Read来读取第一个值 4 /// 5 internal sealed class ThreadsSharingData 6 { 7 private int m_flag = 0; 8 9 ... 阅读全文

posted @ 2018-05-12 11:15 庭前花满留晚照 阅读(212) 评论(0) 推荐(0)

用户模式构造-互锁构造

摘要: 1 internal enum CoordinationStatus { AllDone, Timeout, Cancel } 2 3 /// <summary> 4 /// 协调所有异步操作 5 /// </summary> 6 internal sealed class AsyncCoordin 阅读全文

posted @ 2018-05-12 11:15 庭前花满留晚照 阅读(307) 评论(0) 推荐(0)

用户模式构造-简单自旋锁(SpinLock)

摘要: 1 internal sealed class SimpleSpinLock 2 { 3 //0等于false(默认),1等于true 4 private int m_ResourceInUse = 0; 5 6 public void Enter() 7 { 8 while... 阅读全文

posted @ 2018-05-12 11:13 庭前花满留晚照 阅读(562) 评论(0) 推荐(0)

使用C#表达式树为两个对象的相同属性赋值

摘要: 1 //缓存表达式树 2 private static Dictionary objCache = new Dictionary(); 3 4 /// 5 /// 使用表达式树为两个对象的相同属性赋值 6 /// 7 /// 源对象 8 /// 目标对象 9 ... 阅读全文

posted @ 2018-05-12 11:08 庭前花满留晚照 阅读(1701) 评论(0) 推荐(0)

C#实现下载Demo

摘要: 1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Web; 5 using System.Web.Security; 6 using System.Web.UI; 7 using System.Web.UI.WebControls; 8 using S... 阅读全文

posted @ 2018-05-12 11:05 庭前花满留晚照 阅读(1283) 评论(0) 推荐(0)

使用Pechkin与CPechkin生成PDF

摘要: 1. Pechkin 从NuGet程序管理器中获得Pechkin,代码示例如下: GlobalConfig config = new GlobalConfig(); SimplePechkin pechkin = new SimplePechkin(config); ObjectConfig obj 阅读全文

posted @ 2018-05-12 11:04 庭前花满留晚照 阅读(872) 评论(0) 推荐(0)

设为主页加入收藏

摘要: 1 //加入收藏 2 function addFavorite() { 3 if (document.all) { 4 try { 5 window.external.addFavorite(window.location.href, document.title); 6 ... 阅读全文

posted @ 2018-05-12 10:57 庭前花满留晚照 阅读(625) 评论(0) 推荐(0)

MSSQL日期分组排序

摘要: 等于今天日期的排上面,大于今天的排中间,小于今天的排下面,带分页。 阅读全文

posted @ 2018-05-12 10:57 庭前花满留晚照 阅读(666) 评论(0) 推荐(0)

SQL函数取汉字拼音首字母

摘要: 1 CREATE function f_GetFirstPy(@str varchar(50)='') 2 returns char(1) 3 as 4 begin 5 declare @n int, @c char(1), @chn nchar(1) 6 select @n=63, @chn=substring(@str,1,1) 7 if @ch... 阅读全文

posted @ 2018-05-12 10:56 庭前花满留晚照 阅读(1151) 评论(0) 推荐(0)

MSSQL数据库备份还原常用SQL语句及注意

摘要: 1 1.备份数据库 2 backup database db_name 3 to disk='d:\db_name.bak' 4 with format 5 --通过使用with format可以做到覆盖任何现有的备份和创建一个新的媒体集。 6 --可以避免一些由于备份设置产生的错误. 7 --帮助文档上的解释: 8 --format指定应将媒体头写入用于此备份操作的所有卷。 ... 阅读全文

posted @ 2018-05-12 10:55 庭前花满留晚照 阅读(2668) 评论(0) 推荐(0)

Ubuntu64位13.04版本下装MySQL过程及遇到的问题

摘要: 第一步:安装: 在ubuntu终端输入命令: sudo apt-get install mysql-server 执行完成后。再输入如下命令: sudo apt-get install mysql-client注意1: 在执行第一条或第二条指令时。可能会报这样的错: Sub-process /usr 阅读全文

posted @ 2018-05-12 10:50 庭前花满留晚照 阅读(180) 评论(0) 推荐(0)

导航