会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
奔跑的路上
广泛汲取,用心打磨,精益求精。
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
18
19
20
21
22
23
24
25
26
下一页
2018年5月5日
AOP面向切面变成和C#实现多种实现
摘要: 1
阅读全文
posted @ 2018-05-05 18:49 Yaopengfei
阅读(502)
评论(0)
推荐(0)
2018年4月19日
各种通讯连接方式
摘要: 1. http https (ajax) 2. 总结一下同一个项目下 前后交互的集中提交方式 (.Net特有的 EasyUI封装的) 3. 跨域请求的几种形式 3. HttpClient 4. WebService 5. WebAPI(重点) 6. socket 7. websocket (重点)+
阅读全文
posted @ 2018-04-19 17:36 Yaopengfei
阅读(2811)
评论(3)
推荐(0)
2018年4月3日
程序员内功--设计模式篇
摘要: 一. 什么是设计模式 纠结了好久,今天终于下定决心开始写设计模式系列,因为这个系列章节确实不好写,在这之前,也看了好多关于设计模式的博客、视频、书籍等,最后结合自己的理解,亲自动手实操代码,完成该章节。 我也和我同行的朋友交流了一下关于设计模式,对设计模式的理解,可以分为这么几个层次: ①:根本不知
阅读全文
posted @ 2018-04-03 16:10 Yaopengfei
阅读(1487)
评论(6)
推荐(2)
2018年3月20日
第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借助TopSelf、服务类】)
摘要: 一. IIS部署 比如在MVC框架中集成了Quartz.Net定时调度,此时该调度系统会随着MVC框架被挂在IIS下,IIS会进程回收,所以大部分开发都会遇到Quartz挂在IIS下一段时间不好用。 补充:IIS可以设置定时自动回收,默认回收是1740分钟,也就是29小时。IIS自动回收相当于服务器
阅读全文
posted @ 2018-03-20 22:20 Yaopengfei
阅读(6044)
评论(7)
推荐(6)
2018年3月18日
第十一节: 封装通用的定时调度框架,实现新增、删除、开启、暂停计划任务:
摘要: 。。。
阅读全文
posted @ 2018-03-18 09:02 Yaopengfei
阅读(2531)
评论(11)
推荐(2)
2018年3月16日
第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :
摘要: 背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz",这种模式有以下弊端: ① 想在A服务器上控制B服务器上已经发布了的job和trigger不方便; ② 很难实现Web
阅读全文
posted @ 2018-03-16 08:31 Yaopengfei
阅读(4735)
评论(13)
推荐(6)
2018年3月15日
第九节: 利用RemoteScheduler实现Sheduler的远程控制
摘要: 一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上控制这个Scheduler。 2. 猜想: A服务器上的Scheduler需要有地址、需要有端口、需要有名称(实际上也是如此)。 3. 需求: 一个控制台程序作为服务端运行A服务器
阅读全文
posted @ 2018-03-15 14:54 Yaopengfei
阅读(2952)
评论(7)
推荐(7)
2018年3月13日
第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案
摘要: 一. 简介 揭秘: SimpleThreadPool是Quartz.Net中自带的线程池,默认个数为10个,代表一个Scheduler同一时刻并发的最多只能执行10个job,超过10个的job需要排队等待。 二. 四种配置方案 1. NameValueCollection的方式 需要利用StdSch
阅读全文
posted @ 2018-03-13 20:54 Yaopengfei
阅读(4698)
评论(5)
推荐(5)
2018年3月12日
第七节:Trigger(SimpleTrigger、CronTrigger)哑火(MisFire)策略 :
摘要: 一. 简介 1. 什么是哑火 由于某些原因导致触发器(trigger)在该触发的时候没有得到触发,后续对应的解决策略即为哑火策略。(个人理解) 2. 哑火触发的条件 ①:所有的工作线程都在忙碌,导致某些trigger得不到触发.(如:simplethreadpool 默认是10个工作线程,但我有15
阅读全文
posted @ 2018-03-12 15:23 Yaopengfei
阅读(3588)
评论(2)
推荐(8)
2018年3月11日
第六节: 六类Calander处理六种不同的时间场景
摘要: 背景介绍及其使用 该章节主要补充介绍,在前一章四类触发器的基础上配合六大Canlander来动态删减某些时间,来满足更多的应用场景。 1. DailyCalendar:动态排除某天的某些字段. (需求:每天8-23点执行,每隔1s执行一次,但是21-22点这个区间不执行) 2. WeeklyCale
阅读全文
posted @ 2018-03-11 20:43 Yaopengfei
阅读(2456)
评论(2)
推荐(5)
2018年3月10日
第五节: Quartz.Net五大构件之Trigger的四大触发类
摘要: 一. WithSimpleSchedule(ISimpleTrigger) 1. 用途:时、分、秒上的轮询(和timer类似),实际开发中,该场景占绝大多数. 2. 轮询的种类:永远轮询和限定次数轮询. 3. 参数中的几个函数: A.执行间隔: ①.WithInterval(TimeSpan tim
阅读全文
posted @ 2018-03-10 23:39 Yaopengfei
阅读(4198)
评论(5)
推荐(5)
2018年3月9日
第四节: Quartz.Net五大构件之Trigger通用用法(常用方法、优先级、与job关联等)
摘要: 一. 简介 1. 几个类型: ①:TriggerBuilder:用来创建ITrigger实例 ②:ITrigger:触发器实例 2.常用的几个方法 ①.StartNow:Trigger马上触发. ②.StartAt和EndAt:设置Trigger触发的开始时间和结束时间 (省略设置开始时间的话,默认
阅读全文
posted @ 2018-03-09 13:08 Yaopengfei
阅读(4112)
评论(0)
推荐(2)
2018年3月8日
第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联等)
摘要: 一. 五大构件 引言: Quartz.Net的五大构件 1. 调度器:Scheduler 2. 作业任务:Job 3. 触发器: Trigger 4. 线程池: SimpleThreadPool 5. 作业持久化:JobStore 二. Scheduler详解 1. 创建Scheduler的两种方式
阅读全文
posted @ 2018-03-08 08:47 Yaopengfei
阅读(6287)
评论(4)
推荐(3)
2018年3月7日
第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)
摘要: 一. 时间的类型 1. 背景 这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式介绍Quartz.Net之前,还是很有必要补充一下的,该章节就是解决这类问题的。 2. 时间类型 时
阅读全文
posted @ 2018-03-07 09:51 Yaopengfei
阅读(5230)
评论(2)
推荐(1)
2018年3月6日
第一节: Timer的定时任务的复习、Quartz.Net的入门使用、Aop思想的体现
摘要: 一. 前奏-Timer类实现定时任务 在没有引入第三方开源的定时调度框架之前,我们处理一些简单的定时任务同时都是使用Timer类, DotNet中的Timer类有三个,分别位于不同的命名空间下,分别是: ①.位于System.Windows.Forms里,即定时器控件,不过多介绍了 ②.位于Syst
阅读全文
posted @ 2018-03-06 08:14 Yaopengfei
阅读(4807)
评论(6)
推荐(2)
2018年2月6日
第十九节: 结合【表达式目录树】来封装EF的BaseDal层的方法
摘要: 一. 简介 该章节,可以说是一个简单轻松的章节,只要你对Expression表达式树、EF的基本使用、泛型有所了解,那么本章节实质上就是一个非常简单的封装章节,便于我们快捷开发。 PS:在该章节对于EF的上下文怎么处理,怎么来的,不做介绍,在后续的框架篇将详细介绍,下面的EF上下文,将直接使用db代
阅读全文
posted @ 2018-02-06 15:37 Yaopengfei
阅读(1648)
评论(4)
推荐(0)
2018年2月1日
第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等)
摘要: 一. 理解并发机制 1. 什么是并发,并发与多线程有什么关系? ①. 先从广义上来说,或者从实际场景上来说. 高并发通常是海量用户同时访问(比如:12306买票、淘宝的双十一抢购),如果把一个用户看做一个线程的话那么并发可以理解成多线程同时访问,高并发即海量线程同时访问。 (ps:我们在这里模拟高并
阅读全文
posted @ 2018-02-01 15:43 Yaopengfei
阅读(3898)
评论(4)
推荐(3)
框架搭建篇
摘要: 一. 背景 二. 技术选型与比较 三. 由浅入深系列章节 第一节:框架前期准备篇之Log4net详解 第二节:框架前期准备篇之AutoFac常用用法总结 第三节:框架前期准备篇之利用Newtonsoft.Json改造MVC默认的JsonRestult 第四节:框架前期准备篇之进程外Session的两
阅读全文
posted @ 2018-02-01 13:43 Yaopengfei
阅读(934)
评论(3)
推荐(1)
2018年1月29日
第二十一节:ADO层次上的海量数据处理方案(SqlBulkCopy类插入和更新)
摘要: 一. 简介 1. 背景: 虽然前面EF的扩展插件Z.EntityFramework.Extensions,性能很快,而且也很方便,但是该插件要收费,使用免费版本的话,需要定期更新,如果不更新,将失效,非常麻烦,这个时候SqlBulkCopy类既免费又高效,显得非常合适了。 2. 使用步骤: ①. 引
阅读全文
posted @ 2018-01-29 17:23 Yaopengfei
阅读(2609)
评论(8)
推荐(1)
第十四节: 介绍四大并发集合类并结合单例模式下的队列来说明线程安全和非安全的场景及补充性能调优问题。
摘要: 一. 四大并发集合类 背景:我们目前使用的所有集合都是线程不安全的 。 A. ConcurrentBag:就是利用线程槽来分摊Bag中的所有数据,链表的头插法,0代表移除最后一个插入的值. (等价于同步中的List) B. ConcurrentStack:线程安全的Stack是使用Interlock
阅读全文
posted @ 2018-01-29 17:02 Yaopengfei
阅读(1919)
评论(3)
推荐(3)
2018年1月19日
第十三节:实际开发中使用最多的监视锁Monitor、lock语法糖的扩展、混合锁的使用(ManualResetEvent、SemaphoreSlim、ReaderWriterLockSlim)
摘要: 一. 监视锁(Monitor和lock) 1. Monitor类,限定线程个数的一把锁,两个核心方法: Enter:锁住某个资源。 Exit:退出某一个资源。 测试案例:开启5个线程同时对一个变量进行自增操作,结果变量有序的输出,说明该锁同时只允许一个线程访问。 但是写法很麻烦,每次都要try-ca
阅读全文
posted @ 2018-01-19 08:21 Yaopengfei
阅读(1604)
评论(1)
推荐(0)
2018年1月17日
第十二节:深究内核模式锁的使用场景(自动事件锁、手动事件锁、信号量、互斥锁、读写锁、动态锁)
摘要: 一. 整体介绍 温馨提示:内核模式锁,在不到万不得已的情况下,不要使用它,因为代价太大了,有很多种替代方案。 内核模式锁包括: ①:事件锁 ②:信号量 ③:互斥锁 ④:读写锁 ⑤:动态锁 二. 事件锁 事件锁包括: A. 自动事件锁(AutoResetEvent) 使用场景:可以用此锁实现多线程环境
阅读全文
posted @ 2018-01-17 15:14 Yaopengfei
阅读(1468)
评论(4)
推荐(0)
2018年1月15日
第十一节:深究用户模式锁的使用场景(异变结构、互锁、旋转锁)
摘要: 一. 锁机制的背景介绍 本章节,将结合多线程来介绍锁机制, 那么问题来了,什么是锁呢? 为什么需要锁? 为什么要结合多线程来介绍锁呢?锁的使用场景又是什么呢? DotNet中又有哪些锁呢? 在接下来的几个章节中,将陆续解答这些问题。 PS: 多个线程对一个共享资源进行使用的时候,会出问题, 比如实际
阅读全文
posted @ 2018-01-15 22:11 Yaopengfei
阅读(1266)
评论(4)
推荐(0)
2018年1月14日
第十节:利用async和await简化异步编程模式的几种写法
摘要: 一. async和await简介 PS:简介 1. async和await这两个关键字是为了简化异步编程模型而诞生的,使的异步编程跟简洁,它本身并不创建新线程,但在该方法内部开启多线程,则另算。 2. 这两个关键字适用于处理一些文件IO操作。 3. 好处:代码简介,把异步的代码写成了同步的形式,提高
阅读全文
posted @ 2018-01-14 18:51 Yaopengfei
阅读(2155)
评论(4)
推荐(0)
2018年1月13日
第九节:深究并行编程Parallel类中的三大方法 (For、ForEach、Invoke)和几大编程模型(SPM、APM、EAP、TAP)
摘要: 一. 并行编程 1. 区分串行编程和串行编程 ①. 串行编程:所谓的串行编程就是单线程的作用下,按顺序执行。(典型代表for循环 下面例子从1-100按顺序执行) ②. 并行编程:充分利用多核cpu的优势,同时开启多个线程并行执行。(典型代表Parallel.For循环 下面例子从1-100无序执行
阅读全文
posted @ 2018-01-13 16:46 Yaopengfei
阅读(1731)
评论(3)
推荐(0)
2018年1月10日
第八节:Task的各类Task<TResult>返回值以及通用线程的异常处理方案。
摘要: 一. Task的各种返回值-Task<TResult> PS: 在前面章节,我们介绍了Task类开启线程、线程等待、线程延续的方式,但我们并没有关注这些方式的返回值,其实他们都是有返回值的Task<TResult>,然后可以通过Task的实例调用Result属性来获取这个返回值。 下面我们分三类来介
阅读全文
posted @ 2018-01-10 08:01 Yaopengfei
阅读(3842)
评论(1)
推荐(0)
2018年1月7日
第七节:利用CancellationTokenSource实现任务取消和利用CancellationToken类检测取消异常。
摘要: 一. 传统的线程取消 所谓的线程取消,就是线程正在执行的过程中取消线程任务。 传统的线程取消,是通过一个变量来控制,但是这种方式,在release模式下,被优化从cpu高速缓存中读取,而不是从内存中读取,会造成主线程无法执行这一个bug。 PS: 通过上面的代码看可以看出来,传统模式的线程取消,在排
阅读全文
posted @ 2018-01-07 19:03 Yaopengfei
阅读(12056)
评论(4)
推荐(6)
2018年1月6日
第六节:深入研究Task实例方法ContinueWith的参数TaskContinuationOptions
摘要: 一. 整体说明 揭秘: 该章节的性质和上一个章节类似,也是一个扩展的章节,主要来研究Task类下的实例方法ContinueWith中的参数TaskContinuationOptions。 通过F12查看TaskContinuationOptions的源码,知道主要有这么几个参数: ①. LazyCa
阅读全文
posted @ 2018-01-06 08:13 Yaopengfei
阅读(3577)
评论(1)
推荐(0)
2018年1月5日
第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。
摘要: 一. 整体说明 揭秘: 通过F12查看Task类的源码(详见下面的截图),发现Task类的构造函数有有一个参数为:TaskCreationOptions类型,本章节可以算作是一个扩展章节,主要就来研究TaskCreationOptions类的作用。 该类主要用来处理父子线程之间的关系,重要的几个参数
阅读全文
posted @ 2018-01-05 16:26 Yaopengfei
阅读(3050)
评论(4)
推荐(2)
2018年1月3日
第四节:Task的启动的四种方式以及Task、TaskFactory的线程等待和线程延续的解决方案
摘要: 一. 背景 揭秘: 在前面的章节介绍过,Task出现之前,微软的多线程处理方式有:Thread→ThreadPool→委托的异步调用,虽然也可以基本业务需要的多线程场景,但它们在多个线程的等待处理方面、资源占用方面、线程延续和阻塞方面、线程的取消方面等都显得比较笨拙,在面对复杂的业务场景下,显得有点
阅读全文
posted @ 2018-01-03 14:13 Yaopengfei
阅读(11886)
评论(3)
推荐(10)
上一页
1
···
18
19
20
21
22
23
24
25
26
下一页
公告