摘要:
上篇介绍了多级缓存,本章详细介绍下内存缓存该如何设计。阅读目录:分析设计O(1)LRU实现过期删除策略总结分析设计假设有个项目有比较高的并发量,要用到多级缓存,如下:在实际设计一个内存缓存前,需要考虑的问题:1:内存与Redis的数据置换,尽可能在内存中提高数据命中率,减少下一级的压力。2:内存... 阅读全文
摘要:
感谢园子里的同学对上一篇的支持,很高兴楼主的一些经验及想法能够对大家有一些帮助。上次主要讨论缓存读写这块各种代码实现,本篇就上次的问题继续来,看看那些年折腾过的各种缓存做法。阅读目录:缓存预热多级缓存线程缓存内存缓存文件缓存分布式缓存DB缓存多层缓存总结缓存预热上次有同学问过,在第一次加载时缓存都为... 阅读全文
摘要:
介绍发现纯写技术蛮无趣枯燥的,也不连贯,就突发奇想,在博客中加些生活的乐趣。主题呢就是讲一个程序员小菜鸟的学习成长,技术博客都融入到其中。背景如下:地点:平行世界中魔都一家公司,喵喵小菜鸟一枚,大四实习妹纸。蘑菇一神秘男子,人物纯属虚构。正文喵喵:蘑菇,三层架构是什么东东?蘑菇:简单来说,为了降低U... 阅读全文
摘要:
阅读目录:基础自旋锁示例SpinLock继续SpinLock总结基础内核锁:基于内核对象构造的锁机制,就是通常说的内核构造模式。用户模式构造和内核模式构造 优点:cpu利用最大化。它发现资源被锁住,请求就排队等候。线程切换到别处干活,直到接受到可用信号,线程再切回来继续处理请求。 缺... 阅读全文
摘要:
介绍在实际项目使用中quartz.net中,都希望有一个管理界面可以动态添加job,而避免每次都要上线发布。也看到有园子的同学问过。这里就介绍下实现动态添加job的几种方式, 也是二次开发的核心模块。阅读目录:传统方式框架反射方式进程方式URL方式框架配置方式传统方式继承IJob,实现业务逻辑,添加... 阅读全文
摘要:
介绍在实际使用quartz.net中,持久化能保证实例重启后job不丢失、 集群能均衡服务器压力和解决单点问题。quartz.net在这两方面配置都比较简单。持久化quartz.net的持久化,是把job、trigger一些信息存储到数据库里面,以解决内存存储重启丢失。下载sql脚本 htt... 阅读全文
摘要:
最近项目使用中要改造redis客户端,看了下文档,总结分享一下。阅读目录:协议规范基础通信状态命令set、get命令管道、事务总结协议规范redis允许客户端以TCP方式连接,默认6379端口。传输数据都以\r\n结尾。请求格式*\r\n$\r\n\r\n例:*1\r\n$4\r\nINFO\r\... 阅读全文
摘要:
本章主要介绍下基于内核模式构造的线程同步方式,事件,信号量。阅读目录:理论WaitHandleAutoResetEventManualResetEvent总结理论Windows的线程同步方式可分为2种,用户模式构造和内核模式构造。内核模式构造:是由Windows系统本身使用,内核对象进行调度协助... 阅读全文
摘要:
本篇主要介绍下楼主平常项目中,缓存使用经验和遇到过的问题。阅读目录:基本写法缓存雪崩全局锁,实例锁字符串锁缓存穿透再谈缓存雪崩总结基本写法为了方便演示,这里使用Runtime.Cache做缓存容器,并定义个简单操作类。如下: public class CacheHelper { ... 阅读全文
摘要:
上章主要讲排他锁的直接使用方式。但实际当中全部都用锁又太浪费了,或者排他锁粒度太大了,本篇主要介绍下升级锁和原子操作。阅读目录volatileInterlockedReaderWriterLockSlimvolatile简单来说volatile关键字是告诉c#编译器和JIT编译器,不对volat... 阅读全文
摘要:
平常在多线程开发中,总避免不了线程同步。本篇对net多线程中的锁系统做个简单描述。阅读目录:lock、Monitor作用域范围字符串锁Monitor的用法MutexSemaphore总结lock、MonitorLock是Monitor语法糖简化写法,Lock在IL会生成Monitor。 ... 阅读全文
摘要:
介绍在大型系统开发调试中,跨系统之间联调开始变得不好使了。莫名其妙一个错误爆出来了,日志虽然有记录,但到底是哪里出问题了呢? 是Ios端参数传的不对?还是A系统或B系统提供的接口导致?相信有不少人遇到这种情况,大多数问题往往不大,但排查起来比较费劲。下面介绍下怎么通过上下文跟踪的方法,最快定位到其问... 阅读全文
摘要:
介绍这篇距上一篇已经拖3个月之久了,批评自己下。通过上篇介绍了解如何利用mono反射代码,可以拿出编译好的静态数据、例如方法参数信息之类的。但实际情况是往往需要的是运行时的数据,就是用户输入等外界的动态数据。既然是动态的,那就是未知的,怎么通过提前注入的代码获取呢!阅读目录:普通写法注入定义Weav... 阅读全文
摘要:
介绍如果说函数是程序中的基本模块,代码段,那高阶函数就是函数的高阶(级)版本,其基本定义如下:函数自身接受一个或多个函数作为输入。函数自身能输出一个函数,即函数生产函数。满足其中一个条件就可以称为高阶函数。高阶函数在函数式编程中大量应用,c#在3.0推出Lambda表达式后,也开始逐渐使用了。阅读目... 阅读全文
摘要:
介绍前面介绍Quartz.Net的基本用法,但在实际应用中,往往有更多的特性需求,比如记录job执行的执行历史,发邮件等。阅读目录Quartz.Net插件TriggerListener,JobListenerCron表达式Quartz.Net线程池总结Quartz.Net插件 Quartz.net... 阅读全文